home *** CD-ROM | disk | FTP | other *** search
/ Turbo Toolbox / Turbo_Toolbox.iso / qc25 / include / graph.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-07-25  |  15.5 KB  |  429 lines

  1. /***
  2. *graph.h - Konstanten-, Funktions- und Makro-Deklarationen für Grafik-Bibliothek
  3. *
  4. *   Copyright (c) 1987 - 1990, Microsoft Corporation. Alle Rechte vorbehalten.
  5. *
  6. * Zweck:
  7. *   Diese Datei enthält die Deklarationen der Grafik-Bibliotheksfunktionen
  8. *   und der damit benutzten Strukturen und manifesten Konstanten.*
  9. *
  10. ***/
  11.  
  12.  
  13. /* Erzwingt das Packen von Worten, um mögliches Überschreiben von -Zp zu vermeiden */
  14. #pragma pack(2)
  15.  
  16. /* Benutzer gegenüber sichtbare Deklarationen für Quick-C Grafikbibliothek */
  17.  
  18. #ifndef _VIDEOCONFIG_DEFINED
  19. /* Benutzer gegenüber sichtbare Struktur für _getvideoconfig() */
  20. struct videoconfig {
  21.     short numxpixels;    /* Anzahl der Bildpunkte auf X-Achse */
  22.     short numypixels;    /* Anzahl der Bildpunkte auf Y-Achse */
  23.     short numtextcols;    /* Anzahl der verfügbaren Textspalten */
  24.     short numtextrows;    /* Anzahl der verfügbaren Textreihen */
  25.     short numcolors;    /* Anzahl der tatsächlichen Farben */
  26.     short bitsperpixel;    /* Anzahl der Bits pro Bildpunkt */
  27.     short numvideopages;    /* Anzahl der verfügbaren Videoseiten */
  28.     short mode;        /* Gegenwärtiger Videomodus */
  29.     short adapter;        /* Eingeschalteter Videoadapter */
  30.     short monitor;        /* Eingeschalteter Monitor */
  31.     short memory;        /* Videospeicher des Adapters in KByte */
  32. };
  33. #define _VIDEOCONFIG_DEFINED
  34. #endif
  35.  
  36.  
  37. #ifndef _XYCOORD_DEFINED
  38. /* Rückgabewert von _setvieworg(), etc. */
  39. struct xycoord {
  40.     short xcoord;
  41.     short ycoord;
  42. };
  43. #define _XYCOORD_DEFINED
  44. #endif
  45.  
  46.  
  47. /* Struktur für Textposition */
  48. #ifndef _RCCOORD_DEFINED
  49. struct rccoord {
  50.     short row;
  51.     short col;
  52. };
  53. #define _RCCOORD_DEFINED
  54. #endif
  55.  
  56.  
  57.  
  58. /* Fehlerbehandlung */
  59. short _far _cdecl _grstatus(void);
  60.  
  61. /* Information zum Fehlerstatus zurückgegeben durch Funktion _grstatus() */
  62.  
  63. /* erfolgreich */
  64. #define    _GROK                        0
  65.  
  66. /* fehlerhaft */
  67. #define _GRERROR                    (-1)
  68. #define    _GRMODENOTSUPPORTED        (-2)
  69. #define    _GRNOTINPROPERMODE          (-3)
  70. #define _GRINVALIDPARAMETER         (-4)
  71. #define    _GRFONTFILENOTFOUND         (-5)
  72. #define    _GRINVALIDFONTFILE          (-6)
  73. #define _GRCORRUPTEDFONTFILE        (-7)
  74. #define _GRINSUFFICIENTMEMORY       (-8)
  75. #define _GRINVALIDIMAGEBUFFER       (-9)
  76.  
  77. /* Warnungen */
  78. #define _GRNOOUTPUT                  1
  79. #define _GRCLIPPED                   2
  80. #define _GRPARAMETERALTERED          3
  81.  
  82.  
  83. /* SETUP AND KONFIGURATION */
  84.  
  85. short _far _cdecl _setvideomode(short);
  86. short _far _cdecl _setvideomoderows(short,short); /* übergibt Reihen; 0 bei Fehler */
  87.  
  88. /* Argumente für _setvideomode() */
  89. #define _MAXRESMODE    (-3)    /* Grafikmodus mit höchster Auflösung */
  90. #define _MAXCOLORMODE    (-2)    /* Grafikmodus mit maximaler Farbenanzahl */
  91. #define _DEFAULTMODE    (-1)    /* Bildschirm auf urspr. Modus rücksetzen */
  92. #define _TEXTBW40    0    /* 40-spaltiger Text, 16 Grautöne */
  93. #define _TEXTC40    1    /* 40-spaltiger Text, 16/8 Farben */
  94. #define _TEXTBW80    2    /* 80-spaltiger Text, 16 Grautöne */
  95. #define _TEXTC80    3    /* 80-spaltiger Text, 16/8 Farben */
  96. #define _MRES4COLOR    4    /* 320 x 200, 4 Farben */
  97. #define _MRESNOCOLOR    5    /* 20 x 200, 4 Grautöne */
  98. #define _HRESBW        6    /* 640 x 200, S-W */
  99. #define _TEXTMONO    7    /* 80-spaltiger Text, S-W */
  100. #define _HERCMONO    8    /* 720 x 348, S-W für HGC */
  101. #define _MRES16COLOR    13    /* 320 x 200, 16 Farben */
  102. #define _HRES16COLOR    14    /* 640 x 200, 16 Farben */
  103. #define _ERESNOCOLOR    15    /* 640 x 350, S-W */
  104. #define _ERESCOLOR    16    /* 640 x 350, 4 oder 16 Farben */
  105. #define _VRES2COLOR    17    /* 640 x 480, S-W */
  106. #define _VRES16COLOR    18    /* 640 x 480, 16 Farben */
  107. #define _MRES256COLOR    19    /* 320 x 200, 256 Farben */
  108. #define _ORESCOLOR    64    /* 640 x 400, 1 von 16 Farben (Olivetti) */
  109.  
  110. short _far _cdecl _setactivepage(short);
  111. short _far _cdecl _setvisualpage(short);
  112. short _far _cdecl _getactivepage(void);
  113. short _far _cdecl _getvisualpage(void);
  114.  
  115. /* Adapterwerte für videoconfig *
  116.  * Über diese manifesten Konstanten läßt sich der aktive Adaptertyp feststellen
  117.  * und zwar durch einfachen Vergleich oder den bitweisen-UND-Operator (&)  */
  118. #define _MDPA        0x0001    /* Monochrom-Grafikadapter          (MDPA) */
  119. #define _CGA        0x0002    /* Farb-Grafikadapter          (CGA)  */
  120. #define _EGA        0x0004    /* Erweiterter Grafikadapter          (EGA)  */
  121. #define _VGA        0x0008    /* Video Graphics Array              (VGA)  */
  122. #define _MCGA        0x0010    /* Mehrfarben-Grafikadapter          (MCGA) */
  123. #define _HGC        0x0020    /* Hercules-Grafik          (HGC)  */
  124. #define _OCGA        0x0042    /* Olivetti Farb-Grafikadapter    (OCGA) */
  125. #define _OEGA        0x0044    /* Olivetti Erweiterter Grafikadapter (OEGA) */
  126. #define _OVGA        0x0048    /* Olivetti Video Graphics Array      (OVGA) */
  127.  
  128. /* Monitorwerte für videoconfig */
  129. /* Über diese manifesten Konstanten läßt sich der Typ des Monitors feststellen, 
  130.  * und zwar durch einfachen Vergleich oder den bitweisen-UND-Operator (&)  */
  131. #define _MONO        0x0001    /* Monochrom */
  132. #define _COLOR        0x0002    /* Farb (oder EGA-Emulation von Farbe) */
  133. #define _ENHCOLOR    0x0004    /* Erweiterte Farbe */
  134. #define _ANALOGMONO    0x0008    /* Nur Analog-Monochrom */
  135. #define _ANALOGCOLOR    0x0010    /* Nur Analog-Farbe */
  136. #define _ANALOG        0x0018    /* Analog Monochrom- und Farbmodi */
  137.  
  138. struct videoconfig _far * _far _cdecl _getvideoconfig(struct videoconfig _far *);
  139.  
  140.  
  141.  
  142. /* KOORDINATENSYSTEME */
  143.  
  144. struct xycoord _far _cdecl _setvieworg(short, short);
  145. #define _setlogorg _setvieworg        /* veraltet */
  146.  
  147. struct xycoord _far _cdecl _getviewcoord(short, short);
  148. #define _getlogcoord _getviewcoord    /* veraltet */
  149.  
  150. struct xycoord _far _cdecl _getphyscoord(short, short);
  151.  
  152. void _far _cdecl _setcliprgn(short, short, short, short);
  153. void _far _cdecl _setviewport(short, short, short, short);
  154.  
  155.  
  156. /* AUSGABE-ROUTINEN */
  157.  
  158. /* Zum Steuern der Parameter für Recheck, Ellipse und Kreisdiagramm */
  159. #define _GBORDER    2    /* Nur Umriß zeichnen */
  160. #define _GFILLINTERIOR    3    /* mit gegenwärtiger Füllmaske füllen */
  161.  
  162. /* Parameter für _clearscreen */
  163. #define _GCLEARSCREEN    0
  164. #define _GVIEWPORT    1
  165. #define _GWINDOW    2
  166.  
  167. void _far _cdecl _clearscreen(short);
  168.  
  169. struct xycoord _far _cdecl _moveto(short, short);
  170. struct xycoord _far _cdecl _getcurrentposition(void);
  171.  
  172. short _far _cdecl _lineto(short, short);
  173. short _far _cdecl _rectangle(short, short, short, short, short);
  174. short _far _cdecl _polygon(short, const struct xycoord _far *, short);
  175. short _far _cdecl _arc(short, short, short, short, short, short, short, short);
  176. short _far _cdecl _ellipse(short, short, short, short, short);
  177. short _far _cdecl _pie(short, short, short, short, short, short, short, short, short);
  178.  
  179. short _far _cdecl _getarcinfo(struct xycoord _far *, struct xycoord _far *, struct xycoord _far *);
  180.  
  181. short _far _cdecl _setpixel(short, short);
  182. short _far _cdecl _getpixel(short, short);
  183. short _far _cdecl _floodfill(short, short, short);
  184.  
  185.  
  186. /* STIFTFARBE, LINIENART, FÜLLMUSTER */
  187.  
  188. short _far _cdecl _setcolor(short);
  189. short _far _cdecl _getcolor(void);
  190.  
  191. void _far _cdecl _setlinestyle(unsigned short);
  192. unsigned short _far _cdecl _getlinestyle(void);
  193.  
  194. short _far _cdecl _setwritemode(short);
  195. short _far _cdecl _getwritemode(void);
  196.  
  197. void _far _cdecl _setfillmask(const unsigned char _far *);
  198. unsigned char _far * _far _cdecl _getfillmask(unsigned char _far *);
  199.  
  200. /* FARBAUSWAHL */
  201.  
  202. long _far _cdecl _setbkcolor(long);
  203. long _far _cdecl _getbkcolor(void);
  204.  
  205. long _far _cdecl _remappalette(short, long);
  206. short _far _cdecl _remapallpalette(const long _far *);
  207. short _far _cdecl _selectpalette(short);
  208.  
  209.  
  210. /* TEXT */
  211. /* Parameter für _displaycursor */
  212. #define _GCURSOROFF    0
  213. #define _GCURSORON    1
  214.  
  215. /* Parameter für _wrapon */
  216. #define _GWRAPOFF    0
  217. #define _GWRAPON    1
  218.  
  219.  
  220. /* Richtungs-Parameter für _scrolltextwindow */
  221. #define _GSCROLLUP    1
  222. #define _GSCROLLDOWN    (-1)
  223.  
  224. /* Anforderung der maximalen Zeilenanzahl in  _settextrows und _setvideomoderows */
  225. #define _MAXTEXTROWS    (-1)
  226.  
  227. short _far _cdecl _settextrows(short); /* Ergibt Anzahl der Zeilen; 0 bei Fehler */
  228. void _far _cdecl _settextwindow(short, short, short, short);
  229. void _far _cdecl _gettextwindow(short _far *, short _far *, short _far *, short _far *);
  230. void _far _cdecl _scrolltextwindow(short);
  231. void _far _cdecl _outmem(const unsigned char _far *, short);
  232. void _far _cdecl _outtext(const unsigned char _far *);
  233. short _far _cdecl _wrapon(short);
  234.  
  235. short _far _cdecl _displaycursor(short);
  236. short _far _cdecl _settextcursor(short);
  237. short _far _cdecl _gettextcursor(void);
  238.  
  239. struct rccoord _far _cdecl _settextposition(short, short);
  240. struct rccoord _far _cdecl _gettextposition(void);
  241.  
  242. short _far _cdecl _settextcolor(short);
  243. short _far _cdecl _gettextcolor(void);
  244.  
  245.  
  246. /* BILDSCHIRM-BILDMANIPULATION */
  247.  
  248. void _far _cdecl _getimage(short, short, short, short, char _huge *);
  249. void _far _cdecl _putimage(short, short, char _huge *, short);
  250. long _far _cdecl _imagesize(short, short, short, short);
  251.  
  252. /* Aktionsattirbute für _putimage() und _setwritemode() */
  253. #define _GPSET        3
  254. #define _GPRESET    2
  255. #define _GAND        1
  256. #define _GOR        0
  257. #define _GXOR        4
  258.  
  259.  
  260. /* Farbwerte werden im Grafikmouds mit _setbkcolor und auch mit 
  261.    _remappalette und _remapallpalette verwendet. Auch als Farbpaletten bekannt.
  262.    Nicht mit den Farbindizes verwechseln (auch Farbattribute genannt).  */
  263.  
  264. /* Universal-Farbwerte (für alle Farbmodi): */
  265. #define _BLACK        0x000000L
  266. #define _BLUE        0x2a0000L
  267. #define _GREEN        0x002a00L
  268. #define _CYAN        0x2a2a00L
  269. #define _RED        0x00002aL
  270. #define _MAGENTA    0x2a002aL
  271. #define _BROWN        0x00152aL
  272. #define _WHITE        0x2a2a2aL
  273. #define _GRAY        0x151515L
  274. #define _LIGHTBLUE    0x3F1515L
  275. #define _LIGHTGREEN    0x153f15L
  276. #define _LIGHTCYAN    0x3f3f15L
  277. #define _LIGHTRED    0x15153fL
  278. #define _LIGHTMAGENTA    0x3f153fL
  279. #define _YELLOW        0x153f3fL
  280. #define _BRIGHTWHITE    0x3f3f3fL
  281.  
  282. /* die folgende Farbe ist veraltet und wird nur aus Kompatibiltätsgründen
  283.    aufgeführt */
  284. #define _LIGHTYELLOW    _YELLOW
  285.  
  286. /* Monochrom-Farbwerte F (_ERESNOCOLOR): */
  287. #define _MODEFOFF    0L
  288. #define _MODEFOFFTOON    1L
  289. #define _MODEFOFFTOHI    2L
  290. #define _MODEFONTOOFF    3L
  291. #define _MODEFON    4L
  292. #define _MODEFONTOHI    5L
  293. #define _MODEFHITOOFF    6L
  294. #define _MODEFHITOON    7L
  295. #define _MODEFHI    8L
  296.  
  297. /* Monochrom-7 Farbwerte (_TEXTMONO): */
  298. #define _MODE7OFF    0L
  299. #define _MODE7ON    1L
  300. #define _MODE7HI    2L
  301.  
  302.  
  303. /* Warnung:  die nachfolgenden '_xy'-Funktionen sind undokumentiert.
  304.    In zukünftigen Versionen werden sie eventuell unterstützt. */
  305. struct xycoord _far _cdecl _moveto_xy(struct xycoord);
  306. short _far _cdecl _lineto_xy(struct xycoord);
  307. short _far _cdecl _rectangle_xy(short,struct xycoord,struct xycoord);
  308. short _far _cdecl _arc_xy(struct xycoord, struct xycoord, struct xycoord, struct xycoord);
  309. short _far _cdecl _ellipse_xy(short, struct xycoord, struct xycoord);
  310. short _far _cdecl _pie_xy(short, struct xycoord, struct xycoord, struct xycoord, struct xycoord);
  311. short _far _cdecl _getpixel_xy(struct xycoord);
  312. short _far _cdecl _setpixel_xy(struct xycoord);
  313. short _far _cdecl _floodfill_xy(struct xycoord, short);
  314. void _far _cdecl _getimage_xy(struct xycoord,struct xycoord, char _huge *);
  315. long _far _cdecl _imagesize_xy(struct xycoord,struct xycoord);
  316. void _far _cdecl _putimage_xy(struct xycoord, char _huge *, short);
  317.  
  318.  
  319. /* FENSTER-KOORDINATENSYSTEM */
  320.  
  321. #ifndef _WXYCOORD_DEFINED
  322. /* Struktur für Fensterkoordiantenpaar */
  323. struct _wxycoord {
  324.     double wx;    /* x-Koordinate */
  325.     double wy;    /* y-Koordinate */
  326.     };
  327. #define _WXYCOORD_DEFINED
  328. #endif
  329.  
  330.  
  331. /* Fenster Reel-Koordinaten definieren - ergibt bei Erfolg Wert ungleich Null */
  332. short _far _cdecl _setwindow(short,double,double,double,double);
  333.  
  334. /* von Einsichtrahmen- zu Fenster-Koordinaten umwandeln */
  335. struct _wxycoord _far _cdecl _getwindowcoord(short,short);
  336. struct _wxycoord _far _cdecl _getwindowcoord_xy(struct xycoord);
  337.  
  338. /* von Fenster- zu Einsichtrahmen-Koordinaten umwandeln */
  339. struct xycoord _far _cdecl _getviewcoord_w(double,double);
  340. struct xycoord _far _cdecl _getviewcoord_wxy(const struct _wxycoord _far *);
  341.  
  342. /* ergibt Fensterkkoordinaten der gegenwärtigen Grafik-Ausgabeposition
  343.  * als _wxycoord-Struktur. Besitzt kein Fehlerergebnis. */
  344. struct _wxycoord _far _cdecl _getcurrentposition_w(void);
  345.  
  346.  
  347. /* Fensterkoordinaten-Einsteigepunkt für Grafik-Ausgaberoutinen */
  348.  
  349. /*    ergibt Wert ungleich Null, wenn erfolgreich, sonst 0    */
  350. short _far _cdecl _arc_w(double, double, double, double, double, double, double, double);
  351. short _far _cdecl _arc_wxy(const struct _wxycoord _far *, const struct _wxycoord _far *, const struct _wxycoord _far *, const struct _wxycoord _far *);
  352.  
  353. /*    ergibt Wert ungleich Null, wenn erfolgreich, sonst 0    */
  354. short _far _cdecl _ellipse_w(short, double, double, double, double);
  355. short _far _cdecl _ellipse_wxy(short, const struct _wxycoord _far *, const struct _wxycoord _far *);
  356.  
  357. /*    ergibt Wert ungleich Null, wenn erfolgreich, sonst 0    */
  358. short _far _cdecl _floodfill_w(double, double, short);
  359.  
  360. /*    ergibt Pixel-Wert an angegebenen Punkt; -1 wenn nicht erfolgreich */
  361. short _far _cdecl _getpixel_w(double, double);
  362.  
  363. /*    ergibt Wert ungleich Null, wenn erfolgreich, sonst 0    */
  364. short _far _cdecl _lineto_w(double, double);
  365.  
  366. /*    übergibt die Sicht-Koordiante der vorherigen Ausgabe-
  367.     position als eine _xycoord Struktur; bei Fehler keine Rückgabe */
  368. struct _wxycoord _far _cdecl _moveto_w(double, double);
  369.  
  370. /*    ergibt Wert ungleich Null, wenn erfolgreich, sonst 0    */
  371. short _far _cdecl _pie_w(short, double, double, double, double, double, double, double, double);
  372. short _far _cdecl _pie_wxy(short, const struct _wxycoord _far *, const struct _wxycoord _far *, const struct _wxycoord _far *, const struct _wxycoord _far *);
  373.  
  374. /*    ergibt Wert ungleich Null, wenn erfolgreich, sonst 0    */
  375. short _far _cdecl _rectangle_w(short, double, double, double, double);
  376. short _far _cdecl _rectangle_wxy(short, const struct _wxycoord _far *, const struct _wxycoord _far *);
  377.  
  378. /*    ergibt Wert ungleich Null, wenn erfolgreich, sonst 0    */
  379. short _far _cdecl _polygon_w(short, const double _far *, short);
  380. short _far _cdecl _polygon_wxy(short, const struct _wxycoord _far *, short);
  381.  
  382. /*    ergibt die vorige Farbe; bei Versagen -1 */
  383. short _far _cdecl _setpixel_w(double, double);
  384.  
  385.  
  386. /* Fensterkoordinaten-Abbildroutinen */
  387.  
  388. /*    kein Rückgabewert */
  389. void _far _cdecl _getimage_w(double, double, double, double, char _huge *);
  390. void _far _cdecl _getimage_wxy(const struct _wxycoord _far *, const struct _wxycoord _far *, char _huge *);
  391.  
  392. /*    ergibt den nötigen Speicherplatz für Abbild in Bytes */
  393. long _far _cdecl _imagesize_w(double, double, double, double);
  394. long _far _cdecl _imagesize_wxy(const struct _wxycoord _far *, const struct _wxycoord _far *);
  395.  
  396. /*    kein Rückgabewert */
  397. void _far _cdecl _putimage_w(double, double ,char _huge * ,short);
  398.  
  399.  
  400. /* Schriftsätze */
  401.  
  402. #ifndef _FONTINFO_DEFINED
  403. /* Struktur für _getfontinfo() */
  404. struct _fontinfo {
  405.     int    type;        /* b0 gesetzt = Vektor, gelöscht = Bitabbild    */
  406.     int    ascent;        /* Bildpunktverteilung von oben bis Grundlinie    */
  407.     int    pixwidth;    /* Zeichenbreite in Bildpunkten, 0=proportional    */
  408.     int    pixheight;    /* Zeichenhöhe in Bildpunkten        */
  409.     int    avgwidth;    /* Durchschnittl. Zeichenbreite in Bildpunkten    */
  410.     char    filename[81];    /* Dateinamen einschl. Pfadbestimmung    */
  411.     char    facename[32];    /* Schriftsatz-Name                */
  412. };
  413. #define _FONTINFO_DEFINED
  414. #endif
  415.  
  416.  
  417. /* Schriftsatz-Funktionsprototypen */
  418. short    _far _cdecl    _registerfonts( const unsigned char _far *);
  419. void    _far _cdecl    _unregisterfonts( void );
  420. short    _far _cdecl    _setfont( const unsigned char _far * );
  421. short    _far _cdecl    _getfontinfo( struct _fontinfo _far * );
  422. void    _far _cdecl    _outgtext( const unsigned char _far * );
  423. short    _far _cdecl    _getgtextextent( const unsigned char _far * );
  424. struct xycoord _far _cdecl _setgtextvector( short, short );
  425. struct xycoord _far _cdecl _getgtextvector(void);
  426.  
  427. /* Standard-Packing wieder initialisieren */
  428. #pragma pack()
  429.