1
package org.helioviewer.viewmodel.imagedata;
4
import java.awt.image.BufferedImage;
5
import java.awt.image.DataBuffer;
6
import java.awt.image.DataBufferShort;
7
import java.awt.image.Raster;
9
import org.helioviewer.viewmodel.imageformat.ImageFormat;
10
import org.helioviewer.viewmodel.imageformat.StaticSingleChannelIntegralImageFormat;
11
import org.helioviewer.viewmodel.imagetransport.ImageTransport;
12
import org.helioviewer.viewmodel.imagetransport.StaticShort16ImageTransport;
14
public class SingleChannelShortImageData implements JavaBufferedImageData {
20
public SingleChannelShortImageData(int newWidth, int newHeight, int newBitDepth, short[] newPixelData) {
21
image = new BufferedImage(newWidth, newHeight, BufferedImage.TYPE_USHORT_GRAY);
22
DataBuffer dataBuffer = new DataBufferShort(newPixelData, newWidth * newHeight);
24
// create the appropriate bit mask
25
int mask = 0xffffffff;
26
mask = mask >>> (32 - newBitDepth);
28
Raster raster = Raster.createPackedRaster(dataBuffer, newWidth, newHeight,
29
newWidth, new int[] {mask}, new Point(0,0));
30
image.setData(raster);
31
format = new StaticSingleChannelIntegralImageFormat(newBitDepth);
34
public SingleChannelShortImageData(int newBitDepth, BufferedImage newImage) {
36
format = new StaticSingleChannelIntegralImageFormat(newBitDepth);
39
public BufferedImage getBufferedImage() {
43
public int getHeight() {
44
return image.getHeight();
47
public ImageFormat getImageFormat() {
51
public ImageTransport getImageTransport() {
52
short[] pixelData = ((DataBufferShort) image.getRaster().getDataBuffer()).getData();
53
return new StaticShort16ImageTransport(pixelData);
56
public int getWidth() {
57
return image.getWidth();