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 13extern "C" { 14#endif 15 16typedef void* FPDF_PAGEARCSAVER; 17typedef 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*/ 28DLLEXPORT 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*/ 43DLLEXPORT 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*/ 61DLLEXPORT 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*/ 79DLLEXPORT 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*/ 95DLLEXPORT 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*/ 111DLLEXPORT void STDCALL 112FPDFPageObj_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*/ 129DLLEXPORT 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*/ 141DLLEXPORT 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*/ 153DLLEXPORT 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