You are viewing a plain text version of this content. The canonical link for it is here.
Posted to batik-dev@xmlgraphics.apache.org by vh...@apache.org on 2002/09/09 15:02:08 UTC
cvs commit: xml-batik/test-resources/org/apache/batik/transcoder/image unitTesting.xml
vhardy 2002/09/09 06:02:08
Modified: resources/org/apache/batik/apps/rasterizer/resources
Messages.properties
test-sources/org/apache/batik/apps/rasterizer MainTest.java
SVGConverterTest.java
sources/org/apache/batik/apps/rasterizer Main.java
SVGConverter.java
sources/org/apache/batik/apps/svgbrowser Application.java
JSVGViewerFrame.java Main.java
PreferenceDialog.java
sources/org/apache/batik/transcoder
SVGAbstractTranscoder.java
test-resources/org/apache/batik/transcoder/image
unitTesting.xml
Added: test-references/samples/tests/spec/styling
defaultFontFamilyArial.png
defaultFontFamilyTimes.png
samples/tests/spec/styling defaultFontFamily.svg
test-sources/org/apache/batik/transcoder/image
DefaultFontFamilyTest.java
Log:
Adding support for default font-family option in applications (rasterizer and viewer).
In the rasterizer, there is now a font-family command line option which lets the user
define the default value for the font-family CSS property.
In the Squiggle browser, the default font-family value is an option read from
the preference file (the key is preference.key.default.font.family). There is no
user interface for modifying this value at this time.
That default font-family value is used when there is no specified font-family property
for text content.
Revision Changes Path
1.1 xml-batik/test-references/samples/tests/spec/styling/defaultFontFamilyArial.png
<<Binary file>>
1.1 xml-batik/test-references/samples/tests/spec/styling/defaultFontFamilyTimes.png
<<Binary file>>
1.1 xml-batik/samples/tests/spec/styling/defaultFontFamily.svg
Index: defaultFontFamily.svg
===================================================================
<?xml version="1.0" standalone="no"?>
<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.0//EN"
"http://www.w3.org/TR/2001/REC-SVG-20010904/DTD/svg10.dtd">
<svg xmlns="http://www.w3.org/2000/svg"
xmlns:xlink="http://www.w3.org/1999/xlink"
width="450" height="500" viewBox="0 0 450 500">
<text x="50%" y="50%" font-size="30" text-anchor="middle">Default font-family</text>
</svg>
1.10 +9 -0 xml-batik/resources/org/apache/batik/apps/rasterizer/resources/Messages.properties
Index: Messages.properties
===================================================================
RCS file: /home/cvs/xml-batik/resources/org/apache/batik/apps/rasterizer/resources/Messages.properties,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- Messages.properties 4 Sep 2002 19:20:21 -0000 1.9
+++ Messages.properties 9 Sep 2002 13:02:06 -0000 1.10
@@ -86,6 +86,9 @@
-cssUser <userStylesheet> \n \
\tCSS user stylesheet URI to apply to converted SVG documents \n \
\tin addition to any other referened or embeded stylesheets. \n \
+ -font-family <defaultFontFamily> \n \
+\tValue used as a default when no font-family value \n \
+\tis specified. \n \
-lang <userLanguage> \n \
\tUser language to use when converting SVG documents.\n \
-q <quality> \n \
@@ -159,6 +162,12 @@
converted.\n \
Example: -cssMedia projection \n \
Default: none (which means that the "screen" media will be used.
+
+Main.cl.option.default.font.family.description = \
+-font-family <defaultValue> Value used as a default when no font-family value \n \
+ is specified.\n \
+Example: -font-family "Times, Comic Sans MS"
+Default: "Arial, Helvetica, sans-serif"
Main.cl.option.cssAlternate.description = \
-cssAlternate <alternate> CSS alternate stylesheet to use when converting the source \n \
1.8 +29 -1 xml-batik/test-sources/org/apache/batik/apps/rasterizer/MainTest.java
Index: MainTest.java
===================================================================
RCS file: /home/cvs/xml-batik/test-sources/org/apache/batik/apps/rasterizer/MainTest.java,v
retrieving revision 1.7
retrieving revision 1.8
diff -u -r1.7 -r1.8
--- MainTest.java 5 Sep 2002 15:58:34 -0000 1.7
+++ MainTest.java 9 Sep 2002 13:02:06 -0000 1.8
@@ -248,6 +248,30 @@
addTest(t);
t.setId("MainConfigTest.cssMedia");
+
+ t = new MainConfigTest("-font-family Arial, Comic Sans MS"){
+ public TestReport validate(SVGConverter c){
+ String fontFamily = c.getDefaultFontFamily();
+ String eFontFamily = "Arial, Comic Sans MS";
+ if(eFontFamily.equals(fontFamily)){
+ return reportSuccess();
+ } else {
+ return reportError("-font-family", eFontFamily, fontFamily);
+ }
+ }
+
+ String[] makeArgsArray(String args) {
+ return new String[] {"-font-family",
+ "Arial, Comic Sans MS"};
+ }
+ };
+
+ addTest(t);
+ t.setId("MainConfigTest.fontFamily");
+
+
+
+
t = new MainConfigTest("-cssAlternate myAlternateStylesheet"){
public TestReport validate(SVGConverter c){
String alternate = c.getAlternateStylesheet();
@@ -415,6 +439,10 @@
t = new MainConfigErrorTest("-cssMedia", "hello.svg -cssMedia");
addTest(t);
t.setId("MainConfigErrorTest.mediaType");
+
+ t = new MainConfigErrorTest("-font-family", "hello.svg -font-family");
+ addTest(t);
+ t.setId("MainConfigErrorTest.font-family");
t = new MainConfigErrorTest("-cssAlternate", "hello.svg -cssAlternate");
addTest(t);
1.15 +11 -1 xml-batik/test-sources/org/apache/batik/apps/rasterizer/SVGConverterTest.java
Index: SVGConverterTest.java
===================================================================
RCS file: /home/cvs/xml-batik/test-sources/org/apache/batik/apps/rasterizer/SVGConverterTest.java,v
retrieving revision 1.14
retrieving revision 1.15
diff -u -r1.14 -r1.15
--- SVGConverterTest.java 5 Sep 2002 15:58:34 -0000 1.14
+++ SVGConverterTest.java 9 Sep 2002 13:02:06 -0000 1.15
@@ -125,6 +125,16 @@
t.setId("HintsConfigTest.KEY_MEDIA");
t = new HintsConfigTest(new Object[][]{
+ {ImageTranscoder.KEY_DEFAULT_FONT_FAMILY, "Times"}}){
+ protected void deltaConfigure(SVGConverter c){
+ c.setDefaultFontFamily("Times");
+ }
+ };
+
+ addTest(t);
+ t.setId("HintsConfigTest.KEY_DEFAULT_FONT_FAMILY");
+
+ t = new HintsConfigTest(new Object[][]{
{ImageTranscoder.KEY_ALTERNATE_STYLESHEET, "myStyleSheet"}}){
protected void deltaConfigure(SVGConverter c){
c.setAlternateStylesheet("myStyleSheet");
1.1 xml-batik/test-sources/org/apache/batik/transcoder/image/DefaultFontFamilyTest.java
Index: DefaultFontFamilyTest.java
===================================================================
/*****************************************************************************
* Copyright (C) The Apache Software Foundation. All rights reserved. *
* ------------------------------------------------------------------------- *
* This software is published under the terms of the Apache Software License *
* version 1.1, a copy of which has been included with this distribution in *
* the LICENSE file. *
*****************************************************************************/
package org.apache.batik.transcoder.image;
import java.awt.image.BufferedImage;
import java.awt.geom.Rectangle2D;
import java.util.Map;
import java.util.HashMap;
import org.apache.batik.transcoder.TranscoderException;
import org.apache.batik.transcoder.TranscoderInput;
import org.apache.batik.transcoder.TranscoderOutput;
/**
* Test the ImageTranscoder with the KEY_DEFAULT_FONT_FAMILY transcoding hint.
*
* @author <a href="mailto:vincent.hardy@sun.com">Vincent Hardy</a>
* @version $Id: DefaultFontFamilyTest.java,v 1.1 2002/09/09 13:02:07 vhardy Exp $
*/
public class DefaultFontFamilyTest extends AbstractImageTranscoderTest {
/** The URI of the input image. */
protected String inputURI;
/** The URI of the reference image. */
protected String refImageURI;
/** The default font-family to use. */
protected String defaultFontFamily;
/**
* Constructs a new <tt>DefaultFontFamilyTest</tt>.
*
* @param inputURI the URI of the input image
* @param the URI of the reference image
* @param defaultFontFamily the default font-family to use
*/
public DefaultFontFamilyTest(String inputURI,
String refImageURI,
String defaultFontFamily) {
this.inputURI = inputURI;
this.refImageURI = refImageURI;
this.defaultFontFamily = defaultFontFamily;
}
/**
* Creates the <tt>TranscoderInput</tt>.
*/
protected TranscoderInput createTranscoderInput() {
return new TranscoderInput(resolveURL(inputURI).toString());
}
/**
* Creates a Map that contains additional transcoding hints.
*/
protected Map createTranscodingHints() {
Map hints = new HashMap(3);
hints.put(ImageTranscoder.KEY_DEFAULT_FONT_FAMILY, defaultFontFamily);
return hints;
}
/**
* Returns the reference image for this test.
*/
protected byte [] getReferenceImageData() {
return createBufferedImageData(resolveURL(refImageURI));
}
}
1.24 +23 -1 xml-batik/sources/org/apache/batik/apps/rasterizer/Main.java
Index: Main.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/apps/rasterizer/Main.java,v
retrieving revision 1.23
retrieving revision 1.24
diff -u -r1.23 -r1.24
--- Main.java 4 Sep 2002 19:20:21 -0000 1.23
+++ Main.java 9 Sep 2002 13:02:07 -0000 1.24
@@ -353,6 +353,16 @@
= Messages.get("Main.cl.option.media.type.description", "No description");
/**
+ * Option to specify the default value for the font-family
+ * CSS property when converting the SVG image
+ */
+ public static String CL_OPTION_DEFAULT_FONT_FAMILY
+ = Messages.get("Main.cl.option.default.font.family", "-font-family");
+
+ public static String CL_OPTION_DEFAULT_FONT_FAMILY_DESCRIPTION
+ = Messages.get("Main.cl.option.default.font.family.description", "No description");
+
+ /**
* Option to specify the CSS alternate stylesheet when
* converting the SVG images
*/
@@ -578,6 +588,18 @@
return CL_OPTION_MEDIA_TYPE_DESCRIPTION;
}
});
+
+ optionMap.put(CL_OPTION_DEFAULT_FONT_FAMILY,
+ new SingleValueOptionHandler() {
+ public void handleOption(String optionValue,
+ SVGConverter c){
+ c.setDefaultFontFamily(optionValue);
+ }
+
+ public String getOptionDescription(){
+ return CL_OPTION_DEFAULT_FONT_FAMILY_DESCRIPTION;
+ }
+ });
optionMap.put(CL_OPTION_ALTERNATE_STYLESHEET,
new SingleValueOptionHandler(){
1.17 +22 -1 xml-batik/sources/org/apache/batik/apps/rasterizer/SVGConverter.java
Index: SVGConverter.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/apps/rasterizer/SVGConverter.java,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -r1.16 -r1.17
--- SVGConverter.java 4 Sep 2002 19:20:21 -0000 1.16
+++ SVGConverter.java 9 Sep 2002 13:02:07 -0000 1.17
@@ -253,6 +253,9 @@
/** Media type for which the SVG image should be rendered */
protected String mediaType = null;
+ /** Default value for the font-family when it is unspecified */
+ protected String defaultFontFamily = null;
+
/** Alternate stylesheet for which should be applied to the SVG */
protected String alternateStylesheet = null;
@@ -481,6 +484,19 @@
}
/**
+ * Sets the <tt>defaultFontFamily</tt> value. This value controls
+ * the default value for the font-family CSS property when that
+ * property is unspecified.
+ */
+ public void setDefaultFontFamily(String defaultFontFamily) {
+ this.defaultFontFamily = defaultFontFamily;
+ }
+
+ public String getDefaultFontFamily() {
+ return defaultFontFamily;
+ }
+
+ /**
* Sets the <tt>alternateStyleSheet</tt> value. This value
* controls the CSS alternate stylesheet to select in the
* rendered SVG file(s). It may be null, in which case no alternate
@@ -781,6 +797,11 @@
// Set CSS Media
if (mediaType != null){
map.put(ImageTranscoder.KEY_MEDIA, mediaType);
+ }
+
+ // Set default font-family
+ if (defaultFontFamily != null) {
+ map.put(ImageTranscoder.KEY_DEFAULT_FONT_FAMILY, defaultFontFamily);
}
// Set alternateStylesheet
1.10 +7 -1 xml-batik/sources/org/apache/batik/apps/svgbrowser/Application.java
Index: Application.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/apps/svgbrowser/Application.java,v
retrieving revision 1.9
retrieving revision 1.10
diff -u -r1.9 -r1.10
--- Application.java 18 Jun 2002 12:27:11 -0000 1.9
+++ Application.java 9 Sep 2002 13:02:07 -0000 1.10
@@ -66,6 +66,12 @@
String getUserStyleSheetURI();
/**
+ * Returns the default value for the CSS
+ * "font-family" property
+ */
+ String getDefaultFontFamily();
+
+ /**
* Returns the CSS media to use.
* @return empty string if no CSS media was specified.
*/
1.87 +2 -2 xml-batik/sources/org/apache/batik/apps/svgbrowser/JSVGViewerFrame.java
Index: JSVGViewerFrame.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/apps/svgbrowser/JSVGViewerFrame.java,v
retrieving revision 1.86
retrieving revision 1.87
diff -u -r1.86 -r1.87
--- JSVGViewerFrame.java 5 Sep 2002 12:58:18 -0000 1.86
+++ JSVGViewerFrame.java 9 Sep 2002 13:02:07 -0000 1.87
@@ -2242,7 +2242,7 @@
* Returns the default font family.
*/
public String getDefaultFontFamily() {
- return "Arial, Helvetica, sans-serif";
+ return application.getDefaultFontFamily();
}
/**
1.43 +18 -1 xml-batik/sources/org/apache/batik/apps/svgbrowser/Main.java
Index: Main.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/apps/svgbrowser/Main.java,v
retrieving revision 1.42
retrieving revision 1.43
diff -u -r1.42 -r1.43
--- Main.java 2 Aug 2002 20:26:05 -0000 1.42
+++ Main.java 9 Sep 2002 13:02:07 -0000 1.43
@@ -135,6 +135,12 @@
public static final String URI_SEPARATOR = " ";
/**
+ * Default font-family value.
+ */
+ public static final String DEFAULT_DEFAULT_FONT_FAMILY
+ = "Arial, Helvetica, sans-serif";
+
+ /**
* SVG initialization file, used to trigger loading of most of
* the Batik classes
*/
@@ -272,6 +278,8 @@
"");
defaults.put(PreferenceDialog.PREFERENCE_KEY_CSS_MEDIA,
"screen");
+ defaults.put(PreferenceDialog.PREFERENCE_KEY_DEFAULT_FONT_FAMILY,
+ DEFAULT_DEFAULT_FONT_FAMILY);
defaults.put(PreferenceDialog.PREFERENCE_KEY_IS_XML_PARSER_VALIDATING,
Boolean.FALSE);
defaults.put(PreferenceDialog.PREFERENCE_KEY_ENFORCE_SECURE_SCRIPTING,
@@ -711,6 +719,15 @@
public String getUserStyleSheetURI() {
return preferenceManager.getString
(PreferenceDialog.PREFERENCE_KEY_USER_STYLESHEET);
+ }
+
+ /**
+ * Returns the default value for the CSS
+ * "font-family" property
+ */
+ public String getDefaultFontFamily() {
+ return preferenceManager.getString
+ (PreferenceDialog.PREFERENCE_KEY_DEFAULT_FONT_FAMILY);
}
/**
1.18 +4 -1 xml-batik/sources/org/apache/batik/apps/svgbrowser/PreferenceDialog.java
Index: PreferenceDialog.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/apps/svgbrowser/PreferenceDialog.java,v
retrieving revision 1.17
retrieving revision 1.18
diff -u -r1.17 -r1.18
--- PreferenceDialog.java 2 Aug 2002 00:51:40 -0000 1.17
+++ PreferenceDialog.java 9 Sep 2002 13:02:07 -0000 1.18
@@ -242,6 +242,9 @@
public static final String PREFERENCE_KEY_CSS_MEDIA
= "preference.key.cssmedia";
+ public static final String PREFERENCE_KEY_DEFAULT_FONT_FAMILY
+ = "preference.key.default.font.family";
+
public static final String PREFERENCE_KEY_PROXY_PORT
= "preference.key.proxy.port";
1.2 +46 -1 xml-batik/sources/org/apache/batik/transcoder/SVGAbstractTranscoder.java
Index: SVGAbstractTranscoder.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/transcoder/SVGAbstractTranscoder.java,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- SVGAbstractTranscoder.java 5 Jun 2002 21:14:48 -0000 1.1
+++ SVGAbstractTranscoder.java 9 Sep 2002 13:02:07 -0000 1.2
@@ -74,6 +74,12 @@
* @version $Id$ */
public abstract class SVGAbstractTranscoder extends XMLAbstractTranscoder {
/**
+ * Value used as a default for the default font-family hint
+ */
+ public static final String DEFAULT_DEFAULT_FONT_FAMILY
+ = "Arial, Helvetica, sans-serif";
+
+ /**
* Current area of interest.
*/
protected Rectangle2D curAOI;
@@ -105,6 +111,8 @@
ExtensibleSVGDOMImplementation.getDOMImplementation());
hints.put(KEY_MEDIA,
"screen");
+ hints.put(KEY_DEFAULT_FONT_FAMILY,
+ DEFAULT_DEFAULT_FONT_FAMILY);
hints.put(KEY_EXECUTE_ONLOAD,
Boolean.FALSE);
hints.put(KEY_ALLOWED_SCRIPT_TYPES,
@@ -365,6 +373,33 @@
= new StringKey();
/**
+ * The default font-family key.
+ *
+ * <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1">
+ * <TR>
+ * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Key: </TH>
+ * <TD VALIGN="TOP">KEY_DEFAULT_FONT_FAMILY</TD></TR>
+ * <TR>
+ * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Value: </TH>
+ * <TD VALIGN="TOP">String</TD></TR>
+ * <TR>
+ * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Default: </TH>
+ * <TD VALIGN="TOP">"Arial, Helvetica, sans-serif"</TD></TR>
+ * <TR>
+ * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Required: </TH>
+ * <TD VALIGN="TOP">No</TD></TR>
+ * <TR>
+ * <TH VALIGN="TOP" ALIGN="RIGHT"><P ALIGN="RIGHT">Description: </TH>
+ * <TD VALIGN="TOP">Controls the default
+ * value used by the CSS engine for the font-family property
+ * when that property is unspecified.Specify the media to use with CSS.
+ * </TD></TR>
+ * </TABLE>
+ */
+ public static final TranscodingHints.Key KEY_DEFAULT_FONT_FAMILY
+ = new StringKey();
+
+ /**
* The alternate stylesheet key.
* <TABLE BORDER="0" CELLSPACING="0" CELLPADDING="1">
* <TR>
@@ -642,6 +677,16 @@
if (s != null) return s;
return super.getMedia();
+ }
+
+ /**
+ * Returns the default font family.
+ */
+ public String getDefaultFontFamily() {
+ String s = (String)hints.get(KEY_DEFAULT_FONT_FAMILY);
+ if (s != null) return s;
+
+ return super.getDefaultFontFamily();
}
/**
1.2 +27 -1 xml-batik/test-resources/org/apache/batik/transcoder/image/unitTesting.xml
Index: unitTesting.xml
===================================================================
RCS file: /home/cvs/xml-batik/test-resources/org/apache/batik/transcoder/image/unitTesting.xml,v
retrieving revision 1.1
retrieving revision 1.2
diff -u -r1.1 -r1.2
--- unitTesting.xml 30 Oct 2001 14:25:56 -0000 1.1
+++ unitTesting.xml 9 Sep 2002 13:02:07 -0000 1.2
@@ -409,6 +409,32 @@
</testGroup>
<!-- ================================================================== -->
+<!-- KEY_DEFAULT_FONT_FAMILY -->
+<!-- ================================================================== -->
+
+<testGroup id="transcoder.image.hints.fontFamily" class="org.apache.batik.transcoder.image.DefaultFontFamilyTest">
+
+<test id="transcoder.image.hints.defaultFontFamily.Arial">
+ <arg class="java.lang.String" value="samples/tests/spec/styling/defaultFontFamily.svg" />
+ <arg class="java.lang.String" value="test-references/samples/tests/spec/styling/defaultFontFamilyArial.png" />
+ <arg class="java.lang.String" value="Arial" />
+</test>
+
+<test id="transcoder.image.hints.defaultFontFamily.Times">
+ <arg class="java.lang.String" value="samples/tests/spec/styling/defaultFontFamily.svg" />
+ <arg class="java.lang.String" value="test-references/samples/tests/spec/styling/defaultFontFamilyTimes.png" />
+ <arg class="java.lang.String" value="Times" />
+</test>
+
+<test id="trancoder.image.hints.defaultFontFamily.TotoTimes">
+ <arg class="java.lang.String" value="samples/tests/spec/styling/defaultFontFamily.svg" />
+ <arg class="java.lang.String" value="test-references/samples/tests/spec/styling/defaultFontFamilyTimes.png" />
+ <arg class="java.lang.String" value="toto, Times" />
+</test>
+
+</testGroup>
+
+<!-- ================================================================== -->
<!-- KEY_ALTERNATE_STYLESHEET -->
<!-- ================================================================== -->
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org