Exemple #1
0
        protected override void ReadValue(PsdReader reader, object userData, out IProperties value)
        {
            value = new Properties();

            short version = reader.ReadInt16();
            int count = reader.ReadInt16();

            for (int i = 0; i < count; i++)
            {
                string _8bim = reader.ReadAscii(4);
                string effectType = reader.ReadAscii(4);
                int size = reader.ReadInt32();
                long p = reader.Position;

                switch (effectType)
                {
                    case "dsdw":
                        {
                            //ShadowInfo.Parse(reader);
                        }
                        break;
                    case "sofi":
                        {
                            //this.solidFillInfo = SolidFillInfo.Parse(reader);
                        }
                        break;
                }

                reader.Position = p + size;
            }
        }
        protected override void ReadValue(PsdReader reader, object userData, out IProperties value)
        {
            Properties props = new Properties();

            int version = reader.ReadInt32();

            if (version != 1)
                throw new InvalidFormatException();

            props["HorizontalGrid"] = reader.ReadInt32();
            props["VerticalGrid"] = reader.ReadInt32();

            int guideCount = reader.ReadInt32();

            List<int> hg = new List<int>();
            List<int> vg = new List<int>();

            for (int i = 0; i < guideCount; i++)
            {
                int n = reader.ReadInt32();
                byte t = reader.ReadByte();

                if (t == 0)
                    vg.Add(n);
                else
                    hg.Add(n);
            }

            props["HorizontalGuides"] = hg.ToArray();
            props["VerticalGuides"] = vg.ToArray();

            value = props;
        }
Exemple #3
0
        protected override void ReadValue(PsdReader reader, object userData, out IProperties value)
        {
            Properties props = new Properties();

            int count = reader.ReadInt32();

            List<DescriptorStructure> dss = new List<DescriptorStructure>();

            for (int i = 0; i < count; i++)
            {
                string s = reader.ReadAscii(4);
                string k = reader.ReadAscii(4);
                var c = reader.ReadByte();
                var p = reader.ReadBytes(3);
                var l = reader.ReadInt32();
                var p2 = reader.Position;
                var ds = new DescriptorStructure(reader);
                dss.Add(ds);
                reader.Position = p2 + l;
            }

            props["Items"] = dss;

            value = props;
        }
        public StructureUnitFloat(PsdReader reader)
        {
            string type = reader.ReadType();

            this.Add("Type", PsdUtility.ToUnitType(type));
            this.Add("Value", reader.ReadDouble());
        }
 public StructureEnumerateReference(PsdReader reader)
 {
     this.Add("Name", reader.ReadString());
     this.Add("ClassID", reader.ReadKey());
     this.Add("TypeID", reader.ReadKey());
     this.Add("EnumID", reader.ReadKey());
 }
        public DescriptorStructure(PsdReader reader, bool hasVersion)
        {
            if (hasVersion == true)
            {
                this.version = reader.ReadInt32();
            }

            this.Add("Name", reader.ReadString());
            this.Add("ClassID", reader.ReadKey());

            int count = reader.ReadInt32();
            for (int i = 0; i < count; i++)
            {
                string key = reader.ReadKey();
                string osType = reader.ReadType();
                if (key == "EngineData")
                {
                    this.Add(key.Trim(), new StructureEngineData(reader));
                }
                else
                {
                    object value = StructureReader.Read(osType, reader);
                    this.Add(key.Trim(), value);
                }
            }
        }
        protected override void ReadValue(PsdReader reader, object userData, out IProperties value)
        {
            Properties props = new Properties();

            int version = reader.ReadInt32();
            if (version == 6)
            {
                var r1 = reader.ReadInt32();
                var r2 = reader.ReadInt32();
                var r3 = reader.ReadInt32();
                var r4 = reader.ReadInt32();
                string text = reader.ReadString();
                var count = reader.ReadInt32();

                List<IProperties> slices = new List<IProperties>(count);
                for (int i = 0; i < count; i++)
                {
                    slices.Add(ReadSliceInfo(reader));
                }
            }
            {
                var descriptor = new DescriptorStructure(reader) as IProperties;

                var items = descriptor["slices.Items[0]"] as object[];
                List<IProperties> slices = new List<IProperties>(items.Length);
                foreach (var item in items)
                {
                    slices.Add(ReadSliceInfo(item as IProperties));
                }
                props["Items"] = slices.ToArray();
            }

            value = props;
        }
 private void ReadProperties(PsdReader reader, int level, Properties props)
 {
     reader.Skip('\t', level);
     char c = reader.ReadChar();
     if (c == ']')
     {
         return;
     }
     else if (c == '<')
     {
         reader.Skip('<');
     }
     reader.Skip('\n');
     //Properties props = new Properties();
     while (true)
     {
         reader.Skip('\t', level);
         c = reader.ReadChar();
         if (c == '>')
         {
             reader.Skip('>');
             return;
         }
         else
         {
             //assert c == 9;
             c = reader.ReadChar();
             //assert c == '/' : "unknown char: " + c + " on level: " + level;
             string name = string.Empty;
             while (true)
             {
                 c = reader.ReadChar();
                 if (c == ' ' || c == 10)
                 {
                     break;
                 }
                 name += c;
             }
             if (c == 10)
             {
                 Properties p = new Properties();
                 this.ReadProperties(reader, level + 1, p);
                 if (p.Count > 0)
                     props.Add(name, p);
                 reader.Skip('\n');
             }
             else if (c == ' ')
             {
                 object value = this.ReadValue(reader, level + 1);
                 props.Add(name, value);
             }
             else
             {
                 //assert false;
             }
         }
     }
 }
 public static ResourceReaderBase CreateReader(string resourceID, PsdReader reader, long length)
 {
     Type readerType = typeof(EmptyResourceReader);
     if (readers.ContainsKey(resourceID) == true)
     {
         readerType = readers[resourceID];
     }
     return TypeDescriptor.CreateInstance(null, readerType, new Type[] { typeof(PsdReader), typeof(long), }, new object[] { reader, length, }) as ResourceReaderBase;
 }
 public static FileHeaderSection FromFile(string filename)
 {
     using (FileStream stream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.Read))
     using (PsdReader reader = new PsdReader(stream, new PathResolver(), new Uri(Path.GetDirectoryName(filename))))
     {
         reader.ReadDocumentHeader();
         return FileHeaderSectionReader.Read(reader);
     }
 }
