XWorkstation.st
changeset 36 b297468551c6
parent 31 168c08a3435b
child 37 c2dc1832c0f1
--- a/XWorkstation.st	Fri Feb 25 14:13:21 1994 +0100
+++ b/XWorkstation.st	Fri Feb 25 14:14:52 1994 +0100
@@ -37,7 +37,7 @@
 
 this class provides the interface to X11
 
-$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.11 1994-01-16 03:55:25 claus Exp $
+$Header: /cvs/stx/stx/libview/XWorkstation.st,v 1.12 1994-02-25 13:14:52 claus Exp $
 written spring/summer 89 by claus
 '!
 
@@ -51,6 +51,8 @@
 #include <X11/Xutil.h>
 #include <X11/Xatom.h>
 
+#define TWOBYTESTRINGS
+
 /*
  * shape support works; enabled by -DSHAPE in makefile
  * see RoundClock and RoundGlobe examples
@@ -182,7 +184,7 @@
 /*
  * some defines - tired of typing ...
  */
-#ifdef hpux
+#if defined(hpux) && defined(POSITIVE_ADDRESSES)
 # define _DisplayVal(o)       (Display *)((int)(o) & ~TAG_INT)
 # define _WindowVal(o)        (Window)((int)(o) & ~TAG_INT)
 # define _PixmapVal(o)        (Pixmap)((int)(o) & ~TAG_INT)
