summaryrefslogtreecommitdiff
path: root/BitmapP.h
diff options
context:
space:
mode:
authorKaleb Keithley <kaleb@freedesktop.org>2003-11-14 15:54:52 +0000
committerKaleb Keithley <kaleb@freedesktop.org>2003-11-14 15:54:52 +0000
commit9711ac0a780f686806c135045d2db9b99fbe923f (patch)
tree422a11eba052ec8e1923dcd458943fcdd8d70d04 /BitmapP.h
R6.6 is the Xorg base-lineXORG-MAIN
Diffstat (limited to 'BitmapP.h')
-rw-r--r--BitmapP.h194
1 files changed, 194 insertions, 0 deletions
diff --git a/BitmapP.h b/BitmapP.h
new file mode 100644
index 0000000..eb351cc
--- /dev/null
+++ b/BitmapP.h
@@ -0,0 +1,194 @@
+/* $Xorg: BitmapP.h,v 1.4 2001/02/09 02:05:28 xorgcvs Exp $ */
+/*
+
+Copyright 1989, 1998 The Open Group
+
+Permission to use, copy, modify, distribute, and sell this software and its
+documentation for any purpose is hereby granted without fee, provided that
+the above copyright notice appear in all copies and that both that
+copyright notice and this permission notice appear in supporting
+documentation.
+
+The above copyright notice and this permission notice shall be included
+in all copies or substantial portions of the Software.
+
+THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS
+OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
+MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
+IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR
+OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
+ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
+OTHER DEALINGS IN THE SOFTWARE.
+
+Except as contained in this notice, the name of The Open Group shall
+not be used in advertising or otherwise to promote the sale, use or
+other dealings in this Software without prior written authorization
+from The Open Group.
+
+*/
+
+/*
+ * Author: Davor Matic, MIT X Consortium
+ */
+
+
+
+#ifndef _BitmapP_h
+#define _BitmapP_h
+
+#include "Bitmap.h"
+#include <X11/Xaw/SimpleP.h>
+
+typedef struct {
+ Atom *targets;
+ Cardinal num_targets;
+ BWRequestRec *requests;
+ Cardinal num_requests;
+ BWRequestRec *request[100];
+
+} BitmapClassPart;
+
+/* Full class record declaration */
+typedef struct _BitmapClassRec {
+ CoreClassPart core_class;
+ SimpleClassPart simple_class;
+ BitmapClassPart bitmap_class;
+} BitmapClassRec;
+
+extern BitmapClassRec bitmapClassRec;
+
+/**********/
+struct _BWRequestRec {
+ char *name;
+ int status_size;
+ void (*engage)();
+ XtPointer engage_client_data;
+ void (*terminate)();
+ XtPointer terminate_client_data;
+ void (*remove)();
+ XtPointer remove_client_data;
+} ;
+
+typedef struct {
+ Position from_x, from_y,
+ to_x, to_y;
+} BWArea;
+
+typedef struct {
+ BWRequestRec *request;
+ XtPointer status;
+ Boolean trap;
+ XtPointer call_data;
+} BWRequestStack;
+
+typedef struct {
+ XImage *image, *buffer;
+ XPoint hot;
+ Position at_x, at_y;
+ Boolean fold;
+ Boolean grid;
+ Boolean changed;
+} BWZoom;
+
+typedef struct {
+ Boolean own;
+ Boolean limbo;
+} BWSelection;
+
+/* New fields for the Bitmap widget record */
+typedef struct {
+ /* resources */
+ Pixel foreground_pixel;
+ Pixel highlight_pixel;
+ Pixel frame_pixel;
+ Pixmap stipple;
+ Boolean stippled;
+ Boolean proportional;
+ Boolean grid;
+ Dimension grid_tolerance;
+ Pixmap dashes;
+ Boolean dashed;
+ Boolean axes;
+ Boolean resize;
+ Dimension margin, squareW, squareH, width, height;
+ XPoint hot;
+ int button_function[5];
+ String filename, basename;
+ /* private state */
+ String size;
+ Position horizOffset, vertOffset;
+ void (*notify)();
+ BWRequestStack *request_stack;
+ Cardinal cardinal, current;
+ /*Boolean trapping;*/
+ XImage *image, *buffer, *storage;
+ XPoint buffer_hot;
+ BWArea mark, buffer_mark;
+ GC drawing_gc;
+ GC highlighting_gc;
+ GC frame_gc;
+ GC axes_gc;
+ Boolean changed;
+ Boolean fold;
+ Boolean zooming;
+ BWZoom zoom;
+ XtPointer *value;
+ char status[80];
+ BWSelection selection;
+ Boolean stipple_change_expose_event;
+} BitmapPart;
+
+/* Full instance record declaration */
+typedef struct _BitmapRec {
+ CorePart core;
+ SimplePart simple;
+ BitmapPart bitmap;
+} BitmapRec;
+
+/* Private functions */
+
+#define Length(width, height)\
+ (((int)(width) + 7) / 8 * (height))
+
+#define InBitmapX(BW, x)\
+ (Position)(min((Position)((Dimension)(max(BW->bitmap.horizOffset,x) -\
+ BW->bitmap.horizOffset) /\
+ BW->bitmap.squareW), BW->bitmap.width - 1))
+
+#define InBitmapY(BW, y)\
+ (Position)(min((Position)((Dimension)(max(BW->bitmap.vertOffset, y) -\
+ BW->bitmap.vertOffset) /\
+ BW->bitmap.squareH), BW->bitmap.height - 1))
+
+#define InWindowX(BW, x)\
+ (Position) (BW->bitmap.horizOffset + ((x) * BW->bitmap.squareW))
+
+#define InWindowY(BW, y)\
+ (Position) (BW->bitmap.vertOffset + ((y) * BW->bitmap.squareH))
+
+#define GetPixmap(BW, image)\
+ XCreateBitmapFromData(XtDisplay(BW), XtWindow(BW),\
+ image->data, image->width, image->height)
+
+
+#define QuerySet(x, y) (((x) != NotSet) && ((y) != NotSet))
+
+#define bit int
+
+#define QueryZero(x, y) (((x) == 0) || ((y) == 0))
+
+#define Swap(x, y) {Position t; t = x; x = y; y = t;}
+
+#define QuerySwap(x, y) if(x > y) Swap(x, y)
+
+#define QueryInBitmap(BW, x, y)\
+ (((x) >= 0) && ((x) < BW->bitmap.image->width) &&\
+ ((y) >= 0) && ((y) < BW->bitmap.image->height))
+
+#define Value(BW, button) (BW->bitmap.button_function[button - 1])
+
+#define CreateCleanData(length) XtCalloc(length, sizeof(char))
+XImage *CreateBitmapImage();
+void DestroyBitmapImage();
+
+#endif /* _BitmapP_h */