Revision: 3508
          http://vexi.svn.sourceforge.net/vexi/?rev=3508&view=rev
Author:   clrg
Date:     2009-05-26 00:21:46 +0000 (Tue, 26 May 2009)

Log Message:
-----------
- Some cleanup of Box, remove [commented out] "lock" code
- Use JSString in core.Text

Modified Paths:
--------------
    trunk/core/org.ibex.js/src/org/ibex/js/JSString.java
    trunk/core/org.vexi.core/src/org/vexi/core/Box.jpp
    trunk/core/org.vexi.core/src/org/vexi/core/Text.java

Modified: trunk/core/org.ibex.js/src/org/ibex/js/JSString.java
===================================================================
--- trunk/core/org.ibex.js/src/org/ibex/js/JSString.java        2009-05-25 
23:54:55 UTC (rev 3507)
+++ trunk/core/org.ibex.js/src/org/ibex/js/JSString.java        2009-05-26 
00:21:46 UTC (rev 3508)
@@ -14,10 +14,10 @@
     public JS type() { return SC_string; }
     
     public boolean equals(Object o) {
-        if(o == this) return true;
-        if(o instanceof JSString) {
+        if (o == this) return true;
+        if (o instanceof JSString) {
             return ((JSString)o).s.equals(s);
-        } else if(o instanceof JSNumber) {
+        } else if (o instanceof JSNumber) {
             return o.equals(this);
         } else {
             return false;
@@ -28,7 +28,7 @@
     static synchronized JS intern(String s) {
         synchronized(internHash) {
             JS js = (JS)internHash.get(s);
-            if(js == null) internHash.put(s,js = new Intern(s));
+            if (js == null) internHash.put(s,js = new Intern(s));
             return js;
         }
     }
@@ -39,5 +39,5 @@
     
     public String coerceToString() { return s; }
     
-    public String toString(){ return s; }
+    public String toString() { return s; }
 }

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Box.jpp
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Box.jpp  2009-05-25 23:54:55 UTC 
(rev 3507)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Box.jpp  2009-05-26 00:21:46 UTC 
(rev 3508)
@@ -15,6 +15,7 @@
 import org.ibex.js.JSArrayLike;
 import org.ibex.js.JSU;
 import org.ibex.js.JSExn;
+import org.ibex.js.JSString;
 import org.ibex.js.Scheduler;
 import org.ibex.util.Callable;
 import org.ibex.util.Log;
@@ -134,7 +135,7 @@
     private static final int TILE_IMAGE              = 0x00000010;
     private static final int MOUSEINSIDE             = 0x00000020;
     private static final int CURSOR                  = 0x00000040;
-    //private static final int LOCK_CHILDREN           = 0x00000080;
+    //private static final int UNUSED                = 0x00000080;
 
     private static final int CONSTRAIN               = 0x00000100;
     private static final int CONSTRAIN_DESCENDENT    = 0x00000200;
@@ -366,12 +367,9 @@
                 box.justTriggerTraps(SC_fontsize, 
Text.sizeToJS(box.text.pointsize));
         }
         int i=0;
-        //boolean lock = !box.test(LOCK_CHILDREN);
-        //if (lock) box.set(LOCK_CHILDREN);
         for (Box b = box.getChild(i); b!=null; b=box.getChild(++i)) {
             reflowTreeTextSize(box.getChild(i));
         }
-        //if (lock) box.clear(LOCK_CHILDREN);
     }
 
     /** used to invoke reflow on a box and it's children */
@@ -397,16 +395,13 @@
     /** constrain box children then establish the minimum size of a box */
     private void constrain() {
         int i;
-        //boolean lock = !test(LOCK_CHILDREN);
 
         // reconstrain any children
         if (test(CONSTRAIN_DESCENDENT)) {
-            //if (lock) set(LOCK_CHILDREN);
             for (Box c = getChild(i=0); c != null; c = getChild(++i)) {
                 if (!c.test(DISPLAY)) continue;
                 c.constrain();
             }
-            //if (lock) clear(LOCK_CHILDREN);
             clear(CONSTRAIN_DESCENDENT);
         }
 
@@ -415,7 +410,6 @@
 
         // remember current size
         int newwidth = 0, newheight = 0;
-        //if (lock) set(LOCK_CHILDREN);
         if (test(PACK)) {
             //#repeat width/height HORIZONTAL/VERTICAL 
             // accumulate child contentwidth
@@ -441,7 +435,6 @@
                 newheight = max(newheight, c.contentheight);
             }
         }
-        //if (lock) clear(LOCK_CHILDREN);
         
         //#repeat width/height WIDTH/HEIGHT
         if (test(CLIP)) {
@@ -487,14 +480,11 @@
             placeChildren(clean);
             if (test(PLACE_DESCENDENT)) {
                 clear(PLACE_DESCENDENT);
-                //boolean lock = !test(LOCK_CHILDREN);
-                //if (lock) set(LOCK_CHILDREN);
                 int i = 0;
                 for (Box child = getChild(0); child != null; child = 
getChild(++i)) {
                     if (!child.test(DISPLAY)) continue;
                     child.place(clean && child.test(PLACE_CLEAN));
                 }
-                //if (lock) clear(LOCK_CHILDREN);
             }
         } else clear(PLACE|PLACE_DESCENDENT);
         set(PLACE_CLEAN);
