*** empty log message ***
authorClaus Gittinger <cg@exept.de>
Tue, 21 Oct 1997 20:22:05 +0200
changeset 1932 6afe07d9c88c
parent 1931 27aa9e5b15dd
child 1933 b0fa21da913c
*** empty log message ***
Depth24Image.st
Depth8Image.st
GLXWorkstat.st
GLXWorkstation.st
Image.st
styles/iris.style
--- a/Depth24Image.st	Tue Oct 21 20:11:53 1997 +0200
+++ b/Depth24Image.st	Tue Oct 21 20:22:05 1997 +0200
@@ -10,7 +10,7 @@
  hereby transferred.
 "
 
-'From Smalltalk/X, Version:3.2.1 on 15-oct-1997 at 2:31:29 pm'                  !
+'From Smalltalk/X, Version:3.2.1 on 19-oct-1997 at 5:20:41 pm'                  !
 
 Image subclass:#Depth24Image
 	instanceVariableNames:''
@@ -1343,25 +1343,25 @@
         ^ nil
     ].
 
-    greyLevels := (1 bitShift:depth) - 1.
+    depth ~~ 8 ifTrue:[
+        greyLevels := (1 bitShift:depth) - 1.
+        greyMap1 := Array new:256.
+        greyMap2 := Array new:256.
+        1 to:256 do:[:i |
+            v := (greyLevels / 255 * (i-1)).
+            greyMap1 at:i put:v.
+            greyMap2 at:i put:v.
+        ].
+        greyMap1 := (greyMap1 collect:[:b | b truncated]) asByteArray.      
 
-    greyMap1 := Array new:256.
-    greyMap2 := Array new:256.
-    1 to:256 do:[:i |
-        v := (greyLevels / 255 * (i-1)).
-        greyMap1 at:i put:v.
-        greyMap2 at:i put:v.
+        greyMap2 := (greyMap2 collect:[:el | 
+                                            ((el - el truncated)  "/ the error (0..1)
+                                                * 255) rounded]) asByteArray.
+
+        errorArray := ByteArray new:(w + 2) * 2.
+        errorArray1 := ByteArray new:(w + 2) * 2.
     ].
 
-    greyMap1 := (greyMap1 collect:[:b | b truncated]) asByteArray.      
-
-    greyMap2 := (greyMap2 collect:[:el | 
-                                        ((el - el truncated)  "/ the error (0..1)
-                                            * 255) rounded]) asByteArray.
-
-    errorArray := ByteArray new:(w + 2) * 2.
-    errorArray1 := ByteArray new:(w + 2) * 2.
-
 %{
     int __byte;
     int __dT, __err, __e16, __eR, __eB, __eRB, __eLB;
@@ -1389,70 +1389,91 @@
     short *__errorArray1 = (short *)(__ByteArrayInstPtr(errorArray1)->ba_element);
     short *__t;
 
-    bzero(errorArray1, (__w+2) * 2);
+    if (__depth == 8) {
+        /*
+         * special code for destination depth 8
+         */
+        for (__y=0; __y<__h; __y++) {
+            __nextDst = __dstIdx + __bytesPerOutRow;
+            __nextSrc = __srcIdx + __bytesPerRow;
+            for (__x=0; __x<__w; __x++) {
+                __grey = (__bytes[__srcIdx] * 3)           /* 0.3*r + 0.6*g + b -> 0..2550 */
+                         + (__bytes[__srcIdx+1] * 6)
+                         + __bytes[__srcIdx+2];   
+                __pixel = __grey / 10;                      /* 0 .. 255 */
 
-    __bitCnt = 8;
-    for (__y=0; __y<__h; __y++) {
-        __nextDst = __dstIdx + __bytesPerOutRow;
-        __nextSrc = __srcIdx + __bytesPerRow;
-
-        __byte = 0;
-
-        __t = __errorArray;
-        __errorArray = __errorArray1;
-        __errorArray1 = __t;
+                __srcIdx += 3;
+                __outBits[__dstIdx] = __pixel;
+               __dstIdx++;
+            }
+            __srcIdx = __nextSrc;
+            __dstIdx = __nextDst;
+        }
+    } else {
         bzero(errorArray1, (__w+2) * 2);
 
-        for (__x=0; __x<__w; __x++) {
-            __grey = (__bytes[__srcIdx] * 3)           /* 0.3*r + 0.6*g + b -> 0..2550 */
-                     + (__bytes[__srcIdx+1] * 6)
-                     + __bytes[__srcIdx+2];   
-            __grey = __grey / 10;                      /* 0 .. 255 */
+        __bitCnt = 8;
+        for (__y=0; __y<__h; __y++) {
+            __nextDst = __dstIdx + __bytesPerOutRow;
+            __nextSrc = __srcIdx + __bytesPerRow;
+
+            __byte = 0;
 
-            __pixel = __greyMap1[__grey];            /* 0..(greyLevels-1) */
-            __err = __greyMap2[__grey];              /* 0.. 255 - error) */
-            __err += __errorArray[__x+1];
+            __t = __errorArray;
+            __errorArray = __errorArray1;
+            __errorArray1 = __t;
+            bzero(errorArray1, (__w+2) * 2);
+
+            for (__x=0; __x<__w; __x++) {
+                __grey = (__bytes[__srcIdx] * 3)           /* 0.3*r + 0.6*g + b -> 0..2550 */
+                         + (__bytes[__srcIdx+1] * 6)
+                         + __bytes[__srcIdx+2];   
+                __grey = __grey / 10;                      /* 0 .. 255 */
+
+                __pixel = __greyMap1[__grey];            /* 0..(greyLevels-1) */
+                __err = __greyMap2[__grey];              /* 0.. 255 - error) */
+                __err += __errorArray[__x+1];
 
-            if (__err > 127) {                        /* dither says: next pixel */
-               if ( __pixel != __greyLevels)
-                    __pixel++;
-                __err = __err - 255;
-            } else {
-            }
-            if (__err) {
-                __e16 = __err >> 4;
-                __eR = __e16 * 7;
-                __eRB = __e16 * 1;
-                __eB = __e16 * 5;
-                __eLB = __err - __eR - __eRB - __eB;
-                
-                __errorArray [__x+1+1] += __eR;
-                __errorArray1[__x+1+1] += __eRB;
-                __errorArray1[__x+1  ] += __eB;
-                __errorArray1[__x+1-1] += __eLB;
+                if (__err > 127) {                        /* dither says: next pixel */
+                   if ( __pixel != __greyLevels)
+                        __pixel++;
+                    __err = __err - 255;
+                } else {
+                }
+                if (__err) {
+                    __e16 = __err >> 4;
+                    __eR = __e16 * 7;                    /* 7/16 -> right pixel */
+                    __eRB = __e16 * 1;                   /* 1/16 -> right below */
+                    __eB = __e16 * 5;                    /* 5/16 -> below */
+                    __eLB = __err - __eR - __eRB - __eB; /* 3/16 -> left below */
+                    
+                    __errorArray [__x+1+1] += __eR;      
+                    __errorArray1[__x+1+1] += __eRB;     
+                    __errorArray1[__x+1  ] += __eB;      
+                    __errorArray1[__x+1-1] += __eLB;     
+                }
+
+                __srcIdx += 3;
+
+                __byte = (__byte << __depth) | __pixel;
+
+                __bitCnt = __bitCnt - __depth;
+                if (__bitCnt == 0) {
+                    __outBits[__dstIdx] = __byte;
+                    __dstIdx++;
+                    __byte = 0;
+                    __bitCnt = 8;
+                }
             }
 
-            __srcIdx += 3;
-
-            __byte = (__byte << __depth) | __pixel;
-
-            __bitCnt = __bitCnt - __depth;
-            if (__bitCnt == 0) {
+            if (__bitCnt != 8) {
+                __byte = __byte << __bitCnt;
                 __outBits[__dstIdx] = __byte;
-                __dstIdx++;
-                __byte = 0;
                 __bitCnt = 8;
             }
+            __srcIdx = __nextSrc;
+            __dstIdx = __nextDst;
         }
-
-        if (__bitCnt != 8) {
-            __byte = __byte << __bitCnt;
-            __outBits[__dstIdx] = __byte;
-            __bitCnt = 8;
-        }
-
-        __srcIdx = __nextSrc;
-        __dstIdx = __nextDst;
     }
 %}.
 
@@ -1916,7 +1937,7 @@
     bitsPerPixel := self depth.
     newBytesPerRow := ((newWidth * bitsPerPixel) + 7) // 8.
     newBits := ByteArray new: "uninitializedNew:" (newBytesPerRow * newHeight).
-    newBits isNil ifTrue:[self halt].
+    newBits isNil ifTrue:[^ nil].
 
     mask notNil ifTrue:[
         newMask := (mask magnifiedBy:scalePoint)
@@ -2264,5 +2285,5 @@
 !Depth24Image class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview/Depth24Image.st,v 1.57 1997-10-15 11:23:57 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/Depth24Image.st,v 1.58 1997-10-21 18:20:12 cg Exp $'
 ! !
--- a/Depth8Image.st	Tue Oct 21 20:11:53 1997 +0200
+++ b/Depth8Image.st	Tue Oct 21 20:22:05 1997 +0200
@@ -10,7 +10,7 @@
  hereby transferred.
 "
 
-'From Smalltalk/X, Version:3.2.1 on 15-oct-1997 at 2:31:42 pm'                  !
+'From Smalltalk/X, Version:3.2.1 on 19-oct-1997 at 5:19:15 pm'                  !
 
 Image subclass:#Depth8Image
 	instanceVariableNames:''
@@ -191,6 +191,355 @@
 
 !Depth8Image methodsFor:'converting'!
 
+anyImageAsPseudoFormOn:aDevice
+    "return a pseudoForm from the palette picture. 
+     The main work is in color reduction, when not all colors can be aquired.
+     This method works for any photometric."
+
+    |pseudoBits f gcRound has8BitImage deviceDepth
+     imgMap newImage pixelRow dColors
+     usedColors usageCounts maxIndex map
+     fit scale lastOK error 
+     div 
+     bitsPerRGB "{Class: SmallInteger }"
+     shift      "{Class: SmallInteger }"
+     m          "{Class: SmallInteger }" 
+     cube nR nG nB ditherColors|
+
+    (cube := aDevice fixColors) notNil ifTrue:[
+        nR := aDevice numFixRed.
+        nG := aDevice numFixGreen.
+        nB := aDevice numFixBlue.
+
+        DitherAlgorithm == #floydSteinberg ifTrue:[
+            f := self
+                   asFloydSteinbergDitheredDepth8FormOn:aDevice 
+                   colors:cube 
+                   nRed:nR
+                   nGreen:nG
+                   nBlue:nB.
+        ] ifFalse:[
+            f := self
+                   asNearestPaintDepth8FormOn:aDevice 
+                   colors:cube 
+                   nRed:nR
+                   nGreen:nG
+                   nBlue:nB.
+        ].
+        f notNil ifTrue:[^ f].
+    ].
+
+    "find used colors"
+
+    usedColors := bytes usedValues.    "gets us an array filled with used values"
+                                       "(could use bytes asBag)"
+    maxIndex := usedColors max + 1.
+
+    usedColors size > 20 ifTrue:[
+        ('Depth8Image [info]: allocating ' , usedColors size printString , ' colors ...') infoPrintCR.
+    ].
+
+    "sort by usage"
+    usageCounts := bytes usageCounts.
+    usageCounts := usedColors asArray collect:[:clr | usageCounts at:(clr + 1)].
+    usageCounts sort:[:a :b | a > b] with:usedColors.
+
+    "allocate the colors (in order of usage count)"
+
+    imgMap := Array new:maxIndex.
+
+    "
+     first, try to get the exact colors ...
+    "
+    bitsPerRGB := aDevice bitsPerRGB.
+    shift := (8 - bitsPerRGB) negated.
+    m := (1 bitShift:bitsPerRGB) - 1.
+    div := m asFloat.
+
+    fit := true.
+    scale := 100.0 / div.       "to scale 0..255 into 0.0 .. 100.0"
+    lastOK := 0.
+    gcRound := 0.
+
+    usedColors do:[:aColorIndex |
+        |devColor color
+         r        "{Class: SmallInteger }"
+         g        "{Class: SmallInteger }"
+         b        "{Class: SmallInteger }"
+         mapIndex "{Class: SmallInteger }"|
+
+        fit ifTrue:[
+            mapIndex := aColorIndex + 1.
+            "/ color := colorMap at:mapIndex.
+
+            color := self colorFromValue:aColorIndex. 
+            (color colorId notNil 
+            and:[color graphicsDevice == aDevice]) ifTrue:[
+                "wow - an immediate hit"
+                devColor := color
+            ] ifFalse:[
+                devColor := color exactOn:aDevice.
+                devColor isNil ifTrue:[
+                    "
+                     could not allocate color - on the first round, do a GC to flush 
+                     unused colors - this may help if some colors where locked by 
+                     already free images.
+                    "
+                    gcRound == 0 ifTrue:[
+                        ObjectMemory scavenge; finalize.
+                        devColor := color exactOn:aDevice.
+                        gcRound := 1
+                    ].
+                    devColor isNil ifTrue:[
+                        gcRound == 1 ifTrue:[
+                            CollectGarbageWhenRunningOutOfColors ifTrue:[
+                                'Depth8Image [info]: force GC for possible color reclamation.' infoPrintCR.
+                                ObjectMemory incrementalGC; finalize.
+                                devColor := color exactOn:aDevice.
+                            ].    
+                            gcRound := 2
+                        ]
+                    ]
+                ].
+            ].
+            (devColor notNil and:[devColor colorId notNil]) ifTrue:[
+                imgMap at:mapIndex put:devColor.
+                lastOK := lastOK + 1.
+            ] ifFalse:[
+                fit := false
+            ]
+        ]
+    ].
+
+    fit ifFalse:[
+        ('Depth8Image [info]: got %1 exact colors (out of %2)' bindWith:lastOK with:usedColors size) infoPrintCR.
+
+        DitherAlgorithm == #floydSteinberg ifTrue:[
+            dColors := imgMap collect:[:clr | clr isNil ifTrue:[clr]
+                                                        ifFalse:[clr nearestOn:aDevice]].
+            dColors := dColors select:[:clr | clr notNil].
+            dColors := dColors collect:[:clr | clr exactOn:aDevice].
+            dColors := dColors select:[:clr | clr notNil].
+            dColors := dColors asSet.
+            dColors addAll:((aDevice colorMap collect:[:c|c onDevice:aDevice])
+                            select:[:c | c colorId notNil]).
+            ditherColors := aDevice availableDitherColors.
+            ditherColors notNil ifTrue:[
+                dColors addAll:ditherColors.
+            ].
+            dColors := dColors asArray.
+            dColors size > 256 ifTrue:[
+                dColors := dColors copyTo:256
+            ].
+            ^ self asFloydSteinbergDitheredPseudoFormUsing:dColors on:aDevice
+        ].
+
+        "
+         again, this time allow wrong colors (loop while increasing allowed error)
+        "
+        error := 1.
+        [fit] whileFalse:[
+            fit := true.
+            usedColors from:(lastOK+1) to:(usedColors size) do:[:aColorIndex |
+                |devColor color
+                 r        "{Class: SmallInteger }"
+                 g        "{Class: SmallInteger }"
+                 b        "{Class: SmallInteger }"
+                 mapIndex "{Class: SmallInteger }"
+                 rMask    "{Class: SmallInteger }"
+                 gMask    "{Class: SmallInteger }"
+                 bMask    "{Class: SmallInteger }"|
+
+                fit ifTrue:[
+                    gMask := bMask := rMask := m.
+
+                    mapIndex := aColorIndex + 1.
+                    "/ color := colorMap at:mapIndex.
+                    color := self colorFromValue:aColorIndex. 
+                    r := (color red * 255 / 100.0) rounded.
+                    g := (color green * 255 / 100.0) rounded.
+                    b := (color blue * 255 / 100.0) rounded.
+
+                    color := Color red:((r bitShift:shift) bitAnd:rMask) * scale
+                                 green:((g bitShift:shift) bitAnd:gMask) * scale
+                                  blue:((b bitShift:shift) bitAnd:bMask) * scale.
+
+                    (color colorId notNil 
+                    and:[color graphicsDevice == aDevice]) ifTrue:[
+                        "wow - an immediate hit"
+                        devColor := color.
+                    ] ifFalse:[
+                        devColor := color nearestOn:aDevice.
+                        (devColor notNil and:[(devColor deltaFrom:color) > error]) ifTrue:[
+                            devColor := nil
+                        ].
+                        devColor isNil ifTrue:[
+                            "
+                             no free color - on the first round, do a GC to flush unused
+                             colors - this may help if some colors where locked by already
+                             free images.
+                            "
+                            gcRound == 0 ifTrue:[
+                                ObjectMemory scavenge; finalize.
+                                devColor := color nearestOn:aDevice.
+                                (devColor notNil and:[(devColor deltaFrom:color) > error]) ifTrue:[
+                                    devColor := nil
+                                ].
+                                gcRound := 1
+                            ].
+                            devColor isNil ifTrue:[
+                                gcRound == 1 ifTrue:[
+                                    CollectGarbageWhenRunningOutOfColors ifTrue:[
+                                        'Depth8Image [info]: force GC for possible color reclamation.' infoPrintCR.
+                                        ObjectMemory incrementalGC; finalize.
+                                        devColor := color nearestOn:aDevice.
+                                        (devColor notNil and:[(devColor deltaFrom:color) > error]) ifTrue:[
+                                            devColor := nil
+                                        ].
+                                    ].
+                                    gcRound := 2
+                                ]
+                            ]
+                        ].
+                    ].
+                    (devColor notNil and:[devColor colorId notNil]) ifTrue:[
+                        imgMap at:mapIndex put:devColor.
+                        lastOK := lastOK + 1.
+                    ] ifFalse:[
+                        fit := false
+                    ]
+                ].
+            ].
+
+            fit ifTrue:[
+                ('Depth8Image [info]: remaining colors with error <= %1' bindWith:error) infoPrintCR.
+            ].
+
+            error := error * 2.
+            error > 100 ifTrue:[
+                "
+                 break out, if the error becomes too big.
+                "
+                'Depth8Image [info]: hard color allocation problem - revert to b&w for remaining colors' infoPrintCR.
+                "
+                 map to b&w as a last fallback.
+                 (should really do a dither here)
+                "
+                usedColors from:(lastOK+1) to:(usedColors size) do:[:aColorIndex |
+                    |color
+                     mapIndex "{ Class: SmallInteger }"|
+
+                    mapIndex := aColorIndex + 1.
+                    "/ color := colorMap at:mapIndex.
+                    color := self colorFromValue:aColorIndex. 
+                    color brightness > 0.4 ifTrue:[
+                        color := Color white.
+                    ] ifFalse:[
+                        color := Color black.
+                    ].
+                    imgMap at:mapIndex put:(color on:aDevice).
+                ].
+                fit := true.
+            ]
+        ].
+
+        error > 10 ifTrue:[
+            'Depth8Image [info]: not enough colors for a reasonable image' infoPrintCR
+        ] ifFalse:[
+            'Depth8Image [info]: not enough colors for exact picture' infoPrintCR.
+        ]
+    ].
+
+    "
+     create translation map (from image colors to allocated colorIds)
+    "
+    map := ByteArray new:256.
+    1 to:imgMap size do:[:i |
+        |clr|
+
+        (clr := imgMap at:i) notNil ifTrue:[
+            map at:i put:clr colorId
+        ]
+    ].
+
+    "
+     does the device support 8-bit images ?
+    "
+    deviceDepth := aDevice depth.
+    deviceDepth == 8 ifTrue:[
+        has8BitImage := true.
+    ] ifFalse:[
+        has8BitImage := false.
+        aDevice supportedImageFormats do:[:fmt |
+            (fmt at:#bitsPerPixel) == 8 ifTrue:[
+                has8BitImage := true.
+            ]
+        ]
+    ].
+
+    "
+     finally, create a form on the device and copy (& translate)
+     the pixel values
+    "
+    has8BitImage ifTrue:[
+        pseudoBits := ByteArray uninitializedNew:(width * height).
+
+        bytes expandPixels:8         "xlate only"
+                    width:width 
+                   height:height
+                     into:pseudoBits
+                  mapping:map.
+
+        map := nil.
+
+        f := Form width:width height:height depth:deviceDepth on:aDevice.
+        f isNil ifTrue:[^ nil].
+        f colorMap:imgMap. 
+        f initGC.
+        aDevice drawBits:pseudoBits bitsPerPixel:8 depth:deviceDepth  
+                   width:width height:height
+                       x:0 y:0
+                    into:(f id) x:0 y:0 
+                   width:width height:height with:(f gcId).
+        ^ f
+    ].
+
+    "
+     slow fall back: convert into appropriate depth image,
+     by looping over each pixel individually
+    "
+    newImage := (Image implementorForDepth:deviceDepth) new.
+    newImage width:width.
+    newImage height:height.
+    newImage bits:(ByteArray uninitializedNew:(height * newImage bytesPerRow)).
+
+    0 to:height-1 do:[:row |
+        pixelRow := self rowAt:row.
+        pixelRow
+            expandPixels:8         "xlate only"
+            width:width 
+            height:1
+            into:pixelRow
+            mapping:map.
+        newImage rowAt:row putAll:pixelRow
+    ].
+
+    f := Form width:width height:height depth:deviceDepth on:aDevice.
+    f isNil ifTrue:[^ nil].
+    f colorMap:imgMap. 
+    f initGC.
+
+    aDevice drawBits:(newImage bits) depth:deviceDepth width:width height:height
+                   x:0 y:0
+                into:(f id) x:0 y:0 
+               width:width height:height with:(f gcId).
+
+    ^ f
+
+    "Modified: 15.10.1997 / 01:48:20 / cg"
+    "Created: 19.10.1997 / 04:57:05 / cg"
+!
+
 fromImage:anImage
     "setup the receiver from another image.
      The code here is tuned for depth 1, 2 and 4 source images;
@@ -311,347 +660,23 @@
     "Modified: 10.6.1996 / 18:54:36 / cg"
 !
 
+greyImageAsPseudoFormOn:aDevice
+    "return a pseudoForm from the gray picture. The main work is
+     in color reduction, when not all colors can be aquired."
+
+    ^ self anyImageAsPseudoFormOn:aDevice
+
+    "Modified: 19.10.1997 / 04:57:39 / cg"
+    "Created: 19.10.1997 / 04:58:41 / cg"
+!
+
 paletteImageAsPseudoFormOn:aDevice
     "return a pseudoForm from the palette picture. The main work is
      in color reduction, when not all colors can be aquired."
 
-    |pseudoBits f gcRound has8BitImage deviceDepth
-     imgMap newImage pixelRow dColors
-     usedColors usageCounts maxIndex map
-     fit scale lastOK error 
-     div 
-     bitsPerRGB "{Class: SmallInteger }"
-     shift      "{Class: SmallInteger }"
-     m          "{Class: SmallInteger }" 
-     cube nR nG nB ditherColors|
-
-    (cube := aDevice fixColors) notNil ifTrue:[
-        nR := aDevice numFixRed.
-        nG := aDevice numFixGreen.
-        nB := aDevice numFixBlue.
-
-        DitherAlgorithm == #floydSteinberg ifTrue:[
-            f := self
-                   asFloydSteinbergDitheredDepth8FormOn:aDevice 
-                   colors:cube 
-                   nRed:nR
-                   nGreen:nG
-                   nBlue:nB.
-        ] ifFalse:[
-            f := self
-                   asNearestPaintDepth8FormOn:aDevice 
-                   colors:cube 
-                   nRed:nR
-                   nGreen:nG
-                   nBlue:nB.
-        ].
-        f notNil ifTrue:[^ f].
-    ].
-
-    "find used colors"
-
-    usedColors := bytes usedValues.    "gets us an array filled with used values"
-                                       "(could use bytes asBag)"
-    maxIndex := usedColors max + 1.
-
-    usedColors size > 20 ifTrue:[
-        ('Depth8Image [info]: allocating ' , usedColors size printString , ' colors ...') infoPrintCR.
-    ].
-
-    "sort by usage"
-    usageCounts := bytes usageCounts.
-    usageCounts := usedColors asArray collect:[:clr | usageCounts at:(clr + 1)].
-    usageCounts sort:[:a :b | a > b] with:usedColors.
-
-    "allocate the colors (in order of usage count)"
-
-    imgMap := Array new:maxIndex.
-
-    "
-     first, try to get the exact colors ...
-    "
-    bitsPerRGB := aDevice bitsPerRGB.
-    shift := (8 - bitsPerRGB) negated.
-    m := (1 bitShift:bitsPerRGB) - 1.
-    div := m asFloat.
-
-    fit := true.
-    scale := 100.0 / div.       "to scale 0..255 into 0.0 .. 100.0"
-    lastOK := 0.
-    gcRound := 0.
-
-    usedColors do:[:aColorIndex |
-        |devColor color
-         r        "{Class: SmallInteger }"
-         g        "{Class: SmallInteger }"
-         b        "{Class: SmallInteger }"
-         mapIndex "{Class: SmallInteger }"|
-
-        fit ifTrue:[
-            mapIndex := aColorIndex + 1.
-            color := colorMap at:mapIndex.
-            (color colorId notNil 
-            and:[color graphicsDevice == aDevice]) ifTrue:[
-                "wow - an immediate hit"
-                devColor := color
-            ] ifFalse:[
-                devColor := color exactOn:aDevice.
-                devColor isNil ifTrue:[
-                    "
-                     could not allocate color - on the first round, do a GC to flush 
-                     unused colors - this may help if some colors where locked by 
-                     already free images.
-                    "
-                    gcRound == 0 ifTrue:[
-                        ObjectMemory scavenge; finalize.
-                        devColor := color exactOn:aDevice.
-                        gcRound := 1
-                    ].
-                    devColor isNil ifTrue:[
-                        gcRound == 1 ifTrue:[
-                            CollectGarbageWhenRunningOutOfColors ifTrue:[
-                                'Depth8Image [info]: force GC for possible color reclamation.' infoPrintCR.
-                                ObjectMemory incrementalGC; finalize.
-                                devColor := color exactOn:aDevice.
-                            ].    
-                            gcRound := 2
-                        ]
-                    ]
-                ].
-            ].
-            (devColor notNil and:[devColor colorId notNil]) ifTrue:[
-                imgMap at:mapIndex put:devColor.
-                lastOK := lastOK + 1.
-            ] ifFalse:[
-                fit := false
-            ]
-        ]
-    ].
-
-    fit ifFalse:[
-        ('Depth8Image [info]: got %1 exact colors (out of %2)' bindWith:lastOK with:usedColors size) infoPrintCR.
-
-        DitherAlgorithm == #floydSteinberg ifTrue:[
-            dColors := colorMap asArray collect:[:clr | clr isNil ifTrue:[clr]
-                                                          ifFalse:[clr nearestOn:aDevice]].
-            dColors := dColors select:[:clr | clr notNil].
-            dColors := dColors collect:[:clr | clr exactOn:aDevice].
-            dColors := dColors select:[:clr | clr notNil].
-            dColors := dColors asSet.
-            dColors addAll:((aDevice colorMap collect:[:c|c onDevice:aDevice])
-                            select:[:c | c colorId notNil]).
-            ditherColors := aDevice availableDitherColors.
-            ditherColors notNil ifTrue:[
-                dColors addAll:ditherColors.
-            ].
-            dColors := dColors asArray.
-            dColors size > 256 ifTrue:[
-                dColors := dColors copyTo:256
-            ].
-            ^ self asFloydSteinbergDitheredPseudoFormUsing:dColors on:aDevice
-        ].
-
-        "
-         again, this time allow wrong colors (loop while increasing allowed error)
-        "
-        error := 1.
-        [fit] whileFalse:[
-            fit := true.
-            usedColors from:(lastOK+1) to:(usedColors size) do:[:aColorIndex |
-                |devColor color
-                 r        "{Class: SmallInteger }"
-                 g        "{Class: SmallInteger }"
-                 b        "{Class: SmallInteger }"
-                 mapIndex "{Class: SmallInteger }"
-                 rMask    "{Class: SmallInteger }"
-                 gMask    "{Class: SmallInteger }"
-                 bMask    "{Class: SmallInteger }"|
-
-                fit ifTrue:[
-                    gMask := bMask := rMask := m.
-
-                    mapIndex := aColorIndex + 1.
-                    color := colorMap at:mapIndex.
-                    r := (color red * 255 / 100.0) rounded.
-                    g := (color green * 255 / 100.0) rounded.
-                    b := (color blue * 255 / 100.0) rounded.
-
-                    color := Color red:((r bitShift:shift) bitAnd:rMask) * scale
-                                 green:((g bitShift:shift) bitAnd:gMask) * scale
-                                  blue:((b bitShift:shift) bitAnd:bMask) * scale.
+    ^ self anyImageAsPseudoFormOn:aDevice
 
-                    (color colorId notNil 
-                    and:[color graphicsDevice == aDevice]) ifTrue:[
-                        "wow - an immediate hit"
-                        devColor := color.
-                    ] ifFalse:[
-                        devColor := color nearestOn:aDevice.
-                        (devColor notNil and:[(devColor deltaFrom:color) > error]) ifTrue:[
-                            devColor := nil
-                        ].
-                        devColor isNil ifTrue:[
-                            "
-                             no free color - on the first round, do a GC to flush unused
-                             colors - this may help if some colors where locked by already
-                             free images.
-                            "
-                            gcRound == 0 ifTrue:[
-                                ObjectMemory scavenge; finalize.
-                                devColor := color nearestOn:aDevice.
-                                (devColor notNil and:[(devColor deltaFrom:color) > error]) ifTrue:[
-                                    devColor := nil
-                                ].
-                                gcRound := 1
-                            ].
-                            devColor isNil ifTrue:[
-                                gcRound == 1 ifTrue:[
-                                    CollectGarbageWhenRunningOutOfColors ifTrue:[
-                                        'Depth8Image [info]: force GC for possible color reclamation.' infoPrintCR.
-                                        ObjectMemory incrementalGC; finalize.
-                                        devColor := color nearestOn:aDevice.
-                                        (devColor notNil and:[(devColor deltaFrom:color) > error]) ifTrue:[
-                                            devColor := nil
-                                        ].
-                                    ].
-                                    gcRound := 2
-                                ]
-                            ]
-                        ].
-                    ].
-                    (devColor notNil and:[devColor colorId notNil]) ifTrue:[
-                        imgMap at:mapIndex put:devColor.
-                        lastOK := lastOK + 1.
-                    ] ifFalse:[
-                        fit := false
-                    ]
-                ].
-            ].
-
-            fit ifTrue:[
-                ('Depth8Image [info]: remaining colors with error <= %1' bindWith:error) infoPrintCR.
-            ].
-
-            error := error * 2.
-            error > 100 ifTrue:[
-                "
-                 break out, if the error becomes too big.
-                "
-                'Depth8Image [info]: hard color allocation problem - revert to b&w for remaining colors' infoPrintCR.
-                "
-                 map to b&w as a last fallback.
-                 (should really do a dither here)
-                "
-                usedColors from:(lastOK+1) to:(usedColors size) do:[:aColorIndex |
-                    |color
-                     mapIndex "{ Class: SmallInteger }"|
-
-                    mapIndex := aColorIndex + 1.
-                    color := colorMap at:mapIndex.
-                    color brightness > 0.4 ifTrue:[
-                        color := Color white.
-                    ] ifFalse:[
-                        color := Color black.
-                    ].
-                    imgMap at:mapIndex put:(color on:aDevice).
-                ].
-                fit := true.
-            ]
-        ].
-
-        error > 10 ifTrue:[
-            'Depth8Image [info]: not enough colors for a reasonable image' infoPrintCR
-        ] ifFalse:[
-            'Depth8Image [info]: not enough colors for exact picture' infoPrintCR.
-        ]
-    ].
-
-    "
-     create translation map (from image colors to allocated colorIds)
-    "
-    map := ByteArray new:256.
-    1 to:imgMap size do:[:i |
-        |clr|
-
-        (clr := imgMap at:i) notNil ifTrue:[
-            map at:i put:clr colorId
-        ]
-    ].
-
-    "
-     does the device support 8-bit images ?
-    "
-    deviceDepth := aDevice depth.
-    deviceDepth == 8 ifTrue:[
-        has8BitImage := true.
-    ] ifFalse:[
-        has8BitImage := false.
-        aDevice supportedImageFormats do:[:fmt |
-            (fmt at:#bitsPerPixel) == 8 ifTrue:[
-                has8BitImage := true.
-            ]
-        ]
-    ].
-
-    "
-     finally, create a form on the device and copy (& translate)
-     the pixel values
-    "
-    has8BitImage ifTrue:[
-        pseudoBits := ByteArray uninitializedNew:(width * height).
-
-        bytes expandPixels:8         "xlate only"
-                    width:width 
-                   height:height
-                     into:pseudoBits
-                  mapping:map.
-
-        map := nil.
-
-        f := Form width:width height:height depth:deviceDepth on:aDevice.
-        f isNil ifTrue:[^ nil].
-        f colorMap:imgMap. 
-        f initGC.
-        aDevice drawBits:pseudoBits bitsPerPixel:8 depth:deviceDepth  
-                   width:width height:height
-                       x:0 y:0
-                    into:(f id) x:0 y:0 
-                   width:width height:height with:(f gcId).
-        ^ f
-    ].
-
-    "
-     slow fall back: convert into appropriate depth image,
-     by looping over each pixel individually
-    "
-    newImage := (Image implementorForDepth:deviceDepth) new.
-    newImage width:width.
-    newImage height:height.
-    newImage bits:(ByteArray uninitializedNew:(height * newImage bytesPerRow)).
-
-    0 to:height-1 do:[:row |
-        pixelRow := self rowAt:row.
-        pixelRow
-            expandPixels:8         "xlate only"
-            width:width 
-            height:1
-            into:pixelRow
-            mapping:map.
-        newImage rowAt:row putAll:pixelRow
-    ].
-
-    f := Form width:width height:height depth:deviceDepth on:aDevice.
-    f isNil ifTrue:[^ nil].
-    f colorMap:imgMap. 
-    f initGC.
-
-    aDevice drawBits:(newImage bits) depth:deviceDepth width:width height:height
-                   x:0 y:0
-                into:(f id) x:0 y:0 
-               width:width height:height with:(f gcId).
-
-    ^ f
-
-    "Modified: 15.10.1997 / 01:48:20 / cg"
+    "Modified: 19.10.1997 / 04:57:39 / cg"
 !
 
 paletteImageAsTrueColorFormOn:aDevice
@@ -1714,5 +1739,5 @@
 !Depth8Image class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview/Depth8Image.st,v 1.75 1997-10-15 11:23:11 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/Depth8Image.st,v 1.76 1997-10-21 18:20:15 cg Exp $'
 ! !
--- a/GLXWorkstat.st	Tue Oct 21 20:11:53 1997 +0200
+++ b/GLXWorkstat.st	Tue Oct 21 20:22:05 1997 +0200
@@ -24,7 +24,7 @@
  * for simulation (using vogl), this is compiled with -DVGL
  *   
  * New note: starting to support openGL (tm) (compile with -DOPENGL)
- * or its simulation (compile with -DOPENGL -DMESA)
+ * or its simulation (compile with -DMESA)
  */
 
 /*
@@ -44,7 +44,9 @@
  * these are not available on all gl's
  */
 
+#ifdef GLX
 /* #define FULL_GLX */
+#endif
 
 /*
  * this is stupid, GLX type-defs String, which is also defined here ...
@@ -71,6 +73,12 @@
 
 #include <stdio.h>
 
+#ifndef OPENGL
+# ifdef MESA
+#  define OPENGL
+# endif
+#endif
+
 #ifdef OPENGL   /* SGI or others OPENGL library */
 
 # include "GL/gl.h"
@@ -404,10 +412,10 @@
     }
 
     if (@global(ErrorPrinting) == true) {
-	fprintf(stderr, "XWORKSTAT: x-error caught maj=%d (0x%x) min=%d (0x%x) resource=%x\n",
+	fprintf(stderr, "GLXWORKSTAT: x-error caught maj=%d (0x%x) min=%d (0x%x) resource=%x\n",
 			event->request_code, event->request_code,
 			event->minor_code, event->minor_code, event->resourceid);
-	fprintf(stderr, "XWORKSTAT: x-error message is [%d] '%s'\n", event->error_code, lastErrorMsg);
+	fprintf(stderr, "GLXWORKSTAT: x-error message is [%d] '%s'\n", event->error_code, lastErrorMsg);
     }
 
     __errorInterruptWithIDAndParameter__(@symbol(DisplayError), __MKOBJ(dpy));
@@ -431,7 +439,7 @@
  * this file has been just copied from a 4Dgifts demo ..
  * (will need more than a day to show more ...)
  */
-#if defined(GLX) || defined(VGL)
+#if !defined(OPENGL)
 
 # include        <X11/Xlib.h>
 # include        <X11/Xutil.h>
@@ -460,7 +468,9 @@
     "rgb double buffer",
 };
 
-# ifndef VGL
+#endif /* GLX || VGL */
+
+#if defined(GLX) && !defined(VGL)
 /*
  * Dorky little helper function used to build up a GLXconfig array.
  */
@@ -472,7 +482,7 @@
     ptr->mode = m;
     ptr->arg = a;
 }
