[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[freetype2] colr 2381755 8/8: [base] Fill 'COLR' v1 API templates to mak
From: |
Werner LEMBERG |
Subject: |
[freetype2] colr 2381755 8/8: [base] Fill 'COLR' v1 API templates to make them work (#59703). |
Date: |
Sat, 2 Jan 2021 04:34:53 -0500 (EST) |
branch: colr
commit 238175574fbcb93359526037819ba23c884efe9a
Author: Dominik Röttsches <drott@chromium.org>
Commit: Werner Lemberg <wl@gnu.org>
[base] Fill 'COLR' v1 API templates to make them work (#59703).
* src/base/ftobjs.c (FT_Get_Color_Glyph_Paint, FT_Get_Paint_Layers,
FT_Get_Paint, FT_Get_Colorline_Stops): Add basic sanity checks,
check for existence of `FT_Face`, check arguments and delegate calls
for the respective 'COLR' v1 API to the SFNT driver.
---
ChangeLog | 9 +++++++
src/base/ftobjs.c | 80 ++++++++++++++++++++++++++++++++++++++++++++++++++++---
2 files changed, 85 insertions(+), 4 deletions(-)
diff --git a/ChangeLog b/ChangeLog
index c5130c3..4279ed2 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,14 @@
2020-12-16 Dominik Röttsches <drott@chromium.org>
+ [base] Fill 'COLR' v1 API templates to make them work (#59703).
+
+ * src/base/ftobjs.c (FT_Get_Color_Glyph_Paint, FT_Get_Paint_Layers,
+ FT_Get_Paint, FT_Get_Colorline_Stops): Add basic sanity checks,
+ check for existence of `FT_Face`, check arguments and delegate calls
+ for the respective 'COLR' v1 API to the SFNT driver.
+
+2020-12-16 Dominik Röttsches <drott@chromium.org>
+
[sfnt] Register 'COLR' v1 API in driver (#59703).
* include/freetype/internal/sfnt.h (TT_Get_Color_Glyph_Paint_Func,
diff --git a/src/base/ftobjs.c b/src/base/ftobjs.c
index c3e37f6..c369e3f 100644
--- a/src/base/ftobjs.c
+++ b/src/base/ftobjs.c
@@ -5568,39 +5568,111 @@
}
+ /* documentation is in freetype.h */
+
FT_EXPORT_DEF ( FT_Bool )
FT_Get_Color_Glyph_Paint( FT_Face face,
FT_UInt base_glyph,
FT_OpaquePaint* paint )
{
- return 0;
+ TT_Face ttface;
+ SFNT_Service sfnt;
+
+
+ if ( !face || !paint )
+ return 0;
+
+ if ( !FT_IS_SFNT( face ) )
+ return 0;
+
+ ttface = (TT_Face)face;
+ sfnt = (SFNT_Service)ttface->sfnt;
+
+ if ( sfnt->get_colr_layer )
+ return sfnt->get_colr_glyph_paint( ttface, base_glyph, paint );
+ else
+ return 0;
}
+ /* documentation is in freetype.h */
+
FT_EXPORT_DEF ( FT_Bool )
FT_Get_Paint_Layers( FT_Face face,
FT_LayerIterator* layer_iterator,
FT_OpaquePaint* paint )
{
- return 0;
+ TT_Face ttface;
+ SFNT_Service sfnt;
+
+
+ if ( !face || !paint || !layer_iterator )
+ return 0;
+
+ if ( !FT_IS_SFNT( face ) )
+ return 0;
+
+ ttface = (TT_Face)face;
+ sfnt = (SFNT_Service)ttface->sfnt;
+
+ if ( sfnt->get_paint_layers )
+ return sfnt->get_paint_layers( ttface, layer_iterator, paint );
+ else
+ return 0;
}
+ /* documentation is in freetype.h */
+
FT_EXPORT_DEF( FT_Bool )
FT_Get_Paint( FT_Face face,
FT_OpaquePaint opaque_paint,
FT_COLR_Paint* paint )
{
- return 0;
+ TT_Face ttface;
+ SFNT_Service sfnt;
+
+
+ if ( !face || !paint || !paint )
+ return 0;
+
+ if ( !FT_IS_SFNT( face ) )
+ return 0;
+
+ ttface = (TT_Face)face;
+ sfnt = (SFNT_Service)ttface->sfnt;
+
+ if ( sfnt->get_paint )
+ return sfnt->get_paint( ttface, opaque_paint, paint );
+ else
+ return 0;
}
+ /* documentation is in freetype.h */
+
FT_EXPORT_DEF ( FT_Bool )
FT_Get_Colorline_Stops ( FT_Face face,
FT_ColorStop * color_stop,
FT_ColorStopIterator *iterator )
{
- return 0;
+ TT_Face ttface;
+ SFNT_Service sfnt;
+
+
+ if ( !face || !color_stop || !iterator )
+ return 0;
+
+ if ( !FT_IS_SFNT( face ) )
+ return 0;
+
+ ttface = (TT_Face)face;
+ sfnt = (SFNT_Service)ttface->sfnt;
+
+ if ( sfnt->get_colorline_stops )
+ return sfnt->get_colorline_stops ( ttface, color_stop, iterator );
+ else
+ return 0;
}
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- [freetype2] colr 2381755 8/8: [base] Fill 'COLR' v1 API templates to make them work (#59703).,
Werner LEMBERG <=