Blender  V3.3
BLI_math_color_blend.h
Go to the documentation of this file.
1 /* SPDX-License-Identifier: GPL-2.0-or-later
2  * Copyright 2001-2002 NaN Holding BV. All rights reserved. */
3 
4 #pragma once
5 
10 #include "BLI_math_inline.h"
11 
12 #ifdef __cplusplus
13 extern "C" {
14 #endif
15 
16 /******************** Blending Modes **********************
17  * - byte function assume straight alpha
18  * - float functions assume premultiplied alpha
19  */
20 
21 MINLINE void blend_color_mix_byte(unsigned char dst[4],
22  const unsigned char src1[4],
23  const unsigned char src2[4]);
24 MINLINE void blend_color_add_byte(unsigned char dst[4],
25  const unsigned char src1[4],
26  const unsigned char src2[4]);
27 MINLINE void blend_color_sub_byte(unsigned char dst[4],
28  const unsigned char src1[4],
29  const unsigned char src2[4]);
30 MINLINE void blend_color_mul_byte(unsigned char dst[4],
31  const unsigned char src1[4],
32  const unsigned char src2[4]);
33 MINLINE void blend_color_lighten_byte(unsigned char dst[4],
34  const unsigned char src1[4],
35  const unsigned char src2[4]);
36 MINLINE void blend_color_darken_byte(unsigned char dst[4],
37  const unsigned char src1[4],
38  const unsigned char src2[4]);
39 MINLINE void blend_color_erase_alpha_byte(unsigned char dst[4],
40  const unsigned char src1[4],
41  const unsigned char src2[4]);
42 MINLINE void blend_color_add_alpha_byte(unsigned char dst[4],
43  const unsigned char src1[4],
44  const unsigned char src2[4]);
45 
46 MINLINE void blend_color_overlay_byte(unsigned char dst[4],
47  const uchar src1[4],
48  const uchar src2[4]);
49 MINLINE void blend_color_hardlight_byte(unsigned char dst[4],
50  const uchar src1[4],
51  const uchar src2[4]);
52 MINLINE void blend_color_burn_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4]);
53 MINLINE void blend_color_linearburn_byte(unsigned char dst[4],
54  const uchar src1[4],
55  const uchar src2[4]);
56 MINLINE void blend_color_dodge_byte(unsigned char dst[4],
57  const uchar src1[4],
58  const uchar src2[4]);
59 MINLINE void blend_color_screen_byte(unsigned char dst[4],
60  const uchar src1[4],
61  const uchar src2[4]);
62 MINLINE void blend_color_softlight_byte(unsigned char dst[4],
63  const uchar src1[4],
64  const uchar src2[4]);
65 MINLINE void blend_color_pinlight_byte(unsigned char dst[4],
66  const uchar src1[4],
67  const uchar src2[4]);
68 MINLINE void blend_color_linearlight_byte(unsigned char dst[4],
69  const uchar src1[4],
70  const uchar src2[4]);
71 MINLINE void blend_color_vividlight_byte(unsigned char dst[4],
72  const uchar src1[4],
73  const uchar src2[4]);
74 MINLINE void blend_color_difference_byte(unsigned char dst[4],
75  const uchar src1[4],
76  const uchar src2[4]);
77 MINLINE void blend_color_exclusion_byte(unsigned char dst[4],
78  const uchar src1[4],
79  const uchar src2[4]);
80 MINLINE void blend_color_color_byte(unsigned char dst[4],
81  const uchar src1[4],
82  const uchar src2[4]);
83 MINLINE void blend_color_hue_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4]);
84 MINLINE void blend_color_saturation_byte(unsigned char dst[4],
85  const uchar src1[4],
86  const uchar src2[4]);
87 MINLINE void blend_color_luminosity_byte(unsigned char dst[4],
88  const uchar src1[4],
89  const uchar src2[4]);
90 
91 MINLINE void blend_color_interpolate_byte(unsigned char dst[4],
92  const unsigned char src1[4],
93  const unsigned char src2[4],
94  float t);
95 
96 MINLINE void blend_color_mix_float(float dst[4], const float src1[4], const float src2[4]);
97 MINLINE void blend_color_add_float(float dst[4], const float src1[4], const float src2[4]);
98 MINLINE void blend_color_sub_float(float dst[4], const float src1[4], const float src2[4]);
99 MINLINE void blend_color_mul_float(float dst[4], const float src1[4], const float src2[4]);
100 MINLINE void blend_color_lighten_float(float dst[4], const float src1[4], const float src2[4]);
101 MINLINE void blend_color_darken_float(float dst[4], const float src1[4], const float src2[4]);
102 MINLINE void blend_color_erase_alpha_float(float dst[4], const float src1[4], const float src2[4]);
103 MINLINE void blend_color_add_alpha_float(float dst[4], const float src1[4], const float src2[4]);
104 
105 MINLINE void blend_color_overlay_float(float dst[4], const float src1[4], const float src2[4]);
106 MINLINE void blend_color_hardlight_float(float dst[4], const float src1[4], const float src2[4]);
107 MINLINE void blend_color_burn_float(float dst[4], const float src1[4], const float src2[4]);
108 MINLINE void blend_color_linearburn_float(float dst[4], const float src1[4], const float src2[4]);
109 MINLINE void blend_color_dodge_float(float dst[4], const float src1[4], const float src2[4]);
110 MINLINE void blend_color_screen_float(float dst[4], const float src1[4], const float src2[4]);
111 MINLINE void blend_color_softlight_float(float dst[4], const float src1[4], const float src2[4]);
112 MINLINE void blend_color_pinlight_float(float dst[4], const float src1[4], const float src2[4]);
113 MINLINE void blend_color_linearlight_float(float dst[4], const float src1[4], const float src2[4]);
114 MINLINE void blend_color_vividlight_float(float dst[4], const float src1[4], const float src2[4]);
115 MINLINE void blend_color_difference_float(float dst[4], const float src1[4], const float src2[4]);
116 MINLINE void blend_color_exclusion_float(float dst[4], const float src1[4], const float src2[4]);
117 MINLINE void blend_color_color_float(float dst[4], const float src1[4], const float src2[4]);
118 MINLINE void blend_color_hue_float(float dst[4], const float src1[4], const float src2[4]);
119 MINLINE void blend_color_saturation_float(float dst[4], const float src1[4], const float src2[4]);
120 MINLINE void blend_color_luminosity_float(float dst[4], const float src1[4], const float src2[4]);
121 
122 MINLINE void blend_color_interpolate_float(float dst[4],
123  const float src1[4],
124  const float src2[4],
125  float t);
126 
127 #if BLI_MATH_DO_INLINE
129 #endif
130 
131 #ifdef __cplusplus
132 }
133 #endif
MINLINE void blend_color_add_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_exclusion_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_linearburn_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4])
MINLINE void blend_color_overlay_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_saturation_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4])
MINLINE void blend_color_interpolate_byte(unsigned char dst[4], const unsigned char src1[4], const unsigned char src2[4], float t)
MINLINE void blend_color_burn_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_erase_alpha_byte(unsigned char dst[4], const unsigned char src1[4], const unsigned char src2[4])
MINLINE void blend_color_color_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_linearlight_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_sub_byte(unsigned char dst[4], const unsigned char src1[4], const unsigned char src2[4])
MINLINE void blend_color_saturation_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_hue_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_difference_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_dodge_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_luminosity_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4])
MINLINE void blend_color_pinlight_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_mul_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_pinlight_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4])
MINLINE void blend_color_erase_alpha_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_screen_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_screen_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4])
MINLINE void blend_color_add_alpha_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_vividlight_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4])
MINLINE void blend_color_linearburn_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_mul_byte(unsigned char dst[4], const unsigned char src1[4], const unsigned char src2[4])
MINLINE void blend_color_vividlight_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_darken_byte(unsigned char dst[4], const unsigned char src1[4], const unsigned char src2[4])
MINLINE void blend_color_mix_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_luminosity_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_difference_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4])
MINLINE void blend_color_burn_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4])
MINLINE void blend_color_add_alpha_byte(unsigned char dst[4], const unsigned char src1[4], const unsigned char src2[4])
MINLINE void blend_color_color_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4])
MINLINE void blend_color_overlay_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4])
MINLINE void blend_color_dodge_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4])
MINLINE void blend_color_hardlight_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4])
MINLINE void blend_color_sub_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_darken_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_softlight_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4])
MINLINE void blend_color_add_byte(unsigned char dst[4], const unsigned char src1[4], const unsigned char src2[4])
MINLINE void blend_color_hue_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4])
MINLINE void blend_color_lighten_byte(unsigned char dst[4], const unsigned char src1[4], const unsigned char src2[4])
MINLINE void blend_color_exclusion_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4])
MINLINE void blend_color_mix_byte(unsigned char dst[4], const unsigned char src1[4], const unsigned char src2[4])
MINLINE void blend_color_hardlight_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_linearlight_byte(unsigned char dst[4], const uchar src1[4], const uchar src2[4])
MINLINE void blend_color_lighten_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_softlight_float(float dst[4], const float src1[4], const float src2[4])
MINLINE void blend_color_interpolate_float(float dst[4], const float src1[4], const float src2[4], float t)
#define MINLINE
unsigned char uchar
Definition: BLI_sys_types.h:70
_GL_VOID GLfloat value _GL_VOID_RET _GL_VOID const GLuint GLboolean *residences _GL_BOOL_RET _GL_VOID GLsizei GLfloat GLfloat GLfloat GLfloat const GLubyte *bitmap _GL_VOID_RET _GL_VOID GLenum const void *lists _GL_VOID_RET _GL_VOID const GLdouble *equation _GL_VOID_RET _GL_VOID GLdouble GLdouble blue _GL_VOID_RET _GL_VOID GLfloat GLfloat blue _GL_VOID_RET _GL_VOID GLint GLint blue _GL_VOID_RET _GL_VOID GLshort GLshort blue _GL_VOID_RET _GL_VOID GLubyte GLubyte blue _GL_VOID_RET _GL_VOID GLuint GLuint blue _GL_VOID_RET _GL_VOID GLushort GLushort blue _GL_VOID_RET _GL_VOID GLbyte GLbyte GLbyte alpha _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble alpha _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat alpha _GL_VOID_RET _GL_VOID GLint GLint GLint alpha _GL_VOID_RET _GL_VOID GLshort GLshort GLshort alpha _GL_VOID_RET _GL_VOID GLubyte GLubyte GLubyte alpha _GL_VOID_RET _GL_VOID GLuint GLuint GLuint alpha _GL_VOID_RET _GL_VOID GLushort GLushort GLushort alpha _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLint GLsizei GLsizei GLenum type _GL_VOID_RET _GL_VOID GLsizei GLenum GLenum const void *pixels _GL_VOID_RET _GL_VOID const void *pointer _GL_VOID_RET _GL_VOID GLdouble v _GL_VOID_RET _GL_VOID GLfloat v _GL_VOID_RET _GL_VOID GLint GLint i2 _GL_VOID_RET _GL_VOID GLint j _GL_VOID_RET _GL_VOID GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble GLdouble GLdouble zFar _GL_VOID_RET _GL_UINT GLdouble *equation _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLenum GLfloat *v _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLfloat *values _GL_VOID_RET _GL_VOID GLushort *values _GL_VOID_RET _GL_VOID GLenum GLfloat *params _GL_VOID_RET _GL_VOID GLenum GLdouble *params _GL_VOID_RET _GL_VOID GLenum GLint *params _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_BOOL GLfloat param _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLushort pattern _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLint GLdouble GLdouble GLint GLint const GLdouble *points _GL_VOID_RET _GL_VOID GLdouble GLdouble u2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLint GLdouble GLdouble v2 _GL_VOID_RET _GL_VOID GLenum GLfloat param _GL_VOID_RET _GL_VOID GLenum GLint param _GL_VOID_RET _GL_VOID GLenum mode _GL_VOID_RET _GL_VOID GLdouble GLdouble nz _GL_VOID_RET _GL_VOID GLfloat GLfloat nz _GL_VOID_RET _GL_VOID GLint GLint nz _GL_VOID_RET _GL_VOID GLshort GLshort nz _GL_VOID_RET _GL_VOID GLsizei const void *pointer _GL_VOID_RET _GL_VOID GLsizei const GLfloat *values _GL_VOID_RET _GL_VOID GLsizei const GLushort *values _GL_VOID_RET _GL_VOID GLint param _GL_VOID_RET _GL_VOID const GLuint const GLclampf *priorities _GL_VOID_RET _GL_VOID GLdouble y _GL_VOID_RET _GL_VOID GLfloat y _GL_VOID_RET _GL_VOID GLint y _GL_VOID_RET _GL_VOID GLshort y _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLfloat GLfloat z _GL_VOID_RET _GL_VOID GLint GLint z _GL_VOID_RET _GL_VOID GLshort GLshort z _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble w _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat w _GL_VOID_RET _GL_VOID GLint GLint GLint w _GL_VOID_RET _GL_VOID GLshort GLshort GLshort w _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble y2 _GL_VOID_RET _GL_VOID GLfloat GLfloat GLfloat y2 _GL_VOID_RET _GL_VOID GLint GLint GLint y2 _GL_VOID_RET _GL_VOID GLshort GLshort GLshort y2 _GL_VOID_RET _GL_VOID GLdouble GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLdouble GLdouble z _GL_VOID_RET _GL_VOID GLuint *buffer _GL_VOID_RET _GL_VOID GLdouble t _GL_VOID_RET _GL_VOID GLfloat t _GL_VOID_RET _GL_VOID GLint t _GL_VOID_RET _GL_VOID GLshort t _GL_VOID_RET _GL_VOID GLdouble t