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>
|
2018-06-12 Werner Lemberg <wl@gnu.org>
|
||||||
|
|
||||||
Finish CPAL/COLR support (2/4).
|
Finish CPAL/COLR support (2/4).
|
||||||
|
|
|
@ -533,9 +533,12 @@ FT_BEGIN_HEADER
|
||||||
*
|
*
|
||||||
* @Description:
|
* @Description:
|
||||||
* Blend the bitmap in `new_glyph' into `base_glyph' using the color
|
* Blend the bitmap in `new_glyph' into `base_glyph' using the color
|
||||||
* specified by `color_index'.
|
* specified by `color_index'. If `color_index' is 0xFFFF, use
|
||||||
*
|
* `face->foreground_color' if `face->have_foreground_color' is set.
|
||||||
* XXX: Handle foregound color
|
* 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:
|
* @Input:
|
||||||
* face ::
|
* face ::
|
||||||
|
|
|
@ -18,6 +18,7 @@
|
||||||
|
|
||||||
#include <ft2build.h>
|
#include <ft2build.h>
|
||||||
#include FT_INTERNAL_DEBUG_H
|
#include FT_INTERNAL_DEBUG_H
|
||||||
|
#include FT_INTERNAL_SFNT_H
|
||||||
#include FT_INTERNAL_TRUETYPE_TYPES_H
|
#include FT_INTERNAL_TRUETYPE_TYPES_H
|
||||||
#include FT_COLOR_H
|
#include FT_COLOR_H
|
||||||
|
|
||||||
|
@ -47,6 +48,70 @@
|
||||||
return FT_Err_Ok;
|
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 */
|
#else /* !TT_CONFIG_OPTION_COLOR_LAYERS */
|
||||||
|
|
||||||
FT_EXPORT_DEF( FT_Error )
|
FT_EXPORT_DEF( FT_Error )
|
||||||
|
@ -60,6 +125,29 @@
|
||||||
return FT_THROW( Unimplemented_Feature );
|
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 */
|
#endif /* !TT_CONFIG_OPTION_COLOR_LAYERS */
|
||||||
|
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue