public static TgaHeader ReadHeader(Stream stream) { var header = new TgaHeader { IdLength = ReadByte(stream), ColorMapType = ReadByte(stream), DataTypeCode = ReadDataTypeCode(stream), ColorMapOrigin = ReadShort(stream), ColorMapLength = ReadShort(stream), ColorMapDepth = ReadByte(stream), XOrigin = ReadShort(stream), YOrigin = ReadShort(stream), Width = ReadShort(stream), Height = ReadShort(stream), BitsPerPixel = ReadByte(stream), ImageDescriptor = ReadByte(stream) }; return(header); }
private static ImageSource Decode(byte[] data, TgaHeader tgaHeader, int size) { switch (tgaHeader.DataTypeCode) { case DataTypeCode.Rgb: return(RgbDecoder.Decode(data, tgaHeader, size)); case DataTypeCode.RgbRle: return(RgbRleDecoder.Decode(data, tgaHeader, size)); case DataTypeCode.Bw: case DataTypeCode.BwRle: case DataTypeCode.ColorMapped: case DataTypeCode.ColorMappedRle: case DataTypeCode.ColorMappedCompressed: case DataTypeCode.ColorMappedCompressedQuad: case DataTypeCode.NoImageData: return(null); // We know about these formats but don't offer a preview of them default: throw new UnsupportedPixelFormatException(); } }