-# endif /* not VGL */
+#endif /* GLX & not VGL */
 
 static JMP_BUF errorReturn;
 
@@ -505,41 +515,56 @@
     Window parent;
     GLXWindowType type;
 {
-# ifdef VGL
-    Visual visual;
-# else
+#if !defined(OPENGL)
+# ifndef VGL
     GLXconfig params[50];
     GLXconfig* next;
     GLXconfig* retconfig;
     Colormap cmap = DefaultColormap(dpy, DefaultScreen(dpy));
+# endif
+#endif
+    Visual visual;
     XVisualInfo *vis;
-# endif
     XVisualInfo template;
     XColor white;
     XSetWindowAttributes cwa;
     XWindowAttributes   pwa;
     int scr, i, nret;
     Window win;
-# ifdef HAS_SIGACTION
+#ifdef HAS_SIGACTION
     struct sigaction oldSig, newSig;
-# else
+#else
     void *oldSig;
-# endif
-
+#endif
+
+#if !defined(OPENGL)
     __catchExit(1);
+#endif
 
     if (setjmp(errorReturn)) {
 	printf("hard error in GL - return\n");
-# ifdef HAS_SIGACTION
+#ifdef HAS_SIGACTION
 	sigaction(SIGSEGV, &oldSig, 0);
-# else
+#else
 	signal(SIGSEGV, oldSig);
-# endif
+#endif
+#if !defined(OPENGL)
 	__catchExit(0);
+#endif
 	return 0;
     }
     __CONT__
 
+    if (w <= 0) {
+	printf("GL: bad width: %d\n", w);
+	w = 1;
+    }
+    if (h <= 0) {
+	printf("GL: bad height: %d\n", h);
+	h = 1;
+    }
+
+#if !defined(OPENGL)
 # ifdef VGL
     /*
      * I know what VGL supports; its somewhat unclean to hard code it here
@@ -559,14 +584,6 @@
     scr = DefaultScreen(dpy);
     visual.visualid = CopyFromParent;
     cwa.border_pixel = 0;  /* Even if we don't use it, it must be something */
-    if (w <= 0) {
-	printf("VGL: bad width: %d\n", w);
-	w = 1;
-    }
-    if (h <= 0) {
-	printf("VGL: bad height: %d\n", h);
-	h = 1;
-    }
     win = XCreateWindow(dpy, parent, x, y, w, h,
 			     borderWidth, DisplayPlanes(dpy, scr), 
 			     InputOutput, &visual,
@@ -717,8 +734,22 @@
      */
     XSetErrorHandler(__XErrorHandler__);
 # endif /* not VGL */
-
     __catchExit(0);
+
+#else /* OPENGL | MESA */
+
+    scr = DefaultScreen(dpy);
+    visual.visualid = CopyFromParent;
+    cwa.border_pixel = 0;  /* Even if we don't use it, it must be something */
+    win = XCreateWindow(dpy, parent, x, y, w, h,
+			     borderWidth, DisplayPlanes(dpy, scr), 
+			     InputOutput, &visual,
+			     CWBorderPixel, &cwa);
+
+    vis = XGetVisualInfo(dpy, VisualScreenMask|VisualIDMask, &visual, &nret);
+printf("vis is %x\n", vis);
+#endif /* GLX || VGL */
+
     return win;
 }
 
@@ -729,17 +760,11 @@
     /*
      * only needed for VGL - GLX does it automatically
      */
-# ifdef VGL
+#ifdef VGL
     GLXunlink(dpy, win);
-# endif
+#endif
 }
 
-#endif /* GLX or VGL */
-
-/* 
- * end moved from GLXsupport.c
- */
-
 /*
  * helper for rotation - calls rot()
  */
@@ -752,8 +777,12 @@
 
     if (__isFloat(angle)) {
 	f_angle = (float)(_floatVal(angle));
-	if (f_angle != 0.0)
+	if (f_angle != 0.0) {
+#ifdef OPENGL
+#else
 	    rot(f_angle, axis);
+#endif
+	}
 	return (true);
     }
     if (__isFraction(angle)
@@ -764,14 +793,22 @@
 	n = (float)(__intVal(_FractionInstPtr(angle)->f_numerator));
 	d = (float)(__intVal(_FractionInstPtr(angle)->f_denominator));
 	f_angle = n / d;
-	if (f_angle != 0.0)
+	if (f_angle != 0.0) {
+#ifdef OPENGL
+#else
 	    rot(f_angle, axis);
+#endif
+	}
 	return (true);
     }
     if (__isSmallInteger(angle)) {
 	f_angle = (float)(__intVal(angle));
-	if (f_angle != 0.0)
+	if (f_angle != 0.0) {
+#ifdef OPENGL
+#else
 	    rot(f_angle, axis);
+#endif
+	}
 	return (true);
     }
     return false;
@@ -1232,8 +1269,6 @@
      startang and endang must be smallIntegers (10th of a degree)."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Coord c_x, c_y, c_radius;
     Angle a_startang, a_endang;
 
@@ -1244,8 +1279,9 @@
     _ANGLE_(endang, a_endang)
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     arc(c_x, c_y, c_radius, a_startang, a_endang);
-    RETURN (true);
 #endif
 %}
 
@@ -1258,8 +1294,6 @@
      startang and endang must be smallIntegers (10th of a degree)."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Coord c_x, c_y, c_radius;
     Angle a_startang, a_endang;
 
@@ -1270,8 +1304,9 @@
     _ANGLE_(endang, a_endang)
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     arcf(c_x, c_y, c_radius, a_startang, a_endang);
-    RETURN (true);
 #endif
 %}
 !
@@ -1281,8 +1316,6 @@
      All arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Icoord c_x, c_y, c_radius;
     Angle a_startang, a_endang;
 
@@ -1293,8 +1326,9 @@
     _ANGLE_(endang, a_endang)
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     arcfi(c_x, c_y, c_radius, a_startang, a_endang);
-    RETURN (true);
 #endif
 %}
 !
@@ -1304,8 +1338,6 @@
      All arguments must be (16bit) smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Scoord c_x, c_y, c_radius;
     Angle a_startang, a_endang;
 
@@ -1316,8 +1348,9 @@
     _ANGLE_(endang, a_endang)
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     arcfs(c_x, c_y, c_radius, a_startang, a_endang);
-    RETURN (true);
 #endif
 %}
 !
@@ -1327,8 +1360,6 @@
      All arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Icoord c_x, c_y, c_radius;
     Angle a_startang, a_endang;
 
@@ -1339,8 +1370,9 @@
     _ANGLE_(endang, a_endang)
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     arci(c_x, c_y, c_radius, a_startang, a_endang);
-    RETURN (true);
 #endif
 %}
 !
@@ -1350,22 +1382,19 @@
      All arguments must be (16bit) smallIntegers."
 
 %{  /* NOCONTEXT */
-    SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
-    {
-	Scoord c_x, c_y, c_radius;
-	Angle a_startang, a_endang;
-
-	_SCOORD_(x, c_x)
-	_SCOORD_(y, c_y)
-	_SCOORD_(radius, c_radius)
-	_ANGLE_(startang, a_startang)
-	_ANGLE_(endang, a_endang)
-
-	arcs(c_x, c_y, c_radius, a_startang, a_endang);
-	RETURN (true);
-    }
+    Scoord c_x, c_y, c_radius;
+    Angle a_startang, a_endang;
+
+    _SCOORD_(x, c_x)
+    _SCOORD_(y, c_y)
+    _SCOORD_(radius, c_radius)
+    _ANGLE_(startang, a_startang)
+    _ANGLE_(endang, a_endang)
+
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+    arcs(c_x, c_y, c_radius, a_startang, a_endang);
 #endif
 %}
 !
@@ -1375,19 +1404,16 @@
      x/y/radius may be floats, fractions or smallIntegers."
 
 %{  /* NOCONTEXT */
-    SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
-    {
-	Coord c_x, c_y, c_radius;
-
-	_COORD_ (x, c_x)
-	_COORD_ (y, c_y)
-	_COORD_ (radius, c_radius)
-
-	circ(c_x, c_y, c_radius);
-	RETURN (true);
-    }
+    Coord c_x, c_y, c_radius;
+
+    _COORD_ (x, c_x)
+    _COORD_ (y, c_y)
+    _COORD_ (radius, c_radius)
+
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+    circ(c_x, c_y, c_radius);
 #endif
 %}
 !
@@ -1398,8 +1424,6 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Coord c_x, c_y, c_radius;
 
@@ -1407,10 +1431,11 @@
 	_COORD_ (y, c_y)
 	_COORD_ (radius, c_radius)
 
+#ifdef OPENGL
+#else
 	circf(c_x, c_y, c_radius);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 !
 
@@ -1420,8 +1445,6 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y, c_radius;
 
@@ -1429,10 +1452,11 @@
 	_ICOORD_ (y, c_y)
 	_ICOORD_ (radius, c_radius)
 
+#ifdef OPENGL
+#else
 	circfi(c_x, c_y, c_radius);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 !
 
@@ -1442,8 +1466,6 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y, c_radius;
 
@@ -1451,10 +1473,11 @@
 	_SCOORD_ (y, c_y)
 	_SCOORD_ (radius, c_radius)
 
+#ifdef OPENGL
+#else
 	circfs(c_x, c_y, c_radius);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 !
 
@@ -1464,8 +1487,6 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y, c_radius;
 
@@ -1473,10 +1494,11 @@
 	_ICOORD_ (y, c_y)
 	_ICOORD_ (radius, c_radius)
 
+#ifdef OPENGL
+#else
 	circi(c_x, c_y, c_radius);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 !
 
@@ -1486,8 +1508,6 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y, c_radius;
 
@@ -1495,10 +1515,11 @@
 	_SCOORD_ (y, c_y)
 	_SCOORD_ (radius, c_radius)
 
+#ifdef OPENGL
+#else
 	circs(c_x, c_y, c_radius);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 ! !
 
@@ -1509,7 +1530,9 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifndef OPENGL
     popattributes();
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:42:53 / cg"
@@ -1520,7 +1543,9 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifndef OPENGL
     pushattributes();
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:43:04 / cg"
@@ -1534,18 +1559,17 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Coord c_x, c_y;
 
 	_COORD_ (x, c_x)
 	_COORD_ (y, c_y)
 
