diff options
author | Tor Andersson <tor.andersson@artifex.com> | 2012-10-31 19:01:50 +0100 |
---|---|---|
committer | Tor Andersson <tor.andersson@artifex.com> | 2012-11-16 14:05:07 +0100 |
commit | 3b276ac7be6e4935e771f6ac46f91c73144594dc (patch) | |
tree | a96aaea36c1c8cabf42cffa9bf807bf849cfb861 | |
parent | 1ced0f58959cde7ef3083efd3990168b56125e7a (diff) | |
download | mupdf-3b276ac7be6e4935e771f6ac46f91c73144594dc.tar.xz |
Add fz_write_buffer_rune to append a utf-8 character to a buffer.
-rw-r--r-- | fitz/fitz-internal.h | 2 | ||||
-rw-r--r-- | fitz/stm_buffer.c | 11 |
2 files changed, 13 insertions, 0 deletions
diff --git a/fitz/fitz-internal.h b/fitz/fitz-internal.h index 76a3e774..043449db 100644 --- a/fitz/fitz-internal.h +++ b/fitz/fitz-internal.h @@ -617,6 +617,8 @@ void fz_write_buffer(fz_context *ctx, fz_buffer *buf, unsigned char *data, int l void fz_write_buffer_byte(fz_context *ctx, fz_buffer *buf, int val); +void fz_write_buffer_rune(fz_context *ctx, fz_buffer *buf, int val); + void fz_write_buffer_bits(fz_context *ctx, fz_buffer *buf, int val, int bits); void fz_write_buffer_pad(fz_context *ctx, fz_buffer *buf); diff --git a/fitz/stm_buffer.c b/fitz/stm_buffer.c index 8445ebc9..42a40584 100644 --- a/fitz/stm_buffer.c +++ b/fitz/stm_buffer.c @@ -124,6 +124,17 @@ void fz_write_buffer_byte(fz_context *ctx, fz_buffer *buf, int val) buf->unused_bits = 0; } +void fz_write_buffer_rune(fz_context *ctx, fz_buffer *buf, int c) +{ + char data[10]; + int len = fz_runetochar(data, c); + if (buf->len + len > buf->cap) + fz_ensure_buffer(ctx, buf, buf->len + len); + memcpy(buf->data + buf->len, data, len); + buf->len += len; + buf->unused_bits = 0; +} + void fz_write_buffer_bits(fz_context *ctx, fz_buffer *buf, int val, int bits) { int shift; |