summaryrefslogtreecommitdiff
path: root/export/OpenColorIO/OpenColorTypes.h
diff options
context:
space:
mode:
Diffstat (limited to 'export/OpenColorIO/OpenColorTypes.h')
-rw-r--r--export/OpenColorIO/OpenColorTypes.h397
1 files changed, 397 insertions, 0 deletions
diff --git a/export/OpenColorIO/OpenColorTypes.h b/export/OpenColorIO/OpenColorTypes.h
new file mode 100644
index 0000000..1d2bddb
--- /dev/null
+++ b/export/OpenColorIO/OpenColorTypes.h
@@ -0,0 +1,397 @@
+/*
+Copyright (c) 2003-2010 Sony Pictures Imageworks Inc., et al.
+All Rights Reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+* Redistributions of source code must retain the above copyright
+ notice, this list of conditions and the following disclaimer.
+* Redistributions in binary form must reproduce the above copyright
+ notice, this list of conditions and the following disclaimer in the
+ documentation and/or other materials provided with the distribution.
+* Neither the name of Sony Pictures Imageworks nor the names of its
+ contributors may be used to endorse or promote products derived from
+ this software without specific prior written permission.
+THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
+"AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
+LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
+A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
+LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
+DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
+THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
+(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
+OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+*/
+
+
+#ifndef INCLUDED_OCIO_OPENCOLORTYPES_H
+#define INCLUDED_OCIO_OPENCOLORTYPES_H
+
+#include "OpenColorABI.h"
+
+#ifndef OCIO_NAMESPACE_ENTER
+#error This header cannot be used directly. Use <OpenColorIO/OpenColorIO.h> instead.
+#endif
+
+#include <limits>
+#include <string>
+
+/*!rst::
+C++ Types
+=========
+*/
+
+OCIO_NAMESPACE_ENTER
+{
+ // Predeclare all class ptr definitions
+
+ //!rst::
+ // Core
+ // ****
+
+ class OCIOEXPORT Config;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const Config> ConstConfigRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<Config> ConfigRcPtr;
+
+ class OCIOEXPORT ColorSpace;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const ColorSpace> ConstColorSpaceRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<ColorSpace> ColorSpaceRcPtr;
+
+ class OCIOEXPORT Look;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const Look> ConstLookRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<Look> LookRcPtr;
+
+ class OCIOEXPORT Context;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const Context> ConstContextRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<Context> ContextRcPtr;
+
+ class OCIOEXPORT Processor;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const Processor> ConstProcessorRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<Processor> ProcessorRcPtr;
+
+ class OCIOEXPORT ProcessorMetadata;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const ProcessorMetadata> ConstProcessorMetadataRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<ProcessorMetadata> ProcessorMetadataRcPtr;
+
+ class OCIOEXPORT Baker;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const Baker> ConstBakerRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<Baker> BakerRcPtr;
+
+ class OCIOEXPORT ImageDesc;
+ class OCIOEXPORT GpuShaderDesc;
+ class OCIOEXPORT Exception;
+
+
+ //!rst::
+ // Transforms
+ // **********
+
+ class OCIOEXPORT Transform;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const Transform> ConstTransformRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<Transform> TransformRcPtr;
+
+ class OCIOEXPORT AllocationTransform;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const AllocationTransform> ConstAllocationTransformRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<AllocationTransform> AllocationTransformRcPtr;
+
+ class OCIOEXPORT CDLTransform;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const CDLTransform> ConstCDLTransformRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<CDLTransform> CDLTransformRcPtr;
+
+ class OCIOEXPORT ColorSpaceTransform;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const ColorSpaceTransform> ConstColorSpaceTransformRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<ColorSpaceTransform> ColorSpaceTransformRcPtr;
+
+ class OCIOEXPORT DisplayTransform;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const DisplayTransform> ConstDisplayTransformRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<DisplayTransform> DisplayTransformRcPtr;
+
+ class OCIOEXPORT ExponentTransform;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const ExponentTransform> ConstExponentTransformRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<ExponentTransform> ExponentTransformRcPtr;
+
+ class OCIOEXPORT FileTransform;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const FileTransform> ConstFileTransformRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<FileTransform> FileTransformRcPtr;
+
+ class OCIOEXPORT GroupTransform;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const GroupTransform> ConstGroupTransformRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<GroupTransform> GroupTransformRcPtr;
+
+ class OCIOEXPORT LogTransform;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const LogTransform> ConstLogTransformRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<LogTransform> LogTransformRcPtr;
+
+ class OCIOEXPORT LookTransform;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const LookTransform> ConstLookTransformRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<LookTransform> LookTransformRcPtr;
+
+ class OCIOEXPORT MatrixTransform;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const MatrixTransform> ConstMatrixTransformRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<MatrixTransform> MatrixTransformRcPtr;
+
+ class OCIOEXPORT TruelightTransform;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<const TruelightTransform> ConstTruelightTransformRcPtr;
+ //!cpp:type::
+ typedef OCIO_SHARED_PTR<TruelightTransform> TruelightTransformRcPtr;
+
+ template <class T, class U>
+ inline OCIO_SHARED_PTR<T> DynamicPtrCast(OCIO_SHARED_PTR<U> const & ptr)
+ {
+ return OCIO_DYNAMIC_POINTER_CAST<T,U>(ptr);
+ }
+
+
+ //!rst::
+ // Enums
+ // *****
+
+ enum LoggingLevel
+ {
+ LOGGING_LEVEL_NONE = 0,
+ LOGGING_LEVEL_WARNING = 1,
+ LOGGING_LEVEL_INFO = 2,
+ LOGGING_LEVEL_DEBUG = 3,
+ LOGGING_LEVEL_UNKNOWN = 255
+ };
+
+ //!cpp:type::
+ enum ColorSpaceDirection
+ {
+ COLORSPACE_DIR_UNKNOWN = 0,
+ COLORSPACE_DIR_TO_REFERENCE,
+ COLORSPACE_DIR_FROM_REFERENCE
+ };
+
+ //!cpp:type::
+ enum TransformDirection
+ {
+ TRANSFORM_DIR_UNKNOWN = 0,
+ TRANSFORM_DIR_FORWARD,
+ TRANSFORM_DIR_INVERSE
+ };
+
+ //!cpp:type::
+ //
+ // Specify the interpolation type to use
+ // If the specified interpolation type is not supported in the requested
+ // context (for example, using tetrahedral interpolationon 1D luts)
+ // an exception will be throw.
+ //
+ // INTERP_BEST will choose the best interpolation type for the requested
+ // context:
+ //
+ // Lut1D INTERP_BEST: LINEAR
+ // Lut3D INTERP_BEST: LINEAR
+ //
+ // Note: INTERP_BEST is subject to change in minor releases, so if you
+ // care about locking off on a specific interpolation type, we'd recommend
+ // directly specifying it.
+
+ enum Interpolation
+ {
+ INTERP_UNKNOWN = 0,
+ INTERP_NEAREST = 1, //! nearest neighbor in all dimensions
+ INTERP_LINEAR = 2, //! linear interpolation in all dimensions
+ INTERP_TETRAHEDRAL = 3, //! tetrahedral interpolation in all directions
+ INTERP_BEST = 255 //! the 'best' suitable interpolation type
+ };
+
+ //!cpp:type::
+ enum BitDepth {
+ BIT_DEPTH_UNKNOWN = 0,
+ BIT_DEPTH_UINT8,
+ BIT_DEPTH_UINT10,
+ BIT_DEPTH_UINT12,
+ BIT_DEPTH_UINT14,
+ BIT_DEPTH_UINT16,
+ BIT_DEPTH_UINT32,
+ BIT_DEPTH_F16,
+ BIT_DEPTH_F32
+ };
+
+ //!cpp:type::
+ enum Allocation {
+ ALLOCATION_UNKNOWN = 0,
+ ALLOCATION_UNIFORM,
+ ALLOCATION_LG2
+ };
+
+ //!cpp:type:: Used when there is a choice of hardware shader language.
+ enum GpuLanguage
+ {
+ GPU_LANGUAGE_UNKNOWN = 0,
+ GPU_LANGUAGE_CG, ///< Nvidia Cg shader
+ GPU_LANGUAGE_GLSL_1_0, ///< OpenGL Shading Language
+ GPU_LANGUAGE_GLSL_1_3 ///< OpenGL Shading Language
+ };
+
+
+ //!rst::
+ // Conversion
+ // **********
+
+ //!cpp:function::
+ extern OCIOEXPORT const char * BoolToString(bool val);
+ //!cpp:function::
+ extern OCIOEXPORT bool BoolFromString(const char * s);
+
+ //!cpp:function::
+ extern OCIOEXPORT const char * LoggingLevelToString(LoggingLevel level);
+ //!cpp:function::
+ extern OCIOEXPORT LoggingLevel LoggingLevelFromString(const char * s);
+
+ //!cpp:function::
+ extern OCIOEXPORT const char * TransformDirectionToString(TransformDirection dir);
+ //!cpp:function::
+ extern OCIOEXPORT TransformDirection TransformDirectionFromString(const char * s);
+
+ //!cpp:function::
+ extern OCIOEXPORT TransformDirection GetInverseTransformDirection(TransformDirection dir);
+ //!cpp:function::
+ extern OCIOEXPORT TransformDirection CombineTransformDirections(TransformDirection d1,
+ TransformDirection d2);
+
+ //!cpp:function::
+ extern OCIOEXPORT const char * ColorSpaceDirectionToString(ColorSpaceDirection dir);
+ //!cpp:function::
+ extern OCIOEXPORT ColorSpaceDirection ColorSpaceDirectionFromString(const char * s);
+
+ //!cpp:function::
+ extern OCIOEXPORT const char * BitDepthToString(BitDepth bitDepth);
+ //!cpp:function::
+ extern OCIOEXPORT BitDepth BitDepthFromString(const char * s);
+ //!cpp:function::
+ extern OCIOEXPORT bool BitDepthIsFloat(BitDepth bitDepth);
+ //!cpp:function::
+ extern OCIOEXPORT int BitDepthToInt(BitDepth bitDepth);
+
+ //!cpp:function::
+ extern OCIOEXPORT const char * AllocationToString(Allocation allocation);
+ //!cpp:function::
+ extern OCIOEXPORT Allocation AllocationFromString(const char * s);
+
+ //!cpp:function::
+ extern OCIOEXPORT const char * InterpolationToString(Interpolation interp);
+ //!cpp:function::
+ extern OCIOEXPORT Interpolation InterpolationFromString(const char * s);
+
+ //!cpp:function::
+ extern OCIOEXPORT const char * GpuLanguageToString(GpuLanguage language);
+ //!cpp:function::
+ extern OCIOEXPORT GpuLanguage GpuLanguageFromString(const char * s);
+
+
+ /*!rst::
+ Roles
+ *****
+
+ ColorSpace Roles are used so that plugins, in addition to this API can have
+ abstract ways of asking for common colorspaces, without referring to them
+ by hardcoded names.
+
+ Internal::
+
+ GetGPUDisplayTransform - (ROLE_SCENE_LINEAR (fstop exposure))
+ (ROLE_COLOR_TIMING (ASCColorCorrection))
+
+ External Plugins (currently known)::
+
+ Colorpicker UIs - (ROLE_COLOR_PICKING)
+ Compositor LogConvert - (ROLE_SCENE_LINEAR, ROLE_COMPOSITING_LOG)
+
+ */
+
+ //!rst::
+ // .. c:var:: const char* ROLE_DEFAULT
+ //
+ // "default"
+ extern OCIOEXPORT const char * ROLE_DEFAULT;
+ //!rst::
+ // .. c:var:: const char* ROLE_REFERENCE
+ //
+ // "reference"
+ extern OCIOEXPORT const char * ROLE_REFERENCE;
+ //!rst::
+ // .. c:var:: const char* ROLE_DATA
+ //
+ // "data"
+ extern OCIOEXPORT const char * ROLE_DATA;
+ //!rst::
+ // .. c:var:: const char* ROLE_COLOR_PICKING
+ //
+ // "color_picking"
+ extern OCIOEXPORT const char * ROLE_COLOR_PICKING;
+ //!rst::
+ // .. c:var:: const char* ROLE_SCENE_LINEAR
+ //
+ // "scene_linear"
+ extern OCIOEXPORT const char * ROLE_SCENE_LINEAR;
+ //!rst::
+ // .. c:var:: const char* ROLE_COMPOSITING_LOG
+ //
+ // "compositing_log"
+ extern OCIOEXPORT const char * ROLE_COMPOSITING_LOG;
+ //!rst::
+ // .. c:var:: const char* ROLE_COLOR_TIMING
+ //
+ // "color_timing"
+ extern OCIOEXPORT const char * ROLE_COLOR_TIMING;
+ //!rst::
+ // .. c:var:: const char* ROLE_TEXTURE_PAINT
+ //
+ // This role defines the transform for painting textures. In some
+ // workflows this is just a inverse display gamma with some limits
+ extern OCIOEXPORT const char * ROLE_TEXTURE_PAINT;
+ //!rst::
+ // .. c:var:: const char* ROLE_MATTE_PAINT
+ //
+ // This role defines the transform for matte painting. In some workflows
+ // this is a 1D HDR to LDR allocation. It is normally combined with
+ // another display transform in the host app for preview.
+ extern OCIOEXPORT const char * ROLE_MATTE_PAINT;
+
+}
+OCIO_NAMESPACE_EXIT
+
+#endif