/* * 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 program 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 program; if not, write to the Free Software Foundation, * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. * * The Original Code is Copyright (C) 2012 Blender Foundation. * All rights reserved. */ #include "MEM_guardedalloc.h" #include "ocio_impl.h" static IOCIOImpl *impl = NULL; void OCIO_init(void) { #ifdef WITH_OCIO impl = new OCIOImpl(); #else impl = new FallbackImpl(); #endif } void OCIO_exit(void) { delete impl; impl = NULL; } OCIO_ConstConfigRcPtr *OCIO_getCurrentConfig(void) { return impl->getCurrentConfig(); } OCIO_ConstConfigRcPtr *OCIO_configCreateFallback(void) { delete impl; impl = new FallbackImpl(); return impl->getCurrentConfig(); } void OCIO_setCurrentConfig(const OCIO_ConstConfigRcPtr *config) { impl->setCurrentConfig(config); } OCIO_ConstConfigRcPtr *OCIO_configCreateFromEnv(void) { return impl->configCreateFromEnv(); } OCIO_ConstConfigRcPtr *OCIO_configCreateFromFile(const char *filename) { return impl->configCreateFromFile(filename); } void OCIO_configRelease(OCIO_ConstConfigRcPtr *config) { impl->configRelease(config); } int OCIO_configGetNumColorSpaces(OCIO_ConstConfigRcPtr *config) { return impl->configGetNumColorSpaces(config); } const char *OCIO_configGetColorSpaceNameByIndex(OCIO_ConstConfigRcPtr *config, int index) { return impl->configGetColorSpaceNameByIndex(config, index); } OCIO_ConstColorSpaceRcPtr *OCIO_configGetColorSpace(OCIO_ConstConfigRcPtr *config, const char *name) { return impl->configGetColorSpace(config, name); } int OCIO_configGetIndexForColorSpace(OCIO_ConstConfigRcPtr *config, const char *name) { return impl->configGetIndexForColorSpace(config, name); } const char *OCIO_configGetDefaultDisplay(OCIO_ConstConfigRcPtr *config) { return impl->configGetDefaultDisplay(config); } int OCIO_configGetNumDisplays(OCIO_ConstConfigRcPtr *config) { return impl->configGetNumDisplays(config); } const char *OCIO_configGetDisplay(OCIO_ConstConfigRcPtr *config, int index) { return impl->configGetDisplay(config, index); } const char *OCIO_configGetDefaultView(OCIO_ConstConfigRcPtr *config, const char *display) { return impl->configGetDefaultView(config, display); } int OCIO_configGetNumViews(OCIO_ConstConfigRcPtr *config, const char *display) { return impl->configGetNumViews(config, display); } const char *OCIO_configGetView(OCIO_ConstConfigRcPtr *config, const char *display, int index) { return impl->configGetView(config, display, index); } const char *OCIO_configGetDisplayColorSpaceName(OCIO_ConstConfigRcPtr *config, const char *display, const char *view) { return impl->configGetDisplayColorSpaceName(config, display, view); } void OCIO_configGetDefaultLumaCoefs(OCIO_ConstConfigRcPtr *config, float *rgb) { impl->configGetDefaultLumaCoefs(config, rgb); } void OCIO_configGetXYZtoRGB(OCIO_ConstConfigRcPtr *config, float xyz_to_rgb[3][3]) { impl->configGetXYZtoRGB(config, xyz_to_rgb); } int OCIO_configGetNumLooks(OCIO_ConstConfigRcPtr *config) { return impl->configGetNumLooks(config); } const char *OCIO_configGetLookNameByIndex(OCIO_ConstConfigRcPtr *config, int index) { return impl->configGetLookNameByIndex(config, index); } OCIO_ConstLookRcPtr *OCIO_configGetLook(OCIO_ConstConfigRcPtr *config, const char *name) { return impl->configGetLook(config, name); } const char *OCIO_lookGetProcessSpace(OCIO_ConstLookRcPtr *look) { return impl->lookGetProcessSpace(look); } void OCIO_lookRelease(OCIO_ConstLookRcPtr *look) { impl->lookRelease(look); } int OCIO_colorSpaceIsInvertible(OCIO_ConstColorSpaceRcPtr *cs) { return impl->colorSpaceIsInvertible(cs); } int OCIO_colorSpaceIsData(OCIO_ConstColorSpaceRcPtr *cs) { return impl->colorSpaceIsData(cs); } void OCIO_colorSpaceRelease(OCIO_ConstColorSpaceRcPtr *cs) { impl->colorSpaceRelease(cs); } OCIO_ConstProcessorRcPtr *OCIO_configGetProcessorWithNames(OCIO_ConstConfigRcPtr *config, const char *srcName, const char *dstName) { return impl->configGetProcessorWithNames(config, srcName, dstName); } OCIO_ConstProcessorRcPtr *OCIO_configGetProcessor(OCIO_ConstConfigRcPtr *config, OCIO_ConstTransformRcPtr *transform) { return impl->configGetProcessor(config, transform); } void OCIO_processorApply(OCIO_ConstProcessorRcPtr *processor, OCIO_PackedImageDesc *img) { impl->processorApply(processor, img); } void OCIO_processorApply_predivide(OCIO_ConstProcessorRcPtr *processor, OCIO_PackedImageDesc *img) { impl->processorApply_predivide(processor, img); } void OCIO_processorApplyRGB(OCIO_ConstProcessorRcPtr *processor, float *pixel) { impl->processorApplyRGB(processor, pixel); } void OCIO_processorApplyRGBA(OCIO_ConstProcessorRcPtr *processor, float *pixel) { impl->processorApplyRGBA(processor, pixel); } void OCIO_processorApplyRGBA_predivide(OCIO_ConstProcessorRcPtr *processor, float *pixel) { impl->processorApplyRGBA_predivide(processor, pixel); } void OCIO_processorRelease(OCIO_ConstProcessorRcPtr *p) { impl->processorRelease(p); } const char *OCIO_colorSpaceGetName(OCIO_ConstColorSpaceRcPtr *cs) { return impl->colorSpaceGetName(cs); } const char *OCIO_colorSpaceGetDescription(OCIO_ConstColorSpaceRcPtr *cs) { return impl->colorSpaceGetDescription(cs); } const char *OCIO_colorSpaceGetFamily(OCIO_ConstColorSpaceRcPtr *cs) { return impl->colorSpaceGetFamily(cs); } OCIO_DisplayTransformRcPtr *OCIO_createDisplayTransform(void) { return impl->createDisplayTransform(); } void OCIO_displayTransformSetInputColorSpaceName(OCIO_DisplayTransformRcPtr *dt, const char *name) { impl->displayTransformSetInputColorSpaceName(dt, name); } void OCIO_displayTransformSetDisplay(OCIO_DisplayTransformRcPtr *dt, const char *name) { impl->displayTransformSetDisplay(dt, name); } void OCIO_displayTransformSetView(OCIO_DisplayTransformRcPtr *dt, const char *name) { impl->displayTransformSetView(dt, name); } void OCIO_displayTransformSetDisplayCC(OCIO_DisplayTransformRcPtr *dt, OCIO_ConstTransformRcPtr *t) { impl->displayTransformSetDisplayCC(dt, t); } void OCIO_displayTransformSetLinearCC(OCIO_DisplayTransformRcPtr *dt, OCIO_ConstTransformRcPtr *t) { impl->displayTransformSetLinearCC(dt, t); } void OCIO_displayTransformSetLooksOverride(OCIO_DisplayTransformRcPtr *dt, const char *looks) { impl->displayTransformSetLooksOverride(dt, looks); } void OCIO_displayTransformSetLooksOverrideEnabled(OCIO_DisplayTransformRcPtr *dt, bool enabled) { impl->displayTransformSetLooksOverrideEnabled(dt, enabled); } void OCIO_displayTransformRelease(OCIO_DisplayTransformRcPtr *dt) { impl->displayTransformRelease(dt); } OCIO_PackedImageDesc *OCIO_createOCIO_PackedImageDesc(float *data, long width, long height, long numChannels, long chanStrideBytes, long xStrideBytes, long yStrideBytes) { return impl->createOCIO_PackedImageDesc( data, width, height, numChannels, chanStrideBytes, xStrideBytes, yStrideBytes); } void OCIO_PackedImageDescRelease(OCIO_PackedImageDesc *id) { impl->OCIO_PackedImageDescRelease(id); } OCIO_ExponentTransformRcPtr *OCIO_createExponentTransform(void) { return impl->createExponentTransform(); } void OCIO_exponentTransformSetValue(OCIO_ExponentTransformRcPtr *et, const float *exponent) { impl->exponentTransformSetValue(et, exponent); } void OCIO_exponentTransformRelease(OCIO_ExponentTransformRcPtr *et) { impl->exponentTransformRelease(et); } OCIO_MatrixTransformRcPtr *OCIO_createMatrixTransform(void) { return impl->createMatrixTransform(); } void OCIO_matrixTransformSetValue(OCIO_MatrixTransformRcPtr *mt, const float *m44, const float *offset4) { impl->matrixTransformSetValue(mt, m44, offset4); } void OCIO_matrixTransformRelease(OCIO_MatrixTransformRcPtr *mt) { impl->matrixTransformRelease(mt); } void OCIO_matrixTransformScale(float *m44, float *offset4, const float *scale4f) { impl->matrixTransformScale(m44, offset4, scale4f); } int OCIO_supportGLSLDraw(void) { return (int)impl->supportGLSLDraw(); } int OCIO_setupGLSLDraw(struct OCIO_GLSLDrawState **state_r, OCIO_ConstProcessorRcPtr *processor, OCIO_CurveMappingSettings *curve_mapping_settings, float dither, bool predivide) { return (int)impl->setupGLSLDraw(state_r, processor, curve_mapping_settings, dither, predivide); } void OCIO_finishGLSLDraw(struct OCIO_GLSLDrawState *state) { impl->finishGLSLDraw(state); } void OCIO_freeOGLState(struct OCIO_GLSLDrawState *state) { impl->freeGLState(state); } const char *OCIO_getVersionString(void) { return impl->getVersionString(); } int OCIO_getVersionHex(void) { return impl->getVersionHex(); }