/* * SVG Salamander * Copyright (c) 2004, Mark McKay * All rights reserved. * * Redistribution and use in source and binary forms, with or * without modification, are permitted provided that the following * conditions are met: * * - Redistributions of source code must retain the above * copyright notice, this list of conditions and the following * disclaimer. * - 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 THE COPYRIGHT HOLDERS AND 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 THE * COPYRIGHT HOLDER OR 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. * * Mark McKay can be contacted at mark@kitfox.com. Salamander and other * projects can be found at http://www.kitfox.com * * Created on March 18, 2004, 6:52 AM */ package com.kitfox.svg; import java.net.URI; import java.net.URL; import com.kitfox.svg.xml.StyleAttribute; /** * @author Mark McKay * @author <a href="mailto:mark@kitfox.com">Mark McKay</a> */ public class FilterEffects extends SVGElement { public static final String TAG_NAME = "filtereffects"; public static final int FP_SOURCE_GRAPHIC = 0; public static final int FP_SOURCE_ALPHA = 1; public static final int FP_BACKGROUND_IMAGE = 2; public static final int FP_BACKGROUND_ALPHA = 3; public static final int FP_FILL_PAINT = 4; public static final int FP_STROKE_PAINT = 5; public static final int FP_CUSTOM = 5; float x = 0f; float y = 0f; float width = 1f; float height = 1f; String result = "defaultFilterName"; URL href = null; /** * Creates a new instance of FillElement */ public FilterEffects() { } @Override public String getTagName() { return TAG_NAME; } /** * Called after the start element but before the end element to indicate * each child tag that has been processed */ @Override public void loaderAddChild(SVGLoaderHelper helper, SVGElement child) throws SVGElementException { super.loaderAddChild(helper, child); if (child instanceof FilterEffects) { // filterEffects.add(child); } } @Override protected void build() throws SVGException { super.build(); // StyleAttribute sty = new StyleAttribute(); // String strn; /* * if (getPres(sty.setName("filterUnits"))) { strn = * sty.getStringValue().toLowerCase(); if * (strn.equals("userspaceonuse")) filterUnits = FU_USER_SPACE_ON_USE; * else filterUnits = FU_OBJECT_BOUNDING_BOX; } * * if (getPres(sty.setName("primitiveUnits"))) { strn = * sty.getStringValue().toLowerCase(); if * (strn.equals("userspaceonuse")) primitiveUnits = * PU_USER_SPACE_ON_USE; else primitiveUnits = PU_OBJECT_BOUNDING_BOX; } * * if (getPres(sty.setName("x"))) x = sty.getFloatValue(); * * if (getPres(sty.setName("y"))) y = sty.getFloatValue(); * * if (getPres(sty.setName("width"))) width = sty.getFloatValue(); * * if (getPres(sty.setName("height"))) height = sty.getFloatValue(); * * try { if (getPres(sty.setName("xlink:href"))) { URI src = * sty.getURIValue(getXMLBase()); href = src.toURL(); } } catch * (Exception e) { throw new SVGException(e); } */ } public float getX() { return x; } public float getY() { return y; } public float getWidth() { return width; } public float getHeight() { return height; } @Override public boolean updateTime(double curTime) throws SVGException { // if (trackManager.getNumTracks() == 0) return false; // Get current values for parameters StyleAttribute sty = new StyleAttribute(); boolean stateChange = false; if (getPres(sty.setName("x"))) { float newVal = sty.getFloatValueWithUnits(); if (newVal != x) { x = newVal; stateChange = true; } } if (getPres(sty.setName("y"))) { float newVal = sty.getFloatValueWithUnits(); if (newVal != y) { y = newVal; stateChange = true; } } if (getPres(sty.setName("width"))) { float newVal = sty.getFloatValueWithUnits(); if (newVal != width) { width = newVal; stateChange = true; } } if (getPres(sty.setName("height"))) { float newVal = sty.getFloatValueWithUnits(); if (newVal != height) { height = newVal; stateChange = true; } } try { if (getPres(sty.setName("xlink:href"))) { URI src = sty.getURIValue(getXMLBase()); URL newVal = src.toURL(); if (!newVal.equals(href)) { href = newVal; stateChange = true; } } } catch (Exception e) { throw new SVGException(e); } /* * if (getPres(sty.setName("filterUnits"))) { int newVal; String strn = * sty.getStringValue().toLowerCase(); if * (strn.equals("userspaceonuse")) newVal = FU_USER_SPACE_ON_USE; else * newVal = FU_OBJECT_BOUNDING_BOX; if (newVal != filterUnits) { * filterUnits = newVal; stateChange = true; } } * * if (getPres(sty.setName("primitiveUnits"))) { int newVal; String strn * = sty.getStringValue().toLowerCase(); if * (strn.equals("userspaceonuse")) newVal = PU_USER_SPACE_ON_USE; else * newVal = PU_OBJECT_BOUNDING_BOX; if (newVal != filterUnits) { * primitiveUnits = newVal; stateChange = true; } } * */ return stateChange; } }