-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathColourBrightness.h
104 lines (81 loc) · 4.37 KB
/
ColourBrightness.h
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