Initial commit.
[pdfium.git] / fpdfsdk / include / fpdf_transformpage.h
1 // Copyright 2014 PDFium Authors. All rights reserved.\r
2 // Use of this source code is governed by a BSD-style license that can be\r
3 // found in the LICENSE file.\r
4  \r
5 // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com\r
6 \r
7 #ifndef _TRANSFORMPAGE_H_\r
8 #define _TRANSFORMPAGE_H_\r
9 \r
10 #ifndef _FPDFVIEW_H_\r
11 #include "fpdfview.h"\r
12 #endif\r
13 \r
14 typedef void* FPDF_PAGEARCSAVER;\r
15 typedef void* FPDF_PAGEARCLOADER;\r
16 /**\r
17 *  Set "MediaBox" entry to the page dictionary.                                            \r
18 * @param[in] page       - Handle to a page.\r
19 * @param[in] left       - The left of the rectangle.\r
20 * @param[in] bottom     - The bottom of the rectangle.\r
21 * @param[in] right      - The right of the rectangle.\r
22 * @param[in] top        - The top of the rectangle.\r
23 * @retval None.\r
24 */\r
25 DLLEXPORT void STDCALL FPDFPage_SetMediaBox(FPDF_PAGE page, float left, float bottom, float right, float top);\r
26 \r
27 /**\r
28 *  Set "CropBox" entry to the page dictionary.                                             \r
29 * @param[in] page       - Handle to a page.\r
30 * @param[in] left       - The left of the rectangle.\r
31 * @param[in] bottom     - The bottom of the rectangle.\r
32 * @param[in] right      - The right of the rectangle.\r
33 * @param[in] top        - The top of the rectangle.\r
34 * @retval None.\r
35 */\r
36 DLLEXPORT void STDCALL FPDFPage_SetCropBox(FPDF_PAGE page, float left, float bottom, float right, float top);\r
37 \r
38 \r
39 /**  Get "MediaBox" entry from the page dictionary.                                                \r
40 * @param[in] page       - Handle to a page.\r
41 * @param[in] left       - Pointer to a double value receiving the left of the rectangle.\r
42 * @param[in] bottom     - Pointer to a double value receiving the bottom of the rectangle.\r
43 * @param[in] right      - Pointer to a double value receiving the right of the rectangle.\r
44 * @param[in] top        - Pointer to a double value receiving the top of the rectangle.\r
45 * @retval True if success,else fail.\r
46 */\r
47 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GetMediaBox(FPDF_PAGE page, float* left, float* bottom, float* right, float* top);\r
48 \r
49 /**  Get "CropBox" entry from the page dictionary.                                                 \r
50 * @param[in] page       - Handle to a page.\r
51 * @param[in] left       - Pointer to a double value receiving the left of the rectangle.\r
52 * @param[in] bottom     - Pointer to a double value receiving the bottom of the rectangle.\r
53 * @param[in] right      - Pointer to a double value receiving the right of the rectangle.\r
54 * @param[in] top        - Pointer to a double value receiving the top of the rectangle.\r
55 * @retval True if success,else fail.\r
56 */\r
57 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GetCropBox(FPDF_PAGE page, float* left, float* bottom, float* right, float* top);\r
58 \r
59 /**\r
60 * Transform the whole page with a specified matrix, then clip the page content region.\r
61 *\r
62 * @param[in] page                - A page handle.\r
63 * @param[in] matrix              - The transform matrix.\r
64 * @param[in] clipRect    - A rectangle page area to be clipped.\r
65 * @Note. This function will transform the whole page, and would take effect to all the objects in the page.\r
66 */\r
67 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_TransFormWithClip(FPDF_PAGE page, FS_MATRIX* matrix, FS_RECTF* clipRect);\r
68 \r
69 /**\r
70 * Transform (scale, rotate, shear, move) the clip path of page object.\r
71 * @param[in] page_object - Handle to a page object. Returned by FPDFPageObj_NewImageObj.\r
72 * @param[in] a  - The coefficient "a" of the matrix.\r
73 * @param[in] b  - The coefficient "b" of the matrix.\r
74 * @param[in] c  - The coefficient "c" of the matrix.\r
75 * @param[in] d  - The coefficient "d" of the matrix.\r
76 * @param[in] e  - The coefficient "e" of the matrix.\r
77 * @param[in] f  - The coefficient "f" of the matrix.\r
78 * @retval None.\r
79 */\r
80 DLLEXPORT void STDCALL FPDFPageObj_TransformClipPath(FPDF_PAGEOBJECT page_object,double a, double b, double c, double d, double e, double f);\r
81 \r
82 /**\r
83 * Create a new clip path, with a rectangle inserted.\r
84\r
85 * @param[in] left       - The left of the clip box.\r
86 * @param[in] bottom - The bottom of the clip box.\r
87 * @param[in] right      - The right of the clip box.\r
88 * @param[in] top        - The top of the clip box.\r
89 * @retval a handle to the clip path.\r
90 */\r
91 DLLEXPORT FPDF_CLIPPATH STDCALL FPDF_CreateClipPath(float left, float bottom, float right, float top);\r
92 \r
93 /**\r
94 * Destroy the clip path.\r
95 *\r
96 * @param[in] clipPath - A handle to the clip path.\r
97 * Destroy the clip path.\r
98 * @retval None.\r
99 */\r
100 DLLEXPORT void STDCALL FPDF_DestroyClipPath(FPDF_CLIPPATH clipPath);\r
101 \r
102 /**\r
103 * Clip the page content, the page content that outside the clipping region become invisible.\r
104 *\r
105 * @param[in] page                - A page handle.\r
106 * @param[in] clipPath    - A handle to the clip path.\r
107 * @Note. A clip path will be inserted before the page content stream or content array. In this way, the page content will be clipped\r
108 * by this clip path. \r
109 */\r
110 DLLEXPORT void STDCALL FPDFPage_InsertClipPath(FPDF_PAGE page,FPDF_CLIPPATH clipPath);\r
111 \r
112 #endif\r
113 \r