/*
* This program is free software; you can redistribute it and/or modify it under the
* terms of the GNU Lesser General Public License, version 2.1 as published by the Free Software
* Foundation.
*
* You should have received a copy of the GNU Lesser General Public License along with this
* program; if not, you can obtain a copy at http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html
* or from the Free Software Foundation, Inc.,
* 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA.
*
* This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
* without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
* See the GNU Lesser General Public License for more details.
*
* Copyright (c) 2001 - 2013 Object Refinery Ltd, Pentaho Corporation and Contributors.. All rights reserved.
*/
package org.pentaho.reporting.libraries.pixie.wmf.bitmap;
import java.io.IOException;
import java.io.InputStream;
public abstract class BitmapCompression {
private int height;
private int width;
private int bpp;
private boolean topDown;
protected BitmapCompression() {
}
public void setDimension( final int width, final int height ) {
this.width = width;
this.height = height;
}
public int getHeight() {
return height;
}
public int getWidth() {
return width;
}
public int getBpp() {
return bpp;
}
public void setBpp( final int bpp ) {
this.bpp = bpp;
}
public void setTopDown( final boolean b ) {
this.topDown = b;
}
public boolean isTopDown() {
return topDown;
}
public abstract int[] decompress( InputStream in, GDIPalette palette )
throws IOException;
public static int[] expandMonocrome( final int b, final GDIPalette pal ) {
final int tColor = pal.lookupColor( 1 );
final int fColor = pal.lookupColor( 0 );
final int[] retval = new int[ 8 ];
if ( ( b & 0x01 ) == 0x01 ) {
retval[ 0 ] = tColor;
} else {
retval[ 0 ] = fColor;
}
if ( ( b & 0x02 ) == 0x02 ) {
retval[ 1 ] = tColor;
} else {
retval[ 1 ] = fColor;
}
if ( ( b & 0x04 ) == 0x04 ) {
retval[ 2 ] = tColor;
} else {
retval[ 2 ] = fColor;
}
if ( ( b & 0x08 ) == 0x08 ) {
retval[ 3 ] = tColor;
} else {
retval[ 3 ] = fColor;
}
if ( ( b & 0x10 ) == 0x10 ) {
retval[ 4 ] = tColor;
} else {
retval[ 4 ] = fColor;
}
if ( ( b & 0x20 ) == 0x20 ) {
retval[ 5 ] = tColor;
} else {
retval[ 5 ] = fColor;
}
if ( ( b & 0x40 ) == 0x40 ) {
retval[ 6 ] = tColor;
} else {
retval[ 6 ] = fColor;
}
if ( ( b & 0x80 ) == 0x80 ) {
retval[ 7 ] = tColor;
} else {
retval[ 7 ] = fColor;
}
return retval;
}
public static int[] expand4BitTuple( final int b, final GDIPalette pal ) {
final int[] retval = new int[ 2 ];
retval[ 0 ] = pal.lookupColor( ( b & 0xF0 ) >> 4 );
retval[ 1 ] = pal.lookupColor( b & 0x0F );
return retval;
}
}