protected override void ReadValue(PsdReader reader, Object userData, out IProperties value) { value = new Properties(); Int16 version = reader.ReadInt16(); Int32 count = reader.ReadInt16(); for (Int32 i = 0; i < count; i++) { String _8bim = reader.ReadAscii(4); String effectType = reader.ReadAscii(4); Int32 size = reader.ReadInt32(); Int64 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 ReadData(PsdReader reader, object userData) { 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) { 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 ReadData(PsdReader reader, object userData) { 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(); }
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; }
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; }
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(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 FileHeaderSection value) { value = new FileHeaderSection(); value.NumberOfChannels = reader.ReadInt16(); value.Height = reader.ReadInt32(); value.Width = reader.ReadInt32(); value.Depth = reader.ReadInt16(); value.ColorMode = reader.ReadColorMode(); if (value.Depth != 8) { throw new NotSupportedException("only support 8 Bit Channel"); } }
protected override void ReadValue(PsdReader reader, object userData, out PsdLayer[] value) { PsdDocument document = userData as PsdDocument; int layerCount = Math.Abs((int)reader.ReadInt16()); PsdLayer[] layers = new PsdLayer[layerCount]; for (int i = 0; i < layerCount; i++) { layers[i] = new PsdLayer(reader, document); } foreach (var item in layers) { item.ReadChannels(reader); } layers = Initialize(null, layers); foreach (var item in layers.SelectMany(item => item.Descendants()).Reverse()) { item.ComputeBounds(); } value = layers; }
private static Channel[] ReadValue(PsdReader reader, PsdDocument document) { int channelCount = document.FileHeaderSection.NumberOfChannels; int width = document.Width; int height = document.Height; int depth = document.FileHeaderSection.Depth; CompressionType compressionType = (CompressionType)reader.ReadInt16(); ChannelType[] types = new ChannelType[] { ChannelType.Red, ChannelType.Green, ChannelType.Blue, ChannelType.Alpha }; Channel[] channels = new Channel[channelCount]; for (int i = 0; i < channels.Length; i++) { ChannelType type = i < types.Length ? types[i] : ChannelType.Mask; channels[i] = new Channel(type, width, height, 0); channels[i].ReadHeader(reader, compressionType); } for (int i = 0; i < channels.Length; i++) { channels[i].Read(reader, depth, compressionType); } if (channels.Length == 4) { for (int i = 0; i < channels[3].Data.Length; i++) { float a = channels[3].Data[i] / 255.0f; for (int j = 0; j < 3; j++) { float r = channels[j].Data[i] / 255.0f; float r1 = (((a + r) - 1f) * 1f) / a; channels[j].Data[i] = (byte)(r1 * 255.0f); } } } return(channels.OrderBy(item => item.Type).ToArray()); }
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; }
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; }
protected override void ReadData(PsdReader reader, object userData) { var list = new List <IResourceBlock>(); while (reader.Position < this.EndPosition) { reader.ValidateSignature(); string resourceID = reader.ReadInt16().ToString(); string name = reader.ReadPascalString(2); long length = reader.ReadInt32(); length += (length % 2); var resourceReader = ReaderCollector.CreateReader(resourceID, reader, length); string resourceName = ReaderCollector.GetDisplayName(resourceID); list.Add(resourceReader); } Resources = list.ToArray(); }
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(); }
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(); } } }
private Object ReadValue(PsdReader reader, Int32 level) { Char c = reader.ReadChar(); if (c == ']') { return(null); } else if (c == '(') { // unicode string String text = String.Empty; Int32 stringSignature = reader.ReadInt16() & 0xFFFF; //assert stringSignature == 0xFEFF; while (true) { Char b1 = reader.ReadChar(); if (b1 == ')') { reader.Skip('\n'); return(text); } Char b2 = reader.ReadChar(); if (b2 == '\\') { b2 = reader.ReadChar(); } if (b2 == 13) { text += '\n'; } else { text += (Char)((b1 << 8) | b2); } } } else if (c == '[') { ArrayList list = new ArrayList(); // array c = reader.ReadChar(); while (true) { if (c == ' ') { Object val = this.ReadValue(reader, level); if (val == null) { reader.Skip('\n'); return(list); } else { list.Add(val); } } else if (c == 10) { Properties p = new Properties(); this.ReadProperties(reader, level, p); reader.Skip('\n'); if (p.Count == 0) { return(list); } else { list.Add(p); } } else { //assert false; } } } else { String value = String.Empty; do { value += c; c = reader.ReadChar(); }while (c != 10 && c != ' '); { Int32 f; if (Int32.TryParse(value, out f) == true) { return(f); } } { Single f; if (Single.TryParse(value, out f) == true) { return(f); } } { Boolean f; if (Boolean.TryParse(value, out f) == true) { return(f); } } return(value); } }
private object ReadValue(PsdReader reader, int level) { char c = reader.ReadChar(); if (c == ']') { return(null); } else if (c == '(') { // unicode string string text = string.Empty; int stringSignature = reader.ReadInt16() & 0xFFFF; //assert stringSignature == 0xFEFF; while (true) { char b1 = reader.ReadChar(); if (b1 == ')') { reader.Skip('\n'); return(text); } char b2 = reader.ReadChar(); if (b2 == '\\') { b2 = reader.ReadChar(); } if (b2 == 13) { text += '\n'; } else { text += (char)((b1 << 8) | b2); } } } else if (c == '[') { ArrayList list = new ArrayList(); // array c = reader.ReadChar(); while (true) { if (c == ' ') { object val = this.ReadValue(reader, level); if (val == null) { reader.Skip('\n'); return(list); } else { list.Add(val); } } else if (c == 10) { Properties p = new Properties(); this.ReadProperties(reader, level, p); reader.Skip('\n'); if (p.Count == 0) { return(list); } else { list.Add(p); } } else { //assert false; } } } else { string value = string.Empty; do { value += c; c = reader.ReadChar(); }while (c != 10 && c != ' '); { int f; if (int.TryParse(value, out f) == true) { return(f); } } { float f; if (float.TryParse(value, out f) == true) { return(f); } } { bool f; if (bool.TryParse(value, out f) == true) { return(f); } } return(value); } }
private object ReadValue(PsdReader reader, int level) { char c = reader.ReadChar(); if (c == ']') { return null; } else if (c == '(') { // unicode string string text = string.Empty; int stringSignature = reader.ReadInt16() & 0xFFFF; //assert stringSignature == 0xFEFF; while (true) { char b1 = reader.ReadChar(); if (b1 == ')') { reader.Skip('\n'); return text; } char b2 = reader.ReadChar(); if (b2 == '\\') { b2 = reader.ReadChar(); } if (b2 == 13) { text += '\n'; } else { text += (char)((b1 << 8) | b2); } } } else if (c == '[') { ArrayList list = new ArrayList(); // array c = reader.ReadChar(); while (true) { if (c == ' ') { object val = this.ReadValue(reader, level); if (val == null) { reader.Skip('\n'); return list; } else { list.Add(val); } } else if (c == 10) { Properties p = new Properties(); this.ReadProperties(reader, level, p); reader.Skip('\n'); if (p.Count == 0) { return list; } else { list.Add(p); } } else { //assert false; } } } else { string value = string.Empty; do { value += c; c = reader.ReadChar(); } while (c != 10 && c != ' '); { int f; if (int.TryParse(value, out f) == true) return f; } { float f; if (float.TryParse(value, out f) == true) return f; } { bool f; if (bool.TryParse(value, out f) == true) return f; } return value; } }