]> rtime.felk.cvut.cz Git - hornmich/skoda-qr-demo.git/blob - QRScanner/mobile/jni/pdf/js/pdf-jsimp-cpp.c
Add MuPDF native source codes
[hornmich/skoda-qr-demo.git] / QRScanner / mobile / jni / pdf / js / pdf-jsimp-cpp.c
1 /* This file contains wrapper functions for pdf_jsimp functions implemented
2  * in C++, from which calls to fz_throw aren't safe. The C++ versions
3  * return errors explicitly, and these wrappers then throw them. */
4
5 #include "mupdf/pdf.h"
6 #include "pdf-jsimp-cpp.h"
7
8 pdf_jsimp *pdf_new_jsimp(fz_context *ctx, void *jsctx)
9 {
10         pdf_jsimp *jsi = NULL;
11         const char *err = pdf_new_jsimp_cpp(ctx, jsctx, &jsi);
12         if (err != NULL)
13                 fz_throw(ctx, FZ_ERROR_GENERIC, "%s", err);
14
15         return jsi;
16 }
17
18 void pdf_drop_jsimp(pdf_jsimp *imp)
19 {
20         if (imp)
21         {
22                 fz_context *ctx = pdf_jsimp_ctx_cpp(imp);
23                 const char *err = pdf_drop_jsimp_cpp(imp);
24                 if (err != NULL)
25                         fz_warn(ctx, "%s", err);
26         }
27 }
28
29 pdf_jsimp_type *pdf_jsimp_new_type(pdf_jsimp *imp, pdf_jsimp_dtr *dtr, char *name)
30 {
31         pdf_jsimp_type *type = NULL;
32         const char *err = pdf_jsimp_new_type_cpp(imp, dtr, &type);
33         if (err != NULL)
34                 fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
35
36         return type;
37 }
38
39 void pdf_jsimp_drop_type(pdf_jsimp *imp, pdf_jsimp_type *type)
40 {
41         const char *err = pdf_jsimp_drop_type_cpp(imp, type);
42         if (err != NULL)
43                 fz_warn(pdf_jsimp_ctx_cpp(imp), "%s", err);
44 }
45
46 void pdf_jsimp_addmethod(pdf_jsimp *imp, pdf_jsimp_type *type, char *name, pdf_jsimp_method *meth)
47 {
48         const char *err = pdf_jsimp_addmethod_cpp(imp, type, name, meth);
49         if (err != NULL)
50                 fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
51 }
52
53 void pdf_jsimp_addproperty(pdf_jsimp *imp, pdf_jsimp_type *type, char *name, pdf_jsimp_getter *get, pdf_jsimp_setter *set)
54 {
55         const char *err = pdf_jsimp_addproperty_cpp(imp, type, name, get, set);
56         if (err != NULL)
57                 fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
58 }
59
60 void pdf_jsimp_set_global_type(pdf_jsimp *imp, pdf_jsimp_type *type)
61 {
62         const char *err = pdf_jsimp_set_global_type_cpp(imp, type);
63         if (err != NULL)
64                 fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
65 }
66
67 pdf_jsimp_obj *pdf_jsimp_new_obj(pdf_jsimp *imp, pdf_jsimp_type *type, void *natobj)
68 {
69         pdf_jsimp_obj *obj = NULL;
70         const char *err = pdf_jsimp_new_obj_cpp(imp, type, natobj, &obj);
71         if (err != NULL)
72                 fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
73
74         return obj;
75 }
76
77 void pdf_jsimp_drop_obj(pdf_jsimp *imp, pdf_jsimp_obj *obj)
78 {
79         const char *err = pdf_jsimp_drop_obj_cpp(imp, obj);
80         if (err != NULL)
81                 fz_warn(pdf_jsimp_ctx_cpp(imp), "%s", err);
82 }
83
84 int pdf_jsimp_to_type(pdf_jsimp *imp, pdf_jsimp_obj *obj)
85 {
86         int type = 0;
87         const char *err = pdf_jsimp_to_type_cpp(imp, obj, &type);
88         if (err != NULL)
89                 fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
90
91         return type;
92 }
93
94 pdf_jsimp_obj *pdf_jsimp_from_string(pdf_jsimp *imp, char *str)
95 {
96         pdf_jsimp_obj *obj = NULL;
97         const char *err = pdf_jsimp_from_string_cpp(imp, str, &obj);
98         if (err != NULL)
99                 fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
100
101         return obj;
102 }
103
104 char *pdf_jsimp_to_string(pdf_jsimp *imp, pdf_jsimp_obj *obj)
105 {
106         char *str = NULL;
107         const char *err = pdf_jsimp_to_string_cpp(imp, obj, &str);
108         if (err != NULL)
109                 fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
110
111         return str;
112 }
113
114 pdf_jsimp_obj *pdf_jsimp_from_number(pdf_jsimp *imp, double num)
115 {
116         pdf_jsimp_obj *obj = NULL;
117         const char *err = pdf_jsimp_from_number_cpp(imp, num, &obj);
118         if (err != NULL)
119                 fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
120
121         return obj;
122 }
123
124 double pdf_jsimp_to_number(pdf_jsimp *imp, pdf_jsimp_obj *obj)
125 {
126         double num;
127         const char *err = pdf_jsimp_to_number_cpp(imp, obj, &num);
128         if (err != NULL)
129                 fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
130
131         return num;
132 }
133
134 int pdf_jsimp_array_len(pdf_jsimp *imp, pdf_jsimp_obj *obj)
135 {
136         int len = 0;
137         const char *err = pdf_jsimp_array_len_cpp(imp, obj, &len);
138         if (err != NULL)
139                 fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
140
141         return len;
142 }
143
144 pdf_jsimp_obj *pdf_jsimp_array_item(pdf_jsimp *imp, pdf_jsimp_obj *obj, int i)
145 {
146         pdf_jsimp_obj *item = NULL;
147         const char *err = pdf_jsimp_array_item_cpp(imp, obj, i, &item);
148         if (err != NULL)
149                 fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
150
151         return item;
152 }
153
154 pdf_jsimp_obj *pdf_jsimp_property(pdf_jsimp *imp, pdf_jsimp_obj *obj, char *prop)
155 {
156         pdf_jsimp_obj *pobj = NULL;
157         const char *err = pdf_jsimp_property_cpp(imp, obj, prop, &pobj);
158         if (err != NULL)
159                 fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
160
161         return pobj;
162 }
163
164 void pdf_jsimp_execute(pdf_jsimp *imp, char *code)
165 {
166         const char *err = pdf_jsimp_execute_cpp(imp, code);
167         if (err != NULL)
168                 fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
169 }
170
171 void pdf_jsimp_execute_count(pdf_jsimp *imp, char *code, int count)
172 {
173         const char *err = pdf_jsimp_execute_count_cpp(imp, code, count);
174         if (err != NULL)
175                 fz_throw(pdf_jsimp_ctx_cpp(imp), FZ_ERROR_GENERIC, "%s", err);
176 }
177 pdf_jsimp_obj *pdf_jsimp_call_method(pdf_jsimp *imp, pdf_jsimp_method *meth, void *jsctx, void *obj, int argc, pdf_jsimp_obj *args[])
178 {
179         fz_context *ctx = pdf_jsimp_ctx_cpp(imp);
180         pdf_jsimp_obj *res;
181
182         fz_try(ctx)
183         {
184                 res = meth(jsctx, obj, argc, args);
185         }
186         fz_catch(ctx)
187         {
188                 res = NULL;
189                 fz_warn(ctx, "%s", fz_caught_message(ctx));
190         }
191
192         return res;
193 }
194
195 pdf_jsimp_obj *pdf_jsimp_call_getter(pdf_jsimp *imp, pdf_jsimp_getter *get, void *jsctx, void *obj)
196 {
197         fz_context *ctx = pdf_jsimp_ctx_cpp(imp);
198         pdf_jsimp_obj *res;
199
200         fz_try(ctx)
201         {
202                 res = get(jsctx, obj);
203         }
204         fz_catch(ctx)
205         {
206                 res = NULL;
207                 fz_warn(ctx, "%s", fz_caught_message(ctx));
208         }
209
210         return res;
211 }
212
213 void pdf_jsimp_call_setter(pdf_jsimp *imp, pdf_jsimp_setter *set, void *jsctx, void *obj, pdf_jsimp_obj *val)
214 {
215         fz_context *ctx = pdf_jsimp_ctx_cpp(imp);
216
217         fz_try(ctx)
218         {
219                 set(jsctx, obj, val);
220         }
221         fz_catch(ctx)
222         {
223                 fz_warn(ctx, "%s", fz_caught_message(ctx));
224         }
225 }