#REFACTORING by stefan
authorStefan Vogel <sv@exept.de>
Tue, 10 May 2016 09:40:58 +0200
changeset 7351 f4896612f0de
parent 7350 cbe52e085dbf
child 7352 6c47c5980dff
#REFACTORING by stefan class: XWorkstation added: #setPlaneMask:in: changed: #setFunction:in:
XWorkstation.st
--- a/XWorkstation.st	Tue May 10 09:39:44 2016 +0200
+++ b/XWorkstation.st	Tue May 10 09:40:58 2016 +0200
@@ -8762,35 +8762,33 @@
 
     <context: #return>
 %{
-
-    GC gc;
     int fun = -1;
 
     if (ISCONNECTED) {
-	if (__isExternalAddress(aGCId)) {
-	    gc = __GCVal(aGCId);
-	    if (aFunctionSymbol == @symbol(copy)) fun = GXcopy;
-	    else if (aFunctionSymbol == @symbol(copyInverted)) fun = GXcopyInverted;
-	    else if (aFunctionSymbol == @symbol(xor)) fun = GXxor;
-	    else if (aFunctionSymbol == @symbol(and)) fun = GXand;
-	    else if (aFunctionSymbol == @symbol(andReverse)) fun = GXandReverse;
-	    else if (aFunctionSymbol == @symbol(andInverted)) fun = GXandInverted;
-	    else if (aFunctionSymbol == @symbol(or)) fun = GXor;
-	    else if (aFunctionSymbol == @symbol(orReverse)) fun = GXorReverse;
-	    else if (aFunctionSymbol == @symbol(orInverted)) fun = GXorInverted;
-	    else if (aFunctionSymbol == @symbol(invert)) fun = GXinvert;
-	    else if (aFunctionSymbol == @symbol(clear)) fun = GXclear;
-	    else if (aFunctionSymbol == @symbol(set)) fun = GXset;
-	    else if (aFunctionSymbol == @symbol(noop)) fun = GXnoop;
-	    else if (aFunctionSymbol == @symbol(equiv)) fun = GXequiv;
-	    else if (aFunctionSymbol == @symbol(nand)) fun = GXnand;
-	    if (fun != -1) {
-		ENTER_XLIB();
-		XSetFunction(myDpy, gc, fun);
-		LEAVE_XLIB();
-		RETURN ( self );
-	    }
-	}
+        if (__isExternalAddress(aGCId)) {
+            GC gc = __GCVal(aGCId);
+            if (aFunctionSymbol == @symbol(copy)) fun = GXcopy;
+            else if (aFunctionSymbol == @symbol(copyInverted)) fun = GXcopyInverted;
+            else if (aFunctionSymbol == @symbol(xor)) fun = GXxor;
+            else if (aFunctionSymbol == @symbol(and)) fun = GXand;
+            else if (aFunctionSymbol == @symbol(andReverse)) fun = GXandReverse;
+            else if (aFunctionSymbol == @symbol(andInverted)) fun = GXandInverted;
+            else if (aFunctionSymbol == @symbol(or)) fun = GXor;
+            else if (aFunctionSymbol == @symbol(orReverse)) fun = GXorReverse;
+            else if (aFunctionSymbol == @symbol(orInverted)) fun = GXorInverted;
+            else if (aFunctionSymbol == @symbol(invert)) fun = GXinvert;
+            else if (aFunctionSymbol == @symbol(clear)) fun = GXclear;
+            else if (aFunctionSymbol == @symbol(set)) fun = GXset;
+            else if (aFunctionSymbol == @symbol(noop)) fun = GXnoop;
+            else if (aFunctionSymbol == @symbol(equiv)) fun = GXequiv;
+            else if (aFunctionSymbol == @symbol(nand)) fun = GXnand;
+            if (fun != -1) {
+                ENTER_XLIB();
+                XSetFunction(myDpy, gc, fun);
+                LEAVE_XLIB();
+                RETURN ( self );
+            }
+        }
     }
 %}.
     "
@@ -8950,6 +8948,28 @@
     }
 %}.
     self primitiveFailedOrClosedConnection
+!
+
+setPlaneMask:bits in:aGCId
+    "set foreground color to be drawn with"
+
+    <context: #return>
+%{
+    if (ISCONNECTED) {
+        if (__isExternalAddress(aGCId)
+         && __isSmallInteger(bits)) {
+            unsigned long mask = __intVal(bits);
+            if (__intVal(bits) == -1) {
+                mask = AllPlanes;
+            }
+            ENTER_XLIB();
+            XSetPlaneMask(myDpy, __GCVal(aGCId), mask);
+            LEAVE_XLIB();
+            RETURN ( self );
+        }
+    }
+%}.
+    self primitiveFailedOrClosedConnection
 ! !
 
 !XWorkstation methodsFor:'initialization & release'!