Package net.sourceforge.jiu.codecs

# Class RASCodec

java.lang.Object
net.sourceforge.jiu.ops.Operation
net.sourceforge.jiu.codecs.ImageCodec
net.sourceforge.jiu.codecs.RASCodec

public class RASCodec extends ImageCodec
A codec to read and write Sun Raster (RAS) image files. The typical file extension for this format is `.ras`.

### Usage example

This code snippet demonstrate how to read a RAS file.

     RASCodec codec = new RASCodec();
     codec.setFile("image.ras", CodecMode.LOAD);
     codec.process();
     PixelImage loadedImage = codec.getImage();

### Supported file types when reading

Only uncompressed RAS files are read. Only 8 bit (gray and paletted) and 24 bit are supported when reading.

### Supported image types when writing

Only `Paletted8Image` / uncompressed is supported when writing.

### Bounds

The bounds concept of ImageCodec is supported so that you can load or save only part of an image.

### File format documentation

This file format is documented as a man page `rasterfile(5)` on Sun Unix systems. That documentation can also be found online, e.g. at http://www.doc.ic.ac.uk/~mac/manuals/sunos-manual-pages/sunos4/usr/man/man5/rasterfile.5.html. A web search for rasterfile(5) brings up other places as well.

Author:
  Marco Schmidt

## Field Summary

Fields
Modifier and Type
Field
Description
`private int`
`bytesPerRow`
`private static final int`
`COMPRESSION_NONE`
`private int`
`depth`
`private int`
`height`
`private DataInput`
`in`
`private int`
`length`
`private int`
`mapLength`
`private int`
`mapType`
`private int`
`numColors`
`private DataOutput`
`out`
`private int`
`paddingBytes`
`private Palette`
`palette`
`private static final int`
`RAS_HEADER_SIZE`
`private static final int`
`RAS_MAGIC`
`private int`
`type`
`private int`
`width`

## Constructor Summary

Constructors
Constructor
Description
`RASCodec()`

## Method Summary

Modifier and Type
Method
Description
`String`
`getFormatName()`
Returns the name of the file format supported by this codec.
`String[]`
`getMimeTypes()`
Return the MIME (Multipurpose Internet Mail Extensions) type strings for this format, or `null` if none are available.
`boolean`
`isLoadingSupported()`
Returns if this codec is able to load images in the file format supported by this codec.
`boolean`
`isSavingSupported()`
Returns if this codec is able to save images in the file format supported by this codec.
`private void`
`load()`
Loads an image from an RAS input stream.
`void`
`process()`
This method does the actual work of the operation.
`private void`
`readHeader()`
`private IntegerImage`
`readImage()`
`private Palette`
`readPalette()`
`private void`
`save()`
`private void`
`saveData(Paletted8Image image)`
`private void`
`saveHeader(PixelImage image)`
`private void`
`savePalette(Palette palette)`
`String`
`suggestFileExtension(PixelImage image)`
Attempts to suggest a filename extension.

### Methods inherited from class net.sourceforge.jiu.codecs.ImageCodec

`appendComment, checkBounds, checkImageResolution, close, getBoundsHeight, getBoundsWidth, getBoundsX1, getBoundsX2, getBoundsY1, getBoundsY2, getComment, getDataInput, getDataOutput, getDpiX, getDpiY, getFileExtensions, getImage, getImageIndex, getInputAsDataInput, getInputStream, getMode, getNumComments, getOutputAsDataOutput, getOutputStream, getRandomAccessFile, hasBounds, initModeFromIOObjects, isRowRequired, isTileRequired, removeAllComments, removeBounds, setBounds, setBoundsIfNecessary, setDataInput, setDataOutput, setDpi, setFile, setFile, setImage, setImageIndex, setInputStream, setOutputStream, setRandomAccessFile`

### Methods inherited from class net.sourceforge.jiu.ops.Operation

`addProgressListener, addProgressListeners, getAbort, removeProgressListener, setAbort, setProgress, setProgress`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

## Field Details

### RAS_MAGIC

private static final int RAS_MAGIC

See Also:
  - Constant Field Values

### COMPRESSION_NONE

private static final int COMPRESSION_NONE

See Also:
  - Constant Field Values

### RAS_HEADER_SIZE

private static final int RAS_HEADER_SIZE

See Also:
  - Constant Field Values

### width

