Foxit PDF SDK
fs_render.h
Go to the documentation of this file.
1 
15 #ifndef FS_RENDER_H_
16 #define FS_RENDER_H_
17 
18 #include "common/fs_common.h"
19 #include "common/fs_image.h"
20 #ifndef __EMSCRIPTEN_RENDER__
21 #include "pdf/annots/fs_annot.h"
22 #include "pdf/fs_pdflayer.h"
23 #include "pdf/fs_reflowpage.h"
24 #ifndef _FX_NO_XFA_
25 #include "addon/xfa/fs_xfa.h"
26 #endif // #ifndef _FX_NO_XFA_
27 #endif
28 
29 #ifdef __APPLE__
30 #include <CoreGraphics/CoreGraphics.h>
31 #endif
32 
37 namespace foxit {
38 namespace pdf {
39 class PDFPage;
40 }
44 namespace common {
50 class PrintDeviceSettingData FS_FINAL : public Object{
51  public:
57  typedef enum _OrientationFlag {
63 
82  , copies(copies){}
83 
91  : device_width(2479)
92  , device_height(3508)
94  , resolution(300)
95  , copies(1) {}
96 
103  : device_width(settings.device_width)
104  , device_height(settings.device_height)
105  , device_margin(settings.device_margin)
106  , orientation(settings.orientation)
107  , resolution(settings.resolution)
108  , copies(settings.copies) {}
109 
118  device_width = settings.device_width;
119  device_height = settings.device_height;
120  device_margin = settings.device_margin;
121  orientation = settings.orientation;
122  resolution = settings.resolution;
123  copies = settings.copies;
124  return *this;
125  }
126 
142  this->device_width = device_width;
143  this->device_height = device_height;
144  this->device_margin = device_margin;
145  this->orientation = orientation;
146  this->resolution = resolution;
147  this->copies = copies;
148  }
169 };
170 
197 class Renderer FS_FINAL : public Base {
198  public:
204  typedef enum _ColorMode {
215  } ColorMode;
216 
222  typedef enum _ContentFlag {
224  e_RenderPage = 0x01,
233  } ContentFlag;
234 
240  typedef enum _ColorModeForeground {
250 
251  #ifdef __APPLE__
252 
257  typedef enum _DeviceType {
259  e_DeviceDisplay = 1,
261  e_DevicePrinter = 2
262  }DeviceType;
263  #endif
264 
277  Renderer(const Bitmap& bitmap, bool is_rgb_order);
278 
291  Renderer(const PrintDeviceSettingData& print_param, const wchar_t* dest_file_path);
292 
293 #if (defined(_WIN32) || defined(_WIN64)) && (!defined(SWIG) || defined(_SWIG_DOTNET_) || defined(_SWIG_PYTHON_))
294 
301  explicit Renderer(HDC dc);
302 
312  Renderer(HDC dc, const wchar_t* printer_driver_name);
313 #endif
314 
315 #ifdef __APPLE__
316 
326  Renderer(const CGContextRef& context, DeviceType device_type);
327 #endif
328 
334  Renderer(const Renderer& other);
336  ~Renderer();
337 
345  Renderer& operator = (const Renderer& other);
353  bool operator == (const Renderer& other) const;
361  bool operator != (const Renderer& other) const;
362 
370  bool IsEmpty() const;
371 
395  Progressive StartQuickRender(const pdf::PDFPage& page, const Matrix& matrix, PauseCallback* pause = NULL);
396 
427  Progressive StartRender(const pdf::PDFPage& page, const Matrix& matrix, PauseCallback* pause = NULL);
428 #ifndef __EMSCRIPTEN_RENDER__
429 
447  Progressive StartRenderReflowPage(const pdf::ReflowPage& reflow_page, const Matrix& matrix,
448  PauseCallback* pause = NULL);
449 
450 #ifndef _FX_NO_XFA_
451 
471  Progressive StartRenderXFAPage(const addon::xfa::XFAPage& xfa_page_view, const Matrix& matrix, bool is_highlight,
472  PauseCallback* pause = NULL);
473 #endif // #ifndef _FX_NO_XFA_
474 #endif
475 
500  Progressive StartRenderBitmap(const Bitmap& bitmap, const Matrix& matrix,
501  const RectI* clip_rect = NULL, uint32 interpolation = 0,
502  PauseCallback* pause = NULL);
503 
529  Progressive StartRenderBitmap(const Bitmap& bitmap, const Matrix& matrix,
530  const RectI* clip_rect, uint32 interpolation,
531  uint32 alpha, PauseCallback* pause);
532 
533 #ifndef __EMSCRIPTEN_RENDER__
534 
543 
557  bool RenderAnnot(const pdf::annots::Annot& annot, const Matrix& matrix);
558 #endif
559 
571  bool RenderFormControls(const pdf::PDFPage& page, const Matrix& matrix);
572 #ifndef __EMSCRIPTEN_RENDER__
573 
586  bool RenderGraphicsObject(const pdf::graphics::GraphicsObject* graphics_object, const pdf::PDFPage& page, const Matrix& matrix);
587 #endif
588 
597  void SetClipRect(const RectI* clip_rect);
598 
604  void ClearClips();
605 
616  void SetClipPathFill(const Path& clip_path, const Matrix& matrix, foxit::common::FillMode fill_mode);
617 
628  void SetClipPathStroke(const Path& clip_path, const Matrix& matrix, const GraphState* graph_state = NULL);
629 
643  void SetRenderContentFlags(uint32 render_content_flags);
644 
659  void SetRenderAnnotsForThumbnail(bool is_render_annots_for_thumbnail);
660 
671  void SetRenderFormField(bool is_render_formfield);
672 
683  void SetRenderSignature(bool is_render_signature);
684 #ifndef __EMSCRIPTEN_RENDER__
685 
695  void SetLayerContext(const pdf::LayerContext& layer_context);
696 
707  void SetRenderLayer(bool is_render_one_layer);
708 #endif
709 
732  void SetColorMode(ColorMode color_mode);
742  void SetMappingModeColors(ARGB background_color, ARGB foreground_color);
743 
757  void SetForegroundColorMode(uint32 foreground_color_mode);
758 
769  void SetForegroundColor(ARGB foreground_color);
770 
781  void SetClearType(bool is_clear_type);
794  void SetPrintTextAsGraphic(bool is_to_print_text_graphic);
795 
806  void SetPrintTextAsImage(bool is_to_print_text_image);
807 
818  void SetForceDownSample(bool is_to_force_down_sample);
819 
833  void SetJPEGDownSample(bool is_jepg_down_sample);
834 
848  void SetJPXDownSample(bool is_jpx_down_sample);
849 
862  void EnableForPrint(bool is_render_for_print);
863 
874  void SetForceHalftone(bool is_to_force_halftone);
875 
886  void SetRenderPathThinLine(bool is_render_path_thin_line);
887 
898  void SetRenderTextAntiAliasing(bool is_render_text_antialiasing);
899 
910  void SetRenderPathAntiAliasing(bool is_render_path_antialiasing);
911 
921  void SetRenderPathFullCovered(bool is_render_path_full_covered);
922 
934  void SetRenderImageAntiAliasing(bool is_render_image_antialiasing);
935 
947  void SetRenderEnhanceThinLines(bool is_render_enhance_thin_lines);
948 
957  void SetRenderSignatureState(bool is_render_signature_state);
958 
959  // User is strongly recommended NOT to use this method; otherwise unknown situation may occur.
960  explicit Renderer(FS_HANDLE handle = NULL);
961 
977  void SetScreenDPIScale(float scale);
978 
979 };
980 } // namespace common
981 } // namespace foxit
982 #endif // FS_RENDER_H_
983 
Definition: fs_pdfgraphicsobject.h:241
void SetRenderContentFlags(uint32 render_content_flags)
Set rendering flag to decide what content will be rendered.
PrintDeviceSettingData()
Constructor and set the default value.
Definition: fs_render.h:90
Header file for PDF reflow page related definitions and classes.
void ClearClips()
Clear the clipping rectangle set by function Renderer::SetClipRect.
Progressive StartRenderBitmap(const Bitmap &bitmap, const Matrix &matrix, const RectI *clip_rect=0, uint32 interpolation=0, PauseCallback *pause=0)
Start to render a bitmap.
Definition: fs_reflowpage.h:62
void SetRenderAnnotAppearanceType(foxit::pdf::annots::Annot::AppearanceType ap_type)
Set the annotation's appearance type for rendering.
PrintDeviceSettingData(int device_width, int device_height, RectF device_margin, OrientationFlag orientation, int resolution, uint32 copies)
Constructor, with parameters.
Definition: fs_render.h:76
Renderer & operator=(const Renderer &other)
Assign operator.
void Set(int device_width, int device_height, RectF device_margin, OrientationFlag orientation, int resolution, uint32 copies)
Set value.
Definition: fs_render.h:141
CFX_Object Object
Object type.
Definition: fs_basictypes.h:221
IFX_Pause PauseCallback
Definition: fs_common.h:1272
ColorModeForeground
Enumeration for rendering foreground color mode.
Definition: fs_render.h:240
void SetJPXDownSample(bool is_jpx_down_sample)
Set the flag to decide whether to use down-sampling for jpx image.
void SetRenderImageAntiAliasing(bool is_render_image_antialiasing)
Set the flag to decide whether to draw image anti-aliasing.
Progressive StartQuickRender(const pdf::PDFPage &page, const Matrix &matrix, PauseCallback *pause=0)
Start to quickly render a PDF page, mainly for thumbnail purpose.
If set, the color of text need to be replaced.
Definition: fs_render.h:242
Definition: fs_xfa.h:1250
void EnableForPrint(bool is_render_for_print)
Set the flag to decide whether to do rendering in print mode.
void SetClipRect(const RectI *clip_rect)
Set the clipping rectangle which will be used in subsequent rendering progress.
If set, page content will be rendered.
Definition: fs_render.h:224
void SetRenderPathAntiAliasing(bool is_render_path_antialiasing)
Set the flag to decide whether to draw path anti-aliasing.
ColorMode
Enumeration for rendering color mode.
Definition: fs_render.h:204
bool IsEmpty() const
Check whether current object is empty or not.
Progressive StartRenderXFAPage(const addon::xfa::XFAPage &xfa_page_view, const Matrix &matrix, bool is_highlight, PauseCallback *pause=0)
Start to render an XFA page.
uint32 copies
The number of copies to be printed. This parameter only has an effect on PostScrip files.
Definition: fs_render.h:168
void SetRenderTextAntiAliasing(bool is_render_text_antialiasing)
Set the flag to decide whether to draw text anti-aliasing.
void SetForceHalftone(bool is_to_force_halftone)
Set the flag to decide whether to use halftone for image stretching.
PrintDeviceSettingData(const PrintDeviceSettingData &settings)
Constructor, with another print device setting data object.
Definition: fs_render.h:102
void SetJPEGDownSample(bool is_jepg_down_sample)
Set the flag to decide whether to use down-sampling for jpeg image.
Header file for PDF layer related definitions and classes.
Header file for image and bitmap related definitions and classes.
Custom color mode. map colors to foreground.
Definition: fs_render.h:214
Map gray/white/black color value to background/foreground; for other colors, no change.
Definition: fs_render.h:208
void SetColorMode(ColorMode color_mode)
Set color mode.
Definition: fs_render.h:197
void SetRenderPathFullCovered(bool is_render_path_full_covered)
A special flag that can be applied to fill mode.
void SetClipPathFill(const Path &clip_path, const Matrix &matrix, foxit::common::FillMode fill_mode)
Set clipping path using filled region.
uint32 ARGB
ARGB color type, 32 bits, ((b) | ((g) << 8) | ((r) << 16)) | ((a) << 24)
Definition: fs_basictypes.h:210
Progressive StartRenderReflowPage(const pdf::ReflowPage &reflow_page, const Matrix &matrix, PauseCallback *pause=0)
Start to render a reflow page.
void SetRenderAnnotsForThumbnail(bool is_render_annots_for_thumbnail)
Set rendering flag to decide whether to render annotations in thumbnail mode or not.
int device_width
The width of the device in pixels.
Definition: fs_render.h:150
void SetClearType(bool is_clear_type)
Set the flag to decide whether to use ClearType-like anti-aliasing to render text objects.
Header file for annotation related definitions and classes.
FillMode
Enumeration for filling mode type, mainly for path graphics object.
Definition: fs_common.h:108
OrientationFlag
Enumeration for specifying the orientation of the printer.
Definition: fs_render.h:57
Renderer(const Bitmap &bitmap, bool is_rgb_order)
Constructor, with bitmap.
void SetRenderPathThinLine(bool is_render_path_thin_line)
Set the flag to decide whether to draw path as thin line.
int resolution
The resolution of the device in pixels per inch.
Definition: fs_render.h:166
void SetRenderFormField(bool is_render_formfield)
Set the flag to decide whether to render form fields (except signature fields).
Map a color value to the color range defined by a background color and a foreground color.
Definition: fs_render.h:210
If set, annotations will be rendered.
Definition: fs_render.h:226
FX_UINT32 uint32
32-bit unsigned integer.
Definition: fs_basictypes.h:196
If set, only the black color of text need to be replaced.
Definition: fs_render.h:246
Definition: fs_pdfpage.h:412
void * FS_HANDLE
Handle type.
Definition: fs_basictypes.h:214
PrintDeviceSettingData & operator=(const PrintDeviceSettingData &settings)
Assign operator.
Definition: fs_render.h:117
Header file for common definitions and classes.
Progressive StartRender(const pdf::PDFPage &page, const Matrix &matrix, PauseCallback *pause=0)
Start to render a PDF page.
Normal color mode.
Definition: fs_render.h:206
bool operator !=(const Renderer &other) const
Not equal operator.
void SetForegroundColor(ARGB foreground_color)
Set foreground color for text, path or both when color mode is Renderer::e_ColorModeForeground.
Landscape orientation for printing.
Definition: fs_render.h:61
Definition: fx_coordinates.h:596
OrientationFlag orientation
Orientation flag. Please refer to values starting from OrientationFlag::e_Portrait and this should be...
Definition: fs_render.h:164
If set, the color of path need to be replaced.
Definition: fs_render.h:244
If set, only the black color of path need to be replaced.
Definition: fs_render.h:248
Definition: fs_render.h:50
Output alpha only, ignore color.
Definition: fs_render.h:212
Definition: fs_basictypes.h:449
If set, only highlight annotations will be rendered.
Definition: fs_render.h:228
Definition: fs_pdflayer.h:338
bool RenderGraphicsObject(const pdf::graphics::GraphicsObject *graphics_object, const pdf::PDFPage &page, const Matrix &matrix)
Render a graphics object.
void SetLayerContext(const pdf::LayerContext &layer_context)
Set layer context to render context handle.
void SetForceDownSample(bool is_to_force_down_sample)
Set the flag to decide whether to use down-sampling for image stretching.
Header file for XFA related definitions and functions.
bool RenderAnnot(const pdf::annots::Annot &annot, const Matrix &matrix)
Render a specified annotation.
Definition: fs_annot.h:997
void SetRenderSignature(bool is_render_signature)
Set the flag to decide whether to render signatures or not.
Foxit namespace.
Definition: fs_pdf3d.h:27
int device_height
The height of the device in pixels.
Definition: fs_render.h:152
AppearanceType
Enumeration for the type of annotation's appearance.
Definition: fs_annot.h:1281
void SetPrintTextAsImage(bool is_to_print_text_image)
Set the flag to decide whether to print text as image.
ContentFlag
Enumeration for rendering content flags.
Definition: fs_render.h:222
void SetMappingModeColors(ARGB background_color, ARGB foreground_color)
Set background color and foreground color when color mode is Renderer::e_ColorModeMappingGray or Rend...
Portrait orientation for printing.
Definition: fs_render.h:59
#define NULL
The null-pointer value.
Definition: fx_system.h:792
void SetForegroundColorMode(uint32 foreground_color_mode)
Set rendering foreground color mode when color mode is Renderer::e_ColorModeForeground.
bool operator==(const Renderer &other) const
Equal operator.
void SetRenderSignatureState(bool is_render_signature_state)
Set the flag to decide whether to draw the signature state on the signature.
RectF device_margin
The page margins of the device.
Definition: fs_render.h:159
Definition: fx_coordinates.h:1076
void SetPrintTextAsGraphic(bool is_to_print_text_graphic)
Set the flag to decide whether to print text as path or bitmap.
If set, only screen annotations will be rendered.
Definition: fs_render.h:232
If set, all annotations expect highlight will be rendered.
Definition: fs_render.h:230
bool RenderFormControls(const pdf::PDFPage &page, const Matrix &matrix)
Render form controls.
void SetRenderEnhanceThinLines(bool is_render_enhance_thin_lines)
Set the flag to decide whether to enhance thin lines.
void SetClipPathStroke(const Path &clip_path, const Matrix &matrix, const GraphState *graph_state=0)
Set clipping path using stroked region.
void SetRenderLayer(bool is_render_one_layer)
Set the flag to decide whether to render one layer or all available layers.
Definition: fx_coordinates.h:771
void SetScreenDPIScale(float scale)
Set the screen DPI scaling factor for rendering.