1 /*
2  * FIG : Facility for Interactive Generation of figures
3  * Copyright (c) 1985-1988 by Supoj Sutanthavibul
4  * Parts Copyright (c) 1989-2007 by Brian V. Smith
5  * Parts Copyright (c) 1991 by Paul King
6  *
7  * Any party obtaining a copy of these files is granted, free of charge, a
8  * full and unrestricted irrevocable, world-wide, paid up, royalty-free,
9  * nonexclusive right and license to deal in this software and documentation
10  * files (the "Software"), including without limitation the rights to use,
11  * copy, modify, merge, publish, distribute, sublicense and/or sell copies of
12  * the Software, and to permit persons who receive copies from any such
13  * party to do so, with the only requirement being that the above copyright
14  * and this permission notice remain intact.
15  *
16  */
17 
18 #ifndef W_UTIL_H
19 #define W_UTIL_H
20 
21 #include "w_indpanel.h"
22 
23 /* constant values used for popup_query */
24 
25 #define QUERY_YESCAN	0
26 #define QUERY_YESNO	1
27 #define QUERY_YESNOCAN	2
28 #define QUERY_ALLPARTCAN 3
29 #define QUERY_OK	4
30 
31 #define RESULT_CANCEL	-1
32 #define RESULT_NO	0
33 #define RESULT_YES	1
34 #define RESULT_ALL	2
35 #define RESULT_PART	3
36 
37 /* some consts used by both w_indpanel.c, w_export.c and w_print.c */
38 
39 #define I_CHOICE	0
40 #define I_IVAL		1
41 #define I_FVAL		2
42 
43 /* width/height of the color buttons */
44 
45 #define COLOR_BUT_WID	82
46 #define COLOR_BUT_HT	18
47 #define	COLOR_BUT_BD_WID 1	/* border width */
48 
49 /* true/false consts for make_color_popup_menu */
50 
51 #define INCL_TRANSP	True	/* include transparent color button */
52 #define NO_TRANSP	False	/* don't ... */
53 
54 #define INCL_BACKG	True	/* include background color button */
55 #define NO_BACKG	False	/* don't ... */
56 
57 #define	MANAGE		True	/* manage checkbox after creating */
58 #define	DONT_MANAGE	False	/* don't ... */
59 
60 #define	LARGE_CHK	True	/* use large checkmark */
61 #define	SMALL_CHK	False	/* use small checkmark (don't use large) */
62 
63 
64 #define NUM_ARROW_TYPES		30	/* number of arrow types */
65 
66 #define MAX_GRID_STRLEN		8	/* max strlen in grid_xxx_choices[] */
67 
68 /* EXPORTS */
69 
70 extern	char	*grid_inch_choices[], *grid_tenth_inch_choices[];
71 extern	char	*grid_cm_choices[];
72 extern	int	num_grid_inch_choices, num_grid_tenth_inch_choices, num_grid_cm_choices;
73 extern	char	**grid_choices;
74 extern	int	n_grid_choices, grid_minor, grid_major;
75 extern	Widget	make_grid_options(Widget parent, Widget put_below, Widget put_beside, char *minor_grid_value, char *major_grid_value, Widget *grid_minor_menu_button, Widget *grid_major_menu_button, Widget *grid_minor_menu, Widget *grid_major_menu, Widget *print_grid_minor_text, Widget *print_grid_major_text, Widget *grid_unit_label, void (*grid_major_select) (/* ??? */), void (*grid_minor_select) (/* ??? */));
76 extern	void	reset_grid_menus(Boolean inches);
77 
78 extern	Boolean	check_action_on(void);
79 extern	void	check_for_resize(Widget tool, XButtonEvent *event, String *params, Cardinal *nparams);
80 extern	void	check_colors(void);
81 
82 extern	Widget	make_pulldown_menu(char **entries, Cardinal nent, int divide_line, char *divide_message, Widget parent, XtCallbackProc callback);
83 extern	Widget	make_color_popup_menu(Widget parent, char *name, XtCallbackProc callback, Boolean include_transp, Boolean include_backg);
84 extern	void	set_color_name(int color, char *buf);
85 extern	void	set_but_col(Widget widget, Pixel color);
86 extern	Widget	MakeIntSpinnerEntry(Widget parent, Widget *text, char *name, Widget below, Widget beside, XtCallbackProc callback, char *string, int min, int max, int inc, int width);
87 extern	Widget	MakeFloatSpinnerEntry(Widget parent, Widget *text, char *name, Widget below, Widget beside, XtCallbackProc callback, char *string, float min, float max, float inc, int width);
88 extern	Widget	CreateCheckbutton(char *label, char *widget_name, Widget parent, Widget below, Widget beside, Boolean manage, Boolean large, Boolean *value, XtCallbackProc user_callback, Widget *togwidg);
89 extern	void /* XtCallbackProc */ toggle_checkbutton(Widget w, XtPointer data, XtPointer garbage);
90 extern	Pixmap	mouse_l, mouse_r;
91 extern	Pixmap	check_pm, null_check_pm;
92 extern	Pixmap	sm_check_pm, sm_null_check_pm;
93 /* put these here so w_layers.c can get to them too */
94 #define check_width 16
95 #define check_height 16
96 #define sm_check_width 10
97 #define sm_check_height 10
98 extern	Pixmap	balloons_on_bitmap;
99 extern	Pixmap	balloons_off_bitmap;
100 extern	Pixmap	menu_arrow, menu_cascade_arrow;
101 extern	Pixmap	arrow_pixmaps[NUM_ARROW_TYPES+1];
102 extern	Pixmap	diamond_pixmap;
103 extern	Pixmap	linestyle_pixmaps[NUM_LINESTYLE_TYPES];
104 extern	char    *panel_get_value(Widget widg);
105 extern	void	panel_set_value(Widget widg, char *val);
106 extern	void	panel_set_int(Widget widg, int intval), panel_set_float(Widget widg, float floatval, char *format);
107 extern	void	update_wm_title(char *name);
108 extern	void	get_pointer_win_xy(int *xposn, int *yposn);
109 extern	void	get_pointer_root_xy(int *xposn, int *yposn);
110 extern	void	spinner_up_down(Widget w, XButtonEvent *ev, String *params, Cardinal *num_params);
111 extern	void	clear_splash(void);
112 extern	void	InstallScroll(Widget widget);
113 extern	void	InstallScrollParent(Widget widget);
114 extern  void fix_converters(void);
115 
116 extern	Boolean	user_colors_saved;
117 extern	Boolean	nuser_colors_saved;
118 
119 /*
120  * Author:	Doyle C. Davidson
121  *		Intergraph Corporation
122  *		One Madison Industrial Park
123  *		Huntsville, Al.	 35894-0001
124  *
125  * Modification history:
126  *		11 May 91 - added SetValues and GetValues - Paul King
127  *
128  * My macros for using XtSetArg easily:
129  * Usage:
130  *
131  *	blah()
132  *	{
133  *	DeclareArgs(2);
134  *		...
135  *		FirstArg(XmNx, 100);
136  *		NextArg(XmNy, 80);
137  *		button = XmCreatePushButton(parent, name, Args, ArgCount);
138  *	}
139  */
140 
141 #include <assert.h>
142 
143 #define ArgCount	_ArgCount
144 #define Args		_ArgList
145 #define ArgCountMax	_ArgCountMax
146 
147 #define DeclareArgs(n)	Arg Args[n]; int ArgCountMax = n; int ArgCount
148 
149 #define DeclareStaticArgs(n)  static Arg Args[n]; static int ArgCountMax = n; static int ArgCount
150 
151 #define FirstArg(name, val) \
152 	do { XtSetArg(Args[0], (name), (val)); ArgCount=1;} while (0)
153 #define NextArg(name, val) \
154 	do { assert(ArgCount < ArgCountMax); \
155 		XtSetArg(Args[ArgCount], (name), (val)); ArgCount++;} while (0)
156 #define GetValues(n)	XtGetValues(n, Args, ArgCount)
157 #define SetValues(n)	XtSetValues(n, Args, ArgCount)
158 
159 /* data structure passed to SpinnerEntry callback */
160 
161 typedef struct {
162 	Widget	widget;		/* text widget inside spinner */
163 	float	min, max;	/* min, max values allowed */
164 	float	inc;		/* how much to inc/dec spinner with each click */
165 } spin_struct;
166 
167 /* A clumsy exercise to avoid -Wpointer-to-int-cast warnings.	*/
168 typedef union {
169 	XtPointer	ptr;
170 	int		val;
171 } ptr_int;
172 
173 extern void app_flush (void);
174 extern void file_msg_add_grab (void);
175 extern void process_pending (void);
176 extern void resize_all (int width, int height);
177 extern void restore_nuser_colors (void);
178 extern void restore_user_colors (void);
179 extern void save_nuser_colors (void);
180 extern void save_user_colors (void);
181 extern int popup_query(int query_type, char *message);
182 extern void create_bitmaps(void);
183 extern void splash_screen(void);
184 extern int xallncol(char *name, XColor *color, XColor *exact);
185 
186 #endif /* W_UTIL_H */
187