Exemple #11
0
        public PsdLayer(PsdReader reader, PsdDocument document)
        {
            this.document = document;
            this.records = LayerRecordsReader.Read(reader);
            this.records = LayerExtraRecordsReader.Read(reader, this.records);

            this.left = this.records.Left;
            this.top = this.records.Top;
            this.right = this.records.Right;
            this.bottom = this.records.Bottom;
        }
        protected override void ReadValue(PsdReader reader, object userData, out IProperties value)
        {
            Properties props = new Properties(5);

            props["Version"] = reader.ReadInt32();
            props["HasCompatibilityImage"] = reader.ReadBoolean();
            props["WriterName"] = reader.ReadString();
            props["ReaderName"] = reader.ReadString();
            props["FileVersion"] = reader.ReadInt32();

            value = props;
        }
 public BaseStructure(PsdReader reader)
 {
     List<object> items = new List<object>();
     int count = reader.ReadInt32();
     for (int i = 0; i < count; i++)
     {
         string type = reader.ReadType();
         object value = StructureReader.Read(type, reader);
         items.Add(value);
     }
     this.Add("Items", items.ToArray());
 }
        protected override void ReadValue(PsdReader reader, object userData, out IProperties value)
        {
            Properties props = new Properties(6);

            props["HorizontalRes"] = reader.ReadInt16();
            props["HorizontalResUnit"] = reader.ReadInt32();
            props["WidthUnit"] = reader.ReadInt16();
            props["VerticalRes"] = reader.ReadInt16();
            props["VerticalResUnit"] = reader.ReadInt32();
            props["HeightUnit"] = reader.ReadInt16();

            value = props;
        }
Exemple #15
0
        protected override void ReadValue(PsdReader reader, object userData, out IProperties value)
        {
            Properties props = new Properties();
            List<LinkedLayer> linkedLayers = new List<LinkedLayer>();
            while (reader.Position < this.EndPosition)
            {
                LinkedLayerReader r = new LinkedLayerReader(reader);
                linkedLayers.Add(r.Value);
            }

            props["Items"] = linkedLayers.ToArray();
            value = props;
        }
        private long ReadLength(PsdReader reader, string resourceID)
        {
            long length = 0;
            if (doubleTypeKeys.Contains(resourceID) && reader.Version == 2)
            {
                length = reader.ReadInt64();
            }
            else
            {
                length = reader.ReadInt32();
            }

            return (length + 3) & (~3);
        }
