1/*---------------------------------------------------------------------------*
2 |              PDFlib - A library for generating PDF on the fly             |
3 +---------------------------------------------------------------------------+
4 | Copyright (c) 1997-2004 Thomas Merz and PDFlib GmbH. All rights reserved. |
5 +---------------------------------------------------------------------------+
6 |                                                                           |
7 |    This software is subject to the PDFlib license. It is NOT in the       |
8 |    public domain. Extended versions and commercial licenses are           |
9 |    available, please check http://www.pdflib.com.                         |
10 |                                                                           |
11 *---------------------------------------------------------------------------*/
12
13/* $Id: p_pdi.c 14574 2005-10-29 16:27:43Z bonefish $
14 *
15 * PDF import routines (require the PDI library)
16 *
17 */
18
19#define P_PDI_C
20
21#include "p_intern.h"
22
23
24PDFLIB_API int PDFLIB_CALL
25PDF_open_pdi(
26    PDF *p,
27    const char *filename,
28    const char *optlist,
29    int reserved)
30{
31    static const char fn[] = "PDF_open_pdi";
32    int retval = -1;
33
34    if (!pdf_enter_api(p, fn,
35        (pdf_state) (pdf_state_object | pdf_state_document | pdf_state_page),
36	"(p[%p], \"%s\", \"%s\", %d)",
37        (void *) p, filename, optlist, reserved))
38    {
39        PDF_RETURN_HANDLE(p, retval)
40    }
41
42    pdc_error(p->pdc, PDF_E_UNSUPP_PDI, 0, 0, 0, 0);
43
44    PDF_RETURN_HANDLE(p, retval)
45}
46
47PDFLIB_API int PDFLIB_CALL
48PDF_open_pdi_callback(
49    PDF *p,
50    void *opaque,
51    size_t filesize,
52    size_t (*readproc)(void *opaque, void *buffer, size_t size),
53    int (*seekproc)(void *opaque, long offset),
54    const char *optlist)
55{
56    static const char fn[] = "PDF_open_pdi_callback";
57    int retval = -1;
58
59    if (!pdf_enter_api(p, fn,
60        (pdf_state) (pdf_state_object | pdf_state_document | pdf_state_page),
61        "(p[%p], opaque[%p], %ld, readproc[%p], seekproc[%p] \"%s\")",
62        (void *)p, opaque, filesize, readproc, seekproc, optlist))
63    {
64        PDF_RETURN_HANDLE(p, retval)
65    }
66
67    pdc_error(p->pdc, PDF_E_UNSUPP_PDI, 0, 0, 0, 0);
68
69    PDF_RETURN_HANDLE(p, retval)
70}
71
72PDFLIB_API void PDFLIB_CALL
73PDF_close_pdi(PDF *p, int doc)
74{
75    static const char fn[] = "PDF_close_pdi";
76
77    if (!pdf_enter_api(p, fn,
78        (pdf_state) (pdf_state_object | pdf_state_document | pdf_state_page),
79	"(p[%p], %d)\n", (void *) p, doc))
80	return;
81
82    pdc_error(p->pdc, PDF_E_UNSUPP_PDI, 0, 0, 0, 0);
83
84    return;
85}
86
87PDFLIB_API int PDFLIB_CALL
88PDF_open_pdi_page( PDF *p, int doc, int page, const char *optlist)
89{
90    static const char fn[] = "PDF_open_pdi_page";
91    int retval = -1;
92
93    if (!pdf_enter_api(p, fn,
94        (pdf_state) (pdf_state_document | pdf_state_page),
95        "(p[%p], %d, %d, \"%s\")", (void *) p, doc, page, optlist))
96    {
97        PDF_RETURN_HANDLE(p, retval)
98    }
99
100    pdc_error(p->pdc, PDF_E_UNSUPP_PDI, 0, 0, 0, 0);
101
102    PDF_RETURN_HANDLE(p, retval)
103}
104
105PDFLIB_API void PDFLIB_CALL
106PDF_fit_pdi_page(PDF *p, int page, float x, float y, const char *optlist)
107{
108    static const char fn[] = "PDF_fit_pdi_page";
109
110    /* precise scope diagnosis in pdf__place_image */
111    if (!pdf_enter_api(p, fn, pdf_state_content,
112        "(p[%p], %d, %g, %g, \"%s\")\n", (void *) p, page, x, y, optlist))
113        return;
114
115    pdc_error(p->pdc, PDF_E_UNSUPP_PDI, 0, 0, 0, 0);
116
117    return;
118}
119
120PDFLIB_API void PDFLIB_CALL
121PDF_place_pdi_page(PDF *p, int page, float x, float y, float sx, float sy)
122{
123    static const char fn[] = "PDF_place_pdi_page";
124
125    if (!pdf_enter_api(p, fn, pdf_state_content,
126	"(p[%p], %d, %g, %g, %g, %g)\n", (void *) p, page, x, y, sx, sy))
127	return;
128
129    pdc_error(p->pdc, PDF_E_UNSUPP_PDI, 0, 0, 0, 0);
130
131    return;
132}
133
134PDFLIB_API void PDFLIB_CALL
135PDF_close_pdi_page(PDF *p, int page)
136{
137    static const char fn[] = "PDF_close_pdi_page";
138
139    if (!pdf_enter_api(p, fn,
140        (pdf_state) (pdf_state_document | pdf_state_page),
141	"(p[%p], %d)\n", (void *) p, page))
142	return;
143
144    pdc_error(p->pdc, PDF_E_UNSUPP_PDI, 0, 0, 0, 0);
145
146    return;
147}
148
149PDFLIB_API const char *PDFLIB_CALL
150PDF_get_pdi_parameter(
151    PDF *p,
152    const char *key,
153    int doc,
154    int page,
155    int idx,
156    int *len)
157{
158    static const char fn[] = "PDF_get_pdi_parameter";
159
160    if (!pdf_enter_api(p, fn, pdf_state_all,
161	"(p[%p], \"%s\", %d, %d, %d, len[%p])\n",
162	(void *) p, key, doc, page, idx, len))
163	return (const char *) NULL;
164
165    pdc_error(p->pdc, PDF_E_UNSUPP_PDI, 0, 0, 0, 0);
166
167    return (const char *) NULL;
168}
169
170PDFLIB_API float PDFLIB_CALL
171PDF_get_pdi_value(PDF *p, const char *key, int doc, int page, int idx)
172{
173    static const char fn[] = "PDF_get_pdi_value";
174
175    if (!pdf_enter_api(p, fn, pdf_state_all,
176	"(p[%p], \"%s\", %d, %d, %d)\n",
177	(void *) p, key, doc, page, idx))
178	return (float) 0;
179
180    pdc_error(p->pdc, PDF_E_UNSUPP_PDI, 0, 0, 0, 0);
181
182    return (float) 0;
183}
184
185PDFLIB_API int PDFLIB_CALL
186PDF_process_pdi(PDF *p, int doc, int page, const char *optlist)
187{
188    static const char fn[] = "PDF_process_pdi";
189
190    if (!pdf_enter_api(p, fn,
191        (pdf_state) (pdf_state_document),
192        "(p[%p], %d, %d, %s)\n", (void *) p, doc, page, optlist))
193    {
194        PDF_RETURN_BOOLEAN(p, -1);
195    }
196
197    pdc_error(p->pdc, PDF_E_UNSUPP_PDI, 0, 0, 0, 0);
198
199    PDF_RETURN_BOOLEAN(p, -1);
200}
201
202