2
* ***** BEGIN GPL LICENSE BLOCK *****
4
* This program is free software; you can redistribute it and/or
5
* modify it under the terms of the GNU General Public License
6
* as published by the Free Software Foundation; either version 2
7
* of the License, or (at your option) any later version.
9
* This program is distributed in the hope that it will be useful,
10
* but WITHOUT ANY WARRANTY; without even the implied warranty of
11
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12
* GNU General Public License for more details.
14
* You should have received a copy of the GNU General Public License
15
* along with this program; if not, write to the Free Software Foundation,
16
* Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18
* The Original Code is Copyright (C) 2012 Blender Foundation.
19
* All rights reserved.
21
* Contributor(s): Sergey Sharybin
23
* ***** END GPL LICENSE BLOCK *****
26
#include "MEM_guardedalloc.h"
28
#include "ocio_impl.h"
30
static IOCIOImpl *impl = NULL;
35
impl = new OCIOImpl();
37
impl = new FallbackImpl();
47
OCIO_ConstConfigRcPtr *OCIO_getCurrentConfig(void)
49
return impl->getCurrentConfig();
52
OCIO_ConstConfigRcPtr *OCIO_configCreateFallback(void)
55
impl = new FallbackImpl();
57
return impl->getCurrentConfig();
60
void OCIO_setCurrentConfig(const OCIO_ConstConfigRcPtr *config)
62
impl->setCurrentConfig(config);
65
OCIO_ConstConfigRcPtr *OCIO_configCreateFromEnv(void)
67
return impl->configCreateFromEnv();
70
OCIO_ConstConfigRcPtr *OCIO_configCreateFromFile(const char *filename)
72
return impl->configCreateFromFile(filename);
75
void OCIO_configRelease(OCIO_ConstConfigRcPtr *config)
77
impl->configRelease(config);
80
int OCIO_configGetNumColorSpaces(OCIO_ConstConfigRcPtr *config)
82
return impl->configGetNumColorSpaces(config);
85
const char *OCIO_configGetColorSpaceNameByIndex(OCIO_ConstConfigRcPtr *config, int index)
87
return impl->configGetColorSpaceNameByIndex(config, index);
90
OCIO_ConstColorSpaceRcPtr *OCIO_configGetColorSpace(OCIO_ConstConfigRcPtr *config, const char *name)
92
return impl->configGetColorSpace(config, name);
95
int OCIO_configGetIndexForColorSpace(OCIO_ConstConfigRcPtr *config, const char *name)
97
return impl->configGetIndexForColorSpace(config, name);
100
const char *OCIO_configGetDefaultDisplay(OCIO_ConstConfigRcPtr *config)
102
return impl->configGetDefaultDisplay(config);
105
int OCIO_configGetNumDisplays(OCIO_ConstConfigRcPtr* config)
107
return impl->configGetNumDisplays(config);
110
const char *OCIO_configGetDisplay(OCIO_ConstConfigRcPtr *config, int index)
112
return impl->configGetDisplay(config, index);
115
const char *OCIO_configGetDefaultView(OCIO_ConstConfigRcPtr *config, const char *display)
117
return impl->configGetDefaultView(config, display);
120
int OCIO_configGetNumViews(OCIO_ConstConfigRcPtr *config, const char *display)
122
return impl->configGetNumViews(config, display);
125
const char *OCIO_configGetView(OCIO_ConstConfigRcPtr *config, const char *display, int index)
127
return impl->configGetView(config, display, index);
130
const char *OCIO_configGetDisplayColorSpaceName(OCIO_ConstConfigRcPtr *config, const char *display, const char *view)
132
return impl->configGetDisplayColorSpaceName(config, display, view);
135
int OCIO_colorSpaceIsInvertible(OCIO_ConstColorSpaceRcPtr *cs)
137
return impl->colorSpaceIsInvertible(cs);
140
int OCIO_colorSpaceIsData(OCIO_ConstColorSpaceRcPtr *cs)
142
return impl->colorSpaceIsData(cs);
145
void OCIO_colorSpaceRelease(OCIO_ConstColorSpaceRcPtr *cs)
147
impl->colorSpaceRelease(cs);
150
OCIO_ConstProcessorRcPtr *OCIO_configGetProcessorWithNames(OCIO_ConstConfigRcPtr *config, const char *srcName, const char *dstName)
152
return impl->configGetProcessorWithNames(config, srcName, dstName);
155
OCIO_ConstProcessorRcPtr *OCIO_configGetProcessor(OCIO_ConstConfigRcPtr *config, OCIO_ConstTransformRcPtr *transform)
157
return impl->configGetProcessor(config, transform);
160
void OCIO_processorApply(OCIO_ConstProcessorRcPtr *processor, OCIO_PackedImageDesc *img)
162
impl->processorApply(processor, img);
165
void OCIO_processorApply_predivide(OCIO_ConstProcessorRcPtr *processor, OCIO_PackedImageDesc *img)
167
impl->processorApply_predivide(processor, img);
170
void OCIO_processorApplyRGB(OCIO_ConstProcessorRcPtr *processor, float *pixel)
172
impl->processorApplyRGB(processor, pixel);
175
void OCIO_processorApplyRGBA(OCIO_ConstProcessorRcPtr *processor, float *pixel)
177
impl->processorApplyRGBA(processor, pixel);
180
void OCIO_processorApplyRGBA_predivide(OCIO_ConstProcessorRcPtr *processor, float *pixel)
182
impl->processorApplyRGBA_predivide(processor, pixel);
185
void OCIO_processorRelease(OCIO_ConstProcessorRcPtr *p)
187
impl->processorRelease(p);
190
const char *OCIO_colorSpaceGetName(OCIO_ConstColorSpaceRcPtr *cs)
192
return impl->colorSpaceGetName(cs);
195
const char *OCIO_colorSpaceGetDescription(OCIO_ConstColorSpaceRcPtr *cs)
197
return impl->colorSpaceGetDescription(cs);
200
const char *OCIO_colorSpaceGetFamily(OCIO_ConstColorSpaceRcPtr *cs)
202
return impl->colorSpaceGetFamily(cs);
205
OCIO_DisplayTransformRcPtr *OCIO_createDisplayTransform(void)
207
return impl->createDisplayTransform();
210
void OCIO_displayTransformSetInputColorSpaceName(OCIO_DisplayTransformRcPtr *dt, const char *name)
212
impl->displayTransformSetInputColorSpaceName(dt, name);
215
void OCIO_displayTransformSetDisplay(OCIO_DisplayTransformRcPtr *dt, const char *name)
217
impl->displayTransformSetDisplay(dt, name);
220
void OCIO_displayTransformSetView(OCIO_DisplayTransformRcPtr *dt, const char *name)
222
impl->displayTransformSetView(dt, name);
225
void OCIO_displayTransformSetDisplayCC(OCIO_DisplayTransformRcPtr *dt, OCIO_ConstTransformRcPtr *t)
227
impl->displayTransformSetDisplayCC(dt, t);
230
void OCIO_displayTransformSetLinearCC(OCIO_DisplayTransformRcPtr *dt, OCIO_ConstTransformRcPtr *t)
232
impl->displayTransformSetLinearCC(dt, t);
235
void OCIO_displayTransformRelease(OCIO_DisplayTransformRcPtr *dt)
237
impl->displayTransformRelease(dt);
240
OCIO_PackedImageDesc *OCIO_createOCIO_PackedImageDesc(float *data, long width, long height, long numChannels,
241
long chanStrideBytes, long xStrideBytes, long yStrideBytes)
243
return impl->createOCIO_PackedImageDesc(data, width, height, numChannels, chanStrideBytes, xStrideBytes, yStrideBytes);
246
void OCIO_PackedImageDescRelease(OCIO_PackedImageDesc* id)
248
impl->OCIO_PackedImageDescRelease(id);
251
OCIO_ExponentTransformRcPtr *OCIO_createExponentTransform(void)
253
return impl->createExponentTransform();
256
void OCIO_exponentTransformSetValue(OCIO_ExponentTransformRcPtr *et, const float *exponent)
258
impl->exponentTransformSetValue(et, exponent);
261
void OCIO_exponentTransformRelease(OCIO_ExponentTransformRcPtr *et)
263
impl->exponentTransformRelease(et);
266
OCIO_MatrixTransformRcPtr *OCIO_createMatrixTransform(void)
268
return impl->createMatrixTransform();
271
void OCIO_matrixTransformSetValue(OCIO_MatrixTransformRcPtr *mt, const float *m44, const float *offset4)
273
impl->matrixTransformSetValue(mt, m44, offset4);
276
void OCIO_matrixTransformRelease(OCIO_MatrixTransformRcPtr *mt)
278
impl->matrixTransformRelease(mt);
281
void OCIO_matrixTransformScale(float * m44, float * offset4, const float *scale4f)
283
impl->matrixTransformScale(m44, offset4, scale4f);