/*
* 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();
}