+#ifdef OPENGL
+#else
 	cmov2(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:17:38 / cg"
@@ -1557,18 +1581,17 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y;
 
 	_ICOORD_ (x, c_x)
 	_ICOORD_ (y, c_y)
 
+#ifdef OPENGL
+#else
 	cmov2i(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:17:43 / cg"
@@ -1580,18 +1603,17 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
      {
 	 Scoord c_x, c_y;
 
 	 _SCOORD_ (x, c_x)
 	 _SCOORD_ (y, c_y)
 
+#ifdef OPENGL
+#else
 	 cmov2s(c_x, c_y);
-	 RETURN (true);
+#endif
      }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:17:47 / cg"
@@ -1603,8 +1625,6 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
      {
 	Coord c_x, c_y, c_z;
 
@@ -1612,10 +1632,11 @@
 	_COORD_ (y, c_y)
 	_COORD_ (z, c_z)
 
+#ifdef OPENGL
+#else
 	cmov(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:17:22 / cg"
@@ -1627,8 +1648,6 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y, c_z;
 
@@ -1636,10 +1655,11 @@
 	_ICOORD_ (y, c_y)
 	_ICOORD_ (z, c_z)
 
+#ifdef OPENGL
+#else
 	cmovi(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:17:55 / cg"
@@ -1651,8 +1671,6 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y, c_z;
 
@@ -1660,10 +1678,11 @@
 	_SCOORD_ (y, c_y)
 	_SCOORD_ (z, c_z)
 
+#ifdef OPENGL
+#else
 	cmovs(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:17:59 / cg"
@@ -1674,16 +1693,18 @@
 
     | x y |
 %{ 
-#ifdef GLX
     short s_x, s_y;
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+# ifdef GLX
     getcpos(&s_x, &s_y);
     x = __MKSMALLINT(s_x);
     y = __MKSMALLINT(s_y);
-#endif
-%}
-.
+# endif
+#endif
+%}.
     ^x @ y
 ! !
 
@@ -1694,7 +1715,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     clear();
+#endif
 %}
 !
 
@@ -1702,29 +1726,28 @@
     "clear to a color (cval) and clear z buffer to zval simultaniously"
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
-
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+# ifdef GLX
     czclear((ulong)__intVal(cval), __intVal(zval));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+# endif
+#endif
+%}
 !
 
 glxZClearIn:aGLXWindowId
     "clear z buffer"
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+# ifdef GLX
     zclear();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+# endif
+#endif
+%}
 ! !
 
 !GLXWorkstation methodsFor:'color'!
@@ -1741,15 +1764,14 @@
 #else
     if (__isSmallInteger(index)) {
 	color((Colorindex)(__intVal(index)));
-	RETURN (true);
+	RETURN (self);
     }
     if (__isFloat(index)) {
 	colorf((float)(_floatVal(index)));
-	RETURN (true);
+	RETURN (self);
     }
 #endif
-%}.
-    ^ false
+%}
 !
 
 glxColorRed:r green:g blue:b alpha:a in:aGLXWindowId
@@ -1757,8 +1779,6 @@
      The args must be integer values within 0..255"
 
 %{  /* NOCONTEXT */
-
-#ifdef GLX
     short s_r, s_g, s_b, s_a;
 
     _INT_(r, s_r);
@@ -1766,12 +1786,10 @@
     _INT_(b, s_b);
     _INT_(a, s_a);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     cpack((((((s_a<<8) | s_b) << 8) | s_g) << 8) | s_r);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxColorRed:r green:g blue:b in:aGLXWindowId
@@ -1779,36 +1797,29 @@
      The args must be integer values in 0..255"
 
 %{  /* NOCONTEXT */
-
-#ifdef GLX
     short s_r, s_g, s_b;
 
     _INT_(r, s_r);
     _INT_(g, s_g);
     _INT_(b, s_b);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     RGBcolor(s_r, s_g, s_b);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxLrgbrangeRmin: rmin gmin: gmin bmin: bmin rmax: rmax gmax: gmax bmax: bmax
     znear: znear zfar: zfar in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     lRGBrange(_shortVal(rmin), _shortVal(gmin), _shortVal(bmin), 
 	_shortVal(rmax), _shortVal(gmax), _shortVal(bmax), 
 	_longVal(znear), _longVal(zfar));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxMapcolorI: i red: red green: green blue: blue in: aGLXWindowId
@@ -1820,7 +1831,6 @@
 #ifdef OPENGL
 #else
     mapcolor(_colorindexVal(i), _shortVal(red), _shortVal(green), _shortVal(blue));
-    RETURN (true);
 #endif
 %}
 !
@@ -1829,14 +1839,11 @@
     "change the color used for text drawing"
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     textcolor(_colorindexVal(tcolor));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 ! !
 
 !GLXWorkstation methodsFor:'curves'!
@@ -1846,8 +1853,9 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef GLX
     curvebasis(_shortVal(basid));
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:47:09 / cg"
@@ -1859,8 +1867,9 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef GLX
     curveit(_shortVal(iterationcount));
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:48:57 / cg"
@@ -1871,8 +1880,9 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef GLX
     curveprecision(_shortVal(nsegments));
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:47:43 / cg"
@@ -1891,7 +1901,6 @@
     frontbuffer(FALSE);
 # endif
     backbuffer(TRUE);
-    RETURN (true);
 #endif
 %}
 !
@@ -1907,7 +1916,6 @@
 #ifdef OPENGL
 #else
     backbuffer(_booleanVal(b));
-    RETURN (true);
 #endif
 %}
 
@@ -1919,8 +1927,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     doublebuffer();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -1935,7 +1945,6 @@
     backbuffer(FALSE);
 # endif
     frontbuffer(TRUE);
-    RETURN (true);
 #endif
 %}
 !
@@ -1951,7 +1960,6 @@
 #ifdef OPENGL
 #else
     frontbuffer(_booleanVal(b));
-    RETURN (true);
 #endif
 %}
 
@@ -1966,7 +1974,6 @@
 #ifdef OPENGL
 #else
     singlebuffer();
-    RETURN (true);
 #endif
 %}
 !
@@ -1982,7 +1989,6 @@
 #ifdef OPENGL
 #else
     swapbuffers();
-    RETURN (true);
 #endif
 %}
 
@@ -1995,9 +2001,11 @@
     "start a closed line"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     bgnclosedline();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2005,8 +2013,11 @@
     "start a line group"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     bgnline();
+#endif
 %}
 !
 
@@ -2014,9 +2025,11 @@
     "start a point-group"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     bgnpoint();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2024,9 +2037,11 @@
     "start a polygon"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     bgnpolygon();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2034,9 +2049,11 @@
     "start a quadrilateral strip"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     bgnqstrip();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2044,9 +2061,11 @@
     "start a triangle mesh"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     bgntmesh();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2054,9 +2073,11 @@
     "end a closed line"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     endclosedline();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2064,9 +2085,11 @@
     "end a line group"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     endline();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2074,9 +2097,11 @@
     "end a point group"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     endpoint();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2084,9 +2109,11 @@
     "end a polygon"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     endpolygon();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2094,9 +2121,11 @@
     "end a quadrilateral strip"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     endqstrip();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2104,9 +2133,11 @@
     "end a triangle mesh"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     endtmesh();
-    RETURN (true);
+#endif
 %}
 ! !
 
@@ -2134,18 +2165,17 @@
     "change the graphics position to a 2D point, as passed in x/y"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Coord c_x, c_y;
 
 	_COORD_ (x, c_x)
 	_COORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	move2(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:15:02 / cg"
@@ -2156,18 +2186,17 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y;
 
 	_ICOORD_ (x, c_x)
 	_ICOORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	move2i(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:15:08 / cg"
@@ -2178,18 +2207,17 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y;
 
 	_SCOORD_ (x, c_x)
 	_SCOORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	move2s(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:15:13 / cg"
@@ -2199,17 +2227,16 @@
     "change the graphics position to a 3D point, as passed in vector v"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	float vec[3], *c_v;
 
 	if (! (c_v = __glx_getFloatsFromInto(v, vec, 3))) RETURN(false);
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	move((Coord)(c_v[0]), (Coord)(c_v[1]), (Coord)(c_v[2]));
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:14:29 / cg"
@@ -2219,8 +2246,6 @@
     "change the graphics position to a 3D point, as passed in x/y/z"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Coord c_x, c_y, c_z;
 
@@ -2228,10 +2253,11 @@
 	_COORD_ (y, c_y)
 	_COORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	move(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:14:38 / cg"
@@ -2242,8 +2268,6 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y, c_z;
 
@@ -2251,10 +2275,11 @@
 	_ICOORD_ (y, c_y)
 	_ICOORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	movei(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:14:44 / cg"
@@ -2265,8 +2290,6 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y, c_z;
 
@@ -2274,10 +2297,11 @@
 	_SCOORD_ (y, c_y)
 	_SCOORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	moves(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:14:48 / cg"
@@ -2288,17 +2312,16 @@
      the relative distance is passed in vector v"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	float vec[2], *c_v;
 
 	if (! (c_v = __glx_getFloatsFromInto(v, vec, 2))) RETURN(false);
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rmv2((Coord)(c_v[0]), (Coord)(c_v[1]));
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:15:57 / cg"
@@ -2309,18 +2332,17 @@
      the relative distance is passed in x/y"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Coord c_x, c_y;
 
 	_COORD_ (x, c_x)
 	_COORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rmv2(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:16:42 / cg"
@@ -2332,18 +2354,17 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y;
 
 	_ICOORD_ (x, c_x)
 	_ICOORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rmv2i(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:16:39 / cg"
@@ -2355,18 +2376,17 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y;
 
 	_SCOORD_ (x, c_x)
 	_SCOORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rmv2s(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:16:33 / cg"
@@ -2377,17 +2397,16 @@
      the relative distance is passed in vector v"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	float vec[3], *c_v;
 
 	if (! (c_v = __glx_getFloatsFromInto(v, vec, 3))) RETURN(false);
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rmv((Coord)(c_v[0]), (Coord)(c_v[1]), (Coord)(c_v[2]));
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:16:08 / cg"
@@ -2398,8 +2417,6 @@
      the relative distance is passed in x/y/z"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Coord c_x, c_y, c_z;
 
@@ -2407,10 +2424,11 @@
 	_COORD_ (y, c_y)
 	_COORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rmv(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:16:16 / cg"
@@ -2422,8 +2440,6 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y, c_z;
 
@@ -2431,10 +2447,11 @@
 	_ICOORD_ (y, c_y)
 	_ICOORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rmvi(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:16:21 / cg"
@@ -2446,8 +2463,6 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y, c_z;
 
@@ -2455,10 +2470,11 @@
 	_SCOORD_ (y, c_y)
 	_SCOORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rmvs(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:16:25 / cg"
@@ -2503,7 +2519,7 @@
     if (ISCONNECTED) {
 	_INST(hasStereoExtension) = false;
 
-#if defined(XSGIStereo) && !defined(VGL)
+#if defined(XSGIStereo) && defined(GLX)
 	if (_INST(glOK) == true) {
 	    if (XQueryExtension(dpy, "SGIFullScreenStereo", &dummy, &dummy, &dummy))
 		_INST(hasStereoExtension) = true;
@@ -2519,11 +2535,10 @@
     "define a line style"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     deflinestyle(_shortVal(n), _linestyleVal(ls));
-    RETURN (true);
 #endif
 %}
 !
@@ -2540,7 +2555,6 @@
 #ifdef OPENGL
 #else
     draw2((Coord)(c_v[0]), (Coord)(c_v[1]));
-    RETURN (true);
 #endif
 %}
 
@@ -2552,18 +2566,17 @@
      to a new 2D position, passed in x/y."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Coord c_x, c_y;
 
 	_COORD_ (x, c_x)
 	_COORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	draw2(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:03:50 / cg"
@@ -2574,18 +2587,17 @@
      to a new 2D position, passed in x/y."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y;
 
 	_ICOORD_ (x, c_x)
 	_ICOORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	draw2i(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:04:07 / cg"
@@ -2596,18 +2608,17 @@
      to a new 2D position, passed in x/y."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y;
 
 	_SCOORD_ (x, c_x)
 	_SCOORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	draw2s(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:04:19 / cg"
@@ -2625,7 +2636,6 @@
 #ifdef OPENGL
 #else
     draw((Coord)(c_v[0]), (Coord)(c_v[1]), (Coord)(c_v[2]));
-    RETURN (true);
 #endif
 %}
 
@@ -2638,8 +2648,6 @@
      The arguments may be floats, fractions or smallIntegers"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Coord c_x, c_y, c_z;
 
@@ -2647,10 +2655,11 @@
 	_COORD_ (y, c_y)
 	_COORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	draw(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:04:46 / cg"
@@ -2662,8 +2671,6 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y, c_z;
 
@@ -2671,10 +2678,11 @@
 	_ICOORD_ (y, c_y)
 	_ICOORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	drawi(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:04:54 / cg"
@@ -2686,8 +2694,6 @@
      The arguments must be (16bit) smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y, c_z;
 
@@ -2695,10 +2701,11 @@
 	_SCOORD_ (y, c_y)
 	_SCOORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	draws(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:05:01 / cg"
@@ -2709,8 +2716,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     linewidth(_shortVal(n));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2719,7 +2728,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     linewidthf(_floatVal(n));
+#endif
     RETURN (true);
 %}
 !
@@ -2729,14 +2741,13 @@
      to a new 2D position, passing the relative distance in the vector v."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     float vec[2], *c_v;
 
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rdr2((Coord)(c_v[0]), (Coord)(c_v[1]));
-    RETURN (true);
 #endif
 %}
 
@@ -2748,15 +2759,14 @@
      to a new 2D position, passing the relative distance in x/y."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Coord c_x, c_y;
 
     _COORD_ (x, c_x)
     _COORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rdr2(c_x, c_y);
-    RETURN (true);
 #endif
 %}
 
@@ -2768,15 +2778,14 @@
      to a new 2D position, passing the relative distance in x/y."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Icoord c_x, c_y;
 
     _ICOORD_ (x, c_x)
     _ICOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rdr2i(c_x, c_y);
-    RETURN (true);
 #endif
 %}
 
@@ -2788,15 +2797,14 @@
      to a new 2D position, passing the relative distance in x/y."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Scoord c_x, c_y;
 
     _SCOORD_ (x, c_x)
     _SCOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rdr2s(c_x, c_y);
-    RETURN (true);
 #endif
 %}
 
@@ -2808,14 +2816,13 @@
      to a new 3D position, passing the relative distance in the vector v."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     float vec[3], *c_v;
 
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rdr((Coord)(c_v[0]), (Coord)(c_v[1]), (Coord)(c_v[2]));
-    RETURN (true);
 #endif
 %}
 
@@ -2827,16 +2834,15 @@
      to a new 3D position, passing the relative distance in x/y/z."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Coord c_x, c_y, c_z;
 
     _COORD_ (x, c_x)
     _COORD_ (y, c_y)
     _COORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rdr(c_x, c_y, c_z);
-    RETURN (true);
 #endif
 %}
 
@@ -2848,16 +2854,15 @@
      to a new 3D position, passing the relative distance in x/y/z."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Icoord c_x, c_y, c_z;
 
     _ICOORD_ (x, c_x)
     _ICOORD_ (y, c_y)
     _ICOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rdri(c_x, c_y, c_z);
-    RETURN (true);
 #endif
 %}
 
@@ -2869,16 +2874,15 @@
      to a new 3D position, passing the relative distance in x/y/z."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Scoord c_x, c_y, c_z;
 
     _SCOORD_ (x, c_x)
     _SCOORD_ (y, c_y)
     _SCOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rdrs(c_x, c_y, c_z);
-    RETURN (true);
 #endif
 %}
 
@@ -2890,11 +2894,11 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     setlinestyle(_shortVal(index));
-    RETURN (true);
-%}
-.
-    ^ false
+#endif
+%}
 ! !
 
 !GLXWorkstation methodsFor:'materials & lights'!
@@ -2932,17 +2936,14 @@
     else if (target == @symbol(lightModel))
 	defType = LMODEL;
     else { 
-	RETURN (false); 
+	RETURN (nil); 
     }
 
     _INT_ (index, i_index);
     SETWIN(aGLXWindowId)
     lmbind(defType, i_index);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxLmdef:what index:index np:np props:props in:aGLXWindowId
@@ -2965,7 +2966,7 @@
     else if (what == @symbol(lightModel))
 	defType = DEFLMODEL;
     else {
-	RETURN (false);
+	RETURN (nil);
     }
 
     _INT_ (index, i_index);
@@ -2981,17 +2982,14 @@
 		ninstVars = __intVal(_ClassInstPtr(cls)->c_ninstvars);
 		fp = (float *) &(_InstPtr(props)->i_instvars[ninstVars]);
 	    } else {
-		RETURN (false);
+		RETURN (nil);
 	    }
 	} 
     }
     SETWIN(aGLXWindowId)
     lmdef(defType, i_index, i_np, fp);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxTevbind:target index:index in:aGLXWindowId
@@ -3008,16 +3006,13 @@
 	if (target == @symbol(env0)) {
 	    t = TV_ENV0;
 	} else {
-	    RETURN (false);
+	    RETURN (nil);
 	}
     }
     SETWIN(aGLXWindowId)
     tevbind(t, __intVal(index));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxTevdef:index np:np props:props in:aGLXWindowId
@@ -3030,11 +3025,8 @@
     SETWIN(aGLXWindowId)
     fp = __glx_getFloatsFromFloatArrayInto(props, fbuff);
     tevdef(__intVal(index), __intVal(np), fp);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxTexDef2d:index nc:nc width:w height:h bits:image np:np props:props in:aGLXWindowId
@@ -3058,12 +3050,9 @@
 	SETWIN(aGLXWindowId)
 	texdef2d(__intVal(index), __intVal(nc), __intVal(w), __intVal(h),
 		 (const unsigned long *)cp, __intVal(np), fp);
-	RETURN (true);
     }
 #endif
 %}
-.
-    ^ false
 !
 
 glxTexDef3d:index nc:nc width:w height:h depth:d bits:image np:np props:props in:aGLXWindowId
@@ -3088,12 +3077,9 @@
 	texdef3d(__intVal(index), __intVal(nc), __intVal(w), __intVal(h),
 		 __intVal(d),
 		 (const unsigned long *)cp, __intVal(np), fp);
-	RETURN (true);
     }
 #endif
 %}
-.
-    ^ false
 !
 
 glxTexbind:target index:index in:aGLXWindowId
@@ -3114,16 +3100,13 @@
 	} else if (target == @symbol(textureIdle)) {
 	    t = TX_TEXTURE_IDLE;
 	} else {
-	    RETURN (false);
+	    RETURN (nil);
 	}
     }
     SETWIN(aGLXWindowId)
     texbind(t, __intVal(index));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 ! !
 
 !GLXWorkstation methodsFor:'matrix stack'!
@@ -3140,10 +3123,8 @@
     SETWIN(aGLXWindowId)
     getmatrix(matrix);
     if (! __glx_putFloatsFromInto(matrix, arrayOf16Floats, 16)) RETURN(false);
-    RETURN (true);
-#endif
-%}.
-    ^ false
+#endif
+%}
 !
 
 glxLoadMatrix:arrayOf16Floats in:aGLXWindowId
@@ -3159,7 +3140,6 @@
     if (! (m = __glx_getFloatsFromMatrixInto(arrayOf16Floats, &matrix))) RETURN (false);
     SETWIN(aGLXWindowId)
     loadmatrix(*m);
-    RETURN (true);
 #endif
 %}
 !
@@ -3177,7 +3157,6 @@
     if (! (m = __glx_getFloatsFromMatrixInto(arrayOf16Floats, &matrix))) RETURN (false);
     SETWIN(aGLXWindowId)
     multmatrix(*m);
-    RETURN (true);
 #endif
 %}
 !
@@ -3187,7 +3166,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     popmatrix();
+#endif
 %}
 !
 
@@ -3196,7 +3178,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pushmatrix();
+#endif
 %}
 ! !
 
@@ -3209,8 +3194,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     gconfig();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -3414,27 +3401,22 @@
     "start a NURBS curve def - in real GL only"
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     bgncurve();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBeginSurfaceIn:aGLXWindowId
     "start a NURBS surface def - in real GL only"
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     bgnsurface();
-    RETURN (true);
-#endif
-%}.
-    ^ false
+#endif
+%}
 !
 
 glxDefBasis:id mat:aMatrix in:aGLXWindowId
@@ -3450,11 +3432,9 @@
     if (__isSmallInteger(id)) {
 	SETWIN(aGLXWindowId)
 	defbasis((short)(__intVal(id)), *m);
-	RETURN (true);
     }
 #endif
-%}.
-    ^ false
+%}
 
     "Modified: 19.3.1996 / 18:52:56 / cg"
 !
@@ -3463,26 +3443,22 @@
     "end a NURBS curve def - in real GL only"
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     endcurve();
-    RETURN (true);
-#endif
-%}.
-    ^ false
+#endif
+%}
 !
 
 glxEndSurfaceIn:aGLXWindowId
     "end a NURBS surface def - in real GL only"
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     endsurface();
-    RETURN (true);
-#endif
-%}.
-    ^ false
+#endif
+%}
 !
 
 glxNurbsSurfaceUKnotCount: uKnotCount uKnot: uKnot 
@@ -3533,11 +3509,12 @@
 %{  /* NOCONTEXT */
     if (__bothSmallInteger(u, v)) {
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	patchbasis((long)__intVal(u), (long)__intVal(v));
-	RETURN (true);
+#endif
     }
-%}.
-    ^ false
+%}
 
     "Modified: 19.3.1996 / 18:53:18 / cg"
 !
@@ -3548,11 +3525,12 @@
 %{  /* NOCONTEXT */
     if (__bothSmallInteger(u, v)) {
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	patchcurves((long)__intVal(u), (long)__intVal(v));
-	RETURN (true);
+#endif
     }
-%}.
-    ^ false
+%}
 
     "Modified: 19.3.1996 / 18:53:34 / cg"
 !
@@ -3563,11 +3541,12 @@
 %{  /* NOCONTEXT */
     if (__bothSmallInteger(u, v)) {
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	patchprecision((long)__intVal(u), (long)__intVal(v));
-	RETURN (true);
+#endif
     }
-%}.
-    ^ false
+%}
 !
 
 glxPatchX:arrayOf16XFloats y:arrayOf16YFloats z:arrayOf16ZFloats in:aGLXWindowId
@@ -3580,12 +3559,14 @@
     Matrix matrixX, matrixY, matrixZ;
     Matrix *mX, *mY, *mZ;
 
-    if (! (mX = __glx_getFloatsFromMatrixInto(arrayOf16XFloats, &matrixX))) RETURN (false);
-    if (! (mY = __glx_getFloatsFromMatrixInto(arrayOf16YFloats, &matrixY))) RETURN (false);
-    if (! (mZ = __glx_getFloatsFromMatrixInto(arrayOf16ZFloats, &matrixZ))) RETURN (false);
+    if (! (mX = __glx_getFloatsFromMatrixInto(arrayOf16XFloats, &matrixX))) 
+	RETURN (nil);
+    if (! (mY = __glx_getFloatsFromMatrixInto(arrayOf16YFloats, &matrixY))) 
+	RETURN (nil);
+    if (! (mZ = __glx_getFloatsFromMatrixInto(arrayOf16ZFloats, &matrixZ))) 
+	RETURN (nil);
     SETWIN(aGLXWindowId)
     patch(*mX, *mY, *mZ);
-    RETURN (true);
 #endif
 %}
 
@@ -3602,13 +3583,16 @@
     Matrix matrixX, matrixY, matrixZ, matrixW;
     Matrix *mX, *mY, *mZ, *mW;
 
-    if (! (mX = __glx_getFloatsFromMatrixInto(arrayOf16XFloats, &matrixX))) RETURN (false);
-    if (! (mY = __glx_getFloatsFromMatrixInto(arrayOf16YFloats, &matrixY))) RETURN (false);
-    if (! (mZ = __glx_getFloatsFromMatrixInto(arrayOf16ZFloats, &matrixZ))) RETURN (false);
-    if (! (mW = __glx_getFloatsFromMatrixInto(arrayOf16WFloats, &matrixW))) RETURN (false);
+    if (! (mX = __glx_getFloatsFromMatrixInto(arrayOf16XFloats, &matrixX))) 
+	RETURN (nil);
+    if (! (mY = __glx_getFloatsFromMatrixInto(arrayOf16YFloats, &matrixY))) 
+	RETURN (nil);
+    if (! (mZ = __glx_getFloatsFromMatrixInto(arrayOf16ZFloats, &matrixZ))) 
+	RETURN (nil);
+    if (! (mW = __glx_getFloatsFromMatrixInto(arrayOf16WFloats, &matrixW))) 
+	RETURN (nil);
     SETWIN(aGLXWindowId)
     rpatch(*mX, *mY, *mZ, *mW);
