/* * 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 javax.imageio.metadata; import javax.imageio.ImageTypeSpecifier; import java.util.Locale; /** * The Interface IIOMetadataFormat is implemented by classes that describe the * rules and allowed elements for a metadata document tree. * * @since Android 1.0 */ public interface IIOMetadataFormat { /** * The CHILD_POLICY_EMPTY. */ int CHILD_POLICY_EMPTY = 0; /** * The CHILD_POLICY_ALL. */ int CHILD_POLICY_ALL = 1; /** * The CHILD_POLICY_SOME. */ int CHILD_POLICY_SOME = 2; /** * The CHILD_POLICY_CHOICE. */ int CHILD_POLICY_CHOICE = 3; /** * The CHILD_POLICY_SEQUENCE. */ int CHILD_POLICY_SEQUENCE = 4; /** * The CHILD_POLICY_REPEAT. */ int CHILD_POLICY_REPEAT = 5; /** * The maximum value for the child policy. */ int CHILD_POLICY_MAX = CHILD_POLICY_REPEAT; /** * The DATATYPE_STRING. */ int DATATYPE_STRING = 0; /** * The DATATYPE_BOOLEAN. */ int DATATYPE_BOOLEAN = 1; /** * The DATATYPE_INTEGER. */ int DATATYPE_INTEGER = 2; /** * The DATATYPE_FLOAT. */ int DATATYPE_FLOAT = 3; /** * The DATATYPE_DOUBLE. */ int DATATYPE_DOUBLE = 4; /** * The VALUE_NONE. */ int VALUE_NONE = 0; /** * The VALUE_ARBITRARY. */ int VALUE_ARBITRARY = 1; /** * The VALUE_RANGE. */ int VALUE_RANGE = 2; /** * The VALUE_RANGE_MIN_INCLUSIVE_MASK. */ int VALUE_RANGE_MIN_INCLUSIVE_MASK = 4; /** * The VALUE_RANGE_MAX_INCLUSIVE_MASK. */ int VALUE_RANGE_MAX_INCLUSIVE_MASK = 8; /** * The VALUE_ENUMERATION. */ int VALUE_ENUMERATION = 16; /** * The VALUE_LIST. */ int VALUE_LIST = 32; /** * The VALUE_RANGE_MIN_INCLUSIVE. */ int VALUE_RANGE_MIN_INCLUSIVE = VALUE_RANGE | VALUE_RANGE_MIN_INCLUSIVE_MASK; /** * The VALUE_RANGE_MAX_INCLUSIVE. */ int VALUE_RANGE_MAX_INCLUSIVE = VALUE_RANGE | VALUE_RANGE_MAX_INCLUSIVE_MASK; /** * The VALUE_RANGE_MIN_MAX_INCLUSIVE. */ int VALUE_RANGE_MIN_MAX_INCLUSIVE = VALUE_RANGE | VALUE_RANGE_MIN_INCLUSIVE_MASK | VALUE_RANGE_MAX_INCLUSIVE_MASK; /** * Tells whether the specified element is allowed for the specified image * type. * * @param elementName * the element name. * @param imageType * the image type. * @return true, if the specified element is allowed for the specified image * type. */ boolean canNodeAppear(String elementName, ImageTypeSpecifier imageType); /** * Gets data type of the specified attribute of the specified element. * * @param elementName * the element name. * @param attrName * the attribute name. * @return the attribute's data type. */ int getAttributeDataType(String elementName, String attrName); /** * Gets the default value of the specified attribute of the specified * element. * * @param elementName * the element name. * @param attrName * the attribute name. * @return the attribute's default value. */ String getAttributeDefaultValue(String elementName, String attrName); /** * Gets the user-friendly description of the attribute. * * @param elementName * the element name. * @param attrName * the attribute name. * @param locale * the locale giving the desired language for the description. * @return the attribute description. */ String getAttributeDescription(String elementName, String attrName, Locale locale); /** * Gets the attribute enumerations. * * @param elementName * the element name. * @param attrName * the attribute name. * @return the attribute enumerations. */ String[] getAttributeEnumerations(String elementName, String attrName); /** * Gets the maximum length of the attribute list. * * @param elementName * the element name. * @param attrName * the attribute name. * @return the maximum length of the attribute list. */ int getAttributeListMaxLength(String elementName, String attrName); /** * Gets the minimum length of the attribute list. * * @param elementName * the element name. * @param attrName * the attribute name. * @return the minimum length of the attribute list. */ int getAttributeListMinLength(String elementName, String attrName); /** * Gets the maximum value allowed for the attribute. * * @param elementName * the element name. * @param attrName * the attribute name. * @return the maximum value allowed for the attribute. */ String getAttributeMaxValue(String elementName, String attrName); /** * Gets the minimum value allowed for the attribute. * * @param elementName * the element name. * @param attrName * the attribute name. * @return the minimum value allowed for the attribute. */ String getAttributeMinValue(String elementName, String attrName); /** * Gets the attribute names allowed for the specified element. * * @param elementName * the element name. * @return the attribute names. */ String[] getAttributeNames(String elementName); /** * Gets the attribute value type. * * @param elementName * the element name. * @param attrName * the attribute name. * @return the attribute value type. */ int getAttributeValueType(String elementName, String attrName); /** * Checks whether the specified attribute is required for the specified * element. * * @param elementName * the element name. * @param attrName * the attribute name. * @return true, if the specified attribute is required for the specified * element. */ boolean isAttributeRequired(String elementName, String attrName); /** * Gets the names of the possible child elements for the given element. * * @param elementName * the element name. * @return the child names. */ String[] getChildNames(String elementName); /** * Gets the constant describing the element's child policy. * * @param elementName * the element name. * @return the child policy. */ int getChildPolicy(String elementName); /** * Gets the user-friendly description of the element. * * @param elementName * the element name. * @param locale * the locale giving the desired language for the description. * @return the element description. */ String getElementDescription(String elementName, Locale locale); /** * Gets the maximum number of children allowed for the element. * * @param elementName * the element name. * @return the maximum number of children allowed for the element. */ int getElementMaxChildren(String elementName); /** * Gets the minimum number of children allowed for the element. * * @param elementName * the element name. * @return the minimum number of children allowed for the element. */ int getElementMinChildren(String elementName); /** * Gets the maximum object array length allowed for the element. * * @param elementName * the element name. * @return the maximum object array length allowed for the element. */ int getObjectArrayMaxLength(String elementName); /** * Gets the minimum object array length allowed for the element. * * @param elementName * the element name. * @return the minimum object array length allowed for the element. */ int getObjectArrayMinLength(String elementName); /** * Gets the object class corresponding to the specified element. * * @param elementName * the element name. * @return the object class corresponding to the specified element. */ Class<?> getObjectClass(String elementName); /** * Gets the object default value for the element. * * @param elementName * the element name. * @return the object default value for the element. */ Object getObjectDefaultValue(String elementName); /** * Gets the object enumerations. * * @param elementName * the element name. * @return the object enumerations. */ Object[] getObjectEnumerations(String elementName); /** * Gets the maximum value allowed for the element's object. * * @param elementName * the element name. * @return the maximum value allowed for the element's object. */ Comparable<?> getObjectMaxValue(String elementName); /** * Gets the minimum value allowed for the element's object. * * @param elementName * the element name. * @return the minimum value allowed for the element's object. */ Comparable<?> getObjectMinValue(String elementName); /** * Gets the constant that indicates the type of the element's value. * * @param elementName * the element name. * @return the constant that indicates the type of the element's value. */ int getObjectValueType(String elementName); /** * Gets the name of the root element. * * @return the name of the root element. */ String getRootName(); }