summaryrefslogtreecommitdiff
path: root/source/fitz/stext-output.c
diff options
context:
space:
mode:
authorTor Andersson <tor.andersson@artifex.com>2015-01-21 16:42:45 +0100
committerTor Andersson <tor.andersson@artifex.com>2015-02-17 18:05:39 +0100
commitf84a189d5f94250e46d2cbd1a75aba00130e2dd6 (patch)
tree8ee614ab90de1baa8941f91ae4946ed5c2e70721 /source/fitz/stext-output.c
parent681039767f2ccc72e236246178893eb0989169c9 (diff)
downloadmupdf-f84a189d5f94250e46d2cbd1a75aba00130e2dd6.tar.xz
Add ctx parameter and remove embedded contexts for API regularity.
Purge several embedded contexts: Remove embedded context in fz_output. Remove embedded context in fz_stream. Remove embedded context in fz_device. Remove fz_rebind_stream (since it is no longer necessary). Remove embedded context in svg_device. Remove embedded context in XML parser. Add ctx argument to fz_document functions. Remove embedded context in fz_document. Remove embedded context in pdf_document. Remove embedded context in pdf_obj. Make fz_page independent of fz_document in the interface. We shouldn't need to pass the document to all functions handling a page. If a page is tied to the source document, it's redundant; otherwise it's just pointless. Fix reference counting oddity in fz_new_image_from_pixmap.
Diffstat (limited to 'source/fitz/stext-output.c')
-rw-r--r--source/fitz/stext-output.c172
1 files changed, 86 insertions, 86 deletions
diff --git a/source/fitz/stext-output.c b/source/fitz/stext-output.c
index 6ed595fc..f090020d 100644
--- a/source/fitz/stext-output.c
+++ b/source/fitz/stext-output.c
@@ -29,39 +29,39 @@ static int font_is_italic(fz_font *font)
}
static void
-fz_print_style_begin(fz_output *out, fz_text_style *style)
+fz_print_style_begin(fz_context *ctx, fz_output *out, fz_text_style *style)
{
int script = style->script;
- fz_printf(out, "<span class=\"s%d\">", style->id);
+ fz_printf(ctx, out, "<span class=\"s%d\">", style->id);
while (script-- > 0)
- fz_printf(out, "<sup>");
+ fz_printf(ctx, out, "<sup>");
while (++script < 0)
- fz_printf(out, "<sub>");
+ fz_printf(ctx, out, "<sub>");
}
static void
-fz_print_style_end(fz_output *out, fz_text_style *style)
+fz_print_style_end(fz_context *ctx, fz_output *out, fz_text_style *style)
{
int script = style->script;
while (script-- > 0)
- fz_printf(out, "</sup>");
+ fz_printf(ctx, out, "</sup>");
while (++script < 0)
- fz_printf(out, "</sub>");
- fz_printf(out, "</span>");
+ fz_printf(ctx, out, "</sub>");
+ fz_printf(ctx, out, "</span>");
}
static void
-fz_print_style(fz_output *out, fz_text_style *style)
+fz_print_style(fz_context *ctx, fz_output *out, fz_text_style *style)
{
char *s = strchr(style->font->name, '+');
s = s ? s + 1 : style->font->name;
- fz_printf(out, "span.s%d{font-family:\"%s\";font-size:%gpt;",
+ fz_printf(ctx, out, "span.s%d{font-family:\"%s\";font-size:%gpt;",
style->id, s, style->size);
if (font_is_italic(style->font))
- fz_printf(out, "font-style:italic;");
+ fz_printf(ctx, out, "font-style:italic;");
if (font_is_bold(style->font))
- fz_printf(out, "font-weight:bold;");
- fz_printf(out, "}\n");
+ fz_printf(ctx, out, "font-weight:bold;");
+ fz_printf(ctx, out, "}\n");
}
void
@@ -69,11 +69,11 @@ fz_print_text_sheet(fz_context *ctx, fz_output *out, fz_text_sheet *sheet)
{
fz_text_style *style;
for (style = sheet->style; style; style = style->next)
- fz_print_style(out, style);
+ fz_print_style(ctx, out, style);
}
static void
-send_data_base64(fz_output *out, fz_buffer *buffer)
+send_data_base64(fz_context *ctx, fz_output *out, fz_buffer *buffer)
{
int i, len;
static const char set[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/";
@@ -85,8 +85,8 @@ send_data_base64(fz_output *out, fz_buffer *buffer)
int d = buffer->data[3*i+1];
int e = buffer->data[3*i+2];
if ((i & 15) == 0)
- fz_printf(out, "\n");
- fz_printf(out, "%c%c%c%c", set[c>>2], set[((c&3)<<4)|(d>>4)], set[((d&15)<<2)|(e>>6)], set[e & 63]);
+ fz_printf(ctx, out, "\n");
+ fz_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)
@@ -95,13 +95,13 @@ send_data_base64(fz_output *out, fz_buffer *buffer)
{
int c = buffer->data[i];
int d = buffer->data[i+1];
- fz_printf(out, "%c%c%c=", set[c>>2], set[((c&3)<<4)|(d>>4)], set[((d&15)<<2)]);
+ fz_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_printf(out, "%c%c==", set[c>>2], set[(c&3)<<4]);
+ fz_printf(ctx, out, "%c%c==", set[c>>2], set[(c&3)<<4]);
break;
}
default:
@@ -119,7 +119,7 @@ fz_print_text_page_html(fz_context *ctx, fz_output *out, fz_text_page *page)
fz_text_span *span;
void *last_region = NULL;
- fz_printf(out, "<div class=\"page\">\n");
+ fz_printf(ctx, out, "<div class=\"page\">\n");
for (block_n = 0; block_n < page->len; block_n++)
{
@@ -128,7 +128,7 @@ fz_print_text_page_html(fz_context *ctx, fz_output *out, fz_text_page *page)
case FZ_PAGE_BLOCK_TEXT:
{
fz_text_block * block = page->blocks[block_n].u.text;
- fz_printf(out, "<div class=\"block\"><p>\n");
+ fz_printf(ctx, out, "<div class=\"block\"><p>\n");
for (line_n = 0; line_n < block->len; line_n++)
{
int lastcol=-1;
@@ -138,16 +138,16 @@ fz_print_text_page_html(fz_context *ctx, fz_output *out, fz_text_page *page)
if (line->region != last_region)
{
if (last_region)
- fz_printf(out, "</div>");
- fz_printf(out, "<div class=\"metaline\">");
+ fz_printf(ctx, out, "</div>");
+ fz_printf(ctx, out, "<div class=\"metaline\">");
last_region = line->region;
}
- fz_printf(out, "<div class=\"line\"");
+ fz_printf(ctx, out, "<div class=\"line\"");
#ifdef DEBUG_INTERNALS
if (line->region)
- fz_printf(out, " region=\"%x\"", line->region);
+ fz_printf(ctx, out, " region=\"%x\"", line->region);
#endif
- fz_printf(out, ">");
+ fz_printf(ctx, out, ">");
for (span = line->first_span; span; span = span->next)
{
float size = fz_matrix_expansion(&span->transform);
@@ -157,17 +157,17 @@ fz_print_text_page_html(fz_context *ctx, fz_output *out, fz_text_page *page)
{
if (lastcol >= 0)
{
- fz_printf(out, "</div>");
+ fz_printf(ctx, out, "</div>");
}
/* If we skipped any columns then output some spacer spans */
while (lastcol < span->column-1)
{
- fz_printf(out, "<div class=\"cell\"></div>");
+ fz_printf(ctx, out, "<div class=\"cell\"></div>");
lastcol++;
}
lastcol++;
/* Now output the span to contain this entire column */
- fz_printf(out, "<div class=\"cell\" style=\"");
+ fz_printf(ctx, out, "<div class=\"cell\" style=\"");
{
fz_text_span *sn;
for (sn = span->next; sn; sn = sn->next)
@@ -175,103 +175,103 @@ fz_print_text_page_html(fz_context *ctx, fz_output *out, fz_text_page *page)
if (sn->column != lastcol)
break;
}
- fz_printf(out, "width:%g%%;align:%s", span->column_width, (span->align == 0 ? "left" : (span->align == 1 ? "center" : "right")));
+ fz_printf(ctx, out, "width:%g%%;align:%s", span->column_width, (span->align == 0 ? "left" : (span->align == 1 ? "center" : "right")));
}
if (span->indent > 1)
- fz_printf(out, ";padding-left:1em;text-indent:-1em");
+ fz_printf(ctx, out, ";padding-left:1em;text-indent:-1em");
if (span->indent < -1)
- fz_printf(out, ";text-indent:1em");
- fz_printf(out, "\">");
+ fz_printf(ctx, out, ";text-indent:1em");
+ fz_printf(ctx, out, "\">");
}
#ifdef DEBUG_INTERNALS
- fz_printf(out, "<span class=\"internal_span\"");
+ fz_printf(ctx, out, "<span class=\"internal_span\"");
if (span->column)
- fz_printf(out, " col=\"%x\"", span->column);
- fz_printf(out, ">");
+ fz_printf(ctx, out, " col=\"%x\"", span->column);
+ fz_printf(ctx, out, ">");
#endif
if (span->spacing >= 1)
- fz_printf(out, " ");
+ fz_printf(ctx, out, " ");
if (base_offset > SUBSCRIPT_OFFSET)
- fz_printf(out, "<sub>");
+ fz_printf(ctx, out, "<sub>");
else if (base_offset < SUPERSCRIPT_OFFSET)
- fz_printf(out, "<sup>");
+ fz_printf(ctx, out, "<sup>");
for (ch_n = 0; ch_n < span->len; ch_n++)
{
fz_text_char *ch = &span->text[ch_n];
if (style != ch->style)
{
if (style)
- fz_print_style_end(out, style);
- fz_print_style_begin(out, ch->style);
+ fz_print_style_end(ctx, out, style);
+ fz_print_style_begin(ctx, out, ch->style);
style = ch->style;
}
if (ch->c == '<')
- fz_printf(out, "&lt;");
+ fz_printf(ctx, out, "&lt;");
else if (ch->c == '>')
- fz_printf(out, "&gt;");
+ fz_printf(ctx, out, "&gt;");
else if (ch->c == '&')
- fz_printf(out, "&amp;");
+ fz_printf(ctx, out, "&amp;");
else if (ch->c >= 32 && ch->c <= 127)
- fz_printf(out, "%c", ch->c);
+ fz_printf(ctx, out, "%c", ch->c);
else
- fz_printf(out, "&#x%x;", ch->c);
+ fz_printf(ctx, out, "&#x%x;", ch->c);
}
if (style)
{
- fz_print_style_end(out, style);
+ fz_print_style_end(ctx, out, style);
style = NULL;
}
if (base_offset > SUBSCRIPT_OFFSET)
- fz_printf(out, "</sub>");
+ fz_printf(ctx, out, "</sub>");
else if (base_offset < SUPERSCRIPT_OFFSET)
- fz_printf(out, "</sup>");
+ fz_printf(ctx, out, "</sup>");
#ifdef DEBUG_INTERNALS
- fz_printf(out, "</span>");
+ fz_printf(ctx, out, "</span>");
#endif
}
/* Close our floating span */
- fz_printf(out, "</div>");
+ fz_printf(ctx, out, "</div>");
/* Close the line */
- fz_printf(out, "</div>");
- fz_printf(out, "\n");
+ fz_printf(ctx, out, "</div>");
+ fz_printf(ctx, out, "\n");
}
/* Close the metaline */
- fz_printf(out, "</div>");
+ fz_printf(ctx, out, "</div>");
last_region = NULL;
- fz_printf(out, "</p></div>\n");
+ fz_printf(ctx, out, "</p></div>\n");
break;
}
case FZ_PAGE_BLOCK_IMAGE:
{
fz_image_block *image = page->blocks[block_n].u.image;
- fz_printf(out, "<img width=%d height=%d src=\"data:", image->image->w, image->image->h);
+ fz_printf(ctx, out, "<img width=%d height=%d src=\"data:", image->image->w, image->image->h);
switch (image->image->buffer == NULL ? FZ_IMAGE_JPX : image->image->buffer->params.type)
{
case FZ_IMAGE_JPEG:
- fz_printf(out, "image/jpeg;base64,");
- send_data_base64(out, image->image->buffer->buffer);
+ fz_printf(ctx, out, "image/jpeg;base64,");
+ send_data_base64(ctx, out, image->image->buffer->buffer);
break;
case FZ_IMAGE_PNG:
- fz_printf(out, "image/png;base64,");
- send_data_base64(out, image->image->buffer->buffer);
+ fz_printf(ctx, out, "image/png;base64,");
+ send_data_base64(ctx, out, image->image->buffer->buffer);
break;
default:
{
fz_buffer *buf = fz_new_png_from_image(ctx, image->image, image->image->w, image->image->h);
- fz_printf(out, "image/png;base64,");
- send_data_base64(out, buf);
+ fz_printf(ctx, out, "image/png;base64,");
+ send_data_base64(ctx, out, buf);
fz_drop_buffer(ctx, buf);
break;
}
}
- fz_printf(out, "\">\n");
+ fz_printf(ctx, out, "\">\n");
break;
}
}
}
- fz_printf(out, "</div>\n");
+ fz_printf(ctx, out, "</div>\n");
}
void
@@ -279,7 +279,7 @@ fz_print_text_page_xml(fz_context *ctx, fz_output *out, fz_text_page *page)
{
int block_n;
- fz_printf(out, "<page width=\"%g\" height=\"%g\">\n",
+ fz_printf(ctx, out, "<page width=\"%g\" height=\"%g\">\n",
page->mediabox.x1 - page->mediabox.x0,
page->mediabox.y1 - page->mediabox.y0);
@@ -293,12 +293,12 @@ fz_print_text_page_xml(fz_context *ctx, fz_output *out, fz_text_page *page)
fz_text_line *line;
char *s;
- fz_printf(out, "<block bbox=\"%g %g %g %g\">\n",
+ fz_printf(ctx, out, "<block bbox=\"%g %g %g %g\">\n",
block->bbox.x0, block->bbox.y0, block->bbox.x1, block->bbox.y1);
for (line = block->lines; line < block->lines + block->len; line++)
{
fz_text_span *span;
- fz_printf(out, "<line bbox=\"%g %g %g %g\">\n",
+ fz_printf(ctx, out, "<line bbox=\"%g %g %g %g\">\n",
line->bbox.x0, line->bbox.y0, line->bbox.x1, line->bbox.y1);
for (span = line->first_span; span; span = span->next)
{
@@ -311,43 +311,43 @@ fz_print_text_page_xml(fz_context *ctx, fz_output *out, fz_text_page *page)
{
if (style)
{
- fz_printf(out, "</span>\n");
+ fz_printf(ctx, out, "</span>\n");
}
style = ch->style;
s = strchr(style->font->name, '+');
s = s ? s + 1 : style->font->name;
- fz_printf(out, "<span bbox=\"%g %g %g %g\" font=\"%s\" size=\"%g\">\n",
+ fz_printf(ctx, out, "<span bbox=\"%g %g %g %g\" font=\"%s\" size=\"%g\">\n",
span->bbox.x0, span->bbox.y0, span->bbox.x1, span->bbox.y1,
s, style->size);
}
{
fz_rect rect;
- fz_text_char_bbox(&rect, span, char_num);
- fz_printf(out, "<char bbox=\"%g %g %g %g\" x=\"%g\" y=\"%g\" c=\"",
+ fz_text_char_bbox(ctx, &rect, span, char_num);
+ fz_printf(ctx, out, "<char bbox=\"%g %g %g %g\" x=\"%g\" y=\"%g\" c=\"",
rect.x0, rect.y0, rect.x1, rect.y1, ch->p.x, ch->p.y);
}
switch (ch->c)
{
- case '<': fz_printf(out, "&lt;"); break;
- case '>': fz_printf(out, "&gt;"); break;
- case '&': fz_printf(out, "&amp;"); break;
- case '"': fz_printf(out, "&quot;"); break;
- case '\'': fz_printf(out, "&apos;"); break;
+ case '<': fz_printf(ctx, out, "&lt;"); break;
+ case '>': fz_printf(ctx, out, "&gt;"); break;
+ case '&': fz_printf(ctx, out, "&amp;"); break;
+ case '"': fz_printf(ctx, out, "&quot;"); break;
+ case '\'': fz_printf(ctx, out, "&apos;"); break;
default:
if (ch->c >= 32 && ch->c <= 127)
- fz_printf(out, "%c", ch->c);
+ fz_printf(ctx, out, "%c", ch->c);
else
- fz_printf(out, "&#x%x;", ch->c);
+ fz_printf(ctx, out, "&#x%x;", ch->c);
break;
}
- fz_printf(out, "\"/>\n");
+ fz_printf(ctx, out, "\"/>\n");
}
if (style)
- fz_printf(out, "</span>\n");
+ fz_printf(ctx, out, "</span>\n");
}
- fz_printf(out, "</line>\n");
+ fz_printf(ctx, out, "</line>\n");
}
- fz_printf(out, "</block>\n");
+ fz_printf(ctx, out, "</block>\n");
break;
}
case FZ_PAGE_BLOCK_IMAGE:
@@ -356,7 +356,7 @@ fz_print_text_page_xml(fz_context *ctx, fz_output *out, fz_text_page *page)
}
}
}
- fz_printf(out, "</page>\n");
+ fz_printf(ctx, out, "</page>\n");
}
void
@@ -385,12 +385,12 @@ fz_print_text_page(fz_context *ctx, fz_output *out, fz_text_page *page)
{
n = fz_runetochar(utf, ch->c);
for (i = 0; i < n; i++)
- fz_printf(out, "%c", utf[i]);
+ fz_printf(ctx, out, "%c", utf[i]);
}
}
- fz_printf(out, "\n");
+ fz_printf(ctx, out, "\n");
}
- fz_printf(out, "\n");
+ fz_printf(ctx, out, "\n");
break;
}
case FZ_PAGE_BLOCK_IMAGE: