Example #1
0
        public override ImageData Read(IBinaryStream stream, ImageMetaData info)
        {
            var reader = new Reader(stream, (int)info.Width, (int)info.Height);

            try
            {
                reader.Unpack(MaiVersion.First);
            }
            catch
            {
                reader.Unpack(MaiVersion.Second);
            }
            return(ImageData.Create(info, PixelFormats.Bgr24, null, reader.Data, reader.Stride));
        }
Example #2
0
        public override ImageData Read(Stream stream, ImageMetaData info)
        {
            var reader = new Reader(stream, (CmMetaData)info);

            reader.Unpack();
            return(ImageData.CreateFlipped(info, reader.Format, reader.Palette, reader.Data, reader.Stride));
        }
Example #3
0
        public override ImageMetaData ReadMetaData(IBinaryStream stream)
        {
            uint length     = stream.ReadUInt32();
            int  chunk_size = stream.ReadInt32();

            if (length > 0xffffff || chunk_size <= 0 || length < chunk_size)
            {
                return(null);
            }
            using (var reader = new Reader(stream, (uint)Math.Max(0x20, chunk_size + 2), chunk_size))
            {
                reader.Unpack();
                var bmp = reader.Data;
                if (bmp[0] != 'B' || bmp[1] != 'M')
                {
                    return(null);
                }
                return(new TgfMetaData
                {
                    Width = LittleEndian.ToUInt32(bmp, 0x12),
                    Height = LittleEndian.ToUInt32(bmp, 0x16),
                    BPP = LittleEndian.ToInt16(bmp, 0x1c),
                    BitmapSize = length,
                    ChunkSize = chunk_size,
                });
            }
        }
Example #4
0
        public override ImageData Read(IBinaryStream file, ImageMetaData info)
        {
            var reader = new Reader(file, (EpaMetaData)info);

            reader.Unpack();
            return(ImageData.Create(info, reader.Format, reader.Palette, reader.Data));
        }
Example #5
0
        public override ImageData Read(IBinaryStream stream, ImageMetaData info)
        {
            var reader = new Reader(stream, (int)info.Width, (int)info.Height);

            reader.Unpack();
            return(ImageData.Create(info, PixelFormats.Bgr24, null, reader.Data, reader.Stride));
        }
Example #6
0
        byte[] ReadPixelsData(IBinaryStream file, RctMetaData meta)
        {
            byte[] base_image = null;
            if (meta.FileName != null && meta.BaseNameLength > 0 && OverlayFrames.Get <bool>() &&
                meta.BaseRecursionDepth < BaseRecursionLimit)
            {
                base_image = ReadBaseImage(file, meta);
            }

            file.Position = meta.DataOffset + meta.BaseNameLength;
            if (meta.IsEncrypted)
            {
                file = OpenEncryptedStream(file, meta.DataSize);
            }
            try
            {
                using (var reader = new Reader(file, meta))
                {
                    reader.Unpack();
                    if (base_image != null)
                    {
                        return(CombineImage(base_image, reader.Data));
                    }
                    return(reader.Data);
                }
            }
            catch
            {
                if (meta.IsEncrypted)
                {
                    Key = null; // probably incorrect encryption scheme caused exception, reset key
                }
                throw;
            }
        }
Example #7
0
        public override ImageData Read(IBinaryStream file, ImageMetaData info)
        {
            var reader = new Reader(file.AsStream, (GrxMetaData)info);

            reader.Unpack();
            return(ImageData.Create(info, reader.Format, null, reader.Data, reader.Stride));
        }
Example #8
0
        public override ImageData Read(IBinaryStream stream, ImageMetaData info)
        {
            var reader = new Reader(stream.AsStream, (CpbMetaData)info);

            reader.Unpack();
            return(ImageData.Create(info, reader.Format, reader.Palette, reader.Data));
        }
Example #9
0
        public override ImageData Read(IBinaryStream stream, ImageMetaData info)
        {
            var reader = new Reader(stream, (Pt1MetaData)info);

            reader.Unpack();
            return(ImageData.Create(info, reader.Format, null, reader.Data));
        }
Example #10
0
 ImageData ApplyMaskToWipData(ImageMetaData info, byte[] image, string mask_name)
 {
     using (var mask_file = VFS.OpenBinaryStream(mask_name))
     {
         if (mask_file.Signature != Signature)
         {
             throw new InvalidFormatException();
         }
         var mask_info = ReadMetaData(mask_file) as WipMetaData;
         if (null == mask_info || 8 != mask_info.BPP ||
             info.Width != mask_info.Width || info.Height != mask_info.Height)
         {
             throw new InvalidFormatException();
         }
         using (var reader = new Reader(mask_file, mask_info))
         {
             reader.Unpack();
             var palette    = reader.Palette;
             int dst_stride = (int)info.Width * 4;
             var pixels     = new byte[dst_stride * (int)info.Height];
             int plane_size = (int)info.Width * (int)info.Height;
             var alpha      = reader.Data;
             int dst        = 0;
             for (int src = 0; src < plane_size; ++src)
             {
                 pixels[dst++] = image[src];
                 pixels[dst++] = image[src + plane_size];
                 pixels[dst++] = image[src + plane_size * 2];
                 var color = palette[alpha[src]];
                 pixels[dst++] = (byte)((color.B + color.G + color.R) / 3);
             }
             return(ImageData.Create(info, PixelFormats.Bgra32, null, pixels, dst_stride));
         }
     }
 }
Example #11
0
        public override ImageData Read(IBinaryStream stream, ImageMetaData metadata)
        {
            var reader = new Reader(stream, (TgaMetaData)metadata);
            var pixels = reader.Unpack();

            return(ImageData.Create(metadata, reader.Format, reader.Palette, pixels, reader.Stride));
        }
Example #12
0
 public override ImageData Read(Stream file, ImageMetaData info)
 {
     using (var reader = new Reader (file, info.Width * info.Height))
     {
         reader.Unpack();
         return ImageData.Create (info, PixelFormats.Bgra32, null, reader.Data);
     }
 }
Example #13
0
 public override ImageData Read(Stream stream, ImageMetaData info)
 {
     using (var reader = new Reader(stream, info))
     {
         reader.Unpack();
         return(ImageData.CreateFlipped(info, reader.Format, null, reader.Data, reader.Stride));
     }
 }
Example #14
0
 public override ImageData Read(IBinaryStream file, ImageMetaData info)
 {
     using (var reader = new Reader(file, info.Width * info.Height))
     {
         reader.Unpack();
         return(ImageData.Create(info, PixelFormats.Bgra32, null, reader.Data));
     }
 }
Example #15
0
 public override ImageData Read(IBinaryStream file, ImageMetaData info)
 {
     using (var reader = new Reader(file, (LimMetaData)info))
     {
         reader.Unpack();
         return(ImageData.Create(info, reader.Format, null, reader.Data));
     }
 }
Example #16
0
        public override ImageData Read(Stream stream, ImageMetaData info)
        {
            var meta   = (Pt1MetaData)info;
            var reader = new Reader(stream, meta);

            reader.Unpack();
            return(ImageData.Create(meta, reader.Format, null, reader.Data));
        }
Example #17
0
 public override ImageData Read(Stream stream, ImageMetaData info)
 {
     using (var reader = new Reader (stream, (PrsMetaData)info))
     {
         reader.Unpack();
         return ImageData.Create (info, reader.Format, null, reader.Data, reader.Stride);
     }
 }
Example #18
0
 public override ImageData Read(IBinaryStream stream, ImageMetaData info)
 {
     using (var reader = new Reader(stream, (CrxMetaData)info))
     {
         reader.Unpack();
         return(ImageData.Create(info, reader.Format, reader.Palette, reader.Data, reader.Stride));
     }
 }
Example #19
0
 public override ImageData Read(Stream stream, ImageMetaData info)
 {
     stream.Position = 0x10;
     using (var reader = new Reader(stream, (int)info.Width, (int)info.Height))
     {
         reader.Unpack();
         return(ImageData.Create(info, PixelFormats.Bgr24, null, reader.Data));
     }
 }
Example #20
0
 public override ImageData Read(Stream file, ImageMetaData info)
 {
     file.Position = 0x10;
     using (var reader = new Reader(file, info))
     {
         reader.Unpack();
         return(ImageData.Create(info, reader.Format, null, reader.Data));
     }
 }
Example #21
0
 public override ImageData Read(IBinaryStream file, ImageMetaData info)
 {
     using (var reader = new Reader(file, info))
     {
         reader.Unpack();
         var palette = new BitmapPalette(reader.Palette);
         return(ImageData.Create(info, PixelFormats.Indexed8, palette, reader.Data, (int)info.Width));
     }
 }
