[draw] Another try at a stable draw moveto semantic
This commit is contained in:
parent
151f205819
commit
57aa8c3b3a
|
@ -97,7 +97,6 @@ struct hb_draw_funcs_t
|
||||||
float to_x, float to_y)
|
float to_x, float to_y)
|
||||||
{
|
{
|
||||||
if (st.path_open) close_path (draw_data, st);
|
if (st.path_open) close_path (draw_data, st);
|
||||||
emit_move_to (draw_data, st, to_x, to_y);
|
|
||||||
st.current_x = to_x;
|
st.current_x = to_x;
|
||||||
st.current_y = to_y;
|
st.current_y = to_y;
|
||||||
}
|
}
|
||||||
|
@ -152,6 +151,7 @@ struct hb_draw_funcs_t
|
||||||
void start_path (void *draw_data, hb_draw_state_t &st)
|
void start_path (void *draw_data, hb_draw_state_t &st)
|
||||||
{
|
{
|
||||||
assert (!st.path_open);
|
assert (!st.path_open);
|
||||||
|
emit_move_to (draw_data, st, st.current_x, st.current_y);
|
||||||
st.path_open = true;
|
st.path_open = true;
|
||||||
st.path_start_x = st.current_x;
|
st.path_start_x = st.current_x;
|
||||||
st.path_start_y = st.current_y;
|
st.path_start_y = st.current_y;
|
||||||
|
|
|
@ -531,12 +531,6 @@ hb_draw_move_to_default (hb_draw_funcs_t *dfuncs HB_UNUSED,
|
||||||
float x_scale = adaptor->x_scale;
|
float x_scale = adaptor->x_scale;
|
||||||
float y_scale = adaptor->y_scale;
|
float y_scale = adaptor->y_scale;
|
||||||
|
|
||||||
st->path_start_x *= x_scale;
|
|
||||||
st->path_start_y *= y_scale;
|
|
||||||
|
|
||||||
st->current_x *= x_scale;
|
|
||||||
st->current_y *= y_scale;
|
|
||||||
|
|
||||||
adaptor->draw_funcs->emit_move_to (adaptor->draw_data, *st,
|
adaptor->draw_funcs->emit_move_to (adaptor->draw_data, *st,
|
||||||
x_scale * to_x, y_scale * to_y);
|
x_scale * to_x, y_scale * to_y);
|
||||||
}
|
}
|
||||||
|
|
|
@ -113,7 +113,17 @@ render_glyph (cairo_scaled_font_t *scaled_font,
|
||||||
hb_font_get_scale (font, &x_scale, &y_scale);
|
hb_font_get_scale (font, &x_scale, &y_scale);
|
||||||
cairo_scale (cr, +1./x_scale, -1./y_scale);
|
cairo_scale (cr, +1./x_scale, -1./y_scale);
|
||||||
|
|
||||||
|
#if 0
|
||||||
|
// Test sub-font scaling...
|
||||||
|
// TODO: Turn this into a util-wide feature...
|
||||||
|
hb_font_t *font2 = hb_font_create_sub_font (font);
|
||||||
|
signed x, y;
|
||||||
|
hb_font_get_scale (font, &x, &y);
|
||||||
|
hb_font_set_scale (font2, x/2, y/2);
|
||||||
|
hb_font_get_glyph_shape (font2, glyph, get_cairo_draw_funcs (), cr);
|
||||||
|
#else
|
||||||
hb_font_get_glyph_shape (font, glyph, get_cairo_draw_funcs (), cr);
|
hb_font_get_glyph_shape (font, glyph, get_cairo_draw_funcs (), cr);
|
||||||
|
#endif
|
||||||
cairo_fill (cr);
|
cairo_fill (cr);
|
||||||
|
|
||||||
return CAIRO_STATUS_SUCCESS;
|
return CAIRO_STATUS_SUCCESS;
|
||||||
|
|
Loading…
Reference in New Issue