[paint-extents] Flesh out some more
This commit is contained in:
parent
268d8b7ded
commit
c37a1eadef
|
@ -62,14 +62,20 @@ typedef struct hb_transform_t
|
||||||
float y0 = 0.f;
|
float y0 = 0.f;
|
||||||
} hb_transform_t;
|
} hb_transform_t;
|
||||||
|
|
||||||
|
typedef struct hb_extents_t
|
||||||
|
{
|
||||||
|
float xmin, ymin, xmax, ymax;
|
||||||
|
} hb_extents_t;
|
||||||
|
|
||||||
typedef struct hb_bounds_t
|
typedef struct hb_bounds_t
|
||||||
{
|
{
|
||||||
hb_bounds_t () {}
|
hb_bounds_t () {}
|
||||||
hb_bounds_t (const hb_glyph_extents_t &extents) :
|
hb_bounds_t (const hb_extents_t &extents) :
|
||||||
bounded (true), extents (extents) {}
|
bounded (true), extents (extents) {}
|
||||||
|
|
||||||
bool bounded = false;
|
bool bounded = false;
|
||||||
hb_glyph_extents_t extents = {0, 0, 0, 0};
|
bool empty = true;
|
||||||
|
hb_extents_t extents = {0, 0, 0, 0};
|
||||||
} hb_bounds_t;
|
} hb_bounds_t;
|
||||||
|
|
||||||
typedef struct hb_paint_extents_context_t hb_paint_extents_context_t;
|
typedef struct hb_paint_extents_context_t hb_paint_extents_context_t;
|
||||||
|
@ -95,8 +101,11 @@ struct hb_paint_extents_context_t {
|
||||||
transforms.pop ();
|
transforms.pop ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void push_clip (const hb_glyph_extents_t &extents)
|
void push_clip (hb_extents_t extents)
|
||||||
{
|
{
|
||||||
|
/* Transform extents and push a new clip. */
|
||||||
|
//hb_transform_t &r = transforms.tail ();
|
||||||
|
|
||||||
hb_bounds_t b {extents};
|
hb_bounds_t b {extents};
|
||||||
clips.push (b);
|
clips.push (b);
|
||||||
}
|
}
|
||||||
|
@ -116,11 +125,9 @@ struct hb_paint_extents_context_t {
|
||||||
return bounds.pop ();
|
return bounds.pop ();
|
||||||
}
|
}
|
||||||
|
|
||||||
void add_extents (const hb_glyph_extents_t &extents)
|
void paint ()
|
||||||
{
|
{
|
||||||
// TODO
|
/* Union current clip bounds with current bounds. */
|
||||||
|
|
||||||
//hb_transform_t &r = transforms.tail ();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
hb_vector_t<hb_bounds_t> clips;
|
hb_vector_t<hb_bounds_t> clips;
|
||||||
|
@ -158,9 +165,15 @@ hb_paint_extents_push_clip_glyph (hb_paint_funcs_t *funcs HB_UNUSED,
|
||||||
hb_font_t *font,
|
hb_font_t *font,
|
||||||
void *user_data HB_UNUSED)
|
void *user_data HB_UNUSED)
|
||||||
{
|
{
|
||||||
//hb_paint_extents_context_t *c = (hb_paint_extents_context_t *) paint_data;
|
hb_paint_extents_context_t *c = (hb_paint_extents_context_t *) paint_data;
|
||||||
|
|
||||||
// TODO
|
hb_glyph_extents_t glyph_extents;
|
||||||
|
hb_font_get_glyph_extents (font, glyph, &glyph_extents);
|
||||||
|
hb_extents_t extents = {(float) glyph_extents.x_bearing,
|
||||||
|
(float) glyph_extents.y_bearing + glyph_extents.height,
|
||||||
|
(float) glyph_extents.x_bearing + glyph_extents.width,
|
||||||
|
(float) glyph_extents.y_bearing};
|
||||||
|
c->push_clip (extents);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -169,7 +182,10 @@ hb_paint_extents_push_clip_rectangle (hb_paint_funcs_t *funcs HB_UNUSED,
|
||||||
float xmin, float ymin, float xmax, float ymax,
|
float xmin, float ymin, float xmax, float ymax,
|
||||||
void *user_data)
|
void *user_data)
|
||||||
{
|
{
|
||||||
// TODO
|
hb_paint_extents_context_t *c = (hb_paint_extents_context_t *) paint_data;
|
||||||
|
|
||||||
|
hb_extents_t extents = {xmin, ymin, xmax, ymax};
|
||||||
|
c->push_clip (extents);
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -213,10 +229,18 @@ hb_paint_extents_paint_image (hb_paint_funcs_t *funcs HB_UNUSED,
|
||||||
unsigned int height HB_UNUSED,
|
unsigned int height HB_UNUSED,
|
||||||
hb_tag_t format HB_UNUSED,
|
hb_tag_t format HB_UNUSED,
|
||||||
float slant HB_UNUSED,
|
float slant HB_UNUSED,
|
||||||
hb_glyph_extents_t *extents,
|
hb_glyph_extents_t *glyph_extents,
|
||||||
void *user_data HB_UNUSED)
|
void *user_data HB_UNUSED)
|
||||||
{
|
{
|
||||||
// TODO
|
hb_paint_extents_context_t *c = (hb_paint_extents_context_t *) paint_data;
|
||||||
|
|
||||||
|
hb_extents_t extents = {(float) glyph_extents->x_bearing,
|
||||||
|
(float) glyph_extents->y_bearing + glyph_extents->height,
|
||||||
|
(float) glyph_extents->x_bearing + glyph_extents->width,
|
||||||
|
(float) glyph_extents->y_bearing};
|
||||||
|
c->push_clip (extents);
|
||||||
|
c->paint ();
|
||||||
|
c->pop_clip ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -226,7 +250,9 @@ hb_paint_extents_paint_color (hb_paint_funcs_t *funcs HB_UNUSED,
|
||||||
hb_color_t color HB_UNUSED,
|
hb_color_t color HB_UNUSED,
|
||||||
void *user_data HB_UNUSED)
|
void *user_data HB_UNUSED)
|
||||||
{
|
{
|
||||||
// TODO
|
hb_paint_extents_context_t *c = (hb_paint_extents_context_t *) paint_data;
|
||||||
|
|
||||||
|
c->paint ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -238,7 +264,9 @@ hb_paint_extents_paint_linear_gradient (hb_paint_funcs_t *funcs HB_UNUSED,
|
||||||
float x2 HB_UNUSED, float y2 HB_UNUSED,
|
float x2 HB_UNUSED, float y2 HB_UNUSED,
|
||||||
void *user_data HB_UNUSED)
|
void *user_data HB_UNUSED)
|
||||||
{
|
{
|
||||||
// TODO
|
hb_paint_extents_context_t *c = (hb_paint_extents_context_t *) paint_data;
|
||||||
|
|
||||||
|
c->paint ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -249,7 +277,9 @@ hb_paint_extents_paint_radial_gradient (hb_paint_funcs_t *funcs HB_UNUSED,
|
||||||
float x1 HB_UNUSED, float y1 HB_UNUSED, float r1 HB_UNUSED,
|
float x1 HB_UNUSED, float y1 HB_UNUSED, float r1 HB_UNUSED,
|
||||||
void *user_data HB_UNUSED)
|
void *user_data HB_UNUSED)
|
||||||
{
|
{
|
||||||
// TODO
|
hb_paint_extents_context_t *c = (hb_paint_extents_context_t *) paint_data;
|
||||||
|
|
||||||
|
c->paint ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void
|
static void
|
||||||
|
@ -261,7 +291,9 @@ hb_paint_extents_paint_sweep_gradient (hb_paint_funcs_t *funcs HB_UNUSED,
|
||||||
float end_angle HB_UNUSED,
|
float end_angle HB_UNUSED,
|
||||||
void *user_data HB_UNUSED)
|
void *user_data HB_UNUSED)
|
||||||
{
|
{
|
||||||
// TODO
|
hb_paint_extents_context_t *c = (hb_paint_extents_context_t *) paint_data;
|
||||||
|
|
||||||
|
c->paint ();
|
||||||
}
|
}
|
||||||
|
|
||||||
static inline hb_paint_funcs_t *
|
static inline hb_paint_funcs_t *
|
||||||
|
|
Loading…
Reference in New Issue