Example #22
0
        public override ImageData Read(IBinaryStream stream, ImageMetaData info)
        {
            var reader = new Reader(stream.AsStream, (Ed8MetaData)info);

            reader.Unpack();
            var palette = new BitmapPalette(reader.Palette);

            return(ImageData.Create(info, PixelFormats.Indexed8, palette, reader.Data, (int)info.Width));
        }
Example #23
0
        public override ImageData Read(IBinaryStream file, ImageMetaData info)
        {
            var meta = (ElgMetaData)info;

            using (var reader = new Reader(file, meta))
            {
                reader.Unpack();
                return(ImageData.Create(meta, reader.Format, reader.Palette, reader.Data));
            }
        }
Example #24
0
        public override ImageData Read(Stream stream, ImageMetaData info)
        {
            var meta = (CgMetaData)info;

            using (var reader = new Reader(stream, meta))
            {
                reader.Unpack();
                return(ImageData.Create(info, PixelFormats.Bgr24, null, reader.Data, (int)info.Width * 3));
            }
        }
Example #25
0
 public override ImageData Read(Stream file, ImageMetaData info)
 {
     var meta = (ElgMetaData)info;
     file.Position = meta.HeaderSize;
     using (var reader = new Reader (file, meta))
     {
         reader.Unpack();
         return ImageData.Create (meta, reader.Format, reader.Palette, reader.Data);
     }
 }
Example #26
0
        public override ImageData Read(IBinaryStream file, ImageMetaData info)
        {
            var meta = (EpaMetaData)info as EpaMetaData;

            file.Position = 2 == meta.Mode ? 0x18 : 0x10;
            var reader = new Reader(file.AsStream, meta);

            reader.Unpack();
            return(ImageData.Create(meta, reader.Format, reader.Palette, reader.Data));
        }
Example #27
0
 public override ImageData Read(Stream file, ImageMetaData info)
 {
     file.Position = 0x14;
     using (var reader = new Reader (file, info))
     {
         reader.Unpack();
         var palette = new BitmapPalette (reader.Palette);
         return ImageData.Create (info, PixelFormats.Indexed8, palette, reader.Data, (int)info.Width);
     }
 }
Example #28
0
        public override ImageData Read(IBinaryStream stream, ImageMetaData info)
        {
            var reader = new Reader(stream.AsStream, (QntMetaData)info);

            reader.Unpack();
            int         stride = (int)info.Width * (reader.BPP / 8);
            PixelFormat format = 24 == reader.BPP ? PixelFormats.Bgr24 : PixelFormats.Bgra32;

            return(ImageData.Create(info, format, null, reader.Data, stride));
        }
Example #29
0
        public override ImageData Read(Stream stream, ImageMetaData info)
        {
            var meta = info as EpaMetaData;
            if (null == meta)
                throw new ArgumentException ("EpaFormat.Read should be supplied with EpaMetaData", "info");

            stream.Position = 2 == meta.Mode ? 0x18 : 0x10;
            var reader = new Reader (stream, meta);
            reader.Unpack();
            return ImageData.Create (meta, reader.Format, reader.Palette, reader.Data);
        }
Example #30
0
        public override ImageData Read(IBinaryStream file, ImageMetaData info)
        {
            var meta = (MgxMetaData)info;

            using (var input = new StreamRegion(file.AsStream, meta.GrxOffset, true))
            {
                var reader = new Reader(input, meta);
                reader.Unpack();
                return(ImageData.Create(info, reader.Format, null, reader.Data, reader.Stride));
            }
        }
Example #31
0
        public override ImageData Read(IBinaryStream stream, ImageMetaData info)
        {
            var meta = (EdtMetaData)info;

            stream.Position = 0x22;
            using (var reader = new Reader(stream.AsStream, meta))
            {
                reader.Unpack();
                return(ImageData.Create(meta, PixelFormats.Bgr24, null, reader.Data, (int)meta.Width * 3));
            }
        }
Example #32
0
        public override ImageData Read(IBinaryStream stream, ImageMetaData info)
        {
            var meta = (SgxMetaData)info;

            using (var grx = new StreamRegion(stream.AsStream, meta.GrxOffset, true))
            {
                var reader = new Reader(grx, (GrxMetaData)meta.GrxInfo);
                reader.Unpack();
                return(ImageData.Create(info, reader.Format, null, reader.Data, reader.Stride));
            }
        }
