blob: 82ee682a74258391ab391bb867c95d3ed8f35b75 [file] [log] [blame]
import '../color.dart';
import '../image.dart';
import '../util/output_buffer.dart';
import 'encoder.dart';
/// Encode a TGA image. This only supports the 24-bit uncompressed format.
class TgaEncoder extends Encoder {
List<int> encodeImage(Image image) {
OutputBuffer out = OutputBuffer(bigEndian: true);
List<int> header = List<int>(18);
header.fillRange(0, 18, 0);
header[2] = 2;
header[12] = image.width & 0xff;
header[13] = (image.width >> 8) & 0xff;
header[14] = image.height & 0xff;
header[15] = (image.height >> 8) & 0xff;
header[16] = image.format == Image.RGB ? 24 : 32;
out.writeBytes(header);
for (int y = image.height - 1; y >= 0; --y) {
for (int x = 0; x < image.width; ++x) {
int c = image.getPixel(x, y);
out.writeByte(getBlue(c));
out.writeByte(getGreen(c));
out.writeByte(getRed(c));
if (image.format == Image.RGBA) {
out.writeByte(getAlpha(c));
}
}
}
return out.getBytes();
}
}