@@ -503,8 +493,6 @@
     private final void placeChildren(boolean clean) {
         if (test(PLACE)) {
             clear(PLACE);
-            //boolean lock = !test(LOCK_CHILDREN);
-            //if (lock) set(LOCK_CHILDREN);
             // needed for later resize()
             int child_width, child_height, i;
             
@@ -744,7 +732,6 @@
                     }
                 }
             }
-            //if (lock) clear(LOCK_CHILDREN);
         }
     }
 
@@ -789,7 +776,7 @@
             int gap_y = height - text.height;
             int text_x = globalx + (test(ALIGN_RIGHT) ? gap_x : 
!test(ALIGN_LEFT) ? gap_x/2 : 0);
             int text_y = globaly + (test(ALIGN_BOTTOM) ? gap_y : 
!test(ALIGN_TOP) ? gap_y/2 : 0);
-            text.font.rasterizeGlyphs(text.str, buf, text.color, text_x, 
text_y, cx1, cy1, cx2, cy2);
+            text.font.rasterizeGlyphs(text.str.toString(), buf, text.color, 
text_x, text_y, cx1, cy1, cx2, cy2);
         }
 
         //if (path != null) path.realize(Affine.translate(globalx, 
globaly)).stroke(buf, 1, strokecolor);
@@ -1038,11 +1025,8 @@
     private final void propagateLeave() throws JSExn {
         clear(MOUSEINSIDE);
         int i = treeSize()-1;
-        //boolean lock = !test(LOCK_CHILDREN);
-        //if (lock) set(LOCK_CHILDREN);
         for (Box b = getChild(i); b != null; b = getChild(--i))
             if (b.test(MOUSEINSIDE)) b.propagateLeave();
-        //if (lock) clear(LOCK_CHILDREN);
         if (test(LEAVE_TRAP)) justTriggerTraps(SC_Leave, JSU.T);
     }
 
@@ -1058,8 +1042,6 @@
                 return true;
 
         int i;
-        //boolean lock = !test(LOCK_CHILDREN);
-        //if (lock) set(LOCK_CHILDREN);
         // absolute layout - allows for interruption by overlaying siblings
         if (!test(PACK)) {
             for (Box b = getChild(i=treeSize()-1); b != null; b = 
getChild(--i)) {
@@ -1081,7 +1063,6 @@
                 else if (b.test(MOUSEINSIDE)) b.propagateLeave();
             }
         }
-        //if (lock) clear(LOCK_CHILDREN);
 
         // set cursor if applicable to this box
         if (test(CURSOR)) {
@@ -1128,8 +1109,6 @@
             return true;
 
         int i;
-        //boolean lock = !test(LOCK_CHILDREN);
-        //if (lock) set(LOCK_CHILDREN);
         // absolute layout - check all children
         if (!test(PACK)) {
             for (Box b = getChild(i=treeSize()-1); b != null; b = 
getChild(--i)) {
@@ -1152,7 +1131,6 @@
                 }
             }
         }
-        //if (lock) clear(LOCK_CHILDREN);
 
         if (Interpreter.CASCADE_PREVENTED == justTriggerTraps(event, value))
             return true;
@@ -1277,7 +1255,7 @@
         case "forcereflow": return METHOD;
         case "sendEvent": return METHOD;
         case "distanceto": return METHOD;
-        case "text": return JSU.S(text.str); 
+        case "text": return text.str; 
         case "fill": if (texture == null) return 
JSU.S(Color.colorToString(fillcolor)); return texture.stream;
         case "tile": return JSU.B(test(TILE_IMAGE));
         case "textcolor": return JSU.S(Color.colorToString(text.color));
@@ -1369,10 +1347,9 @@
             }
             if (!text.isEmpty()) { setConstrain(); dirty(); }
         case "text":
-            String s = value==null ? Text.EMPTY_STRING : JSU.toString(value);
-            // is this necessary? - strings are immutable so 
""==Text.EMPTY_STRING
-            //if (s.equals("")) s = Text.EMPTY_STRING;
-            if (s == text.str) return;
+            // FIXME: must be a better way to get JS to JSString
+            JSString s = value==null ? Text.EMPTY_STRING : 
(JSString)JSU.S(JSU.toString(value));
+            if (s.equals(text.str)) return;
             text = text.setString(s);
             setConstrain();
             dirty();
@@ -1755,15 +1732,12 @@
                 return trapchain;
         }
         int i=0;
-        //boolean lock = !test(LOCK_CHILDREN);
-        //if (lock) set(LOCK_CHILDREN);
         for (Box b = getChild(i); b!=null; b=getChild(++i)) {
             trapchain = b.fireSurfaceTraps(val, trapchain);
             // interrupted by a JS exception
             if (trapchain != null && trapchain.exn != null)
                 return trapchain;
         }
