ngspice/xgraph/xtb.h

193 lines
5.1 KiB
C
Raw Permalink Normal View History

2004-01-25 10:00:31 +01:00
/*
* xtb - a mini-toolbox for X11
*
* David Harrison
* University of California, Berkeley
* 1988
*/
#ifndef _XTB_
#define _XTB_
#include "copyright.h"
/* Handler function return codes */
typedef enum xtb_hret_defn {
XTB_NOTDEF, XTB_HANDLED, XTB_STOP
} xtb_hret;
/* If you have an ANSI compiler, some checking will be done */
#ifdef __STDC__
#define DECLARE(func, rtn, args) extern rtn func args
typedef void *xtb_data;
#else
#define DECLARE(func, rtn, args) extern rtn func ()
typedef char *xtb_data;
#endif
/* Basic return value */
typedef struct xtb_frame_defn {
Window win;
int x_loc,
y_loc;
unsigned int width,
height;
} xtb_frame;
DECLARE(xtb_init, void, (Display * disp, int scrn,
unsigned long foreground,
unsigned long background,
XFontStruct * font));
/* Initializes mini-toolbox */
/*
* Basic event handling
*/
DECLARE(xtb_register, void, (Window win,
xtb_hret(*func) (XEvent * evt, xtb_data info),
xtb_data info));
/* Registers call-back function */
DECLARE(xtb_lookup, xtb_data, (Window win));
/* Returns data associated with window */
DECLARE(xtb_dispatch, xtb_hret, (XEvent * evt));
/* Dispatches events for mini-toolbox */
DECLARE(xtb_unregister, int, (Window win, xtb_data * info));
/* Unregisters a call-back function */
/*
* Command button frame
*/
DECLARE(xtb_bt_new, void, (Window win, char *text,
xtb_hret(*func) (Window win, int state,
xtb_data val),
xtb_data val,
xtb_frame * frame));
/* Creates new button */
DECLARE(xtb_bt_get, int, (Window win, xtb_data * stuff, int *na));
/* Returns state of button */
DECLARE(xtb_bt_set, int, (Window win, int val, xtb_data stuff, int na));
/* Sets state of button */
DECLARE(xtb_bt_del, void, (Window win, xtb_data * info));
/* Deletes a button */
/*
* Button row frame - built on top of buttons
*/
DECLARE(xtb_br_new, void, (Window win, int cnt, char *lbls[], int init,
xtb_hret(*func) (Window win, int prev,
int this, xtb_data val),
xtb_data val,
xtb_frame * frame));
/* Creates a new button row frame */
DECLARE(xtb_br_get, int, (Window win));
/* Returns currently selected button */
DECLARE(xtb_br_del, void, (Window win));
/* Deletes a button row */
/*
* Text output (label) frames
*/
DECLARE(xtb_to_new, void, (Window win, char *text,
XFontStruct * ft, xtb_frame * frame));
/* Create new text output frame */
DECLARE(xtb_to_del, void, (Window win));
/*
* Text input (editable text) frames
*/
#define MAXCHBUF 1024
DECLARE(xtb_ti_new, void, (Window win, char *text, int maxchar,
xtb_hret(*func) (Window win, int ch,
char *textcopy, xtb_data * val),
xtb_data val, xtb_frame * frame));
/* Creates a new text input frame */
DECLARE(xtb_ti_get, void, (Window win, char text[MAXCHBUF], xtb_data * val));
/* Returns state of text input frame */
DECLARE(xtb_ti_set, int, (Window win, char *text, xtb_data val));
/* Sets the state of text input frame */
DECLARE(xtb_ti_ins, int, (Window win, int ch));
/* Inserts character onto end of text input frame */
DECLARE(xtb_ti_dch, int, (Window win));
/* Deletes character from end of text input frame */
DECLARE(xtb_ti_del, void, (Window win, xtb_data * info));
/* Deletes an text input frame */
/*
* Block frame
*/
DECLARE(xtb_bk_new, void, (Window win, unsigned width, unsigned height,
xtb_frame * frame));
/* Makes a new block frame */
DECLARE(xtb_bk_del, void, (Window win));
/* Deletes a block frame */
/*
* Formatting support
*/
#define MAX_BRANCH 50
typedef enum xtb_fmt_types_defn {
W_TYPE, A_TYPE
} xtb_fmt_types;
typedef enum xtb_fmt_dir_defn {
HORIZONTAL, VERTICAL
} xtb_fmt_dir;
typedef enum xtb_just_defn {
XTB_CENTER = 0, XTB_LEFT, XTB_RIGHT, XTB_TOP, XTB_BOTTOM
} xtb_just;
typedef struct xtb_fmt_widget_defn {
xtb_fmt_types type; /* W_TYPE */
xtb_frame *w;
} xtb_fmt_widget;
typedef struct xtb_fmt_align_defn {
xtb_fmt_types type; /* A_TYPE */
xtb_fmt_dir dir; /* HORIZONTAL or VERTICAL */
int padding; /* Outside padding */
int interspace; /* Internal padding */
xtb_just just; /* Justification */
int ni; /* Number of items */
union xtb_fmt_defn *items[MAX_BRANCH]; /* Branches themselves */
} xtb_fmt_align;
typedef union xtb_fmt_defn {
xtb_fmt_types type; /* W_TYPE or A_TYPE */
xtb_fmt_widget wid;
xtb_fmt_align align;
} xtb_fmt;
#define NE 0
DECLARE(xtb_w, xtb_fmt *, (xtb_frame * w));
/* Returns formatting structure for frame */
DECLARE(xtb_hort, xtb_fmt *, (xtb_just just, int padding, int interspace,...));
/* Varargs routine for horizontal formatting */
DECLARE(xtb_vert, xtb_fmt *, (xtb_just just, int padding, int interspace,...));
/* Varargs routine for vertical formatting */
DECLARE(xtb_fmt_do, xtb_fmt *, (xtb_fmt * def, unsigned *w, unsigned *h));
/* Carries out formatting */
DECLARE(xtb_mv_frames, void, (int nf, xtb_frame frames[]));
/* Actually moves widgets */
DECLARE(xtb_fmt_free, void, (xtb_fmt * def));
/* Frees resources claimed by xtb_w, xtb_hort, and xtb_vert */
#endif /* _XTB_ */