Class DDSImageWriter
- java.lang.Object
-
- javax.imageio.ImageWriter
-
- com.twelvemonkeys.imageio.ImageWriterBase
-
- com.twelvemonkeys.imageio.plugins.dds.DDSImageWriter
-
- All Implemented Interfaces:
javax.imageio.ImageTranscoder
class DDSImageWriter extends ImageWriterBase
ImageWriter implementation for Microsoft DirectDraw Surface (DDS) format.
-
-
Field Summary
Fields Modifier and Type Field Description private longheaderStartPosprivate java.awt.DimensionmipmapDimensionprivate SequenceSupportmipmapSequenceprivate DDSTypemipmapType-
Fields inherited from class com.twelvemonkeys.imageio.ImageWriterBase
imageOutput
-
-
Constructor Summary
Constructors Modifier Constructor Description protectedDDSImageWriter(javax.imageio.spi.ImageWriterSpi provider)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description booleancanWriteRasters()booleancanWriteSequence()javax.imageio.metadata.IIOMetadataconvertImageMetadata(javax.imageio.metadata.IIOMetadata inData, javax.imageio.ImageTypeSpecifier imageType, javax.imageio.ImageWriteParam param)voidendWriteSequence()private voidensureImageChannels(java.awt.image.Raster data)Checking if the image has 3 channels (RGB) or 4 channels (RGBA) and if image has 8 bits/channel.private voidensureTextureDimension(java.awt.image.Raster raster)Checking if an image can be evenly divided into blocks of 4x4, ideally a power of 2.javax.imageio.metadata.IIOMetadatagetDefaultImageMetadata(javax.imageio.ImageTypeSpecifier imageType, javax.imageio.ImageWriteParam param)DDSImageWriteParamgetDefaultWriteParam()private static java.awt.image.RastergetRaster(javax.imageio.IIOImage image)static voidmain(java.lang.String[] args)voidprepareWriteSequence(javax.imageio.metadata.IIOMetadata streamMetadata)protected voidresetMembers()private voidupdateHeader(int mipmapCount)voidwrite(javax.imageio.metadata.IIOMetadata streamMetadata, javax.imageio.IIOImage image, javax.imageio.ImageWriteParam param)private voidwriteDXT10Header(int dxgiFormat)private voidwriteFourCC(DDSType type, boolean writeDXT10)private voidwriteHeader(int width, int height, DDSType type, boolean writeDXT10)private voidwritePitchOrLinearSize(int height, int width, DDSType type)private voidwritePixelFormat(DDSType type, boolean writeDXT10)private voidwritePixelFormatFlags(DDSType type, boolean writeDXT10)private voidwriteRGBAData(DDSType type, boolean writeDXT10)voidwriteToSequence(javax.imageio.IIOImage image, javax.imageio.ImageWriteParam param)-
Methods inherited from class com.twelvemonkeys.imageio.ImageWriterBase
assertOutput, convertStreamMetadata, dispose, fakeAOI, fakeSubsampling, getDefaultStreamMetadata, getFormatName, getSourceRegion, reset, setOutput
-
Methods inherited from class javax.imageio.ImageWriter
abort, abortRequested, addIIOWriteProgressListener, addIIOWriteWarningListener, canInsertEmpty, canInsertImage, canRemoveImage, canReplaceImageMetadata, canReplacePixels, canReplaceStreamMetadata, canWriteEmpty, clearAbortRequest, endInsertEmpty, endReplacePixels, endWriteEmpty, getAvailableLocales, getLocale, getNumThumbnailsSupported, getOriginatingProvider, getOutput, getPreferredThumbnailSizes, prepareInsertEmpty, prepareReplacePixels, prepareWriteEmpty, processImageComplete, processImageProgress, processImageStarted, processThumbnailComplete, processThumbnailProgress, processThumbnailStarted, processWarningOccurred, processWarningOccurred, processWriteAborted, removeAllIIOWriteProgressListeners, removeAllIIOWriteWarningListeners, removeIIOWriteProgressListener, removeIIOWriteWarningListener, removeImage, replaceImageMetadata, replacePixels, replacePixels, replaceStreamMetadata, setLocale, write, write, writeInsert
-
-
-
-
Field Detail
-
mipmapSequence
private final SequenceSupport mipmapSequence
-
headerStartPos
private long headerStartPos
-
mipmapType
private DDSType mipmapType
-
mipmapDimension
private java.awt.Dimension mipmapDimension
-
-
Method Detail
-
getDefaultWriteParam
public DDSImageWriteParam getDefaultWriteParam()
- Overrides:
getDefaultWriteParamin classjavax.imageio.ImageWriter
-
resetMembers
protected void resetMembers()
- Overrides:
resetMembersin classImageWriterBase
-
canWriteRasters
public boolean canWriteRasters()
- Overrides:
canWriteRastersin classjavax.imageio.ImageWriter
-
canWriteSequence
public boolean canWriteSequence()
- Overrides:
canWriteSequencein classjavax.imageio.ImageWriter
-
prepareWriteSequence
public void prepareWriteSequence(javax.imageio.metadata.IIOMetadata streamMetadata) throws java.io.IOException- Overrides:
prepareWriteSequencein classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
endWriteSequence
public void endWriteSequence() throws java.io.IOException- Overrides:
endWriteSequencein classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
write
public void write(javax.imageio.metadata.IIOMetadata streamMetadata, javax.imageio.IIOImage image, javax.imageio.ImageWriteParam param) throws java.io.IOException- Specified by:
writein classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
writeToSequence
public void writeToSequence(javax.imageio.IIOImage image, javax.imageio.ImageWriteParam param) throws java.io.IOException- Overrides:
writeToSequencein classjavax.imageio.ImageWriter- Throws:
java.io.IOException
-
getRaster
private static java.awt.image.Raster getRaster(javax.imageio.IIOImage image) throws javax.imageio.IIOException- Throws:
javax.imageio.IIOException
-
ensureImageChannels
private void ensureImageChannels(java.awt.image.Raster data) throws javax.imageio.IIOExceptionChecking if the image has 3 channels (RGB) or 4 channels (RGBA) and if image has 8 bits/channel.- Throws:
javax.imageio.IIOException- See Also:
DDSImageWriterSpi.canEncodeImage(ImageTypeSpecifier)
-
ensureTextureDimension
private void ensureTextureDimension(java.awt.image.Raster raster) throws javax.imageio.IIOExceptionChecking if an image can be evenly divided into blocks of 4x4, ideally a power of 2. e.g. 16x16, 32x32, 512x128, 512x512, 1024x512, 1024x1024, 2048x1024...- Throws:
javax.imageio.IIOException
-
writeHeader
private void writeHeader(int width, int height, DDSType type, boolean writeDXT10) throws java.io.IOException- Throws:
java.io.IOException
-
updateHeader
private void updateHeader(int mipmapCount) throws java.io.IOException- Throws:
java.io.IOException
-
writePixelFormat
private void writePixelFormat(DDSType type, boolean writeDXT10) throws java.io.IOException
- Throws:
java.io.IOException
-
writeDXT10Header
private void writeDXT10Header(int dxgiFormat) throws java.io.IOException- Throws:
java.io.IOException
-
writeRGBAData
private void writeRGBAData(DDSType type, boolean writeDXT10) throws java.io.IOException
- Throws:
java.io.IOException
-
writeFourCC
private void writeFourCC(DDSType type, boolean writeDXT10) throws java.io.IOException
- Throws:
java.io.IOException
-
writePixelFormatFlags
private void writePixelFormatFlags(DDSType type, boolean writeDXT10) throws java.io.IOException
- Throws:
java.io.IOException
-
writePitchOrLinearSize
private void writePitchOrLinearSize(int height, int width, DDSType type) throws java.io.IOException- Throws:
java.io.IOException
-
getDefaultImageMetadata
public javax.imageio.metadata.IIOMetadata getDefaultImageMetadata(javax.imageio.ImageTypeSpecifier imageType, javax.imageio.ImageWriteParam param)- Specified by:
getDefaultImageMetadatain classjavax.imageio.ImageWriter
-
convertImageMetadata
public javax.imageio.metadata.IIOMetadata convertImageMetadata(javax.imageio.metadata.IIOMetadata inData, javax.imageio.ImageTypeSpecifier imageType, javax.imageio.ImageWriteParam param)- Specified by:
convertImageMetadatain interfacejavax.imageio.ImageTranscoder- Specified by:
convertImageMetadatain classjavax.imageio.ImageWriter
-
main
public static void main(java.lang.String[] args) throws java.io.IOException- Throws:
java.io.IOException
-
-