All Downloads are FREE. Search and download functionalities are using the official Maven repository.

jogamp.opengl.util.pngj.chunks.PngChunkBKGD Maven / Gradle / Ivy

package jogamp.opengl.util.pngj.chunks;

import jogamp.opengl.util.pngj.ImageInfo;
import jogamp.opengl.util.pngj.PngHelperInternal;
import jogamp.opengl.util.pngj.PngjException;

/**
 * bKGD Chunk.
 * 

* see http://www.w3.org/TR/PNG/#11bKGD *

* this chunk structure depends on the image type */ public class PngChunkBKGD extends PngChunkSingle { public final static String ID = ChunkHelper.bKGD; // only one of these is meaningful private int gray; private int red, green, blue; private int paletteIndex; public PngChunkBKGD(ImageInfo info) { super(ChunkHelper.bKGD, info); } @Override public ChunkOrderingConstraint getOrderingConstraint() { return ChunkOrderingConstraint.AFTER_PLTE_BEFORE_IDAT; } @Override public ChunkRaw createRawChunk() { ChunkRaw c = null; if (imgInfo.greyscale) { c = createEmptyChunk(2, true); PngHelperInternal.writeInt2tobytes(gray, c.data, 0); } else if (imgInfo.indexed) { c = createEmptyChunk(1, true); c.data[0] = (byte) paletteIndex; } else { c = createEmptyChunk(6, true); PngHelperInternal.writeInt2tobytes(red, c.data, 0); PngHelperInternal.writeInt2tobytes(green, c.data, 0); PngHelperInternal.writeInt2tobytes(blue, c.data, 0); } return c; } @Override public void parseFromRaw(ChunkRaw c) { if (imgInfo.greyscale) { gray = PngHelperInternal.readInt2fromBytes(c.data, 0); } else if (imgInfo.indexed) { paletteIndex = (int) (c.data[0] & 0xff); } else { red = PngHelperInternal.readInt2fromBytes(c.data, 0); green = PngHelperInternal.readInt2fromBytes(c.data, 2); blue = PngHelperInternal.readInt2fromBytes(c.data, 4); } } @Override public void cloneDataFromRead(PngChunk other) { PngChunkBKGD otherx = (PngChunkBKGD) other; gray = otherx.gray; red = otherx.red; green = otherx.red; blue = otherx.red; paletteIndex = otherx.paletteIndex; } /** * Set gray value (0-255 if bitdept=8) * * @param gray */ public void setGray(int gray) { if (!imgInfo.greyscale) throw new PngjException("only gray images support this"); this.gray = gray; } public int getGray() { if (!imgInfo.greyscale) throw new PngjException("only gray images support this"); return gray; } /** * Set pallette index * */ public void setPaletteIndex(int i) { if (!imgInfo.indexed) throw new PngjException("only indexed (pallete) images support this"); this.paletteIndex = i; } public int getPaletteIndex() { if (!imgInfo.indexed) throw new PngjException("only indexed (pallete) images support this"); return paletteIndex; } /** * Set rgb values * */ public void setRGB(int r, int g, int b) { if (imgInfo.greyscale || imgInfo.indexed) throw new PngjException("only rgb or rgba images support this"); red = r; green = g; blue = b; } public int[] getRGB() { if (imgInfo.greyscale || imgInfo.indexed) throw new PngjException("only rgb or rgba images support this"); return new int[] { red, green, blue }; } }





© 2015 - 2024 Weber Informatics LLC | Privacy Policy