1 #ifndef __PSLIB_H__ 2 #define __PSLIB_H__ 3 4 #include <stdio.h> 5 6 #ifdef __cplusplus 7 extern "C" { 8 #endif 9 10 #ifdef WIN32 11 12 #define PSLIB_CALL __cdecl 13 14 #ifdef PSLIB_EXPORTS 15 #define PSLIB_API __declspec(dllexport) /* prepare a DLL (internal use only) */ 16 #elif defined(PSLIB_DLL) 17 #define PSLIB_API __declspec(dllimport) /* PSlib clients: import PSlib DLL */ 18 #else /* !PSLIB_DLL */ 19 #define PSLIB_API /* */ /* default: generate or use static library */ 20 21 #endif /* !PSLIB_DLL */ 22 23 #endif /* !WIN32 */ 24 25 #ifndef PSLIB_CALL 26 #define PSLIB_CALL 27 #endif 28 #ifndef PSLIB_API 29 #define PSLIB_API 30 #endif 31 32 #define PS_MemoryError 1 33 #define PS_IOError 2 34 #define PS_RuntimeError 3 35 #define PS_Warning 100 36 37 #define PS_LINECAP_BUTT 0 38 #define PS_LINECAP_ROUND 1 39 #define PS_LINECAP_SQUARED 2 40 41 #define PS_LINEJOIN_MITER 0 42 #define PS_LINEJOIN_ROUND 1 43 #define PS_LINEJOIN_BEVEL 2 44 45 #define PS_GOTO_NEXT_PAGE -1 46 #define PS_GOTO_PREV_PAGE -2 47 48 #define ps_true 1 49 #define ps_false 0 50 51 typedef int ps_bool; 52 53 typedef struct PSDoc_ PSDoc; 54 55 PSLIB_API int PSLIB_CALL 56 PS_get_majorversion(void); 57 58 PSLIB_API int PSLIB_CALL 59 PS_get_minorversion(void); 60 61 PSLIB_API int PSLIB_CALL 62 PS_get_subminorversion(void); 63 64 PSLIB_API void PSLIB_CALL 65 PS_boot(void); 66 67 PSLIB_API void PSLIB_CALL 68 PS_shutdown(void); 69 70 PSLIB_API void PSLIB_CALL 71 PS_set_info(PSDoc *p, const char *key, const char *val); 72 73 PSLIB_API PSDoc * PSLIB_CALL 74 PS_new(void); 75 76 PSLIB_API PSDoc * PSLIB_CALL 77 PS_new2(void (*errorhandler)(PSDoc *p, int type, const char *msg, void *data), 78 void* (*allocproc)(PSDoc *p, size_t size, const char *caller), 79 void* (*reallocproc)(PSDoc *p, void *mem, size_t size, const char *caller), 80 void (*freeproc)(PSDoc *p, void *mem), 81 void *opaque); 82 83 PSLIB_API int PSLIB_CALL 84 PS_open_fp(PSDoc *psdoc, FILE *fp); 85 86 PSLIB_API void * PSLIB_CALL 87 PS_get_opaque(PSDoc *psdoc); 88 89 PSLIB_API int PSLIB_CALL 90 PS_open_mem(PSDoc *p, size_t (*writeproc)(PSDoc *p, void *data, size_t size)); 91 92 PSLIB_API int PSLIB_CALL 93 PS_open_file(PSDoc *psdoc, const char *filename); 94 95 PSLIB_API void PSLIB_CALL 96 PS_close(PSDoc *psdoc); 97 98 PSLIB_API void PSLIB_CALL 99 PS_delete(PSDoc *psdoc); 100 101 PSLIB_API void PSLIB_CALL 102 PS_begin_page(PSDoc *psdoc, float width, float height); 103 104 PSLIB_API void PSLIB_CALL 105 PS_end_page(PSDoc *psdoc); 106 107 PSLIB_API void PSLIB_CALL 108 PS_set_parameter(PSDoc *psdoc, const char *name, const char *value); 109 110 PSLIB_API const char * PSLIB_CALL 111 PS_get_parameter(PSDoc *psdoc, const char *name, float modifier); 112 113 PSLIB_API void PSLIB_CALL 114 PS_set_value(PSDoc *psdoc, const char *name, float value); 115 116 PSLIB_API float PSLIB_CALL 117 PS_get_value(PSDoc *psdoc, const char *name, float modifier); 118 119 PSLIB_API void PSLIB_CALL 120 PS_list_values(PSDoc *psdoc); 121 122 PSLIB_API void PSLIB_CALL 123 PS_list_parameters(PSDoc *psdoc); 124 125 PSLIB_API void PSLIB_CALL 126 PS_list_resources(PSDoc *psdoc); 127 128 PSLIB_API void PSLIB_CALL 129 PS_set_text_pos(PSDoc *psdoc, float x, float y); 130 131 PSLIB_API void PSLIB_CALL 132 PS_setlinewidth(PSDoc *p, float width); 133 134 PSLIB_API void PSLIB_CALL 135 PS_setlinecap(PSDoc *p, int type); 136 137 PSLIB_API void PSLIB_CALL 138 PS_setlinejoin(PSDoc *p, int type); 139 140 PSLIB_API void PSLIB_CALL 141 PS_setmiterlimit(PSDoc *p, float value); 142 143 PSLIB_API void PSLIB_CALL 144 PS_setflat(PSDoc *p, float value); 145 146 PSLIB_API void PSLIB_CALL 147 PS_setoverprintmode(PSDoc *p, int mode); 148 149 PSLIB_API void PSLIB_CALL 150 PS_setsmoothness(PSDoc *p, float smoothness); 151 152 PSLIB_API void PSLIB_CALL 153 PS_setdash(PSDoc *p, float on, float off); 154 155 PSLIB_API void PSLIB_CALL 156 PS_setpolydash(PSDoc *p, float *arr, int length); 157 158 PSLIB_API void PSLIB_CALL 159 PS_curveto(PSDoc *psdoc, float x1, float y1, float x2, float y2, float x3, float y3); 160 161 PSLIB_API void PSLIB_CALL 162 PS_rect(PSDoc *psdoc, float x, float y, float width, float height); 163 164 PSLIB_API void PSLIB_CALL 165 PS_circle(PSDoc *psdoc, float x, float y, float radius); 166 167 PSLIB_API void PSLIB_CALL 168 PS_arc(PSDoc *psdoc, float x, float y, float radius, float alpha, float beta); 169 170 PSLIB_API void PSLIB_CALL 171 PS_arcn(PSDoc *psdoc, float x, float y, float radius, float alpha, float beta); 172 173 PSLIB_API void PSLIB_CALL 174 PS_clip(PSDoc *psdoc); 175 176 PSLIB_API void PSLIB_CALL 177 PS_setgray(PSDoc *psdoc, float gray); 178 179 PSLIB_API void PSLIB_CALL 180 PS_closepath(PSDoc *psdoc); 181 182 PSLIB_API void PSLIB_CALL 183 PS_closepath_stroke(PSDoc *psdoc); 184 185 PSLIB_API void PSLIB_CALL 186 PS_fill_stroke(PSDoc *psdoc); 187 188 PSLIB_API void PSLIB_CALL 189 PS_stroke(PSDoc *psdoc); 190 191 PSLIB_API void PSLIB_CALL 192 PS_fill(PSDoc *psdoc); 193 194 PSLIB_API void PSLIB_CALL 195 PS_save(PSDoc *psdoc); 196 197 PSLIB_API void PSLIB_CALL 198 PS_restore(PSDoc *psdoc); 199 200 PSLIB_API void PSLIB_CALL 201 PS_show(PSDoc *psdoc, const char *text); 202 203 PSLIB_API void PSLIB_CALL 204 PS_show2(PSDoc *psdoc, const char *text, int xlen); 205 206 PSLIB_API void PSLIB_CALL 207 PS_show_xy(PSDoc *psdoc, const char *text, float x, float y); 208 209 PSLIB_API void PSLIB_CALL 210 PS_show_xy2(PSDoc *psdoc, const char *text, int xlen, float x, float y); 211 212 PSLIB_API int PSLIB_CALL 213 PS_show_boxed(PSDoc *psdoc, const char *text, float left, float bottom, float width, float height, const char *hmode, const char *feature); 214 215 PSLIB_API void PSLIB_CALL 216 PS_continue_text(PSDoc *psdoc, const char *text); 217 218 PSLIB_API void PSLIB_CALL 219 PS_continue_text2(PSDoc *psdoc, const char *text, int len); 220 221 PSLIB_API void PSLIB_CALL 222 PS_setcolor(PSDoc *psdoc, const char *type, const char *colorspace, float c1, float c2, float c3, float c4); 223 224 PSLIB_API int PSLIB_CALL 225 PS_makespotcolor(PSDoc *psdoc, const char *name, int reserved); 226 227 PSLIB_API int PSLIB_CALL 228 PS_findfont(PSDoc *psdoc, const char *fontname, const char *encoding, int embed); 229 230 PSLIB_API float PSLIB_CALL 231 PS_stringwidth(PSDoc *psdoc, const char *text, int fontid, float size); 232 233 PSLIB_API float PSLIB_CALL 234 PS_stringwidth2(PSDoc *psdoc, const char *text, int xlen, int fontid, float size); 235 236 PSLIB_API float PSLIB_CALL 237 PS_string_geometry(PSDoc *psdoc, const char *text, int xlen, int fontid, float size, float *dimension); 238 239 PSLIB_API void PSLIB_CALL 240 PS_deletefont(PSDoc *psdoc, int fontid); 241 242 PSLIB_API void PSLIB_CALL 243 PS_setfont(PSDoc *psdoc, int fontid, float size); 244 245 PSLIB_API int PSLIB_CALL 246 PS_getfont(PSDoc *psdoc); 247 248 PSLIB_API void PSLIB_CALL 249 PS_moveto(PSDoc *psdoc, float x, float y); 250 251 PSLIB_API void PSLIB_CALL 252 PS_lineto(PSDoc *psdoc, float x, float y); 253 254 PSLIB_API void PSLIB_CALL 255 PS_rotate(PSDoc *psdoc, float x); 256 257 PSLIB_API void PSLIB_CALL 258 PS_translate(PSDoc *psdoc, float x, float y); 259 260 PSLIB_API void PSLIB_CALL 261 PS_scale(PSDoc *psdoc, float x, float y); 262 263 PSLIB_API const char * PSLIB_CALL 264 PS_get_buffer(PSDoc *psdoc, long *size); 265 266 PSLIB_API int PSLIB_CALL 267 PS_open_image(PSDoc *psdoc, const char *type, const char *source, const char *data, long length, int width, int height, int components, int bpc, const char *params); 268 269 PSLIB_API int PSLIB_CALL 270 PS_open_image_file(PSDoc *psdoc, const char *type, const char *filename, const char *stringparam, int intparam); 271 272 PSLIB_API void PSLIB_CALL 273 PS_place_image(PSDoc *psdoc, int imageid, float x, float y, float scale); 274 275 PSLIB_API void PSLIB_CALL 276 PS_close_image(PSDoc *psdoc, int imageid); 277 278 PSLIB_API void PSLIB_CALL 279 PS_add_weblink(PSDoc *psdoc, float llx, float lly, float urx, float ury, const char *url); 280 281 PSLIB_API void PSLIB_CALL 282 PS_add_pdflink(PSDoc *psdoc, float llx, float lly, float urx, float ury, const char *filename, int page, const char *dest); 283 284 PSLIB_API void PSLIB_CALL 285 PS_add_locallink(PSDoc *psdoc, float llx, float lly, float urx, float ury, const int page, const char *dest); 286 287 PSLIB_API void PSLIB_CALL 288 PS_add_launchlink(PSDoc *psdoc, float llx, float lly, float urx, float ury, const char *filename); 289 290 PSLIB_API int PSLIB_CALL 291 PS_add_bookmark(PSDoc *psdoc, const char *text, int parent, int open); 292 293 PSLIB_API void PSLIB_CALL 294 PS_add_note(PSDoc *psdoc, float llx, float lly, float urx, float ury, const char *contents, const char *title, const char *icon, int open); 295 296 PSLIB_API void PSLIB_CALL 297 PS_set_border_style(PSDoc *psdoc, const char *style, float width); 298 299 PSLIB_API void PSLIB_CALL 300 PS_set_border_color(PSDoc *psdoc, float red, float green, float blue); 301 302 PSLIB_API void PSLIB_CALL 303 PS_set_border_dash(PSDoc *psdoc, float black, float white); 304 305 PSLIB_API int PSLIB_CALL 306 PS_begin_template(PSDoc *psdoc, float width, float height); 307 308 PSLIB_API void PSLIB_CALL 309 PS_end_template(PSDoc *psdoc); 310 311 PSLIB_API int PSLIB_CALL 312 PS_begin_pattern(PSDoc *psdoc, float width, float height, float xstep, float ystep, int painttype); 313 314 PSLIB_API void PSLIB_CALL 315 PS_end_pattern(PSDoc *psdoc); 316 317 PSLIB_API void PSLIB_CALL 318 PS_shfill(PSDoc *psdoc, int shading); 319 320 PSLIB_API int PSLIB_CALL 321 PS_shading(PSDoc *psdoc, const char *shtype, float x0, float y0, float x1, float y1, float c1, float c2, float c3, float c4, const char *optlist); 322 323 PSLIB_API int PSLIB_CALL 324 PS_shading_pattern(PSDoc *psdoc, int shading, const char *optlist); 325 326 PSLIB_API int PSLIB_CALL 327 PS_create_gstate(PSDoc *psdoc, const char *optlist); 328 329 PSLIB_API int PSLIB_CALL 330 PS_hyphenate(PSDoc *psdoc, const char *text, char **hyphens); 331 332 PSLIB_API void PSLIB_CALL 333 PS_symbol(PSDoc *psdoc, unsigned char c); 334 335 PSLIB_API float PSLIB_CALL 336 PS_symbol_width(PSDoc *psdoc, unsigned char c, int fontid, float size); 337 338 PSLIB_API void PSLIB_CALL 339 PS_symbol_name(PSDoc *psdoc, unsigned char c, int fontid, char *name, int size); 340 341 PSLIB_API int PSLIB_CALL 342 PS_include_file(PSDoc *psdoc, const char *filename); 343 344 PSLIB_API int PSLIB_CALL 345 PS_begin_font(PSDoc *psdoc, const char *fontname, int reserverd, double a, double b, double c, double d, double e, double f, const char *optlist); 346 347 PSLIB_API void PSLIB_CALL 348 PS_end_font(PSDoc *psdoc); 349 350 PSLIB_API int PSLIB_CALL 351 PS_begin_glyph(PSDoc *psdoc, const char *glyphname, double wx, double llx, double lly, double urx, double ury); 352 353 PSLIB_API void PSLIB_CALL 354 PS_end_glyph(PSDoc *psdoc); 355 356 PSLIB_API void PSLIB_CALL 357 PS_add_kerning(PSDoc *psdoc, int fontid, const char *glyphname1, const char *glyphname2, int kern); 358 359 PSLIB_API void PSLIB_CALL 360 PS_add_ligature(PSDoc *psdoc, int fontid, const char *glyphname1, const char *glyphname2, const char *glyphname3); 361 362 PSLIB_API void PSLIB_CALL 363 PS_glyph_show(PSDoc *psdoc, const char *name); 364 365 PSLIB_API char** PSLIB_CALL 366 PS_glyph_list(PSDoc *psdoc, int fontid, char ***charlist, int *len); 367 368 PSLIB_API float PSLIB_CALL 369 PS_glyph_width(PSDoc *psdoc, const char *glyphname, int fontid, float size); 370 371 PSLIB_API void PSLIB_CALL 372 PS_free_glyph_list(PSDoc *psdoc, char **charlist, int len); 373 374 #ifdef __cplusplus 375 } 376 #endif 377 378 #endif 379