From: megacz Date: Fri, 30 Jan 2004 07:38:57 +0000 (+0000) Subject: 2003/10/01 21:43:41 X-Git-Tag: RC3~494 X-Git-Url: http://git.megacz.com/?p=org.ibex.core.git;a=commitdiff_plain;h=fed560ec17c824f4332919829f11899e48b52f4b 2003/10/01 21:43:41 darcs-hash:20040130073857-2ba56-28cc2b5da03980901552a13e3942ecf57d16d745.gz --- diff --git a/src/org/xwt/Box.java.pp b/src/org/xwt/Box.java.pp index 73524f7..931171c 100644 --- a/src/org/xwt/Box.java.pp +++ b/src/org/xwt/Box.java.pp @@ -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 + private int textcolor = 0xFF000000; // will become VectorGraphics.Paint 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(), - strokecolor); + textcolor); 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 { - //#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() { @@ -1177,15 +1146,15 @@ public final class Box extends JS.Scope { 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) { - 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) { - 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 { @@ -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 */