Exemple #17
0
        protected override void ReadValue(PsdReader reader, object userData, out IProperties value)
        {
            Properties props = new Properties(7);

            reader.ValidateInt16(1, "Typetool Version");
            props["Transforms"] = reader.ReadDoubles(6);
            props["TextVersion"] = reader.ReadInt16();
            props["Text"] = new DescriptorStructure(reader);
            props["WarpVersion"] = reader.ReadInt16();
            props["Warp"] = new DescriptorStructure(reader);
            props["Bounds"] = reader.ReadDoubles(2);

            value = props;
        }
        protected override void ReadValue(PsdReader reader, object userData, out IProperties value)
        {
            Properties props = new Properties();

            while (reader.Position < this.EndPosition)
            {
                reader.ValidateSignature(true);
                string resourceID = reader.ReadType();
                long length = this.ReadLength(reader, resourceID);

                ResourceReaderBase resourceReader = ReaderCollector.CreateReader(resourceID, reader, length);
                string resourceName = ReaderCollector.GetDisplayName(resourceID);

                props[resourceName] = resourceReader;
            }

            value = props;
        }
        protected override void ReadValue(PsdReader reader, object userData, out IProperties value)
        {
            Properties props = new Properties();

            while(reader.Position < this.EndPosition)
            {
                reader.ValidateSignature();

                string resourceID = reader.ReadInt16().ToString();
                string name = reader.ReadPascalString(2);
                long length = reader.ReadInt32();
                length += (length % 2);

                ResourceReaderBase resourceReader = ReaderCollector.CreateReader(resourceID, reader, length);
                string resourceName = ReaderCollector.GetDisplayName(resourceID);

                props[resourceName] = resourceReader;
            }

            value = props;
        }
        private static Properties ReadSliceInfo(PsdReader reader)
        {
            Properties props = new Properties();
            props["ID"] = reader.ReadInt32();
            props["GroupID"] = reader.ReadInt32();
            int origin = reader.ReadInt32();
            if (origin == 1)
            {
                int asso = reader.ReadInt32();
            }
            props["Name"] = reader.ReadString();
            int type = reader.ReadInt32();

            props["Left"] = reader.ReadInt32();
            props["Top"] = reader.ReadInt32();
            props["Right"] = reader.ReadInt32();
            props["Bottom"] = reader.ReadInt32();

            props["Url"] = reader.ReadString();
            props["Target"] = reader.ReadString();
            props["Message"] = reader.ReadString();
            props["AltTag"] = reader.ReadString();

            bool b = reader.ReadBoolean();

            string cellText = reader.ReadString();

            props["HorzAlign"] = reader.ReadInt32();
            props["VertAlign"] = reader.ReadInt32();

            props["Alpha"] = reader.ReadByte();
            props["Red"] = reader.ReadByte();
            props["Green"] = reader.ReadByte();
            props["Blue"] = reader.ReadByte();

            return props;
        }
        public StructureObjectArray(PsdReader reader)
        {
            int version = reader.ReadInt32();
            this.Add("Name", reader.ReadString());
            this.Add("ClassID", reader.ReadKey());

            int count = reader.ReadInt32();

            List<Properties> items = new List<Properties>();

            for (int i = 0; i < count; i++)
            {
                Properties props = new Properties();
                props.Add("Type1", reader.ReadKey());
                props.Add("EnumName", reader.ReadType());

                props.Add("Type2", PsdUtility.ToUnitType(reader.ReadType()));
                int d4 = reader.ReadInt32();
                props.Add("Values", reader.ReadDoubles(d4));

                items.Add(props);
            }
            this.Add("items", items.ToArray());
        }
Exemple #22
0
 public StructureBool(PsdReader reader)
 {
     Value = reader.ReadBoolean();
 }
Exemple #23
0
 public Reader_SoLE(PsdReader reader, long length)
     : base(reader, length)
 {
 }
Exemple #24
0
 private LayerBlendingRangesBlock(PsdReader reader)
 {
     Init(reader, true, null);
 }
Exemple #25
0
 protected override void ReadData(PsdReader reader, object userData)
 {
     Name = reader.ReadString();
 }
Exemple #26
0
 public Reader_lnk2(PsdReader reader, long length)
     : base(reader, length)
 {
 }
Exemple #27
0
 public StructureDescriptor(PsdReader reader)
     : this(reader, true)
 {
 }
 public StructureEnumerate(PsdReader reader)
 {
     this.Add("ScriptType", reader.ReadKey());
     this.Add("Value", reader.ReadKey());
 }
