1 /****************************************************************************
5 * FreeType's glyph color management (body).
7 * Copyright (C) 2018-2023 by
8 * David Turner, Robert Wilhelm, and Werner Lemberg.
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.
19 #include <freetype/internal/ftdebug.h>
20 #include <freetype/internal/sfnt.h>
21 #include <freetype/internal/tttypes.h>
22 #include <freetype/ftcolor.h>
25 #ifdef TT_CONFIG_OPTION_COLOR_LAYERS
28 const FT_Palette_Data null_palette_data = { 0, NULL, NULL, 0, NULL };
31 /* documentation is in ftcolor.h */
33 FT_EXPORT_DEF( FT_Error )
34 FT_Palette_Data_Get( FT_Face face,
35 FT_Palette_Data *apalette_data )
38 return FT_THROW( Invalid_Face_Handle );
40 return FT_THROW( Invalid_Argument );
42 if ( FT_IS_SFNT( face ) )
43 *apalette_data = ( (TT_Face)face )->palette_data;
45 *apalette_data = null_palette_data;
51 /* documentation is in ftcolor.h */
53 FT_EXPORT_DEF( FT_Error )
54 FT_Palette_Select( FT_Face face,
55 FT_UShort palette_index,
65 return FT_THROW( Invalid_Face_Handle );
67 if ( !FT_IS_SFNT( face ) )
75 ttface = (TT_Face)face;
76 sfnt = (SFNT_Service)ttface->sfnt;
78 error = sfnt->set_palette( ttface, palette_index );
82 ttface->palette_index = palette_index;
85 *apalette = ttface->palette;
91 /* documentation is in ftcolor.h */
93 FT_EXPORT_DEF( FT_Error )
94 FT_Palette_Set_Foreground_Color( FT_Face face,
95 FT_Color foreground_color )
101 return FT_THROW( Invalid_Face_Handle );
103 if ( !FT_IS_SFNT( face ) )
106 ttface = (TT_Face)face;
108 ttface->foreground_color = foreground_color;
109 ttface->have_foreground_color = 1;
114 #else /* !TT_CONFIG_OPTION_COLOR_LAYERS */
116 FT_EXPORT_DEF( FT_Error )
117 FT_Palette_Data_Get( FT_Face face,
118 FT_Palette_Data *apalette_data )
121 FT_UNUSED( apalette_data );
124 return FT_THROW( Unimplemented_Feature );
128 FT_EXPORT_DEF( FT_Error )
129 FT_Palette_Select( FT_Face face,
130 FT_UShort palette_index,
131 FT_Color* *apalette )
134 FT_UNUSED( palette_index );
135 FT_UNUSED( apalette );
138 return FT_THROW( Unimplemented_Feature );
142 FT_EXPORT_DEF( FT_Error )
143 FT_Palette_Set_Foreground_Color( FT_Face face,
144 FT_Color foreground_color )
147 FT_UNUSED( foreground_color );
150 return FT_THROW( Unimplemented_Feature );
153 #endif /* !TT_CONFIG_OPTION_COLOR_LAYERS */