summaryrefslogtreecommitdiff
path: root/pdf/pdf_form.c
diff options
context:
space:
mode:
authorPaul Gardiner <paulg.artifex@glidos.net>2012-11-08 14:59:30 +0000
committerPaul Gardiner <paulg.artifex@glidos.net>2012-11-08 14:59:30 +0000
commit5f0098aba48a9c2d0bc3c8e41bcaf10f6ff38de6 (patch)
tree8116f0c26a199f769ef7580d9111d49cb6f37103 /pdf/pdf_form.c
parent6f5896f3859c1715cf62343961baed8c78784b5e (diff)
downloadmupdf-5f0098aba48a9c2d0bc3c8e41bcaf10f6ff38de6.tar.xz
Forms: handle all color types in Field.setTextColor
Diffstat (limited to 'pdf/pdf_form.c')
-rw-r--r--pdf/pdf_form.c29
1 files changed, 23 insertions, 6 deletions
diff --git a/pdf/pdf_form.c b/pdf/pdf_form.c
index b292016a..f9ed4c34 100644
--- a/pdf/pdf_form.c
+++ b/pdf/pdf_form.c
@@ -398,10 +398,24 @@ static void fzbuf_print_da(fz_context *ctx, fz_buffer *fzbuf, da_info *di)
if (di->font_name != NULL && di->font_size != 0)
fz_buffer_printf(ctx, fzbuf, "/%s %d Tf", di->font_name, di->font_size);
- if (di->col_size != 0)
+ switch (di->col_size)
+ {
+ case 1:
+ fz_buffer_printf(ctx, fzbuf, " %f g", di->col[0]);
+ break;
+
+ case 3:
fz_buffer_printf(ctx, fzbuf, " %f %f %f rg", di->col[0], di->col[1], di->col[2]);
- else
+ break;
+
+ case 4:
+ fz_buffer_printf(ctx, fzbuf, " %f %f %f %f k", di->col[0], di->col[1], di->col[2], di->col[3]);
+ break;
+
+ default:
fz_buffer_printf(ctx, fzbuf, " 0 g");
+ break;
+ }
}
static fz_rect measure_text(pdf_document *doc, font_info *font_rec, const fz_matrix *tm, char *text)
@@ -2422,11 +2436,14 @@ void pdf_field_set_text_color(pdf_document *doc, pdf_obj *field, pdf_obj *col)
fz_var(daobj);
fz_try(ctx)
{
+ int i;
+
parse_da(ctx, da, &di);
- di.col_size = 3;
- di.col[0] = pdf_to_real(pdf_array_get(col, 0));
- di.col[1] = pdf_to_real(pdf_array_get(col, 1));
- di.col[2] = pdf_to_real(pdf_array_get(col, 2));
+ di.col_size = pdf_array_len(col);
+
+ for (i = 0; i < di.col_size; i++)
+ di.col[i] = pdf_to_real(pdf_array_get(col, i));
+
fzbuf = fz_new_buffer(ctx, 0);
fzbuf_print_da(ctx, fzbuf, &di);
len = fz_buffer_storage(ctx, fzbuf, &buf);