summaryrefslogtreecommitdiff
path: root/gnu
diff options
context:
space:
mode:
authorRoman Kennke <roman@kennke.org>2006-08-25 11:40:41 +0000
committerRoman Kennke <roman@kennke.org>2006-08-25 11:40:41 +0000
commit908cf530f76115ca26a4e64b37bf1895a43b183b (patch)
treeccd59f63aae4cba06aed22303f1604b3b75bd670 /gnu
parent619f04acb057709b57dd247e2b04b8cd997f896f (diff)
downloadclasspath-908cf530f76115ca26a4e64b37bf1895a43b183b.tar.gz
2006-08-24 Roman Kennke <kennke@aicas.com>
* javax/swing/text/html/CSS.java (getValue): Added color value conversion. * javax/swing/text/html/HTMLDocument.java (HTMLReader.ConvertAction): New class, converts HTML style tags to CSS attributes. (HTMLReader.initTags): Register ConvertAction for <font> tag. * javax/swing/text/html/InlineView.java (setPropertiesFromAttributes): Implemented to fetch CSS character attributes. * javax/swing/text/html/StyleSheet.java (addCSSAttribute): Convert value. (getBackground): Implemented to fetch CSS background color attribute. (getForeground): Implemented to fetch CSS color attribute. (getFont): Adjust font size for superscript and subscript. (translateHTMLToCSS): Rudimentary implementation that copies the original attributes, so that any CSS attributes in there are preserved. (stringToColor): Use CSSColor for conversion. * gnu/javax/swing/text/html/css/CSSColor.java: New class. Converts CSS color values to RGB color values. * gnu/javax/swing/text/html/CharacterAttributeTranslator.java: Removed. This is more or less replaced by CSSColor and the ConvertAction in HTMLReader.
Diffstat (limited to 'gnu')
-rw-r--r--gnu/javax/swing/text/html/CharacterAttributeTranslator.java192
-rw-r--r--gnu/javax/swing/text/html/css/CSSColor.java134
2 files changed, 134 insertions, 192 deletions
diff --git a/gnu/javax/swing/text/html/CharacterAttributeTranslator.java b/gnu/javax/swing/text/html/CharacterAttributeTranslator.java
deleted file mode 100644
index 06732e401..000000000
--- a/gnu/javax/swing/text/html/CharacterAttributeTranslator.java
+++ /dev/null
@@ -1,192 +0,0 @@
-/* CharacterAttributeTranslator.java --
- Copyright (C) 2006 Free Software Foundation, Inc.
-
-This file is part of GNU Classpath.
-
-GNU Classpath is free software; you can redistribute it and/or modify
-it under the terms of the GNU General Public License as published by
-the Free Software Foundation; either version 2, or (at your option)
-any later version.
-
-GNU Classpath is distributed in the hope that it will be useful, but
-WITHOUT ANY WARRANTY; without even the implied warranty of
-MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-General Public License for more details.
-
-You should have received a copy of the GNU General Public License
-along with GNU Classpath; see the file COPYING. If not, write to the
-Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
-02110-1301 USA.
-
-Linking this library statically or dynamically with other modules is
-making a combined work based on this library. Thus, the terms and
-conditions of the GNU General Public License cover the whole
-combination.
-
-As a special exception, the copyright holders of this library give you
-permission to link this library with independent modules to produce an
-executable, regardless of the license terms of these independent
-modules, and to copy and distribute the resulting executable under
-terms of your choice, provided that you also meet, for each linked
-independent module, the terms and conditions of the license of that
-module. An independent module is a module which is not derived from
-or based on this library. If you modify this library, you may extend
-this exception to your version of the library, but you are not
-obligated to do so. If you do not wish to do so, delete this
-exception statement from your version. */
-
-package gnu.javax.swing.text.html;
-
-import java.awt.Color;
-import java.util.HashMap;
-import java.util.StringTokenizer;
-
-import javax.swing.text.MutableAttributeSet;
-import javax.swing.text.StyleConstants;
-import javax.swing.text.html.HTML.Attribute;
-import javax.swing.text.html.HTML.Tag;
-
-/**
- * This is a small utility class to translate HTML character attributes to
- * Swing StyleConstants
- */
-public class CharacterAttributeTranslator
-{
- /**
- * Maps color name to its hex encoding.
- */
- private static final HashMap colorMap = new HashMap();
- static
- {
- colorMap.put("aqua" , "#00FFFF");
- colorMap.put("blue" , "#0000FF");
- colorMap.put("black", "#000000");
- colorMap.put("fuchsia" , "#FF00FF");
- colorMap.put("gray" , "#808080");
- colorMap.put("green" , "#008000");
- colorMap.put("lime" , "#00FF00");
- colorMap.put("maroon" , "#800000");
- colorMap.put("navy" , "#000080");
- colorMap.put("olive" , "#808000");
- colorMap.put("purple" , "#800080");
- colorMap.put("red" , "#FF0000");
- colorMap.put("silver" , "#C0C0C0");
- colorMap.put("teal" , "#008080");
- colorMap.put("white" , "#FFFFFF");
- colorMap.put("yellow" , "#FFFF00");
- };
-
- /**
- * Convert the color string represenation into java.awt.Color. The valid
- * values are like "aqua" , "#00FFFF" or "rgb(1,6,44)".
- *
- * @param colorName the color to convert.
- * @return the matching java.awt.color
- */
- public static Color getColor(String colorName)
- {
- colorName = colorName.toLowerCase();
- try
- {
- if (colorName.startsWith("rgb"))
- {
- // rgb(red, green, blue) notation.
- StringTokenizer st = new StringTokenizer(colorName, " ,()");
- String representation = st.nextToken();
-
- // Return null if the representation is not supported.
- if (! representation.equals("rgb"))
- return null;
- int red = Integer.parseInt(st.nextToken());
- int green = Integer.parseInt(st.nextToken());
- int blue = Integer.parseInt(st.nextToken());
-
- return new Color(red, green, blue);
- }
- else
- {
- String s2 = (String) colorMap.get(colorName);
- if (s2 == null)
- s2 = colorName;
- return Color.decode(s2);
- }
- }
- catch (Exception nex)
- {
- // Can be either number format exception or illegal argument
- // exception.
- return null;
- }
- }
-
- /**
- * Translate the HTML character attribute to the Swing style constant.
- *
- * @param charAttr the character attributes of the html tag
- * @param t the html tag itself
- * @param a the attribute set where the translated attributes will be stored
- *
- * @return true if some attributes were translated, false otherwise.
- */
- public static boolean translateTag(MutableAttributeSet charAttr,
- Tag t, MutableAttributeSet a)
- {
- if(t == Tag.FONT)
- {
- Object color = a.getAttribute(Attribute.COLOR);
- if(color != null)
- {
- Color c = getColor(color.toString());
- if( c == null )
- return false;
- charAttr.addAttribute(StyleConstants.Foreground, c);
- return true;
- }
-
- if(a.getAttribute(Attribute.SIZE) != null)
- {
- // FIXME
- // charAttr.addAttribute(StyleConstants.FontSize,
- // new java.lang.Integer(72));
- return true;
- }
- }
-
- if( t == Tag.B )
- {
- charAttr.addAttribute(StyleConstants.Bold, Boolean.TRUE);
- return true;
- }
-
- if( t == Tag.I )
- {
- charAttr.addAttribute(StyleConstants.Italic, Boolean.TRUE);
- return true;
- }
-
- if( t == Tag.U )
- {
- charAttr.addAttribute(StyleConstants.Underline, Boolean.TRUE);
- return true;
- }
-
- if( t == Tag.STRIKE )
- {
- charAttr.addAttribute(StyleConstants.StrikeThrough, Boolean.TRUE);
- return true;
- }
-
- if( t == Tag.SUP )
- {
- charAttr.addAttribute(StyleConstants.Superscript, Boolean.TRUE);
- return true;
- }
-
- if( t == Tag.SUB )
- {
- charAttr.addAttribute(StyleConstants.Subscript, Boolean.TRUE);
- return true;
- }
- return false;
- }
-}
diff --git a/gnu/javax/swing/text/html/css/CSSColor.java b/gnu/javax/swing/text/html/css/CSSColor.java
new file mode 100644
index 000000000..381bcd5ed
--- /dev/null
+++ b/gnu/javax/swing/text/html/css/CSSColor.java
@@ -0,0 +1,134 @@
+/* CSSColor.java -- Converts CSS color values
+ Copyright (C) 2006 Free Software Foundation, Inc.
+
+This file is part of GNU Classpath.
+
+GNU Classpath is free software; you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation; either version 2, or (at your option)
+any later version.
+
+GNU Classpath is distributed in the hope that it will be useful, but
+WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with GNU Classpath; see the file COPYING. If not, write to the
+Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+02110-1301 USA.
+
+Linking this library statically or dynamically with other modules is
+making a combined work based on this library. Thus, the terms and
+conditions of the GNU General Public License cover the whole
+combination.
+
+As a special exception, the copyright holders of this library give you
+permission to link this library with independent modules to produce an
+executable, regardless of the license terms of these independent
+modules, and to copy and distribute the resulting executable under
+terms of your choice, provided that you also meet, for each linked
+independent module, the terms and conditions of the license of that
+module. An independent module is a module which is not derived from
+or based on this library. If you modify this library, you may extend
+this exception to your version of the library, but you are not
+obligated to do so. If you do not wish to do so, delete this
+exception statement from your version. */
+
+
+package gnu.javax.swing.text.html.css;
+
+import java.awt.Color;
+import java.util.HashMap;
+
+/**
+ * Converts CSS color values into AWT Color values.
+ *
+ * @author Roman Kennke (kennke@aicas.com)
+ */
+public class CSSColor
+{
+
+ private static final HashMap COLOR_MAP;
+ static
+ {
+ COLOR_MAP = new HashMap();
+ COLOR_MAP.put("maroon", "#800000");
+ COLOR_MAP.put("red", "#ff0000");
+ COLOR_MAP.put("orange", "#ffa500");
+ COLOR_MAP.put("yellow", "#ffff00");
+ COLOR_MAP.put("olive", "#808000");
+ COLOR_MAP.put("purple", "#800080");
+ COLOR_MAP.put("fuchsia", "#ff00ff");
+ COLOR_MAP.put("white", "#ffffff");
+ COLOR_MAP.put("lime", "#00ff00");
+ COLOR_MAP.put("green", "#008000");
+ COLOR_MAP.put("navy", "#000080");
+ COLOR_MAP.put("blue", "#0000ff");
+ COLOR_MAP.put("aqua", "#00ffff");
+ COLOR_MAP.put("teal", "#008080");
+ COLOR_MAP.put("black", "#000000");
+ COLOR_MAP.put("silver", "#c0c0c0");
+ COLOR_MAP.put("gray", "#808080");
+ }
+
+ /**
+ * The CSS value.
+ */
+ private String value;
+
+ /**
+ * The converted color.
+ */
+ private Color color;
+
+ /**
+ * Creates a new instance.
+ *
+ * @param val the CSS value
+ */
+ public CSSColor(String val)
+ {
+ value = val;
+ color = convertValue(value);
+ }
+
+ /**
+ * Converts a CSS color value to an AWT color.
+ *
+ * @param value the CSS color value
+ *
+ * @return the converted color value
+ */
+ public static Color convertValue(String value)
+ {
+ Color color;
+ String val1 = value.toLowerCase();
+ if (val1.charAt(0) != '#')
+ val1 = (String) COLOR_MAP.get(val1);
+ if (val1 != null)
+ {
+ String hexVal = val1.substring(1);
+ int rgb = Integer.parseInt(hexVal, 16);
+ color = new Color(rgb);
+ }
+ else
+ color = null;
+ return color;
+ }
+
+ /**
+ * Returns the converted color.
+ *
+ * @return the converted color
+ */
+ public Color getValue()
+ {
+ return color;
+ }
+
+ public String toString()
+ {
+ return value;
+ }
+}