]> gitweb.factorcode.org Git - factor.git/blob - unmaintained/pdf/libhpdf/libhpdf.factor
a0d9ca3bb3fb68b4b1b101b603ea5a510b95181e
[factor.git] / unmaintained / pdf / libhpdf / libhpdf.factor
1 ! Copyright (C) 2007 Elie CHAFTARI
2 ! See http://factorcode.org/license.txt for BSD license.
3 !
4 ! Tested with libharu2 2.0.8 on Mac OS X 10.4.9 PowerPC
5 !
6 ! export LD_LIBRARY_PATH=/opt/local/lib
7
8 USING: alien alien.syntax combinators system ;
9
10 IN: pdf.libhpdf
11
12 << "libhpdf" {
13     { [ win32? ] [ "libhpdf.dll" stdcall ] }
14     { [ macosx? ] [ "libhpdf.dylib" cdecl ] }
15     { [ unix? ] [ "$LD_LIBRARY_PATH/libhpdf.so" cdecl ] }
16 } cond add-library >>
17
18 ! compression mode
19 : HPDF_COMP_NONE      0x00 ; inline ! No contents are compressed
20 : HPDF_COMP_TEXT      0x01 ; inline ! Compress contents stream of page
21 : HPDF_COMP_IMAGE     0x02 ; inline ! Compress streams of image objects
22 : HPDF_COMP_METADATA  0x04 ; inline ! Compress other data (fonts, cmaps...)
23 : HPDF_COMP_ALL       0x0F ; inline ! All stream data are compressed
24 : HPDF_COMP_MASK      0xFF ; inline
25
26 ! page mode
27 CONSTANT: HPDF_PAGE_MODE_USE_NONE 0
28 CONSTANT: HPDF_PAGE_MODE_USE_OUTLINE 1
29 CONSTANT: HPDF_PAGE_MODE_USE_THUMBS 2
30 CONSTANT: HPDF_PAGE_MODE_FULL_SCREEN 3
31 CONSTANT: HPDF_PAGE_MODE_EOF 4
32
33 : error-code ( -- seq ) {
34      { 0x1001  "HPDF_ARRAY_COUNT_ERR\nInternal error. The consistency of the data was lost." }
35      { 0x1002  "HPDF_ARRAY_ITEM_NOT_FOUND\nInternal error. The consistency of the data was lost." }
36      { 0x1003  "HPDF_ARRAY_ITEM_UNEXPECTED_TYPE\nInternal error. The consistency of the data was lost." }
37      { 0x1004  "HPDF_BINARY_LENGTH_ERR\nThe length of the data exceeds HPDF_LIMIT_MAX_STRING_LEN." }
38      { 0x1005  "HPDF_CANNOT_GET_PALLET\nCannot get a pallet data from PNG image." }
39      { 0x1007  "HPDF_DICT_COUNT_ERR\nThe count of elements of a dictionary exceeds HPDF_LIMIT_MAX_DICT_ELEMENT" }
40      { 0x1008  "HPDF_DICT_ITEM_NOT_FOUND\nInternal error. The consistency of the data was lost." }
41      { 0x1009  "HPDF_DICT_ITEM_UNEXPECTED_TYPE\nInternal error. The consistency of the data was lost." }  
42      { 0x100A  "HPDF_DICT_STREAM_LENGTH_NOT_FOUND\nInternal error. The consistency of the data was lost." }  
43      { 0x100B  "HPDF_DOC_ENCRYPTDICT_NOT_FOUND\nHPDF_SetPermission() OR HPDF_SetEncryptMode() was called before a password is set." }
44      { 0x100C  "HPDF_DOC_INVALID_OBJECT\nInternal error. The consistency of the data was lost." }
45      { 0x100E  "HPDF_DUPLICATE_REGISTRATION\nTried to register a font that has been registered." }
46      { 0x100F  "HPDF_EXCEED_JWW_CODE_NUM_LIMIT\nCannot register a character to the japanese word wrap characters list." }
47      { 0x1011  "HPDF_ENCRYPT_INVALID_PASSWORD\nTried to set the owner password to NULL. owner password and user password is the same." }
48      { 0x1013  "HPDF_ERR_UNKNOWN_CLASS\nInternal error. The consistency of the data was lost." }
49      { 0x1014  "HPDF_EXCEED_GSTATE_LIMIT\nThe depth of the stack exceeded HPDF_LIMIT_MAX_GSTATE." }
50      { 0x1015  "HPDF_FAILED_TO_ALLOC_MEM\nMemory allocation failed." }
51      { 0x1016  "HPDF_FILE_IO_ERROR\nFile processing failed. (A detailed code is set.)" }
52      { 0x1017  "HPDF_FILE_OPEN_ERROR\nCannot open a file. (A detailed code is set.)" }
53      { 0x1019  "HPDF_FONT_EXISTS\nTried to load a font that has already been registered." }
54      { 0x101A  "HPDF_FONT_INVALID_WIDTHS_TABLE\nThe format of a font-file is invalid . Internal error. The consistency of the data was lost." }
55      { 0x101B  "HPDF_INVALID_AFM_HEADER\nCannot recognize a header of an afm file." }
56      { 0x101C  "HPDF_INVALID_ANNOTATION\nThe specified annotation handle is invalid." }
57      { 0x101E  "HPDF_INVALID_BIT_PER_COMPONENT\nBit-per-component of a image which was set as mask-image is invalid." }
58      { 0x101F  "HPDF_INVALID_CHAR_MATRICS_DATA\nCannot recognize char-matrics-data  of an afm file." }
59      { 0x1020  "HPDF_INVALID_COLOR_SPACE\n1. The color_space parameter of HPDF_LoadRawImage is invalid.\n2. Color-space of a image which was set as mask-image is invalid.\n3. The function which is invalid in the present color-space was invoked." }
60      { 0x1021  "HPDF_INVALID_COMPRESSION_MODE\nInvalid value was set when invoking HPDF_SetCommpressionMode()." }
61      { 0x1022  "HPDF_INVALID_DATE_TIME\nAn invalid date-time value was set." }
62      { 0x1023  "HPDF_INVALID_DESTINATION\nAn invalid destination handle was set." }
63      { 0x1025  "HPDF_INVALID_DOCUMENT\nAn invalid document handle is set." }
64      { 0x1026  "HPDF_INVALID_DOCUMENT_STATE\nThe function which is invalid in the present state was invoked." }
65      { 0x1027  "HPDF_INVALID_ENCODER\nAn invalid encoder handle was set." }
66      { 0x1028  "HPDF_INVALID_ENCODER_TYPE\nA combination between font and encoder is wrong." }
67      { 0x102B  "HPDF_INVALID_ENCODING_NAME\nAn Invalid encoding name is specified." }
68      { 0x102C  "HPDF_INVALID_ENCRYPT_KEY_LEN\nThe lengh of the key of encryption is invalid." }
69      { 0x102D  "HPDF_INVALID_FONTDEF_DATA\n1. An invalid font handle was set.\n2. Unsupported font format." }
70      { 0x102E  "HPDF_INVALID_FONTDEF_TYPE\nInternal error. The consistency of the data was lost." }
71      { 0x102F  "HPDF_INVALID_FONT_NAME\nA font which has the specified name is not found." }
72      { 0x1030  "HPDF_INVALID_IMAGE\nUnsupported image format." }
73      { 0x1031  "HPDF_INVALID_JPEG_DATA\nUnsupported image format." }
74      { 0x1032  "HPDF_INVALID_N_DATA\nCannot read a postscript-name from an afm file." }
75      { 0x1033  "HPDF_INVALID_OBJECT\n1. An invalid object is set.\n2. Internal error. The consistency of the data was lost." }
76      { 0x1034  "HPDF_INVALID_OBJ_ID\nInternal error. The consistency of the data was lost." }
77      { 0x1035  "HPDF_INVALID_OPERATION\nInvoked HPDF_Image_SetColorMask() against the image-object which was set a mask-image." }
78      { 0x1036  "HPDF_INVALID_OUTLINE\nAn invalid outline-handle was specified." }
79      { 0x1037  "HPDF_INVALID_PAGE\nAn invalid page-handle was specified." }
80      { 0x1038  "HPDF_INVALID_PAGES\nAn invalid pages-handle was specified. (internal error)" }
81      { 0x1039  "HPDF_INVALID_PARAMETER\nAn invalid value is set." }
82      { 0x103B  "HPDF_INVALID_PNG_IMAGE\nInvalid PNG image format." }
83      { 0x103C  "HPDF_INVALID_STREAM\nInternal error. The consistency of the data was lost." }
84      { 0x103D  "HPDF_MISSING_FILE_NAME_ENTRY\nInternal error. The \"_FILE_NAME\" entry for delayed loading is missing." }
85      { 0x103F  "HPDF_INVALID_TTC_FILE\nInvalid .TTC file format." }
86      { 0x1040  "HPDF_INVALID_TTC_INDEX\nThe index parameter was exceed the number of included fonts" }
87      { 0x1041  "HPDF_INVALID_WX_DATA\nCannot read a width-data from an afm file." }
88      { 0x1042  "HPDF_ITEM_NOT_FOUND\nInternal error. The consistency of the data was lost." }
89      { 0x1043  "HPDF_LIBPNG_ERROR\nAn error has returned from PNGLIB while loading an image." }
90      { 0x1044  "HPDF_NAME_INVALID_VALUE\nInternal error. The consistency of the data was lost." }
91      { 0x1045  "HPDF_NAME_OUT_OF_RANGE\nInternal error. The consistency of the data was lost." }
92      { 0x1049  "HPDF_PAGES_MISSING_KIDS_ENTRY\nInternal error. The consistency of the data was lost." }
93      { 0x104A  "HPDF_PAGE_CANNOT_FIND_OBJECT\nInternal error. The consistency of the data was lost." }
94      { 0x104B  "HPDF_PAGE_CANNOT_GET_ROOT_PAGES\nInternal error. The consistency of the data was lost." }
95      { 0x104C  "HPDF_PAGE_CANNOT_RESTORE_GSTATE\nThere are no graphics-states to be restored." }
96      { 0x104D  "HPDF_PAGE_CANNOT_SET_PARENT\nInternal error. The consistency of the data was lost." }
97      { 0x104E  "HPDF_PAGE_FONT_NOT_FOUND\nThe current font is not set." }
98      { 0x104F  "HPDF_PAGE_INVALID_FONT\nAn invalid font-handle was specified." }
99      { 0x1050  "HPDF_PAGE_INVALID_FONT_SIZE\nAn invalid font-size was set." }
100      { 0x1051  "HPDF_PAGE_INVALID_GMODE\nSee Graphics mode." }
101      { 0x1052  "HPDF_PAGE_INVALID_INDEX\nInternal error. The consistency of the data was lost." }
102      { 0x1053  "HPDF_PAGE_INVALID_ROTATE_VALUE\nThe specified value is not a multiple of 90." }
103      { 0x1054  "HPDF_PAGE_INVALID_SIZE\nAn invalid page-size was set." }
104      { 0x1055  "HPDF_PAGE_INVALID_XOBJECT\nAn invalid image-handle was set." }
105      { 0x1056  "HPDF_PAGE_OUT_OF_RANGE\nThe specified value is out of range." }
106      { 0x1057  "HPDF_REAL_OUT_OF_RANGE\nThe specified value is out of range." }
107      { 0x1058  "HPDF_STREAM_EOF\nUnexpected EOF marker was detected." }
108      { 0x1059  "HPDF_STREAM_READLN_CONTINUE\nInternal error. The consistency of the data was lost." }
109      { 0x105B  "HPDF_STRING_OUT_OF_RANGE\nThe length of the specified text is too long." }
110      { 0x105C  "HPDF_THIS_FUNC_WAS_SKIPPED\nThe execution of a function was skipped because of other errors." }
111      { 0x105D  "HPDF_TTF_CANNOT_EMBEDDING_FONT\nThis font cannot be embedded. (restricted by license.)" }
112      { 0x105E  "HPDF_TTF_INVALID_CMAP\nUnsupported ttf format. (cannot find unicode cmap.)" }
113      { 0x105F  "HPDF_TTF_INVALID_FOMAT\nUnsupported ttf format." }
114      { 0x1060  "HPDF_TTF_MISSING_TABLE\nUnsupported ttf format. (cannot find a necessary table.)" }
115      { 0x1061  "HPDF_UNSUPPORTED_FONT_TYPE\nInternal error. The consistency of the data was lost." }
116      { 0x1062  "HPDF_UNSUPPORTED_FUNC\n1. The library is not configured to use PNGLIB.\n2. Internal error. The consistency of the data was lost." }
117      { 0x1063  "HPDF_UNSUPPORTED_JPEG_FORMAT\nUnsupported Jpeg format." }
118      { 0x1064  "HPDF_UNSUPPORTED_TYPE1_FONT\nFailed to parse .PFB file." }
119      { 0x1065  "HPDF_XREF_COUNT_ERR\nInternal error. The consistency of the data was lost." }
120      { 0x1066  "HPDF_ZLIB_ERROR\nAn error has occurred while executing a function of Zlib." }
121      { 0x1067  "HPDF_INVALID_PAGE_INDEX\nAn error returned from Zlib." }
122      { 0x1068  "HPDF_INVALID_URI\nAn invalid URI was set." }
123      { 0x1069  "HPDF_PAGELAYOUT_OUT_OF_RANGE\nAn invalid page-layout was set." }
124      { 0x1070  "HPDF_PAGEMODE_OUT_OF_RANGE\nAn invalid page-mode was set." }
125      { 0x1071  "HPDF_PAGENUM_STYLE_OUT_OF_RANGE\nAn invalid page-num-style was set." }
126      { 0x1072  "HPDF_ANNOT_INVALID_ICON\nAn invalid icon was set." }
127      { 0x1073  "HPDF_ANNOT_INVALID_BORDER_STYLE\nAn invalid border-style was set." }
128      { 0x1074  "HPDF_PAGE_INVALID_DIRECTION\nAn invalid page-direction was set." }
129      { 0x1075  "HPDF_INVALID_FONT\nAn invalid font-handle was specified." }
130 } ;
131
132 LIBRARY: libhpdf
133
134 ! ===============================================
135 ! hpdf.h
136 ! ===============================================
137
138 FUNCTION: void* HPDF_New ( void* user_error_fn, void* user_data ) ;
139
140 FUNCTION: void* HPDF_Free ( void* pdf ) ;
141
142 FUNCTION: ulong HPDF_SetCompressionMode ( void* pdf, uint mode ) ;
143
144 FUNCTION: ulong HPDF_SetPageMode ( void* pdf, uint mode ) ;
145
146 FUNCTION: void* HPDF_AddPage ( void* pdf ) ;
147
148 FUNCTION: ulong HPDF_SaveToFile ( void* pdf, char* file_name ) ;
149
150 FUNCTION: float HPDF_Page_GetHeight ( void* page ) ;
151
152 FUNCTION: float HPDF_Page_GetWidth ( void* page ) ;
153
154 FUNCTION: ulong HPDF_Page_SetLineWidth ( void* page, float line_width ) ;
155
156 FUNCTION: ulong HPDF_Page_Rectangle ( void* page, float x, float y,
157                                       float width, float height ) ;
158
159 FUNCTION: ulong HPDF_Page_Stroke ( void* page ) ;
160
161 FUNCTION: void* HPDF_GetFont ( void* pdf, char* font_name,
162                                char* encoding_name ) ;
163
164 FUNCTION: ulong HPDF_Page_SetFontAndSize ( void* page, void* font,
165                                            float size ) ;
166
167 FUNCTION: float HPDF_Page_TextWidth ( void* page, char* text ) ;
168
169 FUNCTION: ulong HPDF_Page_BeginText ( void* page ) ;
170
171 FUNCTION: ulong HPDF_Page_TextOut ( void* page, float xpos, float ypos,
172                                     char* text ) ;
173
174 FUNCTION: ulong HPDF_Page_EndText ( void*  page ) ;
175
176 FUNCTION: ulong HPDF_Page_MoveTextPos ( void* page, float x, float y ) ;
177
178 FUNCTION: ulong HPDF_Page_ShowText ( void* page, char* text ) ;