[paint-extents] Hook it up, kinda
This commit is contained in:
parent
7fbaaebe8b
commit
47c896f004
|
@ -457,15 +457,29 @@ hb_ft_paint_glyph_colr (hb_font_t *font,
|
||||||
&paint))
|
&paint))
|
||||||
{
|
{
|
||||||
FT_ClipBox clip_box;
|
FT_ClipBox clip_box;
|
||||||
bool has_clip;
|
if (FT_Get_Color_Glyph_ClipBox (ft_face, gid, &clip_box))
|
||||||
|
|
||||||
has_clip = FT_Get_Color_Glyph_ClipBox (ft_face, gid, &clip_box);
|
|
||||||
if (has_clip)
|
|
||||||
paint_funcs->push_clip_rectangle (paint_data,
|
paint_funcs->push_clip_rectangle (paint_data,
|
||||||
clip_box.bottom_left.x - font->slant_xy * clip_box.bottom_left.y,
|
clip_box.bottom_left.x - font->slant_xy * clip_box.bottom_left.y,
|
||||||
clip_box.bottom_left.y,
|
clip_box.bottom_left.y,
|
||||||
clip_box.top_right.x - font->slant_xy * clip_box.top_right.y,
|
clip_box.top_right.x - font->slant_xy * clip_box.top_right.y,
|
||||||
clip_box.top_right.y);
|
clip_box.top_right.y);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
/* XXX Untested. */
|
||||||
|
auto *extents_funcs = hb_paint_extents_get_funcs ();
|
||||||
|
hb_paint_extents_context_t extents_data;
|
||||||
|
hb_ft_paint_context_t c (ft_font, font,
|
||||||
|
extents_funcs, &extents_data,
|
||||||
|
palette, foreground);
|
||||||
|
_hb_ft_paint (&c, paint);
|
||||||
|
paint_funcs->push_clip_rectangle (paint_data,
|
||||||
|
extents_data.groups.tail().extents.xmin,
|
||||||
|
extents_data.groups.tail().extents.ymin,
|
||||||
|
extents_data.groups.tail().extents.xmax,
|
||||||
|
extents_data.groups.tail().extents.ymax);
|
||||||
|
|
||||||
|
hb_paint_funcs_destroy (extents_funcs);
|
||||||
|
}
|
||||||
|
|
||||||
paint_funcs->push_root_transform (paint_data, font);
|
paint_funcs->push_root_transform (paint_data, font);
|
||||||
|
|
||||||
|
@ -475,8 +489,7 @@ hb_ft_paint_glyph_colr (hb_font_t *font,
|
||||||
_hb_ft_paint (&c, paint);
|
_hb_ft_paint (&c, paint);
|
||||||
|
|
||||||
paint_funcs->pop_root_transform (paint_data);
|
paint_funcs->pop_root_transform (paint_data);
|
||||||
if (has_clip)
|
paint_funcs->pop_clip (paint_data);
|
||||||
paint_funcs->pop_clip (paint_data);
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
|
@ -33,6 +33,7 @@
|
||||||
#include "hb-ot-layout-common.hh"
|
#include "hb-ot-layout-common.hh"
|
||||||
#include "hb-ot-var-common.hh"
|
#include "hb-ot-var-common.hh"
|
||||||
#include "hb-paint.hh"
|
#include "hb-paint.hh"
|
||||||
|
#include "hb-paint-extents.hh"
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* COLR -- Color
|
* COLR -- Color
|
||||||
|
@ -1997,6 +1998,21 @@ struct COLR
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
/* This currently goes into infinite recursion. */
|
||||||
|
|
||||||
|
auto *extents_funcs = hb_paint_extents_get_funcs ();
|
||||||
|
hb_paint_extents_context_t extents_data;
|
||||||
|
paint_glyph (font, glyph, extents_funcs, &extents_data, 0, HB_COLOR(0,0,0,0));
|
||||||
|
|
||||||
|
extents_data.groups.tail().extents.xmin,
|
||||||
|
extents_data.groups.tail().extents.ymin,
|
||||||
|
extents_data.groups.tail().extents.xmax,
|
||||||
|
extents_data.groups.tail().extents.ymax;
|
||||||
|
|
||||||
|
hb_paint_funcs_destroy (extents_funcs);
|
||||||
|
#endif
|
||||||
|
|
||||||
return false;
|
return false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue