net.sf.latexdraw.parsers.svg.parsers
Class Graphics2D2SVG

java.lang.Object
  extended by java.awt.Graphics
      extended by java.awt.Graphics2D
          extended by net.sf.latexdraw.parsers.svg.parsers.Graphics2D2SVG

public class Graphics2D2SVG
extends java.awt.Graphics2D

This Graphics can be used to convert Java drawing (using Graphics2D) into SVG. Instead of the classical Java Graphics2D, this graphics can be given as argument to paint methods in order to create an SVG element.

This file is part of LaTeXDraw.
Copyright (c) 2005-2012 Arnaud BLOUIN

LaTeXDraw 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 of the License, or (at your option) any later version.

LaTeXDraw is distributed 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.

08/03/11

Version:
3.0
Author:
Arnaud BLOUIN

Field Summary
protected  java.awt.Color currentColour
          The current colour.
protected  java.awt.Stroke currentStroke
          The current stroke.
private  SVGTransformList currentTransforms
          The list of the current transformations.
protected  SVGDocument document
          The SVG document used to created SVG elements.
protected  SVGGElement element
          The generated SVG G element.
private  SVGPathElement lastPathPainted
          Corresponds to the last SVG path element created.
private  boolean lastPathPaintedFilled
          True if the last path was filled.
 
Constructor Summary
Graphics2D2SVG(SVGDocument document)
          Creates the converter.
 
Method Summary
 void addRenderingHints(java.util.Map<?,?> hints)
           
private  void addTransformation(SVGTransform transformation)
           
protected  void clearLastPath()
           
 void clearRect(int x, int y, int width, int height)
           
 void clip(java.awt.Shape s)
           
 void clipRect(int x, int y, int width, int height)
           
 void copyArea(int x, int y, int width, int height, int dx, int dy)
           
 java.awt.Graphics create()
           
 void dispose()
           
 void draw(java.awt.Shape sh)
           
 void drawArc(int x, int y, int width, int height, int startAngle, int arcAngle)
           
 void drawGlyphVector(java.awt.font.GlyphVector g, float x, float y)
           
 void drawImage(java.awt.image.BufferedImage img, java.awt.image.BufferedImageOp op, int x, int y)
           
 boolean drawImage(java.awt.Image img, java.awt.geom.AffineTransform xform, java.awt.image.ImageObserver obs)
           
 boolean drawImage(java.awt.Image img, int x, int y, java.awt.Color bgcolor, java.awt.image.ImageObserver observer)
           
 boolean drawImage(java.awt.Image img, int x, int y, java.awt.image.ImageObserver observer)
           
 boolean drawImage(java.awt.Image img, int x, int y, int width, int height, java.awt.Color bgcolor, java.awt.image.ImageObserver observer)
           
 boolean drawImage(java.awt.Image img, int x, int y, int width, int height, java.awt.image.ImageObserver observer)
           
 boolean drawImage(java.awt.Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, java.awt.Color bgcolor, java.awt.image.ImageObserver observer)
           
 boolean drawImage(java.awt.Image img, int dx1, int dy1, int dx2, int dy2, int sx1, int sy1, int sx2, int sy2, java.awt.image.ImageObserver observer)
           
 void drawLine(int x1, int y1, int x2, int y2)
           
 void drawOval(int x, int y, int width, int height)
           
 void drawPolygon(int[] xPoints, int[] yPoints, int nPoints)
           
 void drawPolyline(int[] xPoints, int[] yPoints, int nPoints)
           
 void drawRenderableImage(java.awt.image.renderable.RenderableImage img, java.awt.geom.AffineTransform xform)
           
 void drawRenderedImage(java.awt.image.RenderedImage img, java.awt.geom.AffineTransform xform)
           
 void drawRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
           
 void drawString(java.text.AttributedCharacterIterator iterator, float x, float y)
           
 void drawString(java.text.AttributedCharacterIterator iterator, int x, int y)
           
 void drawString(java.lang.String str, float x, float y)
           
 void drawString(java.lang.String str, int x, int y)
           
 void fill(java.awt.Shape sh)
           
 void fillArc(int x, int y, int width, int height, int startAngle, int arcAngle)
           
 void fillOval(int x, int y, int width, int height)
           
