3 #include <poppler/cpp/poppler-document.h>
4 #include <poppler/cpp/poppler-image.h>
5 #include <poppler/cpp/poppler-page.h>
6 #include <poppler/cpp/poppler-page-renderer.h>
14 poppler::document
*doc
;
17 static poppler::rotation_enum
rotation(int times
)
20 return poppler::rotate_90
;
22 return poppler::rotate_180
;
24 return poppler::rotate_270
;
25 return poppler::rotate_0
;
28 int doc_draw(struct doc
*doc
, int p
, int zoom
, int rotate
,
29 fbval_t
*bitmap
, int *rows
, int *cols
)
31 poppler::page
*page
= doc
->doc
->create_page(p
- 1);
32 poppler::page_renderer pr
;
36 pr
.set_render_hint(poppler::page_renderer::antialiasing
, true);
37 pr
.set_render_hint(poppler::page_renderer::text_antialiasing
, true);
38 poppler::image img
= pr
.render_page(page
, 72 * zoom
/ 10, 72 * zoom
/ 10,
39 -1, -1, -1, -1, rotation((rotate
+ 89) / 90));
42 dat
= (unsigned char *) img
.data();
43 for (y
= 0; y
< h
; y
++) {
44 int xs
= y
* *cols
+ (*cols
- w
) / 2;
45 for (x
= 0; x
< w
; x
++) {
46 unsigned char *s
= dat
+ img
.bytes_per_row() * y
+ x
* 4;
47 bitmap
[xs
+ x
] = FB_VAL(s
[2], s
[1], s
[0]);
56 int doc_pages(struct doc
*doc
)
58 return doc
->doc
->pages();
61 struct doc
*doc_open(char *path
)
63 struct doc
*doc
= (struct doc
*) malloc(sizeof(*doc
));
64 doc
->doc
= poppler::document::load_from_file(path
);
72 void doc_close(struct doc
*doc
)