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 #include "fpdfview.h" 11 12 #ifdef __cplusplus 13 extern "C" { 14 #endif 15 16 typedef void* FPDF_PAGEARCSAVER; 17 typedef void* FPDF_PAGEARCLOADER; 18 19 /** 20 * Set "MediaBox" entry to the page dictionary. 21 * @param[in] page - Handle to a page. 22 * @param[in] left - The left of the rectangle. 23 * @param[in] bottom - The bottom of the rectangle. 24 * @param[in] right - The right of the rectangle. 25 * @param[in] top - The top of the rectangle. 26 * @retval None. 27 */ 28 DLLEXPORT void STDCALL FPDFPage_SetMediaBox(FPDF_PAGE page, 29 float left, 30 float bottom, 31 float right, 32 float top); 33 34 /** 35 * Set "CropBox" entry to the page dictionary. 36 * @param[in] page - Handle to a page. 37 * @param[in] left - The left of the rectangle. 38 * @param[in] bottom - The bottom of the rectangle. 39 * @param[in] right - The right of the rectangle. 40 * @param[in] top - The top of the rectangle. 41 * @retval None. 42 */ 43 DLLEXPORT void STDCALL FPDFPage_SetCropBox(FPDF_PAGE page, 44 float left, 45 float bottom, 46 float right, 47 float top); 48 49 /** Get "MediaBox" entry from the page dictionary. 50 * @param[in] page - Handle to a page. 51 * @param[in] left - Pointer to a double value receiving the left of the 52 * rectangle. 53 * @param[in] bottom - Pointer to a double value receiving the bottom of the 54 * rectangle. 55 * @param[in] right - Pointer to a double value receiving the right of the 56 * rectangle. 57 * @param[in] top - Pointer to a double value receiving the top of the 58 * rectangle. 59 * @retval True if success,else fail. 60 */ 61 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GetMediaBox(FPDF_PAGE page, 62 float* left, 63 float* bottom, 64 float* right, 65 float* top); 66 67 /** Get "CropBox" entry from the page dictionary. 68 * @param[in] page - Handle to a page. 69 * @param[in] left - Pointer to a double value receiving the left of the 70 * rectangle. 71 * @param[in] bottom - Pointer to a double value receiving the bottom of the 72 * rectangle. 73 * @param[in] right - Pointer to a double value receiving the right of the 74 * rectangle. 75 * @param[in] top - Pointer to a double value receiving the top of the 76 * rectangle. 77 * @retval True if success,else fail. 78 */ 79 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GetCropBox(FPDF_PAGE page, 80 float* left, 81 float* bottom, 82 float* right, 83 float* top); 84 85 /** 86 * Transform the whole page with a specified matrix, then clip the page content 87 * region. 88 * 89 * @param[in] page - A page handle. 90 * @param[in] matrix - The transform matrix. 91 * @param[in] clipRect - A rectangle page area to be clipped. 92 * @Note. This function will transform the whole page, and would take effect to 93 * all the objects in the page. 94 */ 95 DLLEXPORT FPDF_BOOL STDCALL FPDFPage_TransFormWithClip(FPDF_PAGE page, 96 FS_MATRIX* matrix, 97 FS_RECTF* clipRect); 98 99 /** 100 * Transform (scale, rotate, shear, move) the clip path of page object. 101 * @param[in] page_object - Handle to a page object. Returned by 102 * FPDFPageObj_NewImageObj. 103 * @param[in] a - The coefficient "a" of the matrix. 104 * @param[in] b - The coefficient "b" of the matrix. 105 * @param[in] c - The coefficient "c" of the matrix. 106 * @param[in] d - The coefficient "d" of the matrix. 107 * @param[in] e - The coefficient "e" of the matrix. 108 * @param[in] f - The coefficient "f" of the matrix. 109 * @retval None. 110 */ 111 DLLEXPORT void STDCALL 112 FPDFPageObj_TransformClipPath(FPDF_PAGEOBJECT page_object, 113 double a, 114 double b, 115 double c, 116 double d, 117 double e, 118 double f); 119 120 /** 121 * Create a new clip path, with a rectangle inserted. 122 * 123 * @param[in] left - The left of the clip box. 124 * @param[in] bottom - The bottom of the clip box. 125 * @param[in] right - The right of the clip box. 126 * @param[in] top - The top of the clip box. 127 * @retval a handle to the clip path. 128 */ 129 DLLEXPORT FPDF_CLIPPATH STDCALL FPDF_CreateClipPath(float left, 130 float bottom, 131 float right, 132 float top); 133 134 /** 135 * Destroy the clip path. 136 * 137 * @param[in] clipPath - A handle to the clip path. 138 * Destroy the clip path. 139 * @retval None. 140 */ 141 DLLEXPORT void STDCALL FPDF_DestroyClipPath(FPDF_CLIPPATH clipPath); 142 143 /** 144 * Clip the page content, the page content that outside the clipping region 145 * become invisible. 146 * 147 * @param[in] page - A page handle. 148 * @param[in] clipPath - A handle to the clip path. 149 * @Note. A clip path will be inserted before the page content stream or content 150 * array. In this way, the page content will be clipped 151 * by this clip path. 152 */ 153 DLLEXPORT void STDCALL FPDFPage_InsertClipPath(FPDF_PAGE page, 154 FPDF_CLIPPATH clipPath); 155 156 #ifdef __cplusplus 157 } 158 #endif 159 160 #endif // PUBLIC_FPDF_TRANSFORMPAGE_H_ 161