#![allow(non_camel_case_types, non_snake_case, non_upper_case_globals)]
use std::ffi::{c_char, c_int, c_uint, c_ulong, c_ushort, c_void};
pub type FPDF_BOOL = c_int;
pub type FPDF_DWORD = c_ulong;
pub type FPDF_BYTESTRING = *const c_char;
pub type FPDF_WIDESTRING = *const c_ushort;
pub type FPDF_STRING = *const c_char;
macro_rules! opaque_handle {
($(#[$doc:meta])* $marker:ident, $handle:ident) => {
$(#[$doc])*
#[repr(C)]
#[doc(hidden)]
pub struct $marker {
_data: [u8; 0],
_marker: core::marker::PhantomData<(*mut u8, core::marker::PhantomPinned)>,
}
pub type $handle = *mut $marker;
};
}
opaque_handle!( fpdf_document_t__, FPDF_DOCUMENT);
opaque_handle!( fpdf_page_t__, FPDF_PAGE);
opaque_handle!( fpdf_bitmap_t__, FPDF_BITMAP);
opaque_handle!( fpdf_textpage_t__, FPDF_TEXTPAGE);
opaque_handle!( fpdf_formhandle_t__, FPDF_FORMHANDLE);
#[repr(C)]
#[derive(Debug, Clone, Copy, Default, PartialEq)]
pub struct FS_RECTF {
pub left: f32,
pub top: f32,
pub right: f32,
pub bottom: f32,
}
#[repr(C)]
#[derive(Debug, Clone, Copy, Default, PartialEq)]
pub struct FS_SIZEF {
pub width: f32,
pub height: f32,
}
#[repr(C)]
#[derive(Debug, Clone, Copy, Default, PartialEq)]
pub struct FS_POINTF {
pub x: f32,
pub y: f32,
}
#[repr(C)]
#[derive(Debug, Clone, Copy, Default, PartialEq)]
pub struct FS_MATRIX {
pub a: f32,
pub b: f32,
pub c: f32,
pub d: f32,
pub e: f32,
pub f: f32,
}
#[repr(C)]
#[derive(Debug, Clone, Copy)]
pub struct FPDF_LIBRARY_CONFIG {
pub version: c_int,
pub m_pUserFontPaths: *const *const c_char,
pub m_pIsolate: *mut c_void,
pub m_v8EmbedderSlot: c_uint,
pub m_pPlatform: *mut c_void,
pub m_RendererType: c_int,
pub m_FontLibraryType: c_int,
pub m_BrotliEnabled: FPDF_BOOL,
}
pub const FPDF_ERR_SUCCESS: c_ulong = 0; pub const FPDF_ERR_UNKNOWN: c_ulong = 1; pub const FPDF_ERR_FILE: c_ulong = 2; pub const FPDF_ERR_FORMAT: c_ulong = 3; pub const FPDF_ERR_PASSWORD: c_ulong = 4; pub const FPDF_ERR_SECURITY: c_ulong = 5; pub const FPDF_ERR_PAGE: c_ulong = 6;
pub const FPDFBitmap_Unknown: c_int = 0;
pub const FPDFBitmap_Gray: c_int = 1;
pub const FPDFBitmap_BGR: c_int = 2;
pub const FPDFBitmap_BGRx: c_int = 3;
pub const FPDFBitmap_BGRA: c_int = 4;
pub const FPDFBitmap_BGRA_Premul: c_int = 5;
pub const FPDF_ANNOT: c_int = 0x01;
pub const FPDF_LCD_TEXT: c_int = 0x02;
pub const FPDF_NO_NATIVETEXT: c_int = 0x04;
pub const FPDF_GRAYSCALE: c_int = 0x08;
pub const FPDF_REVERSE_BYTE_ORDER: c_int = 0x10;
pub const FPDF_CONVERT_FILL_TO_STROKE: c_int = 0x20;
pub const FPDF_DEBUG_INFO: c_int = 0x80;
pub const FPDF_NO_CATCH: c_int = 0x100;
pub const FPDF_RENDER_LIMITEDIMAGECACHE: c_int = 0x200;
pub const FPDF_RENDER_FORCEHALFTONE: c_int = 0x400;
pub const FPDF_PRINTING: c_int = 0x800;
pub const FPDF_RENDER_NO_SMOOTHTEXT: c_int = 0x1000;
pub const FPDF_RENDER_NO_SMOOTHIMAGE: c_int = 0x2000;
pub const FPDF_RENDER_NO_SMOOTHPATH: c_int = 0x4000;
pub const FORMTYPE_NONE: c_int = 0;
pub const FORMTYPE_ACRO_FORM: c_int = 1;
pub const FORMTYPE_XFA_FULL: c_int = 2;
pub const FORMTYPE_XFA_FOREGROUND: c_int = 3;
pub type TimerCallback = Option<unsafe extern "C" fn(idEvent: c_int)>;
#[repr(C)]
#[derive(Debug, Clone, Copy, Default)]
pub struct FPDF_SYSTEMTIME {
pub wYear: c_ushort,
pub wMonth: c_ushort,
pub wDayOfWeek: c_ushort,
pub wDay: c_ushort,
pub wHour: c_ushort,
pub wMinute: c_ushort,
pub wSecond: c_ushort,
pub wMilliseconds: c_ushort,
}
#[repr(C)]
pub struct FPDF_FORMFILLINFO {
pub version: c_int,
pub Release: Option<unsafe extern "C" fn(pThis: *mut FPDF_FORMFILLINFO)>,
pub FFI_Invalidate: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
page: FPDF_PAGE,
left: f64,
top: f64,
right: f64,
bottom: f64,
),
>,
pub FFI_OutputSelectedRect: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
page: FPDF_PAGE,
left: f64,
top: f64,
right: f64,
bottom: f64,
),
>,
pub FFI_SetCursor:
Option<unsafe extern "C" fn(pThis: *mut FPDF_FORMFILLINFO, nCursorType: c_int)>,
pub FFI_SetTimer: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
uElapse: c_int,
lpTimerFunc: TimerCallback,
) -> c_int,
>,
pub FFI_KillTimer: Option<unsafe extern "C" fn(pThis: *mut FPDF_FORMFILLINFO, nTimerID: c_int)>,
pub FFI_GetLocalTime:
Option<unsafe extern "C" fn(pThis: *mut FPDF_FORMFILLINFO) -> FPDF_SYSTEMTIME>,
pub FFI_OnChange: Option<unsafe extern "C" fn(pThis: *mut FPDF_FORMFILLINFO)>,
pub FFI_GetPage: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
document: FPDF_DOCUMENT,
nPageIndex: c_int,
) -> FPDF_PAGE,
>,
pub FFI_GetCurrentPage: Option<
unsafe extern "C" fn(pThis: *mut FPDF_FORMFILLINFO, document: FPDF_DOCUMENT) -> FPDF_PAGE,
>,
pub FFI_GetRotation:
Option<unsafe extern "C" fn(pThis: *mut FPDF_FORMFILLINFO, page: FPDF_PAGE) -> c_int>,
pub FFI_ExecuteNamedAction:
Option<unsafe extern "C" fn(pThis: *mut FPDF_FORMFILLINFO, namedAction: FPDF_BYTESTRING)>,
pub FFI_SetTextFieldFocus: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
value: FPDF_WIDESTRING,
valueLen: FPDF_DWORD,
is_focus: FPDF_BOOL,
),
>,
pub FFI_DoURIAction:
Option<unsafe extern "C" fn(pThis: *mut FPDF_FORMFILLINFO, bsURI: FPDF_BYTESTRING)>,
pub FFI_DoGoToAction: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
nPageIndex: c_int,
zoomMode: c_int,
fPosArray: *mut f32,
sizeofArray: c_int,
),
>,
pub m_pJsPlatform: *mut c_void,
pub xfa_disabled: FPDF_BOOL,
pub FFI_DisplayCaret: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
page: FPDF_PAGE,
bVisible: FPDF_BOOL,
left: f64,
top: f64,
right: f64,
bottom: f64,
),
>,
pub FFI_GetCurrentPageIndex: Option<
unsafe extern "C" fn(pThis: *mut FPDF_FORMFILLINFO, document: FPDF_DOCUMENT) -> c_int,
>,
pub FFI_SetCurrentPage: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
document: FPDF_DOCUMENT,
iCurPage: c_int,
),
>,
pub FFI_GotoURL: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
document: FPDF_DOCUMENT,
wsURL: FPDF_WIDESTRING,
),
>,
pub FFI_GetPageViewRect: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
page: FPDF_PAGE,
left: *mut f64,
top: *mut f64,
right: *mut f64,
bottom: *mut f64,
),
>,
pub FFI_PageEvent: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
page_count: c_int,
event_type: FPDF_DWORD,
),
>,
pub FFI_PopupMenu: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
page: FPDF_PAGE,
hWidget: *mut c_void, // FPDF_WIDGET; always null, compatibility only
menuFlag: c_int,
x: f32,
y: f32,
) -> FPDF_BOOL,
>,
pub FFI_OpenFile: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
fileFlag: c_int,
wsURL: FPDF_WIDESTRING,
mode: *const c_char,
) -> *mut c_void, >,
pub FFI_EmailTo: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
fileHandler: *mut c_void, // FPDF_FILEHANDLER*
pTo: FPDF_WIDESTRING,
pSubject: FPDF_WIDESTRING,
pCC: FPDF_WIDESTRING,
pBcc: FPDF_WIDESTRING,
pMsg: FPDF_WIDESTRING,
),
>,
pub FFI_UploadTo: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
fileHandler: *mut c_void, // FPDF_FILEHANDLER*
fileFlag: c_int,
uploadTo: FPDF_WIDESTRING,
),
>,
pub FFI_GetPlatform: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
platform: *mut c_void,
length: c_int,
) -> c_int,
>,
pub FFI_GetLanguage: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
language: *mut c_void,
length: c_int,
) -> c_int,
>,
pub FFI_DownloadFromURL: Option<
unsafe extern "C" fn(pThis: *mut FPDF_FORMFILLINFO, URL: FPDF_WIDESTRING) -> *mut c_void, >,
pub FFI_PostRequestURL: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
wsURL: FPDF_WIDESTRING,
wsData: FPDF_WIDESTRING,
wsContentType: FPDF_WIDESTRING,
wsEncode: FPDF_WIDESTRING,
wsHeader: FPDF_WIDESTRING,
response: *mut c_void, // FPDF_BSTR*
) -> FPDF_BOOL,
>,
pub FFI_PutRequestURL: Option<
unsafe extern "C" fn(
pThis: *mut FPDF_FORMFILLINFO,
wsURL: FPDF_WIDESTRING,
wsData: FPDF_WIDESTRING,
wsEncode: FPDF_WIDESTRING,
) -> FPDF_BOOL,
>,
pub FFI_OnFocusChange: Option<
unsafe extern "C" fn(
param: *mut FPDF_FORMFILLINFO,
annot: *mut c_void, // FPDF_ANNOTATION
page_index: c_int,
),
>,
pub FFI_DoURIActionWithKeyboardModifier: Option<
unsafe extern "C" fn(param: *mut FPDF_FORMFILLINFO, uri: FPDF_BYTESTRING, modifiers: c_int),
>,
}
pub const FPDF_FORMFIELD_UNKNOWN: c_int = 0;