001: /*
002:
003: Licensed to the Apache Software Foundation (ASF) under one or more
004: contributor license agreements. See the NOTICE file distributed with
005: this work for additional information regarding copyright ownership.
006: The ASF licenses this file to You under the Apache License, Version 2.0
007: (the "License"); you may not use this file except in compliance with
008: the License. You may obtain a copy of the License at
009:
010: http://www.apache.org/licenses/LICENSE-2.0
011:
012: Unless required by applicable law or agreed to in writing, software
013: distributed under the License is distributed on an "AS IS" BASIS,
014: WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
015: See the License for the specific language governing permissions and
016: limitations under the License.
017:
018: */
019:
020: package org.apache.batik.css.engine.value;
021:
022: import org.apache.batik.css.engine.CSSEngine;
023: import org.apache.batik.css.engine.CSSStylableElement;
024: import org.apache.batik.css.engine.StyleMap;
025: import org.w3c.css.sac.LexicalUnit;
026: import org.w3c.dom.DOMException;
027:
028: /**
029: * This interface is implemented by objects which manage the values associated
030: * with a property.
031: *
032: * @author <a href="mailto:stephane@hillion.org">Stephane Hillion</a>
033: * @version $Id: ValueManager.java 475685 2006-11-16 11:16:05Z cam $
034: */
035: public interface ValueManager {
036:
037: /**
038: * Returns the name of the property handled.
039: */
040: String getPropertyName();
041:
042: /**
043: * Whether the handled property is inherited or not.
044: */
045: boolean isInheritedProperty();
046:
047: /**
048: * Whether the handled property can be animated.
049: */
050: boolean isAnimatableProperty();
051:
052: /**
053: * Whether the handled property can be additively animated.
054: */
055: boolean isAdditiveProperty();
056:
057: /**
058: * Returns the type of value this manager handles. This should be
059: * one of the TYPE_* constants defined in
060: * {@link org.apache.batik.util.SVGTypes}.
061: */
062: int getPropertyType();
063:
064: /**
065: * Returns the default value for the handled property.
066: */
067: Value getDefaultValue();
068:
069: /**
070: * Creates a value from a lexical unit.
071: * @param lu The SAC lexical unit used to create the value.
072: * @param engine The calling CSSEngine.
073: */
074: Value createValue(LexicalUnit lu, CSSEngine engine)
075: throws DOMException;
076:
077: /**
078: * Creates and returns a new float value.
079: * @param unitType A unit code as defined above. The unit code can only
080: * be a float unit type
081: * @param floatValue The new float value.
082: */
083: Value createFloatValue(short unitType, float floatValue)
084: throws DOMException;
085:
086: /**
087: * Creates and returns a new string value.
088: * @param type A string code as defined in CSSPrimitiveValue. The string
089: * code can only be a string unit type.
090: * @param value The new string value.
091: * @param engine The CSS engine.
092: */
093: Value createStringValue(short type, String value, CSSEngine engine)
094: throws DOMException;
095:
096: /**
097: * Computes the given value.
098: * @param elt The owner of the value.
099: * @param pseudo The pseudo element.
100: * @param engine The CSSEngine.
101: * @param idx The property index in the engine.
102: * @param sm The computed style map.
103: * @param value The value to compute.
104: */
105: Value computeValue(CSSStylableElement elt, String pseudo,
106: CSSEngine engine, int idx, StyleMap sm, Value value);
107:
108: }
|