summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2012-10-31 19:01:50 +0100
committerTor Andersson <tor.andersson@artifex.com>2012-11-16 14:05:07 +0100
commit3b276ac7be6e4935e771f6ac46f91c73144594dc (patch)
treea96aaea36c1c8cabf42cffa9bf807bf849cfb861
parent1ced0f58959cde7ef3083efd3990168b56125e7a (diff)
downloadmupdf-3b276ac7be6e4935e771f6ac46f91c73144594dc.tar.xz
Add fz_write_buffer_rune to append a utf-8 character to a buffer.
-rw-r--r--fitz/fitz-internal.h2
-rw-r--r--fitz/stm_buffer.c11
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;