Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'intern/opencolorio/ocio_impl.h')
-rw-r--r--intern/opencolorio/ocio_impl.h240
1 files changed, 240 insertions, 0 deletions
diff --git a/intern/opencolorio/ocio_impl.h b/intern/opencolorio/ocio_impl.h
new file mode 100644
index 00000000000..64cf5ec3322
--- /dev/null
+++ b/intern/opencolorio/ocio_impl.h
@@ -0,0 +1,240 @@
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * 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.
+ *
+ * Contributor(s): Sergey Sharybin
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef __OCIO_IMPL_H__
+#define __OCIO_IMPL_H__
+
+#include "ocio_capi.h"
+
+class IOCIOImpl {
+public:
+ virtual ~IOCIOImpl() {};
+
+ virtual OCIO_ConstConfigRcPtr *getCurrentConfig(void) = 0;
+ virtual void setCurrentConfig(const OCIO_ConstConfigRcPtr *config) = 0;
+
+ virtual OCIO_ConstConfigRcPtr *configCreateFromEnv(void) = 0;
+ virtual OCIO_ConstConfigRcPtr *configCreateFromFile(const char* filename) = 0;
+
+ virtual void configRelease(OCIO_ConstConfigRcPtr *config) = 0;
+
+ virtual int configGetNumColorSpaces(OCIO_ConstConfigRcPtr *config) = 0;
+ virtual const char *configGetColorSpaceNameByIndex(OCIO_ConstConfigRcPtr *config, int index) = 0;
+ virtual OCIO_ConstColorSpaceRcPtr *configGetColorSpace(OCIO_ConstConfigRcPtr *config, const char *name) = 0;
+ virtual int configGetIndexForColorSpace(OCIO_ConstConfigRcPtr *config, const char *name) = 0;
+
+ virtual int colorSpaceIsInvertible(OCIO_ConstColorSpaceRcPtr *cs) = 0;
+ virtual int colorSpaceIsData(OCIO_ConstColorSpaceRcPtr *cs) = 0;
+
+ virtual void colorSpaceRelease(OCIO_ConstColorSpaceRcPtr *cs) = 0;
+
+ virtual const char *configGetDefaultDisplay(OCIO_ConstConfigRcPtr *config) = 0;
+ virtual int configGetNumDisplays(OCIO_ConstConfigRcPtr *config) = 0;
+ virtual const char *configGetDisplay(OCIO_ConstConfigRcPtr *config, int index) = 0;
+ virtual const char *configGetDefaultView(OCIO_ConstConfigRcPtr *config, const char *display) = 0;
+ virtual int configGetNumViews(OCIO_ConstConfigRcPtr *config, const char *display) = 0;
+ virtual const char *configGetView(OCIO_ConstConfigRcPtr *config, const char *display, int index) = 0;
+ virtual const char *configGetDisplayColorSpaceName(OCIO_ConstConfigRcPtr *config, const char *display, const char *view) = 0;
+
+ virtual OCIO_ConstProcessorRcPtr *configGetProcessorWithNames(OCIO_ConstConfigRcPtr *config, const char *srcName, const char *dstName) = 0;
+ virtual OCIO_ConstProcessorRcPtr *configGetProcessor(OCIO_ConstConfigRcPtr *config, OCIO_ConstTransformRcPtr *transform) = 0;
+
+ virtual void processorApply(OCIO_ConstProcessorRcPtr *processor, OCIO_PackedImageDesc *img) = 0;
+ virtual void processorApply_predivide(OCIO_ConstProcessorRcPtr *processor, OCIO_PackedImageDesc *img) = 0;
+ virtual void processorApplyRGB(OCIO_ConstProcessorRcPtr *processor, float *pixel) = 0;
+ virtual void processorApplyRGBA(OCIO_ConstProcessorRcPtr *processor, float *pixel) = 0;
+ virtual void processorApplyRGBA_predivide(OCIO_ConstProcessorRcPtr *processor, float *pixel) = 0;
+
+ virtual void processorRelease(OCIO_ConstProcessorRcPtr *p) = 0;
+
+ virtual const char *colorSpaceGetName(OCIO_ConstColorSpaceRcPtr *cs) = 0;
+ virtual const char *colorSpaceGetDescription(OCIO_ConstColorSpaceRcPtr *cs) = 0;
+ virtual const char *colorSpaceGetFamily(OCIO_ConstColorSpaceRcPtr *cs) = 0;
+
+ virtual OCIO_DisplayTransformRcPtr *createDisplayTransform(void) = 0;
+ virtual void displayTransformSetInputColorSpaceName(OCIO_DisplayTransformRcPtr *dt, const char *name) = 0;
+ virtual void displayTransformSetDisplay(OCIO_DisplayTransformRcPtr *dt, const char *name) = 0;
+ virtual void displayTransformSetView(OCIO_DisplayTransformRcPtr *dt, const char *name) = 0;
+ virtual void displayTransformSetDisplayCC(OCIO_DisplayTransformRcPtr *dt, OCIO_ConstTransformRcPtr *et) = 0;
+ virtual void displayTransformSetLinearCC(OCIO_DisplayTransformRcPtr *dt, OCIO_ConstTransformRcPtr *et) = 0;
+ virtual void displayTransformRelease(OCIO_DisplayTransformRcPtr *dt) = 0;
+
+ virtual OCIO_PackedImageDesc *createOCIO_PackedImageDesc(float *data, long width, long height, long numChannels,
+ long chanStrideBytes, long xStrideBytes, long yStrideBytes) = 0;
+
+ virtual void OCIO_PackedImageDescRelease(OCIO_PackedImageDesc *p) = 0;
+
+ virtual OCIO_ExponentTransformRcPtr *createExponentTransform(void) = 0;
+ virtual void exponentTransformSetValue(OCIO_ExponentTransformRcPtr *et, const float *exponent) = 0;
+ virtual void exponentTransformRelease(OCIO_ExponentTransformRcPtr *et) = 0;
+
+ virtual OCIO_MatrixTransformRcPtr *createMatrixTransform(void) = 0;
+ virtual void matrixTransformSetValue(OCIO_MatrixTransformRcPtr *et, const float *m44, const float *offset4) = 0;
+ virtual void matrixTransformRelease(OCIO_MatrixTransformRcPtr *mt) = 0;
+
+ virtual void matrixTransformScale(float * m44, float * offset4, const float * scale4) = 0;
+};
+
+class FallbackImpl : public IOCIOImpl {
+public:
+ FallbackImpl() {};
+
+ OCIO_ConstConfigRcPtr *getCurrentConfig(void);
+ void setCurrentConfig(const OCIO_ConstConfigRcPtr *config);
+
+ OCIO_ConstConfigRcPtr *configCreateFromEnv(void);
+ OCIO_ConstConfigRcPtr *configCreateFromFile(const char* filename);
+
+ void configRelease(OCIO_ConstConfigRcPtr *config);
+
+ int configGetNumColorSpaces(OCIO_ConstConfigRcPtr *config);
+ const char *configGetColorSpaceNameByIndex(OCIO_ConstConfigRcPtr *config, int index);
+ OCIO_ConstColorSpaceRcPtr *configGetColorSpace(OCIO_ConstConfigRcPtr *config, const char *name);
+ int configGetIndexForColorSpace(OCIO_ConstConfigRcPtr *config, const char *name);
+
+ int colorSpaceIsInvertible(OCIO_ConstColorSpaceRcPtr *cs);
+ int colorSpaceIsData(OCIO_ConstColorSpaceRcPtr *cs);
+
+ void colorSpaceRelease(OCIO_ConstColorSpaceRcPtr *cs);
+
+ const char *configGetDefaultDisplay(OCIO_ConstConfigRcPtr *config);
+ int configGetNumDisplays(OCIO_ConstConfigRcPtr *config);
+ const char *configGetDisplay(OCIO_ConstConfigRcPtr *config, int index);
+ const char *configGetDefaultView(OCIO_ConstConfigRcPtr *config, const char *display);
+ int configGetNumViews(OCIO_ConstConfigRcPtr *config, const char *display);
+ const char *configGetView(OCIO_ConstConfigRcPtr *config, const char *display, int index);
+ const char *configGetDisplayColorSpaceName(OCIO_ConstConfigRcPtr *config, const char *display, const char *view);
+
+ OCIO_ConstProcessorRcPtr *configGetProcessorWithNames(OCIO_ConstConfigRcPtr *config, const char *srcName, const char *dstName);
+ OCIO_ConstProcessorRcPtr *configGetProcessor(OCIO_ConstConfigRcPtr *config, OCIO_ConstTransformRcPtr *transform);
+
+ void processorApply(OCIO_ConstProcessorRcPtr *processor, OCIO_PackedImageDesc *img);
+ void processorApply_predivide(OCIO_ConstProcessorRcPtr *processor, OCIO_PackedImageDesc *img);
+ void processorApplyRGB(OCIO_ConstProcessorRcPtr *processor, float *pixel);
+ void processorApplyRGBA(OCIO_ConstProcessorRcPtr *processor, float *pixel);
+ void processorApplyRGBA_predivide(OCIO_ConstProcessorRcPtr *processor, float *pixel);
+
+ void processorRelease(OCIO_ConstProcessorRcPtr *p);
+
+ const char *colorSpaceGetName(OCIO_ConstColorSpaceRcPtr *cs);
+ const char *colorSpaceGetDescription(OCIO_ConstColorSpaceRcPtr *cs);
+ const char *colorSpaceGetFamily(OCIO_ConstColorSpaceRcPtr *cs);
+
+ OCIO_DisplayTransformRcPtr *createDisplayTransform(void);
+ void displayTransformSetInputColorSpaceName(OCIO_DisplayTransformRcPtr *dt, const char *name);
+ void displayTransformSetDisplay(OCIO_DisplayTransformRcPtr *dt, const char *name);
+ void displayTransformSetView(OCIO_DisplayTransformRcPtr *dt, const char *name);
+ void displayTransformSetDisplayCC(OCIO_DisplayTransformRcPtr *dt, OCIO_ConstTransformRcPtr *et);
+ void displayTransformSetLinearCC(OCIO_DisplayTransformRcPtr *dt, OCIO_ConstTransformRcPtr *et);
+ void displayTransformRelease(OCIO_DisplayTransformRcPtr *dt);
+
+ OCIO_PackedImageDesc *createOCIO_PackedImageDesc(float *data, long width, long height, long numChannels,
+ long chanStrideBytes, long xStrideBytes, long yStrideBytes);
+
+ void OCIO_PackedImageDescRelease(OCIO_PackedImageDesc *p);
+
+ OCIO_ExponentTransformRcPtr *createExponentTransform(void);
+ void exponentTransformSetValue(OCIO_ExponentTransformRcPtr *et, const float *exponent);
+ void exponentTransformRelease(OCIO_ExponentTransformRcPtr *et);
+
+ OCIO_MatrixTransformRcPtr *createMatrixTransform(void);
+ void matrixTransformSetValue(OCIO_MatrixTransformRcPtr *et, const float *m44, const float *offset4);
+ void matrixTransformRelease(OCIO_MatrixTransformRcPtr *mt);
+
+ void matrixTransformScale(float * m44, float * offset4, const float * scale4);
+};
+
+#ifdef WITH_OCIO
+class OCIOImpl : public IOCIOImpl {
+public:
+ OCIOImpl() {};
+
+ OCIO_ConstConfigRcPtr *getCurrentConfig(void);
+ void setCurrentConfig(const OCIO_ConstConfigRcPtr *config);
+
+ OCIO_ConstConfigRcPtr *configCreateFromEnv(void);
+ OCIO_ConstConfigRcPtr *configCreateFromFile(const char* filename);
+
+ void configRelease(OCIO_ConstConfigRcPtr *config);
+
+ int configGetNumColorSpaces(OCIO_ConstConfigRcPtr *config);
+ const char *configGetColorSpaceNameByIndex(OCIO_ConstConfigRcPtr *config, int index);
+ OCIO_ConstColorSpaceRcPtr *configGetColorSpace(OCIO_ConstConfigRcPtr *config, const char *name);
+ int configGetIndexForColorSpace(OCIO_ConstConfigRcPtr *config, const char *name);
+
+ int colorSpaceIsInvertible(OCIO_ConstColorSpaceRcPtr *cs);
+ int colorSpaceIsData(OCIO_ConstColorSpaceRcPtr *cs);
+
+ void colorSpaceRelease(OCIO_ConstColorSpaceRcPtr *cs);
+
+ const char *configGetDefaultDisplay(OCIO_ConstConfigRcPtr *config);
+ int configGetNumDisplays(OCIO_ConstConfigRcPtr *config);
+ const char *configGetDisplay(OCIO_ConstConfigRcPtr *config, int index);
+ const char *configGetDefaultView(OCIO_ConstConfigRcPtr *config, const char *display);
+ int configGetNumViews(OCIO_ConstConfigRcPtr *config, const char *display);
+ const char *configGetView(OCIO_ConstConfigRcPtr *config, const char *display, int index);
+ const char *configGetDisplayColorSpaceName(OCIO_ConstConfigRcPtr *config, const char *display, const char *view);
+
+ OCIO_ConstProcessorRcPtr *configGetProcessorWithNames(OCIO_ConstConfigRcPtr *config, const char *srcName, const char *dstName);
+ OCIO_ConstProcessorRcPtr *configGetProcessor(OCIO_ConstConfigRcPtr *config, OCIO_ConstTransformRcPtr *transform);
+
+ void processorApply(OCIO_ConstProcessorRcPtr *processor, OCIO_PackedImageDesc *img);
+ void processorApply_predivide(OCIO_ConstProcessorRcPtr *processor, OCIO_PackedImageDesc *img);
+ void processorApplyRGB(OCIO_ConstProcessorRcPtr *processor, float *pixel);
+ void processorApplyRGBA(OCIO_ConstProcessorRcPtr *processor, float *pixel);
+ void processorApplyRGBA_predivide(OCIO_ConstProcessorRcPtr *processor, float *pixel);
+
+ void processorRelease(OCIO_ConstProcessorRcPtr *p);
+
+ const char *colorSpaceGetName(OCIO_ConstColorSpaceRcPtr *cs);
+ const char *colorSpaceGetDescription(OCIO_ConstColorSpaceRcPtr *cs);
+ const char *colorSpaceGetFamily(OCIO_ConstColorSpaceRcPtr *cs);
+
+ OCIO_DisplayTransformRcPtr *createDisplayTransform(void);
+ void displayTransformSetInputColorSpaceName(OCIO_DisplayTransformRcPtr *dt, const char *name);
+ void displayTransformSetDisplay(OCIO_DisplayTransformRcPtr *dt, const char *name);
+ void displayTransformSetView(OCIO_DisplayTransformRcPtr *dt, const char *name);
+ void displayTransformSetDisplayCC(OCIO_DisplayTransformRcPtr *dt, OCIO_ConstTransformRcPtr *et);
+ void displayTransformSetLinearCC(OCIO_DisplayTransformRcPtr *dt, OCIO_ConstTransformRcPtr *et);
+ void displayTransformRelease(OCIO_DisplayTransformRcPtr *dt);
+
+ OCIO_PackedImageDesc *createOCIO_PackedImageDesc(float *data, long width, long height, long numChannels,
+ long chanStrideBytes, long xStrideBytes, long yStrideBytes);
+
+ void OCIO_PackedImageDescRelease(OCIO_PackedImageDesc *p);
+
+ OCIO_ExponentTransformRcPtr *createExponentTransform(void);
+ void exponentTransformSetValue(OCIO_ExponentTransformRcPtr *et, const float *exponent);
+ void exponentTransformRelease(OCIO_ExponentTransformRcPtr *et);
+
+ OCIO_MatrixTransformRcPtr *createMatrixTransform(void);
+ void matrixTransformSetValue(OCIO_MatrixTransformRcPtr *et, const float *m44, const float *offset4);
+ void matrixTransformRelease(OCIO_MatrixTransformRcPtr *mt);
+
+ void matrixTransformScale(float * m44, float * offset4, const float * scale4);
+};
+#endif
+
+#endif /* OCIO_IMPL_H */