summaryrefslogtreecommitdiff
path: root/apps/pdfdraw.c
diff options
context:
space:
mode:
authorTor Andersson <tor@ghostscript.com>2010-04-15 22:40:41 +0200
committerTor Andersson <tor@ghostscript.com>2010-04-15 22:40:41 +0200
commit80f493b34eb72dfad76d06a97545e64afff84f78 (patch)
treee048b299da91aba52b878eab6242780f9f896bfc /apps/pdfdraw.c
parentbd7e94651b00d884ffb0a5349182d99a87396a6d (diff)
downloadmupdf-80f493b34eb72dfad76d06a97545e64afff84f78.tar.xz
Make the glyph cache an input to fz_newdrawdevice so that it can be shared between pages.
Diffstat (limited to 'apps/pdfdraw.c')
-rw-r--r--apps/pdfdraw.c10
1 files changed, 9 insertions, 1 deletions
diff --git a/apps/pdfdraw.c b/apps/pdfdraw.c
index 14ec4afd..8f840bd0 100644
--- a/apps/pdfdraw.c
+++ b/apps/pdfdraw.c
@@ -50,6 +50,7 @@ struct benchmark
int maxpage;
};
+static fz_glyphcache *drawcache = nil;
static int drawmode = DRAWPNM;
static char *drawpattern = nil;
static pdf_page *drawpage = nil;
@@ -67,6 +68,11 @@ static void local_cleanup(void)
pdf_dropstore(xref->store);
xref->store = nil;
}
+ if (drawcache)
+ {
+ fz_freeglyphcache(drawcache);
+ drawcache = nil;
+ }
}
static void drawusage(void)
@@ -216,7 +222,7 @@ static void drawpnm(int pagenum, struct benchmark *loadtimes, struct benchmark *
if (drawbands > 1)
fprintf(stdout, "drawing band %d / %d\n", b + 1, drawbands);
- dev = fz_newdrawdevice(pix);
+ dev = fz_newdrawdevice(drawcache, pix);
drawpage->contents->rp = drawpage->contents->bp;
error = pdf_runcontentstream(dev, ctm, xref, drawpage->resources, drawpage->contents);
if (error)
@@ -454,6 +460,8 @@ int main(int argc, char **argv)
if (fz_optind == argc)
drawusage();
+ drawcache = fz_newglyphcache(512, 512*512);
+
setcleanup(local_cleanup);
state = NO_FILE_OPENED;