[c967f8]: ColourBrightness.h Maximize Restore History

Download this file

ColourBrightness.h    105 lines (81 with data), 4.5 kB

  1
  2
  3
  4
  5
  6
  7
  8
  9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 78
 79
 80
 81
 82
 83
 84
 85
 86
 87
 88
 89
 90
 91
 92
 93
 94
 95
 96
 97
 98
 99
100
101
102
/*
* ColourBrightness
*
* Based on the program PTStitcher by Helmut Dersch.
*
* It is intended to duplicate the functionality of original program
*
* Dec 2005
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public
* License as published by the Free Software Foundation; either
* version 2 of the License, or (at your option) any later version.
*
* This software is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
* General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this software; see the file COPYING. If not, a copy
* can be downloaded from http://www.gnu.org/licenses/gpl.html, or
* obtained by writing to the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
*
*
* Author: Daniel M German dmgerman at uvic doooot ca
*
*/
#ifndef __COLOUR_BRIGHTNESS__
typedef double (*calla_function)(double [], double, int);
typedef double *magnolia_array;
typedef struct {
int components; // number of components
magnolia_array fieldx04[6]; // pointer to arrays double[fieldx00]
calla_function function; // a function //offset 0x1c
} magnolia_struct;
typedef int *(histogram_type[6]);
typedef struct {
int overlappingPixels; //initialy zero
int bytesPerSample; // bytesPerSample
int numberDifferentValues; //used as a size to allocate pointers below
int baseImageNumber; // image number
int otherImageNumber;
histogram_type ptrBaseHistograms; // array of pointers 6
// it seems to get the "raw" histogram
histogram_type ptrOtherHistograms; // array of 6 pointers
// this has some processing done
} histograms_struct;
typedef struct {
fullPath * fullPathImages; //<- the struct starts here (size 20)
int numberImages; // int counterImages
int indexReferenceImage; // contains nfix
histograms_struct *ptrHistograms; // seems to be a pointer to an array of pointers, returned by Unknown34
magnolia_struct *magnolia; // This looks like a pointer to array of counterImages * magnolia_struct,
// returned by Initialize_Magnolia
} calla_struct;
PANO13_IMPEX histograms_struct*ReadHistograms (fullPath *fullPathImages, int counterImages);
PANO13_IMPEX int ComputeColourBrightnessCorrection(calla_struct *calla);
PANO13_IMPEX int CorrectFileColourBrightness(fullPath *inPath, fullPath *outPath, magnolia_struct *magnolia, int parm3);
PANO13_IMPEX int FindNextCandidate(int candidates[], calla_struct *calla);
PANO13_IMPEX magnolia_struct *InitializeMagnolia(int numberImages, int size, calla_function parm2);
PANO13_IMPEX void ColourBrightness( fullPath *fullPathImages, fullPath *outFullPathImages, int counterImages, int indexReferenceImage, int parm3,int createCurvesType);
PANO13_IMPEX void CorrectImageColourBrigthness(Image *image, magnolia_struct *magnolia, int parm3);
PANO13_IMPEX void FreeHistograms(histograms_struct *ptrHistograms, int count);
PANO13_IMPEX void RemapHistogram(int *histogram, double *array, magnolia_struct *magnolia, int channel);
PANO13_IMPEX void ComputeAdjustmentCurve(double *sourceHistogram, double *targetHistogram, double *curve) ;
unsigned char Unknown47(unsigned char parm0, unsigned char parm1, unsigned char parm2);
unsigned char Unknown48(unsigned char parm0, unsigned char parm1, unsigned char parm2);
unsigned char Unknown49(unsigned char parm0, unsigned char parm1, unsigned char parm2);
PANO13_IMPEX double MapFunction(double p[], double x, int n);
PANO13_IMPEX int RemapPoint(int value, double mapTable[]) ;
PANO13_IMPEX unsigned char panoColourComputeHue(unsigned char red, unsigned char green, unsigned char blue);
PANO13_IMPEX unsigned char panoColourComputeIntensity(unsigned char red, unsigned char green, unsigned char blue);
PANO13_IMPEX unsigned char panoColourComputeSaturation (unsigned char red, unsigned char green, unsigned char blue);
/* The parameter createCurvesType indicates the type of output format: arbitrary map (.amp) or smooth map (.acv).
if zero no map is output
*/
#define CB_OUTPUT_CURVE_ARBITRARY 1
#define CB_OUTPUT_CURVE_SMOOTH 2
#endif