@@ -692,7 +694,7 @@
     Window child_return;
 
     if (_isSmallInteger(windowId)
-     && _isPoint(aPoint)) {
+     && __isPoint(aPoint)) {
         xp = _point_X(aPoint);
         yp = _point_Y(aPoint);
         if (_isSmallInteger(xp) && _isSmallInteger(yp)) {
@@ -859,7 +861,7 @@
     int b_x_hot, b_y_hot;
     int status;
 
-    if (_isString(aString) || _isSymbol(aString)) {
+    if (__isString(aString) || __isSymbol(aString)) {
         filename = (char *)_stringVal(aString);
 
         BLOCKINTERRUPTS();
@@ -1352,7 +1354,7 @@
         else
             iconWindow = (Window)0;
 
-        if (_isString(wlabel) || _isSymbol(wlabel))
+        if (__isString(wlabel) || __isSymbol(wlabel))
             windowName = (char *)_stringVal(wlabel);
         else
             windowName = "";
@@ -1502,8 +1504,8 @@
 %{
     char *rslt;
 
-    if ((_isString(name) || _isSymbol(name))
-     && (_isString(cls) || _isSymbol(cls))) {
+    if ((__isString(name) || __isSymbol(name))
+     && (__isString(cls) || __isSymbol(cls))) {
         rslt = XGetDefault(myDpy, (char *)_stringVal(cls),
                                   (char *)_stringVal(name));
         RETURN (rslt ? _MKSTRING(rslt,  __context) : nil );
@@ -1715,7 +1717,7 @@
 
     XFontStruct *newFont;
 
-    if (_isString(aFontName) || _isSymbol(aFontName)) {
+    if (__isString(aFontName) || __isSymbol(aFontName)) {
         newFont = XLoadQueryFont(myDpy, (char *)_stringVal(aFontName));
         RETURN ( newFont ? MKOBJ(newFont) : nil );
     }
@@ -1815,7 +1817,7 @@
     char *cp;
     int len, n;
 
-    if ((_isString(aString) || _isSymbol(aString))
+    if ((__isString(aString) || __isSymbol(aString))
      && _isSmallInteger(aFontId)) {
         f = _FontVal(aFontId);
         n = _stringSize(aString);
@@ -1839,7 +1841,7 @@
     char *cp;
     int len, n, i1, i2;
 
-    if ((_isString(aString) || _isSymbol(aString))
+    if ((__isString(aString) || __isSymbol(aString))
      && _isSmallInteger(index1)
      && _isSmallInteger(index2)
      && _isSmallInteger(aFontId)) {
@@ -2228,7 +2230,7 @@
             [(line at:index) isSeparator] whileTrue:[index := index + 1].
             [(line at:index) isDigit] whileTrue:[index := index + 1].
             [(line at:index) isSeparator] whileTrue:[index := index + 1].
-            colorName := line copyFrom:index to:(line size).
+            colorName := line copyFrom:index.
             ((colorName occurrencesOf:(Character space)) == 0) ifTrue:[
                 list add:colorName
             ]
@@ -2269,7 +2271,7 @@
     if (_isSmallInteger(aPercentage)) {
         RETURN ( _MKSMALLINT(0xFFFF * _intVal(aPercentage) / 100) );
     }
-    if (_isFloat(aPercentage)) {
+    if (__isFloat(aPercentage)) {
         RETURN ( _MKSMALLINT(0xFFFF * (int)(_floatVal(aPercentage)) / 100) );
     }
 %}
@@ -2317,7 +2319,7 @@
     XColor scolor, ecolor;
     int screen =_intVal(_INST(screen));
 
-    if (_isString(aString) || _isSymbol(aString)) {
+    if (__isString(aString) || __isSymbol(aString)) {
         colorname = (char *)_stringVal(aString);
 
         if (!XParseColor(dpy, DefaultColormap(dpy, screen),
@@ -2371,19 +2373,19 @@
 
     if (_isSmallInteger(redVal))
         r = 0xFFFF * _intVal(redVal) / 100;
-    else if (_isFloat(redVal))
+    else if (__isFloat(redVal))
         r = 0xFFFF * (int)(_floatVal(redVal)) / 100;
     else ok = 0;
 
     if (_isSmallInteger(greenVal))
         g = 0xFFFF * _intVal(greenVal) / 100;
-    else if (_isFloat(greenVal))
+    else if (__isFloat(greenVal))
         g = 0xFFFF * (int)(_floatVal(greenVal)) / 100;
     else ok = 0;
 
     if (_isSmallInteger(blueVal))
         b = 0xFFFF * _intVal(blueVal) / 100;
-    else if (_isFloat(blueVal))
+    else if (__isFloat(blueVal))
         b = 0xFFFF * (int)(_floatVal(blueVal)) / 100;
     else ok = 0;
 
@@ -2414,7 +2416,7 @@
     double fr, fg, fb;
     double floor();
 
-    if (_isString(colorName) || _isSymbol(colorName)) {
+    if (__isString(colorName) || __isSymbol(colorName)) {
         if (XParseColor(dpy, DefaultColormap(dpy, screen), (char *)_stringVal(colorName),
                                                            &color)) {
             /* scale to 0..100 and round to the first decimal */
@@ -2651,7 +2653,7 @@
 %{  /* NOCONTEXT */
 
     if (_isSmallInteger(aWindowId)
-     && (_isString(aString) || _isSymbol(aString))) {
+     && (__isString(aString) || __isSymbol(aString))) {
         XStoreName(myDpy, _WindowVal(aWindowId), (char *)_stringVal(aString));
         RETURN ( self );
     }
@@ -2666,7 +2668,7 @@
 %{  /* NOCONTEXT */
 
     if (_isSmallInteger(aWindowId)
-     && (_isString(aString) || _isSymbol(aString))) {
+     && (__isString(aString) || __isSymbol(aString))) {
         XSetIconName(myDpy, _WindowVal(aWindowId), (char *)_stringVal(aString));
         RETURN ( self );
     }
@@ -2808,7 +2810,7 @@
             else
                 iconWindow = (Window)0;
 
-            if (_isString(wlabel) || _isSymbol(wlabel))
+            if (__isString(wlabel) || __isSymbol(wlabel))
                 windowName = (char *)_stringVal(wlabel);
             else
                 windowName = "";
@@ -3442,7 +3444,7 @@
 
     if (_isSmallInteger(aGCId) && _isSmallInteger(aDrawableId)
      && _isSmallInteger(x) && _isSmallInteger(y)) {
-        if (_isString(aString) || _isSymbol(aString)) {
+        if (__isString(aString) || __isSymbol(aString)) {
             cp = _stringVal(aString);
             n = _stringSize(aString);
             if (n > 1000) n = 1000;
@@ -3452,7 +3454,7 @@
 #ifdef TWOBYTESTRINGS
         if (_Class(aString) == TwoByteString) {
             cp = _stringVal(aString);
-            n = _stringSize(aString) / 2;
+            n = _byteArraySize(aString) / 2;
             if (n > 1000) n = 1000;
             XDrawString16(myDpy, win, gc, _intVal(x), _intVal(y), (char *)cp, n);
             RETURN ( self );
@@ -3479,7 +3481,7 @@
 
     if (_isSmallInteger(aGCId) && _isSmallInteger(aDrawableId)
      && _isSmallInteger(x) && _isSmallInteger(y)) {
-        if (_isString(aString) || _isSymbol(aString)) {
+        if (__isString(aString) || __isSymbol(aString)) {
             cp = _stringVal(aString);
             n = _stringSize(aString);
             if (n > 1000) n = 1000;
@@ -3489,7 +3491,7 @@
 #ifdef TWOBYTESTRINGS
         if (_Class(aString) == TwoByteString) {
             cp = _stringVal(aString);
-            n = _stringSize(aString) / 2;
+            n = _byteArraySize(aString) / 2;
             if (n > 1000) n = 1000;
             XDrawString16(myDpy, win, gc, _intVal(x), _intVal(y), (char *)cp, n);
             RETURN ( self );
@@ -3517,7 +3519,7 @@
     if (_isSmallInteger(aGCId) && _isSmallInteger(aDrawableId)
      && _isSmallInteger(index1) && _isSmallInteger(index2)
      && _isSmallInteger(x) && _isSmallInteger(y)) {
-        if (_isString(aString) || _isSymbol(aString)) {
+        if (__isString(aString) || __isSymbol(aString)) {
             i1 = _intVal(index1) - 1;
             i2 = _intVal(index2) - 1;
             n = _stringSize(aString);
@@ -3534,7 +3536,7 @@
         if (_Class(aString) == TwoByteString) {
             i1 = _intVal(index1) - 1;
             i2 = _intVal(index2) - 1;
-            n = _stringSize(aString) / 2;
+            n = _byteArraySize(aString) / 2;
             cp = _stringVal(aString);
             if ((i1 >= 0) && (i2 >= i1) && (i2 < n)) {
                 cp += (i1 * 2);
@@ -3567,7 +3569,7 @@
     if (_isSmallInteger(aGCId) && _isSmallInteger(aDrawableId)
      && _isSmallInteger(index1) && _isSmallInteger(index2)
      && _isSmallInteger(x) && _isSmallInteger(y)) {
-        if (_isString(aString) || _isSymbol(aString)) {
+        if (__isString(aString) || __isSymbol(aString)) {
             i1 = _intVal(index1) - 1;
             i2 = _intVal(index2) - 1;
             n = _stringSize(aString);
@@ -3616,7 +3618,7 @@
 
     if (_isSmallInteger(aGCId) && _isSmallInteger(aDrawableId)
      && _isSmallInteger(x) && _isSmallInteger(y)) {
-        if (_isString(aString) || _isSymbol(aString)) {
+        if (__isString(aString) || __isSymbol(aString)) {
             cp = _stringVal(aString);
             n = _stringSize(aString);
             if (n > 1000) n = 1000;
@@ -3653,7 +3655,7 @@
 
     if (_isSmallInteger(aGCId) && _isSmallInteger(aDrawableId)
      && _isSmallInteger(x) && _isSmallInteger(y)) {
-        if (_isString(aString) || _isSymbol(aString)) {
+        if (__isString(aString) || __isSymbol(aString)) {
             cp = _stringVal(aString);
             n = _stringSize(aString);
             if (n > 1000) n = 1000;
@@ -3691,7 +3693,7 @@
     if (_isSmallInteger(aGCId) && _isSmallInteger(aDrawableId)
      && _isSmallInteger(index1) && _isSmallInteger(index2)
      && _isSmallInteger(x) && _isSmallInteger(y)) {
-        if (_isString(aString) || _isSymbol(aString)) {
+        if (__isString(aString) || __isSymbol(aString)) {
             i1 = _intVal(index1) - 1;
             i2 = _intVal(index2) - 1;
             n = _stringSize(aString);
@@ -3741,7 +3743,7 @@
     if (_isSmallInteger(aGCId) && _isSmallInteger(aDrawableId)
      && _isSmallInteger(index1) && _isSmallInteger(index2)
      && _isSmallInteger(x) && _isSmallInteger(y)) {
-        if (_isString(aString) || _isSymbol(aString)) {
+        if (__isString(aString) || __isSymbol(aString)) {
             i1 = _intVal(index1) - 1;
             i2 = _intVal(index2) - 1;
             n = _stringSize(aString);
@@ -3933,7 +3935,7 @@
 
             for (i=0; i<num; i++) {
                 point = _AT_(aPolygon COMMA_CON, _MKSMALLINT(i+1));
-                if (! _isPoint(point)) goto fail;
+                if (! __isPoint(point)) goto fail;
                 x = _point_X(point);
                 y = _point_Y(point);
                 if (! _isSmallInteger(x) || ! _isSmallInteger(y))
@@ -4052,13 +4054,13 @@
 
     if (_isSmallInteger(startAngle))
         angle1 = _intVal(startAngle) * 64;
-    else if (_isFloat(startAngle)) {
+    else if (__isFloat(startAngle)) {
         f = _floatVal(startAngle);
         angle1 = f * 64;
     }
     if (_isSmallInteger(angle))
         angle2 = _intVal(angle) * 64;
-    else if (_isFloat(angle)) {
+    else if (__isFloat(angle)) {
         f = _floatVal(angle);
         angle2 = f * 64;
     }
@@ -4094,13 +4096,13 @@
 
     if (_isSmallInteger(startAngle))
         angle1 = _intVal(startAngle) * 64;
-    else if (_isFloat(startAngle)) {
+    else if (__isFloat(startAngle)) {
         f = _floatVal(startAngle);
         angle1 = f * 64;
     }
     if (_isSmallInteger(angle))
         angle2 = _intVal(angle) * 64;
-    else if (_isFloat(angle)) {
+    else if (__isFloat(angle)) {
         f = _floatVal(angle);
         angle2 = f * 64;
     }
@@ -4180,7 +4182,7 @@
                 points = qPoints;
             for (i=0; i<num; i++) {
                 point = _AT_(aPolygon COMMA_CON, _MKSMALLINT(i+1));
-                if (! _isPoint(point)) goto fail;
+                if (! __isPoint(point)) goto fail;
                 x = _point_X(point);
                 y = _point_Y(point);
                 if (! _isSmallInteger(x) || ! _isSmallInteger(y))