Exemple #29
0
 public Reader_PlLd(PsdReader reader, Int64 length)
     : base(reader, length)
 {
 }
Exemple #30
0
 public LayerInfoReader(PsdReader reader, PsdDocument document)
     : base(reader, true, document)
 {
 }
 public LinkedDocumentReader(PsdReader reader, long length)
     : base(reader, length, null)
 {
 }
 /// <summary>
 /// no data to read here
 /// </summary>
 protected override void ReadData(PsdReader reader, object userData)
 {
 }
 public EmptyResource(PsdReader reader, long length)
     : base(reader, length)
 {
     // irgnore the block and advance the reader position to
     // the end of the block
 }
Exemple #34
0
 protected override long ReadLength(PsdReader reader)
 {
     return(reader.ReadInt32());
 }
Exemple #35
0
        public static LayerBlendingRangesBlock Read(PsdReader reader)
        {
            LayerBlendingRangesBlock instance = new LayerBlendingRangesBlock(reader);

            return(instance);
        }
Exemple #36
0
    private static void MergeLayers(PsdReader psdReader, Graphics graphics, Func <PsdTextFrame, string> getLayerText)
    {
        for (int i = 0; i < psdReader.Frames.Count; i++)
        {
            var frame = psdReader.Frames[i];

            if (frame.Type == FrameType.Text)
            {
                var textFrame = (PsdTextFrame)frame;

                var layerText = getLayerText(textFrame);

                Text text;

                var font = graphics.CreateFont(textFrame.FontName, textFrame.FontSize);

                if (textFrame.Path != null)
                {
                    text = new PathText(textFrame.Text, font)
                    {
                        Path = textFrame.Raw.Path
                    };
                }
                else if (textFrame.TextBox.Width == 0 || textFrame.TextBox.Height == 0)
                {
                    text = new PlainText(layerText, font)
                    {
                        Position = new System.Drawing.PointF(textFrame.Raw.TextBox.Left, textFrame.Raw.TextBox.Top)
                    };
                }
                else
                {
                    text = new BoundedText(layerText, font)
                    {
                        Rectangle = textFrame.Raw.TextBox
                    };
                }

                text.Alignment = JustificationToTextAlignment(textFrame.Justification);
                text.Brush     = new SolidBrush(textFrame.Color);

                text.Tracking  = textFrame.Tracking;
                text.Transform = textFrame.Transform;

                graphics.DrawText(text);
            }
            else if (frame.Type == FrameType.Raster)
            {
                using (var frameBitmap = frame.GetBitmap())
                {
                    graphics.DrawImage(frameBitmap, frame.X, frame.Y);
                }
            }
            else if (frame.Type == FrameType.Shape)
            {
                var shapeFrame = (PsdShapeFrame)frame;

                var path = shapeFrame.VectorMask;
                graphics.FillPath(shapeFrame.Brush, path);
            }
        }
    }
Exemple #37
0
 public Reader_SlicesInfo(PsdReader reader, long length)
     : base(reader, length)
 {
 }
Exemple #38
0
 public Reader_lrFX(PsdReader reader, long length)
     : base(reader, length)
 {
 }
Exemple #39
0
 public Reader_PlLd(PsdReader reader, long length)
     : base(reader, length)
 {
 }
 protected override long OnLengthGet(PsdReader reader)
 {
     return((reader.ReadInt64() + 3) & (~3));
 }
Exemple #41
0
 protected override void ReadValue(PsdReader reader, object userData, out IProperties value)
 {
     reader.ValidateInt32(0, "lfx2 Version");
     value = new DescriptorStructure(reader, true);
 }
Exemple #42
0
        public void ReadHeader(PsdReader reader, CompressionType compressionType)
        {
            if (compressionType != CompressionType.RLE)
                return;

            this.rlePackLengths = new int[this.height];
            if (reader.Version == 1)
            {
                for (int i = 0; i < this.height; i++)
                {
                    this.rlePackLengths[i] = reader.ReadInt16();
                }
            }
            else
            {
                for (int i = 0; i < this.height; i++)
                {
                    this.rlePackLengths[i] = reader.ReadInt32();
                }
            }
        }
Exemple #43
0
 public luniResource(PsdReader reader, long length)
     : base(reader, length)
 {
 }
 public ImageResourcesSectionReader(PsdReader reader)
     : base(reader, null)
 {
 }
 public EmbeddedLayerReader(PsdReader reader)
     : base(reader, true, null)
 {
 }
 public StructureReference(PsdReader reader)
     : base(reader)
 {
 }
