[cairo] [PATCH 05/72] core: helper function for converting cairo_status_t to human-readable text (like strerror)

Enrico Weigelt, metux IT consult enrico.weigelt at gr13.net
Tue Dec 29 01:16:43 PST 2015


Signed-off-by: Enrico Weigelt, metux IT consult <enrico.weigelt at gr13.net>
---
 src/cairo-error.c | 52 ++++++++++++++++++++++++++++++++++++++++++++++++++++
 src/cairo.h       |  2 ++
 2 files changed, 54 insertions(+)

diff --git a/src/cairo-error.c b/src/cairo-error.c
index 1b9bd76..0ea9864 100644
--- a/src/cairo-error.c
+++ b/src/cairo-error.c
@@ -71,3 +71,55 @@ _cairo_error (cairo_status_t status)
 }
 
 COMPILE_TIME_ASSERT ((int)CAIRO_INT_STATUS_LAST_STATUS == (int)CAIRO_STATUS_LAST_STATUS);
+
+const char* cairo_status_text(cairo_status_t status)
+{
+    switch (status) {
+	case CAIRO_STATUS_SUCCESS:			return "SUCCESS";
+	case CAIRO_STATUS_NO_MEMORY:			return "NO_MEMORY";
+	case CAIRO_STATUS_INVALID_RESTORE:		return "INVALID_RESTORE";
+	case CAIRO_STATUS_INVALID_POP_GROUP:		return "INVALID_POP_GROUP";
+	case CAIRO_STATUS_NO_CURRENT_POINT:		return "NO_CURRENT_POINT";
+	case CAIRO_STATUS_INVALID_MATRIX:		return "INVALID_MATRIX";
+	case CAIRO_STATUS_INVALID_STATUS:		return "INVALID_STATUS";
+	case CAIRO_STATUS_NULL_POINTER:			return "NULL_POINTER";
+	case CAIRO_STATUS_INVALID_STRING:		return "INVALID_STATUS";
+	case CAIRO_STATUS_INVALID_PATH_DATA:		return "INVALID_PATH_DATA";
+	case CAIRO_STATUS_READ_ERROR:			return "READ_ERROR";
+	case CAIRO_STATUS_WRITE_ERROR:			return "WRITE_ERROR";
+	case CAIRO_STATUS_SURFACE_FINISHED:		return "SURFACE_FINISHED";
+	case CAIRO_STATUS_SURFACE_TYPE_MISMATCH:	return "SURFACE_TYPE_MISMATCH";
+	case CAIRO_STATUS_PATTERN_TYPE_MISMATCH:	return "PATTERN_TYPE_MISMATCH";
+	case CAIRO_STATUS_INVALID_CONTENT:		return "INVALID_CONTENT";
+	case CAIRO_STATUS_INVALID_FORMAT:		return "INVALID_FORMAT";
+	case CAIRO_STATUS_INVALID_VISUAL:		return "INVALID_VISUAL";
+	case CAIRO_STATUS_FILE_NOT_FOUND:		return "FILE_NOT_FOUND";
+	case CAIRO_STATUS_INVALID_DASH:			return "INVALID_DASH";
+	case CAIRO_STATUS_INVALID_DSC_COMMENT:		return "INVALID_DSC_COMMENT";
+	case CAIRO_STATUS_INVALID_INDEX:		return "INVALID_INDEX";
+	case CAIRO_STATUS_CLIP_NOT_REPRESENTABLE:	return "CLIP_NOT_REPRESENTABLE";
+	case CAIRO_STATUS_TEMP_FILE_ERROR:		return "TEMP_FILE_ERROR";
+	case CAIRO_STATUS_INVALID_STRIDE:		return "INVALID_STRIDE";
+	case CAIRO_STATUS_FONT_TYPE_MISMATCH:		return "FONT_TYPE_MISMATCH";
+	case CAIRO_STATUS_USER_FONT_IMMUTABLE:		return "USER_FONT_IMMUTABLE";
+	case CAIRO_STATUS_USER_FONT_ERROR:		return "USER_FONT_ERROR";
+	case CAIRO_STATUS_NEGATIVE_COUNT:		return "NEGATIVE_COUNT";
+	case CAIRO_STATUS_INVALID_CLUSTERS:		return "INVALID_CLUSTERS";
+	case CAIRO_STATUS_INVALID_SLANT:		return "INVALID_SLANT";
+	case CAIRO_STATUS_INVALID_WEIGHT:		return "INVALID_WEIGHT";
+	case CAIRO_STATUS_INVALID_SIZE:			return "INVALID_SIZE";
+	case CAIRO_STATUS_USER_FONT_NOT_IMPLEMENTED:	return "USER_FONT_NOT_IMPLEMENTED";
+	case CAIRO_STATUS_DEVICE_TYPE_MISMATCH:		return "DEVICE_TYPE_MISMATCH";
+	case CAIRO_STATUS_DEVICE_ERROR:			return "DEVICE_ERROR";
+	case CAIRO_STATUS_INVALID_MESH_CONSTRUCTION:	return "INVALID_MESH_CONSTRUCTION";
+	case CAIRO_STATUS_DEVICE_FINISHED:		return "DEVICE_FINISHED";
+	case CAIRO_STATUS_JBIG2_GLOBAL_MISSING:		return "JBIG2_GLOBAL_MISSING";
+	case CAIRO_STATUS_LAST_STATUS:			return "LAST_STATUS";
+    }
+
+    // unreachable
+    assert(0);
+
+    // make the compiler happy
+    return NULL;
+}
diff --git a/src/cairo.h b/src/cairo.h
index 3104d47..a993d38 100644
--- a/src/cairo.h
+++ b/src/cairo.h
@@ -352,6 +352,8 @@ typedef enum _cairo_status {
     CAIRO_STATUS_LAST_STATUS
 } cairo_status_t;
 
+const char* cairo_status_text(cairo_status_t status);
+
 /**
  * cairo_content_t:
  * @CAIRO_CONTENT_COLOR: The surface will hold color content only. (Since 1.0)
-- 
2.6.4.442.g545299f



More information about the cairo mailing list