Пример #1
0
        public virtual ResTable_package ReadResTable_package(ResChunk_header header)
        {
            var value = new ResTable_package
            {
                Header         = header,
                Id             = ReadUInt32(),
                Name           = Encoding.Unicode.GetString(ReadBytes(256)),
                TypeStrings    = ReadUInt32(),
                LastPublicType = ReadUInt32(),
                KeyStrings     = ReadUInt32(),
                LastPublicKey  = ReadUInt32()
            };

            if (header.HeaderSize > 284)
            {
                value.TypeIdOffset = ReadUInt32();
            }

            if (header.HeaderSize > 292)
            {
                // New fields have been added, which we don't know about.
                ReadBytes(header.HeaderSize - 292);
            }

            return(value);
        }
Пример #2
0
 public virtual ResXMLTree_header ReadResXMLTree_header(ResChunk_header header)
 {
     return(new ResXMLTree_header
     {
         Header = header
     });
 }
Пример #3
0
 public virtual ResTable_header ReadResTable_header(ResChunk_header header)
 {
     return(new ResTable_header
     {
         Header = header,
         PackageCount = ReadUInt32()
     });
 }
Пример #4
0
 public virtual ResXMLTree_node ReadResXMLTree_node(ResChunk_header header)
 {
     return(new ResXMLTree_node
     {
         Header = header,
         LineNumber = ReadUInt32(),
         Comment = ReadResStringPool_ref()
     });
 }
Пример #5
0
 public virtual ResTable_typeSpec ReadResTable_typeSpec(ResChunk_header header)
 {
     return(new ResTable_typeSpec
     {
         Header = header,
         RawID = ReadUInt32(),
         EntryCount = ReadUInt32()
     });
 }
Пример #6
0
 public virtual ResTable_type ReadResTable_type(ResChunk_header header)
 {
     return(new ResTable_type
     {
         Header = header,
         RawID = ReadUInt32(),
         EntryCount = ReadUInt32(),
         EntriesStart = ReadUInt32(),
         Config = ReadResTable_config(),
     });
 }
Пример #7
0
 public virtual ResStringPool_header ReadResStringPool_header(ResChunk_header header)
 {
     return(new ResStringPool_header
     {
         Header = header,
         StringCount = ReadUInt32(),
         StyleCount = ReadUInt32(),
         Flags = (StringPoolFlags)ReadUInt32(),
         StringStart = ReadUInt32(),
         StylesStart = ReadUInt32()
     });
 }
Пример #8
0
 public virtual ResTable_package ReadResTable_package(ResChunk_header header)
 {
     return(new ResTable_package
     {
         Header = header,
         Id = ReadUInt32(),
         Name = Encoding.Unicode.GetString(ReadBytes(256)),
         TypeStrings = ReadUInt32(),
         LastPublicType = ReadUInt32(),
         KeyStrings = ReadUInt32(),
         LastPublicKey = ReadUInt32(),
     });
 }
Пример #9
0
        public virtual ResResourceMap ReadResResourceMap(ResChunk_header header)
        {
            var result = new ResResourceMap
            {
                Header     = header,
                ResouceIds = new List <uint>()
            };

            for (var pos = 8; pos < header.Size; pos += 4)
            {
                result.ResouceIds.Add(ReadUInt32());
            }
            return(result);
        }
Пример #10
0
        public virtual ResTable_type ReadResTable_type(ResChunk_header header)
        {
            // The config data is versioned using the "size"; newer versions are
            // larger and more data. So we need to let the ReadResTable_config
            // method know how much data it can read to prevent it from being
            // too greedy.
            var configSize = header.HeaderSize;

            configSize -= ResChunk_header.DataSize;
            configSize -= 12; // RawId, EntryCount, EntriesStart

            return(new ResTable_type
            {
                Header = header,
                RawID = ReadUInt32(),
                EntryCount = ReadUInt32(),
                EntriesStart = ReadUInt32(),
                Config = ReadResTable_config(configSize)
            });
        }
Пример #11
0
 public virtual void Write(ResChunk_header data)
 {
     _writer.Write((ushort)data.Type);
     _writer.Write(data.HeaderSize);
     _writer.Write(data.Size);
 }