]> git.sesse.net Git - rdpsrv/blobdiff - Xserver/programs/Xserver/mi/mispritest.h
Import X server from vnc-3.3.7.
[rdpsrv] / Xserver / programs / Xserver / mi / mispritest.h
diff --git a/Xserver/programs/Xserver/mi/mispritest.h b/Xserver/programs/Xserver/mi/mispritest.h
new file mode 100644 (file)
index 0000000..bd2122a
--- /dev/null
@@ -0,0 +1,111 @@
+/*
+ * mispritest.h
+ *
+ * mi sprite structures
+ */
+
+/* $XConsortium: mispritest.h,v 5.14 94/04/17 20:27:55 dpw Exp $ */
+
+/*
+
+Copyright (c) 1989  X Consortium
+
+Permission is hereby granted, free of charge, to any person obtaining a copy
+of this software and associated documentation files (the "Software"), to deal
+in the Software without restriction, including without limitation the rights
+to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
+copies of the Software, and to permit persons to whom the Software is
+furnished to do so, subject to the following conditions:
+
+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
+X CONSORTIUM 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 X Consortium 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 X Consortium.
+*/
+
+# include   "misprite.h"
+
+/*
+ * per screen information
+ */
+
+typedef struct {
+    CloseScreenProcPtr                 CloseScreen;
+    GetImageProcPtr                    GetImage;
+    GetSpansProcPtr                    GetSpans;
+    SourceValidateProcPtr              SourceValidate;
+    CreateGCProcPtr                    CreateGC;
+    ScreenBlockHandlerProcPtr          BlockHandler;
+    InstallColormapProcPtr             InstallColormap;
+    StoreColorsProcPtr                 StoreColors;
+    PaintWindowBackgroundProcPtr       PaintWindowBackground;
+    PaintWindowBorderProcPtr           PaintWindowBorder;
+    CopyWindowProcPtr                  CopyWindow;
+    ClearToBackgroundProcPtr           ClearToBackground;
+    SaveDoomedAreasProcPtr             SaveDoomedAreas;
+    RestoreAreasProcPtr                        RestoreAreas;
+
+    CursorPtr      pCursor;
+    int                    x;
+    int                    y;
+    BoxRec         saved;
+    Bool           isUp;
+    Bool           shouldBeUp;
+    WindowPtr      pCacheWin;
+    Bool           isInCacheWin;
+    Bool           checkPixels;
+    xColorItem     colors[2];
+    ColormapPtr            pInstalledMap;
+    ColormapPtr            pColormap;
+    VisualPtr      pVisual;
+    miSpriteCursorFuncPtr    funcs;
+} miSpriteScreenRec, *miSpriteScreenPtr;
+
+#define SOURCE_COLOR   0
+#define MASK_COLOR     1
+
+typedef struct {
+    GCFuncs            *wrapFuncs;
+    GCOps              *wrapOps;
+} miSpriteGCRec, *miSpriteGCPtr;
+
+/*
+ * Overlap BoxPtr and Box elements
+ */
+#define BOX_OVERLAP(pCbox,X1,Y1,X2,Y2) \
+       (((pCbox)->x1 <= (X2)) && ((X1) <= (pCbox)->x2) && \
+        ((pCbox)->y1 <= (Y2)) && ((Y1) <= (pCbox)->y2))
+
+/*
+ * Overlap BoxPtr, origins, and rectangle
+ */
+#define ORG_OVERLAP(pCbox,xorg,yorg,x,y,w,h) \
+    BOX_OVERLAP((pCbox),(x)+(xorg),(y)+(yorg),(x)+(xorg)+(w),(y)+(yorg)+(h))
+
+/*
+ * Overlap BoxPtr, origins and RectPtr
+ */
+#define ORGRECT_OVERLAP(pCbox,xorg,yorg,pRect) \
+    ORG_OVERLAP((pCbox),(xorg),(yorg),(pRect)->x,(pRect)->y, \
+               (int)((pRect)->width), (int)((pRect)->height))
+/*
+ * Overlap BoxPtr and horizontal span
+ */
+#define SPN_OVERLAP(pCbox,y,x,w) BOX_OVERLAP((pCbox),(x),(y),(x)+(w),(y))
+
+#define LINE_SORT(x1,y1,x2,y2) \
+{ int _t; \
+  if (x1 > x2) { _t = x1; x1 = x2; x2 = _t; } \
+  if (y1 > y2) { _t = y1; y1 = y2; y2 = _t; } }
+
+#define LINE_OVERLAP(pCbox,x1,y1,x2,y2,lw2) \
+    BOX_OVERLAP((pCbox), (x1)-(lw2), (y1)-(lw2), (x2)+(lw2), (y2)+(lw2))