WinWorkstation.st
changeset 5576 1887b5235bf5
parent 5575 47a509340112
child 5577 02b907d1c470
--- a/WinWorkstation.st	Thu Jul 22 14:51:03 2010 +0200
+++ b/WinWorkstation.st	Thu Jul 22 18:32:24 2010 +0200
@@ -4871,110 +4871,110 @@
 OBJ
 __charSetSymbolFor(int charSet)
 {
-    char *s;
+    OBJ s;
 
     switch (charSet) {
         case ANSI_CHARSET:
-            s = "ms-ansi";
+            s = @symbol('ms-ansi');
             break;
         case DEFAULT_CHARSET:
-            s = "ms-default";
+            s = @symbol('ms-default');
             break;
         case SYMBOL_CHARSET:
-            s = "ms-symbol";
+            s = @symbol('ms-symbol');
             break;
         case SHIFTJIS_CHARSET:
-            s = "ms-shiftjis";
+            s = @symbol('ms-shiftjis');
             break;
         case GB2312_CHARSET:
-            s = "ms-gb2312";
+            s = @symbol('ms-gb2312');
             break;
         case HANGEUL_CHARSET:
-            s = "ms-hangeul";
+            s = @symbol('ms-hangeul');
             break;
 # if defined(HANGUL_CHARSET) && (HANGUL_CHARSET != HANGEUL_CHARSET)
         case HANGUL_CHARSET:
-            s = "ms-hangul";
+            s = @symbol('ms-hangul');
             break;
 # endif
         case CHINESEBIG5_CHARSET:
-            s = "ms-chinesebig5";
+            s = @symbol('ms-chinesebig5');
             break;
         case OEM_CHARSET:
-            s = "ms-oem";
+            s = @symbol('ms-oem');
             break;
 # ifdef JOHAB_CHARSET
         case JOHAB_CHARSET:
-            s = "ms-johab";
+            s = @symbol('ms-johab');
             break;
 # endif
 # ifdef HEBREW_CHARSET
         case HEBREW_CHARSET:
-            s = "ms-hebrew";
+            s = @symbol('ms-hebrew');
             break;
 # endif
 # ifdef ARABIC_CHARSET
         case ARABIC_CHARSET:
-            s = "ms-arabic";
+            s = @symbol('ms-arabic');
             break;
 # endif
 # ifdef GREEK_CHARSET
         case GREEK_CHARSET:
-            s = "ms-greek";
+            s = @symbol('ms-greek');
             break;
 # endif
 # ifdef TURKISH_CHARSET
         case TURKISH_CHARSET:
-            s = "ms-turkish";
+            s = @symbol('ms-turkish');
             break;
 # endif
 # ifdef RUSSIAN_CHARSET
         case RUSSIAN_CHARSET:
-            s = "ms-russian";
+            s = @symbol('ms-russian');
             break;
 # endif
 # ifdef EASTEUROPE_CHARSET
         case EASTEUROPE_CHARSET:
-            s = "ms-easteurope";
+            s = @symbol('ms-easteurope');
             break;
 # endif
 # ifdef BALTIC_CHARSET
         case BALTIC_CHARSET:
-            s = "ms-baltic";
+            s = @symbol('ms-baltic');
             break;
 # endif
 # ifdef VIETNAMESE_CHARSET
         case VIETNAMESE_CHARSET:
-            s = "ms-vietnamese";
+            s = @symbol('ms-vietnamese');
             break;
 # endif
 # ifdef THAI_CHARSET
         case THAI_CHARSET:
-            s = "ms-thai";
+            s = @symbol('ms-thai');
             break;
 # endif
 # ifdef MAC_CHARSET
         case MAC_CHARSET:
-            s = "ms-mac";
+            s = @symbol('ms-mac');
             break;
 # endif
 # ifdef UNICODE_CHARSET
         case UNICODE_CHARSET:
-            s = "ms-unicode";
+            s = @symbol('ms-unicode');
             break;
 # endif
         default:
-            s = "unknown";
-            break;
-    }
-    return __MKSYMBOL(s, 0);
+            s = @symbol(unknown);
+            break;
+    }
+    return s;
 }
 
 OBJ
 __extractLogicalFontParameters(LOGFONT *lplf)
 {
         OBJ newArray, t;
-        char *s;
+        OBJ s;
 
         DPRINTF((" lfHeight          %d\n", lplf->lfHeight ));
         DPRINTF((" lfWidth           %d\n", lplf->lfWidth  ));
@@ -5003,30 +5003,26 @@
             case FW_EXTRABOLD:
             case FW_SEMIBOLD:
             case FW_BOLD:
-                s = "bold";
+                s = @symbol(bold);
                 break;
             case FW_NORMAL:
 #if 0
-                s = "normal";
+                s = @symbol(normal);
                 break;
 #endif
             case FW_MEDIUM:
-                s = "medium";
+                s = @symbol(medium);
                 break;
             case FW_THIN:
             case FW_EXTRALIGHT:
             case FW_LIGHT:
-                s = "demi";
+                s = @symbol(demi);
                 break;
             default:
-                s = "other";
+                s = @symbol(other);
                 break;
         }
