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

Bill Spitzak spitzak at gmail.com
Fri Dec 18 10:25:29 PST 2015


I think LAST_STATUS should print a number, not a message.

On Fri, Dec 18, 2015 at 5:28 AM, Enrico Weigelt, metux IT consult <
enrico.weigelt at gr13.net> wrote:

> Signed-off-by: Enrico Weigelt, metux IT consult <enrico.weigelt at gr13.net>
> ---
>  src/cairo-error.c | 50 ++++++++++++++++++++++++++++++++++++++++++++++++++
>  src/cairo.h       |  2 ++
>  2 files changed, 52 insertions(+)
>
> diff --git a/src/cairo-error.c b/src/cairo-error.c
> index 1b9bd76..6f13c77 100644
> --- a/src/cairo-error.c
> +++ b/src/cairo-error.c
> @@ -71,3 +71,53 @@ _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";
> +    }
> +
> +    static __thread char _buf[32];
> +    snprintf(_buf, sizeof(_buf), "%d", status);
> +    return _buf;
> +}
> 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
>
> --
> cairo mailing list
> cairo at cairographics.org
> http://lists.cairographics.org/mailman/listinfo/cairo
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.cairographics.org/archives/cairo/attachments/20151218/1f45be2c/attachment.html>


More information about the cairo mailing list