/*
Licensed to the Apache Software Foundation (ASF) under one or more
contributor license agreements. See the NOTICE file distributed with
this work for additional information regarding copyright ownership.
The ASF licenses this file to You under the Apache License, Version 2.0
(the "License"); you may not use this file except in compliance with
the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*/
package org.apache.batik.svggen;
import java.awt.Color;
import java.awt.GradientPaint;
import java.awt.Paint;
import java.awt.TexturePaint;
import java.util.LinkedList;
import java.util.List;
import org.apache.batik.ext.awt.g2d.GraphicContext;
Utility class that converts a Paint object into an
SVG element.
Author: Christophe Jolif, Vincent Hardy See Also: Version: $Id: SVGPaint.java 1733416 2016-03-03 07:07:13Z gadams $
/**
* Utility class that converts a Paint object into an
* SVG element.
*
* @author <a href="mailto:cjolif@ilog.fr">Christophe Jolif</a>
* @author <a href="mailto:vincent.hardy@eng.sun.com">Vincent Hardy</a>
* @version $Id: SVGPaint.java 1733416 2016-03-03 07:07:13Z gadams $
* @see org.apache.batik.svggen.SVGLinearGradient
* @see org.apache.batik.svggen.SVGTexturePaint
*/
public class SVGPaint implements SVGConverter {
All GradientPaint convertions are handed to svgLinearGradient
/**
* All GradientPaint convertions are handed to svgLinearGradient
*/
private SVGLinearGradient svgLinearGradient;
All TexturePaint convertions are handed to svgTextureGradient
/**
* All TexturePaint convertions are handed to svgTextureGradient
*/
private SVGTexturePaint svgTexturePaint;
All Color convertions are handed to svgColor
/**
* All Color convertions are handed to svgColor
*/
private SVGColor svgColor;
All custom Paint convetions are handed to svgCustomPaint
/**
* All custom Paint convetions are handed to svgCustomPaint
*/
private SVGCustomPaint svgCustomPaint;
Used to generate DOM elements
/**
* Used to generate DOM elements
*/
private SVGGeneratorContext generatorContext;
Params: - generatorContext – the context.
/**
* @param generatorContext the context.
*/
public SVGPaint(SVGGeneratorContext generatorContext) {
this.svgLinearGradient = new SVGLinearGradient(generatorContext);
this.svgTexturePaint = new SVGTexturePaint(generatorContext);
this.svgCustomPaint = new SVGCustomPaint(generatorContext);
this.svgColor = new SVGColor(generatorContext);
this.generatorContext = generatorContext;
}
Returns: Set of Elements defining the Paints this
converter has processed since it was created
/**
* @return Set of Elements defining the Paints this
* converter has processed since it was created
*/
public List getDefinitionSet(){
List paintDefs = new LinkedList(svgLinearGradient.getDefinitionSet());
paintDefs.addAll(svgTexturePaint.getDefinitionSet());
paintDefs.addAll(svgCustomPaint.getDefinitionSet());
paintDefs.addAll(svgColor.getDefinitionSet());
return paintDefs;
}
public SVGTexturePaint getTexturePaintConverter(){
return svgTexturePaint;
}
public SVGLinearGradient getGradientPaintConverter(){
return svgLinearGradient;
}
public SVGCustomPaint getCustomPaintConverter(){
return svgCustomPaint;
}
public SVGColor getColorConverter(){
return svgColor;
}
Converts part or all of the input GraphicContext into
a set of attribute/value pairs and related definitions
Params: - gc – GraphicContext to be converted
See Also: Returns: descriptor of the attributes required to represent
some or all of the GraphicContext state, along
with the related definitions
/**
* Converts part or all of the input GraphicContext into
* a set of attribute/value pairs and related definitions
*
* @param gc GraphicContext to be converted
* @return descriptor of the attributes required to represent
* some or all of the GraphicContext state, along
* with the related definitions
* @see org.apache.batik.svggen.SVGDescriptor
*/
public SVGDescriptor toSVG(GraphicContext gc){
return toSVG(gc.getPaint());
}
Params: - paint – Paint to be converted to SVG
Returns: a descriptor of the corresponding SVG paint
/**
* @param paint Paint to be converted to SVG
* @return a descriptor of the corresponding SVG paint
*/
public SVGPaintDescriptor toSVG(Paint paint){
// we first try the extension handler because we may
// want to override the way a Paint is managed!
SVGPaintDescriptor paintDesc = svgCustomPaint.toSVG(paint);
if (paintDesc == null) {
if (paint instanceof Color)
paintDesc = SVGColor.toSVG((Color)paint, generatorContext);
else if (paint instanceof GradientPaint)
paintDesc = svgLinearGradient.toSVG((GradientPaint)paint);
else if (paint instanceof TexturePaint)
paintDesc = svgTexturePaint.toSVG((TexturePaint)paint);
}
return paintDesc;
}
}