All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
PDFView.h
Go to the documentation of this file.
1 //---------------------------------------------------------------------------------------
2 // Copyright (c) 2001-2018 by PDFTron Systems Inc. All Rights Reserved.
3 // Consult legal.txt regarding legal and license information.
4 //---------------------------------------------------------------------------------------
5 #ifndef PDFTRON_H_CPPPDFPDFView
6 #define PDFTRON_H_CPPPDFPDFView
7 
8 #include <Common/BasicTypes.h>
9 #include <PDF/PDFDoc.h>
10 #include <PDF/PDFRasterizer.h>
11 #include <PDF/Highlights.h>
12 #include <PDF/LinkInfo.h>
13 #include <PDF/OCG/Context.h>
14 #include <C/PDF/TRN_PDFView.h>
15 #include <PDF/Selection.h>
16 #include <PDF/DocumentConversion.h>
17 #include <SDF/ObjSet.h>
19 #include <PDF/ActionParameter.h>
20 #ifdef SWIG
21 #include <PDF/Callback.h>
22 #endif
23 
24 namespace pdftron {
25  namespace PDF {
26 
71 class PDFView
72 {
73 public:
74 
79  PDFView();
80  ~PDFView();
81 
87  void SetDoc(PDFDoc& doc);
88 
97  void OpenUniversalDoc(DocumentConversion& conversion);
98 
102  void CloseDoc();
103 
107  PDFDoc* GetDoc();
108 
113  void DocLock(bool cancel_threads);
114 
118  void DocUnlock();
119 
125  bool DocTryLock( int milliseconds = 0 );
126 
138  void DocLockRead();
139 
143  void DocUnlockRead();
144 
150  bool DocTryLockRead( int milliseconds = 0 );
151 
156  {
157  e_single_page = 1, //<<< Display one page at a time.
158  e_single_continuous, //<<< Display the pages in one column.
159  e_facing, //<<< Display the pages two at a time, with odd-numbered pages on the left.
160  e_facing_continuous, //<<< Display the pages in two columns, with odd-numbered pages on the left.
161  e_facing_cover, //<<< Display the pages two at a time, with odd-numbered pages on the right.
162  e_facing_continuous_cover //<<< Display the pages in two columns, with odd-numbered pages on the right.
163  };
164 
172 
177 
188 
201  void SetColorPostProcessColors(unsigned int white_color, unsigned int black_color);
202 
207 
211  int GetCurrentPage() const;
212 
216  int GetPageCount() const;
217 
223  bool GotoFirstPage();
224 
230  bool GotoLastPage();
231 
237  bool GotoNextPage();
238 
244  bool GotoPreviousPage();
245 
251  bool SetCurrentPage(int page_num);
252 
260  bool ShowRect( int page_num, const Rect& rect );
261 
267  std::vector<int> GetVisiblePages() const ;
268 
274  double GetZoom() const;
275 
283  bool SetZoom(double zoom);
284 
312  bool SetZoom(int x, int y, double zoom);
313 
330  bool SmartZoom(int x, int y);
334  void RotateClockwise();
335 
339  void RotateCounterClockwise();
340 
344  Page::Rotate GetRotation() const;
345 
351  int GetPageNumberFromScreenPt(double x, double y) const;
352 
356  Point ConvScreenPtToCanvasPt(const Point& pt) const;
357 
358 #ifndef SWIG
359  void ConvScreenPtToCanvasPt(double& x, double& y) const;
360 #endif
361 
365  Point ConvCanvasPtToScreenPt(const Point& pt) const;
366 
367 #ifndef SWIG
368  void ConvCanvasPtToScreenPt(double& x, double& y) const;
369 #endif
370 
378  Point ConvCanvasPtToPagePt(const Point& pt, int page_num = -1) const;
379 
380 #ifndef SWIG
381  void ConvCanvasPtToPagePt(double& x, double& y, int page_num = -1) const;
382 #endif
383 
391  Point ConvPagePtToCanvasPt(const Point& pt, int page_num = -1) const;
392 
393 #ifndef SWIG
394  void ConvPagePtToCanvasPt(double& x, double& y, int page_num = -1) const;
395 #endif
396 
404  Point ConvScreenPtToPagePt(const Point& pt, int page_num = -1) const;
405 
406 #ifndef SWIG
407  void ConvScreenPtToPagePt(double& x, double& y, int page_num = -1) const;
408 #endif
409 
419  Point ConvPagePtToScreenPt(const Point& pt, int page_num = -1) const;
420 
421 #ifndef SWIG
422  void ConvPagePtToScreenPt(double& x, double& y, int page_num = -1) const;
423 #endif
424 
440  Common::Matrix2D GetDeviceTransform(int page_num = -1) const;
441 
449 #ifdef SWIG
450  void SetErrorReportProc(Callback* instance);
451 #else
452  void SetErrorReportProc(PDFRasterizer::ErrorReportProc error_proc, void* data);
453 #endif
454 
463  typedef void (*CurrentPageProc) (int current_page, int num_pages, void* data);
464 
473 #ifdef SWIG
474  void SetCurrentPageProc(Callback* instance);
475 #else
476  void SetCurrentPageProc(CurrentPageProc curr_pagenum_proc, void* data);
477 #endif
478 
488  typedef void(*JavaScriptEventProc) (const char* event_type, const char* json, void* data);
489 
497 #ifdef SWIG
498  void SetJavaScriptEventCallBack(Callback* instance);
499 #else
500  void SetJavaScriptEventCallBack(JavaScriptEventProc js_proc, void* data);
501 #endif
502 
510  typedef void (*CurrentZoomProc) (double curr_zoom_proc, void* data);
511 
520 #ifdef SWIG
521  void SetCurrentZoomProc(Callback* instance);
522 #else
523  void SetCurrentZoomProc(CurrentZoomProc curr_zoom_proc, void* data);
524 #endif
525 
531  void ExecuteAction(Action& action);
532 
533  void ExecuteAction(ActionParameter& action_param);
534 
538  double GetCanvasWidth() const;
539 
543  double GetCanvasHeight() const;
544 
548  double GetHScrollPos() const;
549 
553  double GetVScrollPos() const;
554 
561  void OnScroll(int pix_dx, int pix_dy);
562 
569  void SetHScrollPos(double pos);
570 
593  void SetVScrollPos(double pos);
594 
602  void OnSize(int width, int height);
603 
612  bool IsFinishedRendering(bool visible_region_only) const;
613 
618  void CancelRendering();
619 
623  void Update(bool all = false);
624 
629  void Update(const Rect& update);
630 
636  void Update(const Annot& annot, int page_num);
637 
642  void Update(const Field& field);
643 
650  void UpdatePageLayout();
651 
657 #ifdef SWIG
658  std::vector<unsigned char> GetBuffer() const;
659 #else
660  const char* GetBuffer() const;
661 #endif
662 
675  void UpdateBuffer();
676 
681  int GetBufferWidth() const;
682 
687  int GetBufferHeight() const;
688 
693  int GetBufferStride() const;
694 
701  void SetDrawAnnotations(bool render_annots);
702 
715  void SetUrlExtraction(bool enabled);
716 
729  LinkInfo GetLinkAt(int x, int y);
730 
736  void SetHighlightFields(bool highlight_fields);
737 
747  void SetAntiAliasing(bool enable_aa);
748 
757  void SetPathHinting(bool enable_hinting);
758 
769  void SetThinLineAdjustment(bool pixel_grid_fit, bool stroke_adjust);
770 
784  void SetImageSmoothing(bool smoothing_enabled = true);
785 
793  void SetCaching(bool enabled);
794 
804 
817  void SetGamma(double exp);
818 
829 
845  void SetOCGContext(const OCG::Context& ctx);
846 
855 
861  void UpdateOCGContext();
862 
863 
870  typedef void (*RenderBeginEventProc) (void* data);
871 
883  typedef void (*RenderFinishEventProc) (void* data, bool canceled);
884 
897 #ifdef SWIG
898  void SetRenderBeginProc(class Callback* instance);
899 #else
900  void SetRenderBeginProc(RenderBeginEventProc proc, void* data);
901 #endif
902 
915 #ifdef SWIG
916  void SetRenderFinishProc(class Callback* instance);
917 #else
918  void SetRenderFinishProc(RenderFinishEventProc proc, void* data);
919 #endif
920 
921 
931  };
932 
938 
946  bool Select(double x1, double y1, double x2, double y2);
947 
956  bool SelectWithSnapping(double x1, double y1, double x2, double y2, bool snap_to_start, bool snap_to_end);
957 
965  bool SelectWithSmartSnapping(double x1, double y1, double x2, double y2);
966 
974  bool Select(double x1, double y1, int page1, double x2, double y2, int page2);
975 
984  bool SelectWithSnapping(double x1, double y1, int page1, double x2, double y2, int page2,
985  bool snap_to_start, bool snap_to_end);
986 
994  bool SelectWithSmartSnapping(double x1, double y1, int page1, double x2, double y2, int page2);
995 
1002  bool Select(const Highlights& highlights);
1003 
1010  bool Select(const Selection& select);
1011 
1016  void CancelFindText();
1017 
1021  void SelectAll();
1022 
1026  bool HasSelection() const;
1027 
1031  void ClearSelection();
1032 
1036  Selection GetSelection( int pagenum = -1 ) const;
1037 
1042  int GetSelectionBeginPage() const ;
1043 
1048  int GetSelectionEndPage() const;
1049 
1054  bool HasSelectionOnPage( int ipage ) const;
1055 
1062  void PrepareWords(int page_num);
1063 
1068  bool WereWordsPrepared(int page_num) const;
1069 
1074  bool IsThereTextInRect(double x1, double y1, double x2, double y2) const;
1075 
1086  void PrepareAnnotsForMouse(int page_num, double distance_threshold, double minimum_line_weight);
1087 
1092  bool WereAnnotsForMousePrepared(int page_num) const;
1093 
1099  Annot::Type GetAnnotTypeUnder(double x, double y);
1100 
1105  void SetPageBorderVisibility(bool border_visible);
1106 
1112  void SetPageTransparencyGrid(bool trans_grid_visible);
1113 
1118  void SetDefaultPageColor(UInt8 r, UInt8 g, UInt8 b);
1119 
1125  void SetBackgroundColor(UInt8 r, UInt8 g, UInt8 b, UInt8 a = 255);
1126 
1136  void SetHorizontalAlign(int align);
1137 
1147  void SetVerticalAlign(int align);
1148 
1158  void SetPageSpacing(int horiz_col_space, int vert_col_space, int horiz_pad, int vert_pad);
1159 
1172  static void SetViewerCache(SDF::SDFDoc& document, size_t max_cache_size, bool on_disk);
1173 
1177  void Destroy();
1178 
1182  void SetDevicePixelDensity(double dpi, double scale_factor);
1183 
1192  Rect GetScreenRectForAnnot(Annot annot, int page_num = -1);
1193 
1204  Annot GetAnnotationAt(int x, int y, double distanceThreshold, double minimumLineWeight);
1205 
1216  {
1221  PVM_SIZE //must stay as the last element
1222  };
1223 
1230  void SetPageViewMode(PageViewMode mode);
1231 
1235  PageViewMode GetPageViewMode() const;
1236 
1243  void RefreshAndUpdate(const ViewChangeCollection& view_change);
1244 
1257  void SetPageRefViewMode(PageViewMode mode);
1258 
1264 
1278  void SetupThumbnails(bool use_embedded, bool generate_at_runtime, bool use_disk_cache, int thumb_max_side_length, size_t max_abs_cache_size, double max_perc_cache_size);
1279 
1283  void ClearThumbCache();
1284 
1296  typedef void (*ThumbAsyncHandler) (int page_num, bool was_thumb_found, const char* thumb_buf, int thumb_width, int thumb_height, void* custom_data);
1297 
1306 #ifdef SWIG
1307  void GetThumbAsync(int page_num, Callback* instance);
1308 #else
1309  void GetThumbAsync(int page_num, ThumbAsyncHandler proc, void* custom_data);
1310 #endif
1311 
1319  size_t GetThumbInCacheSize(int page_num);
1320 
1331  bool GetThumbInCache(int page_num, UChar* buf, UInt32& out_width, UInt32& out_height);
1332 
1333  /*
1334  * Cancel all pending GetThumbAsync requests. Your callback function will still be called
1335  * for each canceled request, but 'was_thumb_found' will be set to 'false'.
1336  */
1337  void CancelAllThumbRequests();
1338 
1344  typedef void (*RequestRenderInWorkerThreadProc) (void* custom_data);
1345 
1354 #ifdef SWIG
1355  void SetRequestRenderInWorkerThreadProc(Callback* instance);
1356 #else
1358 #endif
1359 
1365  typedef void (*FindTextHandler)(bool success, PDF::Selection selection, void* custom_data);
1366 
1367 
1368 #ifdef SWIG
1369 
1375  void SetFindTextHandler(Callback* instance);
1376 #else // SWIG
1377 
1384  void SetFindTextHandler(PDFView::FindTextHandler proc, void* custom_data);
1385 #endif // SWIG
1386 
1398  void FindTextAsync(const UString& search_str, bool match_case, bool match_whole_word, bool search_up, bool reg_exp);
1399 
1401 private:
1402  TRN_PDFView mp_view;
1403  TRN_PDFDoc temp_doc;
1404 
1405  // PDFView should not be copied
1406  PDFView(const PDFView&);
1407  PDFView& operator= (const PDFView&);
1408 
1409  FindTextHandler mp_findtexthandler;
1410  void* mp_findtextdata;
1411 
1412  static void StaticTRNPDFViewFindTextHandler(TRN_Bool success, TRN_PDFViewSelection selection, void* custom_data);
1413 
1414  //for internal use only
1415 #if defined(__iOS__)
1416 public:
1417  #include <Impl/PDFView.internal>
1418 #endif // defined(__iOS__)
1419 };
1421 
1422 #include <Impl/PDFView.inl>
1423 
1424  }; // namespace PDF
1425 }; // namespace pdftron
1426 
1427 #endif // PDFTRON_H_CPPPDFPDFView
bool DocTryLock(int milliseconds=0)
void SetPageSpacing(int horiz_col_space, int vert_col_space, int horiz_pad, int vert_pad)
void(* JavaScriptEventProc)(const char *event_type, const char *json, void *data)
Definition: PDFView.h:488
void SetBackgroundColor(UInt8 r, UInt8 g, UInt8 b, UInt8 a=255)
void SetVScrollPos(double pos)
void SetRasterizerType(PDFRasterizer::Type type)
void SetHScrollPos(double pos)
PagePresentationMode GetPagePresentationMode() const
bool SelectWithSmartSnapping(double x1, double y1, double x2, double y2)
void OnScroll(int pix_dx, int pix_dy)
bool WereWordsPrepared(int page_num) const
void SetPageRefViewMode(PageViewMode mode)
bool DocTryLockRead(int milliseconds=0)
void PrepareWords(int page_num)
void SetRequestRenderInWorkerThreadProc(RequestRenderInWorkerThreadProc proc, void *custom_data)
void(* RenderFinishEventProc)(void *data, bool canceled)
Definition: PDFView.h:883
bool IsFinishedRendering(bool visible_region_only) const
void SetVerticalAlign(int align)
void(* RenderBeginEventProc)(void *data)
Definition: PDFView.h:870
void SetOCGContext(const OCG::Context &ctx)
void SetUrlExtraction(bool enabled)
size_t GetThumbInCacheSize(int page_num)
TRN_UInt8 UInt8
Definition: BasicTypes.h:15
Annot GetAnnotationAt(int x, int y, double distanceThreshold, double minimumLineWeight)
OCG::Context GetOCGContext()
void SetFindTextHandler(PDFView::FindTextHandler proc, void *custom_data)
int GetPageNumberFromScreenPt(double x, double y) const
Point ConvPagePtToScreenPt(const Point &pt, int page_num=-1) const
void SetPagePresentationMode(PagePresentationMode mode)
void(* CurrentZoomProc)(double curr_zoom_proc, void *data)
Definition: PDFView.h:510
Point ConvCanvasPtToPagePt(const Point &pt, int page_num=-1) const
Selection GetSelection(int pagenum=-1) const
Page::Rotate GetRotation() const
bool SelectWithSnapping(double x1, double y1, double x2, double y2, bool snap_to_start, bool snap_to_end)
void SetupThumbnails(bool use_embedded, bool generate_at_runtime, bool use_disk_cache, int thumb_max_side_length, size_t max_abs_cache_size, double max_perc_cache_size)
bool HasSelectionOnPage(int ipage) const
int GetBufferStride() const
void SetDoc(PDFDoc &doc)
void SetCurrentZoomProc(CurrentZoomProc curr_zoom_proc, void *data)
void FindTextAsync(const UString &search_str, bool match_case, bool match_whole_word, bool search_up, bool reg_exp)
void SetAntiAliasing(bool enable_aa)
void(* RequestRenderInWorkerThreadProc)(void *custom_data)
Definition: PDFView.h:1344
void SetOverprint(PDFRasterizer::OverprintPreviewMode op)
Point ConvScreenPtToCanvasPt(const Point &pt) const
void Update(bool all=false)
void PrepareAnnotsForMouse(int page_num, double distance_threshold, double minimum_line_weight)
bool SetZoom(double zoom)
void SetGamma(double exp)
Point ConvCanvasPtToScreenPt(const Point &pt) const
void SetPathHinting(bool enable_hinting)
double GetZoom() const
bool SetCurrentPage(int page_num)
void SetImageSmoothing(bool smoothing_enabled=true)
void(* ErrorReportProc)(const char *message, void *data)
Point ConvPagePtToCanvasPt(const Point &pt, int page_num=-1) const
void SetDefaultPageColor(UInt8 r, UInt8 g, UInt8 b)
double GetHScrollPos() const
void SetColorPostProcessMode(PDFRasterizer::ColorPostProcessMode mode)
TRN_UInt32 UInt32
Definition: BasicTypes.h:13
void(* FindTextHandler)(bool success, PDF::Selection selection, void *custom_data)
Definition: PDFView.h:1365
const char * GetBuffer() const
PageViewMode GetPageRefViewMode() const
void(* ThumbAsyncHandler)(int page_num, bool was_thumb_found, const char *thumb_buf, int thumb_width, int thumb_height, void *custom_data)
Definition: PDFView.h:1296
void SetErrorReportProc(PDFRasterizer::ErrorReportProc error_proc, void *data)
void GetThumbAsync(int page_num, ThumbAsyncHandler proc, void *custom_data)
Point ConvScreenPtToPagePt(const Point &pt, int page_num=-1) const
TRN_UChar UChar
Definition: BasicTypes.h:12
void SetDrawAnnotations(bool render_annots)
double GetVScrollPos() const
double GetCanvasHeight() const
void DocLock(bool cancel_threads)
void SetPageTransparencyGrid(bool trans_grid_visible)
std::vector< int > GetVisiblePages() const
bool Select(double x1, double y1, double x2, double y2)
void SetRenderFinishProc(RenderFinishEventProc proc, void *data)
void RefreshAndUpdate(const ViewChangeCollection &view_change)
void SetJavaScriptEventCallBack(JavaScriptEventProc js_proc, void *data)
void SetHorizontalAlign(int align)
int GetSelectionEndPage() const
bool ShowRect(int page_num, const Rect &rect)
void ExecuteAction(Action &action)
bool WereAnnotsForMousePrepared(int page_num) const
void SetRenderBeginProc(RenderBeginEventProc proc, void *data)
Annot::Type GetAnnotTypeUnder(double x, double y)
bool IsThereTextInRect(double x1, double y1, double x2, double y2) const
void SetPageBorderVisibility(bool border_visible)
void SetCurrentPageProc(CurrentPageProc curr_pagenum_proc, void *data)
int GetSelectionBeginPage() const
bool GetThumbInCache(int page_num, UChar *buf, UInt32 &out_width, UInt32 &out_height)
bool HasSelection() const
int GetBufferWidth() const
void OnSize(int width, int height)
void SetHighlightFields(bool highlight_fields)
PDFRasterizer::ColorPostProcessMode GetColorPostProcessMode() const
void SetPageViewMode(PageViewMode mode)
LinkInfo GetLinkAt(int x, int y)
int GetPageCount() const
void SetThinLineAdjustment(bool pixel_grid_fit, bool stroke_adjust)
void SetColorPostProcessColors(unsigned int white_color, unsigned int black_color)
Rect GetScreenRectForAnnot(Annot annot, int page_num=-1)
static void SetViewerCache(SDF::SDFDoc &document, size_t max_cache_size, bool on_disk)
Common::Matrix2D GetDeviceTransform(int page_num=-1) const
void(* CurrentPageProc)(int current_page, int num_pages, void *data)
Definition: PDFView.h:463
int GetCurrentPage() const
bool SmartZoom(int x, int y)
PageViewMode GetPageViewMode() const
void OpenUniversalDoc(DocumentConversion &conversion)
void SetCaching(bool enabled)
void SetTextSelectionMode(TextSelectionMode tm)
double GetCanvasWidth() const
void SetDevicePixelDensity(double dpi, double scale_factor)
int GetBufferHeight() const

© 2002-2014 PDFTron Systems Inc.