protected  void fillPaintShape(java.awt.Shape sh, boolean fill, boolean draw)
          Draws or/and fills the given shape in the SVG element.
 void fillPolygon(int[] xPoints, int[] yPoints, int nPoints)
           
 void fillRect(int x, int y, int width, int height)
           
 void fillRoundRect(int x, int y, int width, int height, int arcWidth, int arcHeight)
           
 java.awt.Color getBackground()
           
 java.awt.Shape getClip()
           
 java.awt.Rectangle getClipBounds()
           
 java.awt.Color getColor()
           
 java.awt.Composite getComposite()
           
 java.awt.GraphicsConfiguration getDeviceConfiguration()
           
 SVGGElement getElement()
           
 java.awt.Font getFont()
           
 java.awt.FontMetrics getFontMetrics(java.awt.Font f)
           
 java.awt.font.FontRenderContext getFontRenderContext()
           
 java.awt.Paint getPaint()
           
 java.lang.Object getRenderingHint(java.awt.RenderingHints.Key hintKey)
           
 java.awt.RenderingHints getRenderingHints()
           
 java.awt.Stroke getStroke()
           
 java.awt.geom.AffineTransform getTransform()
           
 boolean hit(java.awt.Rectangle rect, java.awt.Shape s, boolean onStroke)
           
 void rotate(double theta)
           
 void rotate(double theta, double x, double y)
           
 void scale(double sx, double sy)
           
 void setBackground(java.awt.Color color)
           
 void setClip(int x, int y, int width, int height)
           
 void setClip(java.awt.Shape clip)
           
 void setColor(java.awt.Color col)
           
 void setComposite(java.awt.Composite comp)
           
 void setFont(java.awt.Font font)
           
 void setPaint(java.awt.Paint paint)
           
 void setPaintMode()
           
 void setRenderingHint(java.awt.RenderingHints.Key hintKey, java.lang.Object hintValue)
           
 void setRenderingHints(java.util.Map<?,?> hints)
           
protected  void setShapeAttributes(SVGElement elt, boolean fill, boolean draw)
          Sets the current stroke, colour, etc. to the given SVG element.
protected  void setShapeDash(SVGElement elt, float[] dashes)
          Sets the dashes of the given SVG element.
protected  void setShapeLineCap(SVGElement elt, int lineCap)
          Sets the line cap of the given SVG element.
protected  void setShapeLineJoin(SVGElement elt, int lineJoin)
          Sets the line join of the given SVG element.
protected  void setShapeStroke(SVGElement elt)
          Sets the current stroke to the given SVG element.
 void setStroke(java.awt.Stroke stroke)
           
 void setTransform(java.awt.geom.AffineTransform tx)
           
 void setXORMode(java.awt.Color c1)
           
 void shear(double shx, double shy)
           
 void transform(java.awt.geom.AffineTransform tx)
           
 void translate(double tx, double ty)
           
 void translate(int x, int y)
           
 
Methods inherited from class java.awt.Graphics2D
draw3DRect, fill3DRect
 
Methods inherited from class java.awt.Graphics
create, drawBytes, drawChars, drawPolygon, drawRect, fillPolygon, finalize, getClipBounds, getClipRect, getFontMetrics, hitClip, toString
 
Methods inherited from class java.lang.Object
clone, equals, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

element

protected SVGGElement element
The generated SVG G element.


document

protected SVGDocument document
The SVG document used to created SVG elements.


currentColour

protected java.awt.Color currentColour
The current colour. Is null as the initialisation.


currentStroke

protected java.awt.Stroke currentStroke
The current stroke. Is null as the initialisation.


lastPathPainted

private SVGPathElement lastPathPainted
Corresponds to the last SVG path element created. Is used for optimisation.


lastPathPaintedFilled

private boolean lastPathPaintedFilled
True if the last path was filled. Painted otherwise. Is used for optimisation.


currentTransforms

private SVGTransformList currentTransforms
The list of the current transformations. Can be null.

Constructor Detail

Graphics2D2SVG

public Graphics2D2SVG(SVGDocument document)
Creates the converter.

