home *** CD-ROM | disk | FTP | other *** search
/ Computer Club Elmshorn Atari PD / CCE_PD.iso / pc / 0600 / CCE_0636.ZIP / CCE_0636 / GEMLIB / GMLIBS30.ZOO / vdibind.h < prev    next >
C/C++ Source or Header  |  1993-05-21  |  17KB  |  469 lines

  1. #ifndef _VDIBIND_H
  2. #define _VDIBIND_H
  3.     
  4. #ifndef _COMPILER_H
  5. # include <compiler.h>
  6. #endif
  7.     
  8. #ifdef __cplusplus
  9. extern "C" {
  10. #endif
  11.  
  12. #ifndef _SIZE_T
  13. #  include <stddef.h>
  14. #endif
  15.  
  16. __EXTERN int     vswr_mode __PROTO((int handle, int mode));
  17. __EXTERN void     vs_color __PROTO((int handle, int index, int rgb[]));
  18. __EXTERN int     vsl_type __PROTO((int handle, int style));
  19. __EXTERN void     vsl_udsty __PROTO((int handle, int pat));
  20. __EXTERN int     vsl_width __PROTO((int handle, int width));
  21. __EXTERN int     vsl_color __PROTO((int handle, int index));
  22. __EXTERN void     vsl_ends __PROTO((int handle, int begstyle, int endstyle));
  23. __EXTERN int     vsm_type __PROTO((int handle, int symbol));
  24. __EXTERN void     vsm_height __PROTO((int handle, int height));
  25. __EXTERN int     vsm_color __PROTO((int handle, int index));
  26. __EXTERN int      vst_height __PROTO((int handle, int height, int *charw,
  27.                      int *charh, int *cellw, int *cellh));
  28. __EXTERN int     vst_point __PROTO((int handle, int point, int *charw,
  29.                     int *charh, int *cellw, int *cellh));
  30. __EXTERN int     vst_rotation __PROTO((int handle, int ang));
  31. __EXTERN int     vst_font __PROTO((int handle, int font));
  32. __EXTERN int     vst_color __PROTO((int handle, int index));
  33. __EXTERN int     vst_effects __PROTO((int handle, int effects));
  34. __EXTERN void     vst_alignment __PROTO((int handle, int hin, int vin,
  35.                     int *hout, int *vout)); 
  36. __EXTERN int     vsf_interior __PROTO((int handle, int style));
  37. __EXTERN int     vsf_fill __PROTO((int handle, int style));
  38. __EXTERN int     vsf_style __PROTO((int handle, int style));
  39. __EXTERN int     vsf_color __PROTO((int handle, int index));
  40. __EXTERN int     vsf_perimeter __PROTO((int handle, int vis));
  41. __EXTERN void     vsf_udpat __PROTO((int handle, int pat[], int planes));
  42.  
  43.  
  44. __EXTERN void     v_opnwk __PROTO((int work_in[], int *handle, int work_out[]));
  45. __EXTERN void     v_clswk __PROTO((int handle));
  46. __EXTERN void     v_opnvwk __PROTO((int work_in[], int *handle, int work_out[]));
  47. __EXTERN void     v_clsvwk __PROTO((int handle));
  48.  
  49.  
  50. __EXTERN void     v_clrwk __PROTO((int handle));
  51. __EXTERN void     v_updwk __PROTO((int handle));
  52. __EXTERN int     vst_load_fonts __PROTO((int handle, int select));
  53. __EXTERN void     vst_unload_fonts __PROTO((int handle, int select));
  54. __EXTERN void     vs_clip __PROTO((int handle, int clip_flag, int pxyarray[]));
  55.  
  56.  
  57. __EXTERN void     v_bar __PROTO((int handle, int pxyarray[]));
  58. __EXTERN void     v_arc __PROTO((int handle, int x, int y, int radius,
  59.                 int begang, int endang)); 
  60. __EXTERN void     v_pieslice __PROTO((int handle, int x, int y, int radius,
  61.                      int begang, int endang));
  62. __EXTERN void     v_circle __PROTO((int handle, int x, int y, int radius));
  63. __EXTERN void     v_ellarc __PROTO((int handle, int x, int y, int xrad,
  64.                    int yrad, int begang, int endang));
  65. __EXTERN void     v_ellpie __PROTO((int handle, int x, int y, int xrad,
  66.                    int yrad, int begang, int endang));
  67. __EXTERN void     v_ellipse __PROTO((int handle, int x, int y, int xrad, int yrad));
  68. __EXTERN void     v_rbox __PROTO((int handle, int pxyarray[]));
  69. __EXTERN void     v_rfbox __PROTO((int handle, int pxyarray[]));
  70. __EXTERN void     v_justified __PROTO((int handle, int x, int y, char *str,
  71.                       int len, int word_space, int char_space));
  72.  
  73. __EXTERN int     vsin_mode  __PROTO((int handle, int dev, int mode));
  74. __EXTERN void     vrq_locator __PROTO((int handle, int x, int y, int *xout,
  75.                       int *yout, int *term));  
  76. __EXTERN int     vsm_locator __PROTO((int handle, int x, int y, int *xout,
  77.                       int *yout, int *term));
  78.  
  79. __EXTERN void     vrq_valuator __PROTO((int handle, int in, int *out, int *term));
  80. __EXTERN void     vsm_valuator __PROTO((int handle, int in, int *out, int *term,
  81.                        int *status));
  82. __EXTERN void     vrq_choice __PROTO((int handle, int cin, int *cout));
  83. __EXTERN int     vsm_choice __PROTO((int handle, int *choice));
  84. __EXTERN void     vrq_string __PROTO((int handle, int len, int echo,
  85.                      int echoxy[], char *str));
  86. __EXTERN int     vsm_string __PROTO((int handle, int len, int echo,
  87.                      int echoxy[], char *str));
  88. __EXTERN void     vsc_form __PROTO((int handle, int form[]));
  89. __EXTERN void     vex_timv __PROTO((int handle, void *time_addr,
  90.                    void **otime_addr, int *time_conv)); 
  91. __EXTERN void     v_show_c __PROTO((int handle, int reset));
  92. __EXTERN void     v_hide_c __PROTO((int handle));
  93. __EXTERN void      vq_mouse __PROTO((int handle, int *pstatus, int *x, int *y));
  94. __EXTERN void     vex_butv __PROTO((int handle, void *new_p, void **old));
  95. __EXTERN void     vex_motv __PROTO((int handle, void *new_p, void **old));
  96. __EXTERN void     vex_curv __PROTO((int handle, void *new_p, void **old));
  97. __EXTERN void     vq_key_s __PROTO((int handle, int *state));
  98.  
  99.  
  100. __EXTERN void     vq_extnd __PROTO((int handle, int flag, int work_out[]));
  101. __EXTERN int     vq_color __PROTO((int handle, int index, int flag, int rgb[]));
  102. __EXTERN void     vql_attribute __PROTO((int handle, int atrib[]));
  103. __EXTERN void     vqm_attributes __PROTO((int handle, int atrib[]));
  104. __EXTERN void     vqf_attributes __PROTO((int handle, int atrib[]));
  105. __EXTERN void     vqt_attributes __PROTO((int handle, int atrib[]));
  106. __EXTERN void     vqt_extent __PROTO((int handle, char *str, int extent[]));
  107. __EXTERN int     vqt_width __PROTO((int handle, int chr, int *cw, int *ldelta,
  108.                     int *rdelta));
  109. __EXTERN int     vqt_name __PROTO((int handle, int element, char *name));
  110. __EXTERN void     vq_cellarray __PROTO((int handle, int pxyarray[], int row_len,
  111.                        int nrows, int *el_used, int *rows_used,
  112.                        int *status, int color[]));  
  113. __EXTERN void     vqin_mode __PROTO((int handle, int dev, int *mode));
  114. __EXTERN void     vqt_fontinfo __PROTO((int handle, int *minade, int *maxade,
  115.                        int distances[], int *maxwidth,
  116.                        int effects[]));  
  117. __EXTERN void     vqt_font_info __PROTO((int handle, int *minade, int *maxade,
  118.                     int distances[], int *maxwidth,
  119.                     int effects[]));  
  120.  
  121.  
  122. __EXTERN void     v_pline __PROTO((int handle, int count, int pxyarray[]));
  123. __EXTERN void     v_pmarker __PROTO((int handle, int count, int pxyarray[]));
  124. __EXTERN int     v_gtext __PROTO((int handle, int x, int y, char *str));
  125. __EXTERN void     v_fillarea __PROTO((int handle, int count, int pxyarray[]));
  126. __EXTERN void     v_cellarray __PROTO((int handle, int pxyarray[],
  127.                       int row_length, int elements, int nrows,
  128.                       int write_mode, int colarray[]));
  129. __EXTERN void     v_contourfill __PROTO((int handle, int x, int y, int index));
  130. __EXTERN void     vr_recfl __PROTO((int handle, int pxyarray[]));
  131.  
  132.  
  133. __EXTERN void     vro_cpyfm __PROTO((int handle, int mode, int pxyarray[],
  134.                     void *src, void *dst));
  135. __EXTERN void     vrt_cpyfm __PROTO((int handle, int mode, int pxyarray[],
  136.                     void *src, void *dst, int color[]));  
  137. __EXTERN void     vr_trnfm __PROTO((int handle, void *src, void *dst));
  138. __EXTERN void     v_get_pixel __PROTO((int handle, int x, int y, int *pel,
  139.                       int *indx)); 
  140.  
  141. /* Verbose headers. They do seem to leave out the fact that the character
  142.  * coordinates are from (1, 1) (top left corner..).
  143.  */
  144.  
  145. /*        vq_chcells
  146.  * Inquire addressable Alpha character cells.
  147.  * -1 for no cursor addressing (value for `*n_cols' ? )
  148.  */
  149. __EXTERN void vq_chcells __PROTO((int handle, int *n_rows, int *n_cols));
  150.  
  151. /*        v_exit_cur
  152.  * Exit alpha mode.
  153.  */
  154. __EXTERN void v_exit_cur __PROTO((int handle));
  155.  
  156.  
  157. /*        v_enter_cur
  158.  * Enter alpha mode
  159.  */
  160. __EXTERN void v_enter_cur __PROTO((int handle));
  161.  
  162. /*        v_curup
  163.  * Alpha cursor up (do nothing if at top).
  164.  */
  165. __EXTERN void v_curup __PROTO((int handle));
  166.  
  167. /*        v_curdown
  168.  * Alpha cursor down (do nothing if at bottom).
  169.  */
  170. __EXTERN void v_curdown __PROTO((int handle));
  171.  
  172. /*        v_curright
  173.  * Alpha cursor right (do nothing if at right edge).
  174.  */
  175. __EXTERN void v_curright __PROTO((int handle));
  176.  
  177. /*        v_curleft
  178.  * Alpha cursor left (do nothing if at left edge).
  179.  */
  180. __EXTERN void v_curleft __PROTO((int handle));
  181.  
  182. /*        v_curhome
  183.  * Alpha cursor home.
  184.  */
  185. __EXTERN void v_curhome __PROTO((int handle));
  186.  
  187. /*        v_eeos
  188.  * Erase to end of screen.
  189.  */
  190. __EXTERN void v_eeos __PROTO((int handle));
  191.  
  192. /*        v_eeol
  193.  * Erase to end of line.
  194.  */
  195. __EXTERN void v_eeol __PROTO((int handle));
  196.  
  197. /*        vs_curaddress
  198.  * Direct set position.
  199.  */
  200. __EXTERN void vs_curaddress __PROTO((int handle, int row, int col));
  201.  
  202. /*        v_curtext
  203.  * Output cursor addressable text (string `s').
  204.  */
  205. __EXTERN void v_curtext __PROTO((int handle, char *s));
  206.  
  207. /*        v_rvon
  208.  * Reverse video on.
  209.  */
  210. __EXTERN void v_rvon __PROTO((int handle));
  211.  
  212. /*        v_rvoff
  213.  * Reverse video off
  214.  */
  215. __EXTERN void v_rvoff __PROTO((int handle));
  216.  
  217. /*        vq_curaddress
  218.  * Inquire current cursor address.
  219.  */
  220. __EXTERN void vq_curaddress __PROTO((int handle, int *cur_row, int *cur_col));
  221.  
  222. /*
  223.  * more vdi esc bindings
  224.  */
  225. __EXTERN int  vq_tabstatus __PROTO((int handle));
  226. __EXTERN void v_hardcopy __PROTO((int handle));
  227. __EXTERN void v_dspcur  __PROTO((int handle, int x, int y));
  228. __EXTERN void v_rmcur __PROTO((int handle));
  229. __EXTERN void v_form_adv __PROTO((int handle));
  230. __EXTERN void v_output_window __PROTO((int handle, int *pxyarray));
  231. __EXTERN void v_clear_disp_list __PROTO((int handle));
  232. __EXTERN void v_bit_image __PROTO((int handle, const char *filename,
  233.             int aspect, int x_scale,
  234.             int y_scale, int h_align, int v_align,
  235.             int *pxyarray));
  236. __EXTERN void vq_scan __PROTO((int handle, int *g_slice, int *g_page,
  237.         int *a_slice, int *a_page, int *div_fac));
  238. __EXTERN void v_alpha_text __PROTO((int handle, const char *string));
  239. __EXTERN int  vs_palette __PROTO(( int handle, int palette));
  240. __EXTERN void v_sound __PROTO((int handle, int frequency, int duration));
  241. __EXTERN int  vs_mute __PROTO((int handle, int action));
  242. __EXTERN void vt_resolution __PROTO(( int handle, int xres, int yres,
  243.             int *xset, int *yset));
  244. __EXTERN void vt_axis __PROTO((int handle, int xres, int yres, int *xset,
  245.             int *yset));
  246. __EXTERN void vt_origin __PROTO((int handle, int xorigin, int yorigin));
  247. __EXTERN void vq_dimensions __PROTO((int handle, int *xdimension,
  248.         int *ydimension));
  249. __EXTERN void vt_alignment __PROTO((int handle, int dx, int dy));
  250. __EXTERN void vsp_film __PROTO((int handle, int index, int lightness));
  251. __EXTERN int  vqp_filmname __PROTO((int handle, int index, char *name));
  252. __EXTERN void vsc_expose __PROTO((int handle, int state));
  253. __EXTERN void v_meta_extents __PROTO((int handle, int min_x, int min_y,
  254.         int max_x, int max_y));
  255. __EXTERN void v_write_meta __PROTO((int handle, int num_intin, int *a_intin, int num_ptsin,
  256.             int *a_ptsin));
  257. __EXTERN void vm_pagesize __PROTO((int handle, int pgwidth, int pgheight));
  258. __EXTERN void vm_coords __PROTO((int handle, int llx, int lly, int urx,
  259.         int ury));
  260. __EXTERN void vm_filename __PROTO((int handle, const char *filename));
  261. __EXTERN void v_escape2000 __PROTO((int handle, int times));
  262.  
  263. /* is gdos present */
  264.  
  265. /* return values for vq_vgdos() inquiry */
  266. #define GDOS_NONE -2L        /* no GDOS installed */
  267. #define GDOS_FSM  0x5F46534DL    /* '_FSM' */
  268. #define GDOS_FNT  0x5F464E54L    /* '_FNT' */
  269.  
  270. #ifdef __GNUC_INLINE__
  271. #define vq_vgdos()                \
  272. ({                        \
  273.     register unsigned long ret __asm__("d0");    \
  274.     __asm__ volatile            \
  275.     ("                    \
  276.         movq    #-2,d0;            \
  277.         trap    #2 "            \
  278.     : "=r"(ret)                /* output */ \
  279.     :                    \
  280.     : "d0", "d1", "d2", "a0", "a1", "a2"    /* clobbered regs */ \
  281.     );                    \
  282.     ret;                    \
  283. })
  284. #else 
  285. __EXTERN unsigned long vq_gdos __PROTO((void));
  286. #endif /* __GNUC__ | !__NO_INLINE__ */    
  287.  
  288. /* FSM/SpeedGDOS bindings */
  289.  
  290. /* Get Character Bitmap Information. This call provides information to allow
  291.  * the caller to know the exact size and placement of a given character.  This
  292.  * information includes the character's x and y advance vectors, the x and y
  293.  * offsets, and the bitmap dimensions of the character. The advance vector
  294.  * represents the amount to add to the current point to place the following
  295.  * character.  The x and y offsets, when added to the current point, give the
  296.  * caller the location of the upper left hand corner of the bitmap.  The width
  297.  * and height of the bitmap are returned as 16 bit integers.  All other values
  298.  * are returned in fix31 representation.
  299.  */
  300. __EXTERN void v_getbitmap_info __PROTO((int handle, int ch,  long *advancex,
  301. long *advancey, long *xoffset, long *yoffset, int *width, int *height,
  302. short **bitmap));
  303.  
  304.  
  305. /*
  306.  * Inquire text extent, accounting for FSM text placement
  307.  */
  308. __EXTERN void vqt_f_extent __PROTO((int handle, const char *str, int extent[]));
  309.  
  310. /*
  311.  * Draw outline font text (accounts for fractional advances in rotated text)
  312.  */
  313. __EXTERN void v_ftext __PROTO((int handle, int x, int y, const char *str));
  314. __EXTERN void v_ftext_offset __PROTO((int handle, int x, int y,
  315.                                       const char *str, int *offset)); 
  316.  
  317. /*
  318.  * Generate an outline for character ch, and return the address of the outline.
  319.  */
  320. __EXTERN void v_getoutline __PROTO((int handle, int ch, int *xyarray,
  321.                                  char *bezarray, int maxverts, int *numverts));
  322.  
  323. /*
  324.  * Set scratch buffer allocation mode.
  325.  * mode=0: (default) account for FSM fonts when allocating scratch buffers
  326.  * mode=1: account only for BM fonts
  327.  * mode=2: allocate no scratch buffer
  328.  */
  329. __EXTERN void vst_scratch __PROTO((int handle, int mode));
  330.  
  331. /*
  332.  * Set FSM error mode.
  333.  * mode=1: (default) errors go to screen.
  334.  * mode=0: errors reported in error variable `errorvar'.
  335.  *   NOTICE: the pointer for errorvar is a pointer to short
  336.  *           (in 32 bit mode it would make a difference)
  337.  */
  338. __EXTERN void vst_error __PROTO((int handle, int mode, short *errorvar));
  339.  
  340. /*
  341.  * v_gtext with optional shadow attribute
  342.  */
  343. __EXTERN void    v_shtext __PROTO(( int wsid, int x, int y, const char *text,
  344.                   int color, int xshadow, int yshadow ));
  345.  
  346. /*
  347.  * Set character cell height by arbitrary points.
  348.  */
  349. __EXTERN int    vst_arbpt __PROTO((  int handle, int point, int *wchar,
  350.                    int *hchar, int *wcell, int *hcell ));
  351. __EXTERN long    vst_arbpt32 __PROTO((  int handle, long point, int *wchar,
  352.                    int *hchar, int *wcell, int *hcell ));
  353.  
  354. /*
  355.  * Inquire outline font text advance placement vector.
  356.  */
  357. __EXTERN void    vqt_advance __PROTO(( int handle, int ch, int *xadv,
  358.                      int *yadv, int *xrem, int *yrem)); 
  359. __EXTERN void   vqt_advance32 __PROTO((int handle, int ch, long *advx,
  360.                                        long *advy));
  361.  
  362. /*
  363.  * Inquire device status information.
  364.  */
  365. __EXTERN void    vqt_devinfo __PROTO(( int handle, int device, int *isdev,
  366.                      char *drivername ));
  367.  
  368. /*
  369.  * Save FSM cache to disk.
  370.  */
  371. __EXTERN int    v_savecache __PROTO(( int handle, char *filename ));
  372.  
  373. /*
  374.  * Load/merge FSM cache from disk.
  375.  */
  376. __EXTERN int    v_loadcache __PROTO(( int handle, char *filename, int mode ));
  377.  
  378. /*
  379.  * Flush FSM cache.
  380.  */
  381. __EXTERN int    v_flushcache __PROTO(( int handle ));
  382.  
  383. /*
  384.  * Set character cell width by arbitrary points.
  385.  */
  386. __EXTERN int    vst_setsize __PROTO(( int handle, int point, int *wchar,
  387.                      int *hchar, int *wcell, int *hcell ));
  388. __EXTERN long    vst_setsize32 __PROTO(( int handle, long point, int *wchar,
  389.                      int *hchar, int *wcell, int *hcell ));
  390.  
  391. /*
  392.  * Set FSM skew.
  393.  */
  394. __EXTERN int    vst_skew __PROTO(( int handle, int skew ));
  395.  
  396. /*
  397.  * Get FSM GASCII tables.
  398.  */
  399. __EXTERN void   vqt_get_table __PROTO((int handle, short **map));
  400. #if 0 /* old FSMgdos binding */
  401. __EXTERN void    vqt_get_tables __PROTO(( int handle, void **gascii,
  402.                     void **style ));
  403. #endif
  404.  
  405. /* 
  406.  * Get FSM cache size
  407.  */
  408. __EXTERN void    vqt_cachesize __PROTO(( int handle, int which_cache,
  409.                        size_t *size ));
  410. /*
  411.  * Set Character Mapping Mode
  412.  */
  413. __EXTERN void vst_charmap __PROTO((int handle, int mode));
  414.  
  415. /*
  416.  * Set Kerning Mode
  417.  */
  418. __EXTERN void vst_kern __PROTO((int handle, int tmode, int pmode, int *tracks,
  419.                                 int *pairs));
  420.  
  421. /*
  422.  * Inq Speedo Header
  423.  */
  424. __EXTERN void vqt_fontheader __PROTO((int handle, char *buffer, char
  425.                                       *pathname));
  426.  
  427. /*
  428.  * Inq track kerning info
  429.  */
  430. __EXTERN void vqt_trackkern __PROTO((int handle, long *x, long *y));
  431.  
  432. /*
  433.  * Inq pair kerning info
  434.  */
  435. __EXTERN void vqt_pairkern __PROTO((int handle, int ch1, int ch2, long *x, long
  436.                                     *y));
  437.  
  438. /*
  439.  * bezier curves stuff
  440.  */
  441. __EXTERN void v_set_app_buff __PROTO((void **buf_p, int size));
  442.  
  443. __EXTERN int v_bez __PROTO((int handle, int count,
  444.                      int *xyarr, char *bezarr,
  445.                  int extent[4], int *npts, int *nmvs));
  446. __EXTERN int v_bez_fill __PROTO((int handle, int count,
  447.                  int *xyarr, char *bezarr,
  448.                  int extent[4], int *npts, int *nmvs));
  449. __EXTERN int v_bez_qual __PROTO((int handle, int percent, int *actual));
  450.  
  451. #ifdef ALTERNATE
  452.  
  453. /* Use these #defines if you _really_ want to stick to DRI conventions */
  454.  
  455. __EXTERN int v_bez_con __PROTO((int handle, int onoff));
  456. #define v_bez_on(x)    (int)v_bez_con((x), 1)
  457. #define v_bez_off(x)    (void)v_bez_con((x), 0)
  458.  
  459. #else
  460. __EXTERN int v_bez_on __PROTO((int handle));
  461. __EXTERN void v_bez_off __PROTO((int handle));
  462. #endif /* ALTERNATE */
  463.  
  464. #ifdef __cplusplus
  465. }
  466. #endif
  467.  
  468. #endif /* _VDIBIND_H */
  469.