home *** CD-ROM | disk | FTP | other *** search
/ The Fred Fish Collection 1.5 / ffcollection-1-5-1992-11.iso / ff_progs / libs / plotlib.lha / Plot_1.lzh / Header / Plot.h < prev    next >
Encoding:
C/C++ Source or Header  |  1990-02-18  |  11.1 KB  |  309 lines

  1. #ifndef PLOT_H
  2. #define PLOT_H
  3.  
  4. /****************************************************************
  5. *                                                                                                                                *
  6. * Filename : Plot.h                                                                                            *
  7. *                                                                                                                                *
  8. *****************************************************************
  9. *                                                                                                                                *
  10. *    Comment : Diese File enthält alle Strukturdefinitionen                *
  11. *                        für die Plotlibrary.                                                                *
  12. *                        Allgemeine Definitionen werden ebenfalls hier                *
  13. *                        deklariert. Diese Includedatei sollte in jeden            *
  14. *                        Teil der Library geladen werden. Allgemeine                    *
  15. *                        Includefiles werden hier nachgeladen wenn sie noch    *
  16. *                        nicht definiert sind.                                                                *
  17. *                                                                                                                                *
  18. *                                                Strukturen                                                            *
  19. *                                                ----------                                                            *
  20. *                                                                                                                                *
  21. *                        - Plot    -> Initialisierungsstruktur                                    *
  22. *                        - Kurve -> Kurvenstruktur                                                        *
  23. *                                                                                                                                *
  24. *            Rev : V1.0                                                                                                *
  25. *                                                                                                                                *
  26. *    History : V1.0 erstellen dieses Files                                14/11/89    *
  27. *                                                                                                                                *
  28. *            Doc :    Plotlibrary User's Guide                                                        *
  29. *                                                                                                                                *
  30. *         Bugs : keine bekannten                                                                            *
  31. *                                                                                                                                *
  32. *        Autor : Oesch Silvano                                                                                *
  33. *                                                                                                                                *
  34. *        Datum :    14/11/89                                                                                        *
  35. *                                                                                                                                *
  36. ****************************************************************/
  37.  
  38. /****************************************************************
  39. *                                                                                                                                *
  40. *    allgemeine Includefiles                                                                                *
  41. *                                                                                                                                *
  42. ****************************************************************/
  43.  
  44. #include <stdlib.h>
  45. #include <stdio.h>
  46. #include <string.h>
  47. #include <ctype.h>
  48.  
  49.  
  50. /****************************************************************
  51. *                                                                                                                                *
  52. *    Plotlibrary Includefiles                                                                            *
  53. *                                                                                                                                *
  54. ****************************************************************/
  55.  
  56. #define _PLOT_
  57.  
  58. #ifndef PLOTLIB_H
  59. #include "PlotLib.h"
  60. #endif
  61.  
  62. #ifndef LISTL2_H
  63. #include "ListL2.h"
  64. #endif
  65.  
  66. #ifndef PLERROR_H
  67. #include "Plerror.h"
  68. #endif
  69.  
  70. /****************************************************************
  71. *                                                                                                                                *
  72. *    Globale Macros                                                                                                *
  73. *                                                                                                                                *
  74. ****************************************************************/
  75.  
  76. #ifndef or
  77. #define or ||
  78. #endif
  79.  
  80. #ifndef and
  81. #define and &&
  82. #endif
  83.  
  84. #ifndef EOS
  85. #define EOS '\0'
  86. #endif
  87.  
  88. #ifndef forever
  89. #define forever for(;;)
  90. #endif
  91.  
  92. #define swap(a,b,c) (c=a,a=b,b=c)
  93.  
  94.  
  95. /****************************************************************
  96. *                                                                                                                                *
  97. *    Globale Defines                                                                                                *
  98. *                                                                                                                                *
  99. ****************************************************************/
  100.  
  101. #define DEFCOUNT        800                            /* Def.grösse eines arrays    */
  102. #define COUNTSTEP        400                            /* Step zum nachladen                */
  103. #define BUFFERSIZE    80                            /* Zeichenbuffergrösse            */
  104.  
  105. #define TITELLEN        40                            /* längen der verschiedenen    */
  106. #define AXNAMLEN        20                            /* Texte welche für die            */
  107. #define UNITLEN            10                            /* Beschriftung gesetzt            */
  108. #define CURNAMLEN        20                            /* werden können                        */
  109.  
  110. #define D2MULT            2                                /* Anzahl Punkte für die        */
  111. #define NIVMULT            2                                /* verschiedenen                        */
  112. #define D3MULT            3                                /* Darstellungen                        */
  113.  
  114. #define VALSIZE         9                                /* Beschriftungslänge des        */
  115.                                                                         /* Zahlenwertes                            */
  116. #define RECTSIZE        VALSIZE+3                /* Rechteckgrösse für Niv.    */
  117.  
  118. #define STARTCOL        1                                /* Startfarbe für Kurven        */
  119. #define TEXTCOL            1                                /* Textfarbe ( weiss )            */
  120. #define BACKCOL            0                                /* Hintergrundfarbe                    */
  121.  
  122. #define XSIZE                1                                /* Textgrösse für X                    */
  123. #define YSIZE                2                                /* Textgrösse für Y                    */
  124.  
  125. #define XTRANS            2                                /* Translationsrückgabewert    */
  126. #define YTRANS            4                                /* für ungültige transf.        */
  127. #define ZTRANS            8
  128.  
  129. #define STEPNBR            5                                /* Anzahl möglicher steps        */
  130.                                                                         /* für lin. Darstellung            */
  131. #define STEPVAL            12                            /* Anzahl def. Steps für         */
  132.                                                                         /* auto. Skalierung                    */
  133.  
  134. #define TOP_LEFT        0x1                            /* Eckdefinitionen für            */
  135. #define BOT_LEFT        0x2                            /* Flächenclipping                    */
  136. #define TOP_RIGHT        0x4
  137. #define BOT_RIGHT        0x8
  138.  
  139. #define T_T                    0x1                            /* Text Top                                    */
  140. #define T_CY                0x2                            /* Text Center                            */
  141. #define T_B                    0x4                            /* Text Bottom                            */
  142.  
  143. #define T_L                    0x10                        /* Text Left                                */
  144. #define T_CX                0x20                        /* Text Center                            */
  145. #define T_R                    0x40                        /* Text Right                                */
  146.  
  147. #define    C_L                    0x1                            /* Clipping Line Left                */
  148. #define    C_R                    0x2                            /* Clipping Line Right            */
  149. #define    C_T                    0x4                            /* Clipping Line Top                */
  150. #define    C_B                    0x8                            /* Clipping Line Bottom            */
  151.  
  152. #define X_MN                0x01                        /* Clipping XMin                        */
  153. #define X_MX                0x02                        /* Clipping XMax                        */
  154. #define Y_MN                0x04                        /* Clipping YMin                        */
  155. #define Y_MX                0x08                        /* Clipping YMax                        */
  156. #define Z_MN                0x10                        /* Clipping ZMin                        */
  157. #define Z_MX                0x20                        /* Clipping ZMax                        */
  158.  
  159. #define MAXLST            5                                /* Max. Linienmuster                */
  160. #define SOL_LINE        0                                /* volle Linie                            */
  161. #define DOT_LINE        1                                /* gepunktete Linie                    */
  162. #define DAS_LINE        2                                /* gestrichelte Linie                */
  163.  
  164. #define STEPLSIZE        50                            /* Länge in % der Stepline    */
  165. #define GRIDLSIZE        25                            /* Länge in % der Gridline    */
  166. #define BSTEPSIZE        2                                /* Länge in % der Stepline    */
  167. #define BGRIDSIZE        4                                /* Länge in % der Gridline    */
  168. #define CURLSIZE        3*plot->xtext        /* Länge in Punkten der Bes    */
  169.  
  170. #define LINSLSTEP        5                                /* lineare Unterteilung            */
  171. #define LOGSLSTEP        9                                /* log Unterteilung                    */
  172.  
  173. #define CROSH                0x01                        /* Croshatching                            */
  174. #define HIDDEN            0x02                        /* Hiddenline                                */
  175.  
  176. #define MAXNAMES        8                                /* Anzahl *char in plot            */
  177.  
  178. /****************************************************************
  179. *                                                                                                                                *
  180. * Plotstruktur                                                                                                    *
  181. *                                                                                                                                *
  182. ****************************************************************/
  183.  
  184.  
  185. struct Plot
  186.     {
  187.         int                        typ,                            /* Darstellung 2D,Niveau,3D    */
  188.                                     grid,                            /* Spezifikation oben                */
  189.                                     clipp,                        /* clipping indikator                */
  190.                                     autoval,                    /* auto. minmax-Anpassung        */
  191.                                     xmes,                            /* Masstab x-Achse                    */
  192.                                     ymes,                            /* Masstab y-Achse                    */
  193.                                     zmes,                            /* Masstab z-Achse                    */
  194.                                     phix,                            /* Rotationswinkel der            */
  195.                                     phiy,                            /* Achsen in Grad für                */
  196.                                     phiz,                            /* 3D Darstellung                        */
  197.                                     count,                        /* Anzahl Kurven                        */
  198.                                     disp,                            /* Displayindikator                    */
  199.                                     xpic1,                        /* linker Bildrand                    */
  200.                                     xpic2,                        /* rechter Bildrand                    */
  201.                                     xsize,                        /* max. horiz. Auflösung        */
  202.                                     ypic1,                        /* oberer Bildrand                    */
  203.                                     ypic2,                        /* unterer Bildrand                    */
  204.                                     ysize,                        /* max. vert. Auflösung            */
  205.                                     maxcol,                        /* max. Anzahl Farben                */
  206.                                     xtext,                        /* Breite eines Zeichens        */
  207.                                     ytext,                        /* Höhe eines Zeichens            */
  208.                                     xout,                            /* Start x von Output    in cm    */
  209.                                     yout,                            /* Start y von Output    in cm    */
  210.                                     xlength,                    /* Outputlänge x in cm            */
  211.                                     ylength,                    /* Outputlänge y in cm            */
  212.                                     pldisp,                        /* Plotter Indikator                */
  213.                                     currid,                        /* current ID                                */
  214.                                     xht,                            /* horiz. halbe Textgrösse    */
  215.                                     xlt,                            /* horiz. ganze Textgrösse    */
  216.                                     xle,                            /* horiz. exp. Textgrösse        */
  217.                                     yht,                            /* vert. halbe Textgrösse        */
  218.                                     ylt,                            /* vert. ganze Textgrösse        */
  219.                                     yle,                            /* vert. exp. Textgrösse        */
  220.                                     style,                        /* nächstes Füllmuster            */
  221.                                     col,                            /* nächste Farbe                        */
  222.                                     cpt,                            /* Beschriftungsstart                */
  223.                                     d3opt,                        /* 3d Displayoptions                */
  224.                                     ispare1,
  225.                                     ispare2,
  226.                                     ispare3,
  227.                                     ispare4;
  228.  
  229.         struct Curve    *first,                        /* erste Kurvenstruktur            */
  230.                                     *last;                        /* letzte Kurvenstruktur        */
  231.  
  232. /****************************************************************
  233. *                                                                                                                                *
  234. *    Achtung : Die nächsten Zeilen innerhalb eines Elementes nicht    *
  235. *                        verändert werden. Verschiedene Funktionen benötigen    *
  236. *                        nur die Startadresse des Elementes und die anderen    *
  237. *                        Werte werden dann in der Funktion zugewiesen.                *
  238. *                        Als Element wird immer eine Achse bezeichnet.                *
  239. *                                                                                                                                *
  240. ****************************************************************/
  241.  
  242.         DATA                    xmin,                            /* abs. min. X-Wert                    */
  243.                                     xmax,                            /* abs. max. X-Wert                    */
  244.                                     xstep,                        /* Beschriftungsschritte        */
  245.                                     xgridmin,                    /* Gitterstart X                        */
  246.                                     xgridmax,                    /* Gitterend X                            */
  247.                                     xcenter,
  248.                                     xspare,
  249.                                     ymin,                            /* abs. min. Y-Wert                    */
  250.                                     ymax,                            /* abs. max. Y-Wert                    */
  251.                                     ystep,                        /* Beschriftungsschritte        */
  252.                                     ygridmin,                    /* Gitterstart Y                        */
  253.                                     ygridmax,                    /* Gitterend Y                            */
  254.                                     ycenter,
  255.                                     yspare,
  256.                                     zmin,                            /* abs. min. Z-Wert                    */
  257.                                     zmax,                            /* abs. max. Z-Wert                    */
  258.                                     zstep,                        /* Beschriftungsschritte        */
  259.                                     zgridmin,                    /* Gitterstart Z                        */
  260.                                     zgridmax,                    /* Gitterend Z                            */
  261.                                     zcenter,
  262.                                     zspare;
  263.  
  264. /****************************************************************
  265. *                                                                                                                                *
  266. *    Achtung : In den nächsten Zeilen dürfen keine anderen Typen        *
  267. *                        als char * vorkommen, da in closeplot() alle Werte    *
  268. *                        ab titel wenn sie gesetzt sind, freigibt. Die                *
  269. *                        Anzahl der Namen ist in MAXNAMES definiert.                    *
  270. *                                                                                                                                *
  271. ****************************************************************/
  272.  
  273.         char                    *titel,                        /* Titel der Graphik                */
  274.                                     *xname,                        /* x-Achsen Name                        */
  275.                                     *xunit,                        /* xeinheits Titel                    */
  276.                                     *yname,                        /* y-Achsen Name                        */
  277.                                     *yunit,                        /* yeinheits Titel                    */
  278.                                     *zname,                        /* z-Achsen Name                        */
  279.                                     *zunit,                        /* zeinheits Titel                    */
  280.                                     *outname,                    /* Plotterfilename                    */
  281.                                     *tspare;
  282.     };
  283.  
  284. /****************************************************************
  285. *                                                                                                                                *
  286. * Kurvenstruktur                                                                                                *
  287. *                                                                                                                                *
  288. ****************************************************************/
  289.  
  290. struct Curve
  291.     {
  292.         struct Curve    *next;                        /* Zeiger auf nächste Kurve    */
  293.         char                    *titel;                        /* Zeiger auf Kurvennamen        */
  294.         int                        id,                                /* Kurvennummer                            */
  295.                                     color,                        /* Farb- oder Musterwert        */
  296.                                     count,                        /* Anzahl Datenelemente            */
  297.                                     maxcount;                    /* max. Datenelemente                */
  298.         DATA                    xmin,                            /* xmin dieser Kurve                */
  299.                                     xmax,                            /* xmax dieser Kurve                */
  300.                                     ymin,                            /* ymin dieser Kurve                */
  301.                                     ymax,                            /* ymax dieser Kurve                */
  302.                                     zmin,                            /* zmin dieser Kurve                */
  303.                                     zmax,                            /* zmax dieser Kurve                */
  304.                                     *val;                            /* Zeiger auf Datenfeld            */
  305.     };
  306.  
  307.  
  308. #endif
  309.