-        //if (lock) clear(LOCK_CHILDREN);
         return trapchain;
     }
 
@@ -1782,8 +1756,6 @@
                 return trapchain;
         }
         int i=0;
-        //boolean lock = !test(LOCK_CHILDREN);
-        //if (lock) set(LOCK_CHILDREN);
         for (Box b = getChild(i); b!=null; b=getChild(++i)) {
             if (b.test(DISPLAY)) {
                 trapchain = b.fireVisibleTraps(val, trapchain);
@@ -1792,7 +1764,6 @@
                     return trapchain;
             }
         }
-        //if (lock) clear(LOCK_CHILDREN);
         return trapchain;
     }
 
@@ -1832,8 +1803,6 @@
             if (oldparent == null) return;
             int ind = oldparent.indexNode(this);
             if (ind == i) return;
-            //if (oldparent.test(LOCK_CHILDREN))
-            //    throw new JSExn("Attempt to move child within parent whilst 
box tree is active");
             if (test(DISPLAY)) dirty();
             oldparent.deleteNode(ind);
             oldparent.insertNode(i, this);
@@ -1842,15 +1811,8 @@
         }
         // check validity of new parent assignment
         if (newparent != null) {
-            if (i == -1)
-                throw new JSExn("Illegal attempt to set the parent of a box");
-            // only allow new children to be placed at the end of a locked box
-            //if (newparent.test(LOCK_CHILDREN) && i<newparent.treeSize())
-            //    throw new JSExn("Attempt to add child to parent whilst box 
tree is active");
-        }/* else {
-            if (parent.test(LOCK_CHILDREN))
-                throw new JSExn("Attempt to remove child from parent whilst 
box tree is active");
-        }*/
+            if (i<0) throw new JSExn("Illegal attempt to set the parent of a 
box");
+        }
         // FIXME handle Enter/Leave better
         clear(MOUSEINSIDE);
         boolean wasvisible = isVisible();
@@ -1905,7 +1867,7 @@
      * knowledge that we may never return!!) and not on the redirect where we 
don't
      * exist!
      */
-    private void put(int i, JS value, boolean fireTrapsOnRemove, boolean 
viaRedirect) throws JSExn{
+    private void put(int i, JS value, boolean fireTrapsOnRemove, boolean 
viaRedirect) throws JSExn {
         Trap rangeTrap = test(CHILDREN_TRAP) ? wtrap(SC_Children) : null;
         JSExn rangeTrapException = null;
         try {

Modified: trunk/core/org.vexi.core/src/org/vexi/core/Text.java
===================================================================
--- trunk/core/org.vexi.core/src/org/vexi/core/Text.java        2009-05-25 
23:54:55 UTC (rev 3507)
+++ trunk/core/org.vexi.core/src/org/vexi/core/Text.java        2009-05-26 
00:21:46 UTC (rev 3508)
@@ -8,6 +8,7 @@
 import org.ibex.js.JS;
 import org.ibex.js.JSExn;
 import org.ibex.js.JSU;
+import org.ibex.js.JSString;
 import org.vexi.graphics.Font;
 
 /** amalgamates common text properties for memory/runtime efficiency */
@@ -27,7 +28,7 @@
     static Fountain DEFAULT_STREAM = Main.vera;
     static Font DEFAULT_FONT = Font.getFont(DEFAULT_STREAM, MEDIUM_SIZE);
     static Text DEFAULT_TEXT = new Text();
-    static String EMPTY_STRING = "";
+    static JSString EMPTY_STRING = (JSString) JSU.S("", true);
     
     static int getDefaultFontSize() { return MEDIUM_SIZE; }
     static Fountain getDefaultStream() { return DEFAULT_STREAM; }
@@ -114,7 +115,7 @@
     int width = 0;
     int height = 0;
     Font font = DEFAULT_FONT;
-    String str = "";
+    JSString str = EMPTY_STRING;
     
     // put these here to avoid consuming Box flags
     boolean font_trap = false;
@@ -233,7 +234,7 @@
 
     /** set string representing text object */
     Text setString() { return setString(EMPTY_STRING); }
-    Text setString(String str) {
+    Text setString(JSString str) {
         if (str.equals(this.str)) return this;
         Text t = (this == DEFAULT_TEXT) ? new Text() : this;
         t.str = str;
@@ -244,7 +245,7 @@
     /** synchronize dimensions with text object contents */
     private void calculateDimensions() {
         if (str == EMPTY_STRING) { width = 0; height = 0; return; }
-        width = font.textwidth(str);
-        height = font.textheight(str);
+        width = font.textwidth(str.toString());
+        height = font.textheight(str.toString());
     }
 }


This was sent by the SourceForge.net collaborative development platform, the 
world's largest Open Source development site.

------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, & 
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com 
_______________________________________________
Vexi-svn mailing list
Vexi-svn@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/vexi-svn

Reply via email to