#REFACTORING by stefan
class: XWorkstation
added: #setPlaneMask:in:
changed: #setFunction:in:
--- 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'!