1,6 → 1,5 |
#include "fitz.h" |
#include "mupdf.h" |
#include "muxps.h" |
#include "pdfapp.h" |
|
#include <ctype.h> /* for tolower() */ |
66,7 → 65,8 |
"n\t\t-- find next search result\n" |
"N\t\t-- find previous search result\n" |
"c\t\t-- toggle between color and grayscale\n" |
; */ |
; |
*/ |
} |
|
void pdfapp_init(pdfapp_t *app) |
172,28 → 172,9 |
__menuet__debug_out("All is set!\n"); |
} |
|
static void pdfapp_open_xps(pdfapp_t *app, char *filename, int fd) |
{ |
fz_error error; |
fz_stream *file; |
|
file = fz_open_fd(fd); |
error = xps_open_stream(&app->xps, file); |
if (error) |
pdfapp_error(app, fz_rethrow(error, "cannot open document '%s'", filename)); |
fz_close(file); |
|
app->doctitle = filename; |
|
app->pagecount = xps_count_pages(app->xps); |
} |
|
void pdfapp_open(pdfapp_t *app, char *filename, int fd, int reload) |
{ |
if (strstr(filename, ".xps") || strstr(filename, ".XPS") || strstr(filename, ".rels")) |
pdfapp_open_xps(app, filename, fd); |
else |
pdfapp_open_pdf(app, filename, fd); |
pdfapp_open_pdf(app, filename, fd); |
|
app->cache = fz_new_glyph_cache(); |
|
241,12 → 222,6 |
app->xref = NULL; |
} |
|
if (app->xps) |
{ |
xps_free_context(app->xps); |
app->xps = NULL; |
} |
|
fz_flush_warnings(); |
} |
|
333,34 → 308,6 |
pdf_age_store(app->xref->store, 3); |
} |
|
static void pdfapp_loadpage_xps(pdfapp_t *app) |
{ |
xps_page *page; |
fz_device *mdev; |
fz_error error; |
|
error = xps_load_page(&page, app->xps, app->pageno - 1); |
if (error) |
pdfapp_error(app, fz_rethrow(error, "cannot load page %d in file '%s'", app->pageno, app->doctitle)); |
|
app->page_bbox.x0 = 0; |
app->page_bbox.y0 = 0; |
app->page_bbox.x1 = page->width; |
app->page_bbox.y1 = page->height; |
app->page_rotate = 0; |
app->page_links = NULL; |
|
/* Create display list */ |
app->page_list = fz_new_display_list(); |
mdev = fz_new_list_device(app->page_list); |
app->xps->dev = mdev; |
xps_parse_fixed_page(app->xps, fz_identity, page); |
app->xps->dev = NULL; |
fz_free_device(mdev); |
|
xps_free_page(app->xps, page); |
} |
|
static void pdfapp_showpage(pdfapp_t *app, int loadpage, int drawpage, int repaint) |
{ |
char buf[256]; |
383,8 → 330,6 |
|
if (app->xref) |
pdfapp_loadpage_pdf(app); |
if (app->xps) |
pdfapp_loadpage_xps(app); |
|
/* Zero search hit position */ |
app->hit = -1; |
399,9 → 344,9 |
|
if (drawpage) |
{ |
// sprintf(buf, "%s - %d/%d (%d dpi)", app->doctitle, |
// app->pageno, app->pagecount, app->resolution); |
// wintitle(app, buf); |
sprintf(buf, "%s - %d/%d (%d dpi)", app->doctitle, |
app->pageno, app->pagecount, app->resolution); |
wintitle(app, buf); |
|
ctm = pdfapp_viewctm(app); |
bbox = fz_round_rect(fz_transform_rect(ctm, app->page_bbox)); |
430,7 → 375,7 |
|
if (app->shrinkwrap) |
{ |
//__menuet__debug_out ("SHRINK\n"); |
__menuet__debug_out ("SHRINK\n"); |
int w = app->image->w; |
int h = app->image->h; |
if (app->winw == w) |