2003/10/01 21:43:41
authormegacz <megacz@xwt.org>
Fri, 30 Jan 2004 07:38:57 +0000 (07:38 +0000)
committermegacz <megacz@xwt.org>
Fri, 30 Jan 2004 07:38:57 +0000 (07:38 +0000)
darcs-hash:20040130073857-2ba56-28cc2b5da03980901552a13e3942ecf57d16d745.gz

src/org/xwt/Box.java.pp

index 73524f7..931171c 100644 (file)
@@ -143,6 +143,7 @@ public final class Box extends JS.Scope {
     public Picture image;                        // will disappear
     private int fillcolor = 0x00000000;          // will become VectorGraphics.Paint
     private int strokecolor = 0xFF000000;        // will become VectorGraphics.Paint
     public Picture image;                        // will disappear
     private int fillcolor = 0x00000000;          // will become VectorGraphics.Paint
     private int strokecolor = 0xFF000000;        // will become VectorGraphics.Paint
+    private int textcolor = 0xFF000000;          // will become VectorGraphics.Paint
 
     private String cursor = null;                // the cursor for this box
 
 
     private String cursor = null;                // the cursor for this box
 
@@ -485,7 +486,7 @@ public final class Box extends JS.Scope {
                                      y + vpad + g.max_ascent - g.baseline + g.p.getHeight(),
                                      0, 0,
                                      g.p.getWidth(), g.p.getHeight(),
                                      y + vpad + g.max_ascent - g.baseline + g.p.getHeight(),
                                      0, 0,
                                      g.p.getWidth(), g.p.getHeight(),
-                                     strokecolor);
+                                     textcolor);
             x += g.advance;
         }
     }
             x += g.advance;
         }
     }