Exemple #47
0
        public void Read(PsdReader reader, int bpp, CompressionType compressionType)
        {
            switch (compressionType)
            {
                case CompressionType.Raw:
                    this.ReadData(reader, bpp, compressionType, null);
                    return;

                case CompressionType.RLE:
                    this.ReadData(reader, bpp, compressionType, this.rlePackLengths);
                    return;

                default:
                    break;
            }
        }
 protected override void ReadValue(PsdReader reader, Object userData, out IProperties value)
 {
     value = new Properties();
 }
Exemple #49
0
        private void ReadData(PsdReader reader, int bps, CompressionType compressionType, int[] rlePackLengths)
        {
            int length = PsdUtility.DepthToPitch(bps, this.width);
            this.data = new byte[length * this.height];
            switch (compressionType)
            {
                case CompressionType.Raw:
                    reader.Read(this.data, 0, this.data.Length);
                    break;

                case CompressionType.RLE:
                    for (int i = 0; i < this.height; i++)
                    {
                        byte[] buffer = new byte[rlePackLengths[i]];
                        byte[] dst = new byte[length];
                        reader.Read(buffer, 0, rlePackLengths[i]);
                        DecodeRLE(buffer, dst, rlePackLengths[i], length);
                        for (int j = 0; j < length; j++)
                        {
                            this.data[(i * length) + j] = (byte)(dst[j] * this.opacity);
                        }
                    }
                    break;
            }
        }
Exemple #50
0
 public GlobalLayerMaskInfoReader(PsdReader reader)
     : base(reader, true, null)
 {
 }
 protected override long OnLengthGet(PsdReader reader)
 {
     return reader.ReadInt32();
 }
Exemple #52
0
 protected override void ReadValue(PsdReader reader, object userData, out IProperties value)
 {
     Properties props = new Properties();
     props["SectionType"] = (SectionType)reader.ReadInt32();
     value = props;
 }
        public static object Read(string ostype, PsdReader reader)
        {
            switch (ostype)
            {
                case "obj ":
                    return new StructureReference(reader);

                case "Objc":
                    return new DescriptorStructure(reader, false);

                case "VlLs":
                    return new StructureList(reader);

                case "doub":
                    return reader.ReadDouble();

                case "UntF":
                    return new StructureUnitFloat(reader);

                case "TEXT":
                    return reader.ReadString();

                case "enum":
                    return new StructureEnumerate(reader);

                case "long":
                    return reader.ReadInt32();

                case "bool":
                    return reader.ReadBoolean();

                case "GlbO":
                    return new DescriptorStructure(reader, false);

                case "type":
                    return new StructureClass(reader);

                case "GlbC":
                    return new StructureClass(reader);

                case "alis":
                    return new StructureAlias(reader);

                case "tdta":
                    return new StructureUnknownOSType("Cannot read RawData");

                case "prop":
                    return new StructureProperty(reader);

                case "Clss":
                    return new StructureClass(reader);

                case "Enmr":
                    return new StructureEnumerate(reader);

                case "rele":
                    return new StructureOffset(reader);

                case "Idnt":
                    return new StructureUnknownOSType("Cannot read Identifier");

                case "indx":
                    return new StructureUnknownOSType("Cannot read Index");

                case "name":
                    return new StructureUnknownOSType("Cannot read Name");

                case "ObAr":
                    return new StructureObjectArray(reader);

            }
            throw new NotSupportedException(ostype);
        }
Exemple #54
0
 public LazyResourceDataReader(PsdReader reader, long length)
     : base(reader, length, null)
 {
 }
Exemple #55
0
 protected override long OnLengthGet(PsdReader reader)
 {
     return(reader.ReadInt32());
 }
Exemple #56
0
 public StructureClass(PsdReader reader)
 {
     this.Add("Name", reader.ReadString());
     this.Add("ClassID", reader.ReadKey());
 }
Exemple #57
0
 protected override void ReadValue(PsdReader reader, object userData, out IProperties value)
 {
     reader.ValidateInt32(0, "lfx2 Version");
     value = new DescriptorStructure(reader, true);
 }
Exemple #58
0
 protected override void ReadValue(PsdReader reader, object userData, out object value)
 {
     value = new object();
 }
Exemple #59
0
 public StructureList(PsdReader reader)
     : base(reader)
 {
 }
 public EmptyResourceReader(PsdReader reader, Int64 length)
     : base(reader, length)
 {
 }