From 6776ed9f1a81e517139d85eb6d2e28911fd0fc35 Mon Sep 17 00:00:00 2001 From: kitfox Date: Tue, 19 Mar 2013 05:20:37 +0000 Subject: Adding support for style sheets. git-svn-id: https://svn.java.net/svn/svgsalamander~svn/trunk/svg-core@153 7dc7fa77-23fb-e6ad-8e2e-c86bd48ed22b --- src/main/java/com/kitfox/svg/FontFace.java | 170 +++++++++++++++-------------- 1 file changed, 91 insertions(+), 79 deletions(-) (limited to 'src/main/java/com/kitfox/svg/FontFace.java') diff --git a/src/main/java/com/kitfox/svg/FontFace.java b/src/main/java/com/kitfox/svg/FontFace.java index e5b2938..b9d8748 100644 --- a/src/main/java/com/kitfox/svg/FontFace.java +++ b/src/main/java/com/kitfox/svg/FontFace.java @@ -33,16 +33,9 @@ * * Created on February 20, 2004, 10:00 PM */ - package com.kitfox.svg; import com.kitfox.svg.xml.StyleAttribute; -import com.kitfox.svg.xml.*; -import org.xml.sax.*; - -import java.awt.geom.*; -import java.awt.*; - /** * Implements an embedded font. @@ -54,15 +47,16 @@ import java.awt.*; */ public class FontFace extends SVGElement { - String fontFamily; - /** Em size of coordinate system font is defined in */ + public static final String TAG_NAME = "fontface"; + String fontFamily; + /** + * Em size of coordinate system font is defined in + */ int unitsPerEm = 1000; - int ascent = -1; int descent = -1; int accentHeight = -1; - int underlinePosition = -1; int underlineThickness = -1; int strikethroughPosition = -1; @@ -70,149 +64,167 @@ public class FontFace extends SVGElement int overlinePosition = -1; int overlineThickness = -1; - /** Creates a new instance of Font */ + /** + * Creates a new instance of Font + */ public FontFace() { } -/* - public void loaderStartElement(SVGLoaderHelper helper, Attributes attrs, SVGElement parent) - { - //Load style string - super.loaderStartElement(helper, attrs, parent); - - fontFamily = attrs.getValue("font-family"); - - String unitsPerEm = attrs.getValue("units-per-em"); - String ascent = attrs.getValue("ascent"); - String descent = attrs.getValue("descent"); - String accentHeight = attrs.getValue("accent-height"); - - String underlinePosition = attrs.getValue("underline-position"); - String underlineThickness = attrs.getValue("underline-thickness"); - String strikethroughPosition = attrs.getValue("strikethrough-position"); - String strikethroughThickness = attrs.getValue("strikethrough-thickness"); - String overlinePosition = attrs.getValue("overline-position"); - String overlineThickness = attrs.getValue("overline-thickness"); - - if (unitsPerEm != null) this.unitsPerEm = XMLParseUtil.parseInt(unitsPerEm); - if (ascent != null) this.ascent = XMLParseUtil.parseInt(ascent); - if (descent != null) this.descent = XMLParseUtil.parseInt(descent); - if (accentHeight != null) this.accentHeight = XMLParseUtil.parseInt(accentHeight); - - if (underlinePosition != null) this.underlinePosition = XMLParseUtil.parseInt(underlinePosition); - if (underlineThickness != null) this.underlineThickness = XMLParseUtil.parseInt(underlineThickness); - if (strikethroughPosition != null) this.strikethroughPosition = XMLParseUtil.parseInt(strikethroughPosition); - if (strikethroughThickness != null) this.strikethroughThickness = XMLParseUtil.parseInt(strikethroughThickness); - if (overlinePosition != null) this.overlinePosition = XMLParseUtil.parseInt(overlinePosition); - if (overlineThickness != null) this.overlineThickness = XMLParseUtil.parseInt(overlineThickness); - -// unitFontXform.setToScale(1.0 / (double)unitsPerEm, 1.0 / (double)unitsPerEm); - } - */ - /* - public void loaderEndElement(SVGLoaderHelper helper) + public String getTagName() { - super.loaderEndElement(helper); - - build(); - -// unitFontXform.setToScale(1.0 / (double)unitsPerEm, 1.0 / (double)unitsPerEm); + return TAG_NAME; } - */ - + protected void build() throws SVGException { super.build(); - + StyleAttribute sty = new StyleAttribute(); - - if (getPres(sty.setName("font-family"))) fontFamily = sty.getStringValue(); - - if (getPres(sty.setName("units-per-em"))) unitsPerEm = sty.getIntValue(); - if (getPres(sty.setName("ascent"))) ascent = sty.getIntValue(); - if (getPres(sty.setName("descent"))) descent = sty.getIntValue(); - if (getPres(sty.setName("accent-height"))) accentHeight = sty.getIntValue(); - - if (getPres(sty.setName("underline-position"))) underlinePosition = sty.getIntValue(); - if (getPres(sty.setName("underline-thickness"))) underlineThickness = sty.getIntValue(); - if (getPres(sty.setName("strikethrough-position"))) strikethroughPosition = sty.getIntValue(); - if (getPres(sty.setName("strikethrough-thickenss"))) strikethroughThickness = sty.getIntValue(); - if (getPres(sty.setName("overline-position"))) overlinePosition = sty.getIntValue(); - if (getPres(sty.setName("overline-thickness"))) overlineThickness = sty.getIntValue(); - } + if (getPres(sty.setName("font-family"))) + { + fontFamily = sty.getStringValue(); + } + + if (getPres(sty.setName("units-per-em"))) + { + unitsPerEm = sty.getIntValue(); + } + if (getPres(sty.setName("ascent"))) + { + ascent = sty.getIntValue(); + } + if (getPres(sty.setName("descent"))) + { + descent = sty.getIntValue(); + } + if (getPres(sty.setName("accent-height"))) + { + accentHeight = sty.getIntValue(); + } + + if (getPres(sty.setName("underline-position"))) + { + underlinePosition = sty.getIntValue(); + } + if (getPres(sty.setName("underline-thickness"))) + { + underlineThickness = sty.getIntValue(); + } + if (getPres(sty.setName("strikethrough-position"))) + { + strikethroughPosition = sty.getIntValue(); + } + if (getPres(sty.setName("strikethrough-thickenss"))) + { + strikethroughThickness = sty.getIntValue(); + } + if (getPres(sty.setName("overline-position"))) + { + overlinePosition = sty.getIntValue(); + } + if (getPres(sty.setName("overline-thickness"))) + { + overlineThickness = sty.getIntValue(); + } + } - public String getFontFamily() { return fontFamily; } + public String getFontFamily() + { + return fontFamily; + } - public int getUnitsPerEm() { return unitsPerEm; } + public int getUnitsPerEm() + { + return unitsPerEm; + } public int getAscent() { if (ascent == -1) - ascent = unitsPerEm - ((Font)parent).getVertOriginY(); + { + ascent = unitsPerEm - ((Font) parent).getVertOriginY(); + } return ascent; } public int getDescent() { if (descent == -1) - descent = ((Font)parent).getVertOriginY(); + { + descent = ((Font) parent).getVertOriginY(); + } return descent; } public int getAccentHeight() { if (accentHeight == -1) + { accentHeight = getAscent(); + } return accentHeight; } public int getUnderlinePosition() { if (underlinePosition == -1) + { underlinePosition = unitsPerEm * 5 / 6; + } return underlinePosition; } public int getUnderlineThickness() { if (underlineThickness == -1) + { underlineThickness = unitsPerEm / 20; + } return underlineThickness; } public int getStrikethroughPosition() { if (strikethroughPosition == -1) + { strikethroughPosition = unitsPerEm * 3 / 6; + } return strikethroughPosition; } public int getStrikethroughThickness() { if (strikethroughThickness == -1) + { strikethroughThickness = unitsPerEm / 20; + } return strikethroughThickness; } public int getOverlinePosition() { if (overlinePosition == -1) + { overlinePosition = unitsPerEm * 5 / 6; + } return overlinePosition; } public int getOverlineThickness() { if (overlineThickness == -1) + { overlineThickness = unitsPerEm / 20; + } return overlineThickness; } - + /** - * Updates all attributes in this diagram associated with a time event. - * Ie, all attributes with track information. + * Updates all attributes in this diagram associated with a time event. Ie, + * all attributes with track information. + * * @return - true if this node has changed state as a result of the time * update */ -- cgit v1.2.3-55-g7522