Parameters:
document - The SVG document used to created SVG elements.
Since:
3.0
Method Detail

clearLastPath

protected void clearLastPath()

setShapeAttributes

protected void setShapeAttributes(SVGElement elt,
                                  boolean fill,
                                  boolean draw)
Sets the current stroke, colour, etc. to the given SVG element.

Parameters:
elt - The SVG element to set.
Since:
3.0

setShapeStroke

protected void setShapeStroke(SVGElement elt)
Sets the current stroke to the given SVG element.

Parameters:
elt - The SVG element to set.
Since:
3.0

setShapeDash

protected void setShapeDash(SVGElement elt,
                            float[] dashes)
Sets the dashes of the given SVG element.

Parameters:
elt - The element to set.
dashes - The dashes to set.
Since:
3.0

setShapeLineJoin

protected void setShapeLineJoin(SVGElement elt,
                                int lineJoin)
Sets the line join of the given SVG element.

Parameters:
elt - The element to set.
lineJoin - The Java line join.
Since:
3.0

setShapeLineCap

protected void setShapeLineCap(SVGElement elt,
                               int lineCap)
Sets the line cap of the given SVG element.

Parameters:
elt - The element to set.
lineCap - The Java line cap (line end in Java).
Since:
3.0

draw

public void draw(java.awt.Shape sh)
Specified by:
draw in class java.awt.Graphics2D

drawImage

public boolean drawImage(java.awt.Image img,
                         java.awt.geom.AffineTransform xform,
                         java.awt.image.ImageObserver obs)
Specified by:
drawImage in class java.awt.Graphics2D

drawImage

public void drawImage(java.awt.image.BufferedImage img,
                      java.awt.image.BufferedImageOp op,
                      int x,
                      int y)
Specified by:
drawImage in class java.awt.Graphics2D

drawRenderedImage

public void drawRenderedImage(java.awt.image.RenderedImage img,
                              java.awt.geom.AffineTransform xform)
Specified by:
drawRenderedImage in class java.awt.Graphics2D

drawRenderableImage

public void drawRenderableImage(java.awt.image.renderable.RenderableImage img,
                                java.awt.geom.AffineTransform xform)
Specified by:
drawRenderableImage in class java.awt.Graphics2D

drawString

public void drawString(java.lang.String str,
                       int x,
                       int y)
Specified by:
drawString in class java.awt.Graphics2D

drawString

public void drawString(java.lang.String str,
                       float x,
                       float y)
Specified by:
drawString in class java.awt.Graphics2D

drawString

public void drawString(java.text.AttributedCharacterIterator iterator,
                       int x,
                       int y)
Specified by:
drawString in class java.awt.Graphics2D

drawString

public void drawString(java.text.AttributedCharacterIterator iterator,
                       float x,
                       float y)
Specified by:
drawString in class java.awt.Graphics2D

drawGlyphVector

public void drawGlyphVector(java.awt.font.GlyphVector g,
                            float x,
                            float y)
Specified by:
drawGlyphVector in class java.awt.Graphics2D

fillPaintShape

protected void fillPaintShape(java.awt.Shape sh,
                              boolean fill,
                              boolean draw)
Draws or/and fills the given shape in the SVG element.

Parameters:
sh - The shape to draw or/and fill.
fill - True: the shape will be filled.
draw - True: the shape will be drawn.
Since:
3.0

fill

public void fill(java.awt.Shape sh)
Specified by:
fill in class java.awt.Graphics2D

hit

public boolean hit(java.awt.Rectangle rect,
                   java.awt.Shape s,
                   boolean onStroke)
Specified by:
hit in class java.awt.Graphics2D

getDeviceConfiguration

public java.awt.GraphicsConfiguration getDeviceConfiguration()
Specified by:
getDeviceConfiguration in class java.awt.Graphics2D

setComposite

public void setComposite(java.awt.Composite comp)
Specified by:
setComposite in class java.awt.Graphics2D

setPaint

public void setPaint(java.awt.Paint paint)
Specified by:
setPaint in class java.awt.Graphics2D

setStroke

