1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127
|
/*
* Xgraph parameters
*/
#ifndef _PARAMS_H_
#define _PARAMS_H_
#include "xgraph.h"
/* If you have an ANSI compiler, some checking will be done */
#ifdef __STDC__
#define DECLARE(func, rtn, args) extern rtn func args
#else
#define DECLARE(func, rtn, args) extern rtn func ()
#endif
typedef enum param_types_defn {
INT, STR, PIXEL, FONT, STYLE, BOOL, DBL
} param_types;
typedef struct params_int_defn {
param_types type; /* INT */
int value;
} param_int;
typedef struct params_str_defn {
param_types type; /* STR */
char *value;
} param_str;
typedef struct params_pix_defn {
param_types type; /* PIXEL */
XColor value;
} param_pix;
typedef struct params_font_defn {
param_types type; /* FONT */
XFontStruct *value;
} param_font;
typedef struct params_style_defn {
param_types type; /* STYLE */
int len;
char *dash_list;
} param_style;
typedef struct params_bool_defn {
param_types type; /* BOOL */
int value;
} param_bool;
typedef struct params_dbl_defn {
param_types type; /* DBL */
double value;
} param_dbl;
typedef union params_defn {
param_types type;
param_int intv; /* INT */
param_str strv; /* STR */
param_pix pixv; /* PIXEL */
param_font fontv; /* FONT */
param_style stylev; /* STYLE */
param_bool boolv; /* BOOL */
param_dbl dblv; /* DBL */
} params;
DECLARE(param_init, void, (Display * disp, Colormap cmap));
DECLARE(param_set, void, (char *name, param_types type, char *val));
DECLARE(param_reset, void, (char *name, char *val));
DECLARE(param_get, params *, (char *name, params * val));
DECLARE(param_dump, void, ());
#ifdef stricmp
#undef stricmp
#endif
DECLARE(stricmp, int, (char *a, char *b));
/* Some convenience macros */
extern params param_temp,
*param_temp_ptr;
extern XColor param_null_color;
extern param_style param_null_style;
#define PM_INT(name) \
((param_temp_ptr = param_get(name, ¶m_temp)) ? \
param_temp_ptr->intv.value : \
(abort(), (int) 0))
#define PM_STR(name) \
((param_temp_ptr = param_get(name, ¶m_temp)) ? \
param_temp_ptr->strv.value : \
(abort(), (char *) 0))
#define PM_COLOR(name) \
((param_temp_ptr = param_get(name, ¶m_temp)) ? \
param_temp_ptr->pixv.value : \
(abort(), param_null_color))
#define PM_PIXEL(name) \
((param_temp_ptr = param_get(name, ¶m_temp)) ? \
param_temp_ptr->pixv.value.pixel : \
(abort(), (Pixel) 0))
#define PM_FONT(name) \
((param_temp_ptr = param_get(name, ¶m_temp)) ? \
param_temp_ptr->fontv.value : \
(abort(), (XFontStruct *) 0))
#define PM_STYLE(name) \
((param_temp_ptr = param_get(name, ¶m_temp)) ? \
param_temp_ptr->stylev : \
(abort(), param_null_style))
#define PM_BOOL(name) \
((param_temp_ptr = param_get(name, ¶m_temp)) ? \
param_temp_ptr->boolv.value : \
(abort(), 0))
#define PM_DBL(name) \
((param_temp_ptr = param_get(name, ¶m_temp)) ? \
param_temp_ptr->dblv.value : \
(abort(), 0.0))
#endif /* _PARAMS_H_ */
|