diff options
author | Andrea Canciani <ranma42@gmail.com> | 2011-02-05 09:48:36 +0100 |
---|---|---|
committer | Andrea Canciani <ranma42@gmail.com> | 2011-03-18 17:36:45 +0100 |
commit | 7a09afbe9d1bdaa1ef1619c5d35b79a9a45bf4ea (patch) | |
tree | d785d590a3ebaf0e6a919f64e62fd00fdf87577d | |
parent | 4e689731975c73124025f91841260fe1ce4c332a (diff) |
gstate: Degenerate font drawing is a noopwip/0matrix
Instead of passing a size 0 (or degenerate in any other way) font to
the backend, handle the operation in gstate.
-rw-r--r-- | src/cairo-gstate.c | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/src/cairo-gstate.c b/src/cairo-gstate.c index eaf7a56aa..6cab358da 100644 --- a/src/cairo-gstate.c +++ b/src/cairo-gstate.c @@ -1911,6 +1911,18 @@ _cairo_gstate_show_text_glyphs (cairo_gstate_t *gstate, if (unlikely (status)) return status; + if (_cairo_matrix_compute_determinant (&gstate->scaled_font->scale) == 0) { + if (_cairo_operator_bounded_by_mask (gstate->op)) + return CAIRO_STATUS_SUCCESS; + + pattern = &_cairo_pattern_clear.base; + status = _cairo_surface_paint (gstate->target, + CAIRO_OPERATOR_CLEAR, pattern, + _gstate_get_clip (gstate, &clip)); + _cairo_clip_fini (&clip); + return status; + } + transformed_glyphs = stack_transformed_glyphs; transformed_clusters = stack_transformed_clusters; |