[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:
Brian Ewins 2007-03-05 23:19:24 +00:00
parent 83fcce0e93
commit a724f816e1
4 changed files with 25 additions and 20 deletions

View file

@ -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 ===========================================================================

View file

@ -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 */
};

View file

@ -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 */

View file

@ -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 */
};