package pl.wroc.pwr.image.model; import pl.wroc.pwr.image.IYUVImage; import pl.wroc.pwr.imagechannel.IImageChannel; import pl.wroc.pwr.imagechannel.IPixel; public class YUVImage extends MultiChannelImage implements IYUVImage { /** * */ private static final long serialVersionUID = -6788311597909222224L; public static final int CHANNEL_Y = 0; public static final int CHANNEL_U = 1; public static final int CHANNEL_V = 2; public YUVImage( int sizeX, int sizeY ) { super( 3, sizeX, sizeY ); } public YUVImage( int[ ] size ) { this( size[ IPixel.X ], size[ IPixel.Y ] ); } public YUVImage(IImageChannel luminanceY, IImageChannel chrominanceU, IImageChannel chrominanceV) { super( new IImageChannel[ ]{ luminanceY, chrominanceU, chrominanceV } ); } public IImageChannel getLuminanceYChannel( ) { return this.getChannel( YUVImage.CHANNEL_Y ); } public IImageChannel getChrominanceUChannel( ) { return this.getChannel( YUVImage.CHANNEL_U ); } public IImageChannel getChrominanceVChannel( ) { return this.getChannel( YUVImage.CHANNEL_V ); } public void setLuminanceYChannel( IImageChannel channel ) { this.setChannel( channel, YUVImage.CHANNEL_Y ); } public void setChrominanceUChannel( IImageChannel channel ) { this.setChannel( channel, YUVImage.CHANNEL_U ); } public void setChrominanceVChannel( IImageChannel channel ) { this.setChannel( channel, YUVImage.CHANNEL_V ); } @Override public String getChannelName(int number) { switch (number) { case CHANNEL_Y: return "LuminanceY"; case CHANNEL_U: return "ChrominanceU"; case CHANNEL_V: return "ChrominanceV"; default: return null; } } }