diff options
| author | Mathieu Lonjaret <mathieu.lonjaret@gmail.com> | 2010-02-04 02:05:03 -0800 |
|---|---|---|
| committer | Russ Cox <rsc@swtch.com> | 2010-02-04 02:05:03 -0800 |
| commit | d9e047e5d5560912da6d2860fa25e427322f08bb (patch) | |
| tree | 27d21e7bffdb6520f996c1d71fb8af5bb0dbaabe /src/cmd/page/cache.c | |
| parent | 2d6da3763ec643f353a1c48e2e7a2ed7c25046a7 (diff) | |
| download | plan9port-d9e047e5d5560912da6d2860fa25e427322f08bb.tar.gz plan9port-d9e047e5d5560912da6d2860fa25e427322f08bb.zip | |
R=rsc
CC=codebot
http://codereview.appspot.com/193069
Diffstat (limited to 'src/cmd/page/cache.c')
| -rw-r--r-- | src/cmd/page/cache.c | 19 |
1 files changed, 18 insertions, 1 deletions
diff --git a/src/cmd/page/cache.c b/src/cmd/page/cache.c index 87c2c25a..0063a339 100644 --- a/src/cmd/page/cache.c +++ b/src/cmd/page/cache.c @@ -17,6 +17,7 @@ struct Cached int page; int angle; Image *im; + int ppi; }; static Cached cache[5]; @@ -57,14 +58,28 @@ _cachedpage(Document *doc, int angle, int page, char *ra) int i; Cached *c, old; Image *im, *tmp; + int ppi = 100; + PDFInfo *pdf; + PSInfo *ps; if((page < 0 || page >= doc->npage) && !doc->fwdonly) return nil; + if (doc->type == Tpdf){ + pdf = (PDFInfo *) doc->extra; + ppi = pdf->gs.ppi; + } + else{ + if (doc->type == Tps){ + ps = (PSInfo *) doc->extra; + ppi = ps->gs.ppi; + } + } + Again: for(i=0; i<nelem(cache); i++){ c = &cache[i]; - if(c->doc == doc && c->angle == angle && c->page == page){ + if(c->doc == doc && c->angle == angle && c->page == page && c->ppi == ppi){ if(chatty) fprint(2, "cache%s hit %d\n", ra, page); goto Found; } @@ -80,6 +95,7 @@ Again: c->im = nil; c->doc = nil; c->page = -1; + c->ppi = -1; if(chatty) fprint(2, "cache%s load %d\n", ra, page); im = doc->drawpage(doc, page); @@ -129,6 +145,7 @@ Again: c->page = page; c->angle = angle; c->im = im; + c->ppi = ppi; Found: if(chatty) fprint(2, "cache%s mtf %d @%d:", ra, c->page, i); |
