home *** CD-ROM | disk | FTP | other *** search
/ Vectronix 2 / VECTRONIX2.iso / FILES_07 / TURBOC_1.ZIP / INCLUDE / LINEA.H < prev    next >
C/C++ Source or Header  |  1990-03-02  |  14KB  |  273 lines

  1. /*      LINEA.H
  2.  
  3.         LineA Definitions
  4.  
  5.         Copyright (C) Borland International 1988
  6.         All Rights Reserved.
  7. */
  8.  
  9.  
  10. #if  !defined( __LINEA__ )
  11. #define __LINEA__
  12.  
  13. #if  !defined( __AES__ )
  14. #include <aes.h>                    /* for MFORM                    */
  15. #endif
  16.  
  17.  
  18. #define REPLACE 0                   /* set_wrt_mode()               */
  19. #define TRANS   1
  20. #define XOR     2
  21. #define INVERS  3
  22.  
  23. #define VDIFM 1                     /* sdb.form                     */
  24. #define XORFM -1
  25.  
  26.  
  27. typedef struct
  28. {
  29.     int xhot,                       /* X-Offset                     */
  30.         yhot,                       /* Y-Offset                     */
  31.         form,                       /* Format (1 = VDI, -1 = XOR)   */
  32.         bgcol,                      /* Hintergrundfarbe             */
  33.         fgcol,                      /* Vordergrundfarbe             */
  34.         image[32];                  /* Sprite-Image                 */
  35. } SDB;
  36.  
  37. typedef int SSB[10 + 4 * 64];
  38.  
  39. typedef int PATTERN[16];            /* Bei Bedarf vergrö₧ern        */
  40.  
  41. typedef struct fonthdr
  42. {
  43.     int id,                         /* Fontnummer                   */
  44.         size;                       /* Fontgrö₧e in Punkten         */
  45.     char facename[32];              /* Name                         */
  46.     int ade_lo,                     /* kleinster ASCII-Wert         */
  47.         ade_hi,                     /* grö₧ter ASCII-Wert           */
  48.         top_dist,                   /* Abstand Top <-> Baseline     */
  49.         asc_dist,                   /* Abstand Ascent <-> Baseline  */
  50.         hlf_dist,                   /* Abstand Half <-> Baseline    */
  51.         des_dist,                   /* Abstand Descent <-> Baseline */
  52.         bot_dist,                   /* Abstand Bottom <-> Baseline  */
  53.         wchr_wdt,                   /* maximale Zeichenbreite       */
  54.         wcel_wdt,                   /* maximale Zeichenzellenbreite */
  55.         lft_ofst,                   /* Offset links                 */
  56.         rgt_ofst,                   /* Offset rechts                */
  57.         thckning,                   /* Verbreiterungsfaktor für Bold*/
  58.         undrline,                   /* Dicke der Unterstreichung    */
  59.         lghtng_m,                   /* Maske für Light              */
  60.         skewng_m;                   /* Maske für Kursiv             */
  61.     struct
  62.     {
  63.         unsigned             :12;   /* Frei                         */
  64.         unsigned mono_spaced : 1;   /* Proportional/Monospaced      */
  65.         unsigned f68000      : 1;   /* 8086-/68000 Format           */
  66.         unsigned hot         : 1;   /* HOT verwenden                */
  67.         unsigned system      : 1;   /* Default system font          */
  68.     }   flags;
  69.     char *hz_ofst;                  /* Horizontal Offset Table      */
  70.     int *ch_ofst;                   /* Font-Offset-Tabelle          */
  71.     void *fnt_dta;                  /* Zeichensatz-Image            */
  72.     int frm_wdt,                    /* Breite des Font-Image        */
  73.         frm_hgt;                    /* Höhe des Fonts               */
  74.     struct fonthdr *next;           /* Nächster Font                */
  75.     unsigned font_seg;              /* ???                          */
  76. }   FONT_HDR;
  77.  
  78. typedef struct
  79. {
  80.     int v_planes,                   /* # Bitplanes (1, 2 od. 4)     */
  81.         v_lin_wr,                   /* # Bytes/Scanline             */
  82.         *contrl,
  83.         *intin,
  84.         *ptsin,                     /* Koordinaten-Eingabe          */
  85.         *intout,
  86.         *ptsout,                    /* Koordinaten-Ausgabe          */
  87.         fg_bp_1,                    /* Plane 0                      */
  88.         fg_bp_2,                    /* Plane 1                      */
  89.         fg_bp_3,                    /* Plane 2                      */
  90.         fg_bp_4,                    /* Plane 3                      */
  91.         lstlin;
  92.     unsigned ln_mask;               /* Linienmuster                 */
  93.     int wrt_mode,                   /* Schreib-Modus                */
  94.         x1, y1, x2, y2;             /* Koordinaten                  */
  95.     void *patptr;                   /* Füllmuster                   */
  96.     unsigned patmsk;                /* .. dazugehörige Maske        */
  97.     int multifill,                  /* Füllmuster für Planes        */
  98.         clip,                       /* Flag für Clipping            */
  99.         xmn_clip, ymn_clip,
  100.         xmx_clip, ymx_clip,         /* Clipping Rechteck            */
  101.                                     /* Rest für text_blt:           */
  102.         xacc_dda,
  103.         dda_inc,                    /* Vergrö₧erungsfaktor          */
  104.         t_sclsts,                   /* Vergrö₧erungsrichtung        */
  105.         mono_status,                /* Proportionalschrift          */
  106.         sourcex, sourcey,           /* Koordinaten im Font          */
  107.         destx, desty,               /* Bildschirmkoordinaten        */
  108.         delx, dely;                 /* Breite und Höhe des Zeichen  */
  109.     void *fbase;                    /* Start der Font-Daten         */
  110.     int fwidth,                     /* Breite des Fontimage         */
  111.         style;                      /* Schreibstil                  */
  112.     unsigned litemask,              /* Maske für Light              */
  113.              skewmask;              /* Maske für Kursiv             */
  114.     int weight,                     /* Breite bei Bold              */
  115.         r_off,                      /* Kursiv-Offset rechts         */
  116.         l_off,                      /* Kursiv-Offset links          */
  117.         scale,                      /* Vergrö₧erung ja/nein         */
  118.         chup,                       /* Rotationswinkel *10          */
  119.         text_fg;                    /* Textfarbe                    */
  120.     void *scrtchp;                  /* Buffer                       */
  121.     int scrpt2,                     /* Index in Buffer              */
  122.         text_bg,                    /* unbenutzt                    */
  123.         copy_tran,                  /* --                           */
  124.         (*fill_abort)( void );      /* Testet Seed Fill             */
  125. } LINEA;
  126.  
  127. typedef struct
  128. {
  129.     long reserved6;                 /* reserviert (-0x38e)          */
  130.     FONT_HDR *cur_font;             /* Zeiger auf Header akt. Font  */
  131.     int reserved5[23],              /* reserviert                   */
  132.         m_pos_hx,                   /* X-Koordinate Maus            */
  133.         m_pos_hy,                   /* Y-Koordinate Maus            */
  134.         m_planes,                   /* Zeichenmodus der Maus        */
  135.         m_cdb_bg,                   /* Maus Hintergrundfarbe        */
  136.         m_cdb_fg,                   /* Maus Vordergrundfarbe        */
  137.         mask_form[32],              /* Vordergrund und Maske        */
  138.         inq_tab[45],                /* wie vq_extnd()               */
  139.         dev_tab[45],                /* wie v_opnwk()                */
  140.         gcurx,                      /* X-Position Maus              */
  141.         gcury,                      /* Y-Position Maus              */
  142.         m_hid_ct,                   /* Anzahl der hide_mouse-calls  */
  143.         mouse_bt,                   /* Status der Mausknöpfe        */
  144.         req_col[3][16],             /* Interne Daten für vq_color() */
  145.         siz_tab[15],                /* wie v_opnwk()                */
  146.         reserved4[2];               /* reserviert                   */
  147.     void *cur_work;                 /* Attribute der akt. Workstn.  */
  148.     FONT_HDR *def_font;             /* Standard Systemzeichensatz   */
  149.     FONT_HDR *font_ring[4];         /* Zeichensatzlisten            */
  150.     int font_count,                 /* Anzahl der Zeichensätze      */
  151.         reserved3[45];              /* reserviert                   */
  152.     char cur_ms_stat,               /* Mausstatus                   */
  153.          reserved2;                 /* reserviert                   */
  154.     int v_hid_cnt,                  /* Anzahl der Hide_cursor-calls */
  155.         cur_x,                      /* X-Position Maus              */
  156.         cur_y;                      /* Y-Position Maus              */
  157.     char cur_flag,                  /* != 0: Maus neu zeichnen      */
  158.          mouse_flag;                /* != 0: Maus-Interrupt ein     */
  159.     long reserved1;                 /* reserviert                   */
  160.     int v_sav_xy[2],                /* gerettete X-Y-Koordinaten    */
  161.         save_len;                   /* Anzahl der Bildschirmzeilen  */
  162.     void *save_addr;                /* Erstes Byte im Bildspeicher  */
  163.     int save_stat;                  /* Dirty-Flag                   */
  164.     long save_area[4][16];          /* Buffer für Bild unter Maus   */
  165.     void (*user_tim)( void );       /* Timer-Interrupt-Vektor       */
  166.     void (*next_tim)( void );       /* alter Interrupt              */
  167.     void (*user_but)( void );       /* Maustasten-Vektor            */
  168.     void (*user_cur)( void );       /* Maus-Vektor                  */
  169.     void (*user_mot)( void );       /* Mausbewegungs-Vektor         */
  170.     int v_cel_ht,                   /* Zeichenhöhe                  */
  171.         v_cel_mx,                   /* maximale Cursorspalte        */
  172.         v_cel_my,                   /* maximale Cursorzeile         */
  173.         v_cel_wr,                   /* Characterzeilenbreite        */
  174.         v_col_bg,                   /* Hintergrundfarbe             */
  175.         v_col_fg;                   /* Vordergrundfarbe             */
  176.     void *v_cur_ad;                 /* Adresse der Cursorposition   */
  177.     int v_cur_off,                  /* Vertikaler Bildschirmoffset  */
  178.         v_cur_xy[2];                /* X-Y-Cursor                   */
  179.     char v_period,                  /* Blinkgeschwindigkeit         */
  180.          v_cur_ct;                  /* Zähler für Blinken           */
  181.     void *v_fnt_ad;                 /* Zeiger auf Font              */
  182.     int v_fnt_nd,                   /* grö₧ter ASCII-Wert           */
  183.         v_fnt_st,                   /* kleinster ASCII-Wert         */
  184.         v_fnt_wd,                   /* Breite des Fontimage in Byte */
  185.         v_rez_hz,                   /* Bildschirmbreite in Pixel    */
  186.         *v_off_ad,                  /* Font-Offset-Tabelle          */
  187.         reserved,                   /* Cursorflag/reserviert        */
  188.         v_rez_vt,                   /* Bildschirmhöhe in Pixel      */
  189.         bytes_lin;                  /* Bytes pro Pixelzeile         */
  190. }   VDIESC;
  191.  
  192. typedef struct
  193. {
  194.     int b_wd,                       /* Breite des Blocks in Pixeln  */
  195.         b_ht,                       /* Höhe des Blocks in Pixeln    */
  196.         plane_ct,                   /* Anzahl der Farbplanes        */
  197.         fg_col,                     /* Vordergrundfarbe             */
  198.         bg_col;                     /* Hintergrundfarbe             */
  199.     char op_tab[4];                 /* Verknüpfung (für jede Plane) */
  200.     int s_xmin,                     /* X-Quellraster                */
  201.         s_ymin;                     /* Y-Quellraster                */
  202.     void *s_form;                   /* Adresse des Quellrasters     */
  203.     int s_nxwd,                     /* Offset zum nächsten Wort     */
  204.         s_nxln,                     /* Breite des Quellrasters      */
  205.         s_nxpl,                     /* Offset zur nächsten Plane    */
  206.         d_xmin,                     /* X-Zielraster                 */
  207.         d_ymin;                     /* Y-Zielraster                 */
  208.     void *d_form;                   /* Adresse des Zielrasters      */
  209.     int d_nxwd,                     /* Offset zum nächsten Wort     */
  210.         d_nxln,                     /* Breite des Quellrasters      */
  211.         d_nxpl;                     /* Offset zur nächsten Plane    */
  212.     void *p_addr;                   /* 16-Bit-Masken zum Undieren   */
  213.     int p_nxln,                     /* Breite der Maske in Bytes    */
  214.         p_nxpl,                     /* Offset zur nächsten Plane    */
  215.         p_mask;                     /* Höhe der Maske in Zeilen     */
  216.     char filler[24];                /* Interner Buffer              */
  217. }   BITBLT;
  218.  
  219. typedef struct
  220. {
  221.     FONT_HDR *font[3];
  222. } FONTS;
  223.  
  224. typedef struct
  225. {   
  226.     int (*funp[16])( void );
  227. } LINEA_FUNP;
  228.  
  229.  
  230. void linea_init( void );
  231. void put_pixel( int x, int y, int color );
  232. int  get_pixel( int x, int y );
  233. void draw_line(int x1, int y1, int x2, int y2);
  234.         /* set_fg_bp(), set_ln_mask(), set_wrt_mode() */
  235. void horizontal_line( int x1, int y1, int x2 );
  236.         /* set_fg_bp(), set_wrt_mode(), set_pattern() */
  237. void filled_rect( int x1, int y1, int x2, int y2 );
  238.         /* set_fg_bp(), set_wrt_mode(), set_pattern(), set_clipping() */
  239. void filled_polygon( int *xy, int count );
  240.         /* set_fg_bp(), set_wrt_mode(), set_pattern(), set_clipping() */
  241. void bit_blt(BITBLT *bitblt);
  242. void text_blt( int x, int y, unsigned char c );
  243.         /* set_txtblt() */
  244. void show_mouse( int flag );
  245. void hide_mouse( void );
  246. void transform_mouse( MFORM *mform );
  247. void undraw_sprite( SSB *ssb );
  248. void draw_sprite( int x, int y, SDB *sdb, SSB *ssb );
  249. void copy_raster( void );                   /* 14, COPY RASTER FORM */
  250. void seed_fill( void );                     /* 15, SEED FILL        */
  251.         /* WARNING: 14 & 15 are NOT supported ! */
  252.  
  253. void set_fg_bp( int auswahl );
  254. void set_ln_mask( int mask );
  255. void set_wrt_mode( int modus );
  256. void set_pattern( int *pattern, int mask, int multifill );
  257. void set_clip( int x1, int y1, int x2, int y2, int modus );
  258. void set_text_blt( FONT_HDR *font, int scale, int style, int chup,
  259.                    int text_fg, int text_bg );
  260.  
  261. void draw_circle( int x, int y, int radius, int color );
  262. void print_string( int x, int y, int xoff, char *string );
  263.  
  264.  
  265. extern LINEA *Linea;
  266. extern VDIESC *Vdiesc;
  267. extern FONTS *Fonts;
  268. extern LINEA_FUNP *Linea_funp;
  269.  
  270. #endif
  271.  
  272. /**************************************************************************/
  273.