-    RETURN (true);
 #endif
 %}
 
@@ -3629,10 +3613,8 @@
     rectcopy(_screencoordVal(x1), _screencoordVal(y1), 
 	     _screencoordVal(x2), _screencoordVal(y2), 
 	     _screencoordVal(newx), _screencoordVal(newy));
-    RETURN (true);
-#endif
-%}.
-    ^ false
+#endif
+%}
 ! !
 
 !GLXWorkstation methodsFor:'pixel reading'!
@@ -3701,11 +3683,8 @@
     }
 
     readsource(what);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxRectreadX1:x1 y1:y1 x2:x2 y2:y2 h:viewHeight to:dest in:aGLXWindowId
@@ -3785,7 +3764,7 @@
 
 %{
 #ifdef VGL
-    if (__isSmallInteger(x) && __isSmallInteger(y)) {
+    if (__bothSmallInteger(x, y)) {
 	SETWIN(aGLXWindowId)
 	RETURN (__MKSMALLINT(X11_getPixel(__intVal(x), __intVal(y))));
     }
@@ -3802,15 +3781,14 @@
     "plot a point in x, y, 0."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Coord c_x, c_y;
 
     _COORD_ (x, c_x)
     _COORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pnt2(c_x, c_y);
-    RETURN (true);
 #endif
 %}
 
@@ -3821,15 +3799,14 @@
     "plot a point in x, y, 0."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Icoord c_x, c_y;
 
     _ICOORD_ (x, c_x)
     _ICOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pnt2i(c_x, c_y);
-    RETURN (true);
 #endif
 %}
 
@@ -3840,15 +3817,14 @@
     "plot a point in x, y, 0."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Scoord c_x, c_y;
 
     _SCOORD_ (x, c_x)
     _SCOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pnt2s(c_x, c_y);
-    RETURN (true);
 #endif
 %}
 
@@ -3859,16 +3835,15 @@
     "plot a point in x, y, z."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Coord c_x, c_y, c_z;
 
     _COORD_ (x, c_x)
     _COORD_ (y, c_y)
     _COORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pnt(c_x, c_y, c_z);
-    RETURN (true);
 #endif
 %}
 
@@ -3879,16 +3854,15 @@
     "plot a point in x, y, z."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Icoord c_x, c_y, c_z;
 
     _ICOORD_ (x, c_x)
     _ICOORD_ (y, c_y)
     _ICOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pnti(c_x, c_y, c_z);
-    RETURN (true);
 #endif
 %}
 
@@ -3899,16 +3873,15 @@
     "plot a point in x, y, z."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Scoord c_x, c_y, c_z;
 
     _SCOORD_ (x, c_x)
     _SCOORD_ (y, c_y)
     _SCOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pnts(c_x, c_y, c_z);
-    RETURN (true);
 #endif
 %}
 
@@ -3918,27 +3891,21 @@
 glxPntsize: n in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     pntsize(_shortVal(n));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxPntsizef: n in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     pntsizef(_floatVal(n));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 ! !
 
 !GLXWorkstation methodsFor:'polygons'!
@@ -3949,8 +3916,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     backface(_booleanVal(b));
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:26:50 / cg"
@@ -3961,8 +3930,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     concave(_booleanVal(b));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -3974,13 +3945,11 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     frontface(_booleanVal(b));
-    RETURN (true);
-%}
-.
-    ^ false
-
-    "Modified: 19.3.1996 / 18:27:50 / cg"
+#endif
+%}
 !
 
 glxPdr2X: x y: y in: aGLXWindowId
@@ -3992,11 +3961,11 @@
     _COORD_ (x, c_x)
     _COORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pdr2(c_x, c_y);
-    RETURN (true);
-%}
-
-    "Modified: 19.3.1996 / 18:33:09 / cg"
+#endif
+%}
 !
 
 glxPdr2iX: x y: y in: aGLXWindowId
