}
return image;
}
static private int readMH(byte[] imgdata,int off,InputStream is,int width)throws IOException{
ModHuffmanInputStream mhis=new ModHuffmanInputStream(is);
RLEBitInputStream rlis=new RLEBitInputStream(mhis);
if((width&0x0007)==0){
byte[] buf=new byte[width>>3];int len=0;
while(true){
rlis.resetToStartCodeWord(); // start next line with white
try{
len=rlis.read(buf); // read one image line
if(len==-1){break;} // end of page
System.arraycopy(buf,0,imgdata,off,len); // copy line to image buffer
mhis.skipPadding(8); // skip bits up until next byte boundary
}catch(ModHuffmanInputStream.ModHuffmanCodingException mhce){
System.out.println(cn+".copyin:\n\t"+mhce);
}
off+=len;
}
}else{
byte[] buf=new byte[(width+7)>>3];int len=0,ecw=8-(width&0x0007),bits;
while(true){
rlis.resetToStartCodeWord(); // start next line with white
try{
len=rlis.read(buf,0,buf.length-1); // read one image line
if(len==-1){break;} // end of page
bits=rlis.readBits(7,ecw);
buf[len]=(byte)bits;
System.arraycopy(buf,0,imgdata,off,len+1); // copy line to image buffer
mhis.skipPadding(8); // skip bits up until next byte boundary
}catch(ModHuffmanInputStream.ModHuffmanCodingException mhce){
System.out.println(cn+".copyin:\n\t"+mhce);
}
off+=len+1;
}