Lines Matching refs:app

119 static void pdfapp_showpage(pdfapp_t *app, int loadpage, int drawpage, int repaint, int transition,…
145 void pdfapp_warn(pdfapp_t *app, const char *fmt, ...) in pdfapp_warn() argument
153 winwarn(app, buf); in pdfapp_warn()
156 void pdfapp_error(pdfapp_t *app, char *msg) in pdfapp_error() argument
158 winerror(app, msg); in pdfapp_error()
161 char *pdfapp_version(pdfapp_t *app) in pdfapp_version() argument
168 char *pdfapp_usage(pdfapp_t *app) in pdfapp_usage() argument
209 void pdfapp_init(fz_context *ctx, pdfapp_t *app) in pdfapp_init() argument
211 memset(app, 0, sizeof(pdfapp_t)); in pdfapp_init()
212 app->scrw = 640; in pdfapp_init()
213 app->scrh = 480; in pdfapp_init()
214 app->resolution = 72; in pdfapp_init()
215 app->ctx = ctx; in pdfapp_init()
217 app->layout_w = FZ_DEFAULT_LAYOUT_W; in pdfapp_init()
218 app->layout_h = FZ_DEFAULT_LAYOUT_H; in pdfapp_init()
219 app->layout_em = FZ_DEFAULT_LAYOUT_EM; in pdfapp_init()
220 app->layout_css = NULL; in pdfapp_init()
221 app->layout_use_doc_css = 1; in pdfapp_init()
223 app->transition.duration = 0.25f; in pdfapp_init()
224 app->transition.type = FZ_TRANSITION_FADE; in pdfapp_init()
226 app->colorspace = fz_device_bgr(ctx); in pdfapp_init()
228 app->colorspace = fz_device_rgb(ctx); in pdfapp_init()
230 app->tint_white = 0xFFFAF0; in pdfapp_init()
232 app->useicc = 1; in pdfapp_init()
233 app->useseparations = 0; in pdfapp_init()
234 app->aalevel = 8; in pdfapp_init()
237 void pdfapp_setresolution(pdfapp_t *app, int res) in pdfapp_setresolution() argument
239 app->default_resolution = res; in pdfapp_setresolution()
240 app->resolution = res; in pdfapp_setresolution()
243 void pdfapp_invert(pdfapp_t *app, fz_rect rect) in pdfapp_invert() argument
245 fz_invert_pixmap_rect(app->ctx, app->image, fz_round_rect(rect)); in pdfapp_invert()
248 void pdfapp_reloadfile(pdfapp_t *app) in pdfapp_reloadfile() argument
251 fz_strlcpy(filename, app->docpath, PATH_MAX); in pdfapp_reloadfile()
252 pdfapp_close(app); in pdfapp_reloadfile()
253 pdfapp_open(app, filename, 1); in pdfapp_reloadfile()
258 pdfapp_t *app = (pdfapp_t *)data; in event_cb() local
265 winalert(app, alert); in event_cb()
270 winprint(app); in event_cb()
278 winprint(app); in event_cb()
280 pdfapp_warn(app, "The document attempted to execute menu item: %s. (Not supported)", item); in event_cb()
288 …pdfapp_warn(app, "The document attempted to open url: %s. (Not supported by app)", launch_url->url… in event_cb()
296 pdfapp_warn(app, "The document attempted to mail the document%s%s%s%s%s%s%s%s (Not supported)", in event_cb()
306 void pdfapp_open(pdfapp_t *app, char *filename, int reload) in pdfapp_open() argument
308 pdfapp_open_progressive(app, filename, reload, 0); in pdfapp_open()
315 pdfapp_t *app = (pdfapp_t *)app_; in pdfapp_more_data() local
316 if (complete && app->outline_deferred == PDFAPP_OUTLINE_DEFERRED) in pdfapp_more_data()
318 app->outline_deferred = PDFAPP_OUTLINE_LOAD_NOW; in pdfapp_more_data()
319 winreloadpage(app); in pdfapp_more_data()
321 else if (app->incomplete) in pdfapp_more_data()
322 winreloadpage(app); in pdfapp_more_data()
326 static int make_fake_doc(pdfapp_t *app) in make_fake_doc() argument
328 fz_context *ctx = app->ctx; in make_fake_doc()
338 fz_rect mediabox = { 0, 0, app->winw, app->winh }; in make_fake_doc()
353 for (i = 0; i < app->pagecount; i++) in make_fake_doc()
367 app->doc = (fz_document*)pdf; in make_fake_doc()
371 void pdfapp_open_progressive(pdfapp_t *app, char *filename, int reload, int kbps) in pdfapp_open_progressive() argument
373 fz_context *ctx = app->ctx; in pdfapp_open_progressive()
381 if (app->layout_css) in pdfapp_open_progressive()
383 fz_buffer *buf = fz_read_file(ctx, app->layout_css); in pdfapp_open_progressive()
388 fz_set_use_document_css(ctx, app->layout_use_doc_css); in pdfapp_open_progressive()
393 app->stream = fz_open_url(ctx, filename, kbps, pdfapp_more_data, app); in pdfapp_open_progressive()
398 fz_seek(ctx, app->stream, 0, SEEK_SET); in pdfapp_open_progressive()
399 app->doc = fz_open_document_with_stream(ctx, filename, app->stream); in pdfapp_open_progressive()
415 fz_stream *stream = fz_open_file_progressive(ctx, filename, kbps, pdfapp_more_data, app); in pdfapp_open_progressive()
421 app->doc = fz_open_document_with_stream(ctx, filename, stream); in pdfapp_open_progressive()
464 app->doc = fz_open_accelerated_document(ctx, filename, accel); in pdfapp_open_progressive()
469 if (!reload || make_fake_doc(app)) in pdfapp_open_progressive()
470 pdfapp_error(app, "cannot open document"); in pdfapp_open_progressive()
473 idoc = pdf_specifics(app->ctx, app->doc); in pdfapp_open_progressive()
479 pdf_set_doc_event_callback(ctx, idoc, event_cb, app); in pdfapp_open_progressive()
483 pdfapp_error(app, "cannot load javascript embedded in document"); in pdfapp_open_progressive()
490 if (fz_needs_password(app->ctx, app->doc)) in pdfapp_open_progressive()
492 int okay = fz_authenticate_password(app->ctx, app->doc, password); in pdfapp_open_progressive()
495 password = winpassword(app, filename); in pdfapp_open_progressive()
498 okay = fz_authenticate_password(app->ctx, app->doc, password); in pdfapp_open_progressive()
500 pdfapp_warn(app, "Invalid password."); in pdfapp_open_progressive()
504 app->docpath = fz_strdup(ctx, filename); in pdfapp_open_progressive()
505 app->doctitle = filename; in pdfapp_open_progressive()
506 if (strrchr(app->doctitle, '\\')) in pdfapp_open_progressive()
507 app->doctitle = strrchr(app->doctitle, '\\') + 1; in pdfapp_open_progressive()
508 if (strrchr(app->doctitle, '/')) in pdfapp_open_progressive()
509 app->doctitle = strrchr(app->doctitle, '/') + 1; in pdfapp_open_progressive()
510 app->doctitle = fz_strdup(ctx, app->doctitle); in pdfapp_open_progressive()
512 fz_layout_document(app->ctx, app->doc, app->layout_w, app->layout_h, app->layout_em); in pdfapp_open_progressive()
518 app->pagecount = fz_count_pages(app->ctx, app->doc); in pdfapp_open_progressive()
519 if (app->pagecount <= 0) in pdfapp_open_progressive()
536 app->outline = fz_load_outline(app->ctx, app->doc); in pdfapp_open_progressive()
540 app->outline = NULL; in pdfapp_open_progressive()
542 app->outline_deferred = PDFAPP_OUTLINE_DEFERRED; in pdfapp_open_progressive()
544 pdfapp_warn(app, "Failed to load outline."); in pdfapp_open_progressive()
551 pdfapp_error(app, "cannot open document"); in pdfapp_open_progressive()
554 if (app->pageno < 1) in pdfapp_open_progressive()
555 app->pageno = 1; in pdfapp_open_progressive()
556 if (app->pageno > app->pagecount) in pdfapp_open_progressive()
557 app->pageno = app->pagecount; in pdfapp_open_progressive()
558 if (app->resolution < MINRES) in pdfapp_open_progressive()
559 app->resolution = MINRES; in pdfapp_open_progressive()
560 if (app->resolution > MAXRES) in pdfapp_open_progressive()
561 app->resolution = MAXRES; in pdfapp_open_progressive()
565 app->shrinkwrap = 1; in pdfapp_open_progressive()
566 app->rotate = 0; in pdfapp_open_progressive()
567 app->panx = 0; in pdfapp_open_progressive()
568 app->pany = 0; in pdfapp_open_progressive()
571 pdfapp_showpage(app, 1, 1, 1, 0, 0); in pdfapp_open_progressive()
574 void pdfapp_close(pdfapp_t *app) in pdfapp_close() argument
576 fz_drop_display_list(app->ctx, app->page_list); in pdfapp_close()
577 app->page_list = NULL; in pdfapp_close()
579 fz_drop_display_list(app->ctx, app->annotations_list); in pdfapp_close()
580 app->annotations_list = NULL; in pdfapp_close()
582 fz_drop_separations(app->ctx, app->seps); in pdfapp_close()
583 app->seps = NULL; in pdfapp_close()
585 fz_drop_stext_page(app->ctx, app->page_text); in pdfapp_close()
586 app->page_text = NULL; in pdfapp_close()
588 fz_drop_link(app->ctx, app->page_links); in pdfapp_close()
589 app->page_links = NULL; in pdfapp_close()
591 fz_free(app->ctx, app->doctitle); in pdfapp_close()
592 app->doctitle = NULL; in pdfapp_close()
594 fz_free(app->ctx, app->docpath); in pdfapp_close()
595 app->docpath = NULL; in pdfapp_close()
597 fz_drop_pixmap(app->ctx, app->image); in pdfapp_close()
598 app->image = NULL; in pdfapp_close()
600 fz_drop_pixmap(app->ctx, app->new_image); in pdfapp_close()
601 app->new_image = NULL; in pdfapp_close()
603 fz_drop_pixmap(app->ctx, app->old_image); in pdfapp_close()
604 app->old_image = NULL; in pdfapp_close()
606 fz_drop_outline(app->ctx, app->outline); in pdfapp_close()
607 app->outline = NULL; in pdfapp_close()
609 fz_drop_page(app->ctx, app->page); in pdfapp_close()
610 app->page = NULL; in pdfapp_close()
612 fz_drop_document(app->ctx, app->doc); in pdfapp_close()
613 app->doc = NULL; in pdfapp_close()
616 fz_drop_stream(app->ctx, app->stream); in pdfapp_close()
619 fz_flush_warnings(app->ctx); in pdfapp_close()
648 static int pdfapp_save(pdfapp_t *app) in pdfapp_save() argument
652 pdf_document *idoc = pdf_specifics(app->ctx, app->doc); in pdfapp_save()
656 if (wingetsavepath(app, buf, PATH_MAX)) in pdfapp_save()
660 opts.do_incremental = pdf_can_be_saved_incrementally(app->ctx, idoc); in pdfapp_save()
662 if (strcmp(buf, app->docpath) != 0) in pdfapp_save()
664 wincopyfile(app, app->docpath, buf); in pdfapp_save()
665 pdf_save_document(app->ctx, idoc, buf, &opts); in pdfapp_save()
666 pdfapp_close(app); in pdfapp_save()
667 pdfapp_open(app, buf, 1); in pdfapp_save()
675 fz_try(app->ctx) in pdfapp_save()
677 wincopyfile(app, app->docpath, buf); in pdfapp_save()
678 pdf_save_document(app->ctx, idoc, buf, &opts); in pdfapp_save()
681 fz_catch(app->ctx) in pdfapp_save()
690 fz_strlcpy(buf2, app->docpath, PATH_MAX); in pdfapp_save()
691 pdfapp_close(app); in pdfapp_save()
692 winreplacefile(app, buf, buf2); in pdfapp_save()
693 pdfapp_open(app, buf2, 1); in pdfapp_save()
703 int pdfapp_preclose(pdfapp_t *app) in pdfapp_preclose() argument
705 pdf_document *idoc = pdf_specifics(app->ctx, app->doc); in pdfapp_preclose()
707 if (idoc && pdf_has_unsaved_changes(app->ctx, idoc)) in pdfapp_preclose()
709 switch (winsavequery(app)) in pdfapp_preclose()
718 return pdfapp_save(app); in pdfapp_preclose()
725 static void pdfapp_viewctm(fz_matrix *mat, pdfapp_t *app) in pdfapp_viewctm() argument
727 *mat = fz_transform_page(app->page_bbox, app->resolution, app->rotate); in pdfapp_viewctm()
730 static void pdfapp_panview(pdfapp_t *app, int newx, int newy) in pdfapp_panview() argument
737 if (newx + app->imgw < app->winw) in pdfapp_panview()
738 newx = app->winw - app->imgw; in pdfapp_panview()
739 if (newy + app->imgh < app->winh) in pdfapp_panview()
740 newy = app->winh - app->imgh; in pdfapp_panview()
742 if (app->winw >= app->imgw) in pdfapp_panview()
743 newx = (app->winw - app->imgw) / 2; in pdfapp_panview()
744 if (app->winh >= app->imgh) in pdfapp_panview()
745 newy = (app->winh - app->imgh) / 2; in pdfapp_panview()
747 if (newx != app->panx || newy != app->pany) in pdfapp_panview()
748 winrepaint(app); in pdfapp_panview()
750 app->panx = newx; in pdfapp_panview()
751 app->pany = newy; in pdfapp_panview()
754 static void pdfapp_loadpage(pdfapp_t *app, int no_cache) in pdfapp_loadpage() argument
762 fz_drop_display_list(app->ctx, app->page_list); in pdfapp_loadpage()
763 fz_drop_display_list(app->ctx, app->annotations_list); in pdfapp_loadpage()
764 fz_drop_separations(app->ctx, app->seps); in pdfapp_loadpage()
765 fz_drop_stext_page(app->ctx, app->page_text); in pdfapp_loadpage()
766 fz_drop_link(app->ctx, app->page_links); in pdfapp_loadpage()
767 fz_drop_page(app->ctx, app->page); in pdfapp_loadpage()
769 app->page_list = NULL; in pdfapp_loadpage()
770 app->annotations_list = NULL; in pdfapp_loadpage()
771 app->seps = NULL; in pdfapp_loadpage()
772 app->page_text = NULL; in pdfapp_loadpage()
773 app->page_links = NULL; in pdfapp_loadpage()
774 app->page = NULL; in pdfapp_loadpage()
775 app->page_bbox.x0 = 0; in pdfapp_loadpage()
776 app->page_bbox.y0 = 0; in pdfapp_loadpage()
777 app->page_bbox.x1 = 100; in pdfapp_loadpage()
778 app->page_bbox.y1 = 100; in pdfapp_loadpage()
780 app->incomplete = 0; in pdfapp_loadpage()
782 fz_try(app->ctx) in pdfapp_loadpage()
784 app->page = fz_load_page(app->ctx, app->doc, app->pageno - 1); in pdfapp_loadpage()
785 if (app->page && app->page->incomplete) in pdfapp_loadpage()
786 app->incomplete = 1; in pdfapp_loadpage()
787 app->page_bbox = fz_bound_page(app->ctx, app->page); in pdfapp_loadpage()
788 app->page_links = fz_load_links(app->ctx, app->page); in pdfapp_loadpage()
790 fz_catch(app->ctx) in pdfapp_loadpage()
792 if (fz_caught(app->ctx) == FZ_ERROR_TRYLATER) in pdfapp_loadpage()
793 app->incomplete = 1; in pdfapp_loadpage()
795 pdfapp_warn(app, "Failed to load page."); in pdfapp_loadpage()
799 if (app->useicc) in pdfapp_loadpage()
800 fz_enable_icc(app->ctx); in pdfapp_loadpage()
802 fz_disable_icc(app->ctx); in pdfapp_loadpage()
804 fz_set_aa_level(app->ctx, app->aalevel); in pdfapp_loadpage()
806 if (app->useseparations) in pdfapp_loadpage()
808 fz_try(app->ctx) in pdfapp_loadpage()
810 app->seps = fz_page_separations(app->ctx, app->page); in pdfapp_loadpage()
811 if (app->seps) in pdfapp_loadpage()
813 int i, n = fz_count_separations(app->ctx, app->seps); in pdfapp_loadpage()
815 fz_set_separation_behavior(app->ctx, app->seps, i, FZ_SEPARATION_COMPOSITE); in pdfapp_loadpage()
817 else if (fz_page_uses_overprint(app->ctx, app->page)) in pdfapp_loadpage()
821 app->seps = fz_new_separations(app->ctx, 0); in pdfapp_loadpage()
823 else if (fz_document_output_intent(app->ctx, app->doc)) in pdfapp_loadpage()
828 app->seps = fz_new_separations(app->ctx, 0); in pdfapp_loadpage()
831 fz_catch(app->ctx) in pdfapp_loadpage()
833 if (fz_caught(app->ctx) == FZ_ERROR_TRYLATER) in pdfapp_loadpage()
834 app->incomplete = 1; in pdfapp_loadpage()
836 pdfapp_warn(app, "Failed to load page."); in pdfapp_loadpage()
841 fz_try(app->ctx) in pdfapp_loadpage()
844 app->page_list = fz_new_display_list(app->ctx, fz_infinite_rect); in pdfapp_loadpage()
845 mdev = fz_new_list_device(app->ctx, app->page_list); in pdfapp_loadpage()
847 fz_enable_device_hints(app->ctx, mdev, FZ_NO_CACHE); in pdfapp_loadpage()
848 fz_run_page_contents(app->ctx, app->page, mdev, fz_identity, &cookie); in pdfapp_loadpage()
849 fz_close_device(app->ctx, mdev); in pdfapp_loadpage()
850 fz_drop_device(app->ctx, mdev); in pdfapp_loadpage()
852 app->annotations_list = fz_new_display_list(app->ctx, fz_infinite_rect); in pdfapp_loadpage()
853 mdev = fz_new_list_device(app->ctx, app->annotations_list); in pdfapp_loadpage()
854 fz_run_page_annots(app->ctx, app->page, mdev, fz_identity, &cookie); in pdfapp_loadpage()
855 fz_run_page_widgets(app->ctx, app->page, mdev, fz_identity, &cookie); in pdfapp_loadpage()
858 app->incomplete = 1; in pdfapp_loadpage()
862 pdfapp_warn(app, "Errors found on page."); in pdfapp_loadpage()
865 fz_close_device(app->ctx, mdev); in pdfapp_loadpage()
867 fz_always(app->ctx) in pdfapp_loadpage()
869 fz_drop_device(app->ctx, mdev); in pdfapp_loadpage()
871 fz_catch(app->ctx) in pdfapp_loadpage()
873 if (fz_caught(app->ctx) == FZ_ERROR_TRYLATER) in pdfapp_loadpage()
874 app->incomplete = 1; in pdfapp_loadpage()
876 pdfapp_warn(app, "Failed to load page."); in pdfapp_loadpage()
880 app->errored = errored; in pdfapp_loadpage()
883 static void pdfapp_runpage(pdfapp_t *app, fz_device *dev, const fz_matrix ctm, fz_rect scissor, fz_… in pdfapp_runpage() argument
885 if (app->page_list) in pdfapp_runpage()
886 fz_run_display_list(app->ctx, app->page_list, dev, ctm, scissor, cookie); in pdfapp_runpage()
887 if (app->annotations_list) in pdfapp_runpage()
888 fz_run_display_list(app->ctx, app->annotations_list, dev, ctm, scissor, cookie); in pdfapp_runpage()
893 void pdfapp_reloadpage(pdfapp_t *app) in pdfapp_reloadpage() argument
895 if (app->outline_deferred == PDFAPP_OUTLINE_LOAD_NOW) in pdfapp_reloadpage()
897 fz_try(app->ctx) in pdfapp_reloadpage()
898 app->outline = fz_load_outline(app->ctx, app->doc); in pdfapp_reloadpage()
899 fz_catch(app->ctx) in pdfapp_reloadpage()
900 app->outline = NULL; in pdfapp_reloadpage()
901 app->outline_deferred = 0; in pdfapp_reloadpage()
903 pdfapp_showpage(app, 1, 1, 1, 0, 0); in pdfapp_reloadpage()
906 static void pdfapp_showpage(pdfapp_t *app, int loadpage, int drawpage, int repaint, int transition,… in pdfapp_showpage() argument
917 if (!app->nowaitcursor) in pdfapp_showpage()
918 wincursor(app, WAIT); in pdfapp_showpage()
920 if (!app->transitions_enabled || !app->presentation_mode) in pdfapp_showpage()
925 app->old_image = app->image; in pdfapp_showpage()
926 app->image = NULL; in pdfapp_showpage()
927 app->imgw = 0; in pdfapp_showpage()
928 app->imgh = 0; in pdfapp_showpage()
932 if (app->incomplete) in pdfapp_showpage()
938 pdfapp_loadpage(app, searching); in pdfapp_showpage()
941 app->hit_count = 0; in pdfapp_showpage()
944 fz_try(app->ctx) in pdfapp_showpage()
945 mediabox = fz_bound_page(app->ctx, app->page); in pdfapp_showpage()
946 fz_catch(app->ctx) in pdfapp_showpage()
948 if (fz_caught(app->ctx) != FZ_ERROR_TRYLATER) in pdfapp_showpage()
949 fz_rethrow(app->ctx); in pdfapp_showpage()
951 app->incomplete = 1; in pdfapp_showpage()
954 app->page_text = fz_new_stext_page(app->ctx, mediabox); in pdfapp_showpage()
956 if (app->page_list || app->annotations_list) in pdfapp_showpage()
958 tdev = fz_new_stext_device(app->ctx, app->page_text, NULL); in pdfapp_showpage()
959 fz_try(app->ctx) in pdfapp_showpage()
961 pdfapp_runpage(app, tdev, fz_identity, fz_infinite_rect, &cookie); in pdfapp_showpage()
962 fz_close_device(app->ctx, tdev); in pdfapp_showpage()
964 fz_always(app->ctx) in pdfapp_showpage()
965 fz_drop_device(app->ctx, tdev); in pdfapp_showpage()
966 fz_catch(app->ctx) in pdfapp_showpage()
967 fz_rethrow(app->ctx); in pdfapp_showpage()
977 app->pageno, app->pagecount, app->resolution); in pdfapp_showpage()
979 if (strlen(app->doctitle) > len) in pdfapp_showpage()
981 fz_strlcpy(buf, app->doctitle, len-3); in pdfapp_showpage()
986 sprintf(buf, "%s%s", app->doctitle, buf2); in pdfapp_showpage()
987 wintitle(app, buf); in pdfapp_showpage()
989 pdfapp_viewctm(&ctm, app); in pdfapp_showpage()
990 bounds = fz_transform_rect(app->page_bbox, ctm); in pdfapp_showpage()
995 fz_drop_pixmap(app->ctx, app->image); in pdfapp_showpage()
996 if (app->grayscale) in pdfapp_showpage()
997 colorspace = fz_device_gray(app->ctx); in pdfapp_showpage()
999 colorspace = app->colorspace; in pdfapp_showpage()
1001 app->image = NULL; in pdfapp_showpage()
1002 app->imgw = 0; in pdfapp_showpage()
1003 app->imgh = 0; in pdfapp_showpage()
1005 fz_var(app->image); in pdfapp_showpage()
1008 fz_try(app->ctx) in pdfapp_showpage()
1010 app->image = fz_new_pixmap_with_bbox(app->ctx, colorspace, ibounds, app->seps, 1); in pdfapp_showpage()
1011 app->imgw = fz_pixmap_width(app->ctx, app->image); in pdfapp_showpage()
1012 app->imgh = fz_pixmap_height(app->ctx, app->image); in pdfapp_showpage()
1014 fz_clear_pixmap_with_value(app->ctx, app->image, 255); in pdfapp_showpage()
1015 if (app->page_list || app->annotations_list) in pdfapp_showpage()
1017 idev = fz_new_draw_device(app->ctx, fz_identity, app->image); in pdfapp_showpage()
1018 pdfapp_runpage(app, idev, ctm, bounds, &cookie); in pdfapp_showpage()
1019 fz_close_device(app->ctx, idev); in pdfapp_showpage()
1021 if (app->invert) in pdfapp_showpage()
1023 fz_invert_pixmap_luminance(app->ctx, app->image); in pdfapp_showpage()
1024 fz_gamma_pixmap(app->ctx, app->image, 1 / 1.4f); in pdfapp_showpage()
1026 if (app->tint) in pdfapp_showpage()
1027 fz_tint_pixmap(app->ctx, app->image, 0, app->tint_white); in pdfapp_showpage()
1029 fz_always(app->ctx) in pdfapp_showpage()
1030 fz_drop_device(app->ctx, idev); in pdfapp_showpage()
1031 fz_catch(app->ctx) in pdfapp_showpage()
1037 app->new_image = app->image; in pdfapp_showpage()
1038 app->image = NULL; in pdfapp_showpage()
1039 app->imgw = 0; in pdfapp_showpage()
1040 app->imgh = 0; in pdfapp_showpage()
1042 if (app->grayscale) in pdfapp_showpage()
1043 colorspace = fz_device_gray(app->ctx); in pdfapp_showpage()
1045 colorspace = app->colorspace; in pdfapp_showpage()
1046 app->image = fz_new_pixmap_with_bbox(app->ctx, colorspace, ibounds, app->seps, 1); in pdfapp_showpage()
1047 app->imgw = fz_pixmap_width(app->ctx, app->image); in pdfapp_showpage()
1048 app->imgh = fz_pixmap_height(app->ctx, app->image); in pdfapp_showpage()
1050 app->duration = 0; in pdfapp_showpage()
1051 fz_page_presentation(app->ctx, app->page, &app->transition, &app->duration); in pdfapp_showpage()
1052 if (app->duration == 0) in pdfapp_showpage()
1053 app->duration = 5; in pdfapp_showpage()
1054app->in_transit = fz_generate_transition(app->ctx, app->image, app->old_image, app->new_image, 0, … in pdfapp_showpage()
1055 if (!app->in_transit) in pdfapp_showpage()
1057 if (app->duration != 0) in pdfapp_showpage()
1058 winadvancetimer(app, app->duration); in pdfapp_showpage()
1060 app->start_time = clock(); in pdfapp_showpage()
1065 pdfapp_panview(app, app->panx, app->pany); in pdfapp_showpage()
1067 if (!app->image) in pdfapp_showpage()
1070 winresize(app, app->layout_w, app->layout_h); in pdfapp_showpage()
1072 else if (app->shrinkwrap) in pdfapp_showpage()
1074 int w = app->imgw; in pdfapp_showpage()
1075 int h = app->imgh; in pdfapp_showpage()
1076 if (app->winw == w) in pdfapp_showpage()
1077 app->panx = 0; in pdfapp_showpage()
1078 if (app->winh == h) in pdfapp_showpage()
1079 app->pany = 0; in pdfapp_showpage()
1080 if (w > app->scrw * 90 / 100) in pdfapp_showpage()
1081 w = app->scrw * 90 / 100; in pdfapp_showpage()
1082 if (h > app->scrh * 90 / 100) in pdfapp_showpage()
1083 h = app->scrh * 90 / 100; in pdfapp_showpage()
1084 if (w != app->winw || h != app->winh) in pdfapp_showpage()
1085 winresize(app, w, h); in pdfapp_showpage()
1088 winrepaint(app); in pdfapp_showpage()
1090 wincursor(app, ARROW); in pdfapp_showpage()
1093 if (cookie.errors && app->errored == 0) in pdfapp_showpage()
1095 app->errored = 1; in pdfapp_showpage()
1096 pdfapp_warn(app, "Errors found on page. Page rendering may be incomplete."); in pdfapp_showpage()
1099 fz_flush_warnings(app->ctx); in pdfapp_showpage()
1102 static void pdfapp_gotouri(pdfapp_t *app, char *uri) in pdfapp_gotouri() argument
1111 fz_dirname(buf_base, app->docpath, sizeof buf_base); in pdfapp_gotouri()
1118 winopenuri(app, uri); in pdfapp_gotouri()
1121 void pdfapp_gotopage(pdfapp_t *app, int number) in pdfapp_gotopage() argument
1123 app->issearching = 0; in pdfapp_gotopage()
1124 winrepaint(app); in pdfapp_gotopage()
1128 if (number > app->pagecount) in pdfapp_gotopage()
1129 number = app->pagecount; in pdfapp_gotopage()
1131 if (number == app->pageno) in pdfapp_gotopage()
1134 if (app->histlen + 1 == 256) in pdfapp_gotopage()
1136 memmove(app->hist, app->hist + 1, sizeof(int) * 255); in pdfapp_gotopage()
1137 app->histlen --; in pdfapp_gotopage()
1139 app->hist[app->histlen++] = app->pageno; in pdfapp_gotopage()
1140 app->pageno = number; in pdfapp_gotopage()
1141 pdfapp_showpage(app, 1, 1, 1, 0, 0); in pdfapp_gotopage()
1144 void pdfapp_inverthit(pdfapp_t *app) in pdfapp_inverthit() argument
1150 pdfapp_viewctm(&ctm, app); in pdfapp_inverthit()
1152 for (i = 0; i < app->hit_count; i++) in pdfapp_inverthit()
1154 bbox = fz_rect_from_quad(app->hit_bbox[i]); in pdfapp_inverthit()
1156 pdfapp_invert(app, bbox); in pdfapp_inverthit()
1160 static void pdfapp_search_in_direction(pdfapp_t *app, enum panning *panto, int dir) in pdfapp_search_in_direction() argument
1165 if (app->search[0] == 0) in pdfapp_search_in_direction()
1167 winrepaint(app); in pdfapp_search_in_direction()
1171 wincursor(app, WAIT); in pdfapp_search_in_direction()
1173 firstpage = app->pageno; in pdfapp_search_in_direction()
1174 if (app->searchpage == app->pageno) in pdfapp_search_in_direction()
1175 page = app->pageno + dir; in pdfapp_search_in_direction()
1177 page = app->pageno; in pdfapp_search_in_direction()
1179 if (page < 1) page = app->pagecount; in pdfapp_search_in_direction()
1180 if (page > app->pagecount) page = 1; in pdfapp_search_in_direction()
1184 if (page != app->pageno) in pdfapp_search_in_direction()
1186 app->pageno = page; in pdfapp_search_in_direction()
1187 pdfapp_showpage(app, 1, 0, 0, 0, 1); in pdfapp_search_in_direction()
1190app->hit_count = fz_search_stext_page(app->ctx, app->page_text, app->search, app->hit_bbox, nelem( in pdfapp_search_in_direction()
1191 if (app->hit_count > 0) in pdfapp_search_in_direction()
1194 app->searchpage = app->pageno; in pdfapp_search_in_direction()
1195 wincursor(app, HAND); in pdfapp_search_in_direction()
1196 winrepaint(app); in pdfapp_search_in_direction()
1201 if (page < 1) page = app->pagecount; in pdfapp_search_in_direction()
1202 if (page > app->pagecount) page = 1; in pdfapp_search_in_direction()
1205 pdfapp_warn(app, "String '%s' not found.", app->search); in pdfapp_search_in_direction()
1207 app->pageno = firstpage; in pdfapp_search_in_direction()
1208 pdfapp_showpage(app, 1, 0, 0, 0, 0); in pdfapp_search_in_direction()
1209 wincursor(app, HAND); in pdfapp_search_in_direction()
1210 winrepaint(app); in pdfapp_search_in_direction()
1213 void pdfapp_onresize(pdfapp_t *app, int w, int h) in pdfapp_onresize() argument
1215 if (app->winw != w || app->winh != h) in pdfapp_onresize()
1217 app->winw = w; in pdfapp_onresize()
1218 app->winh = h; in pdfapp_onresize()
1219 pdfapp_panview(app, app->panx, app->pany); in pdfapp_onresize()
1220 winrepaint(app); in pdfapp_onresize()
1224 void pdfapp_autozoom_vertical(pdfapp_t *app) in pdfapp_autozoom_vertical() argument
1226 app->resolution *= (float) app->winh / app->imgh; in pdfapp_autozoom_vertical()
1227 if (app->resolution > MAXRES) in pdfapp_autozoom_vertical()
1228 app->resolution = MAXRES; in pdfapp_autozoom_vertical()
1229 else if (app->resolution < MINRES) in pdfapp_autozoom_vertical()
1230 app->resolution = MINRES; in pdfapp_autozoom_vertical()
1231 pdfapp_showpage(app, 0, 1, 1, 0, 0); in pdfapp_autozoom_vertical()
1234 void pdfapp_autozoom_horizontal(pdfapp_t *app) in pdfapp_autozoom_horizontal() argument
1236 app->resolution *= (float) app->winw / app->imgw; in pdfapp_autozoom_horizontal()
1237 if (app->resolution > MAXRES) in pdfapp_autozoom_horizontal()
1238 app->resolution = MAXRES; in pdfapp_autozoom_horizontal()
1239 else if (app->resolution < MINRES) in pdfapp_autozoom_horizontal()
1240 app->resolution = MINRES; in pdfapp_autozoom_horizontal()
1241 pdfapp_showpage(app, 0, 1, 1, 0, 0); in pdfapp_autozoom_horizontal()
1244 void pdfapp_autozoom(pdfapp_t *app) in pdfapp_autozoom() argument
1246 float page_aspect = (float) app->imgw / app->imgh; in pdfapp_autozoom()
1247 float win_aspect = (float) app->winw / app->winh; in pdfapp_autozoom()
1249 pdfapp_autozoom_horizontal(app); in pdfapp_autozoom()
1251 pdfapp_autozoom_vertical(app); in pdfapp_autozoom()
1254 void pdfapp_onkey(pdfapp_t *app, int c, int modifiers) in pdfapp_onkey() argument
1256 int oldpage = app->pageno; in pdfapp_onkey()
1260 if (app->issearching) in pdfapp_onkey()
1262 size_t n = strlen(app->search); in pdfapp_onkey()
1267 app->search[n - 1] = 0; in pdfapp_onkey()
1268 winrepaintsearch(app); in pdfapp_onkey()
1272 app->issearching = 0; in pdfapp_onkey()
1275 winrepaintsearch(app); in pdfapp_onkey()
1277 if (app->searchdir < 0) in pdfapp_onkey()
1279 if (app->pageno == 1) in pdfapp_onkey()
1280 app->pageno = app->pagecount; in pdfapp_onkey()
1282 app->pageno--; in pdfapp_onkey()
1283 pdfapp_showpage(app, 1, 1, 0, 0, 1); in pdfapp_onkey()
1286 pdfapp_onkey(app, 'n', 0); in pdfapp_onkey()
1289 winrepaint(app); in pdfapp_onkey()
1293 app->issearching = 0; in pdfapp_onkey()
1294 winrepaint(app); in pdfapp_onkey()
1299 if (n + 2 < sizeof app->search) in pdfapp_onkey()
1301 app->search[n] = c; in pdfapp_onkey()
1302 app->search[n + 1] = 0; in pdfapp_onkey()
1303 winrepaintsearch(app); in pdfapp_onkey()
1315 app->number[app->numberlen++] = c; in pdfapp_onkey()
1316 app->number[app->numberlen] = '\0'; in pdfapp_onkey()
1322 save_accelerator(app->ctx, app->doc, app->docpath); in pdfapp_onkey()
1323 winclose(app); in pdfapp_onkey()
1327 if (app->layout_em > 6) in pdfapp_onkey()
1329 …fz_bookmark mark = fz_make_bookmark(app->ctx, app->doc, fz_location_from_page_number(app->ctx, app in pdfapp_onkey()
1330 app->layout_em -= 1; in pdfapp_onkey()
1331 fz_layout_document(app->ctx, app->doc, app->layout_w, app->layout_h, app->layout_em); in pdfapp_onkey()
1332 app->pagecount = fz_count_pages(app->ctx, app->doc); in pdfapp_onkey()
1333app->pageno = fz_page_number_from_location(app->ctx, app->doc, fz_lookup_bookmark(app->ctx, app->d… in pdfapp_onkey()
1334 pdfapp_showpage(app, 1, 1, 1, 0, 0); in pdfapp_onkey()
1338 if (app->layout_em < 36) in pdfapp_onkey()
1340 …fz_bookmark mark = fz_make_bookmark(app->ctx, app->doc, fz_location_from_page_number(app->ctx, app in pdfapp_onkey()
1341 app->layout_em += 1; in pdfapp_onkey()
1342 fz_layout_document(app->ctx, app->doc, app->layout_w, app->layout_h, app->layout_em); in pdfapp_onkey()
1343 app->pagecount = fz_count_pages(app->ctx, app->doc); in pdfapp_onkey()
1344app->pageno = fz_page_number_from_location(app->ctx, app->doc, fz_lookup_bookmark(app->ctx, app->d… in pdfapp_onkey()
1345 pdfapp_showpage(app, 1, 1, 1, 0, 0); in pdfapp_onkey()
1354 app->resolution = zoom_in(app->resolution); in pdfapp_onkey()
1355 pdfapp_showpage(app, 0, 1, 1, 0, 0); in pdfapp_onkey()
1358 app->resolution = zoom_out(app->resolution); in pdfapp_onkey()
1359 pdfapp_showpage(app, 0, 1, 1, 0, 0); in pdfapp_onkey()
1363 pdfapp_autozoom_horizontal(app); in pdfapp_onkey()
1366 pdfapp_autozoom_vertical(app); in pdfapp_onkey()
1369 pdfapp_autozoom(app); in pdfapp_onkey()
1372 if (app->numberlen > 0) in pdfapp_onkey()
1373 app->resolution = atoi(app->number); in pdfapp_onkey()
1375 app->resolution = app->default_resolution; in pdfapp_onkey()
1376 pdfapp_showpage(app, 0, 1, 1, 0, 0); in pdfapp_onkey()
1380 if (app->numberlen > 0) in pdfapp_onkey()
1381 app->rotate -= atoi(app->number); in pdfapp_onkey()
1383 app->rotate -= 90; in pdfapp_onkey()
1384 pdfapp_showpage(app, 0, 1, 1, 0, 0); in pdfapp_onkey()
1387 if (app->numberlen > 0) in pdfapp_onkey()
1388 app->rotate += atoi(app->number); in pdfapp_onkey()
1390 app->rotate += 90; in pdfapp_onkey()
1391 pdfapp_showpage(app, 0, 1, 1, 0, 0); in pdfapp_onkey()
1399 app->tint ^= 1; in pdfapp_onkey()
1400 pdfapp_showpage(app, 0, 1, 1, 0, 0); in pdfapp_onkey()
1404 app->grayscale ^= 1; in pdfapp_onkey()
1405 pdfapp_showpage(app, 0, 1, 1, 0, 0); in pdfapp_onkey()
1409 app->invert ^= 1; in pdfapp_onkey()
1410 pdfapp_showpage(app, 0, 1, 1, 0, 0); in pdfapp_onkey()
1414 app->useicc ^= 1; in pdfapp_onkey()
1415 if (app->useicc) in pdfapp_onkey()
1416 pdfapp_warn(app, "Using icc."); in pdfapp_onkey()
1418 pdfapp_warn(app, "Not using icc."); in pdfapp_onkey()
1419 pdfapp_showpage(app, 1, 1, 1, 0, 0); in pdfapp_onkey()
1423 app->useseparations ^= 1; in pdfapp_onkey()
1424 if (app->useseparations) in pdfapp_onkey()
1425 pdfapp_warn(app, "Using separations."); in pdfapp_onkey()
1427 pdfapp_warn(app, "Not using separations."); in pdfapp_onkey()
1428 pdfapp_showpage(app, 1, 1, 1, 0, 0); in pdfapp_onkey()
1432 if (app->numberlen > 0) in pdfapp_onkey()
1433 app->aalevel = atoi(app->number); in pdfapp_onkey()
1435 app->aalevel = (app->aalevel == 8 ? 0 : 8); in pdfapp_onkey()
1436 pdfapp_showpage(app, 1, 1, 1, 0, 0); in pdfapp_onkey()
1444 app->shrinkwrap = 0; in pdfapp_onkey()
1445 winfullscreen(app, !app->fullscreen); in pdfapp_onkey()
1446 app->fullscreen = !app->fullscreen; in pdfapp_onkey()
1450 if (app->fullscreen) in pdfapp_onkey()
1452 winfullscreen(app, 0); in pdfapp_onkey()
1453 app->fullscreen = 0; in pdfapp_onkey()
1455 app->shrinkwrap = 1; in pdfapp_onkey()
1456 app->panx = app->pany = 0; in pdfapp_onkey()
1457 pdfapp_showpage(app, 0, 0, 1, 0, 0); in pdfapp_onkey()
1461 app->panx += app->imgw / 10; in pdfapp_onkey()
1462 pdfapp_showpage(app, 0, 0, 1, 0, 0); in pdfapp_onkey()
1467 if (app->pany + app->imgh <= app->winh) in pdfapp_onkey()
1469 if (app->imgh <= app->winh || app->pany <= app->winh - app->imgh) in pdfapp_onkey()
1472 app->pageno++; in pdfapp_onkey()
1476 app->pany -= app->imgh / 10; in pdfapp_onkey()
1477 pdfapp_showpage(app, 0, 0, 1, 0, 0); in pdfapp_onkey()
1484 if (app->pany >= 0) in pdfapp_onkey()
1486 if (app->imgh <= app->winh || app->pany == 0) in pdfapp_onkey()
1489 app->pageno--; in pdfapp_onkey()
1493 app->pany += app->imgh / 10; in pdfapp_onkey()
1494 pdfapp_showpage(app, 0, 0, 1, 0, 0); in pdfapp_onkey()
1500 app->panx -= app->imgw / 10; in pdfapp_onkey()
1501 pdfapp_showpage(app, 0, 0, 1, 0, 0); in pdfapp_onkey()
1509 if (app->numberlen > 0) in pdfapp_onkey()
1510 pdfapp_gotopage(app, atoi(app->number)); in pdfapp_onkey()
1512 pdfapp_gotopage(app, 1); in pdfapp_onkey()
1516 pdfapp_gotopage(app, app->pagecount); in pdfapp_onkey()
1520 if (app->numberlen > 0) in pdfapp_onkey()
1522 int idx = atoi(app->number); in pdfapp_onkey()
1523 if (idx >= 0 && idx < (int)nelem(app->marks)) in pdfapp_onkey()
1524 app->marks[idx] = app->pageno; in pdfapp_onkey()
1528 if (app->histlen + 1 == 256) in pdfapp_onkey()
1530 memmove(app->hist, app->hist + 1, sizeof(int) * 255); in pdfapp_onkey()
1531 app->histlen --; in pdfapp_onkey()
1533 app->hist[app->histlen++] = app->pageno; in pdfapp_onkey()
1538 if (app->numberlen > 0) in pdfapp_onkey()
1540 int idx = atoi(app->number); in pdfapp_onkey()
1542 if (idx >= 0 && idx < (int)nelem(app->marks)) in pdfapp_onkey()
1543 if (app->marks[idx] > 0) in pdfapp_onkey()
1544 app->pageno = app->marks[idx]; in pdfapp_onkey()
1546 else if (app->histlen > 0) in pdfapp_onkey()
1547 app->pageno = app->hist[--app->histlen]; in pdfapp_onkey()
1551 app->presentation_mode = !app->presentation_mode; in pdfapp_onkey()
1561 if (app->numberlen > 0) in pdfapp_onkey()
1562 app->pageno -= atoi(app->number); in pdfapp_onkey()
1564 app->pageno--; in pdfapp_onkey()
1570 if (app->numberlen > 0) in pdfapp_onkey()
1571 app->pageno += atoi(app->number); in pdfapp_onkey()
1573 app->pageno++; in pdfapp_onkey()
1579 if (app->numberlen > 0) in pdfapp_onkey()
1580 number = fz_maxi(atoi(app->number), number); in pdfapp_onkey()
1583 if (app->pany >= -app->imgh/20) in pdfapp_onkey()
1585 if (app->panx >= -app->imgw/20) in pdfapp_onkey()
1587 if (app->pageno - 1 > 0) in pdfapp_onkey()
1589 app->panx = INT_MIN; in pdfapp_onkey()
1590 app->pany = INT_MIN; in pdfapp_onkey()
1591 app->pageno--; in pdfapp_onkey()
1597 app->pany = -app->imgh; in pdfapp_onkey()
1598 app->panx += app->winw * 9 / 10; in pdfapp_onkey()
1599 pdfapp_showpage(app, 0, 0, 1, 0, 0); in pdfapp_onkey()
1604 app->pany += app->winh * 9 / 10; in pdfapp_onkey()
1605 pdfapp_showpage(app, 0, 0, 1, 0, 0); in pdfapp_onkey()
1614 if (app->numberlen > 0) in pdfapp_onkey()
1615 number = fz_maxi(atoi(app->number), number); in pdfapp_onkey()
1618 if (app->imgh + app->pany <= app->winh + app->imgh/20) in pdfapp_onkey()
1620 if (app->imgw + app->panx <= app->winw + app->imgw/20) in pdfapp_onkey()
1622 if (app->pageno + 1 <= app->pagecount) in pdfapp_onkey()
1624 app->panx = 0; in pdfapp_onkey()
1625 app->pany = 0; in pdfapp_onkey()
1626 app->pageno++; in pdfapp_onkey()
1632 app->pany = 0; in pdfapp_onkey()
1633 app->panx -= app->winw * 9 / 10; in pdfapp_onkey()
1634 pdfapp_showpage(app, 0, 0, 1, 0, 0); in pdfapp_onkey()
1639 app->pany -= app->winh * 9 / 10; in pdfapp_onkey()
1640 pdfapp_showpage(app, 0, 0, 1, 0, 0); in pdfapp_onkey()
1650 pdfapp_save(app); in pdfapp_onkey()
1660 pdfapp_reloadfile(app); in pdfapp_onkey()
1668 app->issearching = 1; in pdfapp_onkey()
1669 app->searchdir = -1; in pdfapp_onkey()
1670 app->search[0] = 0; in pdfapp_onkey()
1671 app->hit_count = 0; in pdfapp_onkey()
1672 app->searchpage = -1; in pdfapp_onkey()
1673 winrepaintsearch(app); in pdfapp_onkey()
1677 app->issearching = 1; in pdfapp_onkey()
1678 app->searchdir = 1; in pdfapp_onkey()
1679 app->search[0] = 0; in pdfapp_onkey()
1680 app->hit_count = 0; in pdfapp_onkey()
1681 app->searchpage = -1; in pdfapp_onkey()
1682 winrepaintsearch(app); in pdfapp_onkey()
1686 if (app->searchdir > 0) in pdfapp_onkey()
1687 pdfapp_search_in_direction(app, &panto, 1); in pdfapp_onkey()
1689 pdfapp_search_in_direction(app, &panto, -1); in pdfapp_onkey()
1694 if (app->searchdir > 0) in pdfapp_onkey()
1695 pdfapp_search_in_direction(app, &panto, -1); in pdfapp_onkey()
1697 pdfapp_search_in_direction(app, &panto, 1); in pdfapp_onkey()
1703 app->numberlen = 0; in pdfapp_onkey()
1705 if (app->pageno < 1) in pdfapp_onkey()
1706 app->pageno = 1; in pdfapp_onkey()
1707 if (app->pageno > app->pagecount) in pdfapp_onkey()
1708 app->pageno = app->pagecount; in pdfapp_onkey()
1710 if (app->pageno != oldpage) in pdfapp_onkey()
1715 app->pany = 0; in pdfapp_onkey()
1718 app->pany = INT_MIN; in pdfapp_onkey()
1723 pdfapp_showpage(app, loadpage, 1, 1, 1, 0); in pdfapp_onkey()
1727 static void handlescroll(pdfapp_t *app, int modifiers, int dir) in handlescroll() argument
1729 app->ispanning = app->iscopying = 0; in handlescroll()
1734 app->resolution = zoom_in(app->resolution); in handlescroll()
1736 app->resolution = zoom_out(app->resolution); in handlescroll()
1737 if (app->resolution > MAXRES) in handlescroll()
1738 app->resolution = MAXRES; in handlescroll()
1739 if (app->resolution < MINRES) in handlescroll()
1740 app->resolution = MINRES; in handlescroll()
1741 pdfapp_showpage(app, 0, 1, 1, 0, 0); in handlescroll()
1752 if (dir > 0 && app->panx >= 0) in handlescroll()
1754 else if (dir < 0 && app->panx <= app->winw - app->imgw) in handlescroll()
1761 if (dir > 0 && app->pany >= 0) in handlescroll()
1763 else if (dir < 0 && app->pany <= app->winh - app->imgh) in handlescroll()
1769 pdfapp_panview(app, app->panx + xstep, app->pany + ystep); in handlescroll()
1770 else if (pagestep > 0 && app->pageno < app->pagecount) in handlescroll()
1772 app->pageno++; in handlescroll()
1773 app->pany = 0; in handlescroll()
1774 pdfapp_showpage(app, 1, 1, 1, 0, 0); in handlescroll()
1776 else if (pagestep < 0 && app->pageno > 1) in handlescroll()
1778 app->pageno--; in handlescroll()
1779 app->pany = INT_MIN; in handlescroll()
1780 pdfapp_showpage(app, 1, 1, 1, 0, 0); in handlescroll()
1785 void pdfapp_onmouse(pdfapp_t *app, int x, int y, int btn, int modifiers, int state) in pdfapp_onmouse() argument
1787 fz_context *ctx = app->ctx; in pdfapp_onmouse()
1788 fz_irect irect = { 0, 0, app->layout_w, app->layout_h }; in pdfapp_onmouse()
1794 if (app->image) in pdfapp_onmouse()
1795 irect = fz_pixmap_bbox(app->ctx, app->image); in pdfapp_onmouse()
1796 p.x = x - app->panx + irect.x0; in pdfapp_onmouse()
1797 p.y = y - app->pany + irect.y0; in pdfapp_onmouse()
1799 pdfapp_viewctm(&ctm, app); in pdfapp_onmouse()
1804 for (link = app->page_links; link; link = link->next) in pdfapp_onmouse()
1813 wincursor(app, HAND); in pdfapp_onmouse()
1817 pdfapp_gotouri(app, link->uri); in pdfapp_onmouse()
1820 fz_location loc = fz_resolve_link(ctx, app->doc, link->uri, NULL, NULL); in pdfapp_onmouse()
1821 pdfapp_gotopage(app, fz_page_number_from_location(ctx, app->doc, loc)+1); in pdfapp_onmouse()
1828 wincursor(app, ARROW); in pdfapp_onmouse()
1833 if (btn == 1 && !app->iscopying) in pdfapp_onmouse()
1835 app->ispanning = 1; in pdfapp_onmouse()
1836 app->selx = x; in pdfapp_onmouse()
1837 app->sely = y; in pdfapp_onmouse()
1838 app->beyondy = 0; in pdfapp_onmouse()
1840 if (btn == 3 && !app->ispanning) in pdfapp_onmouse()
1842 app->iscopying = 1; in pdfapp_onmouse()
1843 app->selx = x; in pdfapp_onmouse()
1844 app->sely = y; in pdfapp_onmouse()
1845 app->selr.x0 = x; in pdfapp_onmouse()
1846 app->selr.x1 = x; in pdfapp_onmouse()
1847 app->selr.y0 = y; in pdfapp_onmouse()
1848 app->selr.y1 = y; in pdfapp_onmouse()
1852 handlescroll(app, modifiers, btn == 4 ? 1 : -1); in pdfapp_onmouse()
1857 handlescroll(app, modifiers ^ (1<<0), btn == 6 ? 1 : -1); in pdfapp_onmouse()
1859 if (app->presentation_mode) in pdfapp_onmouse()
1861 if (btn == 1 && app->pageno < app->pagecount) in pdfapp_onmouse()
1863 app->pageno++; in pdfapp_onmouse()
1864 pdfapp_showpage(app, 1, 1, 1, 0, 0); in pdfapp_onmouse()
1866 if (btn == 3 && app->pageno > 1) in pdfapp_onmouse()
1868 app->pageno--; in pdfapp_onmouse()
1869 pdfapp_showpage(app, 1, 1, 1, 0, 0); in pdfapp_onmouse()
1876 if (app->iscopying) in pdfapp_onmouse()
1878 app->iscopying = 0; in pdfapp_onmouse()
1879 app->selr.x0 = fz_mini(app->selx, x) - app->panx + irect.x0; in pdfapp_onmouse()
1880 app->selr.x1 = fz_maxi(app->selx, x) - app->panx + irect.x0; in pdfapp_onmouse()
1881 app->selr.y0 = fz_mini(app->sely, y) - app->pany + irect.y0; in pdfapp_onmouse()
1882 app->selr.y1 = fz_maxi(app->sely, y) - app->pany + irect.y0; in pdfapp_onmouse()
1883 winrepaint(app); in pdfapp_onmouse()
1884 if (app->selr.x0 < app->selr.x1 && app->selr.y0 < app->selr.y1) in pdfapp_onmouse()
1885 windocopy(app); in pdfapp_onmouse()
1887 app->ispanning = 0; in pdfapp_onmouse()
1890 else if (app->ispanning) in pdfapp_onmouse()
1892 int newx = app->panx + x - app->selx; in pdfapp_onmouse()
1893 int newy = app->pany + y - app->sely; in pdfapp_onmouse()
1894 int imgh = app->winh; in pdfapp_onmouse()
1895 if (app->image) in pdfapp_onmouse()
1896 imgh = fz_pixmap_height(app->ctx, app->image); in pdfapp_onmouse()
1900 if (newy + imgh < app->winh || newy > 0) in pdfapp_onmouse()
1903 int deltay = y - app->sely; in pdfapp_onmouse()
1910 if( app->beyondy == 0 || (app->beyondy ^ deltay) >= 0 ) in pdfapp_onmouse()
1915 app->beyondy += deltay; in pdfapp_onmouse()
1916 if (app->beyondy > BEYOND_THRESHHOLD) in pdfapp_onmouse()
1918 if( app->pageno > 1 ) in pdfapp_onmouse()
1920 app->pageno--; in pdfapp_onmouse()
1921 pdfapp_showpage(app, 1, 1, 1, 0, 0); in pdfapp_onmouse()
1922 if (app->image) in pdfapp_onmouse()
1923 newy = -fz_pixmap_height(app->ctx, app->image); in pdfapp_onmouse()
1925 app->beyondy = 0; in pdfapp_onmouse()
1927 else if (app->beyondy < -BEYOND_THRESHHOLD) in pdfapp_onmouse()
1929 if( app->pageno < app->pagecount ) in pdfapp_onmouse()
1931 app->pageno++; in pdfapp_onmouse()
1932 pdfapp_showpage(app, 1, 1, 1, 0, 0); in pdfapp_onmouse()
1935 app->beyondy = 0; in pdfapp_onmouse()
1939 app->beyondy = 0; in pdfapp_onmouse()
1946 pdfapp_panview(app, newx, newy); in pdfapp_onmouse()
1948 app->selx = x; in pdfapp_onmouse()
1949 app->sely = y; in pdfapp_onmouse()
1952 else if (app->iscopying) in pdfapp_onmouse()
1954 app->selr.x0 = fz_mini(app->selx, x) - app->panx + irect.x0; in pdfapp_onmouse()
1955 app->selr.x1 = fz_maxi(app->selx, x) - app->panx + irect.x0; in pdfapp_onmouse()
1956 app->selr.y0 = fz_mini(app->sely, y) - app->pany + irect.y0; in pdfapp_onmouse()
1957 app->selr.y1 = fz_maxi(app->sely, y) - app->pany + irect.y0; in pdfapp_onmouse()
1958 winrepaint(app); in pdfapp_onmouse()
1962 void pdfapp_oncopy(pdfapp_t *app, unsigned short *ucsbuf, int ucslen) in pdfapp_oncopy() argument
1965 fz_stext_page *page = app->page_text; in pdfapp_oncopy()
1972 pdfapp_viewctm(&ctm, app); in pdfapp_oncopy()
1974 sel = fz_transform_rect(app->selr, ctm); in pdfapp_oncopy()
2018 void pdfapp_postblit(pdfapp_t *app) in pdfapp_postblit() argument
2024 app->transitions_enabled = 1; in pdfapp_postblit()
2025 if (!app->in_transit) in pdfapp_postblit()
2028 seconds = (float)(time - app->start_time) / CLOCKS_PER_SEC; in pdfapp_postblit()
2029 llama = seconds * 256 / app->transition.duration; in pdfapp_postblit()
2033 fz_drop_pixmap(app->ctx, app->image); in pdfapp_postblit()
2034 app->image = app->new_image; in pdfapp_postblit()
2035 app->new_image = NULL; in pdfapp_postblit()
2036 app->imgw = fz_pixmap_width(app->ctx, app->image); in pdfapp_postblit()
2037 app->imgh = fz_pixmap_height(app->ctx, app->image); in pdfapp_postblit()
2038 fz_drop_pixmap(app->ctx, app->old_image); in pdfapp_postblit()
2039 app->old_image = NULL; in pdfapp_postblit()
2040 if (app->duration != 0) in pdfapp_postblit()
2041 winadvancetimer(app, app->duration); in pdfapp_postblit()
2044 …fz_generate_transition(app->ctx, app->image, app->old_image, app->new_image, llama, &app->transiti… in pdfapp_postblit()
2045 winrepaint(app); in pdfapp_postblit()
2049 app->in_transit = 0; in pdfapp_postblit()