/* * FIG : Facility for Interactive Generation of figures * Copyright (c) 1991 by Paul King * Parts Copyright (c) 1989-2002 by Brian V. Smith * * Any party obtaining a copy of these files is granted, free of charge, a * full and unrestricted irrevocable, world-wide, paid up, royalty-free, * nonexclusive right and license to deal in this software and documentation * files (the "Software"), including without limitation the rights to use, * copy, modify, merge, publish distribute, sublicense and/or sell copies of * the Software, and to permit persons who receive copies from any such * party to do so, with the only requirement being that the above copyright * and this permission notice remain intact. * */ #ifndef W_INDPANEL_H #define W_INDPANEL_H #include "w_icons.h" /* EXPORTS */ extern void init_ind_panel(); extern void add_ind_actions(); extern Boolean update_buts_managed; extern Widget choice_popup; extern void show_depth(), show_zoom(); extern void show_fillstyle(); extern void fontpane_popup(); extern void make_pulldown_menu_images(); extern void tog_selective_update(); extern unsigned long cur_indmask; /* mask showing which indicator buttons are mapped */ extern void inc_zoom(), dec_zoom(), fit_zoom(); extern void wheel_inc_zoom(), wheel_dec_zoom(); /* size of buttons in indicator panel */ #define DEF_IND_SW_HT 34 #define DEF_IND_SW_WD 64 #define FONT_IND_SW_WD (40+PS_FONTPANE_WD) #define NARROW_IND_SW_WD 56 #define WIDE_IND_SW_WD 76 #define XWIDE_IND_SW_WD 90 /* size of update control panel */ #define UPD_BITS 10 /* bits wide and high */ #define UPD_BORD 1 /* border width for update squares */ #define UPD_INT 2 /* internal spacing */ #define UPD_CTRL_HT 40 + UPD_BITS + 2*UPD_BORD + 2*UPD_INT extern Dimension UPD_CTRL_WD; /* actual width is det. in setup_ind_panel */ #define NUM_CAPSTYLE_TYPES 3 #define NUM_JOINSTYLE_TYPES 3 #define NUM_LINESTYLE_TYPES 6 /* indicator button selection */ #define I_ANGLEGEOM 0x00000001 #define I_VALIGN 0x00000002 #define I_HALIGN 0x00000004 #define I_ARROWSIZE 0x00000008 #define I_POINTPOSN 0x00000010 #define I_FILLSTYLE 0x00000020 #define I_BOXRADIUS 0x00000040 #define I_LINEWIDTH 0x00000080 #define I_LINESTYLE 0x00000100 #define I_ARROWMODE 0x00000200 #define I_TEXTJUST 0x00000400 #define I_FONTSIZE 0x00000800 #define I_FONT 0x00001000 #define I_TEXTSTEP 0x00002000 #define I_DIMLINE 0x00004000 #define I_ROTNANGLE 0x00008000 #define I_NUMSIDES 0x00010000 #define I_PEN_COLOR 0x00020000 #define I_FILL_COLOR 0x00040000 #define I_LINKMODE 0x00080000 #define I_DEPTH 0x00100000 #define I_ELLTEXTANGLE 0x00200000 #define I_TEXTFLAGS 0x00400000 #define I_JOINSTYLE 0x00800000 #define I_ARROWTYPE 0x01000000 #define I_CAPSTYLE 0x02000000 #define I_ARCTYPE 0x04000000 #define I_NUMCOPIES 0x08000000 #define I_NUMXCOPIES 0x10000000 #define I_NUMYCOPIES 0x20000000 #define I_TANGNORMLEN 0x40000000 #define I_free1_____ 0x80000000 /* this one is free for another ind */ #define I_NONE 0x00000000 /* be sure to update I_ALL if more buttons are added */ #define I_ALL 0xffffffff & ~I_free1_____ #define I_MIN2 (I_POINTPOSN) #define I_MIN3 (I_MIN2 | I_LINKMODE) #define I_ADDMOVPT (I_MIN2 | I_ANGLEGEOM) #define I_TEXT0 (I_TEXTJUST | I_FONT | I_FONTSIZE | I_PEN_COLOR | \ I_DEPTH | I_ELLTEXTANGLE | I_TEXTFLAGS) #define I_TEXT (I_MIN2 | I_TEXTSTEP | I_TEXT0) #define I_LINE0 (I_FILLSTYLE | I_LINESTYLE | I_LINEWIDTH | \ I_PEN_COLOR | I_FILL_COLOR | I_DEPTH) #define I_LINE1 (I_FILLSTYLE | I_LINESTYLE | I_JOINSTYLE | I_LINEWIDTH | \ I_PEN_COLOR | I_FILL_COLOR | I_DEPTH | I_CAPSTYLE) #define I_LINE (I_MIN2 | I_LINE1 | I_DEPTH | I_ANGLEGEOM | I_DIMLINE | \ I_ARROWMODE | I_ARROWTYPE | I_ARROWSIZE) #define I_BOX (I_MIN2 | I_LINE1 | I_DEPTH) #define I_CIRCLE (I_MIN2 | I_LINE0 | I_DEPTH) #define I_ELLIPSE (I_MIN2 | I_LINE0 | I_DEPTH | I_ELLTEXTANGLE) #define I_ARC (I_BOX | I_ARROWMODE | I_ARROWTYPE | I_ARROWSIZE | \ I_CAPSTYLE | I_ARCTYPE) #define I_REGPOLY (I_BOX | I_NUMSIDES) #define I_CLOSED (I_BOX | I_ANGLEGEOM) #define I_OPEN (I_CLOSED | I_ARROWMODE | I_ARROWTYPE | I_ARROWSIZE | I_CAPSTYLE) #define I_ARCBOX (I_BOX | I_BOXRADIUS) #define I_PICOBJ (I_MIN2 | I_DEPTH | I_PEN_COLOR) #define I_OBJECT (I_TEXT0 | I_LINE1 | I_ARROWMODE | I_ARROWTYPE | I_ARROWSIZE | \ I_BOXRADIUS | I_DEPTH | I_ARCTYPE | I_DIMLINE) #define I_ALIGN (I_HALIGN | I_VALIGN) #define I_ROTATE (I_MIN2 | I_ROTNANGLE | I_NUMCOPIES) #define I_COPY (I_MIN3 | I_NUMXCOPIES | I_NUMYCOPIES) #define I_ADD_DEL_ARROW (I_LINEWIDTH | I_ARROWTYPE | I_ARROWSIZE) #define I_TANGENT (I_MIN2 | I_LINE1 | I_DEPTH | I_ARROWTYPE | I_ARROWMODE | I_TANGNORMLEN) /* for checking which parts to update */ #define I_UPDATEMASK (I_OBJECT) typedef struct choice_struct { int value; icon_struct *icon; Pixmap pixmap; } choice_info; extern choice_info arrowtype_choices[]; extern choice_info dim_arrowtype_choices[]; extern choice_info fillstyle_choices[]; extern choice_info capstyle_choices[]; extern choice_info joinstyle_choices[]; extern choice_info linestyle_choices[]; typedef struct ind_sw_struct { int type; /* one of I_CHOICE .. I_FVAL */ unsigned long func; char line1[38], line2[8]; int sw_width; int *i_varadr; float *f_varadr; void (*inc_func) (); void (*dec_func) (); void (*show_func) (); int min, max; /* min, max values allowable */ float inc; /* increment for spinner */ choice_info *choices; /* specific to I_CHOICE */ int numchoices; /* specific to I_CHOICE */ int sw_per_row; /* specific to I_CHOICE */ Bool update; /* whether this object component is updated by update */ Widget button; Widget formw; Widget updbut; Pixmap pixmap; Widget panel; /* to keep track if already created */ } ind_sw_info; extern ind_sw_info ind_switches[]; extern ind_sw_info *fill_style_sw; extern ind_sw_info *pen_color_button, *fill_color_button, *depth_button; #define ZOOM_SWITCH_INDEX 0 /* used by w_zoom.c */ #endif /* W_INDPANEL_H */