Subversion Repositories general

Compare Revisions

Ignore whitespace Rev 1267 → Rev 1268

/contrib/metadata-extractor/trunk/src/com/drew/metadata/jpeg/JpegDescriptor.java
0,0 → 1,88
/*
* This is public domain software - that is, you can do whatever you want
* with it, and include it software that is licensed under the GNU or the
* BSD license, or whatever other licence you choose, including proprietary
* closed source licenses. I do ask that you leave this header in tact.
*
* If you make modifications to this code that you think would benefit the
* wider community, please send me a copy and I'll post it on my site.
*
* If you make use of this code, I'd appreciate hearing about it.
* drew@drewnoakes.com
* Latest version of this software kept at
* http://drewnoakes.com/
*/
package com.drew.metadata.jpeg;
 
import com.drew.metadata.Directory;
import com.drew.metadata.MetadataException;
import com.drew.metadata.TagDescriptor;
 
/**
* Provides human-readable string versions of the tags stored in a JpegDirectory.
* Thanks to Darrell Silver (www.darrellsilver.com) for the initial version of this class.
*/
public class JpegDescriptor extends TagDescriptor
{
public JpegDescriptor(Directory directory)
{
super(directory);
}
 
public String getDescription(int tagType) throws MetadataException
{
switch (tagType)
{
case JpegDirectory.TAG_JPEG_COMPONENT_DATA_1:
return getComponentDataDescription(0);
case JpegDirectory.TAG_JPEG_COMPONENT_DATA_2:
return getComponentDataDescription(1);
case JpegDirectory.TAG_JPEG_COMPONENT_DATA_3:
return getComponentDataDescription(2);
case JpegDirectory.TAG_JPEG_COMPONENT_DATA_4:
return getComponentDataDescription(3);
case JpegDirectory.TAG_JPEG_DATA_PRECISION:
return getDataPrecisionDescription();
case JpegDirectory.TAG_JPEG_IMAGE_HEIGHT:
return getImageHeightDescription();
case JpegDirectory.TAG_JPEG_IMAGE_WIDTH:
return getImageWidthDescription();
}
 
return _directory.getString(tagType);
}
 
public String getImageWidthDescription()
{
return _directory.getString(JpegDirectory.TAG_JPEG_IMAGE_WIDTH) + " pixels";
}
 
public String getImageHeightDescription()
{
return _directory.getString(JpegDirectory.TAG_JPEG_IMAGE_HEIGHT) + " pixels";
}
 
public String getDataPrecisionDescription()
{
return _directory.getString(JpegDirectory.TAG_JPEG_DATA_PRECISION) + " bits";
}
 
public String getComponentDataDescription(int componentNumber) throws MetadataException
{
JpegComponent component = ((JpegDirectory)_directory).getComponent(componentNumber);
 
if (component==null)
throw new MetadataException("No Jpeg component exists with number " + componentNumber);
 
StringBuffer sb = new StringBuffer();
sb.append(component.getComponentName());
sb.append(" component: Quantization table ");
sb.append(component.getQuantizationTableNumber());
sb.append(", Sampling factors ");
sb.append(component.getHorizontalSamplingFactor());
sb.append(" horiz/");
sb.append(component.getVerticalSamplingFactor());
sb.append(" vert");
return sb.toString();
}
}