Ejemplo n.º 1
0
        ///////////////////////////////////////////////////////////////////////////

        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");
        }
Ejemplo n.º 2
0
        /// <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");
        }