ReactOS 0.4.16-dev-2354-g16de117
ftcolor.c
Go to the documentation of this file.
1/****************************************************************************
2 *
3 * ftcolor.c
4 *
5 * FreeType's glyph color management (body).
6 *
7 * Copyright (C) 2018-2020 by
8 * David Turner, Robert Wilhelm, and Werner Lemberg.
9 *
10 * This file is part of the FreeType project, and may only be used,
11 * modified, and distributed under the terms of the FreeType project
12 * license, LICENSE.TXT. By continuing to use, modify, or distribute
13 * this file you indicate that you have read the license and
14 * understand and accept it fully.
15 *
16 */
17
18
22#include <freetype/ftcolor.h>
23
24
25#ifdef TT_CONFIG_OPTION_COLOR_LAYERS
26
27 static
28 const FT_Palette_Data null_palette_data = { 0, NULL, NULL, 0, NULL };
29
30
31 /* documentation is in ftcolor.h */
32
35 FT_Palette_Data *apalette_data )
36 {
37 if ( !face )
38 return FT_THROW( Invalid_Face_Handle );
39 if ( !apalette_data)
40 return FT_THROW( Invalid_Argument );
41
42 if ( FT_IS_SFNT( face ) )
43 *apalette_data = ( (TT_Face)face )->palette_data;
44 else
45 *apalette_data = null_palette_data;
46
47 return FT_Err_Ok;
48 }
49
50
51 /* documentation is in ftcolor.h */
52
55 FT_UShort palette_index,
56 FT_Color* *apalette )
57 {
59
60 TT_Face ttface;
62
63
64 if ( !face )
65 return FT_THROW( Invalid_Face_Handle );
66
67 if ( !FT_IS_SFNT( face ) )
68 {
69 if ( apalette )
70 *apalette = NULL;
71
72 return FT_Err_Ok;
73 }
74
75 ttface = (TT_Face)face;
76 sfnt = (SFNT_Service)ttface->sfnt;
77
78 error = sfnt->set_palette( ttface, palette_index );
79 if ( error )
80 return error;
81
82 ttface->palette_index = palette_index;
83
84 if ( apalette )
85 *apalette = ttface->palette;
86
87 return FT_Err_Ok;
88 }
89
90
91 /* documentation is in ftcolor.h */
92
95 FT_Color foreground_color )
96 {
97 TT_Face ttface;
98
99
100 if ( !face )
101 return FT_THROW( Invalid_Face_Handle );
102
103 if ( !FT_IS_SFNT( face ) )
104 return FT_Err_Ok;
105
106 ttface = (TT_Face)face;
107
108 ttface->foreground_color = foreground_color;
109 ttface->have_foreground_color = 1;
110
111 return FT_Err_Ok;
112 }
113
114#else /* !TT_CONFIG_OPTION_COLOR_LAYERS */
115
118 FT_Palette_Data *apalette_data )
119 {
120 FT_UNUSED( face );
121 FT_UNUSED( apalette_data );
122
123
124 return FT_THROW( Unimplemented_Feature );
125 }
126
127
130 FT_UShort palette_index,
131 FT_Color* *apalette )
132 {
133 FT_UNUSED( face );
134 FT_UNUSED( palette_index );
135 FT_UNUSED( apalette );
136
137
138 return FT_THROW( Unimplemented_Feature );
139 }
140
141
144 FT_Color foreground_color )
145 {
146 FT_UNUSED( face );
147 FT_UNUSED( foreground_color );
148
149
150 return FT_THROW( Unimplemented_Feature );
151 }
152
153#endif /* !TT_CONFIG_OPTION_COLOR_LAYERS */
154
155
156/* END */
#define FT_EXPORT_DEF(x)
#define NULL
Definition: types.h:112
#define FT_IS_SFNT(face)
Definition: freetype.h:1290
return FT_Err_Ok
Definition: ftbbox.c:526
FT_Palette_Set_Foreground_Color(FT_Face face, FT_Color foreground_color)
Definition: ftcolor.c:143
FT_Palette_Select(FT_Face face, FT_UShort palette_index, FT_Color **apalette)
Definition: ftcolor.c:129
FT_Palette_Data_Get(FT_Face face, FT_Palette_Data *apalette_data)
Definition: ftcolor.c:117
FT_BEGIN_HEADER struct FT_Color_ FT_Color
#define FT_THROW(e)
Definition: ftdebug.h:243
int FT_Error
Definition: fttypes.h:299
unsigned short FT_UShort
Definition: fttypes.h:209
GLenum GLuint GLint GLenum face
Definition: glext.h:7025
#define error(str)
Definition: mkdosfs.c:1605
#define FT_UNUSED(arg)
SFNT_Interface * SFNT_Service
Definition: sfnt.h:784
TT_Set_Palette_Func set_palette
Definition: sfnt.h:771
FT_UShort palette_index
Definition: tttypes.h:1540
void * sfnt
Definition: tttypes.h:1499
FT_Color foreground_color
Definition: tttypes.h:1543
FT_Bool have_foreground_color
Definition: tttypes.h:1542
FT_Color * palette
Definition: tttypes.h:1541
SFNT_Service sfnt
Definition: ttdriver.c:208
struct TT_FaceRec_ * TT_Face
Definition: tttypes.h:988