1 /*
2 
3 Copyright 1989, 1998  The Open Group
4 
5 Permission to use, copy, modify, distribute, and sell this software and its
6 documentation for any purpose is hereby granted without fee, provided that
7 the above copyright notice appear in all copies and that both that
8 copyright notice and this permission notice appear in supporting
9 documentation.
10 
11 The above copyright notice and this permission notice shall be included
12 in all copies or substantial portions of the Software.
13 
14 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
15 OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
16 MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
17 IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
18 OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
19 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
20 OTHER DEALINGS IN THE SOFTWARE.
21 
22 Except as contained in this notice, the name of The Open Group shall
23 not be used in advertising or otherwise to promote the sale, use or
24 other dealings in this Software without prior written authorization
25 from The Open Group.
26 
27 */
28 
29 /*
30  * Author:  Davor Matic, MIT X Consortium
31  */
32 
33 
34 #ifndef _Bitmap_h
35 #define _Bitmap_h
36 
37 /****************************************************************
38  *
39  * Bitmap widget
40  *
41  ****************************************************************/
42 
43 #include <X11/Xaw/Simple.h>
44 
45 /* Resources:
46 
47  Name		     Class		RepType		Default Value
48  ----		     -----		-------		-------------
49  background	     Background		Pixel		XtDefaultBackground
50  foreground          Foredround         Pixel           XtDefaultForeground
51  highlight           Highlight          Pixel           XtDefaultForeground
52  frame               Frame              Pixel           XtDefaultForeground
53  border		     BorderColor	Pixel		XtDefaultForeground
54  borderWidth	     BorderWidth	Dimension	1
55  mappedWhenManaged   MappedWhenManaged	Boolean		True
56  resize              Resize             Boolean         True
57  sensitive	     Sensitive		Boolean		True
58  width		     Width		Dimension	0
59  height		     Height		Dimension	0
60  size                Size               String          32x32
61  squareWidht         SquareWidht        Dimension       16
62  squareHeight        SquareHeight       Dimension       16
63  x		     Position		Position	320
64  y		     Position		Position	320
65  xHot                XHot               Position        NotSet
66  yHot                YHot               Position        NotSet
67  margin              Margin             Dimension       16
68  grid                Grid               Boolean         True
69  gridTolerance       GridTolerance      Dimension       8
70  dashed              Dashed             Boolean         True
71  dashes              Dashes             Bitmap          XtUnspecifiedPixmap
72  stippled            Stippled           Boolean         True
73  stipple             Stipple            Bitmap          XtUnspecifiedPixmap
74  proportional        Proportional       Boolean         True
75  axes                Axes               Boolean         True
76  button1Function     Button1Function    ButtonFunction  Set
77  button2Function     Button2Function    ButtonFunction  Invert
78  button3Function     Button3Function    ButtonFunction  Clear
79  button4Function     Button4Function    ButtonFunction  Invert
80  button5Function     Button5Function    ButtonFunction  Invert
81  filename            Filename           String          None
82  basename            Basename           String          None
83 */
84 
85 /* define any special resource names here that are not in <X11/StringDefs.h> */
86 
87 #define XtNbitmapResource "bitmapResource"
88 #define XtNstipple "stipple"
89 #define XtNstippled "stippled"
90 #define XtNdashes "dashes"
91 #define XtNdashed "dashed"
92 #define XtNgrid "grid"
93 #define XtNgridTolerance "gridTolerance"
94 #define XtNaxes "axes"
95 #define XtNbitmapSize "bitmapSize"
96 #define XtNsize "size"
97 #define XtNsquareWidth "squareWidth"
98 #define XtNsquareHeight "squareHeight"
99 #define XtNxHot "xHot"
100 #define XtNyHot "yHot"
101 #define XtNbutton1Function "button1Function"
102 #define XtNbutton2Function "button2Function"
103 #define XtNbutton3Function "button3Function"
104 #define XtNbutton4Function "button4Function"
105 #define XtNbutton5Function "button5Function"
106 #define XtNfilename "filename"
107 #define XtNbasename "basename"
108 #define XtNmouseForeground "mouseForeground"
109 #define XtNmouseBackground "mouseBackground"
110 #define XtNframe "frame"
111 #define XtNmargin "margin"
112 #define XtNproportional "proportional"
113 
114 #define XtCBitmapResource "BitmapResource"
115 #define XtCHighlight "Highlight"
116 #define XtCStipple "Stipple"
117 #define XtCStippled "Stippled"
118 #define XtCDashes "Dashes"
119 #define XtCDashed "Dashed"
120 #define XtCGrid "Grid"
121 #define XtCGridTolerance "GridTolerance"
122 #define XtCAxes "Axes"
123 #define XtBitmapSize "BitmapSize"
124 #define XtCSize "Size"
125 #define XtCSquareWidth "SquareWidth"
126 #define XtCSquareHeight "SquareHeight"
127 #define XtCXHot "XHot"
128 #define XtCYHot "YHot"
129 #define XtCButton1Function "Button1Function"
130 #define XtCButton2Function "Button2Function"
131 #define XtCButton3Function "Button3Function"
132 #define XtCButton4Function "Button4Function"
133 #define XtCButton5Function "Button5Function"
134 #define XtCFilename "Filename"
135 #define XtCBasename "Basename"
136 #define XtCFrame "Frame"
137 #ifndef XtCMargin
138 #define XtCMargin "Margin"
139 #endif
140 #define XtCProportional "Proportional"
141 
142 #define XtRButtonFunction "ButtonFunction"
143 
144 /* bitmap defines */
145 
146 #define NotSet   -1
147 #define Clear     0
148 #define Set       1
149 #define Invert    2
150 #define Highlight 3
151 #define On        True
152 #define Off       False
153 
154 #define XtClear "clear"
155 #define XtSet "set"
156 #define XtInvert "invert"
157 
158 #define MarkRequest "MarkRequest"
159 #define StoreRequest "StoreRequest"
160 #define RestoreRequest "RestoreRequest"
161 #define CopyRequest "CopyRequest"
162 #define MoveRequest "MoveRequest"
163 #define PointRequest "PointRequest"
164 #define LineRequest "LineRequest"
165 #define CurveRequest "CurveRequest"
166 #define RectangleRequest "RectangleRequest"
167 #define FilledRectangleRequest "FilledRectangleRequest"
168 #define CircleRequest "CircleRequest"
169 #define FilledCircleRequest "FilledCircleRequest"
170 #define FloodFillRequest "FloodFillRequest"
171 #define HotSpotRequest "HotSpotRequest"
172 #define ZoomInRequest "ZoomInRequest"
173 #define PasteRequest "PasteRequest"
174 #define ImmediateCopyRequest "ImmediateCopyRequest"
175 #define ImmediateMoveRequest "ImmediateMoveRequest"
176 
177 /* bitmap exports */
178 
179 typedef struct _BWRequestRec BWRequestRec;
180 typedef const char *BWRequest;
181 
182 /* declare specific BitmapWidget class and instance datatypes */
183 
184 typedef struct _BitmapClassRec *BitmapWidgetClass;
185 typedef struct _BitmapRec      *BitmapWidget;
186 /* declare the class constant */
187 
188 extern WidgetClass bitmapWidgetClass;
189 
190 extern Boolean BWEngageRequest(Widget w, BWRequest name, Boolean trap,
191 			       XtPointer call_data, Cardinal call_data_size);
192 extern Boolean BWTerminateRequest(Widget w, Boolean cont);
193 
194 extern void BWUp ( Widget w );
195 extern void BWDown ( Widget w );
196 extern void BWLeft ( Widget w );
197 extern void BWRight ( Widget w );
198 extern void BWRotateRight ( Widget w );
199 extern void BWRotateLeft ( Widget w );
200 extern void BWSwitchGrid ( Widget w );
201 extern void BWGrid ( Widget w, Boolean _switch );
202 extern void BWSwitchDashed ( Widget w );
203 extern void BWDashed ( Widget w, Boolean _switch );
204 extern void BWSwitchAxes ( Widget w );
205 extern void BWAxes ( Widget w, Boolean _switch );
206 extern void BWRedrawAxes( Widget w );
207 extern void BWDrawLine ( Widget w, Position from_x, Position from_y, Position to_x, Position to_y, int value );
208 extern void BWDrawRectangle ( Widget w, Position from_x, Position from_y, Position to_x, Position to_y, int value );
209 extern void BWDrawFilledRectangle ( Widget w, Position from_x, Position from_y, Position to_x, Position to_y, int value );
210 extern void BWDrawCircle ( Widget w, Position origin_x, Position origin_y, Position point_x, Position point_y, int value );
211 extern void BWDrawFilledCircle ( Widget w, Position origin_x, Position origin_y, Position point_x, Position point_y, int value );
212 extern void BWFloodFill ( Widget w, Position x, Position y, int value );
213 extern void BWMark ( Widget w, Position from_x, Position from_y, Position to_x, Position to_y );
214 extern void BWMarkAll ( Widget w );
215 extern void BWUnmark ( Widget w );
216 extern void BWSelect ( Widget w, Position from_x, Position from_y, Position to_x, Position to_y, Time btime );
217 extern void BWStore ( Widget w );
218 extern void BWStoreToBuffer ( Widget w );
219 extern void BWUndo ( Widget w );
220 extern void BWResize ( Widget w, Dimension width, Dimension height );
221 extern void BWClip ( Widget w, Position x, Position y, Dimension width, Dimension height );
222 extern void BWUnclip ( Widget w );
223 extern void BWGrabSelection ( Widget w, Time btime );
224 extern void BWRequestSelection ( Widget w, Time btime, Boolean wait );
225 extern void BWSetChanged ( Widget w );
226 extern Boolean BWQueryChanged ( Widget w );
227 extern int BWReadFile ( Widget w, _Xconst _XtString filename, _Xconst _XtString basename );
228 extern int BWWriteFile ( Widget w, _Xconst _XtString filename, _Xconst _XtString basename );
229 extern String BWUnparseStatus ( Widget w );
230 extern String BWGetFilename ( Widget w, String *str );
231 extern String BWGetBasename ( Widget w, String *str );
232 extern void BWChangeBasename ( Widget w, _Xconst _XtString str );
233 extern void BWRemoveAllRequests ( Widget w );
234 extern void BWClearHotSpot ( Widget w );
235 extern Boolean BWQueryMarked ( Widget w );
236 extern void BWFold ( Widget w );
237 extern void BWClear ( Widget w );
238 extern void BWSet ( Widget w );
239 extern void BWInvert ( Widget w );
240 extern void BWFlipHoriz ( Widget w );
241 extern void BWFlipVert ( Widget w );
242 extern void BWClearMarked ( Widget w );
243 extern Boolean BWAddRequest ( Widget w, BWRequest name, Boolean trap, XtPointer call_data, Cardinal call_data_size );
244 extern void BWChangeNotify ( Widget w );
245 extern Pixmap BWGetUnzoomedPixmap ( Widget w );
246 extern void BWClearChanged ( Widget w );
247 extern Boolean BWQueryStored ( Widget w );
248 extern Boolean BWQueryStippled ( Widget w );
249 extern void BWSwitchStippled ( Widget w );
250 extern void BWRedrawMark ( Widget w );
251 extern Boolean BWQueryAxes ( Widget w );
252 extern void BWHighlightAxes ( Widget w );
253 extern String BWGetFilepath ( Widget w, String *str );
254 extern void BWZoomOut ( Widget w );
255 extern void BWZoomMarked ( Widget w );
256 extern void BWRescale ( Widget w, Dimension width, Dimension height );
257 extern Boolean BWQueryZooming ( Widget w );
258 extern void BWRedrawGrid ( Widget w, Position x, Position y, Dimension width, Dimension height );
259 extern void BWRedrawSquares ( Widget w, Position x, Position y, Dimension width, Dimension height );
260 extern void BWRedrawHotSpot ( Widget w );
261 extern void BWSetHotSpot(Widget w, Position x, Position y);
262 extern Boolean BWQueryGrid ( Widget w );
263 extern Boolean BWQueryDashed ( Widget w );
264 extern Boolean BWQueryProportional ( Widget w );
265 extern void BWSwitchProportional ( Widget w );
266 extern void BWDrawGrid ( Widget w, Position from_x, Position from_y, Position to_x, Position to_y );
267 extern void BWChangeFilename ( Widget w, _Xconst _XtString str );
268 extern Boolean BWParseSize ( String size, Dimension *width, Dimension *height );
269 extern Boolean BWQuerySelection ( Widget w, Time btime );
270 extern int BWStoreFile ( Widget w, _Xconst _XtString filename, _Xconst _XtString *basename );
271 extern void BWNotify ( Widget w, XtActionProc proc );
272 extern void BWTMark ( Widget w, XEvent *event, String *params, Cardinal *num_params  );
273 extern void BWTMarkAll ( Widget w, XEvent *event, String *params, Cardinal *num_params );
274 extern void BWTUnmark ( Widget w, XEvent *event, String *params, Cardinal *num_params );
275 extern void BWTPaste ( Widget w, XEvent *event, String *params, Cardinal *num_params );
276 extern void BWDebug ( Widget w, XEvent *event, String *params, Cardinal *num_params );
277 extern void BWAbort ( Widget w );
278 extern Boolean BWRemoveRequest ( Widget w );
279 extern void BWRedraw ( Widget w );
280 extern Pixmap BWGetPixmap( Widget w );
281 
282 #endif /* _Bitmap_h */
283 
284 
285