mirror of
https://gitlab.freedesktop.org/cairo/cairo.git
synced 2026-05-05 13:28:03 +02:00
[quartz,atsui] separate the quartz surface and atsui font backend
Make it possible to use the --enable-quartz and --enable-atsui independently. Quartz on its own will use the ft font backend.
This commit is contained in:
parent
83fcce0e93
commit
a724f816e1
4 changed files with 25 additions and 20 deletions
17
configure.in
17
configure.in
|
|
@ -269,13 +269,9 @@ CAIRO_BACKEND_ENABLE(xcb, XCB, xcb, XCB_SURFACE, no, [
|
|||
dnl ===========================================================================
|
||||
|
||||
CAIRO_BACKEND_ENABLE(quartz, Quartz, quartz, QUARTZ_SURFACE, no, [
|
||||
if test "x$use_xlib" = "xyes"; then
|
||||
use_quartz="no (requires --disable-xlib)";
|
||||
else
|
||||
dnl There is no pkgconfig for quartz; lets do a header check
|
||||
AC_CHECK_HEADER(Carbon/Carbon.h, , [use_quartz="no (Carbon headers not found)"])
|
||||
quartz_LIBS="-Xlinker -framework -Xlinker Carbon"
|
||||
fi
|
||||
dnl There is no pkgconfig for quartz; lets do a header check
|
||||
AC_CHECK_HEADER(Carbon/Carbon.h, , [use_quartz="no (Carbon headers not found)"])
|
||||
quartz_LIBS="-Xlinker -framework -Xlinker Carbon"
|
||||
])
|
||||
|
||||
dnl ===========================================================================
|
||||
|
|
@ -572,9 +568,10 @@ dnl ===========================================================================
|
|||
dnl This check should default to 'auto' once we have code to actually
|
||||
dnl check for the atsui font backend.
|
||||
|
||||
CAIRO_BACKEND_ENABLE(atsui, ATSUI font, atsui, ATSUI_FONT, auto, [
|
||||
dnl Quartz requires and is required by atsui.
|
||||
use_atsui=$use_quartz
|
||||
CAIRO_BACKEND_ENABLE(atsui, ATSUI font, atsui, ATSUI_FONT, no, [
|
||||
dnl There is no pkgconfig for atsui; lets do a header check
|
||||
AC_CHECK_HEADER(Carbon/Carbon.h, , [use_atsui="no (Carbon headers not found)"])
|
||||
atsui_LIBS="-Xlinker -framework -Xlinker Carbon"
|
||||
])
|
||||
|
||||
dnl ===========================================================================
|
||||
|
|
|
|||
|
|
@ -908,6 +908,7 @@ _cairo_atsui_font_text_to_glyphs (void *abstract_font,
|
|||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
#if CAIRO_HAS_QUARTZ_SURFACE
|
||||
static cairo_int_status_t
|
||||
_cairo_atsui_font_old_show_glyphs (void *abstract_font,
|
||||
cairo_operator_t op,
|
||||
|
|
@ -1024,12 +1025,7 @@ _cairo_atsui_font_old_show_glyphs (void *abstract_font,
|
|||
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
}
|
||||
|
||||
cairo_bool_t
|
||||
_cairo_scaled_font_is_atsui (cairo_scaled_font_t *sfont)
|
||||
{
|
||||
return (sfont->backend == &cairo_atsui_scaled_font_backend);
|
||||
}
|
||||
#endif /* CAIRO_HAS_QUARTZ_SURFACE */
|
||||
|
||||
ATSUStyle
|
||||
_cairo_atsui_scaled_font_get_atsu_style (cairo_scaled_font_t *sfont)
|
||||
|
|
@ -1078,7 +1074,11 @@ const cairo_scaled_font_backend_t cairo_atsui_scaled_font_backend = {
|
|||
_cairo_atsui_font_scaled_glyph_init,
|
||||
_cairo_atsui_font_text_to_glyphs,
|
||||
NULL, /* ucs4_to_index */
|
||||
#if CAIRO_HAS_QUARTZ_SURFACE
|
||||
_cairo_atsui_font_old_show_glyphs,
|
||||
#else
|
||||
NULL,
|
||||
#endif /* CAIRO_HAS_QUARTZ_SURFACE */
|
||||
_cairo_atsui_load_truetype_table,
|
||||
NULL, /* map_glyphs_to_unicode */
|
||||
};
|
||||
|
|
|
|||
|
|
@ -39,6 +39,8 @@
|
|||
#define CAIRO_QUARTZ_PRIVATE_H
|
||||
|
||||
#include <cairoint.h>
|
||||
|
||||
#ifdef CAIRO_HAS_QUARTZ_SURFACE
|
||||
#include <cairo-quartz.h>
|
||||
|
||||
typedef struct cairo_nquartz_surface {
|
||||
|
|
@ -59,14 +61,14 @@ typedef struct cairo_nquartz_surface {
|
|||
CGShadingRef sourceShading;
|
||||
CGPatternRef sourcePattern;
|
||||
} cairo_nquartz_surface_t, cairo_quartz_surface_t;
|
||||
#endif /* CAIRO_HAS_QUARTZ_SURFACE */
|
||||
|
||||
cairo_bool_t
|
||||
_cairo_scaled_font_is_atsui (cairo_scaled_font_t *sfont);
|
||||
|
||||
#if CAIRO_HAS_ATSUI_FONT
|
||||
ATSUStyle
|
||||
_cairo_atsui_scaled_font_get_atsu_style (cairo_scaled_font_t *sfont);
|
||||
|
||||
ATSUFontID
|
||||
_cairo_atsui_scaled_font_get_atsu_font_id (cairo_scaled_font_t *sfont);
|
||||
#endif /* CAIRO_HAS_ATSUI_FONT */
|
||||
|
||||
#endif /* CAIRO_QUARTZ_PRIVATE_H */
|
||||
|
|
|
|||
|
|
@ -1239,6 +1239,7 @@ _cairo_nquartz_surface_stroke (void *abstract_surface,
|
|||
return rv;
|
||||
}
|
||||
|
||||
#if CAIRO_HAS_ATSUI_FONT
|
||||
static cairo_int_status_t
|
||||
_cairo_nquartz_surface_show_glyphs (void *abstract_surface,
|
||||
cairo_operator_t op,
|
||||
|
|
@ -1258,7 +1259,7 @@ _cairo_nquartz_surface_show_glyphs (void *abstract_surface,
|
|||
if (op == CAIRO_OPERATOR_DEST)
|
||||
return CAIRO_STATUS_SUCCESS;
|
||||
|
||||
if (!_cairo_scaled_font_is_atsui (scaled_font))
|
||||
if (cairo_scaled_font_get_type (scaled_font) != CAIRO_FONT_TYPE_ATSUI)
|
||||
return CAIRO_INT_STATUS_UNSUPPORTED;
|
||||
|
||||
CGContextSaveGState (surface->cgContext);
|
||||
|
|
@ -1351,6 +1352,7 @@ _cairo_nquartz_surface_show_glyphs (void *abstract_surface,
|
|||
|
||||
return rv;
|
||||
}
|
||||
#endif /* CAIRO_HAS_ATSUI_FONT */
|
||||
|
||||
static cairo_int_status_t
|
||||
_cairo_nquartz_surface_mask (void *abstract_surface,
|
||||
|
|
@ -1455,7 +1457,11 @@ static const struct _cairo_surface_backend cairo_nquartz_surface_backend = {
|
|||
_cairo_nquartz_surface_mask,
|
||||
_cairo_nquartz_surface_stroke,
|
||||
_cairo_nquartz_surface_fill,
|
||||
#if CAIRO_HAS_ATSUI_FONT
|
||||
_cairo_nquartz_surface_show_glyphs,
|
||||
#else
|
||||
NULL, /* surface_show_glyphs */
|
||||
#endif /* CAIRO_HAS_ATSUI_FONT */
|
||||
|
||||
NULL, /* snapshot */
|
||||
};
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue