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; }
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; }
protected override void ReadValue(PsdReader reader, object userData, out byte[] value) { if (this.Length > 0) { value = reader.ReadBytes((int)this.Length); } else { value = new byte[] { }; } }
protected override void ReadData(PsdReader reader, object userData) { if (this.Length > 0) { ColorModeData = reader.ReadBytes((int)this.Length); } else { ColorModeData = new byte[] { }; } }
protected override void ReadData(PsdReader reader, object userData) { PsdLayer layer = userData as PsdLayer; LayerRecords records = layer.Records; using (MemoryStream stream = new MemoryStream(reader.ReadBytes((int)this.Length))) using (PsdReader r = new PsdReader(stream, reader.Resolver, reader.Uri)) { r.Version = reader.Version; this.ReadValue(r, layer.Depth, records.Channels); } Channels = records.Channels; }
protected override void ReadValue(PsdReader reader, object userData, out IProperties value) { Properties props = new Properties(1); // There seems a undocumented zero padding in XMP block... // TODO: Find the XMP document that explains how it works byte[] bytes = reader.ReadBytes((int)Length); byte[] truncatedByteArray = _RemoveTailingZeros(bytes); string xmpString = Encoding.UTF8.GetString(truncatedByteArray); props.Add("Xmp", xmpString); value = props; }
protected override void ReadData(PsdReader reader, object userData) { int count = reader.ReadInt32(); List <StructureDescriptor> dss = new List <StructureDescriptor>(); 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 StructureDescriptor(reader); dss.Add(ds); reader.Position = p2 + l; } //props["Items"] = dss; }
protected override void ReadData(PsdReader reader, object userData) { var version = reader.ReadInt32(); var flags = reader.ReadUInt32(); var bezierDescriptors = new List<BezierDescriptor>(); while (reader.Position + 26 <= EndPosition) { var descriptor = reader.ReadUInt16(); switch (descriptor) { case 0: { var subpath = new BezierSubpathRecord(); bezierDescriptors.Add(subpath); subpath.Descriptor = descriptor; subpath.IsClosed = true; subpath.NumPoints = reader.ReadInt16(); reader.ReadBytes(22); break; } case 3: { var subpath = new BezierSubpathRecord(); bezierDescriptors.Add(subpath); subpath.Descriptor = descriptor; subpath.NumPoints = reader.ReadInt16(); reader.ReadBytes(22); break; } case 1: case 2: case 4: case 5: { var knot = new BezierKnot(); bezierDescriptors.Add(knot); knot.Descriptor = descriptor; knot.Point1Y = ReadBezierPoint(reader); knot.Point1X = ReadBezierPoint(reader); knot.Point2Y = ReadBezierPoint(reader); knot.Point2X = ReadBezierPoint(reader); knot.Point3Y = ReadBezierPoint(reader); knot.Point3X = ReadBezierPoint(reader); break; } case 6: { var record = new BezierPathFillRuleRecord(); bezierDescriptors.Add(record); record.Descriptor = descriptor; reader.ReadBytes(24); break; } case 7: { var record = new BezierClipboardRecord(); bezierDescriptors.Add(record); record.Descriptor = descriptor; reader.ReadBytes(24); break; } case 8: { var record = new BezierInitialFillRuleRecord(); bezierDescriptors.Add(record); record.Descriptor = descriptor; record.FillStartMode = reader.ReadInt16(); reader.ReadBytes(22); break; } default: reader.ReadBytes(24); break; } } Beziers = bezierDescriptors.ToArray(); }