diff options
Diffstat (limited to 'src/cairo-output-stream.c')
-rw-r--r-- | src/cairo-output-stream.c | 28 |
1 files changed, 26 insertions, 2 deletions
diff --git a/src/cairo-output-stream.c b/src/cairo-output-stream.c index 14b4486a6..17ef7e2cb 100644 --- a/src/cairo-output-stream.c +++ b/src/cairo-output-stream.c @@ -90,6 +90,26 @@ _cairo_output_stream_write (cairo_output_stream_t *stream, return stream->status; } +void +_cairo_output_stream_write_hex_string (cairo_output_stream_t *stream, + const char *data, + size_t length) +{ + const char hex_chars[] = "0123456789abcdef"; + char buffer[2]; + int i, column; + + for (i = 0, column = 0; i < length; i++, column++) { + if (column == 38) { + _cairo_output_stream_write (stream, "\n", 1); + column = 0; + } + buffer[0] = hex_chars[(data[i] >> 4) & 0x0f]; + buffer[1] = hex_chars[data[i] & 0x0f]; + _cairo_output_stream_write (stream, buffer, 2); + } +} + /* Format a double in a locale independent way and trim trailing * zeros. Based on code from Alex Larson <alexl@redhat.com>. * http://mail.gnome.org/archives/gtk-devel-list/2001-October/msg00087.html @@ -187,8 +207,8 @@ _cairo_output_stream_vprintf (cairo_output_stream_t *stream, switch (*f | length_modifier) { case '%': - p[0] = *f; - p[1] = 0; + buffer[0] = *f; + buffer[1] = 0; break; case 'd': snprintf (buffer, sizeof buffer, "%d", va_arg (ap, int)); @@ -211,6 +231,10 @@ _cairo_output_stream_vprintf (cairo_output_stream_t *stream, case 'f': dtostr (buffer, sizeof buffer, va_arg (ap, double)); break; + case 'c': + buffer[0] = va_arg (ap, int); + buffer[1] = 0; + break; default: ASSERT_NOT_REACHED; } |