Branch Coverage

xs/watermark.xs
Criterion Covered Total %
branch 207 500 41.4


line true false branch
18 26 1 if (!SvOK(text_sv) || SvCUR(text_sv) == 0)
1 25 if (!SvOK(text_sv) || SvCUR(text_sv) == 0)
22 25 0 if (!text || !*text)
0 25 if (!text || !*text)
27 30 24 for (i = 2; i < items; i += 2) {
32 0 30 if (i + 1 >= items) break;
36 20 10 if (strEQ(key, "position")) {
37 0 20 if (!SvOK(val)) {
39 19 1 } else if (SvIOK(val) || SvNOK(val)) {
0 19 } else if (SvIOK(val) || SvNOK(val)) {
43 2 17 if (strEQ(pos, "center")) opts.position = PDFMAKE_WM_POS_CENTER;
44 3 14 else if (strEQ(pos, "diagonal")) opts.position = PDFMAKE_WM_POS_DIAGONAL;
45 2 12 else if (strEQ(pos, "tile")) opts.position = PDFMAKE_WM_POS_TILE;
46 1 11 else if (strEQ(pos, "custom")) opts.position = PDFMAKE_WM_POS_CUSTOM;
47 1 10 else if (strEQ(pos, "top_left")) opts.position = PDFMAKE_WM_POS_TOP_LEFT;
48 1 9 else if (strEQ(pos, "top_center")) opts.position = PDFMAKE_WM_POS_TOP_CENTER;
49 2 7 else if (strEQ(pos, "top_right")) opts.position = PDFMAKE_WM_POS_TOP_RIGHT;
50 2 5 else if (strEQ(pos, "bottom_left")) opts.position = PDFMAKE_WM_POS_BOTTOM_LEFT;
51 1 4 else if (strEQ(pos, "bottom_center")) opts.position = PDFMAKE_WM_POS_BOTTOM_CENTER;
52 1 3 else if (strEQ(pos, "bottom_right")) opts.position = PDFMAKE_WM_POS_BOTTOM_RIGHT;
53 1 2 else if (strEQ(pos, "left_center")) opts.position = PDFMAKE_WM_POS_LEFT_CENTER;
54 1 1 else if (strEQ(pos, "right_center")) opts.position = PDFMAKE_WM_POS_RIGHT_CENTER;
58 2 8 else if (strEQ(key, "opacity")) {
61 1 7 else if (strEQ(key, "rotation")) {
64 1 6 else if (strEQ(key, "scale")) {
67 0 6 else if (strEQ(key, "x_offset")) {
70 0 6 else if (strEQ(key, "y_offset")) {
73 1 5 else if (strEQ(key, "overlay")) {
76 1 4 else if (strEQ(key, "font")) {
79 1 3 else if (strEQ(key, "size")) {
82 1 2 else if (strEQ(key, "color")) {
83 1 0 if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
1 0 if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
85 1 0 if (av_len(av) >= 2) {
92 1 1 else if (strEQ(key, "tile_spacing_x")) {
95 1 0 else if (strEQ(key, "tile_spacing_y")) {
101 0 24 if (!RETVAL)
119 1 3 if (!image_obj)
124 6 3 for (i = 2; i < items; i += 2) {
129 0 6 if (i + 1 >= items) break;
133 2 4 if (strEQ(key, "width")) {
137 1 3 else if (strEQ(key, "height")) {
141 1 2 else if (strEQ(key, "position")) {
142 0 1 if (!SvOK(val)) {
144 1 0 } else if (SvIOK(val) || SvNOK(val)) {
0 1 } else if (SvIOK(val) || SvNOK(val)) {
148 1 0 if (strEQ(pos, "center")) opts.position = PDFMAKE_WM_POS_CENTER;
149 0 0 else if (strEQ(pos, "diagonal")) opts.position = PDFMAKE_WM_POS_DIAGONAL;
150 0 0 else if (strEQ(pos, "tile")) opts.position = PDFMAKE_WM_POS_TILE;
151 0 0 else if (strEQ(pos, "custom")) opts.position = PDFMAKE_WM_POS_CUSTOM;
152 0 0 else if (strEQ(pos, "top_left")) opts.position = PDFMAKE_WM_POS_TOP_LEFT;
153 0 0 else if (strEQ(pos, "top_center")) opts.position = PDFMAKE_WM_POS_TOP_CENTER;
154 0 0 else if (strEQ(pos, "top_right")) opts.position = PDFMAKE_WM_POS_TOP_RIGHT;
155 0 0 else if (strEQ(pos, "bottom_left")) opts.position = PDFMAKE_WM_POS_BOTTOM_LEFT;
156 0 0 else if (strEQ(pos, "bottom_center")) opts.position = PDFMAKE_WM_POS_BOTTOM_CENTER;
157 0 0 else if (strEQ(pos, "bottom_right")) opts.position = PDFMAKE_WM_POS_BOTTOM_RIGHT;
158 0 0 else if (strEQ(pos, "left_center")) opts.position = PDFMAKE_WM_POS_LEFT_CENTER;
159 0 0 else if (strEQ(pos, "right_center")) opts.position = PDFMAKE_WM_POS_RIGHT_CENTER;
163 1 1 else if (strEQ(key, "opacity")) {
166 0 1 else if (strEQ(key, "rotation")) {
169 1 0 else if (strEQ(key, "scale")) {
172 0 0 else if (strEQ(key, "x_offset")) {
175 0 0 else if (strEQ(key, "y_offset")) {
178 0 0 else if (strEQ(key, "overlay")) {
181 0 0 else if (strEQ(key, "tile_spacing_x")) {
184 0 0 else if (strEQ(key, "tile_spacing_y")) {
189 1 2 if (!have_width)
191 1 1 if (!have_height)
195 0 1 if (!RETVAL)
214 0 0 for (i = 3; i < items; i += 2) {
215 0 0 if (i + 1 >= items) break;
219 0 0 if (strEQ(key, "position")) {
222 0 0 else if (strEQ(key, "opacity")) {
225 0 0 else if (strEQ(key, "rotation")) {
228 0 0 else if (strEQ(key, "scale")) {
231 0 0 else if (strEQ(key, "x_offset")) {
234 0 0 else if (strEQ(key, "y_offset")) {
237 0 0 else if (strEQ(key, "overlay")) {
240 0 0 else if (strEQ(key, "font")) {
243 0 0 else if (strEQ(key, "size")) {
246 0 0 else if (strEQ(key, "color")) {
247 0 0 if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
0 0 if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
249 0 0 if (av_len(av) >= 2) {
256 0 0 else if (strEQ(key, "tile_spacing_x")) {
259 0 0 else if (strEQ(key, "tile_spacing_y")) {
265 0 0 if (!RETVAL)
286 0 0 for (i = 5; i < items; i += 2) {
287 0 0 if (i + 1 >= items) break;
291 0 0 if (strEQ(key, "position")) {
294 0 0 else if (strEQ(key, "opacity")) {
297 0 0 else if (strEQ(key, "rotation")) {
300 0 0 else if (strEQ(key, "scale")) {
303 0 0 else if (strEQ(key, "x_offset")) {
306 0 0 else if (strEQ(key, "y_offset")) {
309 0 0 else if (strEQ(key, "overlay")) {
312 0 0 else if (strEQ(key, "tile_spacing_x")) {
315 0 0 else if (strEQ(key, "tile_spacing_y")) {
321 0 0 if (!RETVAL)
336 1 1 RETVAL = (self->type == PDFMAKE_WM_TYPE_TEXT) ? "text" : "image";
344 1 0 if (self->type == PDFMAKE_WM_TYPE_TEXT)
345 1 0 RETVAL = self->data.text.text ? self->data.text.text : "";
355 0 7 RETVAL = self->opts.position;
363 0 3 RETVAL = self->opts.opacity;
371 0 1 RETVAL = self->opts.rotation;
379 0 2 RETVAL = self->opts.scale;
387 0 0 RETVAL = self->opts.x_offset;
395 0 0 RETVAL = self->opts.y_offset;
403 0 2 RETVAL = self->opts.as_overlay;
411 2 0 RETVAL = self->opts.font_name ? self->opts.font_name : "Helvetica-Bold";
419 0 2 RETVAL = self->opts.font_size;
441 1 0 if (self->type == PDFMAKE_WM_TYPE_IMAGE)
452 1 0 if (self->type == PDFMAKE_WM_TYPE_IMAGE)
463 0 1 RETVAL = self->opts.tile_spacing_x;
471 0 1 RETVAL = self->opts.tile_spacing_y;
479 1 0 if (self->type == PDFMAKE_WM_TYPE_IMAGE)
503 0 7 if (!SvOK(format_sv))
509 8 6 for (i = 2; i < items; i += 2) {
514 0 8 if (i + 1 >= items) break;
518 3 5 if (strEQ(key, "position")) {
519 0 3 if (!SvOK(val)) {
521 2 1 } else if (SvIOK(val) || SvNOK(val)) {
0 2 } else if (SvIOK(val) || SvNOK(val)) {
525 0 2 if (strEQ(pos, "center")) opts.position = PDFMAKE_WM_POS_CENTER;
526 0 2 else if (strEQ(pos, "diagonal")) opts.position = PDFMAKE_WM_POS_DIAGONAL;
527 0 2 else if (strEQ(pos, "tile")) opts.position = PDFMAKE_WM_POS_TILE;
528 0 2 else if (strEQ(pos, "custom")) opts.position = PDFMAKE_WM_POS_CUSTOM;
529 0 2 else if (strEQ(pos, "top_left")) opts.position = PDFMAKE_WM_POS_TOP_LEFT;
530 0 2 else if (strEQ(pos, "top_center")) opts.position = PDFMAKE_WM_POS_TOP_CENTER;
531 0 2 else if (strEQ(pos, "top_right")) opts.position = PDFMAKE_WM_POS_TOP_RIGHT;
532 0 2 else if (strEQ(pos, "bottom_left")) opts.position = PDFMAKE_WM_POS_BOTTOM_LEFT;
533 0 2 else if (strEQ(pos, "bottom_center")) opts.position = PDFMAKE_WM_POS_BOTTOM_CENTER;
534 1 1 else if (strEQ(pos, "bottom_right")) opts.position = PDFMAKE_WM_POS_BOTTOM_RIGHT;
535 0 1 else if (strEQ(pos, "left_center")) opts.position = PDFMAKE_WM_POS_LEFT_CENTER;
536 0 1 else if (strEQ(pos, "right_center")) opts.position = PDFMAKE_WM_POS_RIGHT_CENTER;
540 4 1 else if (strEQ(key, "margin_x") || strEQ(key, "margin")) {
0 4 else if (strEQ(key, "margin_x") || strEQ(key, "margin")) {
543 1 3 else if (strEQ(key, "margin_y")) {
546 1 2 else if (strEQ(key, "font")) {
549 1 1 else if (strEQ(key, "size")) {
552 1 0 else if (strEQ(key, "color")) {
553 1 0 if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
1 0 if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
555 1 0 if (av_len(av) >= 2) {
565 0 6 if (!RETVAL)
584 12 3 for (i = 1; i < items; i += 2) {
589 0 12 if (i + 1 >= items) break;
593 3 9 if (strEQ(key, "prefix")) {
596 2 7 else if (strEQ(key, "suffix")) {
599 3 4 else if (strEQ(key, "start")) {
602 3 1 else if (strEQ(key, "digits")) {
605 1 0 else if (strEQ(key, "position")) {
606 0 1 if (!SvOK(val)) {
608 1 0 } else if (SvIOK(val) || SvNOK(val)) {
0 1 } else if (SvIOK(val) || SvNOK(val)) {
612 0 1 if (strEQ(pos, "center")) opts.position = PDFMAKE_WM_POS_CENTER;
613 0 1 else if (strEQ(pos, "diagonal")) opts.position = PDFMAKE_WM_POS_DIAGONAL;
614 0 1 else if (strEQ(pos, "tile")) opts.position = PDFMAKE_WM_POS_TILE;
615 0 1 else if (strEQ(pos, "custom")) opts.position = PDFMAKE_WM_POS_CUSTOM;
616 0 1 else if (strEQ(pos, "top_left")) opts.position = PDFMAKE_WM_POS_TOP_LEFT;
617 0 1 else if (strEQ(pos, "top_center")) opts.position = PDFMAKE_WM_POS_TOP_CENTER;
618 0 1 else if (strEQ(pos, "top_right")) opts.position = PDFMAKE_WM_POS_TOP_RIGHT;
619 0 1 else if (strEQ(pos, "bottom_left")) opts.position = PDFMAKE_WM_POS_BOTTOM_LEFT;
620 0 1 else if (strEQ(pos, "bottom_center")) opts.position = PDFMAKE_WM_POS_BOTTOM_CENTER;
621 1 0 else if (strEQ(pos, "bottom_right")) opts.position = PDFMAKE_WM_POS_BOTTOM_RIGHT;
622 0 0 else if (strEQ(pos, "left_center")) opts.position = PDFMAKE_WM_POS_LEFT_CENTER;
623 0 0 else if (strEQ(pos, "right_center")) opts.position = PDFMAKE_WM_POS_RIGHT_CENTER;
627 0 0 else if (strEQ(key, "margin_x") || strEQ(key, "margin")) {
0 0 else if (strEQ(key, "margin_x") || strEQ(key, "margin")) {
630 0 0 else if (strEQ(key, "margin_y")) {
633 0 0 else if (strEQ(key, "font")) {
636 0 0 else if (strEQ(key, "size")) {
639 0 0 else if (strEQ(key, "color")) {
640 0 0 if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
0 0 if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
642 0 0 if (av_len(av) >= 2) {
652 0 3 if (!RETVAL)
671 0 0 for (i = 3; i < items; i += 2) {
672 0 0 if (i + 1 >= items) break;
676 0 0 if (strEQ(key, "position")) {
679 0 0 else if (strEQ(key, "margin_x") || strEQ(key, "margin")) {
0 0 else if (strEQ(key, "margin_x") || strEQ(key, "margin")) {
682 0 0 else if (strEQ(key, "margin_y")) {
685 0 0 else if (strEQ(key, "font")) {
688 0 0 else if (strEQ(key, "size")) {
691 0 0 else if (strEQ(key, "color")) {
692 0 0 if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
0 0 if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
694 0 0 if (av_len(av) >= 2) {
707 0 0 if (!RETVAL)
729 0 0 for (i = 2; i < items; i += 2) {
730 0 0 if (i + 1 >= items) break;
734 0 0 if (strEQ(key, "prefix")) {
737 0 0 else if (strEQ(key, "suffix")) {
740 0 0 else if (strEQ(key, "start")) {
743 0 0 else if (strEQ(key, "digits")) {
746 0 0 else if (strEQ(key, "position")) {
749 0 0 else if (strEQ(key, "margin_x") || strEQ(key, "margin")) {
0 0 else if (strEQ(key, "margin_x") || strEQ(key, "margin")) {
752 0 0 else if (strEQ(key, "margin_y")) {
755 0 0 else if (strEQ(key, "font")) {
758 0 0 else if (strEQ(key, "size")) {
761 0 0 else if (strEQ(key, "color")) {
762 0 0 if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
0 0 if (SvROK(val) && SvTYPE(SvRV(val)) == SVt_PVAV) {
764 0 0 if (av_len(av) >= 2) {
774 0 0 if (!RETVAL)
789 1 1 RETVAL = (self->type == PDFMAKE_WM_STAMP_TEXT) ? "text" : "bates";
797 0 0 RETVAL = (self->type == PDFMAKE_WM_STAMP_TEXT) ? "text" : "bates";
805 1 0 if (self->type == PDFMAKE_WM_STAMP_TEXT)
806 1 0 RETVAL = self->data.text.format ? self->data.text.format : "";
816 1 0 if (self->type == PDFMAKE_WM_STAMP_BATES)
817 1 0 RETVAL = self->data.bates.prefix ? self->data.bates.prefix : "";
827 1 0 if (self->type == PDFMAKE_WM_STAMP_BATES)
828 1 0 RETVAL = self->data.bates.suffix ? self->data.bates.suffix : "";
838 1 0 if (self->type == PDFMAKE_WM_STAMP_BATES)
849 1 0 if (self->type == PDFMAKE_WM_STAMP_BATES)
860 0 3 RETVAL = self->opts.position;
868 0 2 RETVAL = self->opts.margin_x;
876 0 1 RETVAL = self->opts.margin_y;
884 2 0 RETVAL = self->opts.font_name ? self->opts.font_name : "Helvetica";
892 0 2 RETVAL = self->opts.font_size;
914 1 0 if (self->type == PDFMAKE_WM_STAMP_BATES)
923 0 4 if (self->type != PDFMAKE_WM_STAMP_BATES)
934 4 0 if (text) {
952 0 2 if (items > 3)
955 0 2 if (self->type == PDFMAKE_WM_STAMP_BATES) {
972 2 0 if (text) {
992 0 2 if (pdfmake_doc_add_watermark(self, wm) != PDFMAKE_OK)
1000 0 2 if (pdfmake_doc_add_stamp(self, stamp) != PDFMAKE_OK)
1007 90 0 PDFMAKE_REGISTER_GETTER(stash, "position", pdfmake_watermark_t, opts.position, PDFMAKE_FIELD_INT);
90 0 PDFMAKE_REGISTER_GETTER(stash, "position", pdfmake_watermark_t, opts.position, PDFMAKE_FIELD_INT);
1008 90 0 PDFMAKE_REGISTER_GETTER(stash, "opacity", pdfmake_watermark_t, opts.opacity, PDFMAKE_FIELD_DOUBLE);
90 0 PDFMAKE_REGISTER_GETTER(stash, "opacity", pdfmake_watermark_t, opts.opacity, PDFMAKE_FIELD_DOUBLE);
1009 90 0 PDFMAKE_REGISTER_GETTER(stash, "rotation", pdfmake_watermark_t, opts.rotation, PDFMAKE_FIELD_DOUBLE);
90 0 PDFMAKE_REGISTER_GETTER(stash, "rotation", pdfmake_watermark_t, opts.rotation, PDFMAKE_FIELD_DOUBLE);
1010 90 0 PDFMAKE_REGISTER_GETTER(stash, "scale", pdfmake_watermark_t, opts.scale, PDFMAKE_FIELD_DOUBLE);
90 0 PDFMAKE_REGISTER_GETTER(stash, "scale", pdfmake_watermark_t, opts.scale, PDFMAKE_FIELD_DOUBLE);
1011 90 0 PDFMAKE_REGISTER_GETTER(stash, "x_offset", pdfmake_watermark_t, opts.x_offset, PDFMAKE_FIELD_DOUBLE);
90 0 PDFMAKE_REGISTER_GETTER(stash, "x_offset", pdfmake_watermark_t, opts.x_offset, PDFMAKE_FIELD_DOUBLE);
1012 90 0 PDFMAKE_REGISTER_GETTER(stash, "y_offset", pdfmake_watermark_t, opts.y_offset, PDFMAKE_FIELD_DOUBLE);
90 0 PDFMAKE_REGISTER_GETTER(stash, "y_offset", pdfmake_watermark_t, opts.y_offset, PDFMAKE_FIELD_DOUBLE);
1013 90 0 PDFMAKE_REGISTER_GETTER(stash, "overlay", pdfmake_watermark_t, opts.as_overlay, PDFMAKE_FIELD_INT);
90 0 PDFMAKE_REGISTER_GETTER(stash, "overlay", pdfmake_watermark_t, opts.as_overlay, PDFMAKE_FIELD_INT);
1014 0 90 PDFMAKE_REGISTER_GETTER(stash, "font_size", pdfmake_watermark_t, opts.font_size, PDFMAKE_FIELD_DOUBLE);
0 0 PDFMAKE_REGISTER_GETTER(stash, "font_size", pdfmake_watermark_t, opts.font_size, PDFMAKE_FIELD_DOUBLE);
1015 90 0 PDFMAKE_REGISTER_GETTER(stash, "tile_spacing_x", pdfmake_watermark_t, opts.tile_spacing_x, PDFMAKE_FIELD_DOUBLE);
90 0 PDFMAKE_REGISTER_GETTER(stash, "tile_spacing_x", pdfmake_watermark_t, opts.tile_spacing_x, PDFMAKE_FIELD_DOUBLE);
1016 90 0 PDFMAKE_REGISTER_GETTER(stash, "tile_spacing_y", pdfmake_watermark_t, opts.tile_spacing_y, PDFMAKE_FIELD_DOUBLE);
90 0 PDFMAKE_REGISTER_GETTER(stash, "tile_spacing_y", pdfmake_watermark_t, opts.tile_spacing_y, PDFMAKE_FIELD_DOUBLE);