Finish CPAL/COLR support (3/4).
* src/base/ftcolor.c: Include FT_INTERNAL_SFNT_H. (FT_Palette_Select, FT_Palette_Set_Foreground_Color): Implement functions.
This commit is contained in:
parent
b85d4e8f04
commit
45145d348f
|
@ -1,3 +1,11 @@
|
|||
2018-06-12 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
Finish CPAL/COLR support (3/4).
|
||||
|
||||
* src/base/ftcolor.c: Include FT_INTERNAL_SFNT_H.
|
||||
(FT_Palette_Select, FT_Palette_Set_Foreground_Color): Implement
|
||||
functions.
|
||||
|
||||
2018-06-12 Werner Lemberg <wl@gnu.org>
|
||||
|
||||
Finish CPAL/COLR support (2/4).
|
||||
|
|
|
@ -533,9 +533,12 @@ FT_BEGIN_HEADER
|
|||
*
|
||||
* @Description:
|
||||
* Blend the bitmap in `new_glyph' into `base_glyph' using the color
|
||||
* specified by `color_index'.
|
||||
*
|
||||
* XXX: Handle foregound color
|
||||
* specified by `color_index'. If `color_index' is 0xFFFF, use
|
||||
* `face->foreground_color' if `face->have_foreground_color' is set.
|
||||
* Otherwise check `face->palette_data.palette_type': If present and
|
||||
* @FT_PALETTE_USABLE_WITH_DARK_BACKGROUND is set, use BGRA value
|
||||
* 0xFFFFFFFF (white opaque). Otherwise use BGRA value 0x000000FF
|
||||
* (black opaque).
|
||||
*
|
||||
* @Input:
|
||||
* face ::
|
||||
|
|
|
@ -18,6 +18,7 @@
|
|||
|
||||
#include <ft2build.h>
|
||||
#include FT_INTERNAL_DEBUG_H
|
||||
#include FT_INTERNAL_SFNT_H
|
||||
#include FT_INTERNAL_TRUETYPE_TYPES_H
|
||||
#include FT_COLOR_H
|
||||
|
||||
|
@ -47,6 +48,70 @@
|
|||
return FT_Err_Ok;
|
||||
}
|
||||
|
||||
|
||||
/* documentation is in ftcolor.h */
|
||||
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_Palette_Select( FT_Face face,
|
||||
FT_UShort palette_index,
|
||||
FT_Color* *apalette )
|
||||
{
|
||||
FT_Error error;
|
||||
|
||||
TT_Face ttface;
|
||||
SFNT_Service sfnt;
|
||||
|
||||
|
||||
if ( !face )
|
||||
return FT_THROW( Invalid_Face_Handle );
|
||||
|
||||
if ( !FT_IS_SFNT( face ) )
|
||||
{
|
||||
if ( apalette )
|
||||
*apalette = NULL;
|
||||
|
||||
return FT_Err_Ok;
|
||||
}
|
||||
|
||||
ttface = (TT_Face)face;
|
||||
sfnt = (SFNT_Service)ttface->sfnt;
|
||||
|
||||
error = sfnt->set_palette( ttface, palette_index );
|
||||
if ( error )
|
||||
return error;
|
||||
|
||||
ttface->palette_index = palette_index;
|
||||
|
||||
if ( apalette )
|
||||
*apalette = ttface->palette;
|
||||
|
||||
return FT_Err_Ok;
|
||||
}
|
||||
|
||||
|
||||
/* documentation is in ftcolor.h */
|
||||
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_Palette_Set_Foreground_Color( FT_Face face,
|
||||
FT_Color foreground_color )
|
||||
{
|
||||
TT_Face ttface;
|
||||
|
||||
|
||||
if ( !face )
|
||||
return FT_THROW( Invalid_Face_Handle );
|
||||
|
||||
if ( !FT_IS_SFNT( face ) )
|
||||
return FT_Err_Ok;
|
||||
|
||||
ttface = (TT_Face)face;
|
||||
|
||||
ttface->foreground_color = foreground_color;
|
||||
ttface->have_foreground_color = 1;
|
||||
|
||||
return FT_Err_Ok;
|
||||
}
|
||||
|
||||
#else /* !TT_CONFIG_OPTION_COLOR_LAYERS */
|
||||
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
|
@ -60,6 +125,29 @@
|
|||
return FT_THROW( Unimplemented_Feature );
|
||||
}
|
||||
|
||||
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_Palette_Select( FT_Face face,
|
||||
FT_UShort palette_index,
|
||||
FT_Color* *apalette )
|
||||
{
|
||||
FT_UNUSED( face );
|
||||
FT_UNUSED( palette_index );
|
||||
FT_UNUSED( apalette );
|
||||
|
||||
|
||||
return FT_THROW( Unimplemented_Feature );
|
||||
}
|
||||
|
||||
|
||||
FT_EXPORT_DEF( FT_Error )
|
||||
FT_Palette_Set_Foreground_Color( FT_Face face,
|
||||
FT_Color foreground_color )
|
||||
{
|
||||
FT_UNUSED( face );
|
||||
FT_UNUSED( foreground_color );
|
||||
}
|
||||
|
||||
#endif /* !TT_CONFIG_OPTION_COLOR_LAYERS */
|
||||
|
||||
|
||||
|
|
Loading…
Reference in New Issue