blob: 789eeb950a339c8c3d28115dfa802950730311bb [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one or more
* contributor license agreements. See the NOTICE file distributed with
* this work for additional information regarding copyright ownership.
* The ASF licenses this file to You under the Apache License, Version 2.0
* (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/* $Id$ */
package org.apache.fop.afp.ioca;
/**
* Raster data is a grid of cells covering an area of interest.
* Each pixel, the smallest unit of information in the grid, displays
* a unique attribute. This static class generates raster data for different
* shades of grey (betweeen 0 and 16) the lower the number being the
* darker the shade. The image data dimensions are 64 x 8.
*/
public class ImageRasterPattern {
/**
* The Raster Pattern for Greyscale 16
*/
private static final byte[] GREYSCALE16 = new byte[] {
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
};
/**
* The Raster Pattern for Greyscale 15
*/
private static final byte[] GREYSCALE15 = new byte[] {
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
};
/**
* The Raster Pattern for Greyscale 14
*/
private static final byte[] GREYSCALE14 = new byte[] {
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x44,
0x44,
0x44,
0x44,
0x44,
0x44,
0x44,
0x44,
};
/**
* The Raster Pattern for Greyscale 13
*/
private static final byte[] GREYSCALE13 = new byte[] {
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
};
/**
* The Raster Pattern for Greyscale 12
*/
private static final byte[] GREYSCALE12 = new byte[] {
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
0x00,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
};
/**
* The Raster Pattern for Greyscale 11
*/
private static final byte[] GREYSCALE11 = new byte[] {
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x44,
0x44,
0x44,
0x44,
0x44,
0x44,
0x44,
0x44,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
};
/**
* The Raster Pattern for Greyscale 10
*/
private static final byte[] GREYSCALE10 = new byte[] {
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
0x44,
0x44,
0x44,
0x44,
0x44,
0x44,
0x44,
0x44,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
};
/**
* The Raster Pattern for Greyscale 9
*/
private static final byte[] GREYSCALE09 = new byte[] {
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
0x11,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
};
/**
* The Raster Pattern for Greyscale 8
*/
private static final byte[] GREYSCALE08 = new byte[] {
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
};
/**
* The Raster Pattern for Greyscale 7
*/
private static final byte[] GREYSCALE07 = new byte[] {
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
};
/**
* The Raster Pattern for Greyscale 6
*/
private static final byte[] GREYSCALE06 = new byte[] {
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
(byte)0xEE,
(byte)0xEE,
(byte)0xEE,
(byte)0xEE,
(byte)0xEE,
(byte)0xEE,
(byte)0xEE,
(byte)0xEE,
};
/**
* The Raster Pattern for Greyscale 5
*/
private static final byte[] GREYSCALE05 = new byte[] {
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xEE,
(byte)0xEE,
(byte)0xEE,
(byte)0xEE,
(byte)0xEE,
(byte)0xEE,
(byte)0xEE,
(byte)0xEE,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
};
/**
* The Raster Pattern for Greyscale 4
*/
private static final byte[] GREYSCALE04 = new byte[] {
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xAA,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
};
/**
* The Raster Pattern for Greyscale 3
*/
private static final byte[] GREYSCALE03 = new byte[] {
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
0x55,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xBB,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
};
/**
* The Raster Pattern for Greyscale 2
*/
private static final byte[] GREYSCALE02 = new byte[] {
0x77,
0x77,
0x77,
0x77,
0x77,
0x77,
0x77,
0x77,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xDD,
(byte)0xDD,
(byte)0xDD,
(byte)0xDD,
(byte)0xDD,
(byte)0xDD,
(byte)0xDD,
(byte)0xDD,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
};
/**
* The Raster Pattern for Greyscale 1
*/
private static final byte[] GREYSCALE01 = new byte[] {
0x77,
0x77,
0x77,
0x77,
0x77,
0x77,
0x77,
0x77,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
};
/**
* The Raster Pattern for Greyscale 00
*/
private static final byte[] GREYSCALE00 = new byte[] {
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
(byte)0xFF,
};
/**
* Static method to return the raster image data for the
* grey scale specified. The scale should be between 0 (darkest)
* and 16 (lightest).
* @param greyscale The grey scale value (0 - 16)
* @return the raster data byte array for the given greyscale value
*/
public static byte[] getRasterData(int greyscale) {
int repeat = 16;
byte[] greypattern = new byte[32];
byte[] rasterdata = new byte[32 * repeat];
switch (greyscale) {
case 0:
System.arraycopy(GREYSCALE00, 0, greypattern, 0, 32);
break;
case 1:
System.arraycopy(GREYSCALE01, 0, greypattern, 0, 32);
break;
case 2:
System.arraycopy(GREYSCALE02, 0, greypattern, 0, 32);
break;
case 3:
System.arraycopy(GREYSCALE03, 0, greypattern, 0, 32);
break;
case 4:
System.arraycopy(GREYSCALE04, 0, greypattern, 0, 32);
break;
case 5:
System.arraycopy(GREYSCALE05, 0, greypattern, 0, 32);
break;
case 6:
System.arraycopy(GREYSCALE06, 0, greypattern, 0, 32);
break;
case 7:
System.arraycopy(GREYSCALE07, 0, greypattern, 0, 32);
break;
case 8:
System.arraycopy(GREYSCALE08, 0, greypattern, 0, 32);
break;
case 9:
System.arraycopy(GREYSCALE09, 0, greypattern, 0, 32);
break;
case 10:
System.arraycopy(GREYSCALE10, 0, greypattern, 0, 32);
break;
case 11:
System.arraycopy(GREYSCALE11, 0, greypattern, 0, 32);
break;
case 12:
System.arraycopy(GREYSCALE12, 0, greypattern, 0, 32);
break;
case 13:
System.arraycopy(GREYSCALE13, 0, greypattern, 0, 32);
break;
case 14:
System.arraycopy(GREYSCALE14, 0, greypattern, 0, 32);
break;
case 15:
System.arraycopy(GREYSCALE15, 0, greypattern, 0, 32);
break;
case 16:
System.arraycopy(GREYSCALE16, 0, greypattern, 0, 32);
break;
default :
System.arraycopy(GREYSCALE00, 0, greypattern, 0, 32);
break;
}
for (int i = 0; i < repeat; i++) {
System.arraycopy(greypattern, 0, rasterdata, i * 32, 32);
}
return rasterdata;
}
}