[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2] master 45145d3 4/6: Finish CPAL/COLR support (3/4).
From: |
Werner LEMBERG |
Subject: |
[freetype2] master 45145d3 4/6: Finish CPAL/COLR support (3/4). |
Date: |
Wed, 13 Jun 2018 00:12:02 -0400 (EDT) |
branch: master
commit 45145d348fd77196d6ae92a2e8f15f671725094e
Author: Werner Lemberg <address@hidden>
Commit: Werner Lemberg <address@hidden>
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.
---
ChangeLog | 8 ++++
include/freetype/internal/sfnt.h | 9 ++--
src/base/ftcolor.c | 88 ++++++++++++++++++++++++++++++++++++++++
3 files changed, 102 insertions(+), 3 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index 604d3e5..c12b068 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,13 @@
2018-06-12 Werner Lemberg <address@hidden>
+ 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 <address@hidden>
+
Finish CPAL/COLR support (2/4).
* src/sfnt/ttcolr.c (tt_face_palette_set): New function.
diff --git a/include/freetype/internal/sfnt.h b/include/freetype/internal/sfnt.h
index 7270d12..aac8e9b 100644
--- a/include/freetype/internal/sfnt.h
+++ b/include/freetype/internal/sfnt.h
@@ -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 ::
diff --git a/src/base/ftcolor.c b/src/base/ftcolor.c
index 26f6569..acde08b 100644
--- a/src/base/ftcolor.c
+++ b/src/base/ftcolor.c
@@ -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 */
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2] master 45145d3 4/6: Finish CPAL/COLR support (3/4).,
Werner LEMBERG <=