|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
*/ |
|
|
|
package com.sun.imageio.plugins.bmp; |
|
|
|
import java.util.Arrays; |
|
import javax.imageio.ImageTypeSpecifier; |
|
import javax.imageio.metadata.IIOMetadataFormat; |
|
import javax.imageio.metadata.IIOMetadataFormatImpl; |
|
|
|
public class BMPMetadataFormat extends IIOMetadataFormatImpl { |
|
|
|
private static IIOMetadataFormat instance = null; |
|
|
|
private BMPMetadataFormat() { |
|
super(BMPMetadata.nativeMetadataFormatName, |
|
CHILD_POLICY_SOME); |
|
|
|
|
|
addElement("ImageDescriptor", |
|
BMPMetadata.nativeMetadataFormatName, |
|
CHILD_POLICY_EMPTY); |
|
addAttribute("ImageDescriptor", "bmpVersion", |
|
DATATYPE_STRING, true, null); |
|
addAttribute("ImageDescriptor", "width", |
|
DATATYPE_INTEGER, true, null, |
|
"0", "65535", true, true); |
|
addAttribute("ImageDescriptor", "height", |
|
DATATYPE_INTEGER, true, null, |
|
"1", "65535", true, true); |
|
addAttribute("ImageDescriptor", "bitsPerPixel", |
|
DATATYPE_INTEGER, true, null, |
|
"1", "65535", true, true); |
|
addAttribute("ImageDescriptor", "compression", |
|
DATATYPE_INTEGER, false, null); |
|
addAttribute("ImageDescriptor", "imageSize", |
|
DATATYPE_INTEGER, true, null, |
|
"1", "65535", true, true); |
|
|
|
addElement("PixelsPerMeter", |
|
BMPMetadata.nativeMetadataFormatName, |
|
CHILD_POLICY_EMPTY); |
|
addAttribute("PixelsPerMeter", "X", |
|
DATATYPE_INTEGER, false, null, |
|
"1", "65535", true, true); |
|
addAttribute("PixelsPerMeter", "Y", |
|
DATATYPE_INTEGER, false, null, |
|
"1", "65535", true, true); |
|
|
|
addElement("ColorsUsed", |
|
BMPMetadata.nativeMetadataFormatName, |
|
CHILD_POLICY_EMPTY); |
|
addAttribute("ColorsUsed", "value", |
|
DATATYPE_INTEGER, true, null, |
|
"0", "65535", true, true); |
|
|
|
addElement("ColorsImportant", |
|
BMPMetadata.nativeMetadataFormatName, |
|
CHILD_POLICY_EMPTY); |
|
addAttribute("ColorsImportant", "value", |
|
DATATYPE_INTEGER, false, null, |
|
"0", "65535", true, true); |
|
|
|
addElement("BI_BITFIELDS_Mask", |
|
BMPMetadata.nativeMetadataFormatName, |
|
CHILD_POLICY_EMPTY); |
|
addAttribute("BI_BITFIELDS_Mask", "red", |
|
DATATYPE_INTEGER, false, null, |
|
"0", "65535", true, true); |
|
addAttribute("BI_BITFIELDS_Mask", "green", |
|
DATATYPE_INTEGER, false, null, |
|
"0", "65535", true, true); |
|
addAttribute("BI_BITFIELDS_Mask", "blue", |
|
DATATYPE_INTEGER, false, null, |
|
"0", "65535", true, true); |
|
|
|
addElement("ColorSpace", |
|
BMPMetadata.nativeMetadataFormatName, |
|
CHILD_POLICY_EMPTY); |
|
addAttribute("ColorSpace", "value", |
|
DATATYPE_INTEGER, false, null, |
|
"0", "65535", true, true); |
|
|
|
addElement("LCS_CALIBRATED_RGB", |
|
BMPMetadata.nativeMetadataFormatName, |
|
CHILD_POLICY_EMPTY); |
|
|
|
|
|
addAttribute("LCS_CALIBRATED_RGB", "redX", |
|
DATATYPE_DOUBLE, false, null, |
|
"0", "65535", true, true); |
|
addAttribute("LCS_CALIBRATED_RGB", "redY", |
|
DATATYPE_DOUBLE, false, null, |
|
"0", "65535", true, true); |
|
addAttribute("LCS_CALIBRATED_RGB", "redZ", |
|
DATATYPE_DOUBLE, false, null, |
|
"0", "65535", true, true); |
|
addAttribute("LCS_CALIBRATED_RGB", "greenX", |
|
DATATYPE_DOUBLE, false, null, |
|
"0", "65535", true, true); |
|
addAttribute("LCS_CALIBRATED_RGB", "greenY", |
|
DATATYPE_DOUBLE, false, null, |
|
"0", "65535", true, true); |
|
addAttribute("LCS_CALIBRATED_RGB", "greenZ", |
|
DATATYPE_DOUBLE, false, null, |
|
"0", "65535", true, true); |
|
addAttribute("LCS_CALIBRATED_RGB", "blueX", |
|
DATATYPE_DOUBLE, false, null, |
|
"0", "65535", true, true); |
|
addAttribute("LCS_CALIBRATED_RGB", "blueY", |
|
DATATYPE_DOUBLE, false, null, |
|
"0", "65535", true, true); |
|
addAttribute("LCS_CALIBRATED_RGB", "blueZ", |
|
DATATYPE_DOUBLE, false, null, |
|
"0", "65535", true, true); |
|
|
|
addElement("LCS_CALIBRATED_RGB_GAMMA", |
|
BMPMetadata.nativeMetadataFormatName, |
|
CHILD_POLICY_EMPTY); |
|
addAttribute("LCS_CALIBRATED_RGB_GAMMA","red", |
|
DATATYPE_INTEGER, false, null, |
|
"0", "65535", true, true); |
|
addAttribute("LCS_CALIBRATED_RGB_GAMMA","green", |
|
DATATYPE_INTEGER, false, null, |
|
"0", "65535", true, true); |
|
addAttribute("LCS_CALIBRATED_RGB_GAMMA","blue", |
|
DATATYPE_INTEGER, false, null, |
|
"0", "65535", true, true); |
|
|
|
addElement("Intent", |
|
BMPMetadata.nativeMetadataFormatName, |
|
CHILD_POLICY_EMPTY); |
|
addAttribute("Intent", "value", |
|
DATATYPE_INTEGER, false, null, |
|
"0", "65535", true, true); |
|
|
|
|
|
addElement("Palette", |
|
BMPMetadata.nativeMetadataFormatName, |
|
2, 256); |
|
addAttribute("Palette", "sizeOfPalette", |
|
DATATYPE_INTEGER, true, null); |
|
addBooleanAttribute("Palette", "sortFlag", |
|
false, false); |
|
|
|
|
|
addElement("PaletteEntry", "Palette", |
|
CHILD_POLICY_EMPTY); |
|
addAttribute("PaletteEntry", "index", |
|
DATATYPE_INTEGER, true, null, |
|
"0", "255", true, true); |
|
addAttribute("PaletteEntry", "red", |
|
DATATYPE_INTEGER, true, null, |
|
"0", "255", true, true); |
|
addAttribute("PaletteEntry", "green", |
|
DATATYPE_INTEGER, true, null, |
|
"0", "255", true, true); |
|
addAttribute("PaletteEntry", "blue", |
|
DATATYPE_INTEGER, true, null, |
|
"0", "255", true, true); |
|
|
|
|
|
|
|
addElement("CommentExtensions", |
|
BMPMetadata.nativeMetadataFormatName, |
|
1, Integer.MAX_VALUE); |
|
|
|
|
|
addElement("CommentExtension", "CommentExtensions", |
|
CHILD_POLICY_EMPTY); |
|
addAttribute("CommentExtension", "value", |
|
DATATYPE_STRING, true, null); |
|
} |
|
|
|
public boolean canNodeAppear(String elementName, |
|
ImageTypeSpecifier imageType) { |
|
return true; |
|
} |
|
|
|
public static synchronized IIOMetadataFormat getInstance() { |
|
if (instance == null) { |
|
instance = new BMPMetadataFormat(); |
|
} |
|
return instance; |
|
} |
|
} |