/*
* Copyright 2014-16 Skynav, Inc. All rights reserved.
*
* Redistribution and use in source and binary forms, with or without
* modification, are permitted provided that the following conditions are met:
*
* 1. Redistributions of source code must retain the above copyright notice,
* this list of conditions and the following disclaimer.
*
* 2. Redistributions in binary form must reproduce the above copyright notice,
* this list of conditions and the following disclaimer in the documentation
* and/or other materials provided with the distribution.
*
* THIS SOFTWARE IS PROVIDED BY SKYNAV, INC. AND ITS CONTRIBUTORS “AS IS” AND ANY
* EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
* WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
* DISCLAIMED. IN NO EVENT SHALL SKYNAV, INC. OR ITS CONTRIBUTORS BE LIABLE FOR
* ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
* DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR
* SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER
* CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
* OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
package com.skynav.ttpe.render.svg;
import java.util.List;
import java.util.Map;
import java.util.Set;
import javax.xml.namespace.QName;
import org.w3c.dom.Document;
import com.skynav.ttpe.geometry.Extent;
import com.skynav.ttpe.render.AbstractDocumentFrame;
import com.skynav.ttpe.render.FrameResource;
import com.skynav.xml.helpers.XML;
public class SVGDocumentFrame extends AbstractDocumentFrame {
private static final String NAMESPACE = "http://www.w3.org/2000/svg";
private static final String NAMESPACE_XLINK = "http://www.w3.org/1999/xlink";
// element name constants
public static final QName svgSVGEltName = new QName(NAMESPACE, "svg");
public static final QName svgGroupEltName = new QName(NAMESPACE, "g");
public static final QName svgImageEltName = new QName(NAMESPACE, "image");
public static final QName svgRectEltName = new QName(NAMESPACE, "rect");
public static final QName svgTextEltName = new QName(NAMESPACE, "text");
public static final QName svgPathEltName = new QName(NAMESPACE, "path");
// attribute name constants
public static final QName classAttrName = new QName("", "class");
public static final QName dAttrName = new QName("", "d");
public static final QName dxAttrName = new QName("", "dx");
public static final QName dyAttrName = new QName("", "dy");
public static final QName fillAttrName = new QName("", "fill");
public static final QName fontFamilyAttrName = new QName("", "font-family");
public static final QName fontSizeAttrName = new QName("", "font-size");
public static final QName fontStyleAttrName = new QName("", "font-style");
public static final QName fontWeightAttrName = new QName("", "font-weight");
public static final QName heightAttrName = new QName("", "height");
public static final QName idAttrName = new QName("", "id");
public static final QName opacityAttrName = new QName("", "opacity");
public static final QName preserveAspectRatioAttrName = new QName("", "preserveAspectRatio");
public static final QName strokeAttrName = new QName("", "stroke");
public static final QName strokeWidthAttrName = new QName("", "stroke-width");
public static final QName transformAttrName = new QName("", "transform");
public static final QName viewBoxAttrName = new QName("", "viewBox");
public static final QName widthAttrName = new QName("", "width");
public static final QName writingModeAttrName = new QName("", "writing-mode");
public static final QName xAttrName = new QName("", "x");
public static final QName xlinkHrefAttrName = new QName(NAMESPACE_XLINK, "href");
public static final QName yAttrName = new QName("", "y");
// namespace prefixes
static final Map<String, String> prefixes;
static {
prefixes = new java.util.HashMap<String,String>();
prefixes.put(XML.xmlNamespace, "xml");
prefixes.put(XML.xmlnsNamespace, "xmlns");
prefixes.put(NAMESPACE, "");
prefixes.put(NAMESPACE_XLINK, "xlink");
}
// serialization exclusions
private static Set<QName> startTagIndentExclusions;
static {
startTagIndentExclusions = new java.util.HashSet<QName>();
startTagIndentExclusions.add(svgTextEltName);
}
private List<FrameResource> resources;
private List<SVGFrameRegion> regions;
public SVGDocumentFrame(double begin, double end, Extent extent, Document d, List<FrameResource> resources, List<SVGFrameRegion> regions) {
super(begin, end, extent, d);
this.regions = regions;
this.resources = resources;
}
@Override
public boolean hasResources() {
return (resources != null) && !resources.isEmpty();
}
@Override
public List<FrameResource> getResources() {
return resources;
}
@Override
public Map<String, String> getPrefixes() {
return prefixes;
}
@Override
public Set<QName> getStartExclusions() {
return startTagIndentExclusions;
}
public List<SVGFrameRegion> getRegions() {
return regions;
}
}