/// <summary> /// Additional operations to be performed when cloning an instance of <see cref="AzureUtilizationRecord" /> to an instance of <see cref="PSAzureUtilizationRecord" />. /// </summary> /// <param name="utilizationRecord">The utilization record being cloned.</param> private void CloneAdditionalOperations(AzureUtilizationRecord utilizationRecord) { this.CopyFrom(utilizationRecord?.InstanceData); this.CopyFrom(utilizationRecord?.Resource); if (utilizationRecord?.InstanceData != null && utilizationRecord.InstanceData.AdditionalInfo != null) { foreach (KeyValuePair <string, string> item in utilizationRecord.InstanceData.AdditionalInfo) { AdditionalInfo.Add(item); } } if (utilizationRecord?.InfoFields != null) { foreach (KeyValuePair <string, string> item in utilizationRecord.InfoFields) { InfoFields.Add(item); } } if (utilizationRecord?.InstanceData != null && utilizationRecord.InstanceData.Tags != null) { foreach (KeyValuePair <string, string> item in utilizationRecord.InstanceData.Tags) { Tags.Add(item); } } }
/////////////////////////////////////////////////////////////////////////// public void PrepareSave() { foreach (var ch in Channels) { ch.CompressImageData(); } // Create or update the Unicode layer name to be consistent with the // ANSI layer name. var layerUnicodeNames = AdditionalInfo.Where(x => x is LayerUnicodeName); if (layerUnicodeNames.Count() > 1) { throw new PsdInvalidException("Layer has more than one LayerUnicodeName."); } var layerUnicodeName = (LayerUnicodeName)layerUnicodeNames.FirstOrDefault(); if (layerUnicodeName == null) { layerUnicodeName = new LayerUnicodeName(Name); AdditionalInfo.Add(layerUnicodeName); } else if (layerUnicodeName.Name != Name) { layerUnicodeName.Name = Name; } }
/////////////////////////////////////////////////////////////////////////// private void LoadLayerAndMaskInfo(PsdBinaryReader reader) { Debug.WriteLine("LoadLayerAndMaskInfo started at " + reader.BaseStream.Position.ToString(CultureInfo.InvariantCulture)); var layersAndMaskLength = reader.ReadUInt32(); if (layersAndMaskLength <= 0) { return; } var startPosition = reader.BaseStream.Position; var endPosition = startPosition + layersAndMaskLength; LoadLayers(reader, true); LoadGlobalLayerMask(reader); //----------------------------------------------------------------------- // Load Additional Layer Information while (reader.BaseStream.Position < endPosition) { var info = LayerInfoFactory.Load(reader); AdditionalInfo.Add(info); if (info is RawLayerInfo) { var layerInfo = (RawLayerInfo)info; switch (info.Key) { case "Layr": case "Lr16": case "Lr32": using (var memoryStream = new MemoryStream(layerInfo.Data)) using (var memoryReader = new PsdBinaryReader(memoryStream, reader)) { LoadLayers(memoryReader, false); } break; case "LMsk": GlobalLayerMaskData = layerInfo.Data; break; } } } //----------------------------------------------------------------------- // make sure we are not on a wrong offset, so set the stream position // manually reader.BaseStream.Position = startPosition + layersAndMaskLength; }
public AppTextExceptionFormatter(TextWriter writer, Exception exception, Guid handlingInstanceId) : base(writer, exception, handlingInstanceId) { if (exception is System.Net.WebException) { AdditionalInfo.Add("Status", ((System.Net.WebException)exception).Status.ToString()); } else if (exception is System.Web.Services.Protocols.SoapException) { AdditionalInfo.Add("Actor", ((SoapException)exception).Actor); } }
/////////////////////////////////////////////////////////////////////////// private void LoadLayerAndMaskInfo(PsdBinaryReader reader) { Util.DebugMessage(reader.BaseStream, "Load, Begin, Layer and mask info"); var layersAndMaskLength = IsLargeDocument ? reader.ReadInt64() : reader.ReadUInt32(); if (layersAndMaskLength <= 0) { return; } var startPosition = reader.BaseStream.Position; var endPosition = startPosition + layersAndMaskLength; LoadLayers(reader, true); LoadGlobalLayerMask(reader); //----------------------------------------------------------------------- // Load Additional Layer Information while (reader.BaseStream.Position < endPosition) { var info = LayerInfoFactory.Load(reader, psdFile: this, globalLayerInfo: true, endPosition); AdditionalInfo.Add(info); if (info is RawLayerInfo) { var layerInfo = (RawLayerInfo)info; switch (info.Key) { case "LMsk": m_GlobalLayerMaskData = layerInfo.Data; break; } } } Util.DebugMessage(reader.BaseStream, "Load, End, Layer and mask info"); //----------------------------------------------------------------------- // make sure we are not on a wrong offset, so set the stream position // manually reader.BaseStream.Position = startPosition + layersAndMaskLength; }
public Layer(PsdBinaryReader reader, PsdFile psdFile) : this(psdFile) { IsText = false; Rect = reader.ReadRectangle(); //----------------------------------------------------------------------- // Read channel headers. Image data comes later, after the layer header. int numberOfChannels = reader.ReadUInt16(); for (int channel = 0; channel < numberOfChannels; channel++) { var ch = new Channel(reader, this); Channels.Add(ch); } //----------------------------------------------------------------------- // var signature = reader.ReadAsciiChars(4); if (signature != "8BIM") { throw (new PsdInvalidException("Invalid signature in layer header.")); } BlendModeKey = reader.ReadAsciiChars(4); Opacity = reader.ReadByte(); Clipping = reader.ReadBoolean(); var flagsByte = reader.ReadByte(); flags = new BitVector32(flagsByte); reader.ReadByte(); //padding //----------------------------------------------------------------------- // This is the total size of the MaskData, the BlendingRangesData, the // Name and the AdjustmentLayerInfo. var extraDataSize = reader.ReadUInt32(); var extraDataStartPosition = reader.BaseStream.Position; Masks = new MaskInfo(reader, this); BlendingRangesData = new BlendingRanges(reader, this); Name = reader.ReadPascalString(4); //----------------------------------------------------------------------- // Process Additional Layer Information long adjustmentLayerEndPos = extraDataStartPosition + extraDataSize; while (reader.BaseStream.Position < adjustmentLayerEndPos) { var layerInfo = LayerInfoFactory.Load(reader); AdditionalInfo.Add(layerInfo); } foreach (var adjustmentInfo in AdditionalInfo) { switch (adjustmentInfo.Key) { case "luni": Name = ((LayerUnicodeName)adjustmentInfo).Name; break; case "TySh": IsText = true; LayerText = (LayerText)adjustmentInfo; break; } } }