Save This Page
Home » openjdk-7 » javax » imageio » metadata » [javadoc | source]
    1   /*
    2    *  Licensed to the Apache Software Foundation (ASF) under one or more
    3    *  contributor license agreements.  See the NOTICE file distributed with
    4    *  this work for additional information regarding copyright ownership.
    5    *  The ASF licenses this file to You under the Apache License, Version 2.0
    6    *  (the "License"); you may not use this file except in compliance with
    7    *  the License.  You may obtain a copy of the License at
    8    *
    9    *     http://www.apache.org/licenses/LICENSE-2.0
   10    *
   11    *  Unless required by applicable law or agreed to in writing, software
   12    *  distributed under the License is distributed on an "AS IS" BASIS,
   13    *  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   14    *  See the License for the specific language governing permissions and
   15    *  limitations under the License.
   16    */
   17   
   18   
   19   package javax.imageio.metadata;
   20   
   21   import javax.imageio.ImageTypeSpecifier;
   22   import java.util.ArrayList;
   23   
   24   class IIOStandardMetadataFormat  extends IIOMetadataFormatImpl {
   25       public IIOStandardMetadataFormat() {
   26           super(standardMetadataFormatName, CHILD_POLICY_SOME);
   27           buildDTD();
   28       }
   29   
   30       @Override
   31       public boolean canNodeAppear(String elementName, ImageTypeSpecifier imageType) {
   32           return true;
   33       }
   34   
   35       private void buildDTD() {
   36           // CHROMA
   37           addElement("Chroma", standardMetadataFormatName, CHILD_POLICY_SOME);
   38   
   39           addElement("ColorSpaceType", "Chroma", CHILD_POLICY_EMPTY);
   40   
   41           ArrayList<String> values = new ArrayList<String>(27);
   42           values.add("XYZ");
   43           values.add("Lab");
   44           values.add("Luv");
   45           values.add("YCbCr");
   46           values.add("Yxy");
   47           values.add("YCCK");
   48           values.add("PhotoYCC");
   49           values.add("RGB");
   50           values.add("GRAY");
   51           values.add("HSV");
   52           values.add("HLS");
   53           values.add("CMYK");
   54           values.add("CMY");
   55           values.add("2CLR");
   56           values.add("3CLR");
   57           values.add("4CLR");
   58           values.add("5CLR");
   59           values.add("6CLR");
   60           values.add("7CLR");
   61           values.add("8CLR");
   62           values.add("9CLR");
   63           values.add("ACLR");
   64           values.add("BCLR");
   65           values.add("CCLR");
   66           values.add("DCLR");
   67           values.add("ECLR");
   68           values.add("FCLR");
   69           addAttribute("ColorSpaceType", "name", DATATYPE_STRING, true, null, values);
   70   
   71           addElement("NumChannels", "Chroma", CHILD_POLICY_EMPTY);
   72           addAttribute("NumChannels", "value", DATATYPE_INTEGER, true, 0, Integer.MAX_VALUE); // list - why?
   73   
   74           addElement("Gamma", "Chroma", CHILD_POLICY_EMPTY);
   75           addAttribute("Gamma", "value", DATATYPE_FLOAT, true, null);
   76   
   77           addElement("BlackIsZero", "Chroma", CHILD_POLICY_EMPTY);
   78           addBooleanAttribute("BlackIsZero", "value", true, true);
   79   
   80           addElement("Palette", "Chroma", 0, Integer.MAX_VALUE); // CHILD_POLICY_REPEAT
   81           addElement("PaletteEntry", "Palette", CHILD_POLICY_EMPTY);
   82           addAttribute("PaletteEntry", "index", DATATYPE_INTEGER, true, null);
   83           addAttribute("PaletteEntry", "red", DATATYPE_INTEGER, true, null);
   84           addAttribute("PaletteEntry", "green", DATATYPE_INTEGER, true, null);
   85           addAttribute("PaletteEntry", "blue", DATATYPE_INTEGER, true, null);
   86           addAttribute("PaletteEntry", "alpha", DATATYPE_INTEGER, false, "255");
   87   
   88           addElement("BackgroundIndex", "Chroma", CHILD_POLICY_EMPTY);
   89           addAttribute("BackgroundIndex", "value", DATATYPE_INTEGER, true, null);
   90   
   91           addElement("BackgroundColor", "Chroma", CHILD_POLICY_EMPTY);
   92           addAttribute("BackgroundColor", "red", DATATYPE_INTEGER, true, null);
   93           addAttribute("BackgroundColor", "green", DATATYPE_INTEGER, true, null);
   94           addAttribute("BackgroundColor", "blue", DATATYPE_INTEGER, true, null);
   95   
   96           // COMPRESSION
   97           addElement("Compression", standardMetadataFormatName, CHILD_POLICY_SOME);
   98   
   99           addElement("CompressionTypeName", "Compression", CHILD_POLICY_EMPTY);
  100           addAttribute("CompressionTypeName", "value", DATATYPE_STRING, true, null);
  101   
  102           addElement("Lossless", "Compression", CHILD_POLICY_EMPTY);
  103           addBooleanAttribute("Lossless", "value", true, true);
  104   
  105           addElement("NumProgressiveScans", "Compression", CHILD_POLICY_EMPTY);
  106           addAttribute("NumProgressiveScans", "value", DATATYPE_INTEGER, true, null);
  107   
  108           addElement("BitRate", "Compression", CHILD_POLICY_EMPTY);
  109           addAttribute("BitRate", "value", DATATYPE_FLOAT, true, null);
  110   
  111           // DATA
  112           addElement("Data", standardMetadataFormatName, CHILD_POLICY_SOME);
  113   
  114           addElement("PlanarConfiguration", "Data", CHILD_POLICY_EMPTY);
  115           values = new ArrayList<String>(4);
  116           values.add("PixelInterleaved");
  117           values.add("PlaneInterleaved");
  118           values.add("LineInterleaved");
  119           values.add("TileInterleaved");
  120           addAttribute("PlanarConfiguration", "value", DATATYPE_STRING, true, null, values);
  121   
  122           addElement("SampleFormat", "Data", CHILD_POLICY_EMPTY);
  123           values = new ArrayList<String>(4);
  124           values.add("SignedIntegral");
  125           values.add("UnsignedIntegral");
  126           values.add("Real");
  127           values.add("Index");
  128           addAttribute("SampleFormat", "value", DATATYPE_STRING, true, null, values);
  129   
  130           addElement("BitsPerSample", "Data", CHILD_POLICY_EMPTY);
  131           addAttribute("BitsPerSample", "value", DATATYPE_INTEGER, true, 1, Integer.MAX_VALUE); // list
  132   
  133           addElement("SignificantBitsPerSample", "Data", CHILD_POLICY_EMPTY);
  134           addAttribute(
  135                   "SignificantBitsPerSample", "value",
  136                   DATATYPE_INTEGER, true, 1, Integer.MAX_VALUE
  137           ); // list
  138   
  139           addElement("SampleMSB", "Data", CHILD_POLICY_EMPTY);
  140           addAttribute("SampleMSB", "value", DATATYPE_INTEGER, true, 1, Integer.MAX_VALUE); // list
  141   
  142           // DIMENSION
  143           addElement("Dimension", standardMetadataFormatName, CHILD_POLICY_SOME);
  144   
  145           addElement("PixelAspectRatio", "Dimension", CHILD_POLICY_EMPTY);
  146           addAttribute("PixelAspectRatio", "value", DATATYPE_FLOAT, true, null);
  147   
  148           addElement("ImageOrientation", "Dimension", CHILD_POLICY_EMPTY);
  149           values = new ArrayList<String>(8);
  150           values.add("Normal");
  151           values.add("Rotate90");
  152           values.add("Rotate180");
  153           values.add("Rotate270");
  154           values.add("FlipH");
  155           values.add("FlipV");
  156           values.add("FlipHRotate90");
  157           values.add("FlipVRotate90");
  158           addAttribute("ImageOrientation", "value", DATATYPE_STRING, true, null, values);
  159   
  160           addElement("HorizontalPixelSize", "Dimension", CHILD_POLICY_EMPTY);
  161           addAttribute("HorizontalPixelSize", "value", DATATYPE_FLOAT, true, null);
  162   
  163           addElement("VerticalPixelSize", "Dimension", CHILD_POLICY_EMPTY);
  164           addAttribute("VerticalPixelSize", "value", DATATYPE_FLOAT, true, null);
  165   
  166           addElement("HorizontalPhysicalPixelSpacing", "Dimension", CHILD_POLICY_EMPTY);
  167           addAttribute("HorizontalPhysicalPixelSpacing", "value", DATATYPE_FLOAT, true, null);
  168   
  169           addElement("VerticalPhysicalPixelSpacing", "Dimension", CHILD_POLICY_EMPTY);
  170           addAttribute("VerticalPhysicalPixelSpacing", "value", DATATYPE_FLOAT, true, null);
  171   
  172           addElement("HorizontalPosition", "Dimension", CHILD_POLICY_EMPTY);
  173           addAttribute("HorizontalPosition", "value", DATATYPE_FLOAT, true, null);
  174   
  175           addElement("VerticalPosition", "Dimension", CHILD_POLICY_EMPTY);
  176           addAttribute("VerticalPosition", "value", DATATYPE_FLOAT, true, null);
  177   
  178           addElement("HorizontalPixelOffset", "Dimension", CHILD_POLICY_EMPTY);
  179           addAttribute("HorizontalPixelOffset", "value", DATATYPE_INTEGER, true, null);
  180   
  181           addElement("VerticalPixelOffset", "Dimension", CHILD_POLICY_EMPTY);
  182           addAttribute("VerticalPixelOffset", "value", DATATYPE_INTEGER, true, null);
  183   
  184           addElement("HorizontalScreenSize", "Dimension", CHILD_POLICY_EMPTY);
  185           addAttribute("HorizontalScreenSize", "value", DATATYPE_INTEGER, true, null);
  186   
  187           addElement("VerticalScreenSize", "Dimension", CHILD_POLICY_EMPTY);
  188           addAttribute("VerticalScreenSize", "value", DATATYPE_INTEGER, true, null);
  189   
  190           // DOCUMENT
  191           addElement("Document", standardMetadataFormatName, CHILD_POLICY_SOME);
  192   
  193           addElement("FormatVersion", "Document", CHILD_POLICY_EMPTY);
  194           addAttribute("FormatVersion", "value", DATATYPE_STRING, true, null);
  195   
  196           addElement("SubimageInterpretation", "Document", CHILD_POLICY_EMPTY);
  197           values = new ArrayList<String>(14);
  198           values.add("Standalone");
  199           values.add("SinglePage");
  200           values.add("FullResolution");
  201           values.add("ReducedResolution");
  202           values.add("PyramidLayer");
  203           values.add("Preview");
  204           values.add("VolumeSlice");
  205           values.add("ObjectView");
  206           values.add("Panorama");
  207           values.add("AnimationFrame");
  208           values.add("TransparencyMask");
  209           values.add("CompositingLayer");
  210           values.add("SpectralSlice");
  211           values.add("Unknown");
  212           addAttribute("SubimageInterpretation", "value", DATATYPE_STRING, true, null, values);
  213   
  214           addElement("ImageCreationTime", "Document", CHILD_POLICY_EMPTY);
  215           addAttribute("ImageCreationTime", "year", DATATYPE_INTEGER, true, null);
  216           addAttribute(
  217                   "ImageCreationTime", "month",
  218                   DATATYPE_INTEGER, true, null, "1", "12", true, true
  219           );
  220           addAttribute(
  221                   "ImageCreationTime", "day",
  222                   DATATYPE_INTEGER, true, null, "1", "31", true, true
  223           );
  224           addAttribute(
  225                   "ImageCreationTime", "hour",
  226                   DATATYPE_INTEGER, false, "0", "0", "23", true, true
  227           );
  228           addAttribute(
  229                   "ImageCreationTime", "minute",
  230                   DATATYPE_INTEGER, false, "0", "0", "59", true, true
  231           );
  232           addAttribute(
  233                   "ImageCreationTime", "second",
  234                   DATATYPE_INTEGER, false, "0", "0", "60", true, true
  235           );
  236   
  237           addElement("ImageModificationTime", "Document", CHILD_POLICY_EMPTY);
  238           addAttribute("ImageModificationTime", "year", DATATYPE_INTEGER, true, null);
  239           addAttribute(
  240                   "ImageModificationTime", "month",
  241                   DATATYPE_INTEGER, true, null, "1", "12", true, true
  242           );
  243           addAttribute(
  244                   "ImageModificationTime", "day",
  245                   DATATYPE_INTEGER, true, null, "1", "31", true, true
  246           );
  247           addAttribute(
  248                   "ImageModificationTime", "hour",
  249                   DATATYPE_INTEGER, false, "0", "0", "23", true, true
  250           );
  251           addAttribute(
  252                   "ImageModificationTime", "minute",
  253                   DATATYPE_INTEGER, false, "0", "0", "59", true, true
  254           );
  255           addAttribute(
  256                   "ImageModificationTime", "second",
  257                   DATATYPE_INTEGER, false, "0", "0", "60", true, true
  258           );
  259   
  260           // TEXT
  261           addElement("Text", standardMetadataFormatName, 0, Integer.MAX_VALUE); // CHILD_POLICY_REPEAT
  262   
  263           addElement("TextEntry", "Text", CHILD_POLICY_EMPTY);
  264           addAttribute("TextEntry", "keyword", DATATYPE_STRING, false, null);
  265           addAttribute("TextEntry", "value", DATATYPE_STRING, true, null);
  266           addAttribute("TextEntry", "language", DATATYPE_STRING, false, null);
  267           addAttribute("TextEntry", "encoding", DATATYPE_STRING, false, null);
  268           values = new ArrayList<String>(5);
  269           values.add("none");
  270           values.add("lzw");
  271           values.add("zip");
  272           values.add("bzip");
  273           values.add("other");
  274           addAttribute("TextEntry", "compression", DATATYPE_STRING, false, "none", values);
  275   
  276           // TRANSPARENCY
  277           addElement("Transparency", standardMetadataFormatName, CHILD_POLICY_SOME);
  278   
  279           addElement("Alpha", "Transparency", CHILD_POLICY_EMPTY);
  280           values = new ArrayList<String>(3);
  281           values.add("none");
  282           values.add("premultiplied");
  283           values.add("nonpremultiplied");
  284           addAttribute("Alpha", "value", DATATYPE_STRING, false, "none", values);
  285   
  286           addElement("TransparentIndex", "Transparency", CHILD_POLICY_EMPTY);
  287           addAttribute("TransparentIndex", "value", DATATYPE_INTEGER, true, null);
  288   
  289           addElement("TransparentColor", "Transparency", CHILD_POLICY_EMPTY);
  290           addAttribute("TransparentColor", "value", DATATYPE_INTEGER, true, 0, Integer.MAX_VALUE);
  291   
  292           addElement("TileTransparencies", "Transparency", 0, Integer.MAX_VALUE); // CHILD_POLICY_REPEAT
  293   
  294           addElement("TransparentTile", "TileTransparencies", CHILD_POLICY_EMPTY);
  295           addAttribute("TransparentTile", "x", DATATYPE_INTEGER, true, null);
  296           addAttribute("TransparentTile", "y", DATATYPE_INTEGER, true, null);
  297   
  298           addElement("TileOpacities", "Transparency", 0, Integer.MAX_VALUE); // CHILD_POLICY_REPEAT
  299   
  300           addElement("OpaqueTile", "TileOpacities", CHILD_POLICY_EMPTY);
  301           addAttribute("OpaqueTile", "x", DATATYPE_INTEGER, true, null);
  302           addAttribute("OpaqueTile", "y", DATATYPE_INTEGER, true, null);
  303       }
  304   }
  305   

Save This Page
Home » openjdk-7 » javax » imageio » metadata » [javadoc | source]