Optimize DjVu drawPage() function

We only need to fill the image buffer with white colour if DjVu page
rendering function did not fill it in with page data.
This commit is contained in:
Tigran Aivazian
2012-10-09 10:23:29 +01:00
committed by Qingping Hou
parent 8ccbfba6cc
commit 0d740d2b3b

15
djvu.c
View File

@@ -476,13 +476,11 @@ static int drawPage(lua_State *L) {
unsigned char adjusted_low[16], adjusted_high[16];
int i, adjust_pixels = 0;
ddjvu_rect_t pagerect, renderrect;
uint8_t *imagebuffer = malloc((bb->w)*(bb->h)+1);
int bbsize = (bb->w)*(bb->h)+1;
uint8_t *imagebuffer = malloc(bbsize);
/*printf("@page %d, @@zoom:%f, offset: (%d, %d)\n", page->num, dc->zoom, dc->offset_x, dc->offset_y);*/
/* fill pixel map with white color */
memset(imagebuffer, 0xFF, (bb->w)*(bb->h)+1);
/* render full page into rectangle specified by pagerect */
pagerect.x = 0;
pagerect.y = 0;
@@ -513,13 +511,8 @@ static int drawPage(lua_State *L) {
* So we don't set rotation here.
*/
ddjvu_page_render(page->page_ref,
djvu_render_mode,
&pagerect,
&renderrect,
page->doc->pixelformat,
bb->w,
imagebuffer);
if (!ddjvu_page_render(page->page_ref, djvu_render_mode, &pagerect, &renderrect, page->doc->pixelformat, bb->w, imagebuffer))
memset(imagebuffer, 0xFF, bbsize);
uint8_t *bbptr = bb->data;
uint8_t *pmptr = imagebuffer;