Blender  V3.3
IMB_colormanagement_intern.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2012 Blender Foundation. All rights reserved. */
3 
4 #pragma once
5 
10 #include "BLI_sys_types.h"
11 #include "DNA_listBase.h"
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 struct ImBuf;
18 struct OCIO_ConstCPUProcessorRcPtr;
19 
20 extern float imbuf_luma_coefficients[3];
21 extern float imbuf_scene_linear_to_xyz[3][3];
22 extern float imbuf_xyz_to_scene_linear[3][3];
23 extern float imbuf_scene_linear_to_aces[3][3];
24 extern float imbuf_aces_to_scene_linear[3][3];
25 extern float imbuf_scene_linear_to_rec709[3][3];
26 extern float imbuf_rec709_to_scene_linear[3][3];
27 
28 #define MAX_COLORSPACE_NAME 64
29 #define MAX_COLORSPACE_DESCRIPTION 512
30 
31 typedef struct ColorSpace {
32  struct ColorSpace *next, *prev;
33  int index;
36 
37  struct OCIO_ConstCPUProcessorRcPtr *to_scene_linear;
38  struct OCIO_ConstCPUProcessorRcPtr *from_scene_linear;
39 
42 
44  bool is_data;
45 
46  /* Additional info computed only when needed since it's not cheap. */
47  struct {
48  bool cached;
49  bool is_srgb;
51  } info;
53 
54 typedef struct ColorManagedDisplay {
56  int index;
58  ListBase views; /* LinkData.data -> ColorManagedView */
59 
60  struct OCIO_ConstCPUProcessorRcPtr *to_scene_linear;
61  struct OCIO_ConstCPUProcessorRcPtr *from_scene_linear;
63 
64 typedef struct ColorManagedView {
66  int index;
69 
70 typedef struct ColorManagedLook {
72  int index;
77  bool is_noop;
79 
80 /* ** Initialization / De-initialization ** */
81 
82 void colormanagement_init(void);
83 void colormanagement_exit(void);
84 
85 void colormanage_cache_free(struct ImBuf *ibuf);
86 
87 const char *colormanage_display_get_default_name(void);
92 
93 const char *colormanage_view_get_default_name(const ColorManagedDisplay *display);
95 struct ColorManagedView *colormanage_view_add(const char *name);
98 struct ColorManagedView *colormanage_view_get_named_for_display(const char *display_name,
99  const char *name);
100 
101 struct ColorSpace *colormanage_colorspace_add(const char *name,
102  const char *description,
103  bool is_invertible,
104  bool is_data);
108 
109 struct ColorManagedLook *colormanage_look_add(const char *name,
110  const char *process_space,
111  bool is_noop);
114 
115 void colorspace_set_default_role(char *colorspace, int size, int role);
116 
118 void colormanage_imbuf_make_linear(struct ImBuf *ibuf, const char *from_colorspace);
119 
120 #ifdef __cplusplus
121 }
122 #endif
These structs are the foundation for all linked lists in the library system.
struct ColorManagedLook ColorManagedLook
struct ColorManagedDisplay * colormanage_display_get_default(void)
float imbuf_scene_linear_to_aces[3][3]
void colormanage_cache_free(struct ImBuf *ibuf)
float imbuf_luma_coefficients[3]
struct ColorSpace * colormanage_colorspace_get_roled(int role)
void colormanagement_init(void)
void colormanage_imbuf_set_default_spaces(struct ImBuf *ibuf)
#define MAX_COLORSPACE_NAME
struct ColorSpace * colormanage_colorspace_get_indexed(int index)
float imbuf_rec709_to_scene_linear[3][3]
struct ColorManagedView * colormanage_view_get_default(const ColorManagedDisplay *display)
float imbuf_scene_linear_to_rec709[3][3]
void colormanagement_exit(void)
const char * colormanage_view_get_default_name(const ColorManagedDisplay *display)
struct ColorManagedDisplay * colormanage_display_add(const char *name)
float imbuf_scene_linear_to_xyz[3][3]
void colormanage_imbuf_make_linear(struct ImBuf *ibuf, const char *from_colorspace)
struct ColorManagedView * colormanage_view_add(const char *name)
struct ColorManagedLook * colormanage_look_get_named(const char *name)
struct ColorManagedView * colormanage_view_get_indexed(int index)
float imbuf_xyz_to_scene_linear[3][3]
struct ColorManagedView * colormanage_view_get_named(const char *name)
struct ColorManagedDisplay ColorManagedDisplay
float imbuf_aces_to_scene_linear[3][3]
struct ColorManagedDisplay * colormanage_display_get_indexed(int index)
void colorspace_set_default_role(char *colorspace, int size, int role)
struct ColorManagedView * colormanage_view_get_named_for_display(const char *display_name, const char *name)
struct ColorManagedLook * colormanage_look_get_indexed(int index)
const char * colormanage_display_get_default_name(void)
struct ColorManagedView ColorManagedView
struct ColorSpace ColorSpace
struct ColorManagedDisplay * colormanage_display_get_named(const char *name)
struct ColorSpace * colormanage_colorspace_add(const char *name, const char *description, bool is_invertible, bool is_data)
struct ColorManagedLook * colormanage_look_add(const char *name, const char *process_space, bool is_noop)
struct ColorSpace * colormanage_colorspace_get_named(const char *name)
#define MAX_COLORSPACE_DESCRIPTION
static DBVT_INLINE btScalar size(const btDbvtVolume &a)
Definition: btDbvt.cpp:52
struct ColorManagedDisplay * prev
struct OCIO_ConstCPUProcessorRcPtr * to_scene_linear
char name[MAX_COLORSPACE_NAME]
struct ColorManagedDisplay * next
struct OCIO_ConstCPUProcessorRcPtr * from_scene_linear
char ui_name[MAX_COLORSPACE_NAME]
char view[MAX_COLORSPACE_NAME]
struct ColorManagedLook * next
struct ColorManagedLook * prev
char process_space[MAX_COLORSPACE_NAME]
char name[MAX_COLORSPACE_NAME]
struct ColorManagedView * next
char name[MAX_COLORSPACE_NAME]
struct ColorManagedView * prev
struct ColorSpace * next
struct OCIO_ConstCPUProcessorRcPtr * to_scene_linear
struct ColorSpace * prev
struct OCIO_ConstCPUProcessorRcPtr * from_scene_linear
char(* aliases)[MAX_COLORSPACE_NAME]
char name[MAX_COLORSPACE_NAME]
char description[MAX_COLORSPACE_DESCRIPTION]
struct ColorSpace::@711 info