public VersionInfo(PsdBinaryReader reader, string name) : base(name) { Version = reader.ReadUInt32(); HasRealMergedData = reader.ReadBoolean(); ReaderName = reader.ReadUnicodeString(); WriterName = reader.ReadUnicodeString(); FileVersion = reader.ReadUInt32(); }
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); }
public ClassStructure(PsdBinaryReader reader, string key) { _key = key; NameFromClassID = reader.ReadUnicodeString(); int length = reader.ReadInt32(); ClassID = reader.ReadAsciiChars(length == 0 ? 4 : length); }
public OffsetStructure(PsdBinaryReader reader) { NameFromClassID = reader.ReadUnicodeString(); var length = reader.ReadInt32(); ClassID = reader.ReadAsciiChars(length == 0 ? 4 : length); Offset = reader.ReadInt32(); }
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); }
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); }
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); }
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); } }
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); }
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); }
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); }
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); }
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); } }
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)); } }
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)); } }
public LayerUnicodeName(PsdBinaryReader reader) { Name = reader.ReadUnicodeString(); }
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); }
public StringStructure(PsdBinaryReader reader, string key) { _key = key; Text = reader.ReadUnicodeString(); }
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); }