Example #33
0
        public override ImageData Read(IBinaryStream stream, ImageMetaData info)
        {
            var meta = (DgcMetaData)info;

            stream.Position = 12;
            using (var reader = new Reader(stream, meta))
            {
                reader.Unpack();
                return(ImageData.Create(info, reader.Format, null, reader.Data));
            }
        }
Example #34
0
        public override ImageData Read(IBinaryStream stream, ImageMetaData info)
        {
            var meta = (EgnMetaData)info;

            stream.Position = meta.DataOffset;
            var reader = new Reader(stream, meta.UnpackedSize, meta.Mode, meta.Flag);

            reader.Unpack();
            using (var bmp = new BinMemoryStream(reader.Data, stream.Name))
                return(Bmp.Read(bmp, info));
        }
Example #35
0
        public override ImageData Read(Stream stream, ImageMetaData info)
        {
            var meta = info as S25MetaData;
            if (null == meta)
                throw new ArgumentException ("S25Format.Read should be supplied with S25MetaData", "info");

            using (var reader = new Reader (stream, meta))
            {
                var pixels = reader.Unpack();
                return ImageData.Create (info, PixelFormats.Bgra32, null, pixels);
            }
        }
Example #36
0
        public override ImageData Read(Stream stream, ImageMetaData info)
        {
            var meta = info as Ed8MetaData;
            if (null == meta)
                throw new ArgumentException ("Ed8Format.Read should be supplied with Ed8MetaData", "info");

            stream.Position = 0x1a;
            var reader = new Reader (stream, meta);
            reader.Unpack();
            var palette = new BitmapPalette (reader.Palette);
            return ImageData.Create (info, PixelFormats.Indexed8, palette, reader.Data, (int)info.Width);
        }
Example #37
0
        public override ImageData Read(Stream stream, ImageMetaData info)
        {
            var meta = info as DgcMetaData;
            if (null == meta)
                throw new ArgumentException ("DgcFormat.Read should be supplied with DgcMetaData", "info");

            stream.Position = 12;
            using (var reader = new Reader (stream, meta))
            {
                reader.Unpack();
                return ImageData.Create (info, reader.Format, null, reader.Data);
            }
        }
Example #38
0
        public override ImageData Read(Stream stream, ImageMetaData info)
        {
            var meta = info as PicMetaData;
            if (null == meta)
                throw new ArgumentException ("PicFormat.Read should be supplied with PicMetaData", "info");

            stream.Position = 0x12;
            using (var reader = new Reader (stream, meta))
            {
                reader.Unpack();
                return ImageData.Create (meta, PixelFormats.Bgr24, null, reader.Data, (int)meta.Width*3);
            }
        }
Example #39
0
        public override ImageData Read(Stream stream, ImageMetaData metadata)
        {
            var meta = metadata as TgaMetaData;

            if (null == meta)
            {
                throw new System.ArgumentException("TgaFormat.Read should be supplied with TgaMetaData", "metadata");
            }
            var reader = new Reader(stream, meta);
            var pixels = reader.Unpack();

            return(ImageData.Create(meta, reader.Format, reader.Palette, pixels, reader.Stride));
        }
Example #40
0
 public override ImageData Read(Stream stream, ImageMetaData info)
 {
     var meta = info as EgnMetaData;
     if (null == meta)
         throw new ArgumentException ("EgnFormat.Read should be supplied with EgnMetaData", "info");
     stream.Position = meta.DataOffset;
     using (var input = new ArcView.Reader (stream))
     {
         var reader = new Reader (input, meta.UnpackedSize, meta.Mode, meta.Flag);
         reader.Unpack();
         using (var bmp = new MemoryStream (reader.Data))
             return base.Read (bmp, info);
     }
 }
Example #41
0
 public override ImageData Read(Stream stream, ImageMetaData info)
 {
     var meta = info as QntMetaData;
     if (null == meta)
         throw new ArgumentException ("QntFormat.Read should be supplied with QntMetaData", "info");
     stream.Position = 0x44;
     using (var reader = new Reader (stream, meta))
     {
         reader.Unpack();
         int stride = (int)info.Width * (reader.BPP / 8);
         PixelFormat format = 24 == reader.BPP ? PixelFormats.Bgr24 : PixelFormats.Bgra32;
         return ImageData.Create (info, format, null, reader.Data, stride);
     }
 }
