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 2001/09/18 12:47:57 UTC
cvs commit: xml-batik/sources/org/apache/batik/svggen SVGEllipse.java SVGGraphics2D.java SVGRectangle.java
vhardy 01/09/18 03:47:57
Modified: sources/org/apache/batik/apps/svgbrowser
JSVGViewerFrame.java
sources/org/apache/batik/svggen SVGEllipse.java
SVGGraphics2D.java SVGRectangle.java
Log:
Fixed bugs #929 and #1574.
Revision Changes Path
1.49 +4 -3 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.48
retrieving revision 1.49
diff -u -r1.48 -r1.49
--- JSVGViewerFrame.java 2001/09/10 15:23:33 1.48
+++ JSVGViewerFrame.java 2001/09/18 10:47:57 1.49
@@ -138,7 +138,7 @@
* This class represents a SVG viewer swing frame.
*
* @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
- * @version $Id: JSVGViewerFrame.java,v 1.48 2001/09/10 15:23:33 tkormann Exp $
+ * @version $Id: JSVGViewerFrame.java,v 1.49 2001/09/18 10:47:57 vhardy Exp $
*/
public class JSVGViewerFrame
extends JFrame
@@ -812,7 +812,8 @@
public PrintAction() {}
public void actionPerformed(ActionEvent e) {
if (svgDocument != null) {
- final SVGDocument doc = svgDocument;
+ // final SVGDocument doc = svgDocument;
+ final String docURI = svgCanvas.getURI();
new Thread() {
public void run(){
//
@@ -837,7 +838,7 @@
//
// Do transcoding now
//
- pt.transcode(new TranscoderInput(doc), null);
+ pt.transcode(new TranscoderInput(docURI), null);
//
// Print
1.6 +42 -15 xml-batik/sources/org/apache/batik/svggen/SVGEllipse.java
Index: SVGEllipse.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/svggen/SVGEllipse.java,v
retrieving revision 1.5
retrieving revision 1.6
diff -u -r1.5 -r1.6
--- SVGEllipse.java 2001/03/21 14:35:59 1.5
+++ SVGEllipse.java 2001/09/18 10:47:57 1.6
@@ -19,20 +19,31 @@
* a corresponding SVG element, i.e., a circle or an ellipse.
*
* @author <a href="mailto:vincent.hardy@eng.sun.com">Vincent Hardy</a>
- * @version $Id: SVGEllipse.java,v 1.5 2001/03/21 14:35:59 cjolif Exp $
+ * @version $Id: SVGEllipse.java,v 1.6 2001/09/18 10:47:57 vhardy Exp $
*/
public class SVGEllipse extends SVGGraphicObjectConverter {
/**
+ * Line converter used for degenerate cases
+ */
+ private SVGLine svgLine;
+
+ /**
* @param generatorContext used to build Elements
*/
public SVGEllipse(SVGGeneratorContext generatorContext) {
super(generatorContext);
+
+ svgLine = new SVGLine(generatorContext);
}
/**
* @param ellipse the Ellipse2D object to be converted
*/
public Element toSVG(Ellipse2D ellipse) {
+ if(ellipse.getWidth() < 0 || ellipse.getHeight() < 0){
+ return null;
+ }
+
if(ellipse.getWidth() == ellipse.getHeight())
return toSVGCircle(ellipse);
else
@@ -61,19 +72,35 @@
* @param ellipse the Ellipse2D object to be converted to an ellipse
*/
private Element toSVGEllipse(Ellipse2D ellipse){
- Element svgCircle =
- generatorContext.domFactory.createElementNS(SVG_NAMESPACE_URI,
- SVG_ELLIPSE_TAG);
- svgCircle.setAttributeNS(null, SVG_CX_ATTRIBUTE,
- doubleString(ellipse.getX() +
- ellipse.getWidth()/2));
- svgCircle.setAttributeNS(null, SVG_CY_ATTRIBUTE,
- doubleString(ellipse.getY() +
- ellipse.getHeight()/2));
- svgCircle.setAttributeNS(null, SVG_RX_ATTRIBUTE,
- doubleString(ellipse.getWidth()/2));
- svgCircle.setAttributeNS(null, SVG_RY_ATTRIBUTE,
- doubleString(ellipse.getHeight()/2));
- return svgCircle;
+ if(ellipse.getWidth() > 0 && ellipse.getHeight() > 0){
+ Element svgCircle =
+ generatorContext.domFactory.createElementNS(SVG_NAMESPACE_URI,
+ SVG_ELLIPSE_TAG);
+ svgCircle.setAttributeNS(null, SVG_CX_ATTRIBUTE,
+ doubleString(ellipse.getX() +
+ ellipse.getWidth()/2));
+ svgCircle.setAttributeNS(null, SVG_CY_ATTRIBUTE,
+ doubleString(ellipse.getY() +
+ ellipse.getHeight()/2));
+ svgCircle.setAttributeNS(null, SVG_RX_ATTRIBUTE,
+ doubleString(ellipse.getWidth()/2));
+ svgCircle.setAttributeNS(null, SVG_RY_ATTRIBUTE,
+ doubleString(ellipse.getHeight()/2));
+ return svgCircle;
+ }
+ else if(ellipse.getWidth() == 0 && ellipse.getHeight() > 0){
+ // Degenerate to a line
+ Line2D line = new Line2D.Double(ellipse.getX(), ellipse.getY(), ellipse.getX(),
+ ellipse.getY() + ellipse.getHeight());
+ return svgLine.toSVG(line);
+ }
+ else if(ellipse.getWidth() > 0 && ellipse.getHeight() == 0){
+ // Degenerate to a line
+ Line2D line = new Line2D.Double(ellipse.getX(), ellipse.getY(),
+ ellipse.getX() + ellipse.getWidth(),
+ ellipse.getY());
+ return svgLine.toSVG(line);
+ }
+ return null;
}
}
1.22 +3 -8 xml-batik/sources/org/apache/batik/svggen/SVGGraphics2D.java
Index: SVGGraphics2D.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/svggen/SVGGraphics2D.java,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -r1.21 -r1.22
--- SVGGraphics2D.java 2001/08/29 12:47:08 1.21
+++ SVGGraphics2D.java 2001/09/18 10:47:57 1.22
@@ -44,7 +44,7 @@
*
*
* @author <a href="mailto:vincent.hardy@eng.sun.com">Vincent Hardy</a>
- * @version $Id: SVGGraphics2D.java,v 1.21 2001/08/29 12:47:08 cjolif Exp $
+ * @version $Id: SVGGraphics2D.java,v 1.22 2001/09/18 10:47:57 vhardy Exp $
* @see org.apache.batik.ext.awt.g2d.GraphicContext
* @see org.apache.batik.svggen.DOMTreeManager
* @see org.apache.batik.svggen.DOMGroupManager
@@ -103,8 +103,7 @@
/**
* SVG Canvas size
*/
- private Dimension svgCanvasSize =
- new Dimension(Integer.MAX_VALUE, Integer.MAX_VALUE);
+ private Dimension svgCanvasSize;
/**
* Used to create proper font metrics
@@ -126,13 +125,9 @@
}
/**
- * @param SVG Canvas size
+ * @param SVG Canvas size. May be null (equivalent to 100%, 100%)
*/
public final void setSVGCanvasSize(Dimension svgCanvasSize) {
- if (svgCanvasSize == null)
- generatorCtx.errorHandler.
- handleError(new SVGGraphics2DRuntimeException(ERR_CANVAS_SIZE_NULL));
-
this.svgCanvasSize = new Dimension(svgCanvasSize);
}
1.7 +47 -16 xml-batik/sources/org/apache/batik/svggen/SVGRectangle.java
Index: SVGRectangle.java
===================================================================
RCS file: /home/cvs/xml-batik/sources/org/apache/batik/svggen/SVGRectangle.java,v
retrieving revision 1.6
retrieving revision 1.7
diff -u -r1.6 -r1.7
--- SVGRectangle.java 2001/03/21 14:36:20 1.6
+++ SVGRectangle.java 2001/09/18 10:47:57 1.7
@@ -19,14 +19,20 @@
* object into an SVG element.
*
* @author <a href="mailto:vincent.hardy@eng.sun.com">Vincent Hardy</a>
- * @version $Id: SVGRectangle.java,v 1.6 2001/03/21 14:36:20 cjolif Exp $
+ * @version $Id: SVGRectangle.java,v 1.7 2001/09/18 10:47:57 vhardy Exp $
*/
public class SVGRectangle extends SVGGraphicObjectConverter {
/**
+ * Line converter used for degenerate cases
+ */
+ private SVGLine svgLine;
+
+ /**
* @param generatorContext used to build Elements
*/
public SVGRectangle(SVGGeneratorContext generatorContext) {
super(generatorContext);
+ svgLine = new SVGLine(generatorContext);
}
/**
@@ -38,14 +44,20 @@
/**
+ * In the Java 2D API, arc width/height are used
+ * as absolute values.
+ *
* @param rect rectangle object to convert to SVG
*/
public Element toSVG(RoundRectangle2D rect) {
Element svgRect = toSVG((RectangularShape)rect);
- svgRect.setAttributeNS(null, SVG_RX_ATTRIBUTE,
- doubleString(rect.getArcWidth()/2));
- svgRect.setAttributeNS(null, SVG_RY_ATTRIBUTE,
- doubleString(rect.getArcHeight()/2));
+ if(svgRect != null && svgRect.getTagName() == SVG_RECT_TAG){
+ svgRect.setAttributeNS(null, SVG_RX_ATTRIBUTE,
+ doubleString(Math.abs(rect.getArcWidth()/2)));
+ svgRect.setAttributeNS(null, SVG_RY_ATTRIBUTE,
+ doubleString(Math.abs(rect.getArcHeight()/2)));
+ }
+
return svgRect;
}
@@ -54,16 +66,35 @@
* @param rect rectangle object to convert to SVG
*/
private Element toSVG(RectangularShape rect) {
- Element svgRect =
- generatorContext.domFactory.createElementNS(SVG_NAMESPACE_URI,
- SVG_RECT_TAG);
- svgRect.setAttributeNS(null, SVG_X_ATTRIBUTE, doubleString(rect.getX()));
- svgRect.setAttributeNS(null, SVG_Y_ATTRIBUTE, doubleString(rect.getY()));
- svgRect.setAttributeNS(null, SVG_WIDTH_ATTRIBUTE,
- doubleString(rect.getWidth()));
- svgRect.setAttributeNS(null, SVG_HEIGHT_ATTRIBUTE,
- doubleString(rect.getHeight()));
-
- return svgRect;
+ if(rect.getWidth() > 0 && rect.getHeight() > 0){
+ Element svgRect =
+ generatorContext.domFactory.createElementNS(SVG_NAMESPACE_URI,
+ SVG_RECT_TAG);
+ svgRect.setAttributeNS(null, SVG_X_ATTRIBUTE, doubleString(rect.getX()));
+ svgRect.setAttributeNS(null, SVG_Y_ATTRIBUTE, doubleString(rect.getY()));
+ svgRect.setAttributeNS(null, SVG_WIDTH_ATTRIBUTE,
+ doubleString(rect.getWidth()));
+ svgRect.setAttributeNS(null, SVG_HEIGHT_ATTRIBUTE,
+ doubleString(rect.getHeight()));
+
+ return svgRect;
+ }
+ else{
+ // Handle degenerate cases
+ if(rect.getWidth() == 0 && rect.getHeight() > 0){
+ // Degenerate to a line
+ Line2D line = new Line2D.Double(rect.getX(), rect.getY(), rect.getX(),
+ rect.getY() + rect.getHeight());
+ return svgLine.toSVG(line);
+ }
+ else if(rect.getWidth() > 0 && rect.getHeight() == 0){
+ // Degenerate to a line
+ Line2D line = new Line2D.Double(rect.getX(), rect.getY(),
+ rect.getX() + rect.getWidth(),
+ rect.getY());
+ return svgLine.toSVG(line);
+ }
+ return null;
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: batik-dev-unsubscribe@xml.apache.org
For additional commands, e-mail: batik-dev-help@xml.apache.org