From 747cab741cf63f30aa6bc2b787fc13e7e7a2b859 Mon Sep 17 00:00:00 2001 From: Adrian Johnson Date: Sat, 26 Mar 2016 22:18:05 +1030 Subject: [PATCH] Add CAIRO_STATUS_WIN32_GDI_ERROR for GDI errors --- src/cairo-device.c | 1 + src/cairo-error-private.h | 1 + src/cairo-misc.c | 2 ++ src/cairo-region.c | 1 + src/cairo-spans.c | 2 ++ src/cairo-surface.c | 1 + src/cairo.c | 3 ++- src/cairo.h | 2 ++ src/win32/cairo-win32-surface.c | 6 +----- util/cairo-gobject/cairo-gobject-enums.c | 1 + util/cairo-script/cairo-script-private.h | 2 +- util/cairo-trace/trace.c | 1 + 12 files changed, 16 insertions(+), 7 deletions(-) diff --git a/src/cairo-device.c b/src/cairo-device.c index 23f654ffb..bacf93b3d 100644 --- a/src/cairo-device.c +++ b/src/cairo-device.c @@ -161,6 +161,7 @@ _cairo_device_create_in_error (cairo_status_t status) case CAIRO_STATUS_JBIG2_GLOBAL_MISSING: case CAIRO_STATUS_PNG_ERROR: case CAIRO_STATUS_FREETYPE_ERROR: + case CAIRO_STATUS_WIN32_GDI_ERROR: default: _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); return (cairo_device_t *) &_nil_device; diff --git a/src/cairo-error-private.h b/src/cairo-error-private.h index f9dea7059..25dac7d63 100644 --- a/src/cairo-error-private.h +++ b/src/cairo-error-private.h @@ -96,6 +96,7 @@ enum _cairo_int_status { CAIRO_INT_STATUS_JBIG2_GLOBAL_MISSING, CAIRO_INT_STATUS_PNG_ERROR, CAIRO_INT_STATUS_FREETYPE_ERROR, + CAIRO_INT_STATUS_WIN32_GDI_ERROR, CAIRO_INT_STATUS_LAST_STATUS, diff --git a/src/cairo-misc.c b/src/cairo-misc.c index c1e097169..f4db37260 100644 --- a/src/cairo-misc.c +++ b/src/cairo-misc.c @@ -162,6 +162,8 @@ cairo_status_to_string (cairo_status_t status) return "error occurred in libpng while reading from or writing to a PNG file"; case CAIRO_STATUS_FREETYPE_ERROR: return "error occurred in libfreetype"; + case CAIRO_STATUS_WIN32_GDI_ERROR: + return "error occurred in the Windows Graphics Device Interface"; default: case CAIRO_STATUS_LAST_STATUS: return ""; diff --git a/src/cairo-region.c b/src/cairo-region.c index daf1f9621..b738c4437 100644 --- a/src/cairo-region.c +++ b/src/cairo-region.c @@ -109,6 +109,7 @@ _cairo_region_create_in_error (cairo_status_t status) case CAIRO_STATUS_JBIG2_GLOBAL_MISSING: case CAIRO_STATUS_PNG_ERROR: case CAIRO_STATUS_FREETYPE_ERROR: + case CAIRO_STATUS_WIN32_GDI_ERROR: default: _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); return (cairo_region_t *) &_cairo_region_nil; diff --git a/src/cairo-spans.c b/src/cairo-spans.c index d2f940704..d20cd5ad4 100644 --- a/src/cairo-spans.c +++ b/src/cairo-spans.c @@ -130,6 +130,7 @@ _cairo_scan_converter_create_in_error (cairo_status_t status) case CAIRO_STATUS_JBIG2_GLOBAL_MISSING: case CAIRO_STATUS_PNG_ERROR: case CAIRO_STATUS_FREETYPE_ERROR: + case CAIRO_STATUS_WIN32_GDI_ERROR: default: break; } @@ -245,6 +246,7 @@ _cairo_span_renderer_create_in_error (cairo_status_t status) case CAIRO_STATUS_JBIG2_GLOBAL_MISSING: RETURN_NIL; case CAIRO_STATUS_PNG_ERROR: RETURN_NIL; case CAIRO_STATUS_FREETYPE_ERROR: RETURN_NIL; + case CAIRO_STATUS_WIN32_GDI_ERROR: RETURN_NIL; default: break; } diff --git a/src/cairo-surface.c b/src/cairo-surface.c index 057e1def2..ded146dc7 100644 --- a/src/cairo-surface.c +++ b/src/cairo-surface.c @@ -2727,6 +2727,7 @@ _cairo_surface_create_in_error (cairo_status_t status) case CAIRO_STATUS_JBIG2_GLOBAL_MISSING: case CAIRO_STATUS_PNG_ERROR: case CAIRO_STATUS_FREETYPE_ERROR: + case CAIRO_STATUS_WIN32_GDI_ERROR: default: _cairo_error_throw (CAIRO_STATUS_NO_MEMORY); return (cairo_surface_t *) &_cairo_surface_nil; diff --git a/src/cairo.c b/src/cairo.c index 078c5e287..ec27fe765 100644 --- a/src/cairo.c +++ b/src/cairo.c @@ -155,7 +155,8 @@ static const cairo_t _cairo_nil[] = { DEFINE_NIL_CONTEXT (CAIRO_STATUS_DEVICE_FINISHED), DEFINE_NIL_CONTEXT (CAIRO_STATUS_JBIG2_GLOBAL_MISSING), DEFINE_NIL_CONTEXT (CAIRO_STATUS_PNG_ERROR), - DEFINE_NIL_CONTEXT (CAIRO_STATUS_FREETYPE_ERROR) + DEFINE_NIL_CONTEXT (CAIRO_STATUS_FREETYPE_ERROR), + DEFINE_NIL_CONTEXT (CAIRO_STATUS_WIN32_GDI_ERROR) }; COMPILE_TIME_ASSERT (ARRAY_LENGTH (_cairo_nil) == CAIRO_STATUS_LAST_STATUS - 1); diff --git a/src/cairo.h b/src/cairo.h index 1d2f418e5..a09d839bd 100644 --- a/src/cairo.h +++ b/src/cairo.h @@ -294,6 +294,7 @@ typedef struct _cairo_user_data_key { * but no image provided %CAIRO_MIME_TYPE_JBIG2_GLOBAL (Since 1.14) * @CAIRO_STATUS_PNG_ERROR: error occurred in libpng while reading from or writing to a PNG file (Since 1.16) * @CAIRO_STATUS_FREETYPE_ERROR: error occurred in libfreetype (Since 1.16) + * @CAIRO_STATUS_WIN32_GDI_ERROR: error occurred in the Windows Graphics Device Interface (Since 1.16) * @CAIRO_STATUS_LAST_STATUS: this is a special value indicating the number of * status values defined in this enumeration. When using this value, note * that the version of cairo at run-time may have additional status values @@ -352,6 +353,7 @@ typedef enum _cairo_status { CAIRO_STATUS_JBIG2_GLOBAL_MISSING, CAIRO_STATUS_PNG_ERROR, CAIRO_STATUS_FREETYPE_ERROR, + CAIRO_STATUS_WIN32_GDI_ERROR, CAIRO_STATUS_LAST_STATUS } cairo_status_t; diff --git a/src/win32/cairo-win32-surface.c b/src/win32/cairo-win32-surface.c index e6862bd10..f7285b92e 100644 --- a/src/win32/cairo-win32-surface.c +++ b/src/win32/cairo-win32-surface.c @@ -122,11 +122,7 @@ _cairo_win32_print_gdi_error (const char *context) fflush (stderr); - /* We should switch off of last_status, but we'd either return - * CAIRO_STATUS_NO_MEMORY or CAIRO_STATUS_UNKNOWN_ERROR and there - * is no CAIRO_STATUS_UNKNOWN_ERROR. - */ - return _cairo_error (CAIRO_STATUS_NO_MEMORY); + return _cairo_error (CAIRO_STATUS_WIN32_GDI_ERROR); } cairo_bool_t diff --git a/util/cairo-gobject/cairo-gobject-enums.c b/util/cairo-gobject/cairo-gobject-enums.c index cd4a4be40..0c5069406 100644 --- a/util/cairo-gobject/cairo-gobject-enums.c +++ b/util/cairo-gobject/cairo-gobject-enums.c @@ -55,6 +55,7 @@ cairo_gobject_status_get_type (void) { CAIRO_STATUS_PNG_ERROR, "CAIRO_STATUS_PNG_ERROR", "png-error" }, { CAIRO_STATUS_FREETYPE_ERROR, "CAIRO_STATUS_FREETYPE_ERROR", "freetype-error" }, { CAIRO_STATUS_LAST_STATUS, "CAIRO_STATUS_LAST_STATUS", "last-status" }, + { CAIRO_STATUS_WIN32_GDI_ERROR, "CAIRO_STATUS_WIN32_GDI_ERROR", "win32-gdi-error" }, { 0, NULL, NULL } }; GType type = g_enum_register_static (g_intern_static_string ("cairo_status_t"), values); diff --git a/util/cairo-script/cairo-script-private.h b/util/cairo-script/cairo-script-private.h index a8e203b47..da846dcb2 100644 --- a/util/cairo-script/cairo-script-private.h +++ b/util/cairo-script/cairo-script-private.h @@ -228,7 +228,7 @@ typedef enum _csi_status { CSI_STATUS_JBIG2_GLOBAL_MISSING = CAIRO_STATUS_JBIG2_GLOBAL_MISSING, CSI_STATUS_PNG_ERROR = CAIRO_STATUS_PNG_ERROR, CSI_STATUS_FREETYPE_ERROR = CAIRO_STATUS_FREETYPE_ERROR, - + CSI_STATUS_WIN32_GDI_ERROR = CAIRO_STATUS_WIN32_GDI_ERROR, /* cairo-script-interpreter specific errors */ diff --git a/util/cairo-trace/trace.c b/util/cairo-trace/trace.c index 652e04ad0..e3c99331b 100644 --- a/util/cairo-trace/trace.c +++ b/util/cairo-trace/trace.c @@ -1584,6 +1584,7 @@ _status_to_string (cairo_status_t status) f(JBIG2_GLOBAL_MISSING); f(PNG_ERROR); f(FREETYPE_ERROR); + f(WIN32_GDI_ERROR); case CAIRO_STATUS_LAST_STATUS: break; }