-        __PROTECT__(newArray);
-        t = __MKSTRING(s);
-        __UNPROTECT__(newArray);
-        __ArrayInstPtr(newArray)->a_element[5] = t; __STORE(newArray, t);
-
+        __ArrayInstPtr(newArray)->a_element[5] = s; __STORE(newArray, s);
         __ArrayInstPtr(newArray)->a_element[6] = __MKSMALLINT(lplf->lfItalic);
         __ArrayInstPtr(newArray)->a_element[7] = __MKSMALLINT(lplf->lfUnderline);
         __ArrayInstPtr(newArray)->a_element[8] = __MKSMALLINT(lplf->lfStrikeOut);
@@ -5040,45 +5036,40 @@
         if( lplf->lfItalic == TRUE ) {
             if( lplf->lfUnderline == TRUE ) {
                 if( lplf->lfStrikeOut == TRUE ) {
-                    s = "italic-underline-strikeOut";
+                    s = @symbol('italic-underline-strikeOut');
                 } else {
-                    s = "italic-underline";
+                    s = @symbol('italic-underline');
                 }
             } else {
                 if( lplf->lfStrikeOut == TRUE ) {
-                    s = "italic-strikeOut";
+                    s = @symbol('italic-strikeOut');
                 } else {
-                    s = "italic";
+                    s = @symbol('italic');
                 }
             }
         } else {
             if( lplf->lfUnderline == TRUE ) {
                 if( lplf->lfStrikeOut == TRUE ) {
-                    s = "roman-underline-strikeOut";
+                    s = @symbol('roman-underline-strikeOut');
                 } else {
-                    s = "roman-underline";
+                    s = @symbol('roman-underline');
                 }
             } else {
                 if( lplf->lfStrikeOut == TRUE ) {
-                    s = "roman-strikeOut";
+                    s = @symbol('roman-strikeOut');
                 } else {
-                    s = "roman";
+                    s = @symbol('roman');
                 }
             }
         }
-        __PROTECT__(newArray);
-        t = __MKSYMBOL(s, 0);
-        __UNPROTECT__(newArray);
-        __ArrayInstPtr(newArray)->a_element[14] = t; __STORE(newArray, t);
+        __ArrayInstPtr(newArray)->a_element[14] = s; __STORE(newArray, s);
 
         __PROTECT__(newArray);
         t = __MKSTRING(lplf->lfFaceName);
         __UNPROTECT__(newArray);
         __ArrayInstPtr(newArray)->a_element[15] = t; __STORE(newArray, t);
 
-        __PROTECT__(newArray);
         t = __charSetSymbolFor(lplf->lfCharSet);
-        __UNPROTECT__(newArray);
         __ArrayInstPtr(newArray)->a_element[16] = t; __STORE(newArray, t);
 
         return newArray;