public void setStroke(java.awt.Stroke stroke)
Specified by:
setStroke in class java.awt.Graphics2D

setRenderingHint

public void setRenderingHint(java.awt.RenderingHints.Key hintKey,
                             java.lang.Object hintValue)
Specified by:
setRenderingHint in class java.awt.Graphics2D

getRenderingHint

public java.lang.Object getRenderingHint(java.awt.RenderingHints.Key hintKey)
Specified by:
getRenderingHint in class java.awt.Graphics2D

setRenderingHints

public void setRenderingHints(java.util.Map<?,?> hints)
Specified by:
setRenderingHints in class java.awt.Graphics2D

addRenderingHints

public void addRenderingHints(java.util.Map<?,?> hints)
Specified by:
addRenderingHints in class java.awt.Graphics2D

getRenderingHints

public java.awt.RenderingHints getRenderingHints()
Specified by:
getRenderingHints in class java.awt.Graphics2D

translate

public void translate(int x,
                      int y)
Specified by:
translate in class java.awt.Graphics2D

translate

public void translate(double tx,
                      double ty)
Specified by:
translate in class java.awt.Graphics2D

rotate

public void rotate(double theta)
Specified by:
rotate in class java.awt.Graphics2D

addTransformation

private void addTransformation(SVGTransform transformation)

rotate

public void rotate(double theta,
                   double x,
                   double y)
Specified by:
rotate in class java.awt.Graphics2D

scale

public void scale(double sx,
                  double sy)
Specified by:
scale in class java.awt.Graphics2D

shear

public void shear(double shx,
                  double shy)
Specified by:
shear in class java.awt.Graphics2D

transform

public void transform(java.awt.geom.AffineTransform tx)
Specified by:
transform in class java.awt.Graphics2D

setTransform

public void setTransform(java.awt.geom.AffineTransform tx)
Specified by:
setTransform in class java.awt.Graphics2D

getTransform

public java.awt.geom.AffineTransform getTransform()
Specified by:
getTransform in class java.awt.Graphics2D

getPaint

public java.awt.Paint getPaint()
Specified by:
getPaint in class java.awt.Graphics2D

getComposite

public java.awt.Composite getComposite()
Specified by:
getComposite in class java.awt.Graphics2D

setBackground

public void setBackground(java.awt.Color color)
Specified by:
setBackground in class java.awt.Graphics2D

getBackground

public java.awt.Color getBackground()
Specified by:
getBackground in class java.awt.Graphics2D

getStroke

public java.awt.Stroke getStroke()
Specified by:
getStroke in class java.awt.Graphics2D

clip

public void clip(java.awt.Shape s)
Specified by:
clip in class java.awt.Graphics2D

getFontRenderContext

public java.awt.font.FontRenderContext getFontRenderContext()
Specified by:
getFontRenderContext in class java.awt.Graphics2D

create

public java.awt.Graphics create()
Specified by:
create in class java.awt.Graphics

getColor

public java.awt.Color getColor()
Specified by:
getColor in class java.awt.Graphics

setColor

public void setColor(java.awt.Color col)
Specified by:
setColor in class java.awt.Graphics

setPaintMode

public void setPaintMode()
Specified by:
setPaintMode in class java.awt.Graphics

setXORMode

public void setXORMode(java.awt.Color c1)
Specified by:
setXORMode in class java.awt.Graphics

getFont

public java.awt.Font getFont()
Specified by:
getFont in class java.awt.Graphics

setFont

public void setFont(java.awt.Font font)
Specified by:
setFont in class java.awt.Graphics

getFontMetrics

public java.awt.FontMetrics getFontMetrics(java.awt.Font f)
Specified by:
getFontMetrics in class java.awt.Graphics

getClipBounds

public java.awt.Rectangle getClipBounds()
Specified by:
getClipBounds in class java.awt.Graphics

clipRect

public void clipRect(int x,
                     int y,
                     int width,
                     int height)
Specified by:
clipRect in class java.awt.Graphics

setClip

public void setClip(int x,
                    int y,
                    int width,
                    int height)
Specified by:
setClip in class java.awt.Graphics

getClip

public java.awt.Shape getClip()
Specified by:
getClip in class java.awt.Graphics

