20 AtChannelLayout(uint8_t ct, uint8_t t,
size_t x,
size_t y) : channel_type(ct), type(t), x_stride(x), y_stride(y) { }
40 void (*ColorManagerGetCustomAttributes)(
AtNode*,
AtString,
int&,
const char**);
43 int (*ColorManagerGetNumFamilies)(
AtNode*);
49#define AI_COLOR_MANAGER_NODE_EXPORT_METHODS(tag) \
50AI_INSTANCE_COMMON_METHODS \
51color_manager_transform; \
52color_manager_get_defaults; \
53color_manager_get_chromaticities; \
54color_manager_get_custom_attributes; \
55color_manager_get_num_color_spaces; \
56color_manager_get_color_space_name_by_index; \
57static AtColorManagerNodeMethods ai_color_manager_mtds = { \
58 ColorManagerTransform, \
59 ColorManagerGetDefaults, \
60 ColorManagerGetChromaticities, \
61 ColorManagerGetCustomAttributes, \
62 ColorManagerGetNumColorSpaces, \
63 ColorManagerGetColorSpaceNameByIndex, \
68static AtNodeMethods ai_node_mtds = { \
70 &ai_color_manager_mtds \
72const AtNodeMethods *tag = &ai_node_mtds;
88#define color_manager_transform \
89static bool ColorManagerTransform(AtNode* node, AtString color_space, \
90 bool is_output, bool dither, \
92 void* src, const AtChannelLayout* src_layout, \
93 void* dst, const AtChannelLayout* dst_layout)
100#define color_manager_get_defaults \
101static void ColorManagerGetDefaults(AtNode* node, AtString &sRGB, AtString &linear)
107#define color_manager_get_chromaticities \
108static bool ColorManagerGetChromaticities(AtNode* node, AtString space, float *chromaticities)
112#define color_manager_get_custom_attributes \
113static void ColorManagerGetCustomAttributes(AtNode* node, AtString space, int &num, const char **attributes)
119#define color_manager_get_num_color_spaces \
120static int ColorManagerGetNumColorSpaces(AtNode *node, AtString family)
126#define color_manager_get_color_space_name_by_index \
127static AtString ColorManagerGetColorSpaceNameByIndex(AtNode *node, int i, AtString family)
133#define color_manager_get_num_families \
134static int ColorManagerGetNumFamilies(AtNode *node); \
135AI_OPTIONAL_METHOD_INSTALL(ai_color_manager_mtds, ColorManagerGetNumFamilies) \
136static int ColorManagerGetNumFamilies(AtNode *node)
142#define color_manager_get_family_name_by_index \
143static AtString ColorManagerGetFamilyNameByIndex(AtNode *node, int i); \
144AI_OPTIONAL_METHOD_INSTALL(ai_color_manager_mtds, ColorManagerGetFamilyNameByIndex) \
145static AtString ColorManagerGetFamilyNameByIndex(AtNode *node, int i)
151#define color_manager_color_space_is_linear \
152static bool ColorManagerColorSpaceIsLinear(AtNode *node, AtString cs); \
153AI_OPTIONAL_METHOD_INSTALL(ai_color_manager_mtds, ColorManagerColorSpaceIsLinear) \
154static bool ColorManagerColorSpaceIsLinear(AtNode *node, AtString cs)
159 bool is_output =
true,
bool dither =
false,
DLL export prefix for API functions (necessary for multi-platform development)
Axis-aligned bounding box types and utilities.
AtNode struct and methods.
Arnold String allows for fast string comparisons.
Definition: ai_string.h:46
AI_API bool AiColorManagerGetChromaticities(AtNode *node, AtString space, float *chromaticities)
Get the chromaticities for a color space.
Definition: ai_color_managers.cpp:233
AI_API int AiColorManagerGetNumColorSpaces(AtNode *node, AtString family=AtString())
Get how many color spaces are available (for a "family" if specified)
Definition: ai_color_managers.cpp:301
AI_API AtString AiColorManagerGetColorSpaceNameByIndex(AtNode *node, int i, AtString family=AtString())
Get the name of a color space by index (for a "family" if specified)
Definition: ai_color_managers.cpp:332
AI_API bool AiColorManagerColorSpaceIsLinear(AtNode *node, AtString cs)
Return if a given color space is linear according to the color manager.
Definition: ai_color_managers.cpp:415
AI_API AtString AiColorManagerGetFamilyNameByIndex(AtNode *node, int i)
Get the name of a color space family by index.
Definition: ai_color_managers.cpp:388
AI_API void AiColorManagerGetDefaults(AtNode *node, AtString &sRGB, AtString &linear)
Get the default linear color space used for rendering and for narrow image formats IO.
Definition: ai_color_managers.cpp:194
AI_API int AiColorManagerGetNumFamilies(AtNode *node)
Get how many color space families are available.
Definition: ai_color_managers.cpp:361
AI_API bool AiColorManagerTransform(AtNode *node, AtString name, bool is_output=true, bool dither=false, const AtBBox2 *roi=NULL, void *src=NULL, const AtChannelLayout *src_layout=NULL, void *dst=NULL, const AtChannelLayout *dst_layout=NULL)
Transform to or from the specified color space.
Definition: ai_color_managers.cpp:52
AI_API void AiColorManagerGetCustomAttributes(AtNode *node, AtString space, int &num, const char **attributes)
Get custom attributes to include in output file for the given color space, this includes ICC profile,...
Definition: ai_color_managers.cpp:268
2D axis-aligned bounding box (uses integers)
Definition: ai_bbox.h:169
Definition: ai_color_managers.h:19
Color Manager Node methods structure.
Definition: ai_color_managers.h:35
This represents a node in Arnold.