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;
            }
        }
Example #2
0
        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);
        }