public ReferenceStructure(PsdBinaryReader reader) { int itemCount = reader.ReadInt32(); References = new Descriptor[itemCount]; for (int i = 0; i < itemCount; ++i) { var key = reader.ReadAsciiChars(4); Descriptor item = null; switch (key) { case Property: item = new PropertyStructure(reader); break; case Class: item = new ClassStructure(reader, key); break; case EnumeratedReferebce: item = new EnumeratedReference(reader); break; case Offset: item = new OffsetStructure(reader); break; case Identifier: item = new Integer(reader, key); break; case Index: item = new Integer(reader, key); break; case Name: item = new StringStructure(reader, key); break; } References [i] = item; } }
public static Descriptor Load(string key, PsdBinaryReader reader) { Descriptor result = null; switch (key) { case Reference: result = new ReferenceStructure(reader); break; case Descriptor: case GlobalObject: result = new DescriptorStructure(reader, key); break; case List: result = new ListStructure(reader); break; case Double: result = new DoubleStructure(reader); break; case UnitFloat: result = new UnitFloatStructure(reader); break; case String: result = new StringStructure(reader, key); break; case Enumerated: result = new EnumeratedDescriptor(reader); break; case Integer: result = new Integer(reader, key); break; case LargeInteger: result = new LargeInteger(reader); break; case Booolean: result = new BooleanStructure(reader); break; case Class1: case Class2: result = new ClassStructure(reader, key); break; case Alias: result = new AliasStructure(reader); break; case RowData: result = new RowData(reader); break; } return(result); }