@@ -4008,8 +3977,10 @@
     _ICOORD_ (x, c_x)
     _ICOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pdr2i(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:33:28 / cg"
@@ -4024,8 +3995,10 @@
     _SCOORD_ (x, c_x)
     _SCOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pdr2s(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:03 / cg"
@@ -4041,8 +4014,10 @@
     _COORD_ (y, c_y)
     _COORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pdr(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:06 / cg"
@@ -4058,8 +4033,10 @@
     _ICOORD_ (y, c_y)
     _ICOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pdri(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:11 / cg"
@@ -4075,8 +4052,10 @@
     _SCOORD_ (y, c_y)
     _SCOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pdrs(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:14 / cg"
@@ -4091,8 +4070,10 @@
     _COORD_ (x, c_x)
     _COORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pmv2(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:32:45 / cg"
@@ -4107,8 +4088,10 @@
     _ICOORD_ (x, c_x)
     _ICOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pmv2i(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:32:42 / cg"
@@ -4123,8 +4106,10 @@
     _SCOORD_ (x, c_x)
     _SCOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pmv2s(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:32:38 / cg"
@@ -4140,8 +4125,10 @@
     _COORD_ (y, c_y)
     _COORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pmv(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:31:52 / cg"
@@ -4157,8 +4144,10 @@
     _ICOORD_ (y, c_y)
     _ICOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pmvi(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:31:59 / cg"
@@ -4174,8 +4163,10 @@
     _SCOORD_ (y, c_y)
     _SCOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pmvs(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:32:03 / cg"
@@ -4187,8 +4178,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     polymode(_longVal(mode));
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:29:32 / cg"
@@ -4203,8 +4196,10 @@
     _COORD_ (x, c_x)
     _COORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpdr2(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:31 / cg"
@@ -4219,8 +4214,10 @@
     _ICOORD_ (x, c_x)
     _ICOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpdr2i(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:36 / cg"
@@ -4235,8 +4232,10 @@
     _SCOORD_ (x, c_x)
     _SCOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpdr2s(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:40 / cg"
@@ -4252,8 +4251,10 @@
     _COORD_ (y, c_y)
     _COORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpdr(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:48 / cg"
@@ -4269,8 +4270,10 @@
     _ICOORD_ (y, c_y)
     _ICOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpdri(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:51 / cg"
@@ -4286,8 +4289,10 @@
     _SCOORD_ (y, c_y)
     _SCOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpdrs(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:55 / cg"
@@ -4302,8 +4307,10 @@
     _COORD_ (x, c_x)
     _COORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpmv2(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:37:15 / cg"
@@ -4318,8 +4325,10 @@
     _ICOORD_ (x, c_x)
     _ICOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpmv2i(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:37:20 / cg"
@@ -4334,8 +4343,10 @@
     _SCOORD_ (x, c_x)
     _SCOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpmv2s(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:38:06 / cg"
@@ -4351,8 +4362,10 @@
     _COORD_ (y, c_y)
     _COORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpmv(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:38:03 / cg"
@@ -4368,8 +4381,10 @@
     _ICOORD_ (y, c_y)
     _ICOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpmvi(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:37:53 / cg"
@@ -4385,8 +4400,10 @@
     _SCOORD_ (y, c_y)
     _SCOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpmvs(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:37:58 / cg"
@@ -4403,14 +4420,17 @@
 #ifdef VGL
     RETURN (__MKSTRING("vogl"));
 #else
+# ifdef GLX
     char buffer[128];
 
     if (_INST(glOK) == true) {
 	gversion(buffer);
 	RETURN (__MKSTRING(buffer));
-    } else {
-	RETURN (nil);
     }
+    RETURN (nil);
+# else
+    RETURN (nil);
+# endif
 #endif
 %}
 
@@ -4423,13 +4443,13 @@
     "Returns the number if bit planes available on the device."
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     RETURN (__MKSMALLINT(getplanes()));
 #endif
-%}
-.
-    ^ false
+%}.
+    ^ 0
 
     "Modified: 19.3.1996 / 18:50:44 / cg"
 !
@@ -4447,13 +4467,30 @@
 !
 
 isTrueGL
-    "return true, if this is a true GL (as opposed to a simulated VOGL)"
+    "return true, if this is a true GL (as opposed to a simulated VOGL).
+     Returns false for all openGL systems."
 
 %{  /* NOCONTEXT */
 #ifdef VGL
     RETURN ( false );
 #else
+# ifdef GLX
     RETURN ( true );
+# else
+    RETURN (false);
+# endif
+#endif
+%}
+!
+
+isOpenGL
+    "return true, if this is an openGL (as opposed to a GL)"
+
+%{  /* NOCONTEXT */
+#ifdef OPENGL
+    RETURN ( true );
+#else
+    RETURN ( false );
 #endif
 %}
 !
@@ -4461,7 +4498,8 @@
 maxZValue
     "return the max. Z value (only valid if z-buffer is supported)"
 %{  
-#ifdef GLX
+#ifndef OPENGL
+# ifdef GD_ZMAX
     long zMax;
 
     if (_INST(glOK) == true) {
@@ -4472,6 +4510,7 @@
 	}
 	RETURN ( __MKLARGEINT(zMax) );
     }
+# endif
 #endif
 %}.
     ^ nil
@@ -4484,10 +4523,16 @@
 
 %{  /* NOCONTEXT */
 
-#ifdef GLX
+#ifndef OPENGL
+# ifdef VGL
+    RETURN (true);
+# else
+#  ifdef GD_BITS_NORM_DBL_RED
     if (getgdesc(GD_BITS_NORM_DBL_RED) != 0) {
 	RETURN ( _INST(glOK) );
     }
+#  endif
+# endif
 #endif
 %}.
     ^ false
@@ -4551,10 +4596,12 @@
      if the display supports GL drawing at all."
 
 %{  /* NOCONTEXT */
-#ifdef GLX
+#ifndef OPENGL
+# ifdef GD_TEXTURE
     if (getgdesc(GD_TEXTURE) != 0) {
 	RETURN ( _INST(glOK) );
     }
+# endif
 #endif
 %}.
     ^ false
@@ -4571,10 +4618,12 @@
 
 %{  /* NOCONTEXT */
 
-#ifdef GLX
+#ifndef OPENGL
+# ifdef GD_BITS_NORM_ZBUFFER
     if (getgdesc(GD_BITS_NORM_ZBUFFER) != 0) {
 	RETURN ( _INST(glOK) );
     }
+# endif
 #endif
 %}.
     ^ false
@@ -4590,8 +4639,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rect(_coordVal(x1), _coordVal(y1), _coordVal(x2), _coordVal(y2));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -4599,8 +4650,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rectf(_coordVal(x1), _coordVal(y1), _coordVal(x2), _coordVal(y2));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -4608,8 +4661,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rectfi(_icoordVal(x1), _icoordVal(y1), _icoordVal(x2), _icoordVal(y2));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -4617,8 +4672,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rectfs(_scoordVal(x1), _scoordVal(y1), _scoordVal(x2), _scoordVal(y2));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -4626,8 +4683,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     recti(_icoordVal(x1), _icoordVal(y1), _icoordVal(x2), _icoordVal(y2));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -4635,8 +4694,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rects(_scoordVal(x1), _scoordVal(y1), _scoordVal(x2), _scoordVal(y2));
-    RETURN (true);
+#endif
 %}
 ! !
 
@@ -4653,11 +4714,8 @@
     if (! (v = __glx_getFloatsFromInto(arrayOf4Floats, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
     sphdraw(v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxSphDrawX:x y:y z:z radius:r in:aGLXWindowId
@@ -4673,11 +4731,8 @@
     _FLOAT_(r, vec[3])
     SETWIN(aGLXWindowId)
     sphdraw(vec);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxSphfreeIn: aGLXWindowId
@@ -4686,11 +4741,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     sphfree();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxSphgnpolysIn: aGLXWindowId
@@ -4701,8 +4753,6 @@
     RETURN (__MKSMALLINT(sphgnpolys()));
 #endif
 %}
-.
-    ^ false
 !
 
 glxSphmode: attribute value: value in: aGLXWindowId
@@ -4711,11 +4761,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     sphmode(__intVal(attribute), __intVal(value));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxSphobj: objid in: aGLXWindowId
@@ -4724,11 +4771,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     sphobj(_objectVal(objid));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxSphrotmatrix: mat in: aGLXWindowId
@@ -4740,11 +4784,8 @@
     if (! (m = __glx_getFloatsFromMatrixInto(mat, &matrix))) RETURN (false);
     SETWIN(aGLXWindowId)
     sphrotmatrix(*m);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 ! !
 
 !GLXWorkstation methodsFor:'stereo extension'!
@@ -4755,11 +4796,8 @@
 #ifdef FULL_GLX
     SETWIN(aGLXWindowId)
     leftbuffer(_booleanVal(bool));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxMonobufferIn: aGLXWindowId
@@ -4768,11 +4806,8 @@
 #ifdef FULL_GLX
     SETWIN(aGLXWindowId)
     monobuffer();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxRightbuffer: bool in: aGLXWindowId
@@ -4781,11 +4816,8 @@
 #ifdef FULL_GLX
     SETWIN(aGLXWindowId)
     rightbuffer(_booleanVal(bool));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 stereoExtensionBuffer:aBufferSymbol for:aWindowId
@@ -4957,11 +4989,8 @@
     if (! (c_v = __glx_getDoublesFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
     t2d(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT2f: v in: aGLXWindowId
@@ -4973,11 +5002,8 @@
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
     t2f(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT2i: v in: aGLXWindowId
@@ -4989,11 +5015,8 @@
     if (! (c_v = __glx_getLongsFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
     t2i(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT2s: v in: aGLXWindowId
@@ -5005,11 +5028,8 @@
     if (! (c_v = __glx_getShortsFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
     t2s(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT3d:v in:aGLXWindowId
@@ -5021,11 +5041,8 @@
     if (! (c_v = __glx_getDoublesFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
     t3d(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT3f:v in:aGLXWindowId
@@ -5037,11 +5054,8 @@
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
     t3f(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT3i:v in:aGLXWindowId
@@ -5053,11 +5067,8 @@
     if (! (c_v = __glx_getLongsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
     t3i(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT3s:v in:aGLXWindowId
@@ -5069,11 +5080,8 @@
     if (! (c_v = __glx_getShortsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
     t3s(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT4d: v in: aGLXWindowId
@@ -5085,11 +5093,8 @@
     if (! (c_v = __glx_getDoublesFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
     t4d(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT4f: v in: aGLXWindowId
@@ -5101,11 +5106,8 @@
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
     t4f(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT4i: v in: aGLXWindowId
@@ -5117,11 +5119,8 @@
     if (! (c_v = __glx_getLongsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
     t4i(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT4s: v in: aGLXWindowId
@@ -5133,11 +5132,8 @@
     if (! (c_v = __glx_getShortsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
     t4s(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 ! !
 
 !GLXWorkstation methodsFor:'transformations'!
@@ -5177,10 +5173,12 @@
     if (! (v = __glx_getFloatsFromInto(arrayOf3Floats, vec, 3))) RETURN(false);
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rot(v[0], 'x');
     rot(v[1], 'y');
     rot(v[2], 'z');
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5205,12 +5203,12 @@
 
     if (__isSmallInteger(angle)) {
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rotate(__intVal(angle), c_axis);
-	RETURN (true);
+#endif
     }
 %}
-.
-    ^ false
 !
 
 glxRotateIX:angle in:aGLXWindowId
@@ -5221,12 +5219,12 @@
 
     if (__isSmallInteger(angle)) {
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rotate(__intVal(angle), 'x');
-	RETURN (true);
+#endif
     }
 %}
-.
-    ^ false
 !
 
 glxRotateIX:xAngle y:yAngle z:zAngle in:aGLXWindowId
@@ -5238,14 +5236,14 @@
     if (__bothSmallInteger(xAngle, yAngle)
      && __isSmallInteger(zAngle)) {
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rotate(__intVal(xAngle), 'x');
 	rotate(__intVal(yAngle), 'y');
 	rotate(__intVal(zAngle), 'z');
-	RETURN (true);
+#endif
     }
 %}
-.
-    ^ false
 !
 
 glxRotateIY:angle in:aGLXWindowId
@@ -5256,12 +5254,12 @@
 
     if (__isSmallInteger(angle)) {
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rotate(__intVal(angle), 'y');
-	RETURN (true);
+#endif
     }
 %}
-.
-    ^ false
 !
 
 glxRotateIZ:angle in:aGLXWindowId
@@ -5272,12 +5270,12 @@
 
     if (__isSmallInteger(angle)) {
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rotate(__intVal(angle), 'z');
-	RETURN (true);
+#endif
     }
 %}
-.
-    ^ false
 !
 
 glxRotateX:angle in:aGLXWindowId
@@ -5304,8 +5302,6 @@
 	}
     }
 %}
-.
-    ^ false
 !
 
 glxRotateY:angle in:aGLXWindowId
@@ -5340,8 +5336,10 @@
     if (! (v = __glx_getFloatsFromInto(arrayOf3Floats, vec, 3))) RETURN(false);
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     scale(v[0], v[1], v[2]);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5354,8 +5352,10 @@
 
     _FLOAT_ (x, f_x)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     scale(f_x, (float)0, (float)0);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5370,8 +5370,10 @@
     _FLOAT_ (y, f_y)
     _FLOAT_ (z, f_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     scale(f_x, f_y, f_z);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5384,8 +5386,10 @@
 
     _FLOAT_ (y, f_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     scale((float)0, f_y, (float)0);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5398,8 +5402,10 @@
 
     _FLOAT_ (z, f_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     scale((float)0, (float)0, f_z);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5413,8 +5419,10 @@
     if (! (v = __glx_getFloatsFromInto(arrayOf3Floats, vec, 3))) RETURN(false);
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     translate((Coord)(v[0]), (Coord)(v[1]), (Coord)(v[2]));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5427,8 +5435,10 @@
 
     _COORD_ (x, c_x)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     translate(c_x, (Coord)0, (Coord)0);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5443,8 +5453,10 @@
     _COORD_ (y, c_y)
     _COORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     translate(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5457,8 +5469,10 @@
 
     _COORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     translate((Coord)0, c_y, (Coord)0);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5471,8 +5485,10 @@
 
     _COORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     translate((Coord)0, (Coord)0, c_z);
-    RETURN (true);
+#endif
 %}
 ! !
 
@@ -5481,46 +5497,36 @@
 glxAcbufOp:op value:value in:aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     acbuf(__intVal(op), _floatVal(value));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxAcsizePlanes: planes in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     acsize(__intVal(planes));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxAfunctionRef: ref func: func in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     afunction(__intVal(ref), __intVal(func));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBbox2Xmin: xmin ymin: ymin x1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     Screencoord c_xmin, c_ymin;
     Coord c_x1, c_y1, c_x2, c_y2; 
 
@@ -5531,18 +5537,15 @@
     _COORD_ (x2, c_x2)
     _COORD_ (y2, c_y2)
     SETWIN(aGLXWindowId)
+#ifdef GLX
     bbox2(c_xmin, c_ymin, c_x1, c_y1, c_x2, c_y2);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBbox2iXmin: xmin ymin: ymin x1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     Screencoord c_xmin, c_ymin;
     Icoord c_x1, c_y1, c_x2, c_y2; 
 
@@ -5553,18 +5556,15 @@
     _ICOORD_ (x2, c_x2)
     _ICOORD_ (y2, c_y2)
     SETWIN(aGLXWindowId)
+#ifdef GLX
     bbox2i(c_xmin, c_ymin, c_x1, c_y1, c_x2, c_y2);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBbox2sXmin: xmin ymin: ymin x1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     Screencoord c_xmin, c_ymin;
     Scoord c_x1, c_y1, c_x2, c_y2; 
 
@@ -5575,241 +5575,195 @@
     _SCOORD_ (x2, c_x2)
     _SCOORD_ (y2, c_y2)
     SETWIN(aGLXWindowId)
+#ifdef GLX
     bbox2s(c_xmin, c_ymin, c_x1, c_y1, c_x2, c_y2);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBeginTrimIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     bgntrim();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBlankscreen: b in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     blankscreen(_booleanVal(b));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBlanktime: count in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     blanktime(__intVal(count));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBlendcolorRed: red green: green blue: blue alpha: alpha in: aGLXWindowId
 
 %{  /* NOCONTEXT */
+    SETWIN(aGLXWindowId)
 #ifdef FULL_GLX
-    SETWIN(aGLXWindowId)
     blendcolor(_floatVal(red), _floatVal(green), _floatVal(blue), _floatVal(alpha)); 
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBlendfunctionSfactr: sfactr dfactr: dfactr in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     blendfunction(__intVal(sfactr), __intVal(dfactr));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBlinkRate: rate i: i red: red green: green blue: blue in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     blink(_shortVal(rate), _colorindexVal(i), 
 	  _shortVal(red), _shortVal(green), _shortVal(blue));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBlkqreadData: data n: n in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(blkqread((short *)_indexedArea(data), __intVal(n))));
-#endif
-%}
-.
-    ^ false
+    int rslt = -1;
+
+    SETWIN(aGLXWindowId)
+#ifdef GLX
+    rslt = blkqread((short *)_indexedArea(data), __intVal(n));
+#endif
+    RETURN (__MKSMALLINT(rslt));
+%}
 !
 
 glxC3f: v in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     float vec[3], *c_v;
 
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     c3f(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxC3i: v in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     long vec[3], *c_v;
 
     if (! (c_v = __glx_getLongsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     c3i(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxC3s: v in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     short vec[3], *c_v;
 
     if (! (c_v = __glx_getShortsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     c3s(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxC4f: v in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     float vec[4], *c_v;
 
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     c4f(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxC4i: v in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     long vec[4], *c_v;
 
     if (! (c_v = __glx_getLongsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     c4i(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxC4s: v in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     short vec[4], *c_v;
 
     if (! (c_v = __glx_getShortsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     c4s(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxClearhitcodeIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     clearhitcode();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxClipplaneIndex: index mode: mode params: params in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     float vec[4], *v;
 
     if (! (v = __glx_getFloatsFromInto(params, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     clipplane(__intVal(index), __intVal(mode), v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxCmodeIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     cmode();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxColorfIndex: index in: aGLXWindowId
@@ -5820,217 +5774,170 @@
 glxCuroriginN: n xorigin: xorigin yorigin: yorigin in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     curorigin(_shortVal(n), _shortVal(xorigin), _shortVal(yorigin));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxCursoffIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     cursoff();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxCursonIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     curson();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxCurstype: type in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     curstype(__intVal(type));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxCyclemapDuration: duration map: map nxtmap: nxtmap in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     cyclemap(_shortVal(duration), _shortVal(map), _shortVal(nxtmap));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxDefpatternN: n size: size mask: mask in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     defpattern(_shortVal(n), _shortVal(size), (unsigned short *)_indexedArea(mask));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxDeltag: t in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     deltag(_tagVal(t));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxDepthcueMode: mode in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     depthcue(_booleanVal(mode));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxDitherMode: mode in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     dither(_longVal(mode));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxDopup: pup in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     dopup(_longVal(pup));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxDrawmode: mode in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     drawmode(_longVal(mode));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxEditobj: obj in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     editobj(_objectVal(obj));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxEndTrimIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     endtrim();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxEndfullscrnIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     endfullscrn();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxEndpupmodeIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     endpupmode();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxFinishIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     finish();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxFont: fntnum in: aGLXWindowId
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef GLX
     font(_shortVal(fntnum));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -6038,127 +5945,131 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     foreground();
-    RETURN (true);
+#endif
 %}
 !
 
 glxFreepup: pup in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     freepup(_longVal(pup));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxFudgeXfudge: xfudge yfudge: yfudge in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     fudge(_longVal(xfudge), _longVal(yfudge));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxFullscrnIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     fullscrn();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxGbeginIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     gbegin();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxGentagIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(gentag()));
-#endif
-%}
-.
-    ^ false
+    int rslt = -1;
+
+#ifdef GLX
+    SETWIN(aGLXWindowId)
+    rslt = gentag();
+#endif
+    RETURN (__MKSMALLINT(rslt));
+%}
 !
 
 glxGetbackfaceIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(getbackface()));
-#endif
-%}
-.
-    ^ false
+    int rslt = -1;
+
+#ifdef GLX
+    SETWIN(aGLXWindowId)
+    rslt = getbackface();
+#endif
+    RETURN (__MKSMALLINT(rslt));
+%}
 !
 
 glxGetbufferIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(getbuffer()));
-#endif
-%}
-.
-    ^ false
+    int rslt = -1;
+
+#ifdef GLX
+    SETWIN(aGLXWindowId)
+    rslt = getbuffer();
+#endif
+    RETURN (__MKSMALLINT(rslt));
+%}
 !
 
 glxGetbutton: num in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifndef OPENGL
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(getbutton(_deviceVal(num))));
-#endif
+    int rslt = -1;
+
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+    rslt = getbutton(_deviceVal(num));
+#endif
+    RETURN (__MKSMALLINT(rslt));
 %}
 !
 
 glxGetcmmodeIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
-    RETURN (__MKBOOLEAN(getcmmode()));
-#endif
-%}
-.
-    ^ false
+    int rslt = 0;
+
+    SETWIN(aGLXWindowId)
+#ifdef GLX
+    rslt = getcmmode();
+#endif
+    RETURN (__MKBOOLEAN(rslt));
+%}
 !
 
 glxGetcolorIn: aGLXWindowId
     "return the current drawing color"
 
 %{  /* NOCONTEXT */
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(getcolor()));
+    int rslt = -1;
+
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+    rslt = getcolor();
+#endif
+    RETURN (__MKSMALLINT(rslt));
 %}
 !
 
@@ -6237,16 +6148,28 @@
 glxGetgdescInquiry: inquiry in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(getgdesc(_longVal(inquiry))));
+    int rslt = 0;
+
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+    rslt = getgdesc(_longVal(inquiry));
+#endif
+    RETURN (__MKSMALLINT(rslt));
 %}
 !
 
 glxGetheightIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(getheight()));
+    int rslt = 0;
+
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+    rslt = getheight();
+#endif
+    RETURN (__MKSMALLINT(rslt));
 %}
 !
 
@@ -6481,14 +6404,12 @@
 glxGexitIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     gexit();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxGflushIn: aGLXWindowId
@@ -6497,24 +6418,19 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     gflush();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxGinitIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     ginit();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxGlcompatMode: mode value: value in: aGLXWindowId
@@ -6523,11 +6439,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     glcompat(_longVal(mode), _longVal(value));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxGresetIn: aGLXWindowId
@@ -6536,11 +6449,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     greset();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxGsyncIn: aGLXWindowId
@@ -6549,11 +6459,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     gsync();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxIconsizeX: x y: y in: aGLXWindowId
@@ -6562,11 +6469,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     iconsize(_longVal(x), _longVal(y));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxImakebackgroundIn: aGLXWindowId
@@ -6575,11 +6479,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     imakebackground();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxInitnamesIn: aGLXWindowId
@@ -6588,11 +6489,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     initnames();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxIsqueued: dev in: aGLXWindowId
@@ -7128,7 +7026,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     prefposition(_longVal(x1), _longVal(x2), _longVal(y1), _longVal(y2));
+#endif
     RETURN (true);
 %}
 !
@@ -7137,7 +7038,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     prefsize(_longVal(x), _longVal(y));
+#endif
     RETURN (true);
 %}
 !
@@ -7171,10 +7075,10 @@
 glxQdevice: dev in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifndef OPENGL
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     qdevice(_deviceVal(dev));
-    RETURN (true);
 #endif
 %}
 !
@@ -7183,8 +7087,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     qenter(_deviceVal(dev), _shortVal(val));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -7207,8 +7113,11 @@
     short c_data;
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     dev = __MKSMALLINT(qread(&c_data));
     data = __MKSMALLINT(c_data);
+#endif
 %}
 .
     ^ Array with: dev with: data
@@ -7218,7 +7127,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     qreset();
+#endif
     RETURN (true);
 %}
 !
@@ -7226,8 +7138,14 @@
 glxQtestIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(qtest()));
+    int rslt = 0;
+
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+    rslt = qtest();
+#endif
+    RETURN (__MKSMALLINT(rslt));
 %}
 !
 
@@ -7814,14 +7732,12 @@
 glxUnqdevice: dev in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     unqdevice(_deviceVal(dev));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxWmpack: pack in: aGLXWindowId
@@ -8040,7 +7956,10 @@
 
     if (! (c_v = __glx_getDoublesFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v2d(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8053,7 +7972,10 @@
 
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v2f(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8067,7 +7989,10 @@
     _FLOAT_(x, vec[0])
     _FLOAT_(y, vec[1])
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v2f(vec);
+#endif
     RETURN (true);
 %}
 !
@@ -8080,7 +8005,10 @@
 
     if (! (c_v = __glx_getLongsFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v2i(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8093,7 +8021,10 @@
 
     if (! (c_v = __glx_getShortsFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v2s(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8106,7 +8037,10 @@
 
     if (! (c_v = __glx_getDoublesFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3d(c_v);
+#endif
     RETURN (true);
 %}
 .
@@ -8121,7 +8055,10 @@
 
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3f(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8136,7 +8073,10 @@
     _FLOAT_(y, vec[1])
     _FLOAT_(z, vec[2])
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3f(vec);
+#endif
     RETURN (true);
 %}
 !
@@ -8149,7 +8089,10 @@
 
     if (! (c_v = __glx_getLongsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3i(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8162,7 +8105,10 @@
 
     if (! (c_v = __glx_getShortsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3s(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8176,7 +8122,10 @@
 
     if (! (c_v = __glx_getDoublesFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v4d(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8190,7 +8139,10 @@
 
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v4f(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8204,7 +8156,10 @@
 
     if (! (c_v = __glx_getLongsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v4i(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8218,7 +8173,10 @@
 
     if (! (c_v = __glx_getShortsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v4s(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8232,7 +8190,10 @@
     static float vec[3] = {0.0, 0.0, 0.0};
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3f(vec);
+#endif
     RETURN (true);
 %}
 !
@@ -8246,7 +8207,10 @@
     static float vec[3] = {1.0, 0.0, 0.0};
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3f(vec);
+#endif
     RETURN (true);
 %}
 !
@@ -8260,7 +8224,10 @@
     static float vec[3] = {0.0, 1.0, 0.0};
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3f(vec);
+#endif
     RETURN (true);
 %}
 !
@@ -8274,7 +8241,10 @@
     static float vec[3] = {0.0, 0.0, 1.0};
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3f(vec);
+#endif
     RETURN (true);
 %}
 ! !
@@ -8351,8 +8321,10 @@
     _COORD_ (pz, f_pz)
     _ANGLE_ (twist, a_twist)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     lookat(f_vx, f_vy, f_vz, f_px, f_py, f_pz, a_twist);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -8367,10 +8339,11 @@
     _FLOAT_(right, f_right)
     _FLOAT_(bottom, f_bottom)
     _FLOAT_(top, f_top)
+#ifdef OPENGL
+#else
     ortho2(f_left, f_right, f_bottom, f_top);
-%}
-.
-    ^ true
+#endif
+%}
 !
 
 glxOrthoLeft: left right: right bottom: bottom top: top near: near far: far in: aGLXWindowId
@@ -8387,8 +8360,10 @@
     _FLOAT_(near, f_near)
     _FLOAT_(far, f_far)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     ortho(f_left, f_right, f_bottom, f_top, f_near, f_far);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -8407,9 +8382,10 @@
     _COORD_ (far, c_far)
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     perspective(a_fovy, f_aspect, c_near, c_far);
-
-    RETURN (true);
+#endif
 %}
 !
 
@@ -8424,8 +8400,10 @@
     _ANGLE_(inc, a_inc)
     _ANGLE_(twist, a_twist)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     polarview(c_dist, a_azim, a_inc, a_twist);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -8434,8 +8412,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     popviewport();
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:58:24 / cg"
@@ -8446,8 +8426,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pushviewport();
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:58:02 / cg"
@@ -8457,19 +8439,22 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     reshapeviewport();
-%}
-.
-    ^ true
+#endif
+%}
 !
 
 glxViewportLeft:left right:right bottom:bottom top:top in:aGLXWindowId
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     viewport(_screencoordVal(left), _screencoordVal(right), 
 	     _screencoordVal(bottom), _screencoordVal(top));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -8492,9 +8477,10 @@
     _COORD_ (near, c_near)
     _COORD_ (far, c_far)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     window(c_left, c_right, c_bot, c_top, c_near, c_far);
-
-    RETURN (true);
+#endif
 %}
 ! !
 
@@ -8792,5 +8778,5 @@
 !GLXWorkstation class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview/Attic/GLXWorkstat.st,v 1.67 1997-09-18 20:21:07 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/Attic/GLXWorkstat.st,v 1.68 1997-10-21 18:20:51 cg Exp $'
 ! !
--- a/GLXWorkstation.st	Tue Oct 21 20:11:53 1997 +0200
+++ b/GLXWorkstation.st	Tue Oct 21 20:22:05 1997 +0200
@@ -24,7 +24,7 @@
  * for simulation (using vogl), this is compiled with -DVGL
  *   
  * New note: starting to support openGL (tm) (compile with -DOPENGL)
- * or its simulation (compile with -DOPENGL -DMESA)
+ * or its simulation (compile with -DMESA)
  */
 
 /*
@@ -44,7 +44,9 @@
  * these are not available on all gl's
  */
 
+#ifdef GLX
 /* #define FULL_GLX */
+#endif
 
 /*
  * this is stupid, GLX type-defs String, which is also defined here ...
@@ -71,6 +73,12 @@
 
 #include <stdio.h>
 
+#ifndef OPENGL
+# ifdef MESA
+#  define OPENGL
+# endif
+#endif
+
 #ifdef OPENGL   /* SGI or others OPENGL library */
 
 # include "GL/gl.h"
@@ -404,10 +412,10 @@
     }
 
     if (@global(ErrorPrinting) == true) {
-	fprintf(stderr, "XWORKSTAT: x-error caught maj=%d (0x%x) min=%d (0x%x) resource=%x\n",
+	fprintf(stderr, "GLXWORKSTAT: x-error caught maj=%d (0x%x) min=%d (0x%x) resource=%x\n",
 			event->request_code, event->request_code,
 			event->minor_code, event->minor_code, event->resourceid);
-	fprintf(stderr, "XWORKSTAT: x-error message is [%d] '%s'\n", event->error_code, lastErrorMsg);
+	fprintf(stderr, "GLXWORKSTAT: x-error message is [%d] '%s'\n", event->error_code, lastErrorMsg);
     }
 
     __errorInterruptWithIDAndParameter__(@symbol(DisplayError), __MKOBJ(dpy));
@@ -431,7 +439,7 @@
  * this file has been just copied from a 4Dgifts demo ..
  * (will need more than a day to show more ...)
  */
-#if defined(GLX) || defined(VGL)
+#if !defined(OPENGL)
 
 # include        <X11/Xlib.h>
 # include        <X11/Xutil.h>
@@ -460,7 +468,9 @@
     "rgb double buffer",
 };
 
-# ifndef VGL
+#endif /* GLX || VGL */
+
+#if defined(GLX) && !defined(VGL)
 /*
  * Dorky little helper function used to build up a GLXconfig array.
  */
@@ -472,7 +482,7 @@
     ptr->mode = m;
     ptr->arg = a;
 }
-# endif /* not VGL */
+#endif /* GLX & not VGL */
 
 static JMP_BUF errorReturn;
 
@@ -505,41 +515,56 @@
     Window parent;
     GLXWindowType type;
 {
-# ifdef VGL
-    Visual visual;
-# else
+#if !defined(OPENGL)
+# ifndef VGL
     GLXconfig params[50];
     GLXconfig* next;
     GLXconfig* retconfig;
     Colormap cmap = DefaultColormap(dpy, DefaultScreen(dpy));
+# endif
+#endif
+    Visual visual;
     XVisualInfo *vis;
-# endif
     XVisualInfo template;
     XColor white;
     XSetWindowAttributes cwa;
     XWindowAttributes   pwa;
     int scr, i, nret;
     Window win;
-# ifdef HAS_SIGACTION
+#ifdef HAS_SIGACTION
     struct sigaction oldSig, newSig;
-# else
+#else
     void *oldSig;
-# endif
-
+#endif
+
+#if !defined(OPENGL)
     __catchExit(1);
+#endif
 
     if (setjmp(errorReturn)) {
 	printf("hard error in GL - return\n");
-# ifdef HAS_SIGACTION
+#ifdef HAS_SIGACTION
 	sigaction(SIGSEGV, &oldSig, 0);
-# else
+#else
 	signal(SIGSEGV, oldSig);
-# endif
+#endif
+#if !defined(OPENGL)
 	__catchExit(0);
+#endif
 	return 0;
     }
     __CONT__
 
+    if (w <= 0) {
+	printf("GL: bad width: %d\n", w);
+	w = 1;
+    }
+    if (h <= 0) {
+	printf("GL: bad height: %d\n", h);
+	h = 1;
+    }
+
+#if !defined(OPENGL)
 # ifdef VGL
     /*
      * I know what VGL supports; its somewhat unclean to hard code it here
@@ -559,14 +584,6 @@
     scr = DefaultScreen(dpy);
     visual.visualid = CopyFromParent;
     cwa.border_pixel = 0;  /* Even if we don't use it, it must be something */
-    if (w <= 0) {
-	printf("VGL: bad width: %d\n", w);
-	w = 1;
-    }
-    if (h <= 0) {
-	printf("VGL: bad height: %d\n", h);
-	h = 1;
-    }
     win = XCreateWindow(dpy, parent, x, y, w, h,
 			     borderWidth, DisplayPlanes(dpy, scr), 
 			     InputOutput, &visual,
@@ -717,8 +734,22 @@
      */
     XSetErrorHandler(__XErrorHandler__);
 # endif /* not VGL */
-
     __catchExit(0);
+
+#else /* OPENGL | MESA */
+
+    scr = DefaultScreen(dpy);
+    visual.visualid = CopyFromParent;
+    cwa.border_pixel = 0;  /* Even if we don't use it, it must be something */
+    win = XCreateWindow(dpy, parent, x, y, w, h,
+			     borderWidth, DisplayPlanes(dpy, scr), 
+			     InputOutput, &visual,
+			     CWBorderPixel, &cwa);
+
+    vis = XGetVisualInfo(dpy, VisualScreenMask|VisualIDMask, &visual, &nret);
+printf("vis is %x\n", vis);
+#endif /* GLX || VGL */
+
     return win;
 }
 
@@ -729,17 +760,11 @@
     /*
      * only needed for VGL - GLX does it automatically
      */
-# ifdef VGL
+#ifdef VGL
     GLXunlink(dpy, win);
-# endif
+#endif
 }
 
-#endif /* GLX or VGL */
-
-/* 
- * end moved from GLXsupport.c
- */
-
 /*
  * helper for rotation - calls rot()
  */
@@ -752,8 +777,12 @@
 
     if (__isFloat(angle)) {
 	f_angle = (float)(_floatVal(angle));
-	if (f_angle != 0.0)
+	if (f_angle != 0.0) {
+#ifdef OPENGL
+#else
 	    rot(f_angle, axis);
+#endif
+	}
 	return (true);
     }
     if (__isFraction(angle)
@@ -764,14 +793,22 @@
 	n = (float)(__intVal(_FractionInstPtr(angle)->f_numerator));
 	d = (float)(__intVal(_FractionInstPtr(angle)->f_denominator));
 	f_angle = n / d;
-	if (f_angle != 0.0)
+	if (f_angle != 0.0) {
+#ifdef OPENGL
+#else
 	    rot(f_angle, axis);
+#endif
+	}
 	return (true);
     }
     if (__isSmallInteger(angle)) {
 	f_angle = (float)(__intVal(angle));
-	if (f_angle != 0.0)
+	if (f_angle != 0.0) {
+#ifdef OPENGL
+#else
 	    rot(f_angle, axis);
+#endif
+	}
 	return (true);
     }
     return false;
@@ -1232,8 +1269,6 @@
      startang and endang must be smallIntegers (10th of a degree)."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Coord c_x, c_y, c_radius;
     Angle a_startang, a_endang;
 
@@ -1244,8 +1279,9 @@
     _ANGLE_(endang, a_endang)
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     arc(c_x, c_y, c_radius, a_startang, a_endang);
-    RETURN (true);
 #endif
 %}
 
@@ -1258,8 +1294,6 @@
      startang and endang must be smallIntegers (10th of a degree)."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Coord c_x, c_y, c_radius;
     Angle a_startang, a_endang;
 
@@ -1270,8 +1304,9 @@
     _ANGLE_(endang, a_endang)
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     arcf(c_x, c_y, c_radius, a_startang, a_endang);
-    RETURN (true);
 #endif
 %}
 !
@@ -1281,8 +1316,6 @@
      All arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Icoord c_x, c_y, c_radius;
     Angle a_startang, a_endang;
 
@@ -1293,8 +1326,9 @@
     _ANGLE_(endang, a_endang)
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     arcfi(c_x, c_y, c_radius, a_startang, a_endang);
-    RETURN (true);
 #endif
 %}
 !
@@ -1304,8 +1338,6 @@
      All arguments must be (16bit) smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Scoord c_x, c_y, c_radius;
     Angle a_startang, a_endang;
 
@@ -1316,8 +1348,9 @@
     _ANGLE_(endang, a_endang)
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     arcfs(c_x, c_y, c_radius, a_startang, a_endang);
-    RETURN (true);
 #endif
 %}
 !
@@ -1327,8 +1360,6 @@
      All arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Icoord c_x, c_y, c_radius;
     Angle a_startang, a_endang;
 
@@ -1339,8 +1370,9 @@
     _ANGLE_(endang, a_endang)
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     arci(c_x, c_y, c_radius, a_startang, a_endang);
-    RETURN (true);
 #endif
 %}
 !
@@ -1350,22 +1382,19 @@
      All arguments must be (16bit) smallIntegers."
 
 %{  /* NOCONTEXT */
-    SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
-    {
-	Scoord c_x, c_y, c_radius;
-	Angle a_startang, a_endang;
-
-	_SCOORD_(x, c_x)
-	_SCOORD_(y, c_y)
-	_SCOORD_(radius, c_radius)
-	_ANGLE_(startang, a_startang)
-	_ANGLE_(endang, a_endang)
-
-	arcs(c_x, c_y, c_radius, a_startang, a_endang);
-	RETURN (true);
-    }
+    Scoord c_x, c_y, c_radius;
+    Angle a_startang, a_endang;
+
+    _SCOORD_(x, c_x)
+    _SCOORD_(y, c_y)
+    _SCOORD_(radius, c_radius)
+    _ANGLE_(startang, a_startang)
+    _ANGLE_(endang, a_endang)
+
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+    arcs(c_x, c_y, c_radius, a_startang, a_endang);
 #endif
 %}
 !
@@ -1375,19 +1404,16 @@
      x/y/radius may be floats, fractions or smallIntegers."
 
 %{  /* NOCONTEXT */
-    SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
-    {
-	Coord c_x, c_y, c_radius;
-
-	_COORD_ (x, c_x)
-	_COORD_ (y, c_y)
-	_COORD_ (radius, c_radius)
-
-	circ(c_x, c_y, c_radius);
-	RETURN (true);
-    }
+    Coord c_x, c_y, c_radius;
+
+    _COORD_ (x, c_x)
+    _COORD_ (y, c_y)
+    _COORD_ (radius, c_radius)
+
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+    circ(c_x, c_y, c_radius);
 #endif
 %}
 !
@@ -1398,8 +1424,6 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Coord c_x, c_y, c_radius;
 
@@ -1407,10 +1431,11 @@
 	_COORD_ (y, c_y)
 	_COORD_ (radius, c_radius)
 
+#ifdef OPENGL
+#else
 	circf(c_x, c_y, c_radius);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 !
 
@@ -1420,8 +1445,6 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y, c_radius;
 
@@ -1429,10 +1452,11 @@
 	_ICOORD_ (y, c_y)
 	_ICOORD_ (radius, c_radius)
 
+#ifdef OPENGL
+#else
 	circfi(c_x, c_y, c_radius);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 !
 
@@ -1442,8 +1466,6 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y, c_radius;
 
@@ -1451,10 +1473,11 @@
 	_SCOORD_ (y, c_y)
 	_SCOORD_ (radius, c_radius)
 
+#ifdef OPENGL
+#else
 	circfs(c_x, c_y, c_radius);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 !
 
@@ -1464,8 +1487,6 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y, c_radius;
 
@@ -1473,10 +1494,11 @@
 	_ICOORD_ (y, c_y)
 	_ICOORD_ (radius, c_radius)
 
+#ifdef OPENGL
+#else
 	circi(c_x, c_y, c_radius);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 !
 
@@ -1486,8 +1508,6 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y, c_radius;
 
@@ -1495,10 +1515,11 @@
 	_SCOORD_ (y, c_y)
 	_SCOORD_ (radius, c_radius)
 
+#ifdef OPENGL
+#else
 	circs(c_x, c_y, c_radius);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 ! !
 
@@ -1509,7 +1530,9 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifndef OPENGL
     popattributes();
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:42:53 / cg"
@@ -1520,7 +1543,9 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifndef OPENGL
     pushattributes();
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:43:04 / cg"
@@ -1534,18 +1559,17 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Coord c_x, c_y;
 
 	_COORD_ (x, c_x)
 	_COORD_ (y, c_y)
 
+#ifdef OPENGL
+#else
 	cmov2(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:17:38 / cg"
@@ -1557,18 +1581,17 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y;
 
 	_ICOORD_ (x, c_x)
 	_ICOORD_ (y, c_y)
 
+#ifdef OPENGL
+#else
 	cmov2i(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:17:43 / cg"
@@ -1580,18 +1603,17 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
      {
 	 Scoord c_x, c_y;
 
 	 _SCOORD_ (x, c_x)
 	 _SCOORD_ (y, c_y)
 
+#ifdef OPENGL
+#else
 	 cmov2s(c_x, c_y);
-	 RETURN (true);
+#endif
      }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:17:47 / cg"
@@ -1603,8 +1625,6 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
      {
 	Coord c_x, c_y, c_z;
 
@@ -1612,10 +1632,11 @@
 	_COORD_ (y, c_y)
 	_COORD_ (z, c_z)
 
+#ifdef OPENGL
+#else
 	cmov(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:17:22 / cg"
@@ -1627,8 +1648,6 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y, c_z;
 
@@ -1636,10 +1655,11 @@
 	_ICOORD_ (y, c_y)
 	_ICOORD_ (z, c_z)
 
+#ifdef OPENGL
+#else
 	cmovi(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:17:55 / cg"
@@ -1651,8 +1671,6 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y, c_z;
 
@@ -1660,10 +1678,11 @@
 	_SCOORD_ (y, c_y)
 	_SCOORD_ (z, c_z)
 
+#ifdef OPENGL
+#else
 	cmovs(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:17:59 / cg"
@@ -1674,16 +1693,18 @@
 
     | x y |
 %{ 
-#ifdef GLX
     short s_x, s_y;
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+# ifdef GLX
     getcpos(&s_x, &s_y);
     x = __MKSMALLINT(s_x);
     y = __MKSMALLINT(s_y);
-#endif
-%}
-.
+# endif
+#endif
+%}.
     ^x @ y
 ! !
 
@@ -1694,7 +1715,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     clear();
+#endif
 %}
 !
 
@@ -1702,29 +1726,28 @@
     "clear to a color (cval) and clear z buffer to zval simultaniously"
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
-
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+# ifdef GLX
     czclear((ulong)__intVal(cval), __intVal(zval));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+# endif
+#endif
+%}
 !
 
 glxZClearIn:aGLXWindowId
     "clear z buffer"
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+# ifdef GLX
     zclear();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+# endif
+#endif
+%}
 ! !
 
 !GLXWorkstation methodsFor:'color'!
@@ -1741,15 +1764,14 @@
 #else
     if (__isSmallInteger(index)) {
 	color((Colorindex)(__intVal(index)));
-	RETURN (true);
+	RETURN (self);
     }
     if (__isFloat(index)) {
 	colorf((float)(_floatVal(index)));
-	RETURN (true);
+	RETURN (self);
     }
 #endif
-%}.
-    ^ false
+%}
 !
 
 glxColorRed:r green:g blue:b alpha:a in:aGLXWindowId
@@ -1757,8 +1779,6 @@
      The args must be integer values within 0..255"
 
 %{  /* NOCONTEXT */
-
-#ifdef GLX
     short s_r, s_g, s_b, s_a;
 
     _INT_(r, s_r);
@@ -1766,12 +1786,10 @@
     _INT_(b, s_b);
     _INT_(a, s_a);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     cpack((((((s_a<<8) | s_b) << 8) | s_g) << 8) | s_r);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxColorRed:r green:g blue:b in:aGLXWindowId
@@ -1779,36 +1797,29 @@
      The args must be integer values in 0..255"
 
 %{  /* NOCONTEXT */
-
-#ifdef GLX
     short s_r, s_g, s_b;
 
     _INT_(r, s_r);
     _INT_(g, s_g);
     _INT_(b, s_b);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     RGBcolor(s_r, s_g, s_b);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxLrgbrangeRmin: rmin gmin: gmin bmin: bmin rmax: rmax gmax: gmax bmax: bmax
     znear: znear zfar: zfar in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     lRGBrange(_shortVal(rmin), _shortVal(gmin), _shortVal(bmin), 
 	_shortVal(rmax), _shortVal(gmax), _shortVal(bmax), 
 	_longVal(znear), _longVal(zfar));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxMapcolorI: i red: red green: green blue: blue in: aGLXWindowId
@@ -1820,7 +1831,6 @@
 #ifdef OPENGL
 #else
     mapcolor(_colorindexVal(i), _shortVal(red), _shortVal(green), _shortVal(blue));
-    RETURN (true);
 #endif
 %}
 !
@@ -1829,14 +1839,11 @@
     "change the color used for text drawing"
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     textcolor(_colorindexVal(tcolor));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 ! !
 
 !GLXWorkstation methodsFor:'curves'!
@@ -1846,8 +1853,9 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef GLX
     curvebasis(_shortVal(basid));
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:47:09 / cg"
@@ -1859,8 +1867,9 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef GLX
     curveit(_shortVal(iterationcount));
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:48:57 / cg"
@@ -1871,8 +1880,9 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef GLX
     curveprecision(_shortVal(nsegments));
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:47:43 / cg"
@@ -1891,7 +1901,6 @@
     frontbuffer(FALSE);
 # endif
     backbuffer(TRUE);
-    RETURN (true);
 #endif
 %}
 !
@@ -1907,7 +1916,6 @@
 #ifdef OPENGL
 #else
     backbuffer(_booleanVal(b));
-    RETURN (true);
 #endif
 %}
 
@@ -1919,8 +1927,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     doublebuffer();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -1935,7 +1945,6 @@
     backbuffer(FALSE);
 # endif
     frontbuffer(TRUE);
-    RETURN (true);
 #endif
 %}
 !
@@ -1951,7 +1960,6 @@
 #ifdef OPENGL
 #else
     frontbuffer(_booleanVal(b));
-    RETURN (true);
 #endif
 %}
 
@@ -1966,7 +1974,6 @@
 #ifdef OPENGL
 #else
     singlebuffer();
-    RETURN (true);
 #endif
 %}
 !
@@ -1982,7 +1989,6 @@
 #ifdef OPENGL
 #else
     swapbuffers();
-    RETURN (true);
 #endif
 %}
 
@@ -1995,9 +2001,11 @@
     "start a closed line"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     bgnclosedline();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2005,8 +2013,11 @@
     "start a line group"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     bgnline();
+#endif
 %}
 !
 
@@ -2014,9 +2025,11 @@
     "start a point-group"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     bgnpoint();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2024,9 +2037,11 @@
     "start a polygon"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     bgnpolygon();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2034,9 +2049,11 @@
     "start a quadrilateral strip"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     bgnqstrip();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2044,9 +2061,11 @@
     "start a triangle mesh"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     bgntmesh();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2054,9 +2073,11 @@
     "end a closed line"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     endclosedline();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2064,9 +2085,11 @@
     "end a line group"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     endline();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2074,9 +2097,11 @@
     "end a point group"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     endpoint();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2084,9 +2109,11 @@
     "end a polygon"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     endpolygon();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2094,9 +2121,11 @@
     "end a quadrilateral strip"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     endqstrip();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2104,9 +2133,11 @@
     "end a triangle mesh"
 
 %{  /* NOCONTEXT */
+#ifdef OPENGL
+#else
     SETWIN(aGLXWindowId)
     endtmesh();
-    RETURN (true);
+#endif
 %}
 ! !
 
@@ -2134,18 +2165,17 @@
     "change the graphics position to a 2D point, as passed in x/y"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Coord c_x, c_y;
 
 	_COORD_ (x, c_x)
 	_COORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	move2(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:15:02 / cg"
@@ -2156,18 +2186,17 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y;
 
 	_ICOORD_ (x, c_x)
 	_ICOORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	move2i(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:15:08 / cg"
@@ -2178,18 +2207,17 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y;
 
 	_SCOORD_ (x, c_x)
 	_SCOORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	move2s(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:15:13 / cg"
@@ -2199,17 +2227,16 @@
     "change the graphics position to a 3D point, as passed in vector v"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	float vec[3], *c_v;
 
 	if (! (c_v = __glx_getFloatsFromInto(v, vec, 3))) RETURN(false);
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	move((Coord)(c_v[0]), (Coord)(c_v[1]), (Coord)(c_v[2]));
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:14:29 / cg"
@@ -2219,8 +2246,6 @@
     "change the graphics position to a 3D point, as passed in x/y/z"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Coord c_x, c_y, c_z;
 
@@ -2228,10 +2253,11 @@
 	_COORD_ (y, c_y)
 	_COORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	move(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:14:38 / cg"
@@ -2242,8 +2268,6 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y, c_z;
 
@@ -2251,10 +2275,11 @@
 	_ICOORD_ (y, c_y)
 	_ICOORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	movei(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:14:44 / cg"
@@ -2265,8 +2290,6 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y, c_z;
 
@@ -2274,10 +2297,11 @@
 	_SCOORD_ (y, c_y)
 	_SCOORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	moves(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:14:48 / cg"
@@ -2288,17 +2312,16 @@
      the relative distance is passed in vector v"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	float vec[2], *c_v;
 
 	if (! (c_v = __glx_getFloatsFromInto(v, vec, 2))) RETURN(false);
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rmv2((Coord)(c_v[0]), (Coord)(c_v[1]));
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:15:57 / cg"
@@ -2309,18 +2332,17 @@
      the relative distance is passed in x/y"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Coord c_x, c_y;
 
 	_COORD_ (x, c_x)
 	_COORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rmv2(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:16:42 / cg"
@@ -2332,18 +2354,17 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y;
 
 	_ICOORD_ (x, c_x)
 	_ICOORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rmv2i(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:16:39 / cg"
@@ -2355,18 +2376,17 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y;
 
 	_SCOORD_ (x, c_x)
 	_SCOORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rmv2s(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:16:33 / cg"
@@ -2377,17 +2397,16 @@
      the relative distance is passed in vector v"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	float vec[3], *c_v;
 
 	if (! (c_v = __glx_getFloatsFromInto(v, vec, 3))) RETURN(false);
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rmv((Coord)(c_v[0]), (Coord)(c_v[1]), (Coord)(c_v[2]));
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:16:08 / cg"
@@ -2398,8 +2417,6 @@
      the relative distance is passed in x/y/z"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Coord c_x, c_y, c_z;
 
@@ -2407,10 +2424,11 @@
 	_COORD_ (y, c_y)
 	_COORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rmv(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:16:16 / cg"
@@ -2422,8 +2440,6 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y, c_z;
 
@@ -2431,10 +2447,11 @@
 	_ICOORD_ (y, c_y)
 	_ICOORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rmvi(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:16:21 / cg"
@@ -2446,8 +2463,6 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y, c_z;
 
@@ -2455,10 +2470,11 @@
 	_SCOORD_ (y, c_y)
 	_SCOORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rmvs(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:16:25 / cg"
@@ -2503,7 +2519,7 @@
     if (ISCONNECTED) {
 	_INST(hasStereoExtension) = false;
 
-#if defined(XSGIStereo) && !defined(VGL)
+#if defined(XSGIStereo) && defined(GLX)
 	if (_INST(glOK) == true) {
 	    if (XQueryExtension(dpy, "SGIFullScreenStereo", &dummy, &dummy, &dummy))
 		_INST(hasStereoExtension) = true;
@@ -2519,11 +2535,10 @@
     "define a line style"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     deflinestyle(_shortVal(n), _linestyleVal(ls));
-    RETURN (true);
 #endif
 %}
 !
@@ -2540,7 +2555,6 @@
 #ifdef OPENGL
 #else
     draw2((Coord)(c_v[0]), (Coord)(c_v[1]));
-    RETURN (true);
 #endif
 %}
 
@@ -2552,18 +2566,17 @@
      to a new 2D position, passed in x/y."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Coord c_x, c_y;
 
 	_COORD_ (x, c_x)
 	_COORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	draw2(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:03:50 / cg"
@@ -2574,18 +2587,17 @@
      to a new 2D position, passed in x/y."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y;
 
 	_ICOORD_ (x, c_x)
 	_ICOORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	draw2i(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:04:07 / cg"
@@ -2596,18 +2608,17 @@
      to a new 2D position, passed in x/y."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y;
 
 	_SCOORD_ (x, c_x)
 	_SCOORD_ (y, c_y)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	draw2s(c_x, c_y);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:04:19 / cg"
@@ -2625,7 +2636,6 @@
 #ifdef OPENGL
 #else
     draw((Coord)(c_v[0]), (Coord)(c_v[1]), (Coord)(c_v[2]));
-    RETURN (true);
 #endif
 %}
 
@@ -2638,8 +2648,6 @@
      The arguments may be floats, fractions or smallIntegers"
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Coord c_x, c_y, c_z;
 
@@ -2647,10 +2655,11 @@
 	_COORD_ (y, c_y)
 	_COORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	draw(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:04:46 / cg"
@@ -2662,8 +2671,6 @@
      The arguments must be smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Icoord c_x, c_y, c_z;
 
@@ -2671,10 +2678,11 @@
 	_ICOORD_ (y, c_y)
 	_ICOORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	drawi(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:04:54 / cg"
@@ -2686,8 +2694,6 @@
      The arguments must be (16bit) smallIntegers."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     {
 	Scoord c_x, c_y, c_z;
 
@@ -2695,10 +2701,11 @@
 	_SCOORD_ (y, c_y)
 	_SCOORD_ (z, c_z)
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	draws(c_x, c_y, c_z);
-	RETURN (true);
+#endif
     }
-#endif
 %}
 
     "Modified: 22.3.1996 / 18:05:01 / cg"
@@ -2709,8 +2716,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     linewidth(_shortVal(n));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -2719,7 +2728,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     linewidthf(_floatVal(n));
+#endif
     RETURN (true);
 %}
 !
@@ -2729,14 +2741,13 @@
      to a new 2D position, passing the relative distance in the vector v."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     float vec[2], *c_v;
 
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rdr2((Coord)(c_v[0]), (Coord)(c_v[1]));
-    RETURN (true);
 #endif
 %}
 
@@ -2748,15 +2759,14 @@
      to a new 2D position, passing the relative distance in x/y."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Coord c_x, c_y;
 
     _COORD_ (x, c_x)
     _COORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rdr2(c_x, c_y);
-    RETURN (true);
 #endif
 %}
 
@@ -2768,15 +2778,14 @@
      to a new 2D position, passing the relative distance in x/y."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Icoord c_x, c_y;
 
     _ICOORD_ (x, c_x)
     _ICOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rdr2i(c_x, c_y);
-    RETURN (true);
 #endif
 %}
 
@@ -2788,15 +2797,14 @@
      to a new 2D position, passing the relative distance in x/y."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Scoord c_x, c_y;
 
     _SCOORD_ (x, c_x)
     _SCOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rdr2s(c_x, c_y);
-    RETURN (true);
 #endif
 %}
 
@@ -2808,14 +2816,13 @@
      to a new 3D position, passing the relative distance in the vector v."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     float vec[3], *c_v;
 
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rdr((Coord)(c_v[0]), (Coord)(c_v[1]), (Coord)(c_v[2]));
-    RETURN (true);
 #endif
 %}
 
@@ -2827,16 +2834,15 @@
      to a new 3D position, passing the relative distance in x/y/z."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Coord c_x, c_y, c_z;
 
     _COORD_ (x, c_x)
     _COORD_ (y, c_y)
     _COORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rdr(c_x, c_y, c_z);
-    RETURN (true);
 #endif
 %}
 
@@ -2848,16 +2854,15 @@
      to a new 3D position, passing the relative distance in x/y/z."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Icoord c_x, c_y, c_z;
 
     _ICOORD_ (x, c_x)
     _ICOORD_ (y, c_y)
     _ICOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rdri(c_x, c_y, c_z);
-    RETURN (true);
 #endif
 %}
 
@@ -2869,16 +2874,15 @@
      to a new 3D position, passing the relative distance in x/y/z."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Scoord c_x, c_y, c_z;
 
     _SCOORD_ (x, c_x)
     _SCOORD_ (y, c_y)
     _SCOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rdrs(c_x, c_y, c_z);
-    RETURN (true);
 #endif
 %}
 
@@ -2890,11 +2894,11 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     setlinestyle(_shortVal(index));
-    RETURN (true);
-%}
-.
-    ^ false
+#endif
+%}
 ! !
 
 !GLXWorkstation methodsFor:'materials & lights'!
@@ -2932,17 +2936,14 @@
     else if (target == @symbol(lightModel))
 	defType = LMODEL;
     else { 
-	RETURN (false); 
+	RETURN (nil); 
     }
 
     _INT_ (index, i_index);
     SETWIN(aGLXWindowId)
     lmbind(defType, i_index);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxLmdef:what index:index np:np props:props in:aGLXWindowId
@@ -2965,7 +2966,7 @@
     else if (what == @symbol(lightModel))
 	defType = DEFLMODEL;
     else {
-	RETURN (false);
+	RETURN (nil);
     }
 
     _INT_ (index, i_index);
@@ -2981,17 +2982,14 @@
 		ninstVars = __intVal(_ClassInstPtr(cls)->c_ninstvars);
 		fp = (float *) &(_InstPtr(props)->i_instvars[ninstVars]);
 	    } else {
-		RETURN (false);
+		RETURN (nil);
 	    }
 	} 
     }
     SETWIN(aGLXWindowId)
     lmdef(defType, i_index, i_np, fp);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxTevbind:target index:index in:aGLXWindowId
@@ -3008,16 +3006,13 @@
 	if (target == @symbol(env0)) {
 	    t = TV_ENV0;
 	} else {
-	    RETURN (false);
+	    RETURN (nil);
 	}
     }
     SETWIN(aGLXWindowId)
     tevbind(t, __intVal(index));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxTevdef:index np:np props:props in:aGLXWindowId
@@ -3030,11 +3025,8 @@
     SETWIN(aGLXWindowId)
     fp = __glx_getFloatsFromFloatArrayInto(props, fbuff);
     tevdef(__intVal(index), __intVal(np), fp);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxTexDef2d:index nc:nc width:w height:h bits:image np:np props:props in:aGLXWindowId
@@ -3058,12 +3050,9 @@
 	SETWIN(aGLXWindowId)
 	texdef2d(__intVal(index), __intVal(nc), __intVal(w), __intVal(h),
 		 (const unsigned long *)cp, __intVal(np), fp);
-	RETURN (true);
     }
 #endif
 %}
-.
-    ^ false
 !
 
 glxTexDef3d:index nc:nc width:w height:h depth:d bits:image np:np props:props in:aGLXWindowId
@@ -3088,12 +3077,9 @@
 	texdef3d(__intVal(index), __intVal(nc), __intVal(w), __intVal(h),
 		 __intVal(d),
 		 (const unsigned long *)cp, __intVal(np), fp);
-	RETURN (true);
     }
 #endif
 %}
-.
-    ^ false
 !
 
 glxTexbind:target index:index in:aGLXWindowId
@@ -3114,16 +3100,13 @@
 	} else if (target == @symbol(textureIdle)) {
 	    t = TX_TEXTURE_IDLE;
 	} else {
-	    RETURN (false);
+	    RETURN (nil);
 	}
     }
     SETWIN(aGLXWindowId)
     texbind(t, __intVal(index));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 ! !
 
 !GLXWorkstation methodsFor:'matrix stack'!
@@ -3140,10 +3123,8 @@
     SETWIN(aGLXWindowId)
     getmatrix(matrix);
     if (! __glx_putFloatsFromInto(matrix, arrayOf16Floats, 16)) RETURN(false);
-    RETURN (true);
-#endif
-%}.
-    ^ false
+#endif
+%}
 !
 
 glxLoadMatrix:arrayOf16Floats in:aGLXWindowId
@@ -3159,7 +3140,6 @@
     if (! (m = __glx_getFloatsFromMatrixInto(arrayOf16Floats, &matrix))) RETURN (false);
     SETWIN(aGLXWindowId)
     loadmatrix(*m);
-    RETURN (true);
 #endif
 %}
 !
@@ -3177,7 +3157,6 @@
     if (! (m = __glx_getFloatsFromMatrixInto(arrayOf16Floats, &matrix))) RETURN (false);
     SETWIN(aGLXWindowId)
     multmatrix(*m);
-    RETURN (true);
 #endif
 %}
 !
@@ -3187,7 +3166,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     popmatrix();
+#endif
 %}
 !
 
@@ -3196,7 +3178,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pushmatrix();
+#endif
 %}
 ! !
 
@@ -3209,8 +3194,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     gconfig();
-    RETURN (true);
+#endif
 %}
 !
 
@@ -3414,27 +3401,22 @@
     "start a NURBS curve def - in real GL only"
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     bgncurve();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBeginSurfaceIn:aGLXWindowId
     "start a NURBS surface def - in real GL only"
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     bgnsurface();
-    RETURN (true);
-#endif
-%}.
-    ^ false
+#endif
+%}
 !
 
 glxDefBasis:id mat:aMatrix in:aGLXWindowId
@@ -3450,11 +3432,9 @@
     if (__isSmallInteger(id)) {
 	SETWIN(aGLXWindowId)
 	defbasis((short)(__intVal(id)), *m);
-	RETURN (true);
     }
 #endif
-%}.
-    ^ false
+%}
 
     "Modified: 19.3.1996 / 18:52:56 / cg"
 !
@@ -3463,26 +3443,22 @@
     "end a NURBS curve def - in real GL only"
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     endcurve();
-    RETURN (true);
-#endif
-%}.
-    ^ false
+#endif
+%}
 !
 
 glxEndSurfaceIn:aGLXWindowId
     "end a NURBS surface def - in real GL only"
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     endsurface();
-    RETURN (true);
-#endif
-%}.
-    ^ false
+#endif
+%}
 !
 
 glxNurbsSurfaceUKnotCount: uKnotCount uKnot: uKnot 
@@ -3533,11 +3509,12 @@
 %{  /* NOCONTEXT */
     if (__bothSmallInteger(u, v)) {
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	patchbasis((long)__intVal(u), (long)__intVal(v));
-	RETURN (true);
+#endif
     }
-%}.
-    ^ false
+%}
 
     "Modified: 19.3.1996 / 18:53:18 / cg"
 !
@@ -3548,11 +3525,12 @@
 %{  /* NOCONTEXT */
     if (__bothSmallInteger(u, v)) {
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	patchcurves((long)__intVal(u), (long)__intVal(v));
-	RETURN (true);
+#endif
     }
-%}.
-    ^ false
+%}
 
     "Modified: 19.3.1996 / 18:53:34 / cg"
 !
@@ -3563,11 +3541,12 @@
 %{  /* NOCONTEXT */
     if (__bothSmallInteger(u, v)) {
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	patchprecision((long)__intVal(u), (long)__intVal(v));
-	RETURN (true);
+#endif
     }
-%}.
-    ^ false
+%}
 !
 
 glxPatchX:arrayOf16XFloats y:arrayOf16YFloats z:arrayOf16ZFloats in:aGLXWindowId
@@ -3580,12 +3559,14 @@
     Matrix matrixX, matrixY, matrixZ;
     Matrix *mX, *mY, *mZ;
 
-    if (! (mX = __glx_getFloatsFromMatrixInto(arrayOf16XFloats, &matrixX))) RETURN (false);
-    if (! (mY = __glx_getFloatsFromMatrixInto(arrayOf16YFloats, &matrixY))) RETURN (false);
-    if (! (mZ = __glx_getFloatsFromMatrixInto(arrayOf16ZFloats, &matrixZ))) RETURN (false);
+    if (! (mX = __glx_getFloatsFromMatrixInto(arrayOf16XFloats, &matrixX))) 
+	RETURN (nil);
+    if (! (mY = __glx_getFloatsFromMatrixInto(arrayOf16YFloats, &matrixY))) 
+	RETURN (nil);
+    if (! (mZ = __glx_getFloatsFromMatrixInto(arrayOf16ZFloats, &matrixZ))) 
+	RETURN (nil);
     SETWIN(aGLXWindowId)
     patch(*mX, *mY, *mZ);
-    RETURN (true);
 #endif
 %}
 
@@ -3602,13 +3583,16 @@
     Matrix matrixX, matrixY, matrixZ, matrixW;
     Matrix *mX, *mY, *mZ, *mW;
 
-    if (! (mX = __glx_getFloatsFromMatrixInto(arrayOf16XFloats, &matrixX))) RETURN (false);
-    if (! (mY = __glx_getFloatsFromMatrixInto(arrayOf16YFloats, &matrixY))) RETURN (false);
-    if (! (mZ = __glx_getFloatsFromMatrixInto(arrayOf16ZFloats, &matrixZ))) RETURN (false);
-    if (! (mW = __glx_getFloatsFromMatrixInto(arrayOf16WFloats, &matrixW))) RETURN (false);
+    if (! (mX = __glx_getFloatsFromMatrixInto(arrayOf16XFloats, &matrixX))) 
+	RETURN (nil);
+    if (! (mY = __glx_getFloatsFromMatrixInto(arrayOf16YFloats, &matrixY))) 
+	RETURN (nil);
+    if (! (mZ = __glx_getFloatsFromMatrixInto(arrayOf16ZFloats, &matrixZ))) 
+	RETURN (nil);
+    if (! (mW = __glx_getFloatsFromMatrixInto(arrayOf16WFloats, &matrixW))) 
+	RETURN (nil);
     SETWIN(aGLXWindowId)
     rpatch(*mX, *mY, *mZ, *mW);
-    RETURN (true);
 #endif
 %}
 
@@ -3629,10 +3613,8 @@
     rectcopy(_screencoordVal(x1), _screencoordVal(y1), 
 	     _screencoordVal(x2), _screencoordVal(y2), 
 	     _screencoordVal(newx), _screencoordVal(newy));
-    RETURN (true);
-#endif
-%}.
-    ^ false
+#endif
+%}
 ! !
 
 !GLXWorkstation methodsFor:'pixel reading'!
@@ -3701,11 +3683,8 @@
     }
 
     readsource(what);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxRectreadX1:x1 y1:y1 x2:x2 y2:y2 h:viewHeight to:dest in:aGLXWindowId
@@ -3785,7 +3764,7 @@
 
 %{
 #ifdef VGL
-    if (__isSmallInteger(x) && __isSmallInteger(y)) {
+    if (__bothSmallInteger(x, y)) {
 	SETWIN(aGLXWindowId)
 	RETURN (__MKSMALLINT(X11_getPixel(__intVal(x), __intVal(y))));
     }
@@ -3802,15 +3781,14 @@
     "plot a point in x, y, 0."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Coord c_x, c_y;
 
     _COORD_ (x, c_x)
     _COORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pnt2(c_x, c_y);
-    RETURN (true);
 #endif
 %}
 
@@ -3821,15 +3799,14 @@
     "plot a point in x, y, 0."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Icoord c_x, c_y;
 
     _ICOORD_ (x, c_x)
     _ICOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pnt2i(c_x, c_y);
-    RETURN (true);
 #endif
 %}
 
@@ -3840,15 +3817,14 @@
     "plot a point in x, y, 0."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Scoord c_x, c_y;
 
     _SCOORD_ (x, c_x)
     _SCOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pnt2s(c_x, c_y);
-    RETURN (true);
 #endif
 %}
 
@@ -3859,16 +3835,15 @@
     "plot a point in x, y, z."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Coord c_x, c_y, c_z;
 
     _COORD_ (x, c_x)
     _COORD_ (y, c_y)
     _COORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pnt(c_x, c_y, c_z);
-    RETURN (true);
 #endif
 %}
 
@@ -3879,16 +3854,15 @@
     "plot a point in x, y, z."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Icoord c_x, c_y, c_z;
 
     _ICOORD_ (x, c_x)
     _ICOORD_ (y, c_y)
     _ICOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pnti(c_x, c_y, c_z);
-    RETURN (true);
 #endif
 %}
 
@@ -3899,16 +3873,15 @@
     "plot a point in x, y, z."
 
 %{  /* NOCONTEXT */
-#ifdef OPENGL
-#else
     Scoord c_x, c_y, c_z;
 
     _SCOORD_ (x, c_x)
     _SCOORD_ (y, c_y)
     _SCOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pnts(c_x, c_y, c_z);
-    RETURN (true);
 #endif
 %}
 
@@ -3918,27 +3891,21 @@
 glxPntsize: n in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     pntsize(_shortVal(n));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxPntsizef: n in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     pntsizef(_floatVal(n));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 ! !
 
 !GLXWorkstation methodsFor:'polygons'!
@@ -3949,8 +3916,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     backface(_booleanVal(b));
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:26:50 / cg"
@@ -3961,8 +3930,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     concave(_booleanVal(b));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -3974,13 +3945,11 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     frontface(_booleanVal(b));
-    RETURN (true);
-%}
-.
-    ^ false
-
-    "Modified: 19.3.1996 / 18:27:50 / cg"
+#endif
+%}
 !
 
 glxPdr2X: x y: y in: aGLXWindowId
@@ -3992,11 +3961,11 @@
     _COORD_ (x, c_x)
     _COORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pdr2(c_x, c_y);
-    RETURN (true);
-%}
-
-    "Modified: 19.3.1996 / 18:33:09 / cg"
+#endif
+%}
 !
 
 glxPdr2iX: x y: y in: aGLXWindowId
@@ -4008,8 +3977,10 @@
     _ICOORD_ (x, c_x)
     _ICOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pdr2i(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:33:28 / cg"
@@ -4024,8 +3995,10 @@
     _SCOORD_ (x, c_x)
     _SCOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pdr2s(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:03 / cg"
@@ -4041,8 +4014,10 @@
     _COORD_ (y, c_y)
     _COORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pdr(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:06 / cg"
@@ -4058,8 +4033,10 @@
     _ICOORD_ (y, c_y)
     _ICOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pdri(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:11 / cg"
@@ -4075,8 +4052,10 @@
     _SCOORD_ (y, c_y)
     _SCOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pdrs(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:14 / cg"
@@ -4091,8 +4070,10 @@
     _COORD_ (x, c_x)
     _COORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pmv2(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:32:45 / cg"
@@ -4107,8 +4088,10 @@
     _ICOORD_ (x, c_x)
     _ICOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pmv2i(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:32:42 / cg"
@@ -4123,8 +4106,10 @@
     _SCOORD_ (x, c_x)
     _SCOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pmv2s(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:32:38 / cg"
@@ -4140,8 +4125,10 @@
     _COORD_ (y, c_y)
     _COORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pmv(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:31:52 / cg"
@@ -4157,8 +4144,10 @@
     _ICOORD_ (y, c_y)
     _ICOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pmvi(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:31:59 / cg"
@@ -4174,8 +4163,10 @@
     _SCOORD_ (y, c_y)
     _SCOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pmvs(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:32:03 / cg"
@@ -4187,8 +4178,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     polymode(_longVal(mode));
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:29:32 / cg"
@@ -4203,8 +4196,10 @@
     _COORD_ (x, c_x)
     _COORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpdr2(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:31 / cg"
@@ -4219,8 +4214,10 @@
     _ICOORD_ (x, c_x)
     _ICOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpdr2i(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:36 / cg"
@@ -4235,8 +4232,10 @@
     _SCOORD_ (x, c_x)
     _SCOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpdr2s(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:40 / cg"
@@ -4252,8 +4251,10 @@
     _COORD_ (y, c_y)
     _COORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpdr(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:48 / cg"
@@ -4269,8 +4270,10 @@
     _ICOORD_ (y, c_y)
     _ICOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpdri(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:51 / cg"
@@ -4286,8 +4289,10 @@
     _SCOORD_ (y, c_y)
     _SCOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpdrs(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:34:55 / cg"
@@ -4302,8 +4307,10 @@
     _COORD_ (x, c_x)
     _COORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpmv2(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:37:15 / cg"
@@ -4318,8 +4325,10 @@
     _ICOORD_ (x, c_x)
     _ICOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpmv2i(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:37:20 / cg"
@@ -4334,8 +4343,10 @@
     _SCOORD_ (x, c_x)
     _SCOORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpmv2s(c_x, c_y);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:38:06 / cg"
@@ -4351,8 +4362,10 @@
     _COORD_ (y, c_y)
     _COORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpmv(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:38:03 / cg"
@@ -4368,8 +4381,10 @@
     _ICOORD_ (y, c_y)
     _ICOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpmvi(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:37:53 / cg"
@@ -4385,8 +4400,10 @@
     _SCOORD_ (y, c_y)
     _SCOORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rpmvs(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:37:58 / cg"
@@ -4403,14 +4420,17 @@
 #ifdef VGL
     RETURN (__MKSTRING("vogl"));
 #else
+# ifdef GLX
     char buffer[128];
 
     if (_INST(glOK) == true) {
 	gversion(buffer);
 	RETURN (__MKSTRING(buffer));
-    } else {
-	RETURN (nil);
     }
+    RETURN (nil);
+# else
+    RETURN (nil);
+# endif
 #endif
 %}
 
@@ -4423,13 +4443,13 @@
     "Returns the number if bit planes available on the device."
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     RETURN (__MKSMALLINT(getplanes()));
 #endif
-%}
-.
-    ^ false
+%}.
+    ^ 0
 
     "Modified: 19.3.1996 / 18:50:44 / cg"
 !
@@ -4447,13 +4467,30 @@
 !
 
 isTrueGL
-    "return true, if this is a true GL (as opposed to a simulated VOGL)"
+    "return true, if this is a true GL (as opposed to a simulated VOGL).
+     Returns false for all openGL systems."
 
 %{  /* NOCONTEXT */
 #ifdef VGL
     RETURN ( false );
 #else
+# ifdef GLX
     RETURN ( true );
+# else
+    RETURN (false);
+# endif
+#endif
+%}
+!
+
+isOpenGL
+    "return true, if this is an openGL (as opposed to a GL)"
+
+%{  /* NOCONTEXT */
+#ifdef OPENGL
+    RETURN ( true );
+#else
+    RETURN ( false );
 #endif
 %}
 !
@@ -4461,7 +4498,8 @@
 maxZValue
     "return the max. Z value (only valid if z-buffer is supported)"
 %{  
-#ifdef GLX
+#ifndef OPENGL
+# ifdef GD_ZMAX
     long zMax;
 
     if (_INST(glOK) == true) {
@@ -4472,6 +4510,7 @@
 	}
 	RETURN ( __MKLARGEINT(zMax) );
     }
+# endif
 #endif
 %}.
     ^ nil
@@ -4484,10 +4523,16 @@
 
 %{  /* NOCONTEXT */
 
-#ifdef GLX
+#ifndef OPENGL
+# ifdef VGL
+    RETURN (true);
+# else
+#  ifdef GD_BITS_NORM_DBL_RED
     if (getgdesc(GD_BITS_NORM_DBL_RED) != 0) {
 	RETURN ( _INST(glOK) );
     }
+#  endif
+# endif
 #endif
 %}.
     ^ false
@@ -4551,10 +4596,12 @@
      if the display supports GL drawing at all."
 
 %{  /* NOCONTEXT */
-#ifdef GLX
+#ifndef OPENGL
+# ifdef GD_TEXTURE
     if (getgdesc(GD_TEXTURE) != 0) {
 	RETURN ( _INST(glOK) );
     }
+# endif
 #endif
 %}.
     ^ false
@@ -4571,10 +4618,12 @@
 
 %{  /* NOCONTEXT */
 
-#ifdef GLX
+#ifndef OPENGL
+# ifdef GD_BITS_NORM_ZBUFFER
     if (getgdesc(GD_BITS_NORM_ZBUFFER) != 0) {
 	RETURN ( _INST(glOK) );
     }
+# endif
 #endif
 %}.
     ^ false
@@ -4590,8 +4639,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rect(_coordVal(x1), _coordVal(y1), _coordVal(x2), _coordVal(y2));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -4599,8 +4650,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rectf(_coordVal(x1), _coordVal(y1), _coordVal(x2), _coordVal(y2));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -4608,8 +4661,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rectfi(_icoordVal(x1), _icoordVal(y1), _icoordVal(x2), _icoordVal(y2));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -4617,8 +4672,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rectfs(_scoordVal(x1), _scoordVal(y1), _scoordVal(x2), _scoordVal(y2));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -4626,8 +4683,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     recti(_icoordVal(x1), _icoordVal(y1), _icoordVal(x2), _icoordVal(y2));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -4635,8 +4694,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rects(_scoordVal(x1), _scoordVal(y1), _scoordVal(x2), _scoordVal(y2));
-    RETURN (true);
+#endif
 %}
 ! !
 
@@ -4653,11 +4714,8 @@
     if (! (v = __glx_getFloatsFromInto(arrayOf4Floats, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
     sphdraw(v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxSphDrawX:x y:y z:z radius:r in:aGLXWindowId
@@ -4673,11 +4731,8 @@
     _FLOAT_(r, vec[3])
     SETWIN(aGLXWindowId)
     sphdraw(vec);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxSphfreeIn: aGLXWindowId
@@ -4686,11 +4741,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     sphfree();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxSphgnpolysIn: aGLXWindowId
@@ -4701,8 +4753,6 @@
     RETURN (__MKSMALLINT(sphgnpolys()));
 #endif
 %}
-.
-    ^ false
 !
 
 glxSphmode: attribute value: value in: aGLXWindowId
@@ -4711,11 +4761,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     sphmode(__intVal(attribute), __intVal(value));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxSphobj: objid in: aGLXWindowId
@@ -4724,11 +4771,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     sphobj(_objectVal(objid));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxSphrotmatrix: mat in: aGLXWindowId
@@ -4740,11 +4784,8 @@
     if (! (m = __glx_getFloatsFromMatrixInto(mat, &matrix))) RETURN (false);
     SETWIN(aGLXWindowId)
     sphrotmatrix(*m);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 ! !
 
 !GLXWorkstation methodsFor:'stereo extension'!
@@ -4755,11 +4796,8 @@
 #ifdef FULL_GLX
     SETWIN(aGLXWindowId)
     leftbuffer(_booleanVal(bool));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxMonobufferIn: aGLXWindowId
@@ -4768,11 +4806,8 @@
 #ifdef FULL_GLX
     SETWIN(aGLXWindowId)
     monobuffer();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxRightbuffer: bool in: aGLXWindowId
@@ -4781,11 +4816,8 @@
 #ifdef FULL_GLX
     SETWIN(aGLXWindowId)
     rightbuffer(_booleanVal(bool));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 stereoExtensionBuffer:aBufferSymbol for:aWindowId
@@ -4957,11 +4989,8 @@
     if (! (c_v = __glx_getDoublesFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
     t2d(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT2f: v in: aGLXWindowId
@@ -4973,11 +5002,8 @@
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
     t2f(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT2i: v in: aGLXWindowId
@@ -4989,11 +5015,8 @@
     if (! (c_v = __glx_getLongsFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
     t2i(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT2s: v in: aGLXWindowId
@@ -5005,11 +5028,8 @@
     if (! (c_v = __glx_getShortsFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
     t2s(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT3d:v in:aGLXWindowId
@@ -5021,11 +5041,8 @@
     if (! (c_v = __glx_getDoublesFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
     t3d(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT3f:v in:aGLXWindowId
@@ -5037,11 +5054,8 @@
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
     t3f(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT3i:v in:aGLXWindowId
@@ -5053,11 +5067,8 @@
     if (! (c_v = __glx_getLongsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
     t3i(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT3s:v in:aGLXWindowId
@@ -5069,11 +5080,8 @@
     if (! (c_v = __glx_getShortsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
     t3s(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT4d: v in: aGLXWindowId
@@ -5085,11 +5093,8 @@
     if (! (c_v = __glx_getDoublesFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
     t4d(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT4f: v in: aGLXWindowId
@@ -5101,11 +5106,8 @@
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
     t4f(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT4i: v in: aGLXWindowId
@@ -5117,11 +5119,8 @@
     if (! (c_v = __glx_getLongsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
     t4i(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxT4s: v in: aGLXWindowId
@@ -5133,11 +5132,8 @@
     if (! (c_v = __glx_getShortsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
     t4s(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 ! !
 
 !GLXWorkstation methodsFor:'transformations'!
@@ -5177,10 +5173,12 @@
     if (! (v = __glx_getFloatsFromInto(arrayOf3Floats, vec, 3))) RETURN(false);
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     rot(v[0], 'x');
     rot(v[1], 'y');
     rot(v[2], 'z');
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5205,12 +5203,12 @@
 
     if (__isSmallInteger(angle)) {
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rotate(__intVal(angle), c_axis);
-	RETURN (true);
+#endif
     }
 %}
-.
-    ^ false
 !
 
 glxRotateIX:angle in:aGLXWindowId
@@ -5221,12 +5219,12 @@
 
     if (__isSmallInteger(angle)) {
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rotate(__intVal(angle), 'x');
-	RETURN (true);
+#endif
     }
 %}
-.
-    ^ false
 !
 
 glxRotateIX:xAngle y:yAngle z:zAngle in:aGLXWindowId
@@ -5238,14 +5236,14 @@
     if (__bothSmallInteger(xAngle, yAngle)
      && __isSmallInteger(zAngle)) {
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rotate(__intVal(xAngle), 'x');
 	rotate(__intVal(yAngle), 'y');
 	rotate(__intVal(zAngle), 'z');
-	RETURN (true);
+#endif
     }
 %}
-.
-    ^ false
 !
 
 glxRotateIY:angle in:aGLXWindowId
@@ -5256,12 +5254,12 @@
 
     if (__isSmallInteger(angle)) {
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rotate(__intVal(angle), 'y');
-	RETURN (true);
+#endif
     }
 %}
-.
-    ^ false
 !
 
 glxRotateIZ:angle in:aGLXWindowId
@@ -5272,12 +5270,12 @@
 
     if (__isSmallInteger(angle)) {
 	SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
 	rotate(__intVal(angle), 'z');
-	RETURN (true);
+#endif
     }
 %}
-.
-    ^ false
 !
 
 glxRotateX:angle in:aGLXWindowId
@@ -5304,8 +5302,6 @@
 	}
     }
 %}
-.
-    ^ false
 !
 
 glxRotateY:angle in:aGLXWindowId
@@ -5340,8 +5336,10 @@
     if (! (v = __glx_getFloatsFromInto(arrayOf3Floats, vec, 3))) RETURN(false);
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     scale(v[0], v[1], v[2]);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5354,8 +5352,10 @@
 
     _FLOAT_ (x, f_x)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     scale(f_x, (float)0, (float)0);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5370,8 +5370,10 @@
     _FLOAT_ (y, f_y)
     _FLOAT_ (z, f_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     scale(f_x, f_y, f_z);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5384,8 +5386,10 @@
 
     _FLOAT_ (y, f_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     scale((float)0, f_y, (float)0);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5398,8 +5402,10 @@
 
     _FLOAT_ (z, f_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     scale((float)0, (float)0, f_z);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5413,8 +5419,10 @@
     if (! (v = __glx_getFloatsFromInto(arrayOf3Floats, vec, 3))) RETURN(false);
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     translate((Coord)(v[0]), (Coord)(v[1]), (Coord)(v[2]));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5427,8 +5435,10 @@
 
     _COORD_ (x, c_x)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     translate(c_x, (Coord)0, (Coord)0);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5443,8 +5453,10 @@
     _COORD_ (y, c_y)
     _COORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     translate(c_x, c_y, c_z);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5457,8 +5469,10 @@
 
     _COORD_ (y, c_y)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     translate((Coord)0, c_y, (Coord)0);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -5471,8 +5485,10 @@
 
     _COORD_ (z, c_z)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     translate((Coord)0, (Coord)0, c_z);
-    RETURN (true);
+#endif
 %}
 ! !
 
@@ -5481,46 +5497,36 @@
 glxAcbufOp:op value:value in:aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     acbuf(__intVal(op), _floatVal(value));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxAcsizePlanes: planes in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     acsize(__intVal(planes));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxAfunctionRef: ref func: func in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     afunction(__intVal(ref), __intVal(func));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBbox2Xmin: xmin ymin: ymin x1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     Screencoord c_xmin, c_ymin;
     Coord c_x1, c_y1, c_x2, c_y2; 
 
@@ -5531,18 +5537,15 @@
     _COORD_ (x2, c_x2)
     _COORD_ (y2, c_y2)
     SETWIN(aGLXWindowId)
+#ifdef GLX
     bbox2(c_xmin, c_ymin, c_x1, c_y1, c_x2, c_y2);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBbox2iXmin: xmin ymin: ymin x1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     Screencoord c_xmin, c_ymin;
     Icoord c_x1, c_y1, c_x2, c_y2; 
 
@@ -5553,18 +5556,15 @@
     _ICOORD_ (x2, c_x2)
     _ICOORD_ (y2, c_y2)
     SETWIN(aGLXWindowId)
+#ifdef GLX
     bbox2i(c_xmin, c_ymin, c_x1, c_y1, c_x2, c_y2);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBbox2sXmin: xmin ymin: ymin x1: x1 y1: y1 x2: x2 y2: y2 in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     Screencoord c_xmin, c_ymin;
     Scoord c_x1, c_y1, c_x2, c_y2; 
 
@@ -5575,241 +5575,195 @@
     _SCOORD_ (x2, c_x2)
     _SCOORD_ (y2, c_y2)
     SETWIN(aGLXWindowId)
+#ifdef GLX
     bbox2s(c_xmin, c_ymin, c_x1, c_y1, c_x2, c_y2);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBeginTrimIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     bgntrim();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBlankscreen: b in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     blankscreen(_booleanVal(b));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBlanktime: count in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     blanktime(__intVal(count));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBlendcolorRed: red green: green blue: blue alpha: alpha in: aGLXWindowId
 
 %{  /* NOCONTEXT */
+    SETWIN(aGLXWindowId)
 #ifdef FULL_GLX
-    SETWIN(aGLXWindowId)
     blendcolor(_floatVal(red), _floatVal(green), _floatVal(blue), _floatVal(alpha)); 
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBlendfunctionSfactr: sfactr dfactr: dfactr in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     blendfunction(__intVal(sfactr), __intVal(dfactr));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBlinkRate: rate i: i red: red green: green blue: blue in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     blink(_shortVal(rate), _colorindexVal(i), 
 	  _shortVal(red), _shortVal(green), _shortVal(blue));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxBlkqreadData: data n: n in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(blkqread((short *)_indexedArea(data), __intVal(n))));
-#endif
-%}
-.
-    ^ false
+    int rslt = -1;
+
+    SETWIN(aGLXWindowId)
+#ifdef GLX
+    rslt = blkqread((short *)_indexedArea(data), __intVal(n));
+#endif
+    RETURN (__MKSMALLINT(rslt));
+%}
 !
 
 glxC3f: v in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     float vec[3], *c_v;
 
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     c3f(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxC3i: v in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     long vec[3], *c_v;
 
     if (! (c_v = __glx_getLongsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     c3i(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxC3s: v in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     short vec[3], *c_v;
 
     if (! (c_v = __glx_getShortsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     c3s(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxC4f: v in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     float vec[4], *c_v;
 
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     c4f(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxC4i: v in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     long vec[4], *c_v;
 
     if (! (c_v = __glx_getLongsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     c4i(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxC4s: v in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     short vec[4], *c_v;
 
     if (! (c_v = __glx_getShortsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     c4s(c_v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxClearhitcodeIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     clearhitcode();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxClipplaneIndex: index mode: mode params: params in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
     float vec[4], *v;
 
     if (! (v = __glx_getFloatsFromInto(params, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef GLX
     clipplane(__intVal(index), __intVal(mode), v);
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxCmodeIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     cmode();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxColorfIndex: index in: aGLXWindowId
@@ -5820,217 +5774,170 @@
 glxCuroriginN: n xorigin: xorigin yorigin: yorigin in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     curorigin(_shortVal(n), _shortVal(xorigin), _shortVal(yorigin));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxCursoffIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     cursoff();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxCursonIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     curson();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxCurstype: type in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     curstype(__intVal(type));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxCyclemapDuration: duration map: map nxtmap: nxtmap in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     cyclemap(_shortVal(duration), _shortVal(map), _shortVal(nxtmap));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxDefpatternN: n size: size mask: mask in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     defpattern(_shortVal(n), _shortVal(size), (unsigned short *)_indexedArea(mask));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxDeltag: t in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     deltag(_tagVal(t));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxDepthcueMode: mode in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     depthcue(_booleanVal(mode));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxDitherMode: mode in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     dither(_longVal(mode));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxDopup: pup in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     dopup(_longVal(pup));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxDrawmode: mode in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     drawmode(_longVal(mode));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxEditobj: obj in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     editobj(_objectVal(obj));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxEndTrimIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     endtrim();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxEndfullscrnIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     endfullscrn();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxEndpupmodeIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     endpupmode();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxFinishIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     finish();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxFont: fntnum in: aGLXWindowId
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef GLX
     font(_shortVal(fntnum));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -6038,127 +5945,131 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     foreground();
-    RETURN (true);
+#endif
 %}
 !
 
 glxFreepup: pup in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     freepup(_longVal(pup));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxFudgeXfudge: xfudge yfudge: yfudge in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     fudge(_longVal(xfudge), _longVal(yfudge));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxFullscrnIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     fullscrn();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxGbeginIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef GLX
     gbegin();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxGentagIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(gentag()));
-#endif
-%}
-.
-    ^ false
+    int rslt = -1;
+
+#ifdef GLX
+    SETWIN(aGLXWindowId)
+    rslt = gentag();
+#endif
+    RETURN (__MKSMALLINT(rslt));
+%}
 !
 
 glxGetbackfaceIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(getbackface()));
-#endif
-%}
-.
-    ^ false
+    int rslt = -1;
+
+#ifdef GLX
+    SETWIN(aGLXWindowId)
+    rslt = getbackface();
+#endif
+    RETURN (__MKSMALLINT(rslt));
+%}
 !
 
 glxGetbufferIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(getbuffer()));
-#endif
-%}
-.
-    ^ false
+    int rslt = -1;
+
+#ifdef GLX
+    SETWIN(aGLXWindowId)
+    rslt = getbuffer();
+#endif
+    RETURN (__MKSMALLINT(rslt));
+%}
 !
 
 glxGetbutton: num in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifndef OPENGL
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(getbutton(_deviceVal(num))));
-#endif
+    int rslt = -1;
+
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+    rslt = getbutton(_deviceVal(num));
+#endif
+    RETURN (__MKSMALLINT(rslt));
 %}
 !
 
 glxGetcmmodeIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
-    RETURN (__MKBOOLEAN(getcmmode()));
-#endif
-%}
-.
-    ^ false
+    int rslt = 0;
+
+    SETWIN(aGLXWindowId)
+#ifdef GLX
+    rslt = getcmmode();
+#endif
+    RETURN (__MKBOOLEAN(rslt));
+%}
 !
 
 glxGetcolorIn: aGLXWindowId
     "return the current drawing color"
 
 %{  /* NOCONTEXT */
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(getcolor()));
+    int rslt = -1;
+
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+    rslt = getcolor();
+#endif
+    RETURN (__MKSMALLINT(rslt));
 %}
 !
 
@@ -6237,16 +6148,28 @@
 glxGetgdescInquiry: inquiry in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(getgdesc(_longVal(inquiry))));
+    int rslt = 0;
+
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+    rslt = getgdesc(_longVal(inquiry));
+#endif
+    RETURN (__MKSMALLINT(rslt));
 %}
 !
 
 glxGetheightIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(getheight()));
+    int rslt = 0;
+
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+    rslt = getheight();
+#endif
+    RETURN (__MKSMALLINT(rslt));
 %}
 !
 
@@ -6481,14 +6404,12 @@
 glxGexitIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     gexit();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxGflushIn: aGLXWindowId
@@ -6497,24 +6418,19 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     gflush();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxGinitIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     ginit();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxGlcompatMode: mode value: value in: aGLXWindowId
@@ -6523,11 +6439,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     glcompat(_longVal(mode), _longVal(value));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxGresetIn: aGLXWindowId
@@ -6536,11 +6449,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     greset();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxGsyncIn: aGLXWindowId
@@ -6549,11 +6459,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     gsync();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxIconsizeX: x y: y in: aGLXWindowId
@@ -6562,11 +6469,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     iconsize(_longVal(x), _longVal(y));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxImakebackgroundIn: aGLXWindowId
@@ -6575,11 +6479,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     imakebackground();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxInitnamesIn: aGLXWindowId
@@ -6588,11 +6489,8 @@
 #ifdef GLX
     SETWIN(aGLXWindowId)
     initnames();
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxIsqueued: dev in: aGLXWindowId
@@ -7128,7 +7026,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     prefposition(_longVal(x1), _longVal(x2), _longVal(y1), _longVal(y2));
+#endif
     RETURN (true);
 %}
 !
@@ -7137,7 +7038,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     prefsize(_longVal(x), _longVal(y));
+#endif
     RETURN (true);
 %}
 !
@@ -7171,10 +7075,10 @@
 glxQdevice: dev in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifndef OPENGL
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     qdevice(_deviceVal(dev));
-    RETURN (true);
 #endif
 %}
 !
@@ -7183,8 +7087,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     qenter(_deviceVal(dev), _shortVal(val));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -7207,8 +7113,11 @@
     short c_data;
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     dev = __MKSMALLINT(qread(&c_data));
     data = __MKSMALLINT(c_data);
+#endif
 %}
 .
     ^ Array with: dev with: data
@@ -7218,7 +7127,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     qreset();
+#endif
     RETURN (true);
 %}
 !
@@ -7226,8 +7138,14 @@
 glxQtestIn: aGLXWindowId
 
 %{  /* NOCONTEXT */
-    SETWIN(aGLXWindowId)
-    RETURN (__MKSMALLINT(qtest()));
+    int rslt = 0;
+
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
+    rslt = qtest();
+#endif
+    RETURN (__MKSMALLINT(rslt));
 %}
 !
 
@@ -7814,14 +7732,12 @@
 glxUnqdevice: dev in: aGLXWindowId
 
 %{  /* NOCONTEXT */
-#ifdef GLX
-    SETWIN(aGLXWindowId)
+    SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     unqdevice(_deviceVal(dev));
-    RETURN (true);
-#endif
-%}
-.
-    ^ false
+#endif
+%}
 !
 
 glxWmpack: pack in: aGLXWindowId
@@ -8040,7 +7956,10 @@
 
     if (! (c_v = __glx_getDoublesFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v2d(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8053,7 +7972,10 @@
 
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v2f(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8067,7 +7989,10 @@
     _FLOAT_(x, vec[0])
     _FLOAT_(y, vec[1])
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v2f(vec);
+#endif
     RETURN (true);
 %}
 !
@@ -8080,7 +8005,10 @@
 
     if (! (c_v = __glx_getLongsFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v2i(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8093,7 +8021,10 @@
 
     if (! (c_v = __glx_getShortsFromInto(v, vec, 2))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v2s(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8106,7 +8037,10 @@
 
     if (! (c_v = __glx_getDoublesFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3d(c_v);
+#endif
     RETURN (true);
 %}
 .
@@ -8121,7 +8055,10 @@
 
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3f(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8136,7 +8073,10 @@
     _FLOAT_(y, vec[1])
     _FLOAT_(z, vec[2])
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3f(vec);
+#endif
     RETURN (true);
 %}
 !
@@ -8149,7 +8089,10 @@
 
     if (! (c_v = __glx_getLongsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3i(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8162,7 +8105,10 @@
 
     if (! (c_v = __glx_getShortsFromInto(v, vec, 3))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3s(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8176,7 +8122,10 @@
 
     if (! (c_v = __glx_getDoublesFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v4d(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8190,7 +8139,10 @@
 
     if (! (c_v = __glx_getFloatsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v4f(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8204,7 +8156,10 @@
 
     if (! (c_v = __glx_getLongsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v4i(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8218,7 +8173,10 @@
 
     if (! (c_v = __glx_getShortsFromInto(v, vec, 4))) RETURN(false);
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v4s(c_v);
+#endif
     RETURN (true);
 %}
 !
@@ -8232,7 +8190,10 @@
     static float vec[3] = {0.0, 0.0, 0.0};
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3f(vec);
+#endif
     RETURN (true);
 %}
 !
@@ -8246,7 +8207,10 @@
     static float vec[3] = {1.0, 0.0, 0.0};
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3f(vec);
+#endif
     RETURN (true);
 %}
 !
@@ -8260,7 +8224,10 @@
     static float vec[3] = {0.0, 1.0, 0.0};
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3f(vec);
+#endif
     RETURN (true);
 %}
 !
@@ -8274,7 +8241,10 @@
     static float vec[3] = {0.0, 0.0, 1.0};
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     v3f(vec);
+#endif
     RETURN (true);
 %}
 ! !
@@ -8351,8 +8321,10 @@
     _COORD_ (pz, f_pz)
     _ANGLE_ (twist, a_twist)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     lookat(f_vx, f_vy, f_vz, f_px, f_py, f_pz, a_twist);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -8367,10 +8339,11 @@
     _FLOAT_(right, f_right)
     _FLOAT_(bottom, f_bottom)
     _FLOAT_(top, f_top)
+#ifdef OPENGL
+#else
     ortho2(f_left, f_right, f_bottom, f_top);
-%}
-.
-    ^ true
+#endif
+%}
 !
 
 glxOrthoLeft: left right: right bottom: bottom top: top near: near far: far in: aGLXWindowId
@@ -8387,8 +8360,10 @@
     _FLOAT_(near, f_near)
     _FLOAT_(far, f_far)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     ortho(f_left, f_right, f_bottom, f_top, f_near, f_far);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -8407,9 +8382,10 @@
     _COORD_ (far, c_far)
 
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     perspective(a_fovy, f_aspect, c_near, c_far);
-
-    RETURN (true);
+#endif
 %}
 !
 
@@ -8424,8 +8400,10 @@
     _ANGLE_(inc, a_inc)
     _ANGLE_(twist, a_twist)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     polarview(c_dist, a_azim, a_inc, a_twist);
-    RETURN (true);
+#endif
 %}
 !
 
@@ -8434,8 +8412,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     popviewport();
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:58:24 / cg"
@@ -8446,8 +8426,10 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     pushviewport();
-    RETURN (true);
+#endif
 %}
 
     "Modified: 19.3.1996 / 18:58:02 / cg"
@@ -8457,19 +8439,22 @@
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     reshapeviewport();
-%}
-.
-    ^ true
+#endif
+%}
 !
 
 glxViewportLeft:left right:right bottom:bottom top:top in:aGLXWindowId
 
 %{  /* NOCONTEXT */
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     viewport(_screencoordVal(left), _screencoordVal(right), 
 	     _screencoordVal(bottom), _screencoordVal(top));
-    RETURN (true);
+#endif
 %}
 !
 
@@ -8492,9 +8477,10 @@
     _COORD_ (near, c_near)
     _COORD_ (far, c_far)
     SETWIN(aGLXWindowId)
+#ifdef OPENGL
+#else
     window(c_left, c_right, c_bot, c_top, c_near, c_far);
-
-    RETURN (true);
+#endif
 %}
 ! !
 
@@ -8792,5 +8778,5 @@
 !GLXWorkstation class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview/GLXWorkstation.st,v 1.67 1997-09-18 20:21:07 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/GLXWorkstation.st,v 1.68 1997-10-21 18:20:51 cg Exp $'
 ! !
--- a/Image.st	Tue Oct 21 20:11:53 1997 +0200
+++ b/Image.st	Tue Oct 21 20:22:05 1997 +0200
@@ -10,11 +10,13 @@
  hereby transferred.
 "
 
+'From Smalltalk/X, Version:3.2.1 on 19-oct-1997 at 5:20:30 pm'                  !
+
 Object subclass:#Image
 	instanceVariableNames:'bytes width height bitsPerPixel depth colorMap maxPixelValue
 		rowByteSize bitsPerSample samplesPerPixel photometric device
 		deviceForm monoDeviceForm fullColorDeviceForm mask
-		maskedPixelsAre0'
+		maskedPixelsAre0 fileName imageSequence'
 	classVariableNames:'Lobby DitherAlgorithm NumberOfDitherColors
 		CollectGarbageWhenRunningOutOfColors ImageNotFoundQuerySignal
 		BadImageFormatQuerySignal ImageSaveErrorSignal
@@ -149,6 +151,15 @@
                                             if true, masked pixels are known to be
                                             zero in the pixel bytes.
 
+	fileName	    <String>	    the name of the file from which the
+					    image was loaded - nil otherwise.
+					    Useful for image save functions
+					    and for the UIPainter utility.
+
+        imageSequence	    		    the imageSequence, of which the
+					    instance is a frame or nil, 
+					    if its not part of a sequence.
+
         bitsPerPixel                        not used in ST/X
         depth                               - these have been added in instVar-slots
         maxPixelValue                       - according to the ST-80's image class.
@@ -2985,12 +2996,12 @@
     |ditheredBits|
 
     (depth == 1) ifTrue:[
-	^ self asFloydSteinbergDitheredMonochromeImage
+        ^ self asFloydSteinbergDitheredMonochromeImage
     ].
 
     ditheredBits := self floydSteinbergDitheredGrayBitsDepth:depth.
     ^ (self class implementorForDepth:depth)
-	width:width height:height fromArray:ditheredBits
+        width:width height:height fromArray:ditheredBits
 
     "
      |i|
@@ -3006,11 +3017,11 @@
      |i|
 
      i := Depth24Image width:4 height:1
-	  fromArray:#[ 
-	    16rFF 16r00 16r00   16rFF 16r00 16r00  16rFF 16r00 16r00  16rFF 16r00 16r00
-	    16rFF 16r00 16r00   16rFF 16r00 16r00  16rFF 16r00 16r00  16rFF 16r00 16r00
-	    16rFF 16r00 16r00   16rFF 16r00 16r00  16rFF 16r00 16r00  16rFF 16r00 16r00
-	    16rFF 16r00 16r00   16rFF 16r00 16r00  16rFF 16r00 16r00  16rFF 16r00 16r00].
+          fromArray:#[ 
+            16rFF 16r00 16r00   16rFF 16r00 16r00  16rFF 16r00 16r00  16rFF 16r00 16r00
+            16rFF 16r00 16r00   16rFF 16r00 16r00  16rFF 16r00 16r00  16rFF 16r00 16r00
+            16rFF 16r00 16r00   16rFF 16r00 16r00  16rFF 16r00 16r00  16rFF 16r00 16r00
+            16rFF 16r00 16r00   16rFF 16r00 16r00  16rFF 16r00 16r00  16rFF 16r00 16r00].
      i := i magnifiedBy:4@1.
      i inspect.
 
@@ -3023,13 +3034,13 @@
      |i|
 
      i := Depth24Image width:4 height:6
-	  fromArray:#[ 
-	    16r00 16r00 16r00   16r00 16r00 16r80  16r00 16r00 16rff  16r00 16r80 16r00
-	    16r00 16r80 16r80   16r00 16rFF 16r00  16r00 16rFF 16r80  16r00 16rFF 16rFF
-	    16r80 16r00 16r00   16r80 16r00 16r80  16r80 16r00 16rff  16r80 16r80 16r00
-	    16r80 16r80 16r80   16r80 16rFF 16r00  16r80 16rFF 16r80  16r80 16rFF 16rFF
-	    16rFF 16r00 16r00   16rFF 16r00 16r80  16rFF 16r00 16rff  16rFF 16r80 16r00
-	    16rFF 16r80 16r80   16rFF 16rFF 16r00  16rFF 16rFF 16r80  16rFF 16rFF 16rFF].
+          fromArray:#[ 
+            16r00 16r00 16r00   16r00 16r00 16r80  16r00 16r00 16rff  16r00 16r80 16r00
+            16r00 16r80 16r80   16r00 16rFF 16r00  16r00 16rFF 16r80  16r00 16rFF 16rFF
+            16r80 16r00 16r00   16r80 16r00 16r80  16r80 16r00 16rff  16r80 16r80 16r00
+            16r80 16r80 16r80   16r80 16rFF 16r00  16r80 16rFF 16r80  16r80 16rFF 16rFF
+            16rFF 16r00 16r00   16rFF 16r00 16r80  16rFF 16r00 16rff  16rFF 16r80 16r00
+            16rFF 16r80 16r80   16rFF 16rFF 16r00  16rFF 16rFF 16r80  16rFF 16rFF 16rFF].
      i := i magnifiedBy:30.
      i inspect.
 
@@ -3061,14 +3072,14 @@
      |i|
 
      i := Depth4Image
-	     width:4 
-	     height:4
-	     fromArray:#[ 
-			    16r01 16r23
-			    16r45 16r67
-			    16r89 16rab
-			    16rcd 16ref 
-			].
+             width:4 
+             height:4
+             fromArray:#[ 
+                            16r01 16r23
+                            16r45 16r67
+                            16r89 16rab
+                            16rcd 16ref 
+                        ].
      i := i magnifiedBy:30.
      i inspect.
      (i asFloydSteinbergDitheredGrayImageDepth:1) inspect.
@@ -3077,7 +3088,7 @@
     "
 
     "Created: 10.6.1996 / 12:33:47 / cg"
-    "Modified: 17.4.1997 / 01:13:55 / cg"
+    "Modified: 19.10.1997 / 04:09:04 / cg"
 !
 
 asFloydSteinbergDitheredMonochromeFormOn:aDevice
@@ -4609,15 +4620,15 @@
 !Image methodsFor:'converting greyscale images'!
 
 greyImageAsFormOn:aDevice
-    "return a thresholded grey-deviceForm from the grey image."
+    "return a grey-deviceForm from the grey image."
 
     |pictureDepth nPlanes|
 
 
     nPlanes := samplesPerPixel.
     (nPlanes == 2) ifTrue:[
-	'Image [info]: alpha plane ignored' infoPrintCR.
-	nPlanes := 1
+        'Image [info]: alpha plane ignored' infoPrintCR.
+        nPlanes := 1
     ].
 
     pictureDepth := bitsPerSample at:1.
@@ -4625,23 +4636,19 @@
     "monochrome is very easy ..."
 
     (pictureDepth == 1) ifTrue:[
-	^ Form width:width height:height fromArray:bytes on:aDevice
+        ^ Form width:width height:height fromArray:bytes on:aDevice
     ].
 
     (aDevice visualType == #TrueColor) ifTrue:[
-	^ self greyImageAsTrueColorFormOn:aDevice
-    ].
-
-"/    (aDevice visualType == #PseudoColor 
-"/    or:[aDevice visualType == #GrayScale
-"/    or:[aDevice visualType == #StaticColor]]) ifTrue:[
+        ^ self greyImageAsTrueColorFormOn:aDevice
+    ].
 
     "/ PseudoColor conversion also works for StaticColor,
     "/ GrayScale and DirectColor; although possibly with suboptimal results
 
     ^ self greyImageAsPseudoFormOn:aDevice
 
-    "Modified: 10.1.1997 / 17:52:49 / cg"
+    "Modified: 19.10.1997 / 05:17:25 / cg"
 !
 
 greyImageAsPseudoFormOn:aDevice
@@ -4651,7 +4658,8 @@
      colorMap usedColors nUsed aColor 
      nColors "{ Class: SmallInteger }"
      range id
-     cube nR nG nB grayColors|
+     cube nR nG nB grayColors
+     fit|
 
     pictureDepth := bitsPerSample at:1.
 
@@ -4702,33 +4710,25 @@
         nUsed := usedColors max + 1.
 
         colorMap := Array new:nUsed.
-        photometric == #blackIs0 ifTrue:[
-            usedColors do:[:grey |
-                colorMap at:(grey + 1) put:(Color gray:(100.0 / 256.0 * grey))
-            ]
-        ] ifFalse:[
-            usedColors do:[:grey |
-                colorMap at:(grey + 1) put:(Color gray:(100 - (100.0 / 256.0 * grey)))
-            ]
-        ]
+        range := 100 / 255.0.
+        usedColors do:[:grey |
+            colorMap at:(grey + 1) put:(Color gray:(range * grey))
+        ].
     ] ifFalse:[
         nColors := (1 bitShift:pictureDepth).
         colorMap := Array new:nColors.
         range := 100 / (nColors - 1) asFloat.
-        photometric == #blackIs0 ifTrue:[
-            1 to:nColors do:[:i |
-                colorMap at:i put:(Color gray:(i - 1) * range).
-            ].
-        ] ifFalse:[
-            1 to:nColors do:[:i |
-                colorMap at:(nColors - i + 1) put:(Color gray:(i - 1) * range).
-            ].
+        1 to:nColors do:[:i |
+            colorMap at:i put:(Color gray:(i - 1) * range).
         ].
     ].
-
-    "XXX should reduce 8->6->4->2 planes, if not all colors could be allocated"
-
-    "setup the translation map"
+    photometric ~~ #blackIs0 ifTrue:[
+        colorMap reverse
+    ].
+
+    "allocate those colors & setup the translation map"
+
+    fit := true.
     map := ByteArray uninitializedNew:256.
     nColors := colorMap size.
     1 to:nColors do:[:i |
@@ -4737,14 +4737,21 @@
             aColor := aColor on:aDevice.
             colorMap at:i put:aColor.
             id := aColor colorId.
-            id notNil ifTrue:[
-                map at:i put:id
-            ] ifFalse:[
-                map at:i put:0
-            ]
+            id isNil ifTrue:[
+                id := 0.
+                fit := false.
+            ].
+            map at:i put:id
         ]
     ].
 
+    fit ifFalse:[
+        "/ here comes the hard part - some grey value
+        "/ could not be allocated.
+        "/ Must dither.
+
+    ].
+
     "expand & translate"
     bytes expandPixels:pictureDepth
                 width:width 
@@ -4761,7 +4768,7 @@
                     into:(f id) x:0 y:0 width:width height:height with:(f gcId).
     ^ f
 
-    "Modified: 23.6.1997 / 15:36:41 / cg"
+    "Modified: 19.10.1997 / 05:19:44 / cg"
 !
 
 greyImageAsTrueColorFormOn:aDevice
@@ -10985,6 +10992,6 @@
 !Image class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview/Image.st,v 1.222 1997-10-16 10:33:23 cg Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/Image.st,v 1.223 1997-10-21 18:21:17 cg Exp $'
 ! !
 Image initialize!
--- a/styles/iris.style	Tue Oct 21 20:11:53 1997 +0200
+++ b/styles/iris.style	Tue Oct 21 20:22:05 1997 +0200
@@ -3,7 +3,7 @@
 ; silicon graphics style
 ; (somwehat like motif, but with smooth edges and bells&whistles)
 ;
-; $Header: /cvs/stx/stx/libview/styles/iris.style,v 1.22 1997-08-13 15:30:50 cg Exp $
+; $Header: /cvs/stx/stx/libview/styles/iris.style,v 1.23 1997-10-21 18:22:05 cg Exp $
 
 comment  'Silicon graphics'' Iris look alike'
 
@@ -43,8 +43,8 @@
 textLightColor                  =viewGrey
 
 #if Display hasColors   
-textSelectionForegroundColor    Color black
-textSelectionBackgroundColor    Color green
+textSelection.foregroundColor    Color black
+textSelection.backgroundColor    Color green
 #endif
 
 textCursorForegroundColor       Color white
@@ -85,46 +85,46 @@
 labelFont                       =variableFont
 
 #if Display hasColors   
-toggleShowLamp                  true
-toggleLampColor                 Color yellow
-checkToggleCheckColor           Color red
-checkToggleBitmapFile           'CheckOnColor.xpm'
-checkToggleLabelOverMargin      true
+toggle.showLamp                  true
+toggle.lampColor                 Color yellow
+checkToggle.checkColor           Color red
+checkToggle.bitmapFile           'CheckOnColor.xpm'
+checkToggle.labelOverMargin      true
 radioButtonShowLamp             false
 radioButtonStyle                #iris
 #endif
 
-scrollerLevel                   -1
-scrollerThumbLevel              3
-scrollerThumbColor              =viewGrey
+scroller.level                   -1
+scroller.thumbLevel              3
+scroller.thumbColor              =viewGrey
 #if Display hasGreyscales
-scrollerThumbEnteredColor       =veryLightGray
+scroller.thumbEnteredColor       =veryLightGray
 #endif
-scrollerThumbEdgeStyle          #soft
-scrollerNTallyMarks             3
-scrollerTallyLevel              1
-scrollerGhostColor              =mediumGray
-scrollerGhostLevel              -1
+scroller.thumbEdgeStyle          #soft
+scroller.NTallyMarks             3
+scroller.tallyLevel              1
+scroller.ghostColor              =mediumGray
+scroller.ghostLevel              -1
 #if Display hasGreyscales not
-scrollerViewBackground          Color white
+scroller.viewBackground          Color white
 #endif
-scrollerMiddleButtonJump        true
+scroller.middleButtonJump        true
 
-sliderNTallyMarks               1
-sliderTallyLevel                1
+slider.NTallyMarks               1
+slider.tallyLevel                1
 
-buttonEdgeStyle                 #soft
-buttonActiveLevel               -1
-buttonPassiveLevel              3
-buttonDisabledForegroundColor   =darkGray
+button.edgeStyle                 #soft
+button.activeLevel               -1
+button.passiveLevel              3
+button.disabledForegroundColor   =darkGray
 #if Display hasGreyscales
-buttonEnteredBackgroundColor    =veryLightGray
-buttonActiveBackgroundColor     nil
-buttonActiveForegroundColor     Color black
+button.enteredBackgroundColor    =veryLightGray
+button.activeBackgroundColor     nil
+button.activeForegroundColor     Color black
 #else
-buttonEnteredBackgroundColor    Color white
-buttonActiveForegroundColor     Color white
-buttonActiveBackgroundColor     Color black
+button.enteredBackgroundColor    Color white
+button.activeForegroundColor     Color white
+button.activeBackgroundColor     Color black
 #endif
 
 #if OperatingSystem getOSType = 'irix'
@@ -140,11 +140,11 @@
 menuCheckColor                  Color red
 #endif
 
-pullDownMenuFont                =menuFont
-pullDownMenuKeepMenu            true
-pullDownMenuLevel               0
-pullDownMenuHilightLevel        2
-pullDownMenuEdgeStyle           #soft
+pullDownMenu.font                =menuFont
+pullDownMenu.keepMenu            true
+pullDownMenu.level               0
+pullDownMenu.hilightLevel        2
+pullDownMenu.edgeStyle           #soft
 
 variablePanelHandleColor        =darkGray
 #if Display hasGreyscales