OSDN Git Service

binding with libharu.
[putex/putex.git] / src / texsourc / lib / libhpdf / if / vb.net / hpdfvb.vb
1 '
2 ' << Haru Free PDF Library >> -- hpdfvb.vb
3 '
4 ' VB.Net wrapper for libhpdf.dll
5 '
6 ' Copyright (c) 2008 Matthew Underwood <matt@bargolf.net>
7 '
8 ' Permission to use, copy, modify, distribute and sell this software
9 ' and its documentation for any purpose is hereby granted without fee,
10 ' provided that the above copyright notice appear in all copies and
11 ' that both that copyright notice and this permission notice appear
12 ' in supporting documentation.
13 ' It is provided "as is" without express or implied warranty.
14 '
15 '
16
17 Imports System
18 Imports System.Runtime.InteropServices
19
20 Namespace HPdf
21
22     Public Enum HPdfPageLayout As Integer
23         HPDF_PAGE_LAYOUT_SINGLE = 0
24         HPDF_PAGE_LAYOUT_ONE_COLUMN
25         HPDF_PAGE_LAYOUT_TWO_CLUMN_LEFT
26         HPDF_PAGE_LAYOUT_TWO_CLUMN_RIGHT
27         HPDF_PAGE_LAYOUT_EOF
28     End Enum
29     Public Enum HPdfPageMode As Integer
30         HPDF_PAGE_MODE_USE_NONE = 0
31         HPDF_PAGE_MODE_USE_OUTLINE
32         HPDF_PAGE_MODE_USE_THUMBS
33         HPDF_PAGE_MODE_FULL_SCREEN
34         HPDF_PAGE_MODE_EOF
35     End Enum
36     Public Enum HPdfPageSizes As Integer
37         HPDF_PAGE_SIZE_LETTER = 0
38         HPDF_PAGE_SIZE_LEGAL
39         HPDF_PAGE_SIZE_A3
40         HPDF_PAGE_SIZE_A4
41         HPDF_PAGE_SIZE_A5
42         HPDF_PAGE_SIZE_B4
43         HPDF_PAGE_SIZE_B5
44         HPDF_PAGE_SIZE_EXECUTIVE
45         HPDF_PAGE_SIZE_US4x6
46         HPDF_PAGE_SIZE_US4x8
47         HPDF_PAGE_SIZE_US5x7
48         HPDF_PAGE_SIZE_COMM10
49         HPDF_PAGE_SIZE_EOF
50     End Enum
51     Public Enum HPdfPageDirection As Integer
52         HPDF_PAGE_PORTRAIT = 0
53         HPDF_PAGE_LANDSCAPE
54     End Enum
55     Public Enum HPdfPageNumStyle As UInt32
56         HPDF_PAGE_NUM_STYLE_DECIMAL = 0
57         HPDF_PAGE_NUM_STYLE_UPPER_ROMAN
58         HPDF_PAGE_NUM_STYLE_LOWER_ROMAN
59         HPDF_PAGE_NUM_STYLE_UPPER_LETTERS
60         HPDF_PAGE_NUM_STYLE_LOWER_LETTERS
61         HPDF_PAGE_NUM_STYLE_EOF
62     End Enum
63     Public Enum HPdfWritingMode As UInt32
64         HPDF_WMODE_HORIZONTAL = 0
65         HPDF_WMODE_VERTICAL
66         HPDF_WMODE_EOF
67     End Enum
68     Public Enum HPdfEncoderType As UInt32
69         HPDF_ENCODER_TYPE_SINGLE_BYTE = 0
70         HPDF_ENCODER_TYPE_DOUBLE_BYTE
71         HPDF_ENCODER_TYPE_UNINITIALIZED
72         HPDF_ENCODER_UNKNOWN
73     End Enum
74     Public Enum HPdfByteType As UInt32
75         HPDF_BYTE_TYPE_SINGLE = 0
76         HPDF_BYTE_TYPE_LEAD
77         HPDF_BYTE_TYPE_TRIAL
78         HPDF_BYTE_TYPE_UNKNOWN
79     End Enum
80     Public Enum HPdfAnnotHighlightMode As UInt32
81         HPDF_ANNOT_NO_HIGHTLIGHT = 0
82         HPDF_ANNOT_INVERT_BOX
83         HPDF_ANNOT_INVERT_BORDER
84         HPDF_ANNOT_DOWN_APPEARANCE
85         HPDF_ANNOT_HIGHTLIGHT_MODE_EOF
86     End Enum
87     Public Enum HPdfAnnotIcon As UInt32
88         HPDF_ANNOT_ICON_COMMENT = 0
89         HPDF_ANNOT_ICON_KEY
90         HPDF_ANNOT_ICON_NOTE
91         HPDF_ANNOT_ICON_HELP
92         HPDF_ANNOT_ICON_NEW_PARAGRAPH
93         HPDF_ANNOT_ICON_PARAGRAPH
94         HPDF_ANNOT_ICON_INSERT
95         HPDF_ANNOT_ICON_EOF
96     End Enum
97     Public Enum HPdfColorSpace As UInt32
98         HPDF_CS_DEVICE_GRAY = 0
99         HPDF_CS_DEVICE_RGB
100         HPDF_CS_DEVICE_CMYK
101         HPDF_CS_CAL_GRAY
102         HPDF_CS_CAL_RGB
103         HPDF_CS_LAB
104         HPDF_CS_ICC_BASED
105         HPDF_CS_SEPARATION
106         HPDF_CS_DEVICE_N
107         HPDF_CS_INDEXED
108         HPDF_CS_PATTERN
109         HPDF_CS_EOF
110     End Enum
111     Public Enum HPdfInfoType As UInt32
112         ' date-time type parameters
113         HPDF_INFO_CREATION_DATE = 0
114         HPDF_INFO_MOD_DATE = 1
115
116         ' string type parameters
117         HPDF_INFO_AUTHOR = 2
118         HPDF_INFO_CREATOR = 3
119         HPDF_INFO_PRODUCER = 4
120         HPDF_INFO_TITLE = 5
121         HPDF_INFO_SUBJECT = 6
122         HPDF_INFO_KEYWORDS = 7
123         HPDF_INFO_EOF = 8
124     End Enum
125     Public Enum HPdfEncryptMode As UInt32
126         HPDF_ENCRYPT_R2 = 2
127         HPDF_ENCRYPT_R3 = 3
128     End Enum
129     Public Enum HPdfTextRenderingMode As UInt32
130         HPDF_FILL = 0
131         HPDF_STROKE = 1
132         HPDF_FILL_THEN_STROKE = 2
133         HPDF_INVISIBLE = 3
134         HPDF_FILL_CLIPPING = 4
135         HPDF_STROKE_CLIPPING = 5
136         HPDF_FILL_STROKE_CLIPPING = 6
137         HPDF_CLIPPING = 7
138         HPDF_RENDERING_MODE_EOF = 8
139     End Enum
140     Public Enum HPdfLineCap As Integer
141         HPDF_BUTT_END = 0
142         HPDF_ROUND_END = 1
143         HPDF_PROJECTING_SCUARE_END = 2
144         HPDF_LINECAP_EOF = 3
145     End Enum
146     Public Enum HPdfLineJoin As Integer
147         HPDF_MITER_JOIN = 0
148         HPDF_ROUND_JOIN = 1
149         HPDF_BEVEL_JOIN = 2
150         HPDF_LINEJOIN_EOF = 3
151     End Enum
152     Public Enum HPdfTextAlignment As Integer
153         HPDF_TALIGN_LEFT = 0
154         HPDF_TALIGN_RIGHT = 1
155         HPDF_TALIGN_CENTER = 2
156         HPDF_TALIGN_JUSTIFY = 3
157     End Enum
158     Public Enum HPdfTransitionStyle As Integer
159         HPDF_TS_WIPE_RIGHT = 0
160         HPDF_TS_WIPE_UP
161         HPDF_TS_WIPE_LEFT
162         HPDF_TS_WIPE_DOWN
163         HPDF_TS_BARN_DOORS_HORIZONTAL_OUT
164         HPDF_TS_BARN_DOORS_HORIZONTAL_IN
165         HPDF_TS_BARN_DOORS_VERTICAL_OUT
166         HPDF_TS_BARN_DOORS_VERTICAL_IN
167         HPDF_TS_BOX_OUT
168         HPDF_TS_BOX_IN
169         HPDF_TS_BLINDS_HORIZONTAL
170         HPDF_TS_BLINDS_VERTICAL
171         HPDF_TS_DISSOLVE
172         HPDF_TS_GLITTER_RIGHT
173         HPDF_TS_GLITTER_DOWN
174         HPDF_TS_GLITTER_TOP_LEFT_TO_BOTTOM_RIGHT
175         HPDF_TS_REPLACE
176         HPDF_TS_EOF
177     End Enum
178     Public Enum HPdfBlendMode As Integer
179         HPDF_BM_NORMAL = 0
180         HPDF_BM_MULTIPLY
181         HPDF_BM_SCREEN
182         HPDF_BM_OVERLAY
183         HPDF_BM_DARKEN
184         HPDF_BM_LIGHTEN
185         HPDF_BM_COLOR_DODGE
186         HPDF_BM_COLOR_BUM
187         HPDF_BM_HARD_LIGHT
188         HPDF_BM_SOFT_LIGHT
189         HPDF_BM_DIFFERENCE
190         HPDF_BM_EXCLUSHON
191         HPDF_BM_EOF
192     End Enum
193     <StructLayout(LayoutKind.Sequential)> Public Structure HPdfRect
194         Public left As Single
195         Public bottom As Single
196         Public right As Single
197         Public top As Single
198     End Structure
199     <StructLayout(LayoutKind.Sequential)> Public Structure HPdfBox
200         Public left As Single
201         Public bottom As Single
202         Public right As Single
203         Public top As Single
204     End Structure
205     <StructLayout(LayoutKind.Sequential)> Public Structure HPdfPoint
206         Public x As Single
207         Public y As Single
208     End Structure
209     <StructLayout(LayoutKind.Sequential)> Public Structure HPdfDate
210         Public year As Int32
211         Public month As Int32
212         Public day As Int32
213         Public hour As Int32
214         Public minutes As Int32
215         Public seconds As Int32
216         Public ind As Char
217         Public off_hour As Int32
218         Public off_minutes As Int32
219     End Structure
220     <StructLayout(LayoutKind.Sequential)> Public Structure HPdfTextWidth
221         Public numchars As UInt32
222         ' don't use this value (it may be change in the feature). use numspace as alternated. */
223         Public numwords As UInt32
224
225         Public width As UInt32
226         Public numspace As UInt32
227     End Structure
228     <StructLayout(LayoutKind.Sequential)> Public Structure HPdfTransMatrix
229         Public a As Single
230         Public b As Single
231         Public c As Single
232         Public d As Single
233         Public x As Single
234         Public y As Single
235     End Structure
236     <StructLayout(LayoutKind.Sequential)> Public Structure HPdfDashMode_Internal
237         Public ptn0 As UInt16
238         Public ptn1 As UInt16
239         Public ptn2 As UInt16
240         Public ptn3 As UInt16
241         Public ptn4 As UInt16
242         Public ptn5 As UInt16
243         Public ptn6 As UInt16
244         Public ptn7 As UInt16
245         Public num_ptn As UInt32
246         Public phase As UInt32
247     End Structure
248     <StructLayout(LayoutKind.Sequential)> Public Structure HPdfDashMode
249         Public ptn As UInt16()
250         Public phase As UInt32
251     End Structure
252     <StructLayout(LayoutKind.Sequential)> Public Structure HPdfRGBColor
253         Public r As Single
254         Public g As Single
255         Public b As Single
256     End Structure
257     <StructLayout(LayoutKind.Sequential)> Public Structure HPdfCMYKColor
258         Public c As Single
259         Public y As Single
260         Public m As Single
261         Public k As Single
262     End Structure
263
264     ' error handler (call back function)
265     Public Delegate Sub HPDF_ErrorHandler(ByVal error_no As uint32, ByVal detail_no As uint32, ByVal user_data As IntPtr)
266
267     Public Class HPdfDoc
268         Implements IDisposable
269
270         Public Const HPDF_TRUE As Integer = 1
271         Public Const HPDF_FALSE As Integer = 0
272         Public Const HPDF_COMP_NONE As UInt32 = 0
273         Public Const HPDF_COMP_TEXT As UInt32 = 1
274         Public Const HPDF_COMP_IMAGE As UInt32 = 2
275         Public Const HPDF_COMP_METADATA As UInt32 = 4
276         Public Const HPDF_COMP_ALL As UInt32 = 15
277
278         Public Const HPDF_HIDE_TOOLBAR As UInt32 = 1
279         Public Const HPDF_HIDE_MENUBAR As UInt32 = 2
280         Public Const HPDF_HIDE_WINDOW_UI As UInt32 = 4
281         Public Const HPDF_FIT_WINDOW As UInt32 = 8
282         Public Const HPDF_CENTER_WINDOW As UInt32 = 16
283
284         Public Const HPDF_ENABLE_READ As UInt32 = 0
285         Public Const HPDF_ENABLE_PRINT As UInt32 = 4
286         Public Const HPDF_ENABLE_EDIT_ALL As UInt32 = 8
287         Public Const HPDF_ENABLE_COPY As UInt32 = 16
288         Public Const HPDF_ENABLE_EDIT As UInt32 = 32
289
290         Private Declare Function HPDF_GetVersion Lib "libhpdf.dll" Alias "HPDF_GetVersion" () As String
291         Private Declare Function HPDF_New Lib "libhpdf.dll" Alias "HPDF_New" (ByVal user_error_fn As HPDF_ErrorHandler, ByVal user_data As IntPtr) As IntPtr
292         Private Declare Sub HPDF_Free Lib "libhpdf.dll" Alias "HPDF_Free" (ByVal pdf As IntPtr)
293         Private Declare Function HPDF_NewDoc Lib "libhpdf.dll" Alias "HPDF_NewDoc" (ByVal pdf As IntPtr) As UInt32
294         Private Declare Function HPDF_FreeDoc Lib "libhpdf.dll" Alias "HPDF_FreeDoc" (ByVal pdf As IntPtr) As UInt32
295         Private Declare Function HPDF_FreeDocAll Lib "libhpdf.dll" Alias "HPDF_FreeDocAll" (ByVal pdf As IntPtr) As UInt32
296         Private Declare Function HPDF_HasDoc Lib "libhpdf.dll" Alias "HPDF_HasDoc" (ByVal pdf As IntPtr) As UInt32
297         Private Declare Function HPDF_SaveToFile Lib "libhpdf.dll" Alias "HPDF_SaveToFile" (ByVal pdf As IntPtr, ByVal file_name As String) As UInt32
298         Private Declare Function HPDF_GetError Lib "libhpdf.dll" Alias "HPDF_GetError" (ByVal pdf As IntPtr) As UInt32
299         Private Declare Function HPDF_GetErrorDetail Lib "libhpdf.dll" Alias "HPDF_GetErrorDetail" (ByVal pdf As IntPtr) As UInt32
300         Private Declare Sub HPDF_ResetError Lib "libhpdf.dll" Alias "HPDF_ResetError" (ByVal pdf As IntPtr)
301         Private Declare Function HPDF_SetPagesConfiguration Lib "libhpdf.dll" Alias "HPDF_SetPagesConfiguration" (ByVal pdf As IntPtr, ByVal page_per_pages As UInt32) As UInt32
302         Private Declare Function HPDF_GetPageByIndex Lib "libhpdf.dll" Alias "HPDF_GetPageByIndex" (ByVal pdf As IntPtr, ByVal index As UInt32) As IntPtr
303         Private Declare Function HPDF_GetPageLayout Lib "libhpdf.dll" Alias "HPDF_GetPageLayout" (ByVal pdf As IntPtr) As HPdfPageLayout
304         Private Declare Function HPDF_SetPageLayout Lib "libhpdf.dll" Alias "HPDF_SetPageLayout" (ByVal pdf As IntPtr, ByVal layout As HPdfPageLayout) As UInt32
305         Private Declare Function HPDF_GetPageMode Lib "libhpdf.dll" Alias "HPDF_GetPageMode" (ByVal pdf As IntPtr) As HPdfPageMode
306         Private Declare Function HPDF_SetPageMode Lib "libhpdf.dll" Alias "HPDF_SetPageMode" (ByVal pdf As IntPtr, ByVal layout As HPdfPageMode) As UInt32
307         Private Declare Function HPDF_SetOpenAction Lib "libhpdf.dll" Alias "HPDF_SetOpenAction" (ByVal pdf As IntPtr, ByVal open_action As IntPtr) As UInt32
308         Private Declare Function HPDF_GetViewerPreference Lib "libhpdf.dll" Alias "HPDF_GetViewerPreference" (ByVal pdf As IntPtr) As UInt32
309         Private Declare Function HPDF_SetViewerPreference Lib "libhpdf.dll" Alias "HPDF_SetViewerPreference" (ByVal pdf As IntPtr, ByVal value As UInt32) As UInt32
310         Private Declare Function HPDF_GetCurrentPage Lib "libhpdf.dll" Alias "HPDF_GetCurrentPage" (ByVal pdf As IntPtr) As IntPtr
311         Private Declare Function HPDF_AddPage Lib "libhpdf.dll" Alias "HPDF_AddPage" (ByVal pdf As IntPtr) As IntPtr
312         Private Declare Function HPDF_InsertPage Lib "libhpdf.dll" Alias "HPDF_InsertPage" (ByVal pdf As IntPtr, ByVal page As IntPtr) As IntPtr
313         Private Declare Function HPDF_GetFont Lib "libhpdf.dll" Alias "HPDF_GetFont" (ByVal pdf As IntPtr, ByVal font_name As String, ByVal encoding_name As String) As IntPtr
314         Private Declare Function HPDF_LoadType1FontFromFile Lib "libhpdf.dll" Alias "HPDF_LoadType1FontFromFile" (ByVal pdf As IntPtr, ByVal afmfilename As String, ByVal pfmfilename As String) As String
315         Private Declare Function HPDF_LoadTTFontFromFile Lib "libhpdf.dll" Alias "HPDF_LoadTTFontFromFile" (ByVal pdf As IntPtr, ByVal file_name As String, ByVal embedding As Int32) As String
316         Private Declare Function HPDF_LoadTTFontFromFile2 Lib "libhpdf.dll" Alias "HPDF_LoadTTFontFromFile2" (ByVal pdf As IntPtr, ByVal file_name As String, ByVal index As UInt32, ByVal embedding As Int32) As String
317         Private Declare Function HPDF_AddPageLabel Lib "libhpdf.dll" Alias "HPDF_AddPageLabel" (ByVal pdf As IntPtr, ByVal page_num As UInt32, ByVal style As HPdfPageNumStyle, ByVal first_page As UInt32, ByVal prefix As UInt32) As IntPtr
318         Private Declare Function HPDF_UseJPFonts Lib "libhpdf.dll" Alias "HPDF_UseJPFonts" (ByVal pdf As IntPtr) As UInt32
319         Private Declare Function HPDF_UseKRFonts Lib "libhpdf.dll" Alias "HPDF_UseKRFonts" (ByVal pdf As IntPtr) As UInt32
320         Private Declare Function HPDF_UseCNSFonts Lib "libhpdf.dll" Alias "HPDF_UseCNSFonts" (ByVal pdf As IntPtr) As UInt32
321         Private Declare Function HPDF_UseCNTFonts Lib "libhpdf.dll" Alias "HPDF_UseCNTFonts" (ByVal pdf As IntPtr) As UInt32
322         Private Declare Function HPDF_CreateOutline Lib "libhpdf.dll" Alias "HPDF_CreateOutline" (ByVal pdf As IntPtr, ByVal parent As IntPtr, ByVal title As String, ByVal encoded As IntPtr) As UInt32
323         Private Declare Function HPDF_GetEncoder Lib "libhpdf.dll" Alias "HPDF_GetEncoder" (ByVal pdf As IntPtr, ByVal encoding_name As String) As IntPtr
324         Private Declare Function HPDF_GetCurrentEncoder Lib "libhpdf.dll" Alias "HPDF_GetCurrentEncoder" (ByVal pdf As IntPtr) As IntPtr
325         Private Declare Function HPDF_SetCurrentEncoder Lib "libhpdf.dll" Alias "HPDF_SetCurrentEncoder" (ByVal pdf As IntPtr, ByVal encoding_name As String) As UInt32
326         Private Declare Function HPDF_UseJPEncodings Lib "libhpdf.dll" Alias "HPDF_UseJPEncodings" (ByVal pdf As IntPtr) As UInt32
327         Private Declare Function HPDF_UseKREncodings Lib "libhpdf.dll" Alias "HPDF_UseKREncodings" (ByVal pdf As IntPtr) As UInt32
328         Private Declare Function HPDF_UseCNSEncodings Lib "libhpdf.dll" Alias "HPDF_UseCNSEncodings" (ByVal pdf As IntPtr) As UInt32
329         Private Declare Function HPDF_UseCNTEncodings Lib "libhpdf.dll" Alias "HPDF_UseCNTEncodings" (ByVal pdf As IntPtr) As UInt32
330         Private Declare Function HPDF_LoadPngImageFromFile Lib "libhpdf.dll" Alias "HPDF_LoadPngImageFromFile" (ByVal pdf As IntPtr, ByVal filename As String) As IntPtr
331         Private Declare Function HPDF_LoadPngImageFromFile2 Lib "libhpdf.dll" Alias "HPDF_LoadPngImageFromFile2" (ByVal pdf As IntPtr, ByVal filename As String) As IntPtr
332         Private Declare Function HPDF_LoadJpegImageFromFile Lib "libhpdf.dll" Alias "HPDF_LoadJpegImageFromFile" (ByVal pdf As IntPtr, ByVal filename As String) As IntPtr
333         Private Declare Function HPDF_LoadRawImageFromFile Lib "libhpdf.dll" Alias "HPDF_LoadRawImageFromFile" (ByVal pdf As IntPtr, ByVal filename As String, ByVal width As UInt32, ByVal height As UInt32, ByVal color_space As HPdfColorSpace) As IntPtr
334         Private Declare Function HPDF_LoadRawImageFromMem Lib "libhpdf.dll" Alias "HPDF_LoadRawImageFromMem" (ByVal pdf As IntPtr, ByVal data As Byte(), ByVal width As UInt32, ByVal height As UInt32, ByVal color_space As HPdfColorSpace, ByVal bits_per_component As UInt32) As IntPtr
335         Private Declare Function HPDF_SetInfoAttr Lib "libhpdf.dll" Alias "HPDF_SetInfoAttr" (ByVal pdf As IntPtr, ByVal type As HPdfInfoType, ByVal value As String) As UInt32
336         Private Declare Function HPDF_SetInfoDateAttr Lib "libhpdf.dll" Alias "HPDF_SetInfoDateAttr" (ByVal pdf As IntPtr, ByVal type As HPdfInfoType, ByVal value As HPdfDate) As UInt32
337         Private Declare Function HPDF_GetInfoAttr Lib "libhpdf.dll" Alias "HPDF_GetInfoAttr" (ByVal pdf As IntPtr, ByVal type As HPdfInfoType) As String
338         Private Declare Function HPDF_SetPassword Lib "libhpdf.dll" Alias "HPDF_SetPassword" (ByVal pdf As IntPtr, ByVal owner_passwd As String, ByVal user_passwd As String) As UInt32
339         Private Declare Function HPDF_SetPermission Lib "libhpdf.dll" Alias "HPDF_SetPermission" (ByVal pdf As IntPtr, ByVal permission As UInt32) As UInt32
340         Private Declare Function HPDF_SetEncryptionMode Lib "libhpdf.dll" Alias "HPDF_SetEncryptionMode" (ByVal pdf As IntPtr, ByVal mode As HPdfEncryptMode, ByVal key_len As UInt32) As UInt32
341         Private Declare Function HPDF_SetCompressionMode Lib "libhpdf.dll" Alias "HPDF_SetCompressionMode" (ByVal pdf As IntPtr, ByVal mode As UInt32) As UInt32
342         Private Declare Function HPDF_CreateExtGState Lib "libhpdf.dll" Alias "HPDF_CreateExtGState" (ByVal pdf As IntPtr) As IntPtr
343
344         Private hpdf As IntPtr
345
346         Public Sub New()
347             Dim error_handler As HPDF_ErrorHandler = New HPDF_ErrorHandler(AddressOf ErrorProc)
348             hpdf = HPDF_New(error_handler, IntPtr.Zero)
349             If (hpdf = IntPtr.Zero) Then
350                 Throw New Exception("cannot create HPdfDoc object.")
351             End If
352         End Sub
353
354         Public Sub Dispose() Implements IDisposable.Dispose
355             If (hpdf <> IntPtr.Zero) Then
356                 HPDF_Free(hpdf)
357             End If
358
359             hpdf = IntPtr.Zero
360         End Sub
361
362         Public Shared Function HPdfGetVersion() As String
363             Return HPDF_GetVersion()
364         End Function
365
366         Public Shared Sub ErrorProc(ByVal error_no As UInt32, ByVal detail_no As UInt32, ByVal user_data As IntPtr)
367             Dim s As String = "error-code=0x" & error_no.ToString("X") & " detail-code=" & detail_no
368             Throw New Exception(s)
369         End Sub
370
371         Public Sub NewDoc()
372             HPDF_NewDoc(hpdf)
373         End Sub
374
375         Public Sub FreeDoc()
376             HPDF_FreeDoc(hpdf)
377         End Sub
378
379         Public Sub FreeDocAll()
380             HPDF_FreeDocAll(hpdf)
381         End Sub
382
383         Public Function HasDoc() As Boolean
384             Return (HPDF_HasDoc(hpdf) <> 0)
385         End Function
386
387         Public Sub SaveToFile(ByVal file_name As String)
388             HPDF_SaveToFile(hpdf, file_name)
389         End Sub
390
391         Public Function GetError() As UInt32
392             Return HPDF_GetError(hpdf)
393         End Function
394
395         Public Function GetErrorDetail() As UInt32
396             Return HPDF_GetErrorDetail(hpdf)
397         End Function
398
399         Public Sub ResetError()
400             HPDF_ResetError(hpdf)
401         End Sub
402
403         Public Sub SetPagesConfiguration(ByVal page_per_pages As UInt32)
404             HPDF_SetPagesConfiguration(hpdf, page_per_pages)
405         End Sub
406
407         Public Function GetPageByIndex(ByVal index As UInt32) As HPdfPage
408             Dim hpage As IntPtr = HPDF_GetPageByIndex(hpdf, index)
409             Return New HPdfPage(hpage)
410         End Function
411
412         Public Function GetPageLayout() As HPdfPageLayout
413             Return HPDF_GetPageLayout(hpdf)
414         End Function
415
416         Public Sub SetPageLayout(ByRef layout As HPdfPageLayout)
417             HPDF_SetPageLayout(hpdf, layout)
418         End Sub
419
420         Public Function GetPageMode() As HPdfPageMode
421             Return HPDF_GetPageMode(hpdf)
422         End Function
423
424         Public Sub SetPageMode(ByRef mode As HPdfPageMode)
425             HPDF_SetPageMode(hpdf, mode)
426         End Sub
427
428         Public Sub SetOpenAction(ByRef open_action As HPdfDestination)
429             HPDF_SetOpenAction(hpdf, open_action.GetHandle())
430         End Sub
431
432         Public Function GetViewerPreference() As UInt32
433             Return HPDF_GetViewerPreference(hpdf)
434         End Function
435
436         Public Sub SetViewerPreference(ByVal value As UInt32)
437             HPDF_SetViewerPreference(hpdf, value)
438         End Sub
439
440         Public Function GetCurrentPage() As HPdfPage
441             Dim hpage As IntPtr = HPDF_GetCurrentPage(hpdf)
442             Return New HPdfPage(hpage)
443         End Function
444
445         Public Function AddPage() As HPdfPage
446             Dim hpage As IntPtr = HPDF_AddPage(hpdf)
447             Return New HPdfPage(hpage)
448         End Function
449
450         Public Function InsertPage(ByRef page As HPdfPage) As HPdfPage
451             Dim hpage As IntPtr = HPDF_InsertPage(hpdf, page.GetHandle())
452             Return New HPdfPage(hpage)
453         End Function
454
455         Public Function GetFont(ByVal font_name As String, ByVal encoding_name As String) As HPdfFont
456             Dim hfont As IntPtr = HPDF_GetFont(hpdf, font_name, encoding_name)
457             Return New HPdfFont(hfont)
458         End Function
459
460         Public Function LoadType1FontFromFile(ByVal afmfilename As String, ByVal pfmfilename As String) As String
461             Dim font_name As String = HPDF_LoadType1FontFromFile(hpdf, afmfilename, pfmfilename)
462             Return font_name
463         End Function
464
465         Public Function LoadTTFontFromFile(ByVal file_name As String, ByVal embedding As Boolean) As String
466             Dim font_name As String
467             Dim emb As Integer
468
469             If (embedding) Then
470                 emb = HPDF_TRUE
471             Else
472                 emb = HPDF_FALSE
473             End If
474
475             font_name = HPDF_LoadTTFontFromFile(hpdf, file_name, emb)
476             Return font_name
477         End Function
478
479         Public Function LoadTTFontFromFile2(ByVal file_name As String, ByVal index As UInt32, ByVal embedding As Boolean) As String
480             Dim font_name As String
481             Dim emb As Integer
482
483             If (embedding) Then
484                 emb = HPDF_TRUE
485             Else
486                 emb = HPDF_FALSE
487             End If
488
489             font_name = HPDF_LoadTTFontFromFile2(hpdf, file_name, index, emb)
490             Return font_name
491         End Function
492
493         Public Sub AddPageLabel(ByVal page_num As UInt32, ByVal style As HPdfPageNumStyle, ByVal first_page As UInt32, ByVal prefix As String)
494             HPDF_AddPageLabel(hpdf, page_num, style, first_page, prefix)
495         End Sub
496
497         Public Function UseJPFonts() As UInt32
498             Return HPDF_UseJPFonts(hpdf)
499         End Function
500
501         Public Function UseKRFonts() As UInt32
502             Return HPDF_UseKRFonts(hpdf)
503         End Function
504
505         Public Function UseCNSFonts() As UInt32
506             Return HPDF_UseCNSFonts(hpdf)
507         End Function
508
509         Public Function UseCNTFonts() As UInt32
510             Return HPDF_UseCNTFonts(hpdf)
511         End Function
512
513         Public Function CreateOutline(ByRef parent As HPdfOutline, ByVal title As String, ByRef encoder As HPdfEncoder) As HPdfOutline
514             Dim hparent As IntPtr
515             Dim hencoder As IntPtr
516             Dim houtline As IntPtr
517
518             If (encoder Is Nothing) Then
519                 hencoder = Nothing
520             Else
521                 hencoder = encoder.GetHandle()
522             End If
523
524             If (parent Is Nothing) Then
525                 hparent = Nothing
526             Else
527                 hparent = parent.GetHandle()
528             End If
529
530             houtline = HPDF_CreateOutline(hpdf, hparent, title, hencoder)
531             Return New HPdfOutline(houtline)
532         End Function
533         Public Function GetEncoder(ByVal encoding_name As String) As HPdfEncoder
534             Dim hencoder As IntPtr = HPDF_GetEncoder(hpdf, encoding_name)
535
536             Return New HPdfEncoder(hencoder)
537         End Function
538
539         Public Function GetCurrentEncoder() As HPdfEncoder
540             Dim hencoder As IntPtr = HPDF_GetCurrentEncoder(hpdf)
541
542             Return New HPdfEncoder(hencoder)
543         End Function
544
545         Public Sub SetCurrentEncoder(ByVal encoding_name As String)
546             HPDF_SetCurrentEncoder(hpdf, encoding_name)
547         End Sub
548
549         Public Function UseJPEncodings() As UInt32
550             Return HPDF_UseJPEncodings(hpdf)
551         End Function
552
553         Public Function UseKREncodings() As UInt32
554             Return HPDF_UseKREncodings(hpdf)
555         End Function
556
557         Public Function UseCNSEncodings() As UInt32
558             Return HPDF_UseCNSEncodings(hpdf)
559         End Function
560
561         Public Function UseCNTEncodings() As UInt32
562             Return HPDF_UseCNTEncodings(hpdf)
563         End Function
564
565         Public Function LoadPngImageFromFile(ByVal filename As String) As HPdfImage
566             Dim hobj As IntPtr = HPDF_LoadPngImageFromFile(hpdf, filename)
567
568             Return New HPdfImage(hobj)
569         End Function
570
571         Public Function LoadPngImageFromFile2(ByVal filename As String) As HPdfImage
572             Dim hobj As IntPtr = HPDF_LoadPngImageFromFile2(hpdf, filename)
573
574             Return New HPdfImage(hobj)
575         End Function
576
577         Public Function LoadJpegImageFromFile(ByVal filename As String) As HPdfImage
578             Dim hobj As IntPtr = HPDF_LoadJpegImageFromFile(hpdf, filename)
579
580             Return New HPdfImage(hobj)
581         End Function
582
583         Public Function LoadRawImageFromFile(ByVal filename As String, ByVal width As UInt32, ByVal height As UInt32, ByRef color_space As HPdfColorSpace) As HPdfImage
584             Dim hobj As IntPtr = HPDF_LoadRawImageFromFile(hpdf, filename, width, height, color_space)
585
586             Return New HPdfImage(hobj)
587         End Function
588
589         Public Function LoadRawImageFromMem(ByVal data As Byte(), ByVal width As Int32, ByVal height As Int32, ByRef color_space As HPdfColorSpace, ByVal bits_per_component As UInt32) As HPdfImage
590             If (width * height < data.Length) Then
591                 Dim s As String = "error-code=0x1030 detail-code=0"
592                 Throw New Exception(s)
593             End If
594
595             Dim hobj As IntPtr = HPDF_LoadRawImageFromMem(hpdf, data, width, height, color_space, bits_per_component)
596
597             Return New HPdfImage(hobj)
598         End Function
599
600         Public Sub SetInfoAttr(ByVal type As HPdfInfoType, ByVal value As String)
601             HPDF_SetInfoAttr(hpdf, type, value)
602         End Sub
603
604         Public Sub SetInfoDateAttr(ByVal type As HPdfInfoType, ByRef value As HPdfDate)
605             HPDF_SetInfoDateAttr(hpdf, type, value)
606         End Sub
607
608         Public Function GetInfoAttr(ByVal type As HPdfInfoType) As String
609             Return HPDF_GetInfoAttr(hpdf, type)
610         End Function
611
612         Public Sub SetPassword(ByVal owner_passwd As String, ByVal user_passwd As String)
613             HPDF_SetPassword(hpdf, owner_passwd, user_passwd)
614         End Sub
615
616         Public Sub SetPermission(ByVal permission As UInt32)
617             HPDF_SetPermission(hpdf, permission)
618         End Sub
619
620         Public Sub SetEncryptionMode(ByVal mode As HPdfEncryptMode, ByVal key_len As UInt32)
621             HPDF_SetEncryptionMode(hpdf, mode, key_len)
622         End Sub
623
624         Public Sub SetCompressionMode(ByVal mode As UInt32)
625             HPDF_SetCompressionMode(hpdf, mode)
626         End Sub
627
628         Public Function CreateExtGState() As HPdfExtGState
629             Dim hgstate As IntPtr = HPDF_CreateExtGState(hpdf)
630
631             Return New HPdfExtGState(hgstate)
632         End Function
633     End Class
634     Public Class HPdfPage
635         Public Const HPDF_TRUE As Integer = 1
636         Public Const HPDF_FALSE As Integer = 0
637
638         Private Declare Function HPDF_Page_SetWidth Lib "libhpdf.dll" Alias "HPDF_Page_SetWidth" (ByVal page As IntPtr, ByVal value As Single) As UInt32
639         Private Declare Function HPDF_Page_SetHeight Lib "libhpdf.dll" Alias "HPDF_Page_SetHeight" (ByVal page As IntPtr, ByVal value As Single) As UInt32
640         Private Declare Function HPDF_Page_SetSize Lib "libhpdf.dll" Alias "HPDF_Page_SetSize" (ByVal page As IntPtr, ByVal size As HPdfPageSizes, ByVal direction As HPdfPageDirection) As UInt32
641         Private Declare Function HPDF_Page_SetRotate Lib "libhpdf.dll" Alias "HPDF_Page_SetRotate" (ByVal page As IntPtr, ByVal angle As UInt16) As UInt16
642         Private Declare Function HPDF_Page_CreateDestination Lib "libhpdf.dll" Alias "HPDF_Page_CreateDestination" (ByVal page As IntPtr) As IntPtr
643         Private Declare Function HPDF_Page_CreateTextAnnot Lib "libhpdf.dll" Alias "HPDF_Page_CreateTextAnnot" (ByVal page As IntPtr, ByVal rect As HPdfRect, ByVal text As String, ByVal encoder As IntPtr) As IntPtr
644         Private Declare Function HPDF_Page_CreateLinkAnnot Lib "libhpdf.dll" Alias "HPDF_Page_CreateLinkAnnot" (ByVal page As IntPtr, ByVal rect As HPdfRect, ByVal dst As IntPtr) As IntPtr
645         Private Declare Function HPDF_Page_CreateURILinkAnnot Lib "libhpdf.dll" Alias "HPDF_Page_CreateURILinkAnnot" (ByVal page As IntPtr, ByVal rect As HPdfRect, ByVal url As String) As IntPtr
646         Private Declare Function HPDF_Page_TextWidth Lib "libhpdf.dll" Alias "HPDF_Page_TextWidth" (ByVal page As IntPtr, ByVal text As String) As Single
647         Private Declare Function HPDF_Page_MeasureText Lib "libhpdf.dll" Alias "HPDF_Page_MeasureText" (ByVal page As IntPtr, ByVal text As String, ByVal width As Single, ByVal wordwrap As Int32, ByRef real_width As Single) As UInt32
648         Private Declare Function HPDF_Page_GetWidth Lib "libhpdf.dll" Alias "HPDF_Page_GetWidth" (ByVal page As IntPtr) As Single
649         Private Declare Function HPDF_Page_GetHeight Lib "libhpdf.dll" Alias "HPDF_Page_GetHeight" (ByVal page As IntPtr) As Single
650         Private Declare Function HPDF_Page_GetGMode Lib "libhpdf.dll" Alias "HPDF_Page_GetGMode" (ByVal page As IntPtr) As UInt16
651         Private Declare Function HPDF_Page_GetCurrentPos Lib "libhpdf.dll" Alias "HPDF_Page_GetCurrentPos" (ByVal page As IntPtr) As HPdfPoint
652         Private Declare Function HPDF_Page_GetCurrentTextPos Lib "libhpdf.dll" Alias "HPDF_Page_GetCurrentTextPos" (ByVal page As IntPtr) As HPdfPoint
653         Private Declare Function HPDF_Page_GetCurrentFont Lib "libhpdf.dll" Alias "HPDF_Page_GetCurrentFont" (ByVal page As IntPtr) As IntPtr
654         Private Declare Function HPDF_Page_GetCurrentFontSize Lib "libhpdf.dll" Alias "HPDF_Page_GetCurrentFontSize" (ByVal page As IntPtr) As Single
655         Private Declare Function HPDF_Page_GetTransMatrix Lib "libhpdf.dll" Alias "HPDF_Page_GetTransMatrix" (ByVal page As IntPtr) As HPdfTransMatrix
656         Private Declare Function HPDF_Page_GetLineWidth Lib "libhpdf.dll" Alias "HPDF_Page_GetLineWidth" (ByVal page As IntPtr) As Single
657         Private Declare Function HPDF_Page_GetLineCap Lib "libhpdf.dll" Alias "HPDF_Page_GetLineCap" (ByVal page As IntPtr) As HPdfLineCap
658         Private Declare Function HPDF_Page_GetLineJoin Lib "libhpdf.dll" Alias "HPDF_Page_GetLineJoin" (ByVal page As IntPtr) As HPdfLineJoin
659         Private Declare Function HPDF_Page_GetMiterLimit Lib "libhpdf.dll" Alias "HPDF_Page_GetMiterLimit" (ByVal page As IntPtr) As Single
660         Private Declare Function HPDF_Page_GetDash Lib "libhpdf.dll" Alias "HPDF_Page_GetDash" (ByVal page As IntPtr) As HPdfDashMode_Internal
661         Private Declare Function HPDF_Page_GetFlat Lib "libhpdf.dll" Alias "HPDF_Page_GetFlat" (ByVal page As IntPtr) As Single
662         Private Declare Function HPDF_Page_GetCharSpace Lib "libhpdf.dll" Alias "HPDF_Page_GetCharSpace" (ByVal page As IntPtr) As Single
663         Private Declare Function HPDF_Page_GetWordSpace Lib "libhpdf.dll" Alias "HPDF_Page_GetWordSpace" (ByVal page As IntPtr) As Single
664         Private Declare Function HPDF_Page_GetHorizontalScalling Lib "libhpdf.dll" Alias "HPDF_Page_GetHorizontalScalling" (ByVal page As IntPtr) As Single
665         Private Declare Function HPDF_Page_GetTextLeading Lib "libhpdf.dll" Alias "HPDF_Page_GetTextLeading" (ByVal page As IntPtr) As Single
666         Private Declare Function HPDF_Page_GetTextRenderingMode Lib "libhpdf.dll" Alias "HPDF_Page_GetTextRenderingMode" (ByVal page As IntPtr) As HPdfTextRenderingMode
667         Private Declare Function HPDF_Page_GetTextRaise Lib "libhpdf.dll" Alias "HPDF_Page_GetTextRaise" (ByVal page As IntPtr) As Single
668         Private Declare Function HPDF_Page_GetRGBFill Lib "libhpdf.dll" Alias "HPDF_Page_GetRGBFill" (ByVal page As IntPtr) As HPdfRGBColor
669         Private Declare Function HPDF_Page_GetRGBStroke Lib "libhpdf.dll" Alias "HPDF_Page_GetRGBStroke" (ByVal page As IntPtr) As HPdfRGBColor
670         Private Declare Function HPDF_Page_GetCMYKFill Lib "libhpdf.dll" Alias "HPDF_Page_GetCMYKFill" (ByVal page As IntPtr) As HPdfCMYKColor
671         Private Declare Function HPDF_Page_GetCMYKStroke Lib "libhpdf.dll" Alias "HPDF_Page_GetCMYKStroke" (ByVal page As IntPtr) As HPdfCMYKColor
672         Private Declare Function HPDF_Page_GetGrayFill Lib "libhpdf.dll" Alias "HPDF_Page_GetGrayFill" (ByVal page As IntPtr) As Single
673         Private Declare Function HPDF_Page_GetGrayStroke Lib "libhpdf.dll" Alias "HPDF_Page_GetGrayStroke" (ByVal page As IntPtr) As Single
674         Private Declare Function HPDF_Page_GetStrokingColorSpace Lib "libhpdf.dll" Alias "HPDF_Page_GetStrokingColorSpace" (ByVal page As IntPtr) As HPdfColorSpace
675         Private Declare Function HPDF_Page_GetFillingColorSpace Lib "libhpdf.dll" Alias "HPDF_Page_GetFillingColorSpace" (ByVal page As IntPtr) As HPdfColorSpace
676         Private Declare Function HPDF_Page_GetTextMatrix Lib "libhpdf.dll" Alias "HPDF_Page_GetTextMatrix" (ByVal page As IntPtr) As HPdfTransMatrix
677         Private Declare Function HPDF_Page_GetGStateDepth Lib "libhpdf.dll" Alias "HPDF_Page_GetGStateDepth" (ByVal page As IntPtr) As UInt32
678
679         ' --- General graphics state -----------------------------------------------
680         Private Declare Function HPDF_Page_SetLineWidth Lib "libhpdf.dll" Alias "HPDF_Page_SetLineWidth" (ByVal page As IntPtr, ByVal line_width As Single) As UInt32
681         Private Declare Function HPDF_Page_SetLineCap Lib "libhpdf.dll" Alias "HPDF_Page_SetLineCap" (ByVal page As IntPtr, ByVal line_cap As HPdfLineCap) As UInt32
682         Private Declare Function HPDF_Page_SetLineJoin Lib "libhpdf.dll" Alias "HPDF_Page_SetLineJoin" (ByVal page As IntPtr, ByVal line_join As HPdfLineJoin) As UInt32
683         Private Declare Function HPDF_Page_SetMiterLimit Lib "libhpdf.dll" Alias "HPDF_Page_SetMiterLimit" (ByVal page As IntPtr, ByVal miter_limit As Single) As UInt32
684         Private Declare Function HPDF_Page_SetDash Lib "libhpdf.dll" Alias "HPDF_Page_SetDash" (ByVal page As IntPtr, ByVal array As UInt16(), ByVal num_param As UInt32, ByVal phase As UInt32) As UInt32
685         Private Declare Function HPDF_Page_SetFlat Lib "libhpdf.dll" Alias "HPDF_Page_SetFlat" (ByVal page As IntPtr, ByVal flatness As Single) As UInt32
686         Private Declare Function HPDF_Page_SetExtGState Lib "libhpdf.dll" Alias "HPDF_Page_SetExtGState" (ByVal page As IntPtr, ByVal ext_gstate As IntPtr) As UInt32
687         Private Declare Function HPDF_Page_GSave Lib "libhpdf.dll" Alias "HPDF_Page_GSave" (ByVal page As IntPtr) As UInt32
688         Private Declare Function HPDF_Page_GRestore Lib "libhpdf.dll" Alias "HPDF_Page_GRestore" (ByVal page As IntPtr) As UInt32
689         Private Declare Function HPDF_Page_Concat Lib "libhpdf.dll" Alias "HPDF_Page_Concat" (ByVal page As IntPtr, ByVal a As Single, ByVal b As Single, ByVal c As Single, ByVal d As Single, ByVal x As Single, ByVal y As Single) As UInt32
690         Private Declare Function HPDF_Page_MoveTo Lib "libhpdf.dll" Alias "HPDF_Page_MoveTo" (ByVal page As IntPtr, ByVal x As Single, ByVal y As Single) As UInt32
691         Private Declare Function HPDF_Page_LineTo Lib "libhpdf.dll" Alias "HPDF_Page_LineTo" (ByVal page As IntPtr, ByVal x As Single, ByVal y As Single) As UInt32
692         Private Declare Function HPDF_Page_CurveTo Lib "libhpdf.dll" Alias "HPDF_Page_CurveTo" (ByVal page As IntPtr, ByVal x1 As Single, ByVal y1 As Single, ByVal x2 As Single, ByVal y2 As Single, ByVal x3 As Single, ByVal y3 As Single) As UInt32
693         Private Declare Function HPDF_Page_CurveTo2 Lib "libhpdf.dll" Alias "HPDF_Page_CurveTo2" (ByVal page As IntPtr, ByVal x2 As Single, ByVal y2 As Single, ByVal x3 As Single, ByVal y3 As Single) As UInt32
694         Private Declare Function HPDF_Page_CurveTo3 Lib "libhpdf.dll" Alias "HPDF_Page_CurveTo3" (ByVal page As IntPtr, ByVal x1 As Single, ByVal y1 As Single, ByVal x3 As Single, ByVal y3 As Single) As UInt32
695         Private Declare Function HPDF_Page_ClosePath Lib "libhpdf.dll" Alias "HPDF_Page_ClosePath" (ByVal page As IntPtr) As UInt32
696         Private Declare Function HPDF_Page_Rectangle Lib "libhpdf.dll" Alias "HPDF_Page_Rectangle" (ByVal page As IntPtr, ByVal x As Single, ByVal y As Single, ByVal width As Single, ByVal height As Single) As UInt32
697         Private Declare Function HPDF_Page_Stroke Lib "libhpdf.dll" Alias "HPDF_Page_Stroke" (ByVal page As IntPtr) As UInt32
698         Private Declare Function HPDF_Page_ClosePathStroke Lib "libhpdf.dll" Alias "HPDF_Page_ClosePathStroke" (ByVal page As IntPtr) As UInt32
699         Private Declare Function HPDF_Page_Fill Lib "libhpdf.dll" Alias "HPDF_Page_Fill" (ByVal page As IntPtr) As UInt32
700         Private Declare Function HPDF_Page_Eofill Lib "libhpdf.dll" Alias "HPDF_Page_Eofill" (ByVal page As IntPtr) As UInt32
701         Private Declare Function HPDF_Page_FillStroke Lib "libhpdf.dll" Alias "HPDF_Page_FillStroke" (ByVal page As IntPtr) As UInt32
702         Private Declare Function HPDF_Page_EofillStroke Lib "libhpdf.dll" Alias "HPDF_Page_EofillStroke" (ByVal page As IntPtr) As UInt32
703         Private Declare Function HPDF_Page_ClosePathFillStroke Lib "libhpdf.dll" Alias "HPDF_Page_ClosePathFillStroke" (ByVal page As IntPtr) As UInt32
704         Private Declare Function HPDF_Page_ClosePathEofillStroke Lib "libhpdf.dll" Alias "HPDF_Page_ClosePathEofillStroke" (ByVal page As IntPtr) As UInt32
705         Private Declare Function HPDF_Page_EndPath Lib "libhpdf.dll" Alias "HPDF_Page_EndPath" (ByVal page As IntPtr) As UInt32
706
707         ' --- Clipping paths operator --------------------------------------------
708         Private Declare Function HPDF_Page_Clip Lib "libhpdf.dll" Alias "HPDF_Page_Clip" (ByVal page As IntPtr) As UInt32
709         Private Declare Function HPDF_Page_Eoclip Lib "libhpdf.dll" Alias "HPDF_Page_Eoclip" (ByVal page As IntPtr) As UInt32
710
711         ' --- Text object operator -----------------------------------------------
712         Private Declare Function HPDF_Page_BeginText Lib "libhpdf.dll" Alias "HPDF_Page_BeginText" (ByVal page As IntPtr) As UInt32
713         Private Declare Function HPDF_Page_EndText Lib "libhpdf.dll" Alias "HPDF_Page_EndText" (ByVal page As IntPtr) As UInt32
714
715         ' --- Text state ---------------------------------------------------------
716         Private Declare Function HPDF_Page_SetCharSpace Lib "libhpdf.dll" Alias "HPDF_Page_SetCharSpace" (ByVal page As IntPtr, ByVal value As Single) As UInt32
717         Private Declare Function HPDF_Page_SetWordSpace Lib "libhpdf.dll" Alias "HPDF_Page_SetWordSpace" (ByVal page As IntPtr, ByVal value As Single) As UInt32
718         Private Declare Function HPDF_Page_SetHorizontalScalling Lib "libhpdf.dll" Alias "HPDF_Page_SetHorizontalScalling" (ByVal page As IntPtr, ByVal value As Single) As UInt32
719         Private Declare Function HPDF_Page_SetTextLeading Lib "libhpdf.dll" Alias "HPDF_Page_SetTextLeading" (ByVal page As IntPtr, ByVal value As Single) As UInt32
720         Private Declare Function HPDF_Page_SetFontAndSize Lib "libhpdf.dll" Alias "HPDF_Page_SetFontAndSize" (ByVal page As IntPtr, ByVal hfont As IntPtr, ByVal size As Single) As UInt32
721         Private Declare Function HPDF_Page_SetTextRenderingMode Lib "libhpdf.dll" Alias "HPDF_Page_SetTextRenderingMode" (ByVal page As IntPtr, ByVal mode As HPdfTextRenderingMode) As UInt32
722         Private Declare Function HPDF_Page_SetTextRaise Lib "libhpdf.dll" Alias "HPDF_Page_SetTextRaise" (ByVal page As IntPtr, ByVal value As Single) As UInt32
723
724         ' --- Text positioning ---------------------------------------------------
725         Private Declare Function HPDF_Page_MoveTextPos Lib "libhpdf.dll" Alias "HPDF_Page_MoveTextPos" (ByVal page As IntPtr, ByVal x As Single, ByVal y As Single) As UInt32
726         Private Declare Function HPDF_Page_MoveTextPos2 Lib "libhpdf.dll" Alias "HPDF_Page_MoveTextPos2" (ByVal page As IntPtr, ByVal x As Single, ByVal y As Single) As UInt32
727         Private Declare Function HPDF_Page_SetTextMatrix Lib "libhpdf.dll" Alias "HPDF_Page_SetTextMatrix" (ByVal page As IntPtr, ByVal a As Single, ByVal b As Single, ByVal c As Single, ByVal d As Single, ByVal x As Single, ByVal y As Single) As UInt32
728         Private Declare Function HPDF_Page_MoveToNextLine Lib "libhpdf.dll" Alias "HPDF_Page_MoveToNextLine" (ByVal page As IntPtr) As UInt32
729
730         ' --- Text showing -------------------------------------------------------
731         Private Declare Function HPDF_Page_ShowText Lib "libhpdf.dll" Alias "HPDF_Page_ShowText" (ByVal page As IntPtr, ByVal text As String) As UInt32
732         Private Declare Function HPDF_Page_ShowTextNextLine Lib "libhpdf.dll" Alias "HPDF_Page_ShowTextNextLine" (ByVal page As IntPtr, ByVal text As String) As UInt32
733         Private Declare Function HPDF_Page_ShowTextNextLineEx Lib "libhpdf.dll" Alias "HPDF_Page_ShowTextNextLineEx" (ByVal page As IntPtr, ByVal word_space As Single, ByVal char_space As Single, ByVal text As String) As UInt32
734
735         ' --- Color showing ------------------------------------------------------
736         Private Declare Function HPDF_Page_SetGrayFill Lib "libhpdf.dll" Alias "HPDF_Page_SetGrayFill" (ByVal page As IntPtr, ByVal gray As Single) As UInt32
737         Private Declare Function HPDF_Page_SetGrayStroke Lib "libhpdf.dll" Alias "HPDF_Page_SetGrayStroke" (ByVal page As IntPtr, ByVal gray As Single) As UInt32
738         Private Declare Function HPDF_Page_SetRGBFill Lib "libhpdf.dll" Alias "HPDF_Page_SetRGBFill" (ByVal page As IntPtr, ByVal r As Single, ByVal g As Single, ByVal b As Single) As UInt32
739         Private Declare Function HPDF_Page_SetRGBStroke Lib "libhpdf.dll" Alias "HPDF_Page_SetRGBStroke" (ByVal page As IntPtr, ByVal r As Single, ByVal g As Single, ByVal b As Single) As UInt32
740         Private Declare Function HPDF_Page_SetCMYKFill Lib "libhpdf.dll" Alias "HPDF_Page_SetCMYKFill" (ByVal page As IntPtr, ByVal c As Single, ByVal m As Single, ByVal y As Single, ByVal k As Single) As UInt32
741         Private Declare Function HPDF_Page_SetCMYKStroke Lib "libhpdf.dll" Alias "HPDF_Page_SetCMYKStroke" (ByVal page As IntPtr, ByVal c As Single, ByVal m As Single, ByVal y As Single, ByVal k As Single) As UInt32
742         Private Declare Function HPDF_Page_ExecuteXObject Lib "libhpdf.dll" Alias "HPDF_Page_ExecuteXObject" (ByVal page As IntPtr, ByVal obj As IntPtr) As UInt32
743
744         ' ---------------------------------------------------------------------
745         Private Declare Function HPDF_Page_DrawImage Lib "libhpdf.dll" Alias "HPDF_Page_DrawImage" (ByVal page As IntPtr, ByVal image As IntPtr, ByVal x As Single, ByVal y As Single, ByVal width As Single, ByVal height As Single) As UInt32
746         Private Declare Function HPDF_Page_Circle Lib "libhpdf.dll" Alias "HPDF_Page_Circle" (ByVal page As IntPtr, ByVal x As Single, ByVal y As Single, ByVal ray As Single) As UInt32
747         Private Declare Function HPDF_Page_Arc Lib "libhpdf.dll" Alias "HPDF_Page_Arc" (ByVal page As IntPtr, ByVal x As Single, ByVal y As Single, ByVal ray As Single, ByVal ang1 As Single, ByVal ang2 As Single) As UInt32
748         Private Declare Function HPDF_Page_Ellipse Lib "libhpdf.dll" Alias "HPDF_Page_Ellipse" (ByVal page As IntPtr, ByVal x As Single, ByVal y As Single, ByVal xray As Single, ByVal yray As Single) As UInt32
749         Private Declare Function HPDF_Page_TextOut Lib "libhpdf.dll" Alias "HPDF_Page_TextOut" (ByVal page As IntPtr, ByVal xpos As Single, ByVal ypos As Single, ByVal text As String) As UInt32
750         Private Declare Function HPDF_Page_TextRect Lib "libhpdf.dll" Alias "HPDF_Page_TextRect" (ByVal page As IntPtr, ByVal left As Single, ByVal top As Single, ByVal right As Single, ByVal bottom As Single, ByVal text As String, ByVal align As HPdfTextAlignment, ByRef len As UInt32) As UInt32
751         Private Declare Function HPDF_Page_SetSlideShow Lib "libhpdf.dll" Alias "HPDF_Page_SetSlideShow" (ByVal page As IntPtr, ByVal type As HPdfTransitionStyle, ByVal disp_time As Single, ByVal trans_time As Single) As UInt32
752
753         ' handle to an instance of a HPDF_Doc object.
754         Private hpage As IntPtr
755
756         Public Sub New(ByVal hpage As IntPtr)
757             If (hpage = IntPtr.Zero) Then
758                 Throw New Exception("cannot create HPdfPage object.")
759             End If
760
761             Me.hpage = hpage
762         End Sub
763
764         Public Sub SetWidth(ByVal value As Single)
765             HPDF_Page_SetWidth(hpage, value)
766         End Sub
767
768         Public Sub SetHeight(ByVal value As Single)
769             HPDF_Page_SetHeight(hpage, value)
770         End Sub
771
772         Public Sub SetSize(ByVal size As HPdfPageSizes, ByVal direction As HPdfPageDirection)
773             HPDF_Page_SetSize(hpage, size, direction)
774         End Sub
775
776         Public Sub SetRotate(ByVal angle As UInt16)
777             HPDF_Page_SetRotate(hpage, angle)
778         End Sub
779
780         Public Function CreateDestination() As HPdfDestination
781             Dim hdest As IntPtr = HPDF_Page_CreateDestination(hpage)
782             Return New HPdfDestination(hdest)
783         End Function
784
785         Public Function CreateTextAnnot(ByVal rect As HPdfRect, ByVal text As String, ByRef encoder As HPdfEncoder) As HPdfAnnotation
786             Dim hannot As IntPtr = HPDF_Page_CreateTextAnnot(hpage, rect, text, encoder.GetHandle())
787             Return New HPdfAnnotation(hannot)
788         End Function
789
790         Public Function CreateLinkAnnot(ByVal rect As HPdfRect, ByRef dst As HPdfDestination) As HPdfAnnotation
791             Dim hannot As IntPtr = HPDF_Page_CreateLinkAnnot(hpage, rect, dst.GetHandle())
792             Return New HPdfAnnotation(hannot)
793         End Function
794
795         Public Function CreateURILinkAnnot(ByVal rect As HPdfRect, ByVal uri As String) As HPdfAnnotation
796             Dim hannot As IntPtr = HPDF_Page_CreateURILinkAnnot(hpage, rect, uri)
797             Return New HPdfAnnotation(hannot)
798         End Function
799
800         Public Function TextWidth(ByVal text As String) As Single
801             Return HPDF_Page_TextWidth(hpage, text)
802         End Function
803
804         Public Function MeasureText(ByVal text As String, ByVal width As Single, ByVal wordwrap As Boolean, ByRef real_width As Single) As UInt32
805             Dim ww As Int32
806
807             If (wordwrap) Then
808                 ww = HPDF_TRUE
809             Else
810                 ww = HPDF_FALSE
811             End If
812
813             Return HPDF_Page_MeasureText(hpage, text, width, ww, real_width)
814         End Function
815
816         Public Function MeasureText(ByVal text As String, ByVal width As Single, ByVal wordwrap As Boolean) As UInt32
817             Dim dummy As Single
818             Dim ww As Int32
819
820             If (wordwrap) Then
821                 ww = HPDF_TRUE
822             Else
823                 ww = HPDF_FALSE
824             End If
825
826             Return HPDF_Page_MeasureText(hpage, text, width, ww, dummy)
827         End Function
828
829         Public Function GetWidth() As Single
830             Return HPDF_Page_GetWidth(hpage)
831         End Function
832
833         Public Function GetHeight() As Single
834             Return HPDF_Page_GetHeight(hpage)
835         End Function
836
837         Public Function GetGMode() As UInt16
838             Return HPDF_Page_GetGMode(hpage)
839         End Function
840
841         Public Function GetCurrentPos() As HPdfPoint
842             Return HPDF_Page_GetCurrentPos(hpage)
843         End Function
844
845         Public Function GetCurrentTextPos() As HPdfPoint
846             Return HPDF_Page_GetCurrentTextPos(hpage)
847         End Function
848
849         Public Function GetCurrentFont() As HPdfFont
850             Return New HPdfFont(HPDF_Page_GetCurrentFont(hpage))
851         End Function
852
853         Public Function GetCurrentFontSize() As Single
854             Return HPDF_Page_GetCurrentFontSize(hpage)
855         End Function
856
857         Public Function GetTransMatrix() As HPdfTransMatrix
858             Return HPDF_Page_GetTransMatrix(hpage)
859         End Function
860
861         Public Function GetLineWidth() As Single
862             Return HPDF_Page_GetLineWidth(hpage)
863         End Function
864
865         Public Function GetLineCap() As HPdfLineCap
866             Return HPDF_Page_GetLineCap(hpage)
867         End Function
868
869         Public Function GetLineJoin() As HPdfLineJoin
870             Return HPDF_Page_GetLineJoin(hpage)
871         End Function
872
873         Public Function GetMiterLimit() As Single
874             Return HPDF_Page_GetMiterLimit(hpage)
875         End Function
876
877         Public Function GetDash() As HPdfDashMode
878             Dim mode1 As HPdfDashMode_Internal = HPDF_Page_GetDash(hpage)
879             Dim mode2 As HPdfDashMode
880
881             mode2.phase = mode1.phase
882             ReDim mode2.ptn(mode1.num_ptn)
883
884             If (mode1.num_ptn >= 1) Then
885                 mode2.ptn(0) = mode1.ptn0
886             End If
887
888             If (mode1.num_ptn >= 2) Then
889                 mode2.ptn(1) = mode1.ptn1
890             End If
891
892             If (mode1.num_ptn >= 3) Then
893                 mode2.ptn(2) = mode1.ptn2
894             End If
895
896             If (mode1.num_ptn >= 4) Then
897                 mode2.ptn(3) = mode1.ptn3
898             End If
899
900             If (mode1.num_ptn >= 5) Then
901                 mode2.ptn(4) = mode1.ptn4
902             End If
903
904             If (mode1.num_ptn >= 6) Then
905                 mode2.ptn(5) = mode1.ptn5
906             End If
907
908             If (mode1.num_ptn >= 7) Then
909                 mode2.ptn(6) = mode1.ptn6
910             End If
911
912             If (mode1.num_ptn >= 8) Then
913                 mode2.ptn(7) = mode1.ptn7
914             End If
915
916             Return mode2
917         End Function
918
919         Public Function GetFlat() As Single
920             Return HPDF_Page_GetFlat(hpage)
921         End Function
922
923         Public Function GetCharSpace() As Single
924             Return HPDF_Page_GetCharSpace(hpage)
925         End Function
926
927         Public Function GetWordSpace() As Single
928             Return HPDF_Page_GetWordSpace(hpage)
929         End Function
930
931         Public Function GetHorizontalScalling() As Single
932             Return HPDF_Page_GetHorizontalScalling(hpage)
933         End Function
934
935         Public Function GetTextLeading() As Single
936             Return HPDF_Page_GetTextLeading(hpage)
937         End Function
938
939         Public Function GetTextRenderingMode() As HPdfTextRenderingMode
940             Return HPDF_Page_GetTextRenderingMode(hpage)
941         End Function
942
943         Public Function GetTextRaise() As Single
944             Return HPDF_Page_GetTextRaise(hpage)
945         End Function
946
947         Public Function GetRGBFill() As HPdfRGBColor
948             Return HPDF_Page_GetRGBFill(hpage)
949         End Function
950
951         Public Function GetRGBStroke() As HPdfRGBColor
952             Return HPDF_Page_GetRGBStroke(hpage)
953         End Function
954
955         Public Function GetCMYKFill() As HPdfCMYKColor
956             Return HPDF_Page_GetCMYKFill(hpage)
957         End Function
958
959         Public Function GetCMYKStroke() As HPdfCMYKColor
960             Return HPDF_Page_GetCMYKStroke(hpage)
961         End Function
962
963         Public Function GetGrayFill() As Single
964             Return HPDF_Page_GetGrayFill(hpage)
965         End Function
966
967         Public Function GetGrayStroke() As Single
968             Return HPDF_Page_GetGrayStroke(hpage)
969         End Function
970
971         Public Function GetStrokingColorSpace() As HPdfColorSpace
972             Return HPDF_Page_GetStrokingColorSpace(hpage)
973         End Function
974
975         Public Function GetFillingColorSpace() As HPdfColorSpace
976             Return HPDF_Page_GetFillingColorSpace(hpage)
977         End Function
978
979         Public Function GetTextMatrix() As HPdfTransMatrix
980             Return HPDF_Page_GetTextMatrix(hpage)
981         End Function
982
983         Public Function GetGStateDepth() As UInt32
984             Return HPDF_Page_GetGStateDepth(hpage)
985         End Function
986
987         Public Sub SetLineWidth(ByVal line_width As Single)
988             HPDF_Page_SetLineWidth(hpage, line_width)
989         End Sub
990
991         Public Sub SetLineCap(ByVal line_cap As HPdfLineCap)
992             HPDF_Page_SetLineCap(hpage, line_cap)
993         End Sub
994
995         Public Sub SetLineJoin(ByVal line_join As HPdfLineJoin)
996             HPDF_Page_SetLineJoin(hpage, line_join)
997         End Sub
998
999         Public Sub SetMiterLimit(ByVal miter_limit As Single)
1000             HPDF_Page_SetMiterLimit(hpage, miter_limit)
1001         End Sub
1002
1003         Public Sub SetDash(ByRef dash_ptn As UInt16(), ByVal phase As UInt32)
1004             If (dash_ptn Is Nothing) Then
1005                 HPDF_Page_SetDash(hpage, dash_ptn, 0, 0)
1006                 Return
1007             End If
1008
1009             Dim len As UInt32 = dash_ptn.Length
1010
1011             HPDF_Page_SetDash(hpage, dash_ptn, len, phase)
1012
1013         End Sub
1014
1015         Public Sub SetFlat(ByVal flatness As Single)
1016             HPDF_Page_SetFlat(hpage, flatness)
1017         End Sub
1018
1019         Public Sub SetExtGState(ByVal gstate As HPdfExtGState)
1020             HPDF_Page_SetExtGState(hpage, gstate.GetHandle())
1021         End Sub
1022
1023         Public Sub GSave()
1024             HPDF_Page_GSave(hpage)
1025         End Sub
1026
1027         Public Sub GRestore()
1028             HPDF_Page_GRestore(hpage)
1029         End Sub
1030
1031         Public Sub Concat(ByVal a As Single, ByVal b As Single, ByVal c As Single, ByVal d As Single, ByVal x As Single, ByVal y As Single)
1032             HPDF_Page_Concat(hpage, a, b, c, d, x, y)
1033         End Sub
1034
1035         Public Sub MoveTo(ByVal x As Single, ByVal y As Single)
1036             HPDF_Page_MoveTo(hpage, x, y)
1037         End Sub
1038
1039         Public Sub LineTo(ByVal x As Single, ByVal y As Single)
1040             HPDF_Page_LineTo(hpage, x, y)
1041         End Sub
1042
1043         Public Sub CurveTo(ByVal x1 As Single, ByVal y1 As Single, ByVal x2 As Single, ByVal y2 As Single, ByVal x3 As Single, ByVal y3 As Single)
1044             HPDF_Page_CurveTo(hpage, x1, y1, x2, y2, x3, y3)
1045         End Sub
1046
1047         Public Sub CurveTo2(ByVal x2 As Single, ByVal y2 As Single, ByVal x3 As Single, ByVal y3 As Single)
1048             HPDF_Page_CurveTo2(hpage, x2, y2, x3, y3)
1049         End Sub
1050         Public Sub CurveTo3(ByVal x1 As Single, ByVal y1 As Single, ByVal x3 As Single, ByVal y3 As Single)
1051             HPDF_Page_CurveTo2(hpage, x1, y1, x3, y3)
1052         End Sub
1053
1054         Public Sub ClosePath()
1055             HPDF_Page_ClosePath(hpage)
1056         End Sub
1057
1058         Public Sub Rectangle(ByVal x As Single, ByVal y As Single, ByVal width As Single, ByVal height As Single)
1059             HPDF_Page_Rectangle(hpage, x, y, width, height)
1060         End Sub
1061
1062         Public Sub Stroke()
1063             HPDF_Page_Stroke(hpage)
1064         End Sub
1065
1066         Public Sub ClosePathStroke()
1067             HPDF_Page_ClosePathStroke(hpage)
1068         End Sub
1069
1070         Public Sub Fill()
1071             HPDF_Page_Fill(hpage)
1072         End Sub
1073
1074         Public Sub Eofill()
1075             HPDF_Page_Eofill(hpage)
1076         End Sub
1077
1078         Public Sub FillStroke()
1079             HPDF_Page_FillStroke(hpage)
1080         End Sub
1081
1082         Public Sub EofillStroke()
1083             HPDF_Page_EofillStroke(hpage)
1084         End Sub
1085
1086         Public Sub ClosePathFillStroke()
1087             HPDF_Page_ClosePathFillStroke(hpage)
1088         End Sub
1089
1090         Public Sub ClosePathEofillStroke()
1091             HPDF_Page_ClosePathEofillStroke(hpage)
1092         End Sub
1093
1094         Public Sub EndPath()
1095             HPDF_Page_EndPath(hpage)
1096         End Sub
1097
1098         Public Sub Clip()
1099             HPDF_Page_Clip(hpage)
1100         End Sub
1101
1102         Public Sub Eoclip()
1103             HPDF_Page_Eoclip(hpage)
1104         End Sub
1105
1106         Public Sub BeginText()
1107             HPDF_Page_BeginText(hpage)
1108         End Sub
1109
1110         Public Sub EndText()
1111             HPDF_Page_EndText(hpage)
1112         End Sub
1113
1114         Public Sub SetCharSpace(ByVal value As Single)
1115             HPDF_Page_SetCharSpace(hpage, value)
1116         End Sub
1117
1118         Public Sub SetWordSpace(ByVal value As Single)
1119             HPDF_Page_SetWordSpace(hpage, value)
1120         End Sub
1121
1122         Public Sub SetHorizontalScalling(ByVal value As Single)
1123             HPDF_Page_SetHorizontalScalling(hpage, value)
1124         End Sub
1125
1126         Public Sub SetTextLeading(ByVal value As Single)
1127             HPDF_Page_SetTextLeading(hpage, value)
1128         End Sub
1129
1130         Public Sub SetFontAndSize(ByRef font As HPdfFont, ByVal size As Single)
1131             HPDF_Page_SetFontAndSize(hpage, font.GetHandle(), size)
1132         End Sub
1133
1134         Public Sub SetTextRenderingMode(ByVal mode As HPdfTextRenderingMode)
1135             HPDF_Page_SetTextRenderingMode(hpage, mode)
1136         End Sub
1137
1138         Public Sub SetTextRaise(ByVal value As Single)
1139             HPDF_Page_SetTextRaise(hpage, value)
1140         End Sub
1141
1142         Public Sub MoveTextPos(ByVal x As Single, ByVal y As Single)
1143             HPDF_Page_MoveTextPos(hpage, x, y)
1144         End Sub
1145
1146         Public Sub MoveTextPos2(ByVal x As Single, ByVal y As Single)
1147             HPDF_Page_MoveTextPos2(hpage, x, y)
1148         End Sub
1149
1150         Public Sub SetTextMatrix(ByVal a As Single, ByVal b As Single, ByVal c As Single, ByVal d As Single, ByVal x As Single, ByVal y As Single)
1151             HPDF_Page_SetTextMatrix(hpage, a, b, c, d, x, y)
1152         End Sub
1153
1154         Public Sub MoveToNextLine()
1155             HPDF_Page_MoveToNextLine(hpage)
1156         End Sub
1157
1158         Public Sub ShowText(ByVal text As String)
1159             HPDF_Page_ShowText(hpage, text)
1160         End Sub
1161
1162         Public Sub ShowTextNextLine(ByVal text As String)
1163             HPDF_Page_ShowTextNextLine(hpage, text)
1164         End Sub
1165
1166         Public Sub ShowTextNextLineEx(ByVal word_space As Single, ByVal char_space As Single, ByVal text As String)
1167             HPDF_Page_ShowTextNextLineEx(hpage, word_space, char_space, text)
1168         End Sub
1169
1170         Public Sub SetGrayFill(ByVal gray As Single)
1171             HPDF_Page_SetGrayFill(hpage, gray)
1172         End Sub
1173
1174         Public Sub SetGrayStroke(ByVal gray As Single)
1175             HPDF_Page_SetGrayStroke(hpage, gray)
1176         End Sub
1177
1178         Public Sub SetRGBFill(ByVal r As Single, ByVal g As Single, ByVal b As Single)
1179             HPDF_Page_SetRGBFill(hpage, r, g, b)
1180         End Sub
1181
1182         Public Sub SetRGBStroke(ByVal r As Single, ByVal g As Single, ByVal b As Single)
1183             HPDF_Page_SetRGBStroke(hpage, r, g, b)
1184         End Sub
1185
1186         Public Sub SetCMYKFill(ByVal c As Single, ByVal m As Single, ByVal y As Single, ByVal k As Single)
1187             HPDF_Page_SetCMYKFill(hpage, c, m, y, k)
1188         End Sub
1189
1190         Public Sub SetCMYKStroke(ByVal c As Single, ByVal m As Single, ByVal y As Single, ByVal k As Single)
1191             HPDF_Page_SetCMYKStroke(hpage, c, m, y, k)
1192         End Sub
1193
1194         Public Sub ExecuteXObject(ByRef xobj As HPdfImage)
1195             HPDF_Page_ExecuteXObject(hpage, xobj.GetHandle())
1196         End Sub
1197
1198         Public Sub DrawImage(ByRef image As HPdfImage, ByVal x As Single, ByVal y As Single, ByVal width As Single, ByVal height As Single)
1199             HPDF_Page_DrawImage(hpage, image.GetHandle(), x, y, width, height)
1200         End Sub
1201
1202         Public Sub Circle(ByVal x As Single, ByVal y As Single, ByVal ray As Single)
1203             HPDF_Page_Circle(hpage, x, y, ray)
1204         End Sub
1205
1206         Public Sub Arc(ByVal x As Single, ByVal y As Single, ByVal ray As Single, ByVal ang1 As Single, ByVal ang2 As Single)
1207             HPDF_Page_Arc(hpage, x, y, ray, ang1, ang2)
1208         End Sub
1209
1210         Public Sub TextOut(ByVal xpos As Single, ByVal ypos As Single, ByVal text As String)
1211             HPDF_Page_TextOut(hpage, xpos, ypos, text)
1212         End Sub
1213
1214         Public Sub TextRect(ByVal left As Single, ByVal top As Single, ByVal right As Single, ByVal bottom As Single, ByVal text As String, ByVal align As HPdfTextAlignment, ByRef len As UInt32)
1215             HPDF_Page_TextRect(hpage, left, top, right, bottom, text, align, len)
1216         End Sub
1217
1218         Public Sub SetSlideShow(ByVal type As HPdfTransitionStyle, ByVal disp_time As Single, ByVal trans_time As Single)
1219             HPDF_Page_SetSlideShow(hpage, type, disp_time, trans_time)
1220         End Sub
1221
1222         Public Function GetHandle() As IntPtr
1223             Return hpage
1224         End Function
1225
1226     End Class
1227     Public Class HPdfFont
1228         Private Declare Function HPDF_Outline_SetOpened Lib "libhpdf.dll" Alias "HPDF_Outline_SetOpened" (ByVal houtline As IntPtr, ByVal opened As Int32) As UInt32
1229
1230         Private Declare Function HPDF_Font_GetFontName Lib "libhpdf.dll" Alias "HPDF_Font_GetFontName" (ByVal hfont As IntPtr) As String
1231         Private Declare Function HPDF_Font_GetEncodingName Lib "libhpdf.dll" Alias "HPDF_Font_GetEncodingName" (ByVal hfont As IntPtr) As String
1232         Private Declare Function HPDF_Font_GetUnicodeWidth Lib "libhpdf.dll" Alias "HPDF_Font_GetUnicodeWidth" (ByVal hfont As IntPtr, ByVal code As UInt16) As Int32
1233         Private Declare Function HPDF_Font_GetBBox Lib "libhpdf.dll" Alias "HPDF_Font_GetBBox" (ByVal hfont As IntPtr) As HPdfBox
1234         Private Declare Function HPDF_Font_GetAscent Lib "libhpdf.dll" Alias "HPDF_Font_GetAscent" (ByVal hfont As IntPtr) As Int32
1235         Private Declare Function HPDF_Font_GetDescent Lib "libhpdf.dll" Alias "HPDF_Font_GetDescent" (ByVal hfont As IntPtr) As Int32
1236         Private Declare Function HPDF_Font_GetXHeight Lib "libhpdf.dll" Alias "HPDF_Font_GetXHeight" (ByVal hfont As IntPtr) As UInt32
1237         Private Declare Function HPDF_Font_GetCapHeight Lib "libhpdf.dll" Alias "HPDF_Font_GetCapHeight" (ByVal hfont As IntPtr) As UInt32
1238         Private Declare Function HPDF_Font_TextWidth Lib "libhpdf.dll" Alias "HPDF_Font_TextWidth" (ByVal hfont As IntPtr, ByVal text As String, ByVal len As UInt16) As HPdfTextWidth
1239         Private Declare Function HPDF_Font_MeasureText Lib "libhpdf.dll" Alias "HPDF_Font_MeasureText" (ByVal hfont As IntPtr, ByVal text As String, ByVal len As UInt16, _
1240                                                                                                         ByVal width As Single, ByVal font_size As Single, ByVal char_space As Single, ByVal word_space As Single, ByVal wordwrap As Int32, ByRef real_width As Single) As UInt32
1241
1242         Private hfont As IntPtr
1243
1244         Public Sub New(ByVal hfont As IntPtr)
1245             If (hfont = IntPtr.Zero) Then
1246                 Throw New Exception("cannot create HPdfFont object.")
1247             End If
1248
1249             Me.hfont = hfont
1250         End Sub
1251
1252         Public Function GetHandle() As IntPtr
1253             Return hfont
1254         End Function
1255
1256         Public Function GetFontName() As String
1257             Return HPDF_Font_GetFontName(hfont)
1258         End Function
1259
1260         Public Function GetEncodingName() As String
1261             Return HPDF_Font_GetEncodingName(hfont)
1262         End Function
1263
1264         Public Function GetUnicodeWidth(ByVal code As UInt16) As Int32
1265             Return HPDF_Font_GetUnicodeWidth(hfont, code)
1266         End Function
1267
1268         Public Function GetBBox() As HPdfBox
1269             Return HPDF_Font_GetBBox(hfont)
1270         End Function
1271
1272         Public Function GetAscent() As Int32
1273             Return HPDF_Font_GetAscent(hfont)
1274         End Function
1275
1276         Public Function GetDescent() As Int32
1277             Return HPDF_Font_GetDescent(hfont)
1278         End Function
1279
1280         Public Function GetXHeight() As UInt32
1281             Return HPDF_Font_GetXHeight(hfont)
1282         End Function
1283
1284         Public Function GetCapHeight() As UInt32
1285             Return HPDF_Font_GetCapHeight(hfont)
1286         End Function
1287
1288         Public Function TextWidth(ByVal text As String, ByVal len As UInt32) As HPdfTextWidth
1289             Return HPDF_Font_TextWidth(hfont, text, len)
1290         End Function
1291
1292         Public Function MeasureText(ByVal text As String, ByVal len As UInt32, ByVal width As Single, _
1293                                     ByVal font_size As Single, ByVal char_space As Single, ByVal word_space As Single, _
1294                                     ByVal wordwrap As Int32, ByRef real_width As Single) As UInt32
1295
1296             Return HPDF_Font_MeasureText(hfont, text, len, width, font_size, char_space, word_space, wordwrap, real_width)
1297         End Function
1298     End Class
1299     Public Class HPdfOutline
1300
1301         Private Declare Function HPDF_Outline_SetOpened Lib "libhpdf.dll" Alias "HPDF_Outline_SetOpened" (ByVal houtline As IntPtr, ByVal opened As Int32) As UInt32
1302         Private Declare Function HPDF_Outline_SetDestination Lib "libhpdf.dll" Alias "HPDF_Outline_SetDestination" (ByVal houtline As IntPtr, ByVal hdest As IntPtr) As UInt32
1303
1304         Private houtline As IntPtr
1305
1306         Public Sub New(ByVal houtline As IntPtr)
1307             If (houtline = IntPtr.Zero) Then
1308                 Throw New Exception("cannot create HPdfOutline object.")
1309             End If
1310
1311             Me.houtline = houtline
1312         End Sub
1313
1314         Public Function GetHandle() As IntPtr
1315             Return houtline
1316         End Function
1317
1318         Public Sub SetOpened(ByVal opened As Boolean)
1319             Dim iopened As Int32
1320
1321             If (opened) Then
1322                 iopened = HPdfDoc.HPDF_TRUE
1323             Else
1324                 iopened = HPdfDoc.HPDF_FALSE
1325             End If
1326
1327             HPDF_Outline_SetOpened(houtline, iopened)
1328         End Sub
1329
1330         Public Sub SetDestination(ByRef dest As HPdfDestination)
1331             HPDF_Outline_SetDestination(houtline, dest.GetHandle())
1332         End Sub
1333
1334     End Class
1335     Public Class HPdfEncoder
1336         Private Declare Function HPDF_Encoder_GetType Lib "libhpdf.dll" Alias "HPDF_Encoder_GetType" (ByVal hencoder As IntPtr) As HPdfEncoderType
1337         Private Declare Function HPDF_Encoder_GetByteType Lib "libhpdf.dll" Alias "HPDF_Encoder_GetByteType" (ByVal hencoder As IntPtr, ByVal text As String, ByVal index As UInt32) As HPdfByteType
1338         Private Declare Function HPDF_Encoder_GetUnicode Lib "libhpdf.dll" Alias "HPDF_Encoder_GetUnicode" (ByVal hencoder As IntPtr, ByVal code As UInt16) As UInt16
1339         Private Declare Function HPDF_Encoder_GetWritingMode Lib "libhpdf.dll" Alias "HPDF_Encoder_GetWritingMode" (ByVal hencoder As IntPtr) As HPdfWritingMode
1340
1341         Private hencoder As IntPtr
1342
1343         Public Sub New(ByVal hencoder As IntPtr)
1344             If (hencoder = IntPtr.Zero) Then
1345                 Throw New Exception("cannot create HPdfEncoder object.")
1346             End If
1347
1348             Me.hencoder = hencoder
1349         End Sub
1350
1351         Public Function GetHandle() As IntPtr
1352             Return hencoder
1353         End Function
1354
1355         Public Function GetEncoderType() As HPdfEncoderType
1356             Return HPDF_Encoder_GetType(hencoder)
1357         End Function
1358
1359         Public Function GetByteType(ByVal text As String, ByVal index As UInt32) As HPdfByteType
1360             Return HPDF_Encoder_GetByteType(hencoder, text, index)
1361         End Function
1362
1363         Public Function GetUnicode(ByVal code As UInt16) As UInt16
1364             Return HPDF_Encoder_GetUnicode(hencoder, code)
1365         End Function
1366
1367         Public Function GetWritingMode() As HPdfWritingMode
1368             Return HPDF_Encoder_GetWritingMode(hencoder)
1369         End Function
1370     End Class
1371     Public Class HPdfDestination
1372         Private Declare Function HPDF_Destination_SetXYZ Lib "libhpdf.dll" Alias "HPDF_Destination_SetXYZ" (ByVal hdest As IntPtr, ByVal left As Single, ByVal top As Single, ByVal zoom As Single) As UInt32
1373         Private Declare Function HPDF_Destination_SetFit Lib "libhpdf.dll" Alias "HPDF_Destination_SetFit" (ByVal hdest As IntPtr) As UInt32
1374         Private Declare Function HPDF_Destination_SetFitH Lib "libhpdf.dll" Alias "HPDF_Destination_SetFitH" (ByVal hdest As IntPtr, ByVal top As Single) As UInt32
1375         Private Declare Function HPDF_Destination_SetFitV Lib "libhpdf.dll" Alias "HPDF_Destination_SetFitV" (ByVal hdest As IntPtr, ByVal left As Single) As UInt32
1376         Private Declare Function HPDF_Destination_SetFitR Lib "libhpdf.dll" Alias "HPDF_Destination_SetFitR" (ByVal hdest As IntPtr, ByVal left As Single, ByVal bottom As Single, ByVal right As Single, ByVal top As Single) As UInt32
1377         Private Declare Function HPDF_Destination_SetFitB Lib "libhpdf.dll" Alias "HPDF_Destination_SetFitB" (ByVal hdest As IntPtr) As UInt32
1378         Private Declare Function HPDF_Destination_SetFitBH Lib "libhpdf.dll" Alias "HPDF_Destination_SetFitBH" (ByVal hdest As IntPtr, ByVal top As Single) As UInt32
1379         Private Declare Function HPDF_Destination_SetFitBV Lib "libhpdf.dll" Alias "HPDF_Destination_SetFitBV" (ByVal hdest As IntPtr, ByVal left As Single) As UInt32
1380
1381         Private hdest As IntPtr
1382
1383         Public Sub New(ByVal hdest As IntPtr)
1384             If (hdest = IntPtr.Zero) Then
1385                 Throw New Exception("cannot create HPdfDestination object.")
1386             End If
1387
1388             Me.hdest = hdest
1389         End Sub
1390
1391         Public Sub SetXYZ(ByVal left As Single, ByVal top As Single, ByVal zoom As Single)
1392             HPDF_Destination_SetXYZ(hdest, left, top, zoom)
1393         End Sub
1394
1395         Public Sub SetFit()
1396             HPDF_Destination_SetFit(hdest)
1397         End Sub
1398
1399         Public Sub SetFitH(ByVal top As Single)
1400             HPDF_Destination_SetFitH(hdest, top)
1401         End Sub
1402
1403         Public Sub SetFitV(ByVal left As Single)
1404             HPDF_Destination_SetFitV(hdest, left)
1405         End Sub
1406     
1407         Public Sub SetFitR(ByVal left As Single, ByVal bottom As Single, ByVal right As Single, ByVal top As Single)
1408             HPDF_Destination_SetFitR(hdest, left, bottom, right, top)
1409         End Sub
1410
1411         Public Sub SetFitB()
1412             HPDF_Destination_SetFitB(hdest)
1413         End Sub
1414
1415         Public Sub SetFitBH(ByVal top As Single)
1416             HPDF_Destination_SetFitBH(hdest, top)
1417         End Sub
1418
1419         Public Sub SetFitBV(ByVal left As Single)
1420             HPDF_Destination_SetFitBV(hdest, left)
1421         End Sub
1422     
1423         Public Function GetHandle() As IntPtr
1424             Return hdest
1425         End Function
1426     End Class
1427     Public Class HPdfAnnotation
1428
1429         Private Declare Function HPDF_LinkAnnot_SetHighlightMode Lib "libhpdf.dll" Alias "HPDF_LinkAnnot_SetHighlightMode" (ByVal hannot As IntPtr, ByVal mode As HPdfAnnotHighlightMode) As UInt32
1430         Private Declare Function HPDF_LinkAnnot_SetBorderStyle Lib "libhpdf.dll" Alias "HPDF_LinkAnnot_SetBorderStyle" (ByVal hannot As IntPtr, ByVal width As Single, ByVal dash_on As UInt16, ByVal dash_off As UInt16) As UInt32
1431         Private Declare Function HPDF_TextAnnot_SetIcon Lib "libhpdf.dll" Alias "HPDF_TextAnnot_SetIcon" (ByVal hannot As IntPtr, ByVal icon As HPdfAnnotIcon) As UInt32
1432         Private Declare Function HPDF_TextAnnot_SetOpened Lib "libhpdf.dll" Alias "HPDF_TextAnnot_SetOpened" (ByVal hannot As IntPtr, ByVal opened As Int32) As UInt32
1433
1434         Private hannot As IntPtr
1435
1436         Public Sub New(ByVal hannot As IntPtr)
1437             If (hannot = IntPtr.Zero) Then
1438                 Throw New Exception("cannot create HPdfAnnotation object.")
1439             End If
1440
1441             Me.hannot = hannot
1442         End Sub
1443
1444         Public Function GetHandle() As IntPtr
1445             Return hannot
1446         End Function
1447
1448         Public Sub SetHighlightMode(ByVal mode As HPdfAnnotHighlightMode)
1449             HPDF_LinkAnnot_SetHighlightMode(hannot, mode)
1450         End Sub
1451
1452         Public Sub SetBorderStyle(ByVal width As Single, ByVal dash_on As UInt16, ByVal dash_off As UInt16)
1453             HPDF_LinkAnnot_SetBorderStyle(hannot, width, dash_on, dash_off)
1454         End Sub
1455
1456         Public Sub SetIcon(ByVal icon As HPdfAnnotIcon)
1457             HPDF_TextAnnot_SetIcon(hannot, icon)
1458         End Sub
1459
1460         Public Sub SetOpened(ByVal opened As Boolean)
1461             Dim flg As Int32
1462
1463             If (opened) Then
1464                 flg = HPdfDoc.HPDF_TRUE
1465             Else
1466                 flg = HPdfDoc.HPDF_FALSE
1467             End If
1468
1469             HPDF_TextAnnot_SetOpened(hannot, flg)
1470         End Sub
1471
1472     End Class
1473     Public Class HPdfXObject
1474         Protected hobj As IntPtr
1475
1476         Public Sub New(ByVal hobj As IntPtr)
1477             If (hobj = IntPtr.Zero) Then
1478                 Throw New Exception("cannot create HPdfImage object.")
1479             End If
1480
1481             Me.hobj = hobj
1482         End Sub
1483
1484         Public Function GetHandle() As IntPtr
1485             Return hobj
1486         End Function
1487     End Class
1488     Public Class HPdfImage
1489         Inherits HPdfXObject
1490
1491         Private Declare Function HPDF_Image_GetSize Lib "libhpdf.dll" Alias "HPDF_Image_GetSize" (ByVal image As IntPtr) As HPdfPoint
1492         Private Declare Function HPDF_Image_GetWidth Lib "libhpdf.dll" Alias "HPDF_Image_GetWidth" (ByVal image As IntPtr) As UInt32
1493         Private Declare Function HPDF_Image_GetHeight Lib "libhpdf.dll" Alias "HPDF_Image_GetHeight" (ByVal image As IntPtr) As UInt32
1494         Private Declare Function HPDF_Image_GetBitsPerComponent Lib "libhpdf.dll" Alias "HPDF_Image_GetBitsPerComponent" (ByVal image As IntPtr) As UInt32
1495         Private Declare Function HPDF_Image_GetColorSpace Lib "libhpdf.dll" Alias "HPDF_Image_GetColorSpace" (ByVal image As IntPtr) As String
1496         Private Declare Function HPDF_Image_SetColorMask Lib "libhpdf.dll" Alias "HPDF_Image_SetColorMask" (ByVal image As IntPtr, ByVal rmin As UInt32, ByVal rmax As UInt32, ByVal gmin As UInt32, ByVal gmax As UInt32, ByVal bmin As UInt32, ByVal bmax As UInt32) As UInt32
1497         Private Declare Function HPDF_Image_SetMaskImage Lib "libhpdf.dll" Alias "HPDF_Image_SetMaskImage" (ByVal image As IntPtr, ByVal image_mask As IntPtr) As String
1498
1499         Public Sub New(ByVal hobj As IntPtr)
1500             MyBase.New(hobj)
1501         End Sub
1502
1503         Public Function GetWidth() As UInt32
1504             Return HPDF_Image_GetWidth(hobj)
1505         End Function
1506
1507         Public Function GetHeight() As UInt32
1508             Return HPDF_Image_GetHeight(hobj)
1509         End Function
1510
1511         Public Function GetBitsPerComponent() As UInt32
1512             Return HPDF_Image_GetBitsPerComponent(hobj)
1513         End Function
1514
1515         Public Function GetColorSpace() As String
1516             Return HPDF_Image_GetColorSpace(hobj)
1517         End Function
1518
1519         Public Sub SetColorMask(ByVal rmin As UInt32, ByVal rmax As UInt32, ByVal gmin As UInt32, ByVal gmax As UInt32, ByVal bmin As UInt32, ByVal bmax As UInt32)
1520             HPDF_Image_SetColorMask(hobj, rmin, rmax, gmin, gmax, bmin, bmax)
1521         End Sub
1522
1523         Public Sub SetMaskImage(ByRef mask_image As HPdfImage)
1524             HPDF_Image_SetMaskImage(hobj, mask_image.GetHandle())
1525         End Sub
1526
1527     End Class
1528     Public Class HPdfExtGState
1529         Private Declare Function HPDF_ExtGState_SetAlphaStroke Lib "libhpdf.dll" Alias "HPDF_ExtGState_SetAlphaStroke" (ByVal gstate As IntPtr, ByVal value As Single) As UInt32
1530         Private Declare Function HPDF_ExtGState_SetAlphaFill Lib "libhpdf.dll" Alias "HPDF_ExtGState_SetAlphaFill" (ByVal gstate As IntPtr, ByVal value As Single) As UInt32
1531         Private Declare Function HPDF_ExtGState_SetBlendMode Lib "libhpdf.dll" Alias "HPDF_ExtGState_SetBlendMode" (ByVal gstate As IntPtr, ByVal mode As HPdfBlendMode) As UInt32
1532
1533         Protected hgstate As IntPtr
1534
1535         Public Sub New(ByVal hgstate As IntPtr)
1536             If (hgstate = IntPtr.Zero) Then
1537                 Throw New Exception("cannot create HPdfImage object.")
1538             End If
1539
1540             Me.hgstate = hgstate
1541         End Sub
1542
1543         Public Function GetHandle() As IntPtr
1544             Return hgstate
1545         End Function
1546
1547         Public Sub SetAlphaStroke(ByVal value As Single)
1548             HPDF_ExtGState_SetAlphaStroke(hgstate, value)
1549         End Sub
1550
1551         Public Sub SetAlphaFill(ByVal value As Single)
1552             HPDF_ExtGState_SetAlphaFill(hgstate, value)
1553         End Sub
1554
1555         Public Sub SetBlendMode(ByVal mode As HPdfBlendMode)
1556             HPDF_ExtGState_SetBlendMode(hgstate, mode)
1557         End Sub
1558
1559     End Class
1560
1561 End Namespace