@@ -875,49 +876,17 @@ public final class Box extends JS.Scope {
         void put(String name, Box b, Object value) { put(b, value); }
 
         static {
         void put(String name, Box b, Object value) { put(b, value); }
 
         static {
-            //#repeat fill/stroke fillcolor/strokecolor
-            specialBoxProperties.put("fill", new SpecialBoxProperty() {
-                    public Object get(Box b) {
-                        if ((b.fillcolor & 0xFF000000) == 0) return null;
-                        String red = Integer.toHexString((b.fillcolor & 0x00FF0000) >> 16);
-                        String green = Integer.toHexString((b.fillcolor & 0x0000FF00) >> 8);
-                        String blue = Integer.toHexString(b.fillcolor & 0x000000FF);
-                        if (red.length() < 2) red = "0" + red;
-                        if (blue.length() < 2) blue = "0" + blue;
-                        if (green.length() < 2) green = "0" + green;
-                        return "#" + red + green + blue;
-                    }
-                    public void put(Box b, Object value) {
-                        int newcolor = b.fillcolor;
-                        String s = value == null ? null : value.toString();
-                        if (value == null) newcolor = 0x00000000;
-                        else if (s.length() > 0 && s.charAt(0) == '#')
-                            try {
-                                newcolor = 0xFF000000 |
-                                    (Integer.parseInt(s.substring(1, 3), 16) << 16) |
-                                    (Integer.parseInt(s.substring(3, 5), 16) << 8) |
-                                    Integer.parseInt(s.substring(5, 7), 16);
-                            } catch (NumberFormatException e) {
-                                Log.log(this, "invalid color " + s);
-                                return;
-                            }
-                        else if (org.xwt.translators.SVG.colors.get(s) != null)
-                            newcolor = 0xFF000000 | ((Integer)org.xwt.translators.SVG.colors.get(s)).intValue();
-                        if (newcolor == b.fillcolor) return;
-                        b.fillcolor = newcolor;
-                        b.dirty();
-                    }
+            specialBoxProperties.put("fill", new ColorBoxProperty() {
+                    public int getColor(Box b) { return b.fillcolor; }
+                    public void putColor(Box b, int argb) { b.fillcolor = argb; }
                 });
                 });
-            //#end
-        
-            specialBoxProperties.put("color", new SpecialBoxProperty() {
-                    public Object get(Box b) { return b.get("fill"); }
-                    public void put(Box b, Object value) { b.put("fill", value); }
+            specialBoxProperties.put("textcolor", new ColorBoxProperty() {
+                    public int getColor(Box b) { return b.textcolor; }
+                    public void putColor(Box b, int argb) { b.textcolor = argb; }
                 });
                 });
-
-            specialBoxProperties.put("textcolor", new SpecialBoxProperty() {
-                    public Object get(Box b) { return b.get("stroke"); }
-                    public void put(Box b, Object value) { b.put("stroke", value); }
+            specialBoxProperties.put("strokecolor", new ColorBoxProperty() {
+                    public int getColor(Box b) { return b.strokecolor; }
+                    public void putColor(Box b, int argb) { b.strokecolor = argb; }
                 });
 
             specialBoxProperties.put("text", new SpecialBoxProperty() {
                 });
 
             specialBoxProperties.put("text", new SpecialBoxProperty() {
@@ -1177,15 +1146,15 @@ public final class Box extends JS.Scope {
                         b.dirty();
                     } });
         
                         b.dirty();
                     } });
         
-            specialBoxProperties.put("invisible", new SpecialBoxProperty() {
+            specialBoxProperties.put("visible", new SpecialBoxProperty() {
                     public Object get(Box b) {
                         for (Box cur = b; cur != null; cur = cur.parent) {
                     public Object get(Box b) {
                         for (Box cur = b; cur != null; cur = cur.parent) {
-                            if ((cur.flags & INVISIBLE_FLAG) != 0) return Boolean.TRUE; }
-                        return Boolean.FALSE;
+                            if ((cur.flags & INVISIBLE_FLAG) != 0) return Boolean.FALSE; }
+                        return Boolean.TRUE;
                     }
                     public void put(Box b, Object value) {
                     }
                     public void put(Box b, Object value) {
-                        if (stob(value) == ((b.flags & INVISIBLE_FLAG) != 0)) return;
-                        if (stob(value)) b.flags |= INVISIBLE_FLAG; else b.flags &= ~INVISIBLE_FLAG;
+                        if (!stob(value) == ((b.flags & INVISIBLE_FLAG) != 0)) return;
+                        if (!stob(value)) b.flags |= INVISIBLE_FLAG; else b.flags &= ~INVISIBLE_FLAG;
                         if (b.parent == null) {
                             if (b.surface != null) b.surface.setInvisible((b.flags & INVISIBLE_FLAG) != 0);
                         } else {
                         if (b.parent == null) {
                             if (b.surface != null) b.surface.setInvisible((b.flags & INVISIBLE_FLAG) != 0);
                         } else {
@@ -1441,6 +1410,41 @@ public final class Box extends JS.Scope {
                     */
                 });
         }
                     */
                 });
         }
+
+        private static abstract class ColorBoxProperty extends SpecialBoxProperty {
+            public abstract int getColor(Box b);
+            public abstract void putColor(Box b, int argb);
+            public Object get(Box b) {
+                if ((getColor(b) & 0xFF000000) == 0) return null;
+                String red = Integer.toHexString((getColor(b) & 0x00FF0000) >> 16);
+                String green = Integer.toHexString((getColor(b) & 0x0000FF00) >> 8);
+                String blue = Integer.toHexString(getColor(b) & 0x000000FF);
+                if (red.length() < 2) red = "0" + red;
+                if (blue.length() < 2) blue = "0" + blue;
+                if (green.length() < 2) green = "0" + green;
+                return "#" + red + green + blue;
+            }
+            public void put(Box b, Object value) {
+                int newcolor = getColor(b);
+                String s = value == null ? null : value.toString();
+                if (value == null) newcolor = 0x00000000;
+                else if (s.length() > 0 && s.charAt(0) == '#')
+                    try {
+                        newcolor = 0xFF000000 |
+                            (Integer.parseInt(s.substring(1, 3), 16) << 16) |
+                            (Integer.parseInt(s.substring(3, 5), 16) << 8) |
+                            Integer.parseInt(s.substring(5, 7), 16);
+                    } catch (NumberFormatException e) {
+                        Log.log(this, "invalid color " + s);
+                        return;
+                    }
+                else if (org.xwt.translators.SVG.colors.get(s) != null)
+                    newcolor = 0xFF000000 | ((Integer)org.xwt.translators.SVG.colors.get(s)).intValue();
+                if (newcolor == getColor(b)) return;
+                putColor(b, newcolor);
+                b.dirty();
+            }
+        }
     }
 
     /** helper that converts a String to a boolean according to JavaScript coercion rules */
     }
 
     /** helper that converts a String to a boolean according to JavaScript coercion rules */