public virtual ImageMetaData ReadMetaData(CRioArchive arc) { uint object_pos = (uint)arc.Input.Position; arc.ReadInt32(); int x = arc.ReadUInt16(); int y = arc.ReadUInt16(); arc.ReadInt32(); uint w = arc.ReadUInt16(); uint h = arc.ReadUInt16(); int flags = arc.ReadInt32() & 0xFF; if (flags < 1 || flags > 3) { return(null); } return(new RioMetaData { OffsetX = x, OffsetY = y, Width = w, Height = h, BPP = 1 == flags ? 8 : 2 == flags ? 24 : 32, ObjectOffset = object_pos, Rip = this, }); }
public override ImageMetaData ReadMetaData(CRioArchive arc) { uint object_pos = (uint)arc.Input.Position; arc.ReadInt32(); uint w = arc.ReadUInt16(); uint h = arc.ReadUInt16(); return(new RioMetaData { Width = w, Height = h, BPP = 32, ObjectOffset = object_pos, Rip = this, }); }
public override void Deserialize(CRioArchive arc) { Version = arc.ReadUInt16(); if (Version >= 7) { field_14 = arc.ReadInt32(); field_18 = arc.ReadInt32(); arc.ReadByte(); arc.ReadString(); } arc.ReadString(); // registry branch arc.ReadString(); // disk name arc.ReadString(); // rio filename [src] arc.ReadString(); arc.ReadString(); arc.ReadInt64(); // rio offset [=0] arc.ReadInt64(); // rio size if (Version < 6) { arc.ReadInt32(); arc.ReadInt32(); } else { arc.ReadInt32(); } RioName = arc.ReadString(); RioOffset = arc.ReadInt64(); RioSize = arc.ReadInt64(); if (Version < 6) { arc.ReadInt64(); } arc.ReadInt32(); arc.ReadString(); arc.ReadInt32(); arc.ReadInt32(); arc.ReadInt32(); arc.ReadInt32(); arc.ReadInt32(); arc.ReadString(); int count = arc.ReadCount(); arc.ReadBytes(count * 4); PrepareBuffer(); // sub_10011700 (this); arc.Read(field_D4, 0, field_D4.Length); }
public override void Deserialize(CRioArchive arc) { Version = arc.ReadInt32(); m_x = arc.ReadUInt16(); m_y = arc.ReadUInt16(); m_width = arc.ReadUInt16(); m_height = arc.ReadUInt16(); m_w = arc.ReadUInt16(); m_h = arc.ReadUInt16(); m_flags = arc.ReadInt32(); int size = arc.ReadInt32(); arc.ReadInt32(); // field_34 var data = arc.ReadBytes(size); m_pixels = Uncompress(data); }
public virtual ImageMetaData ReadMetaData(CRioArchive arc) { uint object_pos = (uint)arc.Input.Position; arc.ReadInt32(); int x = arc.ReadUInt16(); int y = arc.ReadUInt16(); uint w1 = arc.ReadUInt16(); uint h1 = arc.ReadUInt16(); uint w2 = arc.ReadUInt16(); uint h2 = arc.ReadUInt16(); int flags = arc.ReadInt32() & 0xFF; if (flags < 1 || flags > 3) { return(null); } uint width, height; if (3 == flags) { width = w2; height = h2; } else { width = w1; height = h1; } return(new RioMetaData { OffsetX = x, OffsetY = y, Width = width, Height = height, BPP = 1 == flags ? 8 : 32, ObjectOffset = object_pos, Rip = this, }); }
public override void Deserialize(CRioArchive arc) { Version = arc.ReadInt32(); m_width = arc.ReadUInt16(); m_height = arc.ReadUInt16(); m_x = arc.ReadUInt16(); m_y = arc.ReadUInt16(); m_w = arc.ReadUInt16(); m_h = arc.ReadUInt16(); m_flags = arc.ReadInt32(); CompressInfo = arc.ReadBytes(7); if (arc.GetObjectSchema() >= 2) { field_4C = arc.ReadRioReference("CSbm"); } int size = arc.ReadInt32(); arc.ReadInt32(); // field_3C var data = arc.ReadBytes(size); m_pixels = Uncompress(data); Format = HasAlpha ? PixelFormats.Bgra32 : PixelFormats.Bgr32; }