예제 #1
0
파일: ImageALB.cs 프로젝트: Casidi/GARbro
 public override ImageMetaData ReadMetaData(Stream stream)
 {
     var header = new byte[0x10];
     if (0x10 != stream.Read (header, 0, 0x10))
         return null;
     int unpacked_size = LittleEndian.ToInt32 (header, 8);
     using (var alb = new AlbStream (stream, unpacked_size))
     using (var file = new SeekableStream (alb))
     {
         uint signature = FormatCatalog.ReadSignature (file);
         file.Position = 0;
         ImageFormat format;
         if (ImageFormat.Png.Signature == signature)
             format = ImageFormat.Png;
         else if (Dds.Value.Signature == signature)
             format = Dds.Value;
         else
             format = ImageFormat.Jpeg;
         var info = format.ReadMetaData (file);
         if (null == info)
             return null;
         return new AlbMetaData
         {
             Width   = info.Width,
             Height  = info.Height,
             OffsetX = info.OffsetX,
             OffsetY = info.OffsetY,
             BPP     = info.BPP,
             Format  = format,
             Info    = info,
             UnpackedSize = unpacked_size,
         };
     }
 }
예제 #2
0
파일: ImageALB.cs 프로젝트: Casidi/GARbro
 public override ImageData Read(Stream stream, ImageMetaData info)
 {
     var meta = (AlbMetaData)info;
     stream.Position = 0x10;
     using (var alb = new AlbStream (stream, meta.UnpackedSize))
     using (var file = new SeekableStream (alb))
         return meta.Format.Read (file, meta.Info);
 }
예제 #3
0
        public override ImageData Read(Stream stream, ImageMetaData info)
        {
            var meta = (AlbMetaData)info;

            stream.Position = 0x10;
            using (var alb = new AlbStream(stream, meta.UnpackedSize))
                using (var file = new SeekableStream(alb))
                    return(meta.Format.Read(file, meta.Info));
        }
예제 #4
0
        public override ImageMetaData ReadMetaData(Stream stream)
        {
            var header = new byte[0x10];

            if (0x10 != stream.Read(header, 0, 0x10))
            {
                return(null);
            }
            int unpacked_size = LittleEndian.ToInt32(header, 8);

            using (var alb = new AlbStream(stream, unpacked_size))
                using (var file = new SeekableStream(alb))
                {
                    uint signature = FormatCatalog.ReadSignature(file);
                    file.Position = 0;
                    ImageFormat format;
                    if (ImageFormat.Png.Signature == signature)
                    {
                        format = ImageFormat.Png;
                    }
                    else if (Dds.Value.Signature == signature)
                    {
                        format = Dds.Value;
                    }
                    else
                    {
                        format = ImageFormat.Jpeg;
                    }
                    var info = format.ReadMetaData(file);
                    if (null == info)
                    {
                        return(null);
                    }
                    return(new AlbMetaData
                    {
                        Width = info.Width,
                        Height = info.Height,
                        OffsetX = info.OffsetX,
                        OffsetY = info.OffsetY,
                        BPP = info.BPP,
                        Format = format,
                        Info = info,
                        UnpackedSize = unpacked_size,
                    });
                }
        }
예제 #5
0
파일: ImageALB.cs 프로젝트: zxc120/GARbro
        public override ImageMetaData ReadMetaData(IBinaryStream stream)
        {
            var header        = stream.ReadHeader(0x10);
            int unpacked_size = header.ToInt32(8);

            using (var alb = new AlbStream(stream, unpacked_size))
                using (var s = new SeekableStream(alb))
                    using (var file = new BinaryStream(s, stream.Name))
                    {
                        uint        signature = file.Signature;
                        ImageFormat format;
                        if (Png.Signature == signature)
                        {
                            format = ImageFormat.Png;
                        }
                        else if (Dds.Value.Signature == signature)
                        {
                            format = Dds.Value;
                        }
                        else
                        {
                            format = ImageFormat.Jpeg;
                        }
                        file.Position = 0;
                        var info = format.ReadMetaData(file);
                        if (null == info)
                        {
                            return(null);
                        }
                        return(new AlbMetaData
                        {
                            Width = info.Width,
                            Height = info.Height,
                            OffsetX = info.OffsetX,
                            OffsetY = info.OffsetY,
                            BPP = info.BPP,
                            Format = format,
                            Info = info,
                            UnpackedSize = unpacked_size,
                        });
                    }
        }