| // Copyright 2014 PDFium Authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| // Original code copyright 2014 Foxit Software Inc. http://www.foxitsoftware.com |
| |
| #ifndef PUBLIC_FPDF_EDIT_H_ |
| #define PUBLIC_FPDF_EDIT_H_ |
| |
| #include <stdint.h> |
| |
| #include "fpdfview.h" |
| |
| #define FPDF_ARGB(a, r, g, b) \ |
| ((uint32_t)(((uint32_t)(b)&0xff) | (((uint32_t)(g)&0xff) << 8) | \ |
| (((uint32_t)(r)&0xff) << 16) | (((uint32_t)(a)&0xff) << 24))) |
| #define FPDF_GetBValue(argb) ((uint8_t)(argb)) |
| #define FPDF_GetGValue(argb) ((uint8_t)(((uint16_t)(argb)) >> 8)) |
| #define FPDF_GetRValue(argb) ((uint8_t)((argb) >> 16)) |
| #define FPDF_GetAValue(argb) ((uint8_t)((argb) >> 24)) |
| |
| // The page object constants. |
| #define FPDF_PAGEOBJ_TEXT 1 |
| #define FPDF_PAGEOBJ_PATH 2 |
| #define FPDF_PAGEOBJ_IMAGE 3 |
| #define FPDF_PAGEOBJ_SHADING 4 |
| #define FPDF_PAGEOBJ_FORM 5 |
| |
| #ifdef __cplusplus |
| extern "C" { |
| #endif // __cplusplus |
| |
| // Create a new PDF document. |
| // |
| // Returns a handle to a new document, or NULL on failure. |
| DLLEXPORT FPDF_DOCUMENT STDCALL FPDF_CreateNewDocument(); |
| |
| // Create a new PDF page. |
| // |
| // document - handle to document. |
| // page_index - suggested index of the page to create. If it is larger than |
| // document's current last index(L), the created page index is |
| // the next available index -- L+1. |
| // width - the page width. |
| // height - the page height. |
| // |
| // Returns the handle to the new page. |
| // |
| // The page should be closed with CPDF_ClosePage() when finished as |
| // with any other page in the document. |
| DLLEXPORT FPDF_PAGE STDCALL FPDFPage_New(FPDF_DOCUMENT document, |
| int page_index, |
| double width, |
| double height); |
| |
| // Delete the page at |page_index|. |
| // |
| // document - handle to document. |
| // page_index - the index of the page to delete. |
| DLLEXPORT void STDCALL FPDFPage_Delete(FPDF_DOCUMENT document, int page_index); |
| |
| // Get the rotation of |page|. |
| // |
| // page - handle to a page |
| // |
| // Returns one of the following indicating the page rotation: |
| // 0 - No rotation. |
| // 1 - Rotated 90 degrees clockwise. |
| // 2 - Rotated 180 degrees clockwise. |
| // 3 - Rotated 270 degrees clockwise. |
| DLLEXPORT int STDCALL FPDFPage_GetRotation(FPDF_PAGE page); |
| |
| // Set rotation for |page|. |
| // |
| // page - handle to a page. |
| // rotate - the rotation value, one of: |
| // 0 - No rotation. |
| // 1 - Rotated 90 degrees clockwise. |
| // 2 - Rotated 180 degrees clockwise. |
| // 3 - Rotated 270 degrees clockwise. |
| DLLEXPORT void STDCALL FPDFPage_SetRotation(FPDF_PAGE page, int rotate); |
| |
| // Insert |page_obj| into |page|. |
| // |
| // page - handle to a page |
| // page_obj - handle to a page object. The |page_obj| will be automatically |
| // freed. |
| DLLEXPORT void STDCALL FPDFPage_InsertObject(FPDF_PAGE page, |
| FPDF_PAGEOBJECT page_obj); |
| |
| // Get number of page objects inside |page|. |
| // |
| // page - handle to a page. |
| // |
| // Returns the number of objects in |page|. |
| DLLEXPORT int STDCALL FPDFPage_CountObject(FPDF_PAGE page); |
| |
| // Get object in |page| at |index|. |
| // |
| // page - handle to a page. |
| // index - the index of a page object. |
| // |
| // Returns the handle to the page object, or NULL on failed. |
| DLLEXPORT FPDF_PAGEOBJECT STDCALL FPDFPage_GetObject(FPDF_PAGE page, int index); |
| |
| // Checks if |page| contains transparency. |
| // |
| // page - handle to a page. |
| // |
| // Returns TRUE if |page| contains transparency. |
| DLLEXPORT FPDF_BOOL STDCALL FPDFPage_HasTransparency(FPDF_PAGE page); |
| |
| // Generate the content of |page|. |
| // |
| // page - handle to a page. |
| // |
| // Returns TRUE on success. |
| // |
| // Before you save the page to a file, or reload the page, you must call |
| // |FPDFPage_GenerateContent| or any changes to |page| will be lost. |
| DLLEXPORT FPDF_BOOL STDCALL FPDFPage_GenerateContent(FPDF_PAGE page); |
| |
| // Checks if |pageObject| contains transparency. |
| // |
| // pageObject - handle to a page object. |
| // |
| // Returns TRUE if |pageObject| contains transparency. |
| DLLEXPORT FPDF_BOOL STDCALL |
| FPDFPageObj_HasTransparency(FPDF_PAGEOBJECT pageObject); |
| |
| // Transform |pageObject| by the given matrix. |
| // |
| // page_object - handle to a page object. |
| // a - matrix value. |
| // b - matrix value. |
| // c - matrix value. |
| // d - matrix value. |
| // e - matrix value. |
| // f - matrix value. |
| // |
| // The matrix is composed as: |
| // |a c e| |
| // |b d f| |
| // and can be used to scale, rotate, shear and translate the |page_object|. |
| DLLEXPORT void STDCALL FPDFPageObj_Transform(FPDF_PAGEOBJECT page_object, |
| double a, |
| double b, |
| double c, |
| double d, |
| double e, |
| double f); |
| |
| // Transform all annotations in |page|. |
| // |
| // page - handle to a page. |
| // a - matrix value. |
| // b - matrix value. |
| // c - matrix value. |
| // d - matrix value. |
| // e - matrix value. |
| // f - matrix value. |
| // |
| // The matrix is composed as: |
| // |a c e| |
| // |b d f| |
| // and can be used to scale, rotate, shear and translate the |page| annotations. |
| DLLEXPORT void STDCALL FPDFPage_TransformAnnots(FPDF_PAGE page, |
| double a, |
| double b, |
| double c, |
| double d, |
| double e, |
| double f); |
| |
| // Create a new image object. |
| // |
| // document - handle to a document. |
| // |
| // Returns a handle to a new image object. |
| DLLEXPORT FPDF_PAGEOBJECT STDCALL |
| FPDFPageObj_NewImgeObj(FPDF_DOCUMENT document); |
| |
| // Load an image from a JPEG image file and then set it into |image_object|. |
| // |
| // pages - pointer to the start of all loaded pages, may be NULL. |
| // nCount - number of |pages|, may be 0. |
| // image_object - handle to an image object. |
| // fileAccess - file access handler which specifies the JPEG image file. |
| // |
| // Returns TRUE on success. |
| // |
| // The image object might already have an associated image, which is shared and |
| // cached by the loaded pages. In that case, we need to clear the cached image |
| // for all the loaded pages. Pass |pages| and page count (|nCount|) to this API |
| // to clear the image cache. If the image is not previously shared, or NULL is a |
| // valid |pages| value. |
| DLLEXPORT FPDF_BOOL STDCALL |
| FPDFImageObj_LoadJpegFile(FPDF_PAGE* pages, |
| int nCount, |
| FPDF_PAGEOBJECT image_object, |
| FPDF_FILEACCESS* fileAccess); |
| |
| // Set the transform matrix of |image_object|. |
| // |
| // image_object - handle to an image object. |
| // a - matrix value. |
| // b - matrix value. |
| // c - matrix value. |
| // d - matrix value. |
| // e - matrix value. |
| // f - matrix value. |
| // |
| // The matrix is composed as: |
| // |a c e| |
| // |b d f| |
| // and can be used to scale, rotate, shear and translate the |page| annotations. |
| // |
| // Returns TRUE on success. |
| DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetMatrix(FPDF_PAGEOBJECT image_object, |
| double a, |
| double b, |
| double c, |
| double d, |
| double e, |
| double f); |
| |
| // Set |bitmap| to |image_object|. |
| // |
| // pages - pointer to the start of all loaded pages, may be NULL. |
| // nCount - number of |pages|, may be 0. |
| // image_object - handle to an image object. |
| // bitmap - handle of the bitmap. |
| // |
| // Returns TRUE on success. |
| DLLEXPORT FPDF_BOOL STDCALL FPDFImageObj_SetBitmap(FPDF_PAGE* pages, |
| int nCount, |
| FPDF_PAGEOBJECT image_object, |
| FPDF_BITMAP bitmap); |
| |
| #ifdef __cplusplus |
| } // extern "C" |
| #endif // __cplusplus |
| |
| #endif // PUBLIC_FPDF_EDIT_H_ |