diff options
Diffstat (limited to 'source/fitz/svg-device.c')
-rw-r--r-- | source/fitz/svg-device.c | 46 |
1 files changed, 4 insertions, 42 deletions
diff --git a/source/fitz/svg-device.c b/source/fitz/svg-device.c index 036c8563..4279761c 100644 --- a/source/fitz/svg-device.c +++ b/source/fitz/svg-device.c @@ -819,44 +819,6 @@ svg_dev_ignore_text(fz_context *ctx, fz_device *dev, const fz_text *text, const } } -static void -send_data_base64(fz_context *ctx, fz_output *out, fz_buffer *buffer) -{ - size_t i, len; - static const char set[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; - - len = buffer->len/3; - for (i = 0; i < len; i++) - { - int c = buffer->data[3*i]; - int d = buffer->data[3*i+1]; - int e = buffer->data[3*i+2]; - if ((i & 15) == 0) - fz_write_printf(ctx, out, "\n"); - fz_write_printf(ctx, out, "%c%c%c%c", set[c>>2], set[((c&3)<<4)|(d>>4)], set[((d&15)<<2)|(e>>6)], set[e & 63]); - } - i *= 3; - switch (buffer->len-i) - { - case 2: - { - int c = buffer->data[i]; - int d = buffer->data[i+1]; - fz_write_printf(ctx, out, "%c%c%c=", set[c>>2], set[((c&3)<<4)|(d>>4)], set[((d&15)<<2)]); - break; - } - case 1: - { - int c = buffer->data[i]; - fz_write_printf(ctx, out, "%c%c==", set[c>>2], set[(c&3)<<4]); - break; - } - default: - case 0: - break; - } -} - /* We spot repeated images, and send them just once using * symbols. Unfortunately, for pathological files, such * as the example in Bug695988, this can cause viewers to @@ -904,14 +866,14 @@ svg_send_image(fz_context *ctx, svg_device *sdev, fz_image *img, const fz_color_ { case FZ_IMAGE_PNG: fz_write_printf(ctx, out, "image/png;base64,"); - send_data_base64(ctx, out, buffer->buffer); + fz_write_base64_buffer(ctx, out, buffer->buffer, 1); break; case FZ_IMAGE_JPEG: /* SVG cannot cope with CMYK images */ if (img->colorspace != fz_device_cmyk(ctx)) { fz_write_printf(ctx, out, "image/jpeg;base64,"); - send_data_base64(ctx, out, buffer->buffer); + fz_write_base64_buffer(ctx, out, buffer->buffer, 1); break; } /*@fallthough@*/ @@ -919,7 +881,7 @@ svg_send_image(fz_context *ctx, svg_device *sdev, fz_image *img, const fz_color_ { fz_buffer *buf = fz_new_buffer_from_image_as_png(ctx, img, color_params); fz_write_printf(ctx, out, "image/png;base64,"); - send_data_base64(ctx, out, buf); + fz_write_base64_buffer(ctx, out, buf, 1); fz_drop_buffer(ctx, buf); break; } @@ -990,7 +952,7 @@ svg_dev_fill_shade(fz_context *ctx, fz_device *dev, fz_shade *shade, const fz_ma if (alpha != 1.0f) fz_write_printf(ctx, out, "<g opacity=\"%g\">\n", alpha); fz_write_printf(ctx, out, "<image x=\"%d\" y=\"%d\" width=\"%d\" height=\"%d\" xlink:href=\"data:image/png;base64,", pix->x, pix->y, pix->w, pix->h); - send_data_base64(ctx, out, buf); + fz_write_base64_buffer(ctx, out, buf, 1); fz_write_printf(ctx, out, "\"/>\n"); if (alpha != 1.0f) fz_write_printf(ctx, out, "</g>\n"); |