コード例 #1
0
 public VersionInfo(PsdBinaryReader reader, string name)
   : base(name)
 {
   Version = reader.ReadUInt32();
   HasRealMergedData = reader.ReadBoolean();
   ReaderName = reader.ReadUnicodeString();
   WriterName = reader.ReadUnicodeString();
   FileVersion = reader.ReadUInt32();
 }
コード例 #2
0
 public VersionInfo(PsdBinaryReader reader, string name)
     : base(name)
 {
     Version           = reader.ReadUInt32();
     HasRealMergedData = reader.ReadBoolean();
     ReaderName        = reader.ReadUnicodeString();
     WriterName        = reader.ReadUnicodeString();
     FileVersion       = reader.ReadUInt32();
 }
コード例 #3
0
ファイル: TextLayerInfo.cs プロジェクト: koppepan/PsdPlugin
        public TextLayerInfo(PsdBinaryReader reader)
        {
            reader.Seek("TEXT");
            Text = reader.ReadUnicodeString();

            reader.Seek("/Justification ");
            int alignment = reader.ReadByte() - 48;

            Alignment = TextAnchor.MiddleLeft;
            if (alignment == 1)
            {
                Alignment = TextAnchor.MiddleRight;
            }
            else if (alignment == 2)
            {
                Alignment = TextAnchor.MiddleCenter;
            }

            reader.Seek("/FontSize ");
            FontSize = reader.ReadFloat();

            reader.Seek("/FillColor");
            reader.Seek("/Values [ ");
            FillColor = ReadColor(reader);
        }
コード例 #4
0
        public ClassStructure(PsdBinaryReader reader, string key)
        {
            _key = key;

            NameFromClassID = reader.ReadUnicodeString();
            int length = reader.ReadInt32();

            ClassID = reader.ReadAsciiChars(length == 0 ? 4 : length);
        }
コード例 #5
0
        public OffsetStructure(PsdBinaryReader reader)
        {
            NameFromClassID = reader.ReadUnicodeString();

            var length = reader.ReadInt32();

            ClassID = reader.ReadAsciiChars(length == 0 ? 4 : length);

            Offset = reader.ReadInt32();
        }
コード例 #6
0
        public static DynVal ReadClass(PsdBinaryReader r)
        {
            DynVal v = new DynVal();

            v.Type        = OSType.Class;
            v.UnicodeName = r.ReadUnicodeString();
            v.classID     = ReadSpecialString(r);
            v.Name        = GetMeaningOfFourCC(v.classID);
            return(v);
        }
コード例 #7
0
        public static DynVal ReadDescriptor(PsdBinaryReader r)
        {
            DynVal v = new DynVal();

            v.UnicodeName = r.ReadUnicodeString();//r.ReadPSDUnicodeString();
            v.Type        = OSType.Descriptor;
            v.classID     = ReadSpecialString(r);
            v.Name        = GetMeaningOfFourCC(v.classID);
            v.Children    = DynVal.ReadValues(r, false);
            return(v);
        }
コード例 #8
0
        public PropertyStructure(PsdBinaryReader reader)
        {
            NameFromClassID = reader.ReadUnicodeString();

            int length = reader.ReadInt32();

            ClassID = reader.ReadAsciiChars(length == 0 ? 4 : length);

            length = reader.ReadInt32();
            KeyID  = reader.ReadAsciiChars(length == 0 ? 4 : length);
        }
コード例 #9
0
ファイル: UnicodeAlphaNames.cs プロジェクト: hgrandry/Mgx
        public UnicodeAlphaNames(PsdBinaryReader reader, string name, int resourceDataLength)
            : base(name)
        {
            var endPosition = reader.BaseStream.Position + resourceDataLength;

            while (reader.BaseStream.Position < endPosition)
            {
                var channelName = reader.ReadUnicodeString();
                ChannelNames.Add(channelName);
            }
        }
コード例 #10
0
        public UnicodeAlphaNames(PsdBinaryReader reader, string name, int resourceDataLength)
            : base(name)
        {
            var endPosition = reader.BaseStream.Position + resourceDataLength;

            while (reader.BaseStream.Position < endPosition)
            {
                var channelName = reader.ReadUnicodeString();
                ChannelNames.Add(channelName);
            }
        }
コード例 #11
0
        public static DynVal ReadOffset(PsdBinaryReader r)
        {
            DynVal v = new DynVal();

            v.Type        = OSType.OffestRef;
            v.UnicodeName = r.ReadUnicodeString();
            v.classID     = ReadSpecialString(r);
            v.Name        = GetMeaningOfFourCC(v.classID);
            v.Value       = r.ReadUInt32();
            return(v);
        }
コード例 #12
0
        public EnumeratedReference(PsdBinaryReader reader)
        {
            NameFromClassID = reader.ReadUnicodeString();

            var length = reader.ReadInt32();

            ClassID = reader.ReadAsciiChars(length == 0 ? 4 : length);
            length  = reader.ReadInt32();
            TypeID  = reader.ReadAsciiChars(length == 0 ? 4 : length);
            length  = reader.ReadInt32();
            Enum    = reader.ReadAsciiChars(length == 0 ? 4 : length);
        }
コード例 #13
0
        public static DynVal ReadProperty(PsdBinaryReader r)
        {
            DynVal v = new DynVal();

            v.UnicodeName = r.ReadUnicodeString();//r.ReadPSDUnicodeString();
            v.Type        = OSType.PropertyRef;
            v.classID     = ReadSpecialString(r);
            v.Name        = GetMeaningOfFourCC(v.classID);
            v.KeyID       = ReadSpecialString(r);

            return(v);
        }
コード例 #14
0
        public static DynVal ReadEnumeratedRef(PsdBinaryReader r)
        {
            DynVal v = new DynVal();

            v.Type        = OSType.EnumeratedRef;
            v.UnicodeName = r.ReadUnicodeString();
            v.classID     = ReadSpecialString(r);
            v.Name        = GetMeaningOfFourCC(v.classID);

            string TypeID  = ReadSpecialString(r);
            string enumVal = ReadSpecialString(r);

            v.Value = GetMeaningOfFourCC(TypeID) + "." + GetMeaningOfFourCC(enumVal);
            return(v);
        }
コード例 #15
0
        public UnicodeAlphaNames(PsdBinaryReader reader, string name, int resourceDataLength)
            : base(name)
        {
            var endPosition = reader.BaseStream.Position + resourceDataLength;

            while (reader.BaseStream.Position < endPosition)
            {
                var channelName = reader.ReadUnicodeString();

                // Photoshop writes out a null terminator for Unicode alpha names.
                // There is no null terminator on other Unicode strings in PSD files.
                if (channelName.EndsWith("\0"))
                {
                    channelName = channelName.Substring(0, channelName.Length - 1);
                }
                ChannelNames.Add(channelName);
            }
        }
コード例 #16
0
        public DescriptorStructure(PsdBinaryReader reader, string key = null)
        {
            _key        = key;
            ClassIDName = reader.ReadUnicodeString();
            var length = reader.ReadInt32();

            ClassID = reader.ReadAsciiChars(length == 0 ? 4 : length);

            var itemCount = reader.ReadInt32();

            Descriptor = new Dictionary <string, Descriptor> ();
            for (int i = 0; i < itemCount; i++)
            {
                length = reader.ReadInt32();
                string itemName = reader.ReadAsciiChars(length == 0 ? 4 : length);

                Descriptor.Add(itemName, DescriptorFactory.Load(reader));
            }
        }
コード例 #17
0
        public GradientMap(PsdBinaryReader r, string key)
        {
            m_key = key;

            uint version = r.ReadUInt32();

            //Is gradient reversed
            bool isReversed = r.ReadBoolean();
            bool isDithered = r.ReadBoolean();

            string gradientName = r.ReadUnicodeString();

            ushort numColors = r.ReadUInt16();

            ColorStops = new List <ColorStop>(numColors);
            for (int i = 0; i < numColors; i++)
            {
                ColorStops.Add(new ColorStop(r));
            }
        }
コード例 #18
0
ファイル: LayerUnicodeName.cs プロジェクト: hgrandry/Mgx
 public LayerUnicodeName(PsdBinaryReader reader)
 {
     Name = reader.ReadUnicodeString();
 }
コード例 #19
0
 public LayerUnicodeName(PsdBinaryReader reader)
 {
     Name = reader.ReadUnicodeString();
 }
