home *** CD-ROM | disk | FTP | other *** search
/ Chip 1997 October / Chip_1997-10_cd.bin / tema / sybase / powerj / h.z / PGCHART.H < prev    next >
C/C++ Source or Header  |  1996-11-06  |  7KB  |  195 lines

  1. /*
  2.  *  pgchart.h    Presentation Graphics functions
  3.  *
  4.  *  Copyright by WATCOM International Corp. 1988-1996.  All rights reserved.
  5.  */
  6. #ifndef _PGCHART_H_INCLUDED
  7. #define _PGCHART_H_INCLUDED
  8. #if !defined(_ENABLE_AUTODEPEND)
  9.   #pragma read_only_file;
  10. #endif
  11. #ifdef __cplusplus
  12. extern "C" {
  13. #endif
  14.  
  15. #ifndef _COMDEF_H_INCLUDED
  16.  #include <_comdef.h>
  17. #endif
  18.  
  19. #if defined(_M_IX86)
  20.   #pragma pack(__push,1);
  21. #else
  22.   #pragma pack(__push,8);
  23. #endif
  24.  
  25. #define _PG_MAXCHARTTYPE    5    /* maximum chart type */
  26.  
  27. enum {                    /* chart types */
  28.     _PG_BARCHART=1, _PG_COLUMNCHART,
  29.     _PG_LINECHART, _PG_SCATTERCHART, _PG_PIECHART
  30. };
  31.  
  32.  
  33. #define _PG_MAXCHARTSTYLE    2    /* maximum chart style */
  34.  
  35. enum {                    /* styles for bar and column charts */
  36.     _PG_PLAINBARS=1, _PG_STACKEDBARS
  37. };
  38.  
  39. enum {                    /* styles for line and scatter charts */
  40.     _PG_POINTANDLINE=1, _PG_POINTONLY
  41. };
  42.  
  43. enum {                    /* styles for pie charts */
  44.     _PG_PERCENT=1, _PG_NOPERCENT
  45. };
  46.  
  47.  
  48. enum {                    /* title and legend positions */
  49.     _PG_LEFT=1, _PG_CENTER, _PG_RIGHT, _PG_BOTTOM, _PG_OVERLAY
  50. };
  51.  
  52. enum {                    /* axis types */
  53.     _PG_LINEARAXIS=1, _PG_LOGAXIS
  54. };
  55.  
  56. enum {                    /* tic mark label format */
  57.     _PG_DECFORMAT=1, _PG_EXPFORMAT
  58. };
  59.  
  60. #define _PG_MISSINGVALUE    (-FLT_MAX)    /* value for missing data elements */
  61.  
  62.  
  63. /* Error codes - greater than 100, terminate chart routine
  64.            - less than 100, default values will be used */
  65.  
  66. #define _PG_NOTINITIALIZED    101    /* library not initialized */
  67. #define _PG_BADSCREENMODE    102    /* not in graphics mode */
  68. #define _PG_BADCHARTTYPE    103    /* invalid chart type */
  69. #define _PG_BADLEGENDWINDOW    104    /* invalid legend window */
  70. #define _PG_BADDATAWINDOW    105    /* invalid data window */
  71. #define _PG_TOOSMALLN        106    /* number of data values <= 0 */
  72. #define _PG_TOOFEWSERIES    107    /* number of series <= 0 */
  73.  
  74. #define _PG_BADCHARTSTYLE    1    /* invalid chart style */
  75. #define _PG_BADLOGBASE        2    /* log base <= 0 */
  76. #define _PG_BADSCALEFACTOR    3    /* scale factor = 0 */
  77. #define _PG_BADCHARTWINDOW    4    /* invalid chart window */
  78.  
  79.  
  80. /* Chart definition */
  81.  
  82. #define _PG_TITLELEN    70        /* maximum title length */
  83.  
  84. typedef struct {            /* chart title definition */
  85.     char    title[ _PG_TITLELEN ];    /* title text */
  86.     short    titlecolor;        /* palette color for title */
  87.     short    justify;        /* _PG_LEFT, _PG_CENTER or _PG_RIGHT */
  88. } titletype;
  89.  
  90. typedef struct {            /* chart axes definition */
  91.     short    grid;            /* if TRUE draw grid lines */
  92.     short    gridstyle;        /* style number for grid lines */
  93.     titletype    axistitle;        /* axis title */
  94.     short    axiscolor;        /* palette color for axis */
  95.     short    labeled;        /* if TRUE draw tic marks and titles */
  96.     short    rangetype;        /* _PG_LINEARAXIS or _PG_LOGAXIS */
  97.     float    logbase;        /* base used for log axis */
  98.     short    autoscale;        /* if TRUE calculate remaining values */
  99.     float    scalemin;        /* minimum value for scale */
  100.     float    scalemax;        /* maximum value for scale */
  101.     float    scalefactor;        /* scale factor for axis */
  102.     titletype    scaletitle;        /* title for scale factor */
  103.     float    ticinterval;        /* interval between tic marks */
  104.     short    ticformat;        /* _PG_EXPFORMAT or _PG_DECFORMAT */
  105.     short    ticdecimals;        /* number of decimals places in tic labels */
  106. } axistype;
  107.  
  108. typedef struct {            /* chart and data window definition */
  109.     short    x1;            /* left side of window */
  110.     short    y1;            /* top side of window */
  111.     short    x2;            /* right side of window */
  112.     short    y2;            /* bottom side of window */
  113.     short    border;         /* if TRUE draw border */
  114.     short    background;        /* palette color for background */
  115.     short    borderstyle;        /* style number for border */
  116.     short    bordercolor;        /* palette color for border */
  117. } windowtype;
  118.  
  119. typedef struct {            /* legend definition */
  120.     short    legend;         /* if TRUE draw legend */
  121.     short    place;            /* _PG_RIGHT, _PG_BOTTOM or _PG_OVERLAY */
  122.     short    textcolor;        /* palette color for text */
  123.     short    autosize;        /* if TRUE size is calculated */
  124.     windowtype    legendwindow;        /* window for legend */
  125. } legendtype;
  126.  
  127. typedef struct {            /* chart definition */
  128.     short    charttype;        /* _PG_BAR, _PG_COLUMN, _PG_LINE, _PG_SCATTER or _PG_PIE */
  129.     short    chartstyle;        /* chart style for above type */
  130.     windowtype    chartwindow;        /* window containing whole chart */
  131.     windowtype    datawindow;        /* window containing data part of chart */
  132.     titletype    maintitle;        /* chart main title */
  133.     titletype    subtitle;        /* chart sub-title */
  134.     axistype    xaxis;            /* x-axis description */
  135.     axistype    yaxis;            /* y-axis description */
  136.     legendtype    legend;         /* legend description */
  137. } chartenv;
  138.  
  139.  
  140. /* Palette and Style-set definition */
  141.  
  142. #define _PG_PALETTELEN    16        /* size of palette and style-set */
  143.  
  144. typedef unsigned char    charmap[ 8 ];    /* character bit-map */
  145.  
  146. typedef unsigned char    fillmap[ 8 ];    /* pattern bit-map */
  147.  
  148. typedef struct {            /* palette entry definition */
  149.     unsigned short  color;
  150.     unsigned short  style;
  151.     fillmap        fill;
  152.     char        plotchar;
  153. } paletteentry;
  154.  
  155. typedef paletteentry    palettetype[ _PG_PALETTELEN ];
  156. typedef unsigned short    styleset[ _PG_PALETTELEN ];
  157.  
  158.  
  159. /* Display functions */
  160.  
  161. short _WCI86FAR    _pg_initchart( void );
  162. short _WCI86FAR    _pg_defaultchart( chartenv _WCI86FAR *, short, short );
  163. short _WCI86FAR    _pg_chart( chartenv _WCI86FAR *, char _WCI86FAR * _WCI86FAR *, float _WCI86FAR *, short );
  164. short _WCI86FAR    _pg_chartms( chartenv _WCI86FAR *, char _WCI86FAR * _WCI86FAR *, float _WCI86FAR *, short, short, short, char _WCI86FAR * _WCI86FAR * );
  165. short _WCI86FAR    _pg_chartscatter( chartenv _WCI86FAR *, float _WCI86FAR *, float _WCI86FAR *, short );
  166. short _WCI86FAR    _pg_chartscatterms( chartenv _WCI86FAR *, float _WCI86FAR *, float _WCI86FAR *, short, short, short, char _WCI86FAR * _WCI86FAR * );
  167. short _WCI86FAR    _pg_chartpie( chartenv _WCI86FAR *, char _WCI86FAR * _WCI86FAR *, float _WCI86FAR *, short _WCI86FAR *, short );
  168.  
  169. /* Analyze functions */
  170.  
  171. short _WCI86FAR    _pg_analyzechart( chartenv _WCI86FAR *, char _WCI86FAR * _WCI86FAR *, float _WCI86FAR *, short );
  172. short _WCI86FAR    _pg_analyzechartms( chartenv _WCI86FAR *, char _WCI86FAR * _WCI86FAR *, float _WCI86FAR *, short, short, short, char _WCI86FAR * _WCI86FAR * );
  173. short _WCI86FAR    _pg_analyzescatter( chartenv _WCI86FAR *, float _WCI86FAR *, float _WCI86FAR *, short );
  174. short _WCI86FAR    _pg_analyzescatterms( chartenv _WCI86FAR *, float _WCI86FAR *, float _WCI86FAR *, short, short, short, char _WCI86FAR * _WCI86FAR * );
  175. short _WCI86FAR    _pg_analyzepie( chartenv _WCI86FAR *, char _WCI86FAR * _WCI86FAR *, float _WCI86FAR *, short _WCI86FAR *, short );
  176.  
  177. /* Utility functions */
  178.  
  179. short _WCI86FAR    _pg_hlabelchart( chartenv _WCI86FAR *, short, short, short, char _WCI86FAR * );
  180. short _WCI86FAR    _pg_vlabelchart( chartenv _WCI86FAR *, short, short, short, char _WCI86FAR * );
  181. short _WCI86FAR    _pg_getpalette( paletteentry _WCI86FAR * );
  182. short _WCI86FAR    _pg_setpalette( paletteentry _WCI86FAR * );
  183. short _WCI86FAR    _pg_resetpalette( void );
  184. void _WCI86FAR    _pg_getstyleset( unsigned short _WCI86FAR * );
  185. void _WCI86FAR    _pg_setstyleset( unsigned short _WCI86FAR * );
  186. void _WCI86FAR    _pg_resetstyleset( void );
  187. short _WCI86FAR    _pg_getchardef( short, unsigned char _WCI86FAR * );
  188. short _WCI86FAR    _pg_setchardef( short, unsigned char _WCI86FAR * );
  189.  
  190. #pragma pack(__pop);
  191. #ifdef __cplusplus
  192. };
  193. #endif
  194. #endif
  195.