mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-04-22 10:30:41 +02:00
[cairo-scaled-font] Add a meta-surface member to scaled glyphs
No one currently uses it.
This commit is contained in:
parent
11a0884168
commit
a63dc13377
2 changed files with 27 additions and 3 deletions
|
|
@ -167,6 +167,8 @@ _cairo_scaled_glyph_fini (cairo_scaled_glyph_t *scaled_glyph)
|
|||
cairo_surface_destroy (&scaled_glyph->surface->base);
|
||||
if (scaled_glyph->path != NULL)
|
||||
_cairo_path_fixed_destroy (scaled_glyph->path);
|
||||
if (scaled_glyph->meta_surface != NULL)
|
||||
cairo_surface_destroy (scaled_glyph->meta_surface);
|
||||
}
|
||||
|
||||
static void
|
||||
|
|
@ -1751,6 +1753,16 @@ _cairo_scaled_glyph_set_path (cairo_scaled_glyph_t *scaled_glyph,
|
|||
scaled_glyph->path = path;
|
||||
}
|
||||
|
||||
void
|
||||
_cairo_scaled_glyph_set_meta_surface (cairo_scaled_glyph_t *scaled_glyph,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
cairo_surface_t *meta_surface)
|
||||
{
|
||||
if (scaled_glyph->meta_surface != NULL)
|
||||
cairo_surface_destroy (meta_surface);
|
||||
scaled_glyph->meta_surface = meta_surface;
|
||||
}
|
||||
|
||||
/**
|
||||
* _cairo_scaled_glyph_lookup:
|
||||
* @scaled_font: a #cairo_scaled_font_t
|
||||
|
|
@ -1810,6 +1822,7 @@ _cairo_scaled_glyph_lookup (cairo_scaled_font_t *scaled_font,
|
|||
scaled_glyph->scaled_font = scaled_font;
|
||||
scaled_glyph->surface = NULL;
|
||||
scaled_glyph->path = NULL;
|
||||
scaled_glyph->meta_surface = NULL;
|
||||
scaled_glyph->surface_private = NULL;
|
||||
|
||||
/* ask backend to initialize metrics and shape fields */
|
||||
|
|
@ -1841,6 +1854,10 @@ _cairo_scaled_glyph_lookup (cairo_scaled_font_t *scaled_font,
|
|||
scaled_glyph->path == NULL))
|
||||
need_info |= CAIRO_SCALED_GLYPH_INFO_PATH;
|
||||
|
||||
if (((info & CAIRO_SCALED_GLYPH_INFO_META_SURFACE) != 0 &&
|
||||
scaled_glyph->path == NULL))
|
||||
need_info |= CAIRO_SCALED_GLYPH_INFO_META_SURFACE;
|
||||
|
||||
if (need_info) {
|
||||
status = (*scaled_font->backend->
|
||||
scaled_glyph_init) (scaled_font, scaled_glyph, need_info);
|
||||
|
|
|
|||
|
|
@ -316,6 +316,7 @@ typedef struct _cairo_scaled_glyph {
|
|||
int16_t y_advance; /* device-space rounded Y advance */
|
||||
cairo_image_surface_t *surface; /* device-space image */
|
||||
cairo_path_fixed_t *path; /* device-space outline */
|
||||
cairo_surface_t *meta_surface; /* device-space meta-surface */
|
||||
void *surface_private; /* for the surface backend */
|
||||
} cairo_scaled_glyph_t;
|
||||
|
||||
|
|
@ -358,9 +359,10 @@ typedef struct _cairo_toy_font_face {
|
|||
} cairo_toy_font_face_t;
|
||||
|
||||
typedef enum _cairo_scaled_glyph_info {
|
||||
CAIRO_SCALED_GLYPH_INFO_METRICS = (1 << 0),
|
||||
CAIRO_SCALED_GLYPH_INFO_SURFACE = (1 << 1),
|
||||
CAIRO_SCALED_GLYPH_INFO_PATH = (1 << 2)
|
||||
CAIRO_SCALED_GLYPH_INFO_METRICS = (1 << 0),
|
||||
CAIRO_SCALED_GLYPH_INFO_SURFACE = (1 << 1),
|
||||
CAIRO_SCALED_GLYPH_INFO_PATH = (1 << 2),
|
||||
CAIRO_SCALED_GLYPH_INFO_META_SURFACE = (1 << 3),
|
||||
} cairo_scaled_glyph_info_t;
|
||||
|
||||
typedef struct _cairo_scaled_font_subset {
|
||||
|
|
@ -1535,6 +1537,11 @@ _cairo_scaled_glyph_set_path (cairo_scaled_glyph_t *scaled_glyph,
|
|||
cairo_scaled_font_t *scaled_font,
|
||||
cairo_path_fixed_t *path);
|
||||
|
||||
cairo_private void
|
||||
_cairo_scaled_glyph_set_meta_surface (cairo_scaled_glyph_t *scaled_glyph,
|
||||
cairo_scaled_font_t *scaled_font,
|
||||
cairo_surface_t *meta_surface);
|
||||
|
||||
cairo_private cairo_int_status_t
|
||||
_cairo_scaled_glyph_lookup (cairo_scaled_font_t *scaled_font,
|
||||
unsigned long index,
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue