CVB++ 15.0
c_spectral.h
1#pragma once
2
3#if defined __GNUC__ && !defined CVB_SHOW_WARNINGS
4# pragma GCC system_header
5#endif // __GNUC__
6
7#include <cstddef>
8#include <cstdint>
9
10#include "../namespace.hpp"
11
12#include "c_core.h"
13
14namespace Cvb
15{
16
17CVB_BEGIN_INLINE_NS
18
19namespace CExports
20{
21
22typedef void* CVSMETADATA;
23typedef void* CVSINTERPOLATOR;
24
25
26enum CVSFieldType
27{
28 CVSFT_Invalid = -1,
29 CVSFT_String = 0,
30 CVSFT_Float = 1,
31 CVSFT_Integer = 2,
32 CVSFT_StringArray = 3,
33 CVSFT_FloatArray = 4,
34 CVSFT_IntegerArray = 5
35};
36enum CVSField
37{
38 CVSFI_Interleave = 0,
39 CVSFI_Samples = 1,
40 CVSFI_Lines = 2,
41 CVSFI_Bands = 3,
42 CVSFI_DataType = 4,
43 CVSFI_ByteOrder = 5,
44 CVSFI_FileType = 6,
45 CVSFI_HeaderOffset = 7,
46 CVSFI_Wavelength = 8,
47 CVSFI_WavelengthUnit = 9,
48 CVSFI_Fwhm = 10
49};
50const int CVSFI_NUMBER_OF_AVAILABLE_FIELDS = 11;
51
52enum CVSCubeEncoding
53{
54 CVSVP_BandInterleavedByLine = 0,
55 CVSVP_BandSequential = 1,
56 CVSVP_BandInterleavedByPixel = 2
57};
58
59enum CVSCubeType
60{
61 CVSCT_ContinuousCube = 0,
62 CVSCT_LinearNonOwningCube = 1,
63 CVSCT_MappedCube = 2,
64 CVSCT_StackedCube = 3
65};
66
67enum CVSNormalizationMethod
68{
69 CVSNM_AverageReferences1 = 0
70};
71
72enum CVSInterpolationMethod
73{
74 CVSIM_linear = 0
75};
76
77enum CVSStdIlluminant
78{
79 CVSSI_UNDEFINED = 0,
80 CVSSI_E = 1,
81 CVSSI_A = 2,
82 CVSSI_D50 = 3,
83 CVSSI_D65 = 4
84};
85
86enum CVSStdObserver
87{
88 CVSSO_UNDEFINED = 0,
89 CVSSO_CIE2006_2deg = 1,
90 CVSSO_CIE2006_10deg = 2,
91 CVSSO_CIE1964_10deg = 3,
92 CVSSO_CIE1931_2deg = 4
93};
94
95struct CVSRange
96{
97 cvbdim_t Min;
98 cvbdim_t Max;
99};
100
101struct CVSCuboid
102{
103 CVSRange Samples;
104 CVSRange Lines;
105 CVSRange Bands;
106};
107
108CVB_DEF_CAPI(cvbres_t, CVSCreateMetaData, (CVSMETADATA& MetaData))
109CVB_DEF_CAPI(cvbres_t, CVSCubeSetMetaData, (CVCOMPOSITE ImageCube, CVSMETADATA MetaData))
110CVB_DEF_CAPI(cvbres_t, CVSCubeGetMetaData, (CVCOMPOSITE ImageCube, CVSMETADATA& MetaData))
111
112CVB_DEF_CAPI(cvbres_t, CVSMetaDataGetNumberOfFields, (CVSMETADATA MetaData, size_t& NumberOfFields))
113
114CVB_DEF_CAPI(cvbres_t, CVSMetaDataGetFieldnameAsString, (CVSMETADATA MetaData, CVSField FieldEnum, char* FieldName, size_t& FieldNameSize))
115CVB_DEF_CAPI(cvbres_t, CVSMetaDataGetFieldnameAsStringW, (CVSMETADATA MetaData, CVSField FieldEnum, wchar_t* FieldName, size_t& FieldNameSize))
116
117inline cvbres_t _ppCVSMetaDataGetFieldnameAsStringTyped(CVSMETADATA MetaData, CVSField FieldEnum, char* FieldName, size_t& FieldNameSize)
118{
119 return _ppCVSMetaDataGetFieldnameAsString(MetaData, FieldEnum, FieldName, FieldNameSize);
120}
121
122inline cvbres_t _ppCVSMetaDataGetFieldnameAsStringTyped(CVSMETADATA MetaData, CVSField FieldEnum, wchar_t* FieldName, size_t& FieldNameSize)
123{
124 return _ppCVSMetaDataGetFieldnameAsStringW(MetaData, FieldEnum, FieldName, FieldNameSize);
125}
126
127CVB_DEF_CAPI(cvbres_t, CVSMetaDataIsFieldDefined, (CVSMETADATA MetaData, CVSField FieldEnum, cvbbool_t& IsDefined))
128CVB_DEF_CAPI(cvbres_t, CVSMetaDataGetFieldType, (CVSMETADATA MetaData, CVSField FieldEnum, CVSFieldType& Type))
129
130CVB_DEF_CAPI(cvbres_t, CVSMetaDataSetAsString, (CVSMETADATA MetaData, CVSField FieldEnum, const char* Value))
131CVB_DEF_CAPI(cvbres_t, CVSMetaDataSetAsStringW, (CVSMETADATA MetaData, CVSField FieldEnum, const wchar_t* Value))
132
133inline cvbres_t _ppCVSMetaDataSetAsStringTyped(CVSMETADATA MetaData, CVSField FieldEnum, const char* Value)
134{
135 return _ppCVSMetaDataSetAsString(MetaData, FieldEnum, Value);
136}
137
138inline cvbres_t _ppCVSMetaDataSetAsStringTyped(CVSMETADATA MetaData, CVSField FieldEnum, const wchar_t* Value)
139{
140 return _ppCVSMetaDataSetAsStringW(MetaData, FieldEnum, Value);
141}
142
143CVB_DEF_CAPI(cvbres_t, CVSMetaDataSetAsInteger, (CVSMETADATA MetaData, CVSField FieldEnum, cvbint64_t Value))
144CVB_DEF_CAPI(cvbres_t, CVSMetaDataSetAsFloat, (CVSMETADATA MetaData, CVSField FieldEnum, double Value))
145
146CVB_DEF_CAPI(cvbres_t, CVSMetaDataAddToStringArray, (CVSMETADATA MetaData, CVSField FieldEnum, const char* String))
147CVB_DEF_CAPI(cvbres_t, CVSMetaDataAddToStringArrayW, (CVSMETADATA MetaData, CVSField FieldEnum, const wchar_t* String))
148
149inline cvbres_t _ppCVSMetaDataAddToStringArrayTyped(CVSMETADATA MetaData, CVSField FieldEnum, const char* String)
150{
151 return _ppCVSMetaDataAddToStringArray(MetaData, FieldEnum, String);
152}
153
154inline cvbres_t _ppCVSMetaDataAddToStringArrayTyped(CVSMETADATA MetaData, CVSField FieldEnum, const wchar_t* String)
155{
156 return _ppCVSMetaDataAddToStringArrayW(MetaData, FieldEnum, String);
157}
158
159
160CVB_DEF_CAPI(cvbres_t, CVSMetaDataAddToIntegerArray, (CVSMETADATA MetaData, CVSField FieldEnum, cvbint64_t Element))
161CVB_DEF_CAPI(cvbres_t, CVSMetaDataAddToFloatArray, (CVSMETADATA MetaData, CVSField FieldEnum, double Element))
162
163CVB_DEF_CAPI(cvbres_t, CVSMetaDataClearField, (CVSMETADATA MetaData, CVSField FieldEnum))
164
165CVB_DEF_CAPI(cvbres_t, CVSMetaDataGetAsString, (CVSMETADATA MetaData, CVSField FieldEnum, char* Value, size_t& ValueSize))
166CVB_DEF_CAPI(cvbres_t, CVSMetaDataGetAsStringW, (CVSMETADATA MetaData, CVSField FieldEnum, wchar_t* Value, size_t& ValueSize))
167
168inline cvbres_t _ppCVSMetaDataGetAsStringTyped(CVSMETADATA MetaData, CVSField FieldEnum, char* Value, size_t& ValueSize)
169{
170 return _ppCVSMetaDataGetAsString(MetaData, FieldEnum, Value, ValueSize);
171}
172
173inline cvbres_t _ppCVSMetaDataGetAsStringTyped(CVSMETADATA MetaData, CVSField FieldEnum, wchar_t* Value, size_t& ValueSize)
174{
175 return _ppCVSMetaDataGetAsStringW(MetaData, FieldEnum, Value, ValueSize);
176}
177
178CVB_DEF_CAPI(cvbres_t, CVSMetaDataGetAsInteger, (CVSMETADATA MetaData, CVSField FieldEnum, cvbint64_t& Value))
179CVB_DEF_CAPI(cvbres_t, CVSMetaDataGetAsFloat, (CVSMETADATA MetaData, CVSField FieldEnum, double& Value))
180
181CVB_DEF_CAPI(cvbres_t, CVSMetaDataGetAsStringArray, (CVSMETADATA MetaData, CVSField FieldEnum, cvbval_t ElementIndex, char* String, size_t& StringLength))
182CVB_DEF_CAPI(cvbres_t, CVSMetaDataGetAsStringArrayW, (CVSMETADATA MetaData, CVSField FieldEnum, cvbval_t ElementIndex, wchar_t* String, size_t& StringLength))
183
184inline cvbres_t _ppCVSMetaDataGetAsStringArrayTyped(CVSMETADATA MetaData, CVSField FieldEnum, cvbval_t ElementIndex, char* String, size_t& StringLength)
185{
186 return _ppCVSMetaDataGetAsStringArray(MetaData, FieldEnum, ElementIndex, String, StringLength);
187}
188
189inline cvbres_t _ppCVSMetaDataGetAsStringArrayTyped(CVSMETADATA MetaData, CVSField FieldEnum, cvbval_t ElementIndex, wchar_t* String, size_t& StringLength)
190{
191 return _ppCVSMetaDataGetAsStringArrayW(MetaData, FieldEnum, ElementIndex, String, StringLength);
192}
193
194CVB_DEF_CAPI(cvbres_t, CVSMetaDataGetAsIntegerArray, (CVSMETADATA MetaData, CVSField FieldEnum, cvbval_t ElementIndex, cvbint64_t& Element))
195CVB_DEF_CAPI(cvbres_t, CVSMetaDataGetAsFloatArray, (CVSMETADATA MetaData, CVSField FieldEnum, cvbval_t ElementIndex, double& Element))
196CVB_DEF_CAPI(cvbres_t, CVSMetaDataGetArraySize, (CVSMETADATA MetaData, CVSField FieldEnum, size_t& NumberOfElements))
197
198CVB_DEF_CAPI(cvbres_t, CVSCreateContinuousCube, (cvbdim_t NumberOfSamples, cvbdim_t NumberOfLines, cvbdim_t NumberOfBands, cvbdatatype_t DataType, CVSCubeEncoding BufferLayout, CVCOMPOSITE &ImageCube))
199CVB_DEF_CAPI(cvbres_t, CVSCreateStackedCube, (IMG ImageArray[], size_t NumberOfImages, CVSCubeEncoding SourceInterleaveType, CVCOMPOSITE &ImageCube))
200CVB_DEF_CAPI(cvbres_t, CVSCreateDuplicatedContinuousCube, (CVCOMPOSITE ImageCubeIn, CVCOMPOSITE &ImageCubeOut))
201CVB_DEF_CAPI(cvbres_t, CVSCreateCubeFromPointer, (void* pCubeMemory, cvbdim_t NumbersOfDimensions[], cvbdatatype_t DataType, intptr_t IncrementsOfDimensions[], PFFINALRELEASE ReleaseCallback, void *pPrivate, CVCOMPOSITE &ImageCubeOut))
202
203CVB_DEF_CAPI(cvbres_t, CVSCubeGetSlice, (CVCOMPOSITE ImageCube, cvbdim_t PlaneIndex, cvbbool_t TargetMapped, IMG& ImageOut))
204CVB_DEF_CAPI(cvbres_t, CVSCubeGetBufferView, (CVCOMPOSITE ImageCube, IMG& BufferView))
205CVB_DEF_CAPI(cvbres_t, CVSCubeGetType, (CVCOMPOSITE ImageCube, CVSCubeType& CubeType))
206CVB_DEF_CAPI(cvbres_t, CVSCubeGetDatatype, (CVCOMPOSITE ImageCube, cvbdatatype_t& DataType))
207CVB_DEF_CAPI(cvbres_t, CVSCubeGetLinearAccess, (CVCOMPOSITE ImageCube, void * &pBaseAddress, intptr_t& SampleInc, intptr_t& LineInc, intptr_t& BandInc))
208
209CVB_DEF_CAPI(cvbres_t, CVSCreateConvertedCube, (CVCOMPOSITE ImageCubeIn, CVSCubeEncoding TargetCubeEncoding, CVCOMPOSITE& ImageCubeOut))
210CVB_DEF_CAPI(cvbres_t, CVSCreateCroppedCube, (CVCOMPOSITE ImageCube, const CVSCuboid &ClipBox, cvbbool_t TargetMapped, CVCOMPOSITE& ImageCubeOut))
211CVB_DEF_CAPI(cvbres_t, CVSCubeGetSpectrumAsInteger, (CVCOMPOSITE ImageCube, cvbdim_t SampleIndex, cvbdim_t LineIndex, cvbval_t SpectralPixelValues[], size_t& NumberOfBands))
212CVB_DEF_CAPI(cvbres_t, CVSCubeGetSpectrumAsDouble, (CVCOMPOSITE ImageCube, cvbdim_t SampleIndex, cvbdim_t LineIndex, double SpectralPixelValues[], size_t& NumberOfBands))
213
214CVB_DEF_CAPI(cvbres_t, CVSCubeSwapSamplesAndLines, (CVCOMPOSITE ImageCubeIn, CVCOMPOSITE& ImageCubeOut))
215
216CVB_DEF_CAPI(cvbres_t, CVSCubeNormalize, (CVCOMPOSITE ImageCubeIn, CVCOMPOSITE WhiteReference, CVCOMPOSITE BlackReference, CVSNormalizationMethod NormalizationMethod, CVCOMPOSITE& ImageCubeOut))
217
218CVB_DEF_CAPI(cvbres_t, CVSCubeMultiplication, (CVCOMPOSITE ImageCube1, CVCOMPOSITE ImageCube2, cvbbool_t ClipResults, CVCOMPOSITE& ImageCubeOut))
219CVB_DEF_CAPI(cvbres_t, CVSCubeDivision, (CVCOMPOSITE Dividend, CVCOMPOSITE Divisor, CVCOMPOSITE& ImageCubeOut))
220CVB_DEF_CAPI(cvbres_t, CVSCubeAddition, (CVCOMPOSITE ImageCube1, CVCOMPOSITE ImageCube2, cvbbool_t ClipResults, CVCOMPOSITE& ImageCubeOut))
221CVB_DEF_CAPI(cvbres_t, CVSCubeSubtraction, (CVCOMPOSITE Minuend, CVCOMPOSITE Subtrahend, cvbbool_t ClipResults, CVCOMPOSITE& ImageCubeOut))
222
223CVB_DEF_CAPI(cvbres_t, CVSLoadEnviFile, (const char *HeaderFileName, const char *BinaryFileName, CVCOMPOSITE &ImageCubeOut))
224CVB_DEF_CAPI(cvbres_t, CVSLoadEnviFileW, (const wchar_t *HeaderFileName, const wchar_t *BinaryFileName, CVCOMPOSITE &ImageCubeOut))
225
226inline cvbres_t _ppCVSLoadEnviFileTyped(const char *HeaderFileName, const char *BinaryFileName, CVCOMPOSITE &ImageCubeOut)
227{
228 return _ppCVSLoadEnviFile(HeaderFileName, BinaryFileName, ImageCubeOut);
229}
230
231inline cvbres_t _ppCVSLoadEnviFileTyped(const wchar_t *HeaderFileName, const wchar_t *BinaryFileName, CVCOMPOSITE &ImageCubeOut)
232{
233 return _ppCVSLoadEnviFileW(HeaderFileName, BinaryFileName, ImageCubeOut);
234}
235
236CVB_DEF_CAPI(cvbres_t, CVSWriteEnviFile, (CVCOMPOSITE ImageCubeIn, const char *HeaderFileName, const char *BinaryFileName))
237CVB_DEF_CAPI(cvbres_t, CVSWriteEnviFileW, (CVCOMPOSITE ImageCubeIn, const wchar_t *HeaderFileName, const wchar_t *BinaryFileName))
238
239inline cvbres_t _ppCVSWriteEnviFileTyped(CVCOMPOSITE ImageCubeIn, const char *HeaderFileName, const char *BinaryFileName)
240{
241 return _ppCVSWriteEnviFile(ImageCubeIn, HeaderFileName, BinaryFileName);
242}
243
244inline cvbres_t _ppCVSWriteEnviFileTyped(CVCOMPOSITE ImageCubeIn, const wchar_t *HeaderFileName, const wchar_t *BinaryFileName)
245{
246 return _ppCVSWriteEnviFileW(ImageCubeIn, HeaderFileName, BinaryFileName);
247}
248
249CVB_DEF_CAPI(cvbres_t, CVSCreateInterpolator, (CVCOMPOSITE ImageCube, CVSStdObserver Observer, CVSStdIlluminant Illuminant, CVSInterpolationMethod Interpolation, CVSINTERPOLATOR& Interpolator))
250CVB_DEF_CAPI(cvbres_t, CVSInterpolatorGetObserver, (CVSINTERPOLATOR Interpolator, CVSStdObserver& Observer))
251CVB_DEF_CAPI(cvbres_t, CVSInterpolatorGetIlluminant, (CVSINTERPOLATOR Interpolator, CVSStdIlluminant& Illuminant))
252CVB_DEF_CAPI(cvbres_t, CVSInterpolatorGetWavelengths, (CVSINTERPOLATOR Interpolator, double WavelengthArray[], size_t& NumberOfWavelengths))
253
254CVB_DEF_CAPI(cvbres_t, CVSConvertCubeToXYZ, (CVCOMPOSITE ImageCube, CVSINTERPOLATOR Interpolator, IMG& ImageOut))
255CVB_DEF_CAPI(cvbres_t, CVSConvertCubeToLab, (CVCOMPOSITE ImageCube, CVSINTERPOLATOR Interpolator, IMG& ImageOut))
256CVB_DEF_CAPI(cvbres_t, CVSConvertXYZToLab, (IMG ImageIn, CVSINTERPOLATOR Interpolator, IMG& ImageOut))
257CVB_DEF_CAPI(cvbres_t, CVSConvertLabToRGB8, (IMG ImageIn, CVSINTERPOLATOR Interpolator, IMG& ImageOut))
258
259}
260
261CVB_END_INLINE_NS
262
263}
Root namespace for the Image Manager interface.
Definition c_bayer_to_rgb.h:17
std::string String
String for wide characters or unicode characters.
Definition string.hpp:49