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>
13 poppler::document
*doc
;
16 static poppler::rotation_enum
rotation(int times
)
19 return poppler::rotate_90
;
21 return poppler::rotate_180
;
23 return poppler::rotate_270
;
24 return poppler::rotate_0
;
27 int doc_draw(struct doc
*doc
, int p
, int zoom
, int rotate
,
28 fbval_t
*bitmap
, int *rows
, int *cols
)
30 poppler::page
*page
= doc
->doc
->create_page(p
- 1);
31 poppler::page_renderer pr
;
35 pr
.set_render_hint(poppler::page_renderer::antialiasing
, true);
36 pr
.set_render_hint(poppler::page_renderer::text_antialiasing
, true);
37 poppler::image img
= pr
.render_page(page
, 72 * zoom
/ 10, 72 * zoom
/ 10,
38 -1, -1, -1, -1, rotation((rotate
+ 89) / 90));
41 dat
= (unsigned char *) img
.data();
42 for (y
= 0; y
< h
; y
++) {
43 int xs
= y
* *cols
+ (*cols
- w
) / 2;
44 for (x
= 0; x
< w
; x
++) {
45 unsigned char *s
= dat
+ img
.bytes_per_row() * y
+ x
* 4;
46 bitmap
[xs
+ x
] = FB_VAL(s
[2], s
[1], s
[0]);
55 int doc_pages(struct doc
*doc
)
57 return doc
->doc
->pages();
60 struct doc
*doc_open(char *path
)
62 struct doc
*doc
= (struct doc
*) malloc(sizeof(*doc
));
63 doc
->doc
= poppler::document::load_from_file(path
);
71 void doc_close(struct doc
*doc
)