• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 // Copyright 2014 PDFium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4 
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com
6 
7 #ifndef PUBLIC_FPDF_TRANSFORMPAGE_H_
8 #define PUBLIC_FPDF_TRANSFORMPAGE_H_
9 
10 // NOLINTNEXTLINE(build/include)
11 #include "fpdfview.h"
12 
13 #ifdef __cplusplus
14 extern "C" {
15 #endif
16 
17 typedef void* FPDF_PAGEARCSAVER;
18 typedef void* FPDF_PAGEARCLOADER;
19 
20 /**
21 *  Set "MediaBox" entry to the page dictionary.
22 * @param[in] page   - Handle to a page.
23 * @param[in] left   - The left of the rectangle.
24 * @param[in] bottom - The bottom of the rectangle.
25 * @param[in] right  - The right of the rectangle.
26 * @param[in] top    - The top of the rectangle.
27 * @retval None.
28 */
29 FPDF_EXPORT void FPDF_CALLCONV FPDFPage_SetMediaBox(FPDF_PAGE page,
30                                                     float left,
31                                                     float bottom,
32                                                     float right,
33                                                     float top);
34 
35 /**
36 *  Set "CropBox" entry to the page dictionary.
37 * @param[in] page   - Handle to a page.
38 * @param[in] left   - The left of the rectangle.
39 * @param[in] bottom - The bottom of the rectangle.
40 * @param[in] right  - The right of the rectangle.
41 * @param[in] top    - The top of the rectangle.
42 * @retval None.
43 */
44 FPDF_EXPORT void FPDF_CALLCONV FPDFPage_SetCropBox(FPDF_PAGE page,
45                                                    float left,
46                                                    float bottom,
47                                                    float right,
48                                                    float top);
49 
50 /**  Get "MediaBox" entry from the page dictionary.
51 * @param[in] page   - Handle to a page.
52 * @param[in] left   - Pointer to a double value receiving the left of the
53 * rectangle.
54 * @param[in] bottom - Pointer to a double value receiving the bottom of the
55 * rectangle.
56 * @param[in] right  - Pointer to a double value receiving the right of the
57 * rectangle.
58 * @param[in] top    - Pointer to a double value receiving the top of the
59 * rectangle.
60 * @retval True if success,else fail.
61 */
62 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPage_GetMediaBox(FPDF_PAGE page,
63                                                          float* left,
64                                                          float* bottom,
65                                                          float* right,
66                                                          float* top);
67 
68 /**  Get "CropBox" entry from the page dictionary.
69 * @param[in] page   - Handle to a page.
70 * @param[in] left   - Pointer to a double value receiving the left of the
71 * rectangle.
72 * @param[in] bottom - Pointer to a double value receiving the bottom of the
73 * rectangle.
74 * @param[in] right  - Pointer to a double value receiving the right of the
75 * rectangle.
76 * @param[in] top    - Pointer to a double value receiving the top of the
77 * rectangle.
78 * @retval True if success,else fail.
79 */
80 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV FPDFPage_GetCropBox(FPDF_PAGE page,
81                                                         float* left,
82                                                         float* bottom,
83                                                         float* right,
84                                                         float* top);
85 
86 /**
87  * Apply transforms to |page|.
88  *
89  * If |matrix| is provided it will be applied to transform the page.
90  * If |clipRect| is provided it will be used to clip the resulting page.
91  * If neither |matrix| or |clipRect| are provided this method returns |false|.
92  * Returns |true| if transforms are applied.
93  *
94  * @param[in] page        - Page handle.
95  * @param[in] matrix      - Transform matrix.
96  * @param[in] clipRect    - Clipping rectangle.
97  * @Note. This function will transform the whole page, and would take effect to
98  * all the objects in the page.
99  */
100 FPDF_EXPORT FPDF_BOOL FPDF_CALLCONV
101 FPDFPage_TransFormWithClip(FPDF_PAGE page,
102                            FS_MATRIX* matrix,
103                            FS_RECTF* clipRect);
104 
105 /**
106 * Transform (scale, rotate, shear, move) the clip path of page object.
107 * @param[in] page_object - Handle to a page object. Returned by
108 * FPDFPageObj_NewImageObj.
109 * @param[in] a  - The coefficient "a" of the matrix.
110 * @param[in] b  - The coefficient "b" of the matrix.
111 * @param[in] c  - The coefficient "c" of the matrix.
112 * @param[in] d  - The coefficient "d" of the matrix.
113 * @param[in] e  - The coefficient "e" of the matrix.
114 * @param[in] f  - The coefficient "f" of the matrix.
115 * @retval None.
116 */
117 FPDF_EXPORT void FPDF_CALLCONV
118 FPDFPageObj_TransformClipPath(FPDF_PAGEOBJECT page_object,
119                               double a,
120                               double b,
121                               double c,
122                               double d,
123                               double e,
124                               double f);
125 
126 /**
127 * Create a new clip path, with a rectangle inserted.
128 *
129 * @param[in] left   - The left of the clip box.
130 * @param[in] bottom - The bottom of the clip box.
131 * @param[in] right  - The right of the clip box.
132 * @param[in] top    - The top of the clip box.
133 * @retval a handle to the clip path.
134 */
135 FPDF_EXPORT FPDF_CLIPPATH FPDF_CALLCONV FPDF_CreateClipPath(float left,
136                                                             float bottom,
137                                                             float right,
138                                                             float top);
139 
140 /**
141 * Destroy the clip path.
142 *
143 * @param[in] clipPath - A handle to the clip path.
144 * Destroy the clip path.
145 * @retval None.
146 */
147 FPDF_EXPORT void FPDF_CALLCONV FPDF_DestroyClipPath(FPDF_CLIPPATH clipPath);
148 
149 /**
150 * Clip the page content, the page content that outside the clipping region
151 * become invisible.
152 *
153 * @param[in] page        - A page handle.
154 * @param[in] clipPath    - A handle to the clip path.
155 * @Note. A clip path will be inserted before the page content stream or content
156 * array. In this way, the page content will be clipped
157 * by this clip path.
158 */
159 FPDF_EXPORT void FPDF_CALLCONV FPDFPage_InsertClipPath(FPDF_PAGE page,
160                                                        FPDF_CLIPPATH clipPath);
161 
162 #ifdef __cplusplus
163 }
164 #endif
165 
166 #endif  // PUBLIC_FPDF_TRANSFORMPAGE_H_
167