@@ -13194,69 +13185,69 @@
 "
 
 %{
-
     if (__isExternalAddress(fontId)
-     && __isArray(rawData)
-     && (__arraySize(rawData) >= 11)) {
-	SIZE size;
-	int avgWidth;
-	HGDIOBJ hFont;
-	HGDIOBJ prevFont;
-	TEXTMETRIC tmet;
-	static char *s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
-	static int len;
-	OBJ t;
-
-	hFont = _HGDIOBJVal(fontId);
-
-	/*
-	 * temporarily set this font in the tmpDC (root-) context
-	 */
+        && __isArray(rawData)
+        && (__arraySize(rawData) >= 11)) {
+        SIZE size;
+        int avgWidth;
+        HGDIOBJ hFont;
+        HGDIOBJ prevFont;
+        TEXTMETRIC tmet;
+        OBJ t;
+
+        hFont = _HGDIOBJVal(fontId);
+
+        /*
+         * temporarily set this font in the tmpDC (root-) context
+         */
 #ifdef CACHE_LAST_TMP_FONT
-	if (__tmpDC_hfont != hFont) {
-	    prevFont = SelectObject(__tmpDC, hFont);
-	    if (__tmpDC_prev_hfont == NULL) {
-		__tmpDC_prev_hfont = prevFont;
-	    }
-	    __tmpDC_hfont = hFont;
-	}
-#else
-	prevFont = SelectObject(__tmpDC, hFont);
-#endif
-	GetTextMetricsW(__tmpDC, &tmet);
-	if (len == 0) {
-	    len = strlen(s);
-	}
+        if (__tmpDC_hfont != hFont) {
+            prevFont = SelectObject(__tmpDC, hFont);
+            if (__tmpDC_prev_hfont == NULL) {
+                __tmpDC_prev_hfont = prevFont;
+            }
+            __tmpDC_hfont = hFont;
+        }
+#else
+        prevFont = SelectObject(__tmpDC, hFont);
+#endif
+        GetTextMetricsW(__tmpDC, &tmet);
 #if 0
-	GetTextExtentPoint32(__tmpDC, s, len, &size);
-	avgWidth = (size.cx / (len / 2) + 1) / 2;
-#else
-	avgWidth = tmet.tmAveCharWidth;
+        {
+            static char *s = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz";
+            static int len;
+
+            if (len == 0) {
+                len = strlen(s);
+            }
+            GetTextExtentPoint32(__tmpDC, s, len, &size);
+            avgWidth = (size.cx / (len / 2) + 1) / 2;
+        }
+#else
+        avgWidth = tmet.tmAveCharWidth;
 #endif
 
 #ifndef CACHE_LAST_TMP_FONT
-	SelectObject(__tmpDC, prevFont);
-#endif
-
-	__ArrayInstPtr(rawData)->a_element[0] = __MKSMALLINT(tmet.tmAscent);        /* ascent     -> (data at:1) */
-	__ArrayInstPtr(rawData)->a_element[1] = __MKSMALLINT(tmet.tmDescent);       /* descent    -> (data at:2) */
-	__ArrayInstPtr(rawData)->a_element[2] = __MKSMALLINT(tmet.tmAscent);        /* maxAscent  -> (data at:3) */
-	__ArrayInstPtr(rawData)->a_element[3] = __MKSMALLINT(tmet.tmDescent);       /* maxDescent -> (data at:4) */
-	__ArrayInstPtr(rawData)->a_element[4] = __MKSMALLINT(avgWidth);             /* minWidth   -> (data at:5) */
-	__ArrayInstPtr(rawData)->a_element[5] = __MKSMALLINT(tmet.tmMaxCharWidth);  /* maxWidth   -> (data at:6) */
-	__ArrayInstPtr(rawData)->a_element[6] = __MKSMALLINT(avgWidth);             /* avgWidth   -> (data at:7) */
-	__ArrayInstPtr(rawData)->a_element[7] = __MKSMALLINT(tmet.tmFirstChar);     /* min        -> (data at:8) */
-	__ArrayInstPtr(rawData)->a_element[8] = __MKSMALLINT(tmet.tmLastChar);      /* max        -> (data at:9) */
-	__ArrayInstPtr(rawData)->a_element[9] = __MKSMALLINT(tmet.tmDefaultChar);   /* default    -> (data at:10) */
-	__PROTECT__(rawData);
-	t = __charSetSymbolFor(tmet.tmCharSet);
-	__UNPROTECT__(rawData);
-	__ArrayInstPtr(rawData)->a_element[10]= t; __STORE(rawData, t);             /* charSet    -> (data at:11) */
-
-	DPRINTF(("textMetrics h=%x  avgAsc=%d avgDesc=%d minW=%d maxW=%d avgW=%d\n",
-		    hFont, tmet.tmAscent, tmet.tmDescent, avgWidth, tmet.tmMaxCharWidth,
-		    tmet.tmAveCharWidth));
-	RETURN (self);
+        SelectObject(__tmpDC, prevFont);
+#endif
+
+        __ArrayInstPtr(rawData)->a_element[0] = __MKSMALLINT(tmet.tmAscent);        /* ascent     -> (data at:1) */
+        __ArrayInstPtr(rawData)->a_element[1] = __MKSMALLINT(tmet.tmDescent);       /* descent    -> (data at:2) */
+        __ArrayInstPtr(rawData)->a_element[2] = __MKSMALLINT(tmet.tmAscent);        /* maxAscent  -> (data at:3) */
+        __ArrayInstPtr(rawData)->a_element[3] = __MKSMALLINT(tmet.tmDescent);       /* maxDescent -> (data at:4) */
+        __ArrayInstPtr(rawData)->a_element[4] = __MKSMALLINT(avgWidth);             /* minWidth   -> (data at:5) */
+        __ArrayInstPtr(rawData)->a_element[5] = __MKSMALLINT(tmet.tmMaxCharWidth);  /* maxWidth   -> (data at:6) */
+        __ArrayInstPtr(rawData)->a_element[6] = __MKSMALLINT(avgWidth);             /* avgWidth   -> (data at:7) */
+        __ArrayInstPtr(rawData)->a_element[7] = __MKSMALLINT(tmet.tmFirstChar);     /* min        -> (data at:8) */
+        __ArrayInstPtr(rawData)->a_element[8] = __MKSMALLINT(tmet.tmLastChar);      /* max        -> (data at:9) */
+        __ArrayInstPtr(rawData)->a_element[9] = __MKSMALLINT(tmet.tmDefaultChar);   /* default    -> (data at:10) */
+        t = __charSetSymbolFor(tmet.tmCharSet);
+        __ArrayInstPtr(rawData)->a_element[10]= t; __STORE(rawData, t);             /* charSet    -> (data at:11) */
+
+        DPRINTF(("textMetrics h=%x  avgAsc=%d avgDesc=%d minW=%d maxW=%d avgW=%d\n",
+                    hFont, tmet.tmAscent, tmet.tmDescent, avgWidth, tmet.tmMaxCharWidth,
+                    tmet.tmAveCharWidth));
+        RETURN (self);
     }
     RETURN (nil);
 %}
@@ -18847,11 +18838,11 @@
 !WinWorkstation class methodsFor:'documentation'!
 
 version
-    ^ '$Header: /cvs/stx/stx/libview/WinWorkstation.st,v 1.425 2010-07-22 12:51:03 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/WinWorkstation.st,v 1.426 2010-07-22 16:32:24 stefan Exp $'
 !
 
 version_CVS
-    ^ '$Header: /cvs/stx/stx/libview/WinWorkstation.st,v 1.425 2010-07-22 12:51:03 stefan Exp $'
+    ^ '$Header: /cvs/stx/stx/libview/WinWorkstation.st,v 1.426 2010-07-22 16:32:24 stefan Exp $'
 ! !
 
 WinWorkstation initialize!