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);