sdk-world v2026.11.05
PS2 SDK - world tier (copyleft-allowed, non-essential packages)
Loading...
Searching...
No Matches
ftcolor.c
1/****************************************************************************
2 *
3 * ftcolor.c
4 *
5 * FreeType's glyph color management (body).
6 *
7 * Copyright (C) 2018-2025 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
33 FT_EXPORT_DEF( FT_Error )
34 FT_Palette_Data_Get( FT_Face face,
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
53 FT_EXPORT_DEF( FT_Error )
54 FT_Palette_Select( FT_Face face,
55 FT_UShort palette_index,
56 FT_Color* *apalette )
57 {
58 FT_Error error;
59 TT_Face ttface = (TT_Face)face;
60
61
62 if ( !face )
63 return FT_THROW( Invalid_Face_Handle );
64
65 if ( !FT_IS_SFNT( face ) )
66 {
67 if ( apalette )
68 *apalette = NULL;
69
70 return FT_Err_Ok;
71 }
72
73 if ( palette_index != ttface->palette_index )
74 {
75 SFNT_Service sfnt = (SFNT_Service)ttface->sfnt;
76
77
78 error = sfnt->set_palette( ttface, palette_index );
79 if ( error )
80 return error;
81
82 ttface->palette_index = palette_index;
83 }
84
85 if ( apalette )
86 *apalette = ttface->palette;
87
88 return FT_Err_Ok;
89 }
90
91
92 /* documentation is in ftcolor.h */
93
94 FT_EXPORT_DEF( FT_Error )
95 FT_Palette_Set_Foreground_Color( FT_Face face,
96 FT_Color foreground_color )
97 {
98 TT_Face ttface;
99
100
101 if ( !face )
102 return FT_THROW( Invalid_Face_Handle );
103
104 if ( !FT_IS_SFNT( face ) )
105 return FT_Err_Ok;
106
107 ttface = (TT_Face)face;
108
109 ttface->foreground_color = foreground_color;
110 ttface->have_foreground_color = 1;
111
112 return FT_Err_Ok;
113 }
114
115#else /* !TT_CONFIG_OPTION_COLOR_LAYERS */
116
117 FT_EXPORT_DEF( FT_Error )
118 FT_Palette_Data_Get( FT_Face face,
119 FT_Palette_Data *apalette_data )
120 {
121 FT_UNUSED( face );
122 FT_UNUSED( apalette_data );
123
124
125 return FT_THROW( Unimplemented_Feature );
126 }
127
128
129 FT_EXPORT_DEF( FT_Error )
130 FT_Palette_Select( FT_Face face,
131 FT_UShort palette_index,
132 FT_Color* *apalette )
133 {
134 FT_UNUSED( face );
135 FT_UNUSED( palette_index );
136 FT_UNUSED( apalette );
137
138
139 return FT_THROW( Unimplemented_Feature );
140 }
141
142
143 FT_EXPORT_DEF( FT_Error )
144 FT_Palette_Set_Foreground_Color( FT_Face face,
145 FT_Color foreground_color )
146 {
147 FT_UNUSED( face );
148 FT_UNUSED( foreground_color );
149
150
151 return FT_THROW( Unimplemented_Feature );
152 }
153
154#endif /* !TT_CONFIG_OPTION_COLOR_LAYERS */
155
156
157/* END */