Merging r50248 through r50264 from trunk into soc-2011-tomato
[blender.git] / intern / opencolorio / ocio_capi.h
1 /*
2  * ***** BEGIN GPL LICENSE BLOCK *****
3  *
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.
8  *
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.
13  *
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.
17  *
18  * The Original Code is Copyright (C) 2012 Blender Foundation.
19  * All rights reserved.
20  *
21  * Contributor(s): Xavier Thomas
22  *                 Lukas Toene
23  *                 Sergey Sharybin
24  *
25  * ***** END GPL LICENSE BLOCK *****
26  */
27
28 #ifndef __OCIO_CAPI_H__
29 #define __OCIO_CAPI_H__
30
31
32
33 #ifdef __cplusplus
34 using namespace OCIO_NAMESPACE;
35 extern "C" {
36 #endif
37
38 #define OCIO_DECLARE_HANDLE(name) typedef struct name##__ { int unused; } *name
39
40
41 #ifndef OCIO_CAPI_IMPLEMENTATION
42         #define OCIO_ROLE_SCENE_LINEAR  "scene_linear"
43         #define OCIO_ROLE_COLOR_PICKING "color_picking"
44         #define OCIO_ROLE_TEXTURE_PAINT "texture_paint"
45         #define OCIO_ROLE_SEQUENCER     "sequencer"
46
47         OCIO_DECLARE_HANDLE(ConstConfigRcPtr);
48         OCIO_DECLARE_HANDLE(ConstColorSpaceRcPtr);
49         OCIO_DECLARE_HANDLE(ConstProcessorRcPtr);
50         OCIO_DECLARE_HANDLE(ConstContextRcPtr);
51         OCIO_DECLARE_HANDLE(PackedImageDesc);
52         OCIO_DECLARE_HANDLE(DisplayTransformRcPtr);
53         OCIO_DECLARE_HANDLE(ConstTransformRcPtr);
54         OCIO_DECLARE_HANDLE(ExponentTransformRcPtr);
55         OCIO_DECLARE_HANDLE(MatrixTransformRcPtr);
56 #endif
57
58
59 ConstConfigRcPtr *OCIO_getCurrentConfig(void);
60 void OCIO_setCurrentConfig(const ConstConfigRcPtr *config);
61
62 ConstConfigRcPtr *OCIO_configCreateFromEnv(void);
63 ConstConfigRcPtr *OCIO_configCreateFromFile(const char* filename);
64
65 void OCIO_configRelease(ConstConfigRcPtr *config);
66
67 int OCIO_configGetNumColorSpaces(ConstConfigRcPtr *config);
68 const char *OCIO_configGetColorSpaceNameByIndex(ConstConfigRcPtr *config, int index);
69 ConstColorSpaceRcPtr *OCIO_configGetColorSpace(ConstConfigRcPtr *config, const char *name);
70 int OCIO_configGetIndexForColorSpace(ConstConfigRcPtr *config, const char *name);
71
72 void OCIO_colorSpaceRelease(ConstColorSpaceRcPtr *cs);
73
74 const char *OCIO_configGetDefaultDisplay(ConstConfigRcPtr *config);
75 int         OCIO_configGetNumDisplays(ConstConfigRcPtr *config);
76 const char *OCIO_configGetDisplay(ConstConfigRcPtr *config, int index);
77 const char *OCIO_configGetDefaultView(ConstConfigRcPtr *config, const char *display);
78 int         OCIO_configGetNumViews(ConstConfigRcPtr *config, const char *display);
79 const char *OCIO_configGetView(ConstConfigRcPtr *config, const char *display, int index);
80 const char *OCIO_configGetDisplayColorSpaceName(ConstConfigRcPtr *config, const char *display, const char *view);
81
82 ConstProcessorRcPtr *OCIO_configGetProcessorWithNames(ConstConfigRcPtr *config, const char *srcName, const char *dstName);
83 ConstProcessorRcPtr *OCIO_configGetProcessor(ConstConfigRcPtr *config, ConstTransformRcPtr *transform);
84
85 void OCIO_processorApply(ConstProcessorRcPtr *processor, PackedImageDesc *img);
86 void OCIO_processorApplyRGB(ConstProcessorRcPtr *processor, float *pixel);
87 void OCIO_processorApplyRGBA(ConstProcessorRcPtr *processor, float *pixel);
88
89 void OCIO_processorRelease(ConstProcessorRcPtr *p);
90
91 const char *OCIO_colorSpaceGetName(ConstColorSpaceRcPtr *cs);
92 const char *OCIO_colorSpaceGetDescription(ConstColorSpaceRcPtr *cs);
93 const char *OCIO_colorSpaceGetFamily(ConstColorSpaceRcPtr *cs);
94
95 DisplayTransformRcPtr *OCIO_createDisplayTransform(void);
96 void OCIO_displayTransformSetInputColorSpaceName(DisplayTransformRcPtr *dt, const char *name);
97 void OCIO_displayTransformSetDisplay(DisplayTransformRcPtr *dt, const char *name);
98 void OCIO_displayTransformSetView(DisplayTransformRcPtr *dt, const char *name);
99 void OCIO_displayTransformSetDisplayCC(DisplayTransformRcPtr *dt, ConstTransformRcPtr *et);
100 void OCIO_displayTransformSetLinearCC(DisplayTransformRcPtr *dt, ConstTransformRcPtr *et);
101 void OCIO_displayTransformRelease(DisplayTransformRcPtr *dt);
102
103 PackedImageDesc *OCIO_createPackedImageDesc(float *data, long width, long height, long numChannels,
104                                             long chanStrideBytes, long xStrideBytes, long yStrideBytes);
105
106 void OCIO_packedImageDescRelease(PackedImageDesc *p);
107
108 ExponentTransformRcPtr *OCIO_createExponentTransform(void);
109 void OCIO_exponentTransformSetValue(ExponentTransformRcPtr *et, const float *exponent);
110 void OCIO_exponentTransformRelease(ExponentTransformRcPtr *et);
111
112 MatrixTransformRcPtr *OCIO_createMatrixTransform(void);
113 void OCIO_matrixTransformSetValue(MatrixTransformRcPtr *et, const float *m44, const float *offset4);
114 void OCIO_matrixTransformRelease(MatrixTransformRcPtr *mt);
115
116 void OCIO_matrixTransformScale(float * m44, float * offset4, const float * scale4);
117
118 #ifdef __cplusplus
119 }
120 #endif
121
122 #endif //OCIO_CAPI_H