setClip

public void setClip(java.awt.Shape clip)
Specified by:
setClip in class java.awt.Graphics

copyArea

public void copyArea(int x,
                     int y,
                     int width,
                     int height,
                     int dx,
                     int dy)
Specified by:
copyArea in class java.awt.Graphics

drawLine

public void drawLine(int x1,
                     int y1,
                     int x2,
                     int y2)
Specified by:
drawLine in class java.awt.Graphics

fillRect

public void fillRect(int x,
                     int y,
                     int width,
                     int height)
Specified by:
fillRect in class java.awt.Graphics

clearRect

public void clearRect(int x,
                      int y,
                      int width,
                      int height)
Specified by:
clearRect in class java.awt.Graphics

drawRoundRect

public void drawRoundRect(int x,
                          int y,
                          int width,
                          int height,
                          int arcWidth,
                          int arcHeight)
Specified by:
drawRoundRect in class java.awt.Graphics

fillRoundRect

public void fillRoundRect(int x,
                          int y,
                          int width,
                          int height,
                          int arcWidth,
                          int arcHeight)
Specified by:
fillRoundRect in class java.awt.Graphics

drawOval

public void drawOval(int x,
                     int y,
                     int width,
                     int height)
Specified by:
drawOval in class java.awt.Graphics

fillOval

public void fillOval(int x,
                     int y,
                     int width,
                     int height)
Specified by:
fillOval in class java.awt.Graphics

drawArc

public void drawArc(int x,
                    int y,
                    int width,
                    int height,
                    int startAngle,
                    int arcAngle)
Specified by:
drawArc in class java.awt.Graphics

fillArc

public void fillArc(int x,
                    int y,
                    int width,
                    int height,
                    int startAngle,
                    int arcAngle)
Specified by:
fillArc in class java.awt.Graphics

drawPolyline

public void drawPolyline(int[] xPoints,
                         int[] yPoints,
                         int nPoints)
Specified by:
drawPolyline in class java.awt.Graphics

drawPolygon

public void drawPolygon(int[] xPoints,
                        int[] yPoints,
                        int nPoints)
Specified by:
drawPolygon in class java.awt.Graphics

fillPolygon

public void fillPolygon(int[] xPoints,
                        int[] yPoints,
                        int nPoints)
Specified by:
fillPolygon in class java.awt.Graphics

drawImage

public boolean drawImage(java.awt.Image img,
                         int x,
                         int y,
                         java.awt.image.ImageObserver observer)
Specified by:
drawImage in class java.awt.Graphics

drawImage

public boolean drawImage(java.awt.Image img,
                         int x,
                         int y,
                         int width,
                         int height,
                         java.awt.image.ImageObserver observer)
Specified by:
drawImage in class java.awt.Graphics

drawImage

public boolean drawImage(java.awt.Image img,
                         int x,
                         int y,
                         java.awt.Color bgcolor,
                         java.awt.image.ImageObserver observer)
Specified by:
drawImage in class java.awt.Graphics

drawImage

public boolean drawImage(java.awt.Image img,
                         int x,
                         int y,
                         int width,
                         int height,
                         java.awt.Color bgcolor,
                         java.awt.image.ImageObserver observer)
Specified by:
drawImage in class java.awt.Graphics

drawImage

public boolean drawImage(java.awt.Image img,
                         int dx1,
                         int dy1,
                         int dx2,
                         int dy2,
                         int sx1,
                         int sy1,
                         int sx2,
                         int sy2,
                         java.awt.image.ImageObserver observer)
Specified by:
drawImage in class java.awt.Graphics

drawImage

public boolean drawImage(java.awt.Image img,
                         int dx1,
                         int dy1,
                         int dx2,
                         int dy2,
                         int sx1,
                         int sy1,
                         int sx2,
                         int sy2,
                         java.awt.Color bgcolor,
                         java.awt.image.ImageObserver observer)
Specified by:
drawImage in class java.awt.Graphics

dispose

public void dispose()
Specified by:
dispose in class java.awt.Graphics

getElement

public SVGGElement getElement()
Returns:
the created SVG element after the painting.
Since:
3.0