128 lines
3.0 KiB
C
128 lines
3.0 KiB
C
/*
|
|
* 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_ */
|