/////////////////////////////////////////////////////////////////////////// private void SaveGlobalLayerMask(PsdBinaryWriter writer) { Util.DebugMessage(writer.BaseStream, "Save, Begin, GlobalLayerMask"); if (AdditionalInfo.Exists(x => x.Key == "LMsk")) { writer.Write((UInt32)0); Util.DebugMessage(writer.BaseStream, "Save, End, GlobalLayerMask"); return; } writer.Write((UInt32)_globalLayerMaskData.Length); writer.Write(_globalLayerMaskData); Util.DebugMessage(writer.BaseStream, "Save, End, GlobalLayerMask"); }
/// <summary> /// Saves the Layers Info section, including headers and padding. /// </summary> /// <param name="writer">The PSD writer.</param> internal void SaveLayers(PsdBinaryWriter writer) { Util.DebugMessage(writer.BaseStream, "Save, Begin, Layers Info section"); using (new PsdBlockLengthWriter(writer, IsLargeDocument)) { var startPosition = writer.BaseStream.Position; // Only one set of Layers can exist in the file. If layers will be // written to the Additional Info section, then the Layers section // must be empty to avoid conflict. var hasInfoLayers = AdditionalInfo.Exists(x => x is InfoLayers); if (!hasInfoLayers) { SaveLayersData(writer); } // Documentation states that the Layers Info section is even-padded, // but it is actually padded to a multiple of 4. writer.WritePadding(startPosition, 4); } Util.DebugMessage(writer.BaseStream, "Save, End, Layers Info section"); }