コード例 #20
0
        public static DynVal ReadValue(PsdBinaryReader r, bool skipKey)
        {
            DynVal vt = new DynVal();

            if (!skipKey)
            {
                vt.Name = GetMeaningOfFourCC(ReadSpecialString(r));
            }

            //TODO: should be assigned a sequential number?
            vt.Type = parseTypeString(System.Text.Encoding.ASCII.GetString(r.ReadBytes(4)));
            switch (vt.Type)
            {
            case  OSType.tdta:
                // unknown
                r.ReadUInt32();
                TdTaParser p = new TdTaParser(r);
                object     o = p.ParseOneTree();
                vt.Value = o;

                break;

            case  OSType.Descriptor:
                vt = DynVal.ReadDescriptor(r);
                break;

            case OSType.List:
                vt.Children = ReadValues(r, true);
                break;

            case OSType.Double:
                vt.Value = r.ReadDouble();
                break;

            case OSType.UnitFloat:                                                                     //Unif float
                //TODO: need a specific type for this, with a double and a type (percent/pixel)?
                string tst = GetMeaningOfFourCC(System.Text.Encoding.ASCII.GetString(r.ReadBytes(4))); //#Prc #Pxl #Ang = percent / pixels / angle?
                double d   = r.ReadDouble();
                tst     += ": " + d;
                vt.Value = tst;
                break;

            case OSType.Enumerated:
                string namesp = ReadSpecialString(r);
                string item   = ReadSpecialString(r);
                //vt.Value = namesp + "." + item; //TODO: cast to real enum
                vt.Value = GetMeaningOfFourCC(namesp) + "." + GetMeaningOfFourCC(item);
                break;

            case OSType.Integer:
                vt.Value = r.ReadInt32();     //4 byte integer
                break;

            case OSType.Boolean:
                vt.Value = r.ReadBoolean();
                break;

            case  OSType.String:
                vt.Value = r.ReadUnicodeString();                        //r.ReadPSDUnicodeString();
                break;

            default:
                throw new Exception("Unhandled type: " + vt.Type);
            }
            return(vt);
        }
コード例 #21
0
 public StringStructure(PsdBinaryReader reader, string key)
 {
     _key = key;
     Text = reader.ReadUnicodeString();
 }
コード例 #22
0
        public static DynVal ReadValue(PsdBinaryReader r, bool skipKey)
        {
            DynVal vt = new DynVal();

            if (!skipKey)
            {
                vt.Name = GetMeaningOfFourCC(ReadSpecialString(r));
            }

            //TODO: should be assigned a sequential number?
            vt.Type = parseTypeString(r.ReadAsciiChars(4));
            switch (vt.Type)
            {
            case OSType.tdta:
                // unknown
                r.ReadUInt32();
                TdTaParser p = new TdTaParser(r);
                object     o = p.ParseOneTree();
                vt.Value = o;

                break;

            case OSType.Reference:
                vt.References = ReadValues(r, true);
                break;

            case OSType.Descriptor:
                vt.Value = DynVal.ReadDescriptor(r);
                break;

            case OSType.List:
                vt.Children = ReadValues(r, true);
                break;

            case OSType.Double:
                vt.Value = r.ReadDouble();
                break;

            case OSType.UnitFloat:                                    //Unif float
                string tst = GetMeaningOfFourCC(r.ReadAsciiChars(4)); //#Prc #Pxl #Ang = percent / pixels / angle?
                double d   = r.ReadDouble();
                tst     += ": " + d;
                vt.Value = tst;
                break;

            case OSType.Enumerated:
                string typeID  = ReadSpecialString(r);
                string enumVal = ReadSpecialString(r);
                vt.Value = GetMeaningOfFourCC(typeID) + "." + GetMeaningOfFourCC(enumVal);
                break;

            case OSType.Integer:
                vt.Value = r.ReadInt32();     //4 byte integer
                break;

            case OSType.Boolean:
                vt.Value = r.ReadBoolean();
                break;

            case OSType.String:
                vt.Value = r.ReadUnicodeString();    //r.ReadPSDUnicodeString();
                break;

            case OSType.LargeInteger:
                vt.Value = r.ReadInt64();
                break;

            case OSType.Class:
                vt.Value = ReadClass(r);
                break;

            case OSType.Alias:
                vt.Value = ReadAlias(r);
                break;

            case OSType.PropertyRef:
                vt.Value = ReadProperty(r);
                break;

            case OSType.EnumeratedRef:
                vt.Value = ReadEnumeratedRef(r);
                break;

            case OSType.OffestRef:
                vt.Value = ReadOffset(r);
                break;

            case OSType.IdentifierRef:
                vt.Value = r.ReadAsciiChars(4);
                break;

            case OSType.IndexRef:
                vt.Value = r.ReadUInt16();
                break;

            case OSType.NameRef:
                vt.Value = r.ReadAsciiChars(4);
                break;

            default:
                throw new Exception("Unhandled type: " + vt.Type);
            }
            return(vt);
        }