imageRaster method
List<int>
imageRaster(
- RasterImage image, {
- PosAlign align = PosAlign.center,
- bool highDensityHorizontal = true,
- bool highDensityVertical = true,
- PosImageFn imageFn = PosImageFn.bitImageRaster,
Print an image using (GS v 0) obsolete command
Implementation
List<int> imageRaster(
RasterImage image, {
PosAlign align = PosAlign.center,
bool highDensityHorizontal = true,
bool highDensityVertical = true,
PosImageFn imageFn = PosImageFn.bitImageRaster,
}) {
List<int> bytes = [];
bytes += setStyles(const PosStyles().copyWith(align: align));
final int widthPx = image.width;
final int heightPx = image.height;
final int widthBytes = (widthPx + 7) ~/ 8;
final List<int> rasterizedData = toEscPosRaster(image);
if (imageFn == PosImageFn.bitImageRaster) {
final int densityByte =
(highDensityVertical ? 0 : 1) + (highDensityHorizontal ? 0 : 2);
final List<int> header = List.from(cRasterImg2.codeUnits);
header.add(densityByte);
header.addAll(_intLowHigh(widthBytes, 2));
header.addAll(_intLowHigh(heightPx, 2));
bytes += List.from(header)..addAll(rasterizedData);
} else {
final List<int> header1 = List.from(cRasterImg.codeUnits);
header1.addAll(_intLowHigh(widthBytes * heightPx + 10, 2));
header1.addAll([48, 112, 48]);
header1.addAll([1, 1]);
header1.addAll([49]);
header1.addAll(_intLowHigh(widthBytes, 2));
header1.addAll(_intLowHigh(heightPx, 2));
bytes += List.from(header1)..addAll(rasterizedData);
final List<int> header2 = List.from(cRasterImg.codeUnits);
header2.addAll([2, 0]);
header2.addAll([48, 50]);
bytes += List.from(header2);
}
return bytes;
}