private int width

### height

private int height

### depth

private int depth

### length

private int length

### type

private int type

### mapType

private int mapType

### mapLength

private int mapLength

### bytesPerRow

private int bytesPerRow

### paddingBytes

private int paddingBytes

### numColors

private int numColors

### in

private DataInput in

### out

private DataOutput out

### palette

private Palette palette

## Constructor Details

### RASCodec

public RASCodec()

## Method Details

### getFormatName

public String getFormatName()
Description copied from class: `ImageCodec`
Returns the name of the file format supported by this codec. All classes extending `ImageCodec` must override this method. When overriding, leave out any words in a particular language so that this format name can be understood by everyone. Usually it is enough to return the format creator plus a typical abbreviation, e.g. `Microsoft BMP` or `Portable Anymap (PNM)`.

Specified by:
  `getFormatName` in class `ImageCodec`
Returns:
  name of the file format supported by this codec

### getMimeTypes

public String[] getMimeTypes()
Description copied from class: `ImageCodec`
Return the MIME (Multipurpose Internet Mail Extensions) type strings for this format, or `null` if none are available.

Specified by:
  `getMimeTypes` in class `ImageCodec`
Returns:
  MIME type strings or null

### isLoadingSupported

public boolean isLoadingSupported()
Description copied from class: `ImageCodec`
Returns if this codec is able to load images in the file format supported by this codec. If `true` is returned this does not necessarily mean that all files in this format can be read, but at least some.

Specified by:
  `isLoadingSupported` in class `ImageCodec`
Returns:
  if loading is supported

### isSavingSupported

public boolean isSavingSupported()
Description copied from class: `ImageCodec`
Returns if this codec is able to save images in the file format supported by this codec. If `true` is returned this does not necessarily mean that all types files in this format can be written, but at least some.

Specified by:
  `isSavingSupported` in class `ImageCodec`
Returns:
  if saving is supported

### load

private void load() throws IOException, OperationFailedException
Loads an image from an RAS input stream. It is assumed that a stream was given to this codec using `ImageCodec.setInputStream(InputStream)`.

Throws:
  `InvalidFileStructureException` - if the input stream is corrupt
  `IOException` - if there were problems reading from the input stream
  `UnsupportedTypeException` - if an unsupported flavor of the RAS format is encountered
  `WrongFileFormatException` - if this is not a valid RAS stream
  `OperationFailedException`

### process

public void process() throws OperationFailedException
Description copied from class: `Operation`
This method does the actual work of the operation. It must be called after all parameters have been given to the operation object.

Overrides:
  `process` in class `Operation`
Throws:
  `OperationFailedException`

### readHeader

private void readHeader() throws InvalidFileStructureException, UnsupportedTypeException, WrongFileFormatException, WrongParameterException, IOException

Throws:
  `InvalidFileStructureException`
  `UnsupportedTypeException`
  `WrongFileFormatException`
  `WrongParameterException`
  `IOException`

### readImage

private IntegerImage readImage() throws InvalidFileStructureException, IOException

Throws:
  `InvalidFileStructureException`
  `IOException`

### readPalette

private Palette readPalette() throws InvalidFileStructureException, IOException

Throws:
  `InvalidFileStructureException`
  `IOException`

### save

private void save() throws IOException, UnsupportedTypeException, WrongParameterException

Throws:
  `IOException`
  `UnsupportedTypeException`
  `WrongParameterException`

### saveData

private void saveData(Paletted8Image image) throws IOException

Throws:
  `IOException`

### saveHeader

private void saveHeader(PixelImage image) throws IOException, UnsupportedTypeException, WrongParameterException

Throws:
  `IOException`
  `UnsupportedTypeException`
  `WrongParameterException`

### savePalette

private void savePalette(Palette palette) throws IOException

Throws:
  `IOException`

### suggestFileExtension

public String suggestFileExtension(PixelImage image)
Description copied from class: `ImageCodec`
Attempts to suggest a filename extension. The type of the argument image will be taken into consideration, although this will be necessary for some file formats only (as an example, PNM has different extensions for different image types, see `PNMCodec`). This default implementation always returns `null`.

Overrides:
  `suggestFileExtension` in class `ImageCodec`
Parameters:
  `image` - the image that is to be written to a file
Returns:
  the file extension, including a leading dot, or `null` if no file extension can be recommended