aboutsummaryrefslogtreecommitdiffstats
path: root/src/images
diff options
context:
space:
mode:
authorDerek Sollenberger <djsollen@google.com>2011-03-15 04:54:49 -0700
committerAndroid (Google) Code Review <android-gerrit@google.com>2011-03-15 04:54:49 -0700
commitea865e804a942e6de638828167d4422c5b44538a (patch)
tree6d0398bd36ee622a32628f7963bd54adb35604fe /src/images
parent70c511db32497911529a75652f53b295a5f75917 (diff)
parent05b6b4d746867a9fb02e14edfe1bf3685abeb813 (diff)
downloadexternal_skia-ea865e804a942e6de638828167d4422c5b44538a.zip
external_skia-ea865e804a942e6de638828167d4422c5b44538a.tar.gz
external_skia-ea865e804a942e6de638828167d4422c5b44538a.tar.bz2
Merge "Skia Merge (revision 922)"
Diffstat (limited to 'src/images')
-rw-r--r--src/images/fpdfemb.h1765
-rw-r--r--src/images/fpdfemb_ext.h81
2 files changed, 0 insertions, 1846 deletions
diff --git a/src/images/fpdfemb.h b/src/images/fpdfemb.h
deleted file mode 100644
index 3c77116..0000000
--- a/src/images/fpdfemb.h
+++ /dev/null
@@ -1,1765 +0,0 @@
-// FPDFEMB.H - Header file for FPDFEMB SDK
-// Copyright (c) 2007-2008 Foxit Software Company, All Right Reserved.
-
-// Date: 2008-04-07
-
-// Embedded platforms have many different aspects from desktop platforms,
-// among them, the followings are most important for PDF processing:
-//
-// 1. Embedded platforms have only limited memory, and there is no virtual memory.
-// PDF is a very complicated format, processing PDF may consumes quite
-// large amount of memory, even for some smaller PDFs. And, in order to
-// increase the performance of PDF parsing and rendering, cache memory
-// is often used. For some big PDFs with many pages, the cache may grow
-// while user browing through pages, eventually, for some PDFs, the memory
-// on the device may run out.
-//
-// FPDFEMB SDK allows graceful out-of-memory (OOM) handling by returning
-// OOM error code for all functions that may involve memory allocation.
-// When an application detects OOM situation, it can do one of the followings:
-//
-// a) Give user some prompt and quit the application or close the document;
-// b) Or better, try to recover from the error. Sometimes OOM can be caused
-// by ever-growing cache. For example, when user browses a 1000-page
-// document, let's say OOM happen at page #300. In this case, the
-// application might close the whole document (cache will be gone with
-// it), reopen the document, then go directly to page #300. It's likely
-// the process will go through this time. This is called "OOM recovery".
-// If OOM happens again during a recovery, then, it's not possible to finish
-// the process, the application must quit of close the document.
-//
-// 2. Embedded platforms has only limited computing power. Since some PDFs
-// can be very complicated and require a lot of processing to be displayed,
-// it may take a lot of time for the process to finish. This may cause
-// some problem with user experience, especially for devices like mobile
-// phones, when an application may need to be put on hold any time. Therefore,
-// it's important to break lengthy process into small steps which can be
-// stopped or resumed at any time. We call this kind of process as
-// "progressive process".
-//
-// FPDFEMB SDK allows progressive page parsing and rendering, the most time-
-// consuming part of PDF processing.
-//
-// IMPORTANT:
-// FPDFEMB module is not intended to run in multi-threaded environment.
-
-// Components inside FPDFEMB:
-// * Library Memory Management
-// * Document Operations
-// * Page Basic Operations
-// * Page Parsing
-// * Page Rendering
-// * Coordination Conversion
-// * Text Search
-// * Text Information
-// * Device Independant Bitmap
-// * Custom Font Handler and CJK Support
-// * Bookmark Information
-// * Hyperlink Information
-// * Graphic Output
-
-#ifndef _FPDFEMB_H_
-#define _FPDFEMB_H_
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-// Standard return type for many FPDFEMB functions: FPDFERR_SUCCESS for success, otherwise error code
-typedef int FPDFEMB_RESULT;
-
-// Standard boolean type: 0 for false, non-zero for true
-typedef int FPDFEMB_BOOL;
-
-// Unicode character. FPDFEMB uses UTF16LE format for unicode string.
-typedef unsigned short FPDFEMB_WCHAR;
-
-// Error codes
-#define FPDFERR_SUCCESS 0
-#define FPDFERR_MEMORY 1 // Out of memory
-#define FPDFERR_ERROR 2 // Error of any kind, without specific reason
-#define FPDFERR_PASSWORD 3 // Incorrect password
-#define FPDFERR_FORMAT 4 // Not PDF format
-#define FPDFERR_FILE 5 // File access error
-#define FPDFERR_PARAM 6 // Parameter error
-#define FPDFERR_STATUS 7 // Not in correct status
-#define FPDFERR_TOBECONTINUED 8 // To be continued
-#define FPDFERR_NOTFOUND 9 // Search result not found
-
-/********************************************************************************************
-****
-**** Library Memory Management
-****
-********************************************************************************************/
-
-// Structure: FPDFEMB_MEMMGR
-// Including interfaces implemented by host application, providing memory allocation
-// facilities. All members are required.
-// A memory manager structure is required to be valid during the entire period
-// when an application using FPDFEMB module.
-//
-// IMPORTANT NOTE: using of this interface is strongly not recommended, because
-// FPDFEMB now internally use FPDFEMB_MEMMGR_EX interface, which allows more
-// advanced memory management. This interface is retained for backward compatibility
-// only, and maybe discontinued in the future.
-//
-struct FPDFEMB_MEMMGR {
- // Interface: Alloc
- // Allocate a memory block
- // Parameters:
- // pMgr - Pointer to the memory manager.
- // size - Number of bytes for the memory block.
- // Return Value:
- // The pointer to allocated memory block. NULL if no memory available.
- // Comments:
- // In order to handle OOM situation, application can use longjmp() inside
- // implementation of this function. If underlying memory manager fails to
- // allocate enough memory, then application can use longjmp() to jump to
- // OOM handling codes.
- //
- void* (*Alloc)(struct FPDFEMB_MEMMGR* pMgr, unsigned int size);
-
- // Interface: AllocNL
- // Allocate a memory block, without leaving
- // Parameters:
- // pMgr - Pointer to the memory manager.
- // size - Number of bytes for the memory block.
- // Return Value:
- // The pointer to allocated memory block. NULL if no memory available.
- // Comments:
- // Implementation MUST return NULL if no memory available, no exception
- // or longjmp() can be used.
- //
- void* (*AllocNL)(struct FPDFEMB_MEMMGR* pMgr, unsigned int size);
-
- // Interfce: Realloc
- // Reallocate a memory block
- // Parameters:
- // pMgr - Pointer to the memory manager.
- // pointer - An existing memory block, or NULL.
- // new_size - New size (number of bytes) of the memory block. Can be zero.
- // Return value:
- // The pointer of reallocated memory block, it could be a new block, or just
- // the previous block with size modified.
- // Comments:
- // If an existing memory block specified, the data in the memory block will
- // be copied to the new block, if reallocated.
- //
- // In order to handle OOM situation, application can use longjmp() inside
- // implementation of this function. If underlying memory manager fails to
- // allocate enough memory, then application can use longjmp() to jump to
- // OOM handling codes.
- //
- void* (*Realloc)(struct FPDFEMB_MEMMGR* pMgr, void* pointer, unsigned int new_size);
-
- // Interface: Free
- // Free a memory block
- // Parameters:
- // pMgr - Pointer to the memory manager.
- // pointer - An existing memory block.
- // Return Value:
- // None.
- //
- void (*Free)(struct FPDFEMB_MEMMGR* pMgr, void* pointer);
-};
-
-// Function: FPDFEMB_Init
-// Initialize the FPDFEMB module
-// Parameters:
-// mem_mgr - Pointer to memory manager structure
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-// Comments:
-// This function will allocate necessary internal data structure for
-// the whole module to operate.
-FPDFEMB_RESULT FPDFEMB_Init(FPDFEMB_MEMMGR* mem_mgr);
-
-typedef void (*FPDFEMB_FIXED_OOM_HANDLER)(void* memory, int size);
-
-// Function: FPDFEMB_InitFixedMemory
-// Initialize the FPDFEMB module, providing a fixed memory heap
-// Parameters:
-// memory - Pointer to a pre-allocated memory block
-// size - Number of bytes in the memory block
-// oom_handler - Pointer to a function which will be called when OOM happens. Can be
-// NULL if application doesn't want to be notified om OOM.
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-// Comments:
-// In many embedded system, memory usage are predetermined. The application
-// is assigned with fixed size of available memory, then it can pre-allocate
-// a memory block with maximum size and pass to this function to initialize
-// FPDFEMB module. In this case, FPDFEMB won't need any additional memory
-// allocation.
-//
-// In case the pre-allocated memory has run out, the "oom_proc" callback
-// function will be called to notify the application that an OOM recovery
-// procedure needs to be performed.
-//
-FPDFEMB_RESULT FPDFEMB_InitFixedMemory(void* memory, int size, FPDFEMB_FIXED_OOM_HANDLER oom_handler);
-
-// Memory Management Flags
-#define FPDFEMB_NONLEAVE 1
-#define FPDFEMB_MOVABLE 2
-#define FPDFEMB_DISCARDABLE 4
-
-// Structure: FPDFEMB_MEMMGR_EX
-// This is an extended version of memory manager interface, allowing advanced
-// memory management, including movable and discardable memory blocks.
-//
-// Use this interface with FPDFEMB_InitExt function.
-//
-struct FPDFEMB_MEMMGR_EX {
- // Interface: Alloc
- // Allocate a memory block
- // Parameters:
- // pMgr - Pointer to the memory manager.
- // size - Number of bytes for the memory block.
- // flags - A combination of flags defined above.
- // Return Value:
- // The pointer to allocated memory block. NULL if no memory available.
- // If FPDFEMB_MOVABLE flag is used, implementation should return a handle
- // to the memory block, if it supports movable block allocation.
- // Comments:
- // The implementation should not do any action if no memory available,
- // just return NULL. OOM handling can be done in OOM_Handler interface.
- //
- void* (*Alloc)(struct FPDFEMB_MEMMGR_EX* pMgr, unsigned int size, int flags);
-
- // Interface: OOM_Handler
- // OOM (out-of-memory) situation handler
- // Parameters:
- // pMgr - Pointer to the memory manager.
- // Return Value:
- // None.
- // Comments:
- // In order to handle OOM situation, application can use longjmp() inside
- // implementation of this function.
- //
- void (*OOM_Handler)(struct FPDFEMB_MEMMGR_EX* pMgr);
-
- // Interfce: Realloc
- // Reallocate a memory block
- // Parameters:
- // pMgr - Pointer to the memory manager.
- // pointer - Pointer to an existing memory block, or handle to a movable
- // block. Can not be NULL.
- // new_size - New size (number of bytes) of the memory block. Can not be zero.
- // Return value:
- // The pointer of reallocated memory block, it could be a new block, or just
- // the previous block with size modified.
- // If FPDFEMB_MOVABLE flag is used, implementation should return a handle
- // to the memory block, if it supports movable block allocation.
- // Comments:
- // If an existing memory block specified, the data in the memory block should
- // be copied to the new block, if reallocated.
- //
- // The implementation should not do any action if no memory available,
- // just return NULL. OOM handling can be done in OOM_Handler interface.
- //
- void* (*Realloc)(struct FPDFEMB_MEMMGR_EX* pMgr, void* pointer, unsigned int new_size, int flags);
-
- // Interface: Lock
- // Lock a movable memory block
- // Parameters:
- // pMgr - Pointer to the memory manager.
- // handle - Handle to movable memory block, returned by Alloc or Realloc.
- // Return Value:
- // The pointer of the memory block. NULL if the block was discarded.
- // Comments:
- // This interface is optional, if implementation doesn't support movable memory
- // block, then this interface can be set to NULL.
- //
- void* (*Lock)(struct FPDFEMB_MEMMGR_EX* pMgr, void* handle);
-
- // Interface: Unlock
- // Unlock a locked movable memory block
- // Parameters:
- // pMgr - Pointer to the memory manager.
- // handle - Handle to movable memory block, returned by Alloc or Realloc.
- // Return Value:
- // None.
- // Comments:
- // This interface is optional, if implementation doesn't support movable memory
- // block, then this interface can be set to NULL.
- //
- void (*Unlock)(struct FPDFEMB_MEMMGR_EX* pMgr, void* handle);
-
- // Interface: Free
- // Free a memory block
- // Parameters:
- // pMgr - Pointer to the memory manager.
- // pointer - Pointer to an existing memory block, or handle to a movable block.
- // Return Value:
- // None.
- //
- void (*Free)(struct FPDFEMB_MEMMGR_EX* pMgr, void* pointer, int flags);
-
- void* user; // A user pointer, used by the application
-};
-
-// Function: FPDFEMB_LoadJbig2Decoder
-// Function: FPDFEMB_LoadJpeg2000Decoder
-// Enable JBIG2 or JPEG2000 image decoder
-// Parameters:
-// None.
-// Return Value:
-// None.
-// Comments:
-// If you want to display JBIG2 or JPEG2000 encoded images, you need to call
-// these functions after FPDFEMB initialized.
-//
-// Calling these functions will increase code size by about 200K-400K bytes.
-// Also JPEG2000 decoder may not be available on some platforms.
-//
-void FPDFEMB_LoadJbig2Decoder();
-void FPDFEMB_LoadJpeg2000Decoder();
-
-// Function: FPDFEMB_InitEx
-// Initialize the FPDFEMB module with the extended memory manager
-// Parameters:
-// mem_mgr - Pointer to memory manager structure
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-// Comments:
-// This function will allocate necessary internal data structure for
-// the whole module to operate.
-FPDFEMB_RESULT FPDFEMB_InitEx(FPDFEMB_MEMMGR_EX* mem_mgr);
-
-// Function: FPDFEMB_Exit
-// Stop using FPDFEMB module and release all resources
-// Parameters:
-// None.
-// Return Value:
-// None.
-// Comments:
-// All loaded documents and pages will become invalid after this call.
-//
-// This function is useful for OOM recovery: when your application hits
-// an OOM situation, calling this function will clear all memory allocated
-// by FPDFEMB module, then you can call one of the initialization functions,
-// reopen the document and recovery from OOM.
-//
-void FPDFEMB_Exit();
-
-// Function: FPDFEMB_AllocMemory
-// Allocate memory
-// Parameters:
-// size - Number of bytes
-// Return Value:
-// The allocated buffer pointer. NULL for out of memory.
-//
-void* FPDFEMB_AllocMemory(unsigned int size);
-
-// Function: FPDFEMB_FreeMemory
-// Free allocated memory
-// Parameters:
-// pointer - Pointer returned by FPDFEMB_AllocMemory
-// Return Value:
-// None.
-//
-void FPDFEMB_FreeMemory(void* pointer);
-
-// Function: FPDFEMB_FreeCaches
-// Free all expendable caches used by FPDFEMB in order to save memory
-// Parameters:
-// None.
-// Return Value:
-// None.
-// Comments:
-// When an application memory manager runs out of memory, before an OOM situation
-// is raised, the application can try this
-//
-void FPDFEMB_FreeCaches();
-
-/********************************************************************************************
-****
-**** Document Operations
-****
-********************************************************************************************/
-
-// Structure: FPDFEMB_FILE_ACCESS
-// Describe the way to access a file (readonly).
-struct FPDFEMB_FILE_ACCESS {
- // Inteface: GetSize
- // Get total size of the file
- // Parameters:
- // file - Pointer to this file access structure
- // Return Value:
- // File size, in bytes. Implementation can return 0 for any error.
- //
- unsigned int (*GetSize)(struct FPDFEMB_FILE_ACCESS* file);
-
- // Interface: ReadBlock
- // Read a data block from the file
- // Parameters:
- // file - Pointer to this file access structure
- // buffer - Pointer to a buffer receiving read data
- // offset - Byte offset for the block, from beginning of the file
- // size - Number of bytes for the block.
- // Return Value:
- // Error code, or FPDFERR_SUCCESS for success.
- //
- FPDFEMB_RESULT (*ReadBlock)(struct FPDFEMB_FILE_ACCESS* file, void* buffer,
- unsigned int offset, unsigned int size);
-
- void* user; // A user pointer, used by the application
-};
-
-// Structure: FPDFEMB_PAUSE
-// An interface for pausing a progressive process.
-struct FPDFEMB_PAUSE {
- // Interface: NeedPauseNow
- // Check if we need to pause a progressive proccess now
- // Parameters:
- // pause - Pointer to the pause structure
- // Return Value:
- // Non-zero for pause now, 0 for continue.
- // Comments:
- // Typically implementation of this interface compares the current system tick
- // with the previous one, if the time elapsed exceeds certain threshold, then
- // the implementation returns TRUE, indicating a pause is needed.
- //
- FPDFEMB_BOOL (*NeedPauseNow)(struct FPDFEMB_PAUSE* pause);
-
- void* user; // A user pointer, used by the application
-};
-
-typedef void* FPDFEMB_DOCUMENT;
-
-// Function: FPDFEMB_StartLoadDocument
-// Start loading a PDF document
-// Parameters:
-// file - Pointer to file access structure.
-// This structure must be kept valid as long as the document is open.
-// password - Pointer to a zero-terminated byte string, for the password.
-// Or NULL for no password.
-// document - Receiving the document handle
-// pause - A callback mechanism allowing the document loading process
-// to be paused before it's finished. This can be NULL if you
-// don't want to pause.
-// Return Value:
-// FPDFERR_SUCCESS: document successfully loaded.
-// FPDFERR_TOBECONTINUED: The document loading can't be finished now.
-// See comments below.
-// FPDFERR_PASSWORD: incorrect password.
-// FPDFERR_FORMAT: not a PDF or corrupted PDF.
-// FPDFERR_FILE: file access error.
-// FPDFERR_MEMORY: out of memory.
-// Comments:
-// Document loading is a progressive process. It might take a long time to
-// load a document, especiall when a file is corrupted, FPDFEMB will try to
-// recover the document contents by scanning the whole file. If "pause" parameter
-// is provided, this function may return FPDFERR_TOBECONTINUED any time during
-// the document loading.
-//
-// When FPDFERR_TOBECONTINUED is returned, the "document" parameter will
-// still receive a valid document handle, however, no further operations can
-// be performed on the document, except the "FPDFEMB_ContineLoadDocument" function
-// call, which resume the document loading.
-//
-FPDFEMB_RESULT FPDFEMB_StartLoadDocument(FPDFEMB_FILE_ACCESS* file, const char* password,
- FPDFEMB_DOCUMENT* document, FPDFEMB_PAUSE* pause);
-
-// Function: FPDFEMB_ContinueLoadDocument
-// Continue loading a PDF document
-// Parameters:
-// document - Document handle returned by FPDFEMB_StartLoadDocument function
-// pause - A callback mechanism allowing the document loading process
-// to be paused before it's finished. This can be NULL if you
-// don't want to pause.
-// Return Value:
-// FPDFERR_SUCCESS: document successfully loaded.
-// FPDFERR_TOBECONTINUED: The document loading can't be finished now.
-// Further call to this function is needed.
-// FPDFERR_PASSWORD: incorrect password.
-// FPDFERR_FORMAT: not a PDF or corrupted PDF.
-// FPDFERR_FILE: file access error.
-// FPDFERR_MEMORY: out of memory.
-// FPDFERR_STATUS: document already loaded.
-// FPDFERR_PARAM: invalid parameter (like NULL document handle)
-//
-FPDFEMB_RESULT FPDFEMB_ContinueLoadDocument(FPDFEMB_DOCUMENT document, FPDFEMB_PAUSE* pause);
-
-// Function: FPDFEMB_CloseDocument
-// Close a PDF document and free all associated resources
-// Parameters:
-// document - Document handle
-// Return Value:
-// Error code. FPDFERR_SUCCESS for success.
-//
-FPDFEMB_RESULT FPDFEMB_CloseDocument(FPDFEMB_DOCUMENT document);
-
-// Function: Get page count
-// Get number of pages in the document
-// Parameters:
-// document - Document handle
-// Return Value:
-// Number of pages.
-//
-int FPDFEMB_GetPageCount(FPDFEMB_DOCUMENT document);
-
-// Function: FPDFEMB_SetFileBufferSize
-// Set size of internal buffer used to read from source file.
-// Parameters:
-// size - Number of bytes
-// Return Value:
-// None.
-// Comments:
-// Currently FPDFEMB uses 512 bytes as default buffer size. The new buffer size
-// takes effect next time you call FPDFEMB_StartLoadDocument.
-//
-void FPDFEMB_SetFileBufferSize(int size);
-
-/********************************************************************************************
-****
-**** Page Basic Operations
-****
-********************************************************************************************/
-
-typedef void* FPDFEMB_PAGE;
-
-// Function: FPDFEMB_LoadPage
-// Load a page
-// Parameters:
-// document - Document handle
-// index - Page index, starting from zero
-// page - Receiving the loaded page handler
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-//
-FPDFEMB_RESULT FPDFEMB_LoadPage(FPDFEMB_DOCUMENT document, int index, FPDFEMB_PAGE* page);
-
-// Function: FPDFEMB_ClosePage
-// Close a page and release all related resources
-// Parameters:
-// page - Page handle
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-//
-FPDFEMB_RESULT FPDFEMB_ClosePage(FPDFEMB_PAGE page);
-
-// Function: FPDFEMB_GetPageSize
-// Get size of a page
-// Parameters:
-// page - Page handle
-// width - Receiving page width, in hundredth of points
-// height - Receiving page height, in hundredth of points
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success
-//
-FPDFEMB_RESULT FPDFEMB_GetPageSize(FPDFEMB_PAGE page, int* width, int* height);
-
-// Structure: FPDFEMB_RECT
-// Rectangle area in device or page coordination system
-//
-struct FPDFEMB_RECT
-{
- // For device system, coordinations are measured in pixels;
- // For page system, coordinations are measured in hundredth of points.
- int left;
- int top;
- int right;
- int bottom;
-};
-
-// Function: FPDFEMB_GetPageBBox
-// Get displayable area (bounding box) of a page
-// Parameters:
-// page - Page handle
-// rect - Pointer to a structure receiving the rectangle
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success
-//
-FPDFEMB_RESULT FPDFEMB_GetPageBBox(FPDFEMB_PAGE page, FPDFEMB_RECT* rect);
-
-/********************************************************************************************
-****
-**** Page Parsing
-****
-********************************************************************************************/
-
-// Function: FPDFEMB_StartParse
-// Start parsing a page, so it can get rendered or searched
-// Parameters:
-// page - Page handle
-// text_only - flag for parsing texts only (used for searching)
-// pause - A structure that can pause the parsing process.
-// Or NULL if you don't want to pause the process.
-// Return Value:
-// FPDFERR_SUCCESS: parsing successfully finished;
-// FPDFERR_TOBECONTINUED: parsing started successfully, but not finished;
-// FPDFERR_STATUS: page already parsed, or parsing already started.
-// Other return value: error code.
-// Comments:
-// Parsing is a progressive process. This function starts the parsing process,
-// and may return before parsing is finished, if a pause structure is provided.
-//
-// Application should call FPDFEMB_ContinueParse repeatedly to finish the parsing
-// when return value is FPDFERR_TOBECONTINUED.
-//
-// There can be only one parsing procedure active for a page, and if a page
-// has already been parsed, you can't start a parsing again.
-//
-FPDFEMB_RESULT FPDFEMB_StartParse(FPDFEMB_PAGE page, FPDFEMB_BOOL text_only,
- FPDFEMB_PAUSE* pause);
-
-// Function: FPDFEMB_ContinueParse
-// Continue the page parsing
-// Parameters:
-// page - Page handle
-// pause - A structure that can pause the parsing process.
-// Or NULL if you don't want to pause the process.
-// Return Value:
-// FPDFERR_SUCCESS: parsing successfully finished;
-// FPDFERR_TOBECONTINUED: parsing performed successfully, but not finished;
-// FPDFERR_STATUS: page already parsed (or parsing not started).
-// Other return value: error code.
-// Comments:
-// FPDFEMB_StartParse should be called before on the page.
-//
-// Application should call FPDFEMB_ContinueParse repeatedly to finish the parsing
-// when return value is FPDFERR_TOBECONTINUED.
-//
-FPDFEMB_RESULT FPDFEMB_ContinueParse(FPDFEMB_PAGE page, FPDFEMB_PAUSE* pause);
-
-// Function: FPDFEMB_GetParseProgress
-// Get an estimated parsing progress in percentage
-// Parameters:
-// page - Page handle
-// Return Value:
-// An integer between 0 and 100 (inclusive) indicating the parsing progress.
-// The result is just a rough estimation.
-//
-int FPDFEMB_GetParseProgress(FPDFEMB_PAGE page);
-
-/********************************************************************************************
-****
-**** Page Rendering
-****
-********************************************************************************************/
-
-typedef void* FPDFEMB_BITMAP;
-
-// Function: FPDFEMB_StartQuickDraw
-// Start drawing a quick preview of a page
-// Parameters:
-// dib - DIB handle, as the rendering device
-// page - Page handle. The page has to be parsed first.
-// start_x - Left pixel position of the display area in the device coordination
-// start_y - Top pixel position of the display area in the device coordination
-// size_x - Horizontal size (in pixels) for displaying the page
-// size_y - Vertical size (in pixels) for displaying the page
-// rotate - Page orientation: 0 (normal), 1 (rotated 90 degrees clockwise),
-// 2 (rotated 180 degrees), 3 (rotated 90 degrees counter-clockwise).
-// flags - Reserved, must be zero.
-// pause - Pointer to a structure that can pause the rendering process.
-// Can be NULL if no pausing is needed.
-// Return Value:
-// FPDFERR_SUCCESS: quickdraw successly finished;
-// FPDFERR_TOBECONTINUED: quickdraw started successfully, but not finished.
-// FPDFEMB_ContinueQuickDraw needs to be called to finish the quickdraw;
-// FPDFERR_STATUS: quickdraw already in progress, or page not parsed;
-// Other return value: error code.
-// Comments:
-// It's often useful to present user a quick preview of a page, right after the
-// page is parsed. This preview renders only a limited set of easy features in the
-// page, so it'll be rather quick to finish this process.
-//
-FPDFEMB_RESULT FPDFEMB_StartQuickDraw(FPDFEMB_BITMAP dib, FPDFEMB_PAGE page,
- int start_x, int start_y, int size_x, int size_y, int rotate,
- int flags, FPDFEMB_PAUSE* pause);
-
-// Function: FPDFEMB_ContinueQuickDraw
-// Continue a quick draw processing
-// Parameters:
-// page - Page handle. The page has to be parsed first.
-// pause - Pointer to a structure that can pause the rendering process.
-// Can be NULL if no pausing is needed.
-// Return Value:
-// FPDFERR_SUCCESS: quickdraw successly finished;
-// FPDFERR_TOBECONTINUED: quickdraw started successfully, but not finished.
-// more calls to this function needed to finish the quickdraw;
-// FPDFERR_STATUS: quickdraw not started yet;
-// Other return value: error code.
-//
-FPDFEMB_RESULT FPDFEMB_ContinueQuickDraw(FPDFEMB_PAGE page, FPDFEMB_PAUSE* pause);
-
-#define FPDFEMB_ANNOT 0x01 // Set if annotations are to be rendered
-#define FPDFEMB_LCD_TEXT 0x02 // Set if using text rendering optimized for LCD display
-#define FPDFEMB_BGR_STRIPE 0x04 // Set if the device is using BGR LCD stripe
-
-// Function: FPDFEMB_StartRender
-// Start rendering of a page.
-// Parameter:
-// dib - DIB handle, as the rendering device
-// page - Page handle. The page has to be parsed first.
-// start_x - Left pixel position of the display area in the device coordination
-// start_y - Top pixel position of the display area in the device coordination
-// size_x - Horizontal size (in pixels) for displaying the page
-// size_y - Vertical size (in pixels) for displaying the page
-// rotate - Page orientation: 0 (normal), 1 (rotated 90 degrees clockwise),
-// 2 (rotated 180 degrees), 3 (rotated 90 degrees counter-clockwise).
-// flags - 0 for normal display, or combination of flags defined above
-// clip - Pointer to clip rectangle (in DIB device coordinations),
-// or NULL if no clipping needed.
-// pause - Pointer to a structure that can pause the rendering process.
-// Can be NULL if no pausing is needed.
-// Return Value:
-// FPDFERR_SUCCESS: rendering successfully finished;
-// FPDFERR_TOBECONTINUED: rendering started successfully, but not finished;
-// Other return value: error code.
-// Comments:
-// Rendering is a progressive process. This function starts the rendering process,
-// and may return before rendering is finished, if a pause structure is provided.
-//
-// Application should call FPDFEMB_ContinueRender repeatedly to finish the rendering
-// when return value is FPDFERR_TOBECONTINUED.
-//
-// There can be only one rendering procedure for a page at any time. And rendering
-// can be started over and over again for the same page. If a page rendering is already
-// active, starting another one will cancel the previous rendering.
-//
-// Rendering of a page doesn't draw the page background, therefore, you usually need
-// to draw the background in the DIB yourself.
-//
-FPDFEMB_RESULT FPDFEMB_StartRender(FPDFEMB_BITMAP dib, FPDFEMB_PAGE page,
- int start_x, int start_y, int size_x, int size_y, int rotate, int flags,
- FPDFEMB_RECT* clip, FPDFEMB_PAUSE* pause);
-
-// Function: FPDFEMB_ContinueRender
-// Continue the page rendering
-// Parameters:
-// page - Page handle
-// pause - Pointer to a structure that can pause the rendering process.
-// Can be NULL if no pausing is needed.
-// Return Value:
-// FPDFERR_SUCCESS: rendering successfully finished.
-// FPDFERR_TOBECONTINUED: rendering needs to be continued;
-// Other return value: error code.
-// Comments:
-// This function may return any time when the pause interface indicates
-// a pause is needed. Application can call FPDFEMB_ContinueRender any number
-// of times, until FPDFERR_TOBECONTINUED is not returned.
-//
-FPDFEMB_RESULT FPDFEMB_ContinueRender(FPDFEMB_PAGE page, FPDFEMB_PAUSE* pause);
-
-// Function: FPDFEMB_GetRenderProgress
-// Get an estimated rendering progress in percentage
-// Parameters:
-// page - Page handle
-// Return Value:
-// An integer between 0 and 100 (inclusive) indicating the rendering progress.
-// The result is just a rough estimation.
-// If the rendering just finished, this function will return 0.
-//
-int FPDFEMB_GetRenderProgress(FPDFEMB_PAGE page);
-
-// Function: FPDFEMB_SetHalftoneLimit
-// Set pixel count limit for using halftone when display image
-// Parameter:
-// limit - Number of pixels for the limit
-// Return Value:
-// None.
-// Comments:
-// By default, FPDFEMB displays all bitmaps using downsamping, which means
-// if the image is shrinked onto screen, only part of pixels will be picked
-// and displayed. This saves a lot of calculation, especially for big images
-// with millions of pixels. However the display quality can be bad. In order to
-// reach a balance between performance and quality, application can use this
-// function to set a limit, if number of pixels in an image is more than this
-// limit, then FPDFEMB will use downsampling for quick drawing, otherwise, if
-// the image has less pixels, FPDFEMB will use halftoning for better quality.
-//
-void FPDFEMB_SetHalftoneLimit(int limit);
-
-/********************************************************************************************
-****
-**** Coordination Conversion
-****
-********************************************************************************************/
-
-// Structure: FPDFEMB_POINT
-// A point in device or page coordination system
-//
-struct FPDFEMB_POINT
-{
- // For device system, coordinations are measured in pixels;
- // For page system, coordinations are measured hundredth of points.
- int x;
- int y;
-};
-
-// Function: FPDFEMB_DeviceToPagePoint, FPDFEMB_DeviceToPageRect
-// Convert the device coordinations of a point or a rectangle to page coordinations.
-// Parameters:
-// page - Handle to the page. Returned by FPDFEMB_LoadPage function.
-// start_x - Left pixel position of the display area in the device coordination
-// start_y - Top pixel position of the display area in the device coordination
-// size_x - Horizontal size (in pixels) for displaying the page
-// size_y - Vertical size (in pixels) for displaying the page
-// rotate - Page orientation: 0 (normal), 1 (rotated 90 degrees clockwise),
-// 2 (rotated 180 degrees), 3 (rotated 90 degrees counter-clockwise).
-// point - A point structure with device coordinations upon the call,
-// also receiving the result page coordinations.
-// rect - A rectangle structure with device coordinations upon the call,
-// also receiving the result page coordinations.
-// Return value:
-// None.
-// Comments:
-// The page coordination system has its origin at left-bottom corner of the page,
-// with X axis goes along the bottom side to the right, and Y axis goes along the
-// left side upward. No matter how you zoom, scroll, or rotate a page, a particular
-// element (like text or image) on the page should always have the same coordination
-// values in the page coordination system.
-//
-// The device coordination system is device dependant. For bitmap device, its origin
-// is at left-top corner of the window. You must make sure the start_x, start_y, size_x,
-// size_y and rotate parameters have exactly same values as you used in
-// FPDFEMB_StartRender() function call.
-//
-// For rectangle conversion, the result rectangle is always "normalized", meaning for
-// page coordinations, left is always smaller than right, bottom is smaller than top.
-//
-void FPDFEMB_DeviceToPagePoint(FPDFEMB_PAGE page,
- int start_x, int start_y, int size_x, int size_y, int rotate,
- FPDFEMB_POINT* point);
-
-void FPDFEMB_DeviceToPageRect(FPDFEMB_PAGE page,
- int start_x, int start_y, int size_x, int size_y, int rotate,
- FPDFEMB_RECT* rect);
-
-// Function: FPDFEMB_PageToDevicePoint, FPDFEMB_PageToDeviceRect
-// Convert the page coordinations of a point or a rectangle to device coordinations.
-// Parameters:
-// page - Handle to the page. Returned by FPDFEMB_LoadPage function.
-// start_x - Left pixel position of the display area in the device coordination
-// start_y - Top pixel position of the display area in the device coordination
-// size_x - Horizontal size (in pixels) for displaying the page
-// size_y - Vertical size (in pixels) for displaying the page
-// rotate - Page orientation: 0 (normal), 1 (rotated 90 degrees clockwise),
-// 2 (rotated 180 degrees), 3 (rotated 90 degrees counter-clockwise).
-// point - A point structure with page coordinations upon the call,
-// also receiving the result device coordinations.
-// rect - A rectangle structure with page coordinations upon the call,
-// also receiving the result device coordinations.
-// Return value:
-// None
-// Comments:
-// For rectangle conversion, the result rectangle is always "normalized", meaning for
-// device coordinations, left is always smaller than right, top is smaller than bottom.
-//
-void FPDFEMB_PageToDevicePoint(FPDFEMB_PAGE page,
- int start_x, int start_y, int size_x, int size_y, int rotate,
- FPDFEMB_POINT* point);
-
-void FPDFEMB_PageToDeviceRect(FPDFEMB_PAGE page,
- int start_x, int start_y, int size_x, int size_y, int rotate,
- FPDFEMB_RECT* rect);
-
-/********************************************************************************************
-****
-**** Text Search
-****
-********************************************************************************************/
-
-// Search flags for FPDFEMB_FindFirst function
-#define FPDFEMB_MATCHCASE 1 // whether matching case
-#define FPDFEMB_MATCHWHOLEWORD 2 // whether matching whole word
-#define FPDFEMB_CONSECUTIVE 4 // whether matching consecutively (for example, "CC" will
- // match twice in "CCC").
-
-// Function: FPDFEMB_FindFirst
-// Find first occurance of a pattern string in a page
-// Parameters:
-// page - Page handle.
-// pattern - A zero-terminated unicode string to be found.
-// from_last - Whether we start from the end of page
-// flags - Search flags, see above defined constants
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-// Is not found, FPDFERR_NOTFOUND is returned.
-// Comments:
-// A page must be parsed first before it can be searched.
-// There can be only one search in progress for a page. A new search will
-// cancel the previous one.
-//
-// IMPORTANT: this function is now obsolete and kept for back compatibility
-// only, please use FPDFEMB_FindFrom function below.
-//
-FPDFEMB_RESULT FPDFEMB_FindFirst(FPDFEMB_PAGE page, const FPDFEMB_WCHAR* pattern,
- FPDFEMB_BOOL from_last, unsigned int flags);
-
-// Function: FPDFEMB_FindFrom
-// Find first occurance of a pattern string in a page, from a particular position
-// Parameters:
-// page - Page handle.
-// pattern - A zero-terminated unicode string to be found.
-// pos - The position, returned from FPDFEMB_GetSearchPos.
-// Or 0 from the beginning of page, -1 from the end of page.
-// flags - Search flags, see above defined constants
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-// Is not found, FPDFERR_NOTFOUND is returned.
-// Comments:
-// A page must be parsed first before it can be searched.
-// There can be only one search in progress for a page. A new search will
-// cancel the previous one.
-//
-FPDFEMB_RESULT FPDFEMB_FindFrom(FPDFEMB_PAGE page, const FPDFEMB_WCHAR* pattern,
- int pos, unsigned int flags);
-
-// Function: FPDFEMB_FindNext
-// Find next occurance of a search
-// Parameters:
-// page - Page handle.
-// FPDFEMB_FindFirst must be called for this page first.
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-// Is not found, FPDFERR_NOTFOUND is returned.
-//
-FPDFEMB_RESULT FPDFEMB_FindNext(FPDFEMB_PAGE page);
-
-// Function: FPDFEMB_FindPrev
-// Find previous occurance of a search
-// Parameters:
-// page - Page handle.
-// FPDFEMB_FindFirst must be called for this page first.
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-// Is not found, FPDFERR_NOTFOUND is returned.
-//
-FPDFEMB_RESULT FPDFEMB_FindPrev(FPDFEMB_PAGE page);
-
-// Function: FPDFEMB_CountFoundRects
-// Get number of rectangles for last found result
-// Parameters:
-// page - Page handle.
-// Return Value:
-// Number of rectangles for last found result. 0 for not found or failure.
-//
-int FPDFEMB_CountFoundRects(FPDFEMB_PAGE page);
-
-// Function: FPDFEMB_GetFoundRect
-// Get a particular found rectangle
-// Parameters:
-// page - Page handle.
-// index - Zero-based index for the rectangle.
-// rect - Receiving the result rectangle, in hundredth of points
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-// Comments:
-// Application should always call FPDFEMB_CountFoundRects first to get
-// number of rectangles, then use this function to get each rectangle.
-//
-// The returned rectangle uses page coordination system.
-//
-FPDFEMB_RESULT FPDFEMB_GetFoundRect(FPDFEMB_PAGE page, int index, FPDFEMB_RECT* rect);
-
-// Function: FPDFEMB_GetSearchPos
-// Return position of current search result
-// Parameters:
-// page - Page handle.
-// Return Value:
-// Zero based character index for the current search result. -1 if not found.
-//
-int FPDFEMB_GetSearchPos(FPDFEMB_PAGE page);
-
-// Function: FPDFEMB_QuickSearch
-// Search a pattern in a page quickly, without the page to be parsed
-// Parameters:
-// document - Document handle returned by FPDFEMB_StartLoadDocument function
-// page_index - Zero-based index of the page
-// pattern - A zero-terminated unicode string to be found.
-// case_sensitive - Non-zero for case-sensitive searching, zero for case-insensitive
-// Return Value:
-// FPDFERR_SUCCESS if pattern found, FPDFERR_NOTFOUND if pattern not found.
-// Otherwise error code is returned.
-// Comments:
-// This function does a rough and quick search in a page, before the page is loaded.
-// The quick search will not generate an exact result saying where the pattern is
-// found, and, it might be possible if a quick search result is "pattern found", and
-// a real search for the same pattern, in the same page, will result in "not found".
-//
-// However, if quick search doesn't find a pattern in a page, then we can be sure the
-// pattern won't be found in this page when we do a real search. So, this function is
-// very useful when we search in a multiple-page document, and we want to quickly skip
-// those pages in which the pattern can't possibly be found.
-//
-FPDFEMB_RESULT FPDFEMB_QuickSearch(FPDFEMB_DOCUMENT document, int page_index,
- const FPDFEMB_WCHAR* pattern, int case_sensitive);
-
-/********************************************************************************************
-****
-**** Text Information
-****
-********************************************************************************************/
-
-// Function: FPDFEMB_GetCharCount
-// Get number of characters in the page
-// Parameters:
-// page - Page handle
-// count - Receiving number of characters
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-//
-FPDFEMB_RESULT FPDFEMB_GetCharCount(FPDFEMB_PAGE page, int* count);
-
-// Structure: FPDFEMB_CHAR_INFO
-// Character information.
-struct FPDFEMB_CHAR_INFO {
- int unicode; // Unicode for the character. 0 if not available.
- // Space and new line charcters (U+0020 and U+000A) may be generated
- // according to the text formatting.
- FPDFEMB_POINT origin; // X/Y position for the character origin, in hundredth of points
- FPDFEMB_RECT bbox; // Bounding box of the character, in hundredth of points
- // Maybe an empty box (left == right or top == bottom).
-};
-
-// Function: FPDFEMB_GetCharInfo
-// Get character information
-// Parameters:
-// page - Page handle
-// index - Character index, starting from zero
-// char_info - Receiving the character info
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success
-// Comments:
-// Application must call FPDFEMB_GetCharCount first before it can call this function
-// for any particular characters.
-//
-FPDFEMB_RESULT FPDFEMB_GetCharInfo(FPDFEMB_PAGE page, int index, FPDFEMB_CHAR_INFO* char_info);
-
-// Function: FPDFEMB_GetCharIndexAtPos()
-// Get index of character nearest to a certain position on the page
-// Parameters:
-// page - Page handle
-// x - X position in PDF page coordination system
-// y - Y position in PDF page coordination system
-// index - Pointer to an integer receiving zero-based character index.
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success
-// Comments:
-// This function finds the character that's nearest to the particular page position.
-// If there is no character, the output index will be -1.
-//
-FPDFEMB_RESULT FPDFEMB_GetCharIndexAtPos(FPDFEMB_PAGE page, double x, double y, int* index);
-
-/********************************************************************************************
-****
-**** Device Independant Bitmap
-****
-********************************************************************************************/
-
-#define FPDFDIB_BGR 1 // 3 bytes per pixel, byte order: Blue, Green, Red
-#define FPDFDIB_BGRx 2 // 4 bytes per pixel, byte order: Blue, Green, Red, not used
-#define FPDFDIB_BGRA 3 // 4 bytes per pixel, byte order: Blue, Green, Red, Alpha
-#define FPDFDIB_GRAY 4 // 1 byte per pixel (grayscale)
-
-// Function: FPDFEMB_CreateDIB
-// Create a DIB (Device Independant Bitmap)
-// Parameters:
-// width - Width pixels;
-// height - Height pixels;
-// format - Format type. See FPDFDIB_xxx constants
-// buffer - External buffer provided for the DIB,
-// or NULL if new buffer is to be allocated.
-// stride - Number of bytes for each scan line, for external buffer only.
-// If not specified, 4-byte alignment assumed.
-// dib - Receiving the created DIB handle
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success
-// Comments:
-// If "buffer" parameter is not NULL, then the provided buffer must conform
-// to standard DIB format (see comments of FPDFEMB_GetDIBData function below).
-//
-// This function doesn't initialize the pixels inside the DIB buffer. So if you
-// want to use the DIB to display a PDF page, you usually need to initialize
-// the DIB to white background by youself.
-//
-FPDFEMB_RESULT FPDFEMB_CreateDIB(int width, int height, int format,
- void* buffer, int stride, FPDFEMB_BITMAP* dib);
-
-// Function: FPDFEMB_DestroyDIB
-// Destroy a DIB
-// Parameters:
-// dib - DIB handle
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success
-// Comments:
-// If external buffer is used (specified in "buffer" parameter when calling
-// FPDFEMB_CreateDIB), the buffer will not be destroyed.
-//
-FPDFEMB_RESULT FPDFEMB_DestroyDIB(FPDFEMB_BITMAP dib);
-
-// Function: FPDFEMB_GetDIBWidth
-// Get width (in pixels) of a DIB
-// Parameters:
-// dib - DIB handle
-// Return Value:
-// DIB width in pixels.
-//
-int FPDFEMB_GetDIBWidth(FPDFEMB_BITMAP dib);
-
-// Function: FPDFEMB_GetDIBHeight
-// Get height (in pixels) of a DIB
-// Parameters:
-// dib - DIB handle
-// Return Value:
-// DIB height in pixels.
-//
-int FPDFEMB_GetDIBHeight(FPDFEMB_BITMAP dib);
-
-// Function: FPDFEMB_GetDIBData
-// Get data pointer to a DIB
-// Parameters:
-// dib - DIB handle
-// Return Value:
-// Pointer to the DIB data.
-// Comments:
-// DIB data are organized in scanlines, from top down.
-//
-void* FPDFEMB_GetDIBData(FPDFEMB_BITMAP dib);
-
-// Function: FPDFEMB_GetDIBStride
-// Get scan line stride of a DIB
-// Parameters:
-// dib - DIB handle
-// Return Value:
-// Number of bytes occupied by a scanline
-//
-int FPDFEMB_GetDIBStride(FPDFEMB_BITMAP dib);
-
-// Function: FPDFEMB_GetRotatedDIB
-// Swap X/Y dimensions of a DIB to generate a rotated new DIB
-// Parameters:
-// dib - DIB handle
-// flip_x - Whether flip pixels on the destination X dimension (left/right)
-// flip_y - Whether flip pixels on the destination Y dimension (up/down)
-// result_dib - Receiving the result DIB handle
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success
-//
-FPDFEMB_RESULT FPDFEMB_GetRotatedDIB(FPDFEMB_BITMAP dib,
- FPDFEMB_BOOL bFlipX, FPDFEMB_BOOL bFlipY,
- FPDFEMB_BITMAP* result_dib);
-
-// Function: FPDFEMB_StretchDIB
-// Stretch a source DIB into another destination DIB
-// Parameters:
-// dest_dib - The destination DIB handle
-// dest_left - Left position in the destination DIB
-// dest_top - Top position in the destination DIB
-// dest_width - Destination width, in pixels. Can be negative for horizontal flipping
-// dest_height - Destination height, in pixels. Can be negative for vertical flipping
-// clip - Destination clipping rectangle, or NULL for no clipping.
-// The coordinations are measured in destination bitmap.
-// src_dib - Source DIB handle.
-// interpol - Whether we use interpolation to improve the result quality
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success
-//
-FPDFEMB_RESULT FPDFEMB_StretchDIB(FPDFEMB_BITMAP dest_dib, int dest_left, int dest_top,
- int dest_width, int dest_height, FPDFEMB_RECT* clip_rect,
- FPDFEMB_BITMAP src_dib, FPDFEMB_BOOL interpol);
-
-// Function: FPDFEMB_TransformDIB
-// Transform a source DIB into another destination DIB
-// Parameters:
-// dest_dib - The destination DIB handle
-// clip - Destination clipping rectangle, or NULL for no clipping.
-// The coordinations are measured in destination bitmap.
-// src_dib - Source DIB handle.
-// x - X coordination of the dest origin
-// y - Y coordination of the dest origin
-// xx - X distance of the dest X vector
-// yx - Y distance of the dest X vector
-// xy - X distance of the dest Y vector
-// yy - Y distance of the dest Y vector
-// interpol - Whether we use interpolation to improve the result quality
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success
-// Comments:
-// All coordinations and distances are measured in destination bitmap system.
-//
-// This function places the bottom-left pixel of the image at the destination
-// origin, then the bottom sideline along the destination X vector, and left
-// sideline along the destination Y vector.
-//
-FPDFEMB_RESULT FPDFEMB_TransformDIB(FPDFEMB_BITMAP dest_dib, FPDFEMB_RECT* clip_rect,
- FPDFEMB_BITMAP src_dib, int x, int y, int xx, int yx,
- int xy, int yy, FPDFEMB_BOOL interpol);
-
-/********************************************************************************************
-****
-**** Custom Font Handler and CJK Support
-****
-********************************************************************************************/
-
-// FPDFEMB comes with standard fonts for Latin characters. If your device is targeted to
-// Eastern Asian markets, then system fonts must be provided and registered with FPDFEMB.
-// Depending on your device configuration, those system fonts might be in TrueType or Type1
-// format, or some other non-standard compact format. For the first case, you should register
-// a font mapper so FPDFEMB can pick the right font file, and for the second case, you
-// should register a glyph provider so FPDFEMB can get glyph bitmap for each character.
-
-#define FPDFEMB_CHARSET_DEFAULT 0
-#define FPDFEMB_CHARSET_GB 936
-#define FPDFEMB_CHARSET_BIG5 950
-#define FPDFEMB_CHARSET_JIS 932
-#define FPDFEMB_CHARSET_KOREA 949
-#define FPDFEMB_CHARSET_UNICODE 1200
-
-#define FPDFEMB_FONT_FIXEDPITCH 1
-#define FPDFEMB_FONT_SERIF 2
-#define FPDFEMB_FONT_SYMBOLIC 4
-#define FPDFEMB_FONT_SCRIPT 8
-#define FPDFEMB_FONT_NONSYMBOLIC 32
-#define FPDFEMB_FONT_ITALIC 64
-#define FPDFEMB_FONT_ALLCAP 0x10000
-#define FPDFEMB_FONT_SMALLCAP 0x20000
-#define FPDFEMB_FONT_FORCEBOLD 0x40000
-
-// Structure: FPDFEMB_FONT_MAPPER
-// Defines interface for system font mapper.
-//
-struct FPDFEMB_FONT_MAPPER
-{
- // Interface: MapFont
- // Find font file path for a particular PDF font
- // Parameters:
- // mapper - Pointer to the FPDFEMB_FONT_MAPPER structure
- // name - Font name
- // charset - Charset ID (see above FPDFEMB_CHARSET_xxx constants)
- // flags - Font flags (see above FPDFEMB_FONT_xxx constants)
- // weight - Weight of the font. Range from 100 to 900. 400 is normal,
- // 700 is bold.
- // path - Receiving the full file path. The buffer size is 512 bytes.
- // face_index - Receiving an zero-based index value for the font face, if the
- // mapped font file is a "collection" (meaning a number of faces
- // are stored in the same file). If the font file is not a
- // collection, the index value should be zero.
- // Return Value:
- // Non-zero for success, 0 for failure.
- //
- FPDFEMB_BOOL (*MapFont)(struct FPDFEMB_FONT_MAPPER* mapper, const char* name, int charset,
- unsigned int flags, int weight,
- char* path, int* face_index);
-
- void* user; // A user pointer, used by the application
-};
-
-// Function: FPDFEMB_SetFontMapper
-// Use a system font mapper (typically for Chinese/Japanese/Korean charsets)
-// Parameters:
-// mapper - Pointer to FPDFEMB_FONT_MAPPER structure.
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success
-// Comments:
-// This function is used with devices that come with one or more system fonts,
-// and those fonts are in standard TT or T1 format.
-//
-FPDFEMB_RESULT FPDFEMB_SetFontMapper(FPDFEMB_FONT_MAPPER* mapper);
-
-// Structure: FPDFEMB_GLYPH_PROVIDER
-// Interface for providing glyph bitmap of non-latin characters.
-// This is usually used for embedded devices with Chinese/Japanese/Korean
-// fonts installed, but those fonts are not in TrueType or Type1 format.
-//
-struct FPDFEMB_GLYPH_PROVIDER
-{
- // Interface: MapFont
- // Return an internal handle for a font
- // Parameters:
- // provider - Pointer to this structure
- // name - Font name
- // charset - Charset ID (see above FPDFEMB_CHARSET_xxx constants)
- // flags - Font flags (see above FPDFEMB_FONT_xxx constants)
- // weight - Weight of the font. Range from 100 to 900. 400 is normal,
- // 700 is bold.
- // Return Value:
- // An internal handle to the mapped font. If the embedded device supports
- // multiple fonts, then this value can serve as an identifier to differentiate
- // among them. If the device supports only one font, then implementation of
- // this function can simply return NULL.
- //
- void* (*MapFont)(struct FPDFEMB_GLYPH_PROVIDER* provider, const char* name, int charset,
- unsigned int flags, int weight);
- // Interface: GetGlyphBBox
- // Get glyph bounding box
- // Parameters:
- // provider - Pointer to this structure
- // font - Internal handle to the font. Returned by MapFont interface.
- // unicode - Unicode of the character
- // CID - Adobe CID for this character. Or zero if not available.
- // bbox - Receiving the result bounding box. See comments below.
- // Return Value:
- // None.
- // Comments:
- // The bounding box is measure in a glyph coordination system, in which the
- // origin is set to character origin, and unit is set to one-thousandth of
- // "em size" (representing the font size).
- //
- // In most CJK fonts, all CJK characters (except some symbols or western
- // characters) have same glyph bounding box:
- // left = 0, right = 1000, bottom = -220, top = 780.
- //
- // It's OK to return a box that's larger than the actual glyph box.
- //
- void (*GetGlyphBBox)(struct FPDFEMB_GLYPH_PROVIDER* provider, void* font,
- FPDFEMB_WCHAR unicode, unsigned short CID,
- FPDFEMB_RECT* bbox);
-
- // Interface: GetGlyphBitmap
- // Get bitmap of a glyph
- // Parameters:
- // provider - Pointer to this structure
- // font - Internal handle to the font. Returned by MapFont interface.
- // unicode - Unicode of the character
- // CID - Adobe CID for this character. Or zero if not available.
- // font_width - Width of the font em square, measured in device units.
- // font_height - Height of the font em square, measured in device units.
- // left - Receiving the left offset, from the character origin, of the
- // result glyph bitmap. Positive value will move the bitmap to
- // the right side, negative to the left.
- // top - Receiving the top offset, from the character origin, of the
- // result glyph bitmap. Positive value will move the bitmap upward,
- // negative downward.
- // bitmap_width - Receiving number of width pixels in the result bitmap
- // bitmap_height - Receiving number of height pixels in the result bitmap
- // buffer - Receiving a data buffer pointer, allocated by the implementation.
- // See comments below.
- // stride - Receiving number of bytes per scanline, in the data buffer.
- // pdf_width - Width of the character specified in PDF. It is measured in one-
- // thousandth of the font width. It can be 0 if width not specified
- // in PDF. See comments below.
- // Return Value:
- // Non-zero for success. 0 for failure. In this case the glyph can not be displayed.
- // Comments:
- // The buffer should be allocated by implemenation. And it must be allocated
- // using FPDFEMB_AllocMemory function. The result buffer will be destroyed by
- // FPDFEMB SDK, so implementation should not destroy it.
- //
- // The implementation should write "coverage" data into allocated buffer, one byte
- // for each pixel, from top scanline to bottom scanline, within each scan line,
- // from left pixel to right. Coverage 0 means the pixel is outside the glyph,
- // coverage 255 means the pixel is inside the glyph.
- //
- // The "pdf_width" parameter can be used to scale the character in system font
- // horizontally to match the font width specified in PDF. For example, if we have
- // a PDF file which requires a character in half-width (pdf_width is 500), but
- // in the system font the character has full-width (1000), then the glyph provider
- // implementation should scale the font horizontally to half of its original width.
- //
- FPDFEMB_BOOL (*GetGlyphBitmap)(struct FPDFEMB_GLYPH_PROVIDER* provider, void* font,
- FPDFEMB_WCHAR unicode, unsigned short CID,
- double font_width, double font_height, int* left, int* top,
- int* bitmap_width, int* bitmap_height,
- void** buffer, int* stride, int pdf_width);
-
- void* user; // A user pointer, used by the application
-};
-
-// Function: FPDFEMB_SetGlyphProvider
-// Make use of a glyph provider: generating glyph bitmap for non-Latin characters
-// Parameters:
-// provider - Pointer to the glyph provider structure.
-// This structure must stay valid throughout usage of FPDFEMB module.
-// Return Value:
-// None.
-// Comments:
-// FPDFEMB embeds some standard fonts for Latin characters and symbols, like
-// Times, Courier and Helvetica (Arial). For non-Latin characters, however,
-// FPDFEMB has to ask glyph provide for help.
-//
-// If an embedded device carries fonts for non-Latin character sets, especially
-// those for CJK markets, then the application can implement a glyph provider,
-// allowing PDFs using non-embedded CJK fonts to be properly displayed.
-//
-void FPDFEMB_SetGlyphProvider(FPDFEMB_GLYPH_PROVIDER* provider);
-
-// Function: FPDFEMB_LoadCMap_GB
-// Function: FPDFEMB_LoadCMap_GB_Ext
-// Function: FPDFEMB_LoadCMap_CNS
-// Function: FPDFEMB_LoadCMap_Korean
-// Function: FPDFEMB_LoadCMap_Japan
-// Function: FPDFEMB_LoadCMap_Japan_Ext
-// Make use of character encoding maps embedded with FPDFEMB
-// Parameters:
-// None.
-// Return Value:
-// None.
-// Comments:
-// These functions add character encoding data to your application. Each call
-// will increase the code size of your application. Total data size for all
-// character sets is 151K bytes.
-void FPDFEMB_LoadCMap_GB();
-void FPDFEMB_LoadCMap_GB_Ext(); // Load full code table for GB
-void FPDFEMB_LoadCMap_CNS();
-void FPDFEMB_LoadCMap_Korea();
-void FPDFEMB_LoadCMap_Japan();
-void FPDFEMB_LoadCMap_Japan_Ext(); // Load full code table for Japan
-
-/********************************************************************************************
-****
-**** Document Information
-****
-********************************************************************************************/
-
-// Function: PDFEMB_GetDocInfoString
-// Get information string about the document, like creator, modifcation date, etc.
-// Parameters:
-// document - Handle to the document
-// key - A byte string for the information key. Currently can be one of the followings:
-// "Title", "Author", "Subject", "Keywords", "Creator", "Producer", "CreationDate",
-// "ModDate", or some custom information key, if supported by the PDF file.
-// buffer - A buffer allocated by the application, or NULL.
-// bufsize - [IN/OUT] A pointer to a number indicating the buffer size (number of bytes),
-// before this function call. After return, this place will store
-// number of bytes used by the output (including terminator).
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success
-// Comments:
-// The string is output in Unicode, using UTF-16LE format. It's terminated by
-// two consecutive zero bytes.
-//
-// If the "buffer" parameter is NULL, then the "bufsize" parameter will receive
-// number of bytes required to store the string (including the two-byte terminator).
-//
-FPDFEMB_RESULT FPDFEMB_GetDocInfoString(FPDFEMB_DOCUMENT document, const char* key, void* buffer, unsigned int* bufsize);
-
-/********************************************************************************************
-****
-**** Action (Destination) Information
-****
-********************************************************************************************/
-
-typedef void* FPDFEMB_ACTION;
-
-// Action types supported by FPDFEMB
-#define FPDFEMB_DEST_NONE 0 // No or unsupported destination
-#define FPDFEMB_DEST_PAGE 1 // A page inside the same document
-#define FPDFEMB_DEST_DOC 2 // An external PDF document
-#define FPDFEMB_DEST_URL 3 // An external URL
-#define FPDFEMB_ACTION_LAUNCH 4 // Launch an external file or command
-
-// Zoom mode for destination
-#define FPDFEMB_ZOOM_NONE 0 // Zoom mode not specified
-#define FPDFEMB_ZOOM_FACTOR 1 // Specific zoom factor is used
-#define FPDFEMB_ZOOM_FITPAGE 2 // Fit the whole page on screen
-#define FPDFEMB_ZOOM_FITWIDTH 3 // Fit width of the page on screen
-#define FPDFEMB_ZOOM_FITHEIGHT 4 // Fit height of the page on screen
-#define FPDFEMB_ZOOM_FITRECT 5 // Fit a particular rectangle on screen
-#define FPDFEMB_ZOOM_FITCONTENT 6 // Fit whole content of page on screen
-#define FPDFEMB_ZOOM_FITCONTENTW 7 // Fit content width of page on screen
-#define FPDFEMB_ZOOM_FITCONTENTH 8 // Fit content height of page on screen
-
-// Data structure for page destination
-struct FPDFEMB_PAGEDEST
-{
- int page_index; // Zero based index for the page
- int zoom_mode; // See FPDFEMB_ZOOM_xxx definition above
- int zoom_factor; // For FPDFEMB_ZOOM_FACTOR only: the zoom factor (in percentage)
- FPDFEMB_RECT position; // Specify position inside the page. Depends on the zoom mode,
- // different members of the rectangle are used:
- // FPDFEMB_ZOOM_NONE: left, top
- // FPDFEMB_ZOOM_FACTOR: left, top
- // FPDFEMB_ZOOM_FITPAGE: none
- // FPDFEMB_ZOOM_FITWIDTH: top
- // FPDFEMB_ZOOM_FITHEIGHT: left
- // FPDFEMB_ZOOM_FITRECT: left, top, bottom, right
- // FPDFEMB_ZOOM_FITCONTENT: none
- // FPDFEMB_ZOOM_FITCONTENTW: top
- // FPDFEMB_ZOOM_FITCONTENTH: left
-};
-
-// Data structure for document destination
-struct FPDFEMB_DOCDEST
-{
- FPDFEMB_PAGEDEST page_data; // page data
- char* file_name; // The file name, encoded in original charset (maybe MBCS)
-};
-
-// Data structure for URL destination
-struct FPDFEMB_URLDEST
-{
- char* url; // URL encoded in 7-bit ASCII
-};
-
-// Data structure for Launch action
-struct FPDFEMB_LAUNCHACTION
-{
- int new_window; // Whether a new window should be opened
- char* file_name; // The file name, encoded in original charset (maybe MBCS)
-};
-
-// Function: FPDFEMB_Action_GetType
-// Get type of an action
-// Parameters:
-// document - Handle to the document
-// action - Handle to the action
-// dest_type - Pointer to an integer receiving type of the destination. See the above
-// FPDFEMB_DEST_xxx definitions
-// data_size - Pointer to an integer receiving data block size for the destination.
-// If this parameter is NULL, then data size won't be retrieved.
-// Comments:
-// Each different type of destination has different data structure. The "data_size" result
-// indicates how many bytes is required to hold the destination data structure. The application
-// can then allocate sufficient buffer and then call FPDFEMB_Bookmark_GetDest function to
-// get the real data.
-//
-FPDFEMB_RESULT FPDFEMB_Action_GetType(FPDFEMB_DOCUMENT document, FPDFEMB_ACTION action, int* dest_type, int* data_size);
-
-// Function: FPDFEMB_Action_GetData
-// Get detailed data of a particular action
-// Parameters:
-// document - Handle to the document
-// action - Handle to the action
-// buffer - Application allocated buffer receiving the destination data
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-// Comments:
-// See data structure definition for different action type above. Please note
-// the actual action data might use more space than the structure definition
-// shows, to store things like file name or URL. So you should always call
-// FPDFEMB_Action_GetType first to get data size then allocate enough buffer
-// for this call.
-//
-FPDFEMB_RESULT FPDFEMB_Action_GetData(FPDFEMB_DOCUMENT document, FPDFEMB_ACTION action, void* buffer);
-
-// Function: FPDFEMB_Action_GetNext
-// Get next action in an action chain
-// Parameters:
-// document - Handle to the document
-// action - Handle to current action
-// next - Receiving handle to next action.
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-// Comments:
-// If there is no next action, the "next" parameter will be set to NULL after the function returns.
-//
-FPDFEMB_RESULT FPDFEMB_Action_GetNext(FPDFEMB_ACTION action, FPDFEMB_ACTION* next);
-
-/********************************************************************************************
-****
-**** Bookmark Information
-****
-********************************************************************************************/
-
-typedef void* FPDFEMB_BOOKMARK;
-
-// Function: FPDFEMB_Bookmark_GetFirstChild
-// Get first child of a bookmark item, or first top level bookmark item
-// Parameters:
-// document - Handle to the document
-// parent - Handle to the parent bookmark.
-// Can be NULL if you want to get the first top level item.
-// bookmark - Receiving handle to the first child or top level bookmark item.
-// If result is NULL, then bookmark not found.
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success
-//
-FPDFEMB_RESULT FPDFEMB_Bookmark_GetFirstChild(FPDFEMB_DOCUMENT document, FPDFEMB_BOOKMARK parent,
- FPDFEMB_BOOKMARK* bookmark);
-
-// Function: FPDFEMB_Bookmark_GetFirstChild
-// Get next sibling of a bookmark item
-// Parameters:
-// document - Handle to the document
-// bookmark - Handle to the bookmark
-// sibling - Receiving the handle of next sibling.
-// If result is NULL, then this is the last bookmark in this level.
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success
-//
-FPDFEMB_RESULT FPDFEMB_Bookmark_GetNextSibling(FPDFEMB_DOCUMENT document, FPDFEMB_BOOKMARK bookmark,
- FPDFEMB_BOOKMARK* sibling);
-
-// Function: FPDFEMB_Bookmark_GetTitle
-// Get title of a bookmark
-// Parameters:
-// bookmark - Handle to the bookmark
-// buffer - A buffer allocated by the application, or NULL.
-// bufsize - [IN/OUT] A pointer to a number indicating the buffer size,
-// before this function call. After return, this place will store
-// number of bytes used by the output (including terminator).
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success
-// Comments:
-// The title is output in Unicode, using UTF-16LE format. It's terminated by
-// two consecutive zero bytes.
-//
-// If the "buffer" parameter is NULL, then the "bufsize" parameter will receive
-// number of bytes required to store the bookmark title (including the two-
-// byte terminator).
-//
-// If the buffer provided is smaller than the required size, then this function
-// will not copy any data, return FPDFEMB_PARAM, and the required buffer size will
-// also be put in "bufsize" parameter.
-//
-FPDFEMB_RESULT FPDFEMB_Bookmark_GetTitle(FPDFEMB_BOOKMARK bookmark, void* buffer, unsigned int* bufsize);
-
-// Function: FPDFEMB_Bookmark_GetPage
-// Get page number of a bookmark pointing to
-// Parameters:
-// document - Handle to the document
-// bookmark - Handle to the bookmark
-// page - Receiving the page number. -1 if this bookmark doesn't actually
-// point to a page inside the document.
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success
-// Comments:
-// Some bookmark might not point to a page, some bookmark might have more than one destination
-// (action), for detailed information about a bookmark, you should call FPDFEMB_Bookmark_GetAction.
-//
-FPDFEMB_RESULT FPDFEMB_Bookmark_GetPage(FPDFEMB_DOCUMENT document, FPDFEMB_BOOKMARK bookmark, int* page);
-
-// Function: FPDFEMB_Bookmark_GetAction
-// Get action(s) associated with a particular bookmark
-// Parameters:
-// document - Handle to the document
-// bookmark - Handle to the bookmark
-// action - Receiving handle of first action
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-//
-FPDFEMB_RESULT FPDFEMB_Bookmark_GetAction(FPDFEMB_DOCUMENT document, FPDFEMB_BOOKMARK bookmark, FPDFEMB_ACTION* action);
-
-/********************************************************************************************
-****
-**** Hyperlink Information
-****
-********************************************************************************************/
-
-// Function: FPDFEMB_Link_GetCount
-// Get number of hyperlinks inside a page
-// Parameters:
-// page - Page handle.
-// link_count - Pointer to an integer receiving the number of links
-// reserved - Must be zero now.
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-// Comments:
-// This function must be called before any other link related function can
-// be called for the page.
-//
-FPDFEMB_RESULT FPDFEMB_Link_GetCount(FPDFEMB_PAGE page, int* link_count, int reserved);
-
-// Function: FPDFEMB_Link_GetAction
-// Get action(s) associated with a particular hyperlink
-// Parameters:
-// page - Page handle
-// link_index - Zero-based index for the link
-// action - Receiving handle of first action
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-//
-FPDFEMB_RESULT FPDFEMB_Link_GetAction(FPDFEMB_PAGE page, int link_index, FPDFEMB_ACTION* action);
-
-// Function: FPDFEMB_Link_GetAreaCount
-// Get number of area (quadrilaterals) for a link
-// Parameters:
-// page - Page handle
-// link_index - Zero-based index for the link
-// count - Pointer to an integer receiving number of quadrilaterals
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-//
-FPDFEMB_RESULT FPDFEMB_Link_GetAreaCount(FPDFEMB_PAGE page, int link_index, int* count);
-
-// Function: FPDFEMB_Link_GetArea
-// Get a particular quadrilateral for a link
-// Parameters:
-// page - Page handle
-// link_index - Zero-based index for the link
-// area_index - Zero-based index for the quadrilateral
-// points - Pointer to an array consists 4 points, receiving coordinations
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-// Comments:
-// The result in "points" array are the X/Y coordinations for the four vertices
-// of the quadrilateral. Vertices are in the following order: lower left, lower
-// right, upper right, upper left.
-//
-FPDFEMB_RESULT FPDFEMB_Link_GetArea(FPDFEMB_PAGE page, int link_index, int area_index,
- FPDFEMB_POINT* points);
-
-/********************************************************************************************
-****
-**** Graphic Output (onto DIB)
-****
-********************************************************************************************/
-
-typedef void* FPDFEMB_FONT;
-
-// Function: FPDFEMB_OpenStandardFont
-// Get ready to use a standard PDF font
-// Parameters:
-// font_name - Name of the font. See a list of supported fonts below.
-// font_handle - Receiving the font handle.
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-// Comments:
-// Currently supported standard fonts:
-// Courier, Courier-Bold, Courier-BoldOblique, Courier-Oblique,
-// Helvetica, Helvetica-Bold, Helvetica-BoldOblique, Helvetica-Oblique,
-// Times-Roman, Times-Bold, Times-Italic, Times-BoldItalic,
-// Symbol, ZapfDingbats.
-//
-FPDFEMB_RESULT FPDFEMB_OpenStandardFont(const char* font_name, FPDFEMB_FONT* font_handle);
-
-// Function: FPDFEMB_OpenSystemFont
-// Get ready to use a system font
-// Parameters:
-// font_name - Font name
-// charset - Charset ID (see above FPDFEMB_CHARSET_xxx constants)
-// flags - Font flags (see above FPDFEMB_FONT_xxx constants)
-// weight - Weight of the font. Range from 100 to 900. 400 is normal,
-// 700 is bold.
-// font_handle - Receiving the font handle.
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-// Comments:
-// System font is supported only if either FPDFEMB_SetFontMapper or
-// FPDFEMB_SetGlyphProvider is called.
-// Font attributes (name, charset, flags and weight) can be all optional, if the
-// font mapper or glyph provider doesn't make use of them.
-//
-FPDFEMB_RESULT FPDFEMB_OpenSystemFont(const char* font_name, int charset, unsigned int flags, int weight,
- FPDFEMB_FONT* font_handle);
-
-// Function: FPDFEMB_CloseFont
-// Close a font handle.
-// Parameters:
-// font_handle - Handle to the font.
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-//
-FPDFEMB_RESULT FPDFEMB_CloseFont(FPDFEMB_FONT font_handle);
-
-struct FPDFEMB_TEXTMATRIX
-{
- double a, b, c, d;
-};
-
-// Function: FPDFEMB_OutputText
-// Output text string onto a DIB device.
-// Parameters:
-// dib - DIB handle, as the output device
-// x, y - DIB coordinations for the origin point of the first character.
-// font_handle - Handle to the font
-// font_size - Font size in pixels
-// matrix - Matrix for the text output. Can be NULL.
-// text - Zero-terminated unicode text string
-// argb - Color of the text, in 0xaarrggbb format.
-// Return Value:
-// Error code, or FPDFERR_SUCCESS for success.
-//
-FPDFEMB_RESULT FPDFEMB_OutputText(FPDFEMB_BITMAP dib, int x, int y, FPDFEMB_FONT font_handle, double font_size,
- FPDFEMB_TEXTMATRIX* matrix, const FPDFEMB_WCHAR* text, unsigned long argb);
-
-#ifdef __cplusplus
-};
-#endif
-
-#endif // #ifdef _FPDFEMB_H_
diff --git a/src/images/fpdfemb_ext.h b/src/images/fpdfemb_ext.h
deleted file mode 100644
index d82c4df..0000000
--- a/src/images/fpdfemb_ext.h
+++ /dev/null
@@ -1,81 +0,0 @@
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/** Extended interfaces for JPEG, JPEG2000 and JBIG2 decoders **/
-typedef struct
-{
- /** Initialize the decoding context, with memory allocator provided by FPDFEMB.
- Implementation should return a pointer to the decoding context.
- */
- void* (*Init)(void* (*alloc_func)(unsigned int), void (*free_func)(void*));
-
- /** Finish with the decoding. */
- void (*Finish)(void* pContext);
-
- /** Input JPEG encoded data from the source.
- This function may be called multiple times during decoding progress.
- */
- void (*Input)(void* pContext, const unsigned char* src_buf, unsigned long src_size);
-
- /** Read the header information. Return non-zero for success, 0 for failure */
- int (*ReadHeader)(void* pContext);
-
- /** Get info from the decoder, including image width, height and number of components */
- void (*GetInfo)(void* pContext, int* width, int* height, int* nComps);
-
- /** Read one scanline from decoded image */
- int (*ReadScanline)(void* pContext, unsigned char* dest_buf);
-
- /** Get number of available source bytes left in the input stream */
- unsigned long (*GetAvailInput)(void* pContext);
-} FPDFEMB_JPEG_DECODER;
-
-void FPDFEMB_SetJpegDecoder(FPDFEMB_JPEG_DECODER* pDecoder);
-
-typedef struct
-{
- /** Initialize the decoder with the full source data.
- Implementation should return a pointer to the context.
- */
- void* (*Init)(const unsigned char* src_buf, unsigned long src_size);
-
- /** Destroy the context */
- void (*Finish)(void* context);
-
- /** Get image info from the context, including width, height, number of components
- in original codestream, and number of components in output image. For some
- particular type of encoded image, like paletted image, these two numbers of
- components may vary.
- */
- void (*GetInfo)(void* context, unsigned long* width, unsigned long* height,
- unsigned long* codestream_nComps, unsigned long* output_nComps);
-
- /** Do the real data decoding, output to a pre-allocated buffer.
- bTranslateColor indicates whether the decoder should use JPEG2000 embedded
- color space info to translate image into sRGB color space.
- "offsets" array describes the byte order of all components. For example,
- {2,1,0} means the first components is output to last byte.
- */
- void (*Decode)(void* context, unsigned char* dest_buf, int pitch,
- int bTranslateColor, unsigned char* offsets);
-} FPDFEMB_JPEG2000_DECODER;
-
-void FPDFEMB_SetJpeg2000Decoder(FPDFEMB_JPEG2000_DECODER* pDecoder);
-
-typedef struct
-{
- /** Do the whole decoding process. Supplied parameters include width, height, source image
- data and size, global data and size (can be shared among different images), destination
- buffer and scanline pitch in dest buffer.
- */
- void (*Decode)(unsigned long width, unsigned long height, const unsigned char* src_buf,
- unsigned long src_size, const unsigned char* global_buf, unsigned long global_size,
- unsigned char* dest_buf, int dest_pitch);
-} FPDFEMB_JBIG2_DECODER;
-
-void FPDFEMB_SetJbig2Decoder(FPDFEMB_JBIG2_DECODER* pDecoder);
-
-#ifdef __cplusplus
-};
-#endif