Example #42
0
 byte[] ReadPixelsData(Stream file, RctMetaData meta)
 {
     file.Position = meta.DataOffset + meta.AddSize;
     if (meta.IsEncrypted)
         file = OpenEncryptedStream (file, meta.DataSize);
     try
     {
         using (var reader = new Reader (file, meta))
         {
             reader.Unpack();
             return reader.Data;
         }
     }
     catch
     {
         if (meta.IsEncrypted)
             Key = null; // probably incorrect encryption scheme caused exception, reset key
         throw;
     }
 }
Example #43
0
 public override ImageMetaData ReadMetaData(Stream stream)
 {
     using (var input = new ArcView.Reader (stream))
     {
         int signature = ~input.ReadInt32();
         int mode = (signature & 0x70) >> 4; // v6
         if (0 != (mode & 4))
             return null;
         int flag = signature & 0xF; // v7
         int data_size, data_offset;
         if (0 != (signature & 0x80))
         {
             data_offset = 4;
             data_size = Binary.BigEndian (signature) & 0xFFFFFF;
         }
         else
         {
             data_offset = 8;
             data_size = Binary.BigEndian (input.ReadInt32());
         }
         if (data_size <= 0 || data_size > 0xFFFFFF) // arbitrary max BMP size
             return null;
         var reader = new Reader (input, 0x36, mode, flag); // size of BMP header
         reader.Unpack();
         using (var bmp = new MemoryStream (reader.Data))
         {
             var info = base.ReadMetaData (bmp);
             if (null == info)
                 return null;
             return new EgnMetaData
             {
                 Width = info.Width,
                 Height = info.Height,
                 BPP = info.BPP,
                 Mode = mode,
                 Flag = flag,
                 DataOffset = data_offset,
                 UnpackedSize = data_size,
             };
         }
     }
 }
Example #44
0
 public override ImageData Read(Stream stream, ImageMetaData info)
 {
     var meta = (CgMetaData)info;
     using (var reader = new Reader (stream, meta))
     {
         reader.Unpack();
         return ImageData.Create (info, PixelFormats.Bgr24, null, reader.Data, (int)info.Width*3);
     }
 }
Example #45
0
 public override ImageData Read(Stream stream, ImageMetaData info)
 {
     var reader = new Reader (stream, (AmMetaData)info);
     reader.Unpack();
     return ImageData.Create (info, reader.Format, reader.Palette, reader.Data);
 }
Example #46
0
 public override ImageData Read(Stream file, ImageMetaData info)
 {
     var meta = (WipMetaData)info;
     if (meta.FrameCount > 1)
         Trace.WriteLine ("Extra frames ignored", info.FileName);
     file.Position = 8 + 24 * meta.FrameCount;
     Color[] palette = null;
     if (8 == meta.BPP)
     {
         var palette_data = new byte[0x400];
         if (palette_data.Length != file.Read (palette_data, 0, palette_data.Length))
             throw new InvalidFormatException();
         palette = new Color[0x100];
         for (int i = 0; i < 0x100; ++i)
         {
             palette[i] = Color.FromRgb (palette_data[i*4], palette_data[i*4+1], palette_data[i*4+2]);
         }
     }
     using (var reader = new Reader (file, meta))
     {
         reader.Unpack();
         if (24 == meta.BPP)
         {
             byte[] raw = reader.Data;
             int size = (int)meta.Width * (int)meta.Height;
             byte[] pixels = new byte[size*3];
             int dst = 0;
             for (int i = 0; i < size; ++i)
             {
                 pixels[dst++] = raw[i];
                 pixels[dst++] = raw[i+size];
                 pixels[dst++] = raw[i+size*2];
             }
             return ImageData.Create (meta, PixelFormats.Bgr24, null, pixels, (int)meta.Width*3);
         }
         else if (8 == meta.BPP)
         {
             byte[] pixels = reader.Data;
             var bmp_palette = new BitmapPalette (palette);
             return ImageData.Create (meta, PixelFormats.Indexed8, bmp_palette, pixels, (int)meta.Width);
         }
         else
             throw new InvalidFormatException();
     }
 }