File Coverage

xs/page.xs
Criterion Covered Total %
statement 20 31 64.5
branch 21 42 50.0
condition n/a
subroutine n/a
pod n/a
total 41 73 56.1


line stmt bran cond sub pod time code
1             MODULE = PDF::Make PACKAGE = PDF::Make::Page
2             PROTOTYPES: ENABLE
3              
4             int
5             add_font(self, name, base_font)
6             pdfmake_page_t *self
7             const char *name
8             const char *base_font
9             CODE:
10 0           RETVAL = pdfmake_page_add_font(self, name, base_font);
11 0 0         if (RETVAL < 0)
12 0           croak("PDF::Make::Page::add_font: failed to add font %s", name);
13             OUTPUT:
14             RETVAL
15              
16             int
17             add_std14_font(self, name, font_id)
18             pdfmake_page_t *self
19             const char *name
20             int font_id
21             CODE:
22 237           RETVAL = pdfmake_page_add_std14_font(self, name, (pdfmake_std14_font_t)font_id);
23 237 50         if (RETVAL < 0)
24 0           croak("PDF::Make::Page::add_std14_font: failed to add standard font");
25             OUTPUT:
26             RETVAL
27              
28             void
29             set_content(self, content)
30             pdfmake_page_t *self
31             SV *content
32             PREINIT:
33             STRLEN len;
34             const char *data;
35             CODE:
36 183           data = SvPV(content, len);
37 183 50         if (pdfmake_page_set_content(self, (const uint8_t*)data, len) != PDFMAKE_OK)
38 0           croak("PDF::Make::Page::set_content: failed to set content");
39              
40             void
41             append_content(self, content)
42             pdfmake_page_t *self
43             SV *content
44             PREINIT:
45             STRLEN len;
46             const char *data;
47             CODE:
48 0           data = SvPV(content, len);
49 0 0         if (pdfmake_page_append_content(self, (const uint8_t*)data, len) != PDFMAKE_OK)
50 0           croak("PDF::Make::Page::append_content: failed");
51              
52             int
53             add_image(self, name, img_obj_num)
54             pdfmake_page_t *self
55             const char *name
56             UV img_obj_num
57             CODE:
58 17           RETVAL = pdfmake_page_add_image(self, name, (uint32_t)img_obj_num);
59 17 50         if (RETVAL < 0)
60 0           croak("PDF::Make::Page::add_image: failed to add image %s", name);
61             OUTPUT:
62             RETVAL
63              
64             void
65             add_annot(self, annot_obj_num)
66             pdfmake_page_t *self
67             UV annot_obj_num
68             CODE:
69 30 50         if (pdfmake_page_add_annot(self, (uint32_t)annot_obj_num) != PDFMAKE_OK)
70 0           croak("PDF::Make::Page::add_annot: failed to add annotation %u", (unsigned)annot_obj_num);
71              
72             double
73             width(self)
74             pdfmake_page_t *self
75             CODE:
76 45 100         RETVAL = self->width;
77             OUTPUT:
78             RETVAL
79              
80             double
81             height(self)
82             pdfmake_page_t *self
83             CODE:
84 45 100         RETVAL = self->height;
85             OUTPUT:
86             RETVAL
87              
88             void
89             DESTROY(self)
90             pdfmake_page_t *self
91             CODE:
92             /* Page is owned by document, freed when document is freed */
93             PERL_UNUSED_VAR(self);
94              
95             int
96             add_ocg(self, name, ocg_obj_num)
97             pdfmake_page_t *self
98             const char *name
99             UV ocg_obj_num
100             CODE:
101 10           RETVAL = pdfmake_page_add_ocg(self, name, (uint32_t)ocg_obj_num);
102 10 50         if (RETVAL < 0)
103 0           croak("PDF::Make::Page::add_ocg: failed to add OCG %s", name);
104             OUTPUT:
105             RETVAL
106              
107             BOOT:
108             {
109 90           HV *stash = gv_stashpv("PDF::Make::Page", GV_ADD);
110 90 50         PDFMAKE_REGISTER_GETTER(stash, "width", pdfmake_page_t, width, PDFMAKE_FIELD_DOUBLE);
    50          
111 90 50         PDFMAKE_REGISTER_GETTER(stash, "height", pdfmake_page_t, height, PDFMAKE_FIELD_DOUBLE);
    50          
112              
113             /* Page method dispatch (returns int, not self) */
114             enum { POP_ADD_FONT, POP_ADD_STD14, POP_ADD_IMAGE, POP_ADD_OCG, POP_COUNT };
115             static pdfmake_chain_entry_t page_dispatch[POP_COUNT] = {
116             [POP_ADD_FONT] = { (void*)pdfmake_page_add_font, 2, {PDFMAKE_ARG_STRING, PDFMAKE_ARG_STRING}, .ret_mode=1 },
117             [POP_ADD_STD14] = { (void*)pdfmake_page_add_std14_font, 2, {PDFMAKE_ARG_STRING, PDFMAKE_ARG_INT}, 1 },
118             [POP_ADD_IMAGE] = { (void*)pdfmake_page_add_image, 2, {PDFMAKE_ARG_STRING, PDFMAKE_ARG_INT}, 1 },
119             [POP_ADD_OCG] = { (void*)pdfmake_page_add_ocg, 2, {PDFMAKE_ARG_STRING, PDFMAKE_ARG_INT}, 1 },
120             };
121 90           int page_table_id = pdfmake_chain_table_count++;
122 90           pdfmake_chain_tables[page_table_id] = page_dispatch;
123              
124 90 50         PDFMAKE_REGISTER_CHAIN(stash, "add_font", page_table_id, POP_ADD_FONT);
    50          
125 90 50         PDFMAKE_REGISTER_CHAIN(stash, "add_std14_font", page_table_id, POP_ADD_STD14);
    50          
126 90 50         PDFMAKE_REGISTER_CHAIN(stash, "add_image", page_table_id, POP_ADD_IMAGE);
    50          
127 90 50         PDFMAKE_REGISTER_CHAIN(stash, "add_ocg", page_table_id, POP_ADD_OCG);
    50          
128             }