private void resizeAndParse(string textToRender, int maxWidth, bool parseHTML, out int width, out int height, out int ascender) { width = 0; height = 0; ascender = 0; if (m_HtmlParser != null) { m_HtmlParser = null; } m_HtmlParser = new Reader(textToRender, parseHTML); Regions.Clear(); Images.Clear(); if (maxWidth < 0) { width = 0; } else { if (maxWidth == 0) { getTextDimensions(m_HtmlParser, 200, 0, out width, out height, out ascender); } else { getTextDimensions(m_HtmlParser, maxWidth, 0, out width, out height, out ascender); } } }
private void GetRegions() { Regions.Clear(); RegionDictionary.Clear(); var regions = File.ReadAllLines(Region_FilePath).Select(a => a.Split(';')).ToList(); foreach (var region in regions) { RegionDictionary.Add(region[0], region[1]); Regions.Add(new Region { RegionName = region[0], RegionPopulation = region[1] }); } using (var reader = new StreamReader(Region_FilePath)) { Regions.Clear(); while (!reader.EndOfStream) { var values = reader.ReadLine().Split(';'); Regions.Add(new Region { RegionName = values[0], RegionPopulation = values[1] }); } } }
public void LoadRegions() { Regions.Clear(); try { _regionService.Load(RegionFile); _rvms = new List <RegionalViewModel>(); var regions = _regionService.GetRegionsByIndex(); foreach (var region in regions) { var rgn = IoC.Get <RegionViewModel>(); rgn.Region = region; Regions.Add(rgn); RegionalViewModel rvm = new RegionalViewModel { ROI = region, }; _rvms.Add(rvm); } AXPlotModel = LoadPlotModel(_rvms, r => r.X, r => r.Y); SGPlotModel = LoadPlotModel(_rvms, r => (100 - r.Y), r => r.Z); CRPlotModel = LoadPlotModel(_rvms, r => r.X, r => r.Z); } catch (Exception) { } }
public void Rest() { Input = null; Output = null; Pixels = null; Regions.Clear(); AnalyzeException = null; _highlightedRegion = null; }
private void UpdateScanArea() { if (SelectedScanArea == null || Screenshot == null) { return; } var area = SelectedScanArea; Regions.Clear(); var region = new RegionModel { XPos = area.X, YPos = area.Y, Height = area.Height, Width = area.Width, MinHeight = 8, MinWidth = 8 }; region.Moving += (sender, args) => { if (args.X + region.Width > BoardWidth) { args.Cancel = true; return; } if (args.Y + region.Height > BoardHeight) { args.Cancel = true; return; } SelectedScanArea.X = (int)args.X; SelectedScanArea.Y = (int)args.Y; }; region.Resizing += (sender, args) => { if (region.XPos + args.Width > BoardWidth) { args.Cancel = true; return; } if (region.YPos + args.Height > BoardHeight) { args.Cancel = true; return; } SelectedScanArea.Width = (int)args.Width; SelectedScanArea.Height = (int)args.Height; }; Region = region; Regions.Add(region); }
public void Dispose() { Nodes.Clear(); MarkerGroups.Clear(); Regions.Clear(); Materials.Clear(); Bounds.Clear(); foreach (var mesh in Meshes) { mesh.Dispose(); } Meshes.Clear(); }
private void Generate(WebBrowser browser) { Regions.Clear(); foreach (var address in _addressRepository.All()) { if (!Regions.Contains(address.Province)) { Regions.Add(address.Province); } } _browser = browser; var tasks = _taskRepository.All(); var DataElementList = new List <NewInspectionDataElement>(); var values = new Dictionary <string, int>(); foreach (var item in tasks) { if (((item.Customer == SelectedCustomer) || SelectAllCustomers) && (item.DatetimeCreated != null) && (item.DateTimeEnd != null) && (item.DateTimeStart != null) && (item.ParkingLot?.Address != null)) { if ((item.DatetimeCreated < EndDateTime) && (item.DatetimeCreated > BeginDateTime) && (item.ParkingLot.Address.Province.Equals(SelectedRegion) || SelectAllRegions)) { var month = item.DatetimeCreated.ToString("MMMMM"); if (!values.ContainsKey(month)) { values.Add(month, 0); } values[month]++; } } } foreach (var item in values) { DataElementList.Add(new NewInspectionDataElement { month = item.Key, amount = item.Value.ToString() }); } var o = JsonConvert.SerializeObject(DataElementList); browser.InvokeScript("go", o); Customers.Clear(); _customerRepository.All().ForEach(Customers.Add); }
private void MakeRegions(int row, int columns) { int index = 0; Regions.Clear(); for (int rowIndex = 0; rowIndex < row; rowIndex++) { for (int columnIndex = 0; columnIndex < columns; columnIndex++) { Regions.Add(new RegionInfo() { ColumnIndex = columnIndex, RowIndex = rowIndex, Index = index++ }); } } }
public void EditorLoadSettings() { if (!Manager.IsAwake <Mods>()) { Manager.WakeUp <Mods>("__MODS"); } Mods.Get.EditorCurrentWorldName = EditorCurrentWorldName; Mods.Get.Editor.InitializeEditor(); WorldFlags.Clear(); WorldStartupPositions.Clear(); Biomes.Clear(); Regions.Clear(); AudioProfiles.Clear(); string errorMessage = string.Empty; GameData.IO.LoadWorld(ref Settings, EditorCurrentWorldName, out errorMessage); GameData.IO.SetWorldName(Settings.Name); if (SaveFlags) { Mods.Get.Editor.LoadAvailableMods <FlagSet>(WorldFlags, "FlagSet"); } if (SaveBiomes) { Mods.Get.Editor.LoadAvailableMods <Biome>(Biomes, "Biome"); } if (SaveRegions) { Mods.Get.Editor.LoadAvailableMods <Region>(Regions, "Region"); } if (SaveAudio) { Mods.Get.Editor.LoadAvailableMods <AudioProfile>(AudioProfiles, "AudioProfile"); } if (SaveStartupPositions) { Mods.Get.Editor.LoadAvailableMods <PlayerStartupPosition>(WorldStartupPositions, "PlayerStartupPosition"); } UnityEditor.EditorUtility.SetDirty(gameObject); UnityEditor.EditorUtility.SetDirty(this); }
public void Init(GameFileCache gameFileCache, Action <string> updateStatus) { var rpfman = gameFileCache.RpfMan; string filename = "common.rpf\\data\\levels\\gta5\\time.xml"; XmlDocument timexml = rpfman.GetFileXml(filename); XmlElement time = timexml.DocumentElement; XmlNode suninfo = time.SelectSingleNode("suninfo"); XmlNode mooninfo = time.SelectSingleNode("mooninfo"); XmlNodeList samples = time.SelectNodes("sample"); XmlNodeList regions = time.SelectNodes("region"); sun_roll = Xml.GetFloatAttribute(suninfo, "sun_roll"); sun_yaw = Xml.GetFloatAttribute(suninfo, "sun_yaw"); moon_roll = Xml.GetFloatAttribute(mooninfo, "moon_roll"); moon_wobble_freq = Xml.GetFloatAttribute(mooninfo, "moon_wobble_freq"); moon_wobble_amp = Xml.GetFloatAttribute(mooninfo, "moon_wobble_amp"); moon_wobble_offset = Xml.GetFloatAttribute(mooninfo, "moon_wobble_offset"); Samples.Clear(); for (int i = 0; i < samples.Count; i++) { TimecycleSample tcs = new TimecycleSample(); tcs.Init(samples[i]); Samples.Add(tcs); } Regions.Clear(); for (int i = 0; i < regions.Count; i++) { Regions.Add(Xml.GetStringAttribute(regions[i], "name")); } Inited = true; }
public void InitRegion() { Regions.Clear(); RegionIndex = 10000; UpdateRegionR(Head); }
private void GetRelated() { // Clear related Regions.Clear(); Properties.Clear(); AttachedContent.Clear(); // Get group parents DisableGroups = SysGroup.GetParents(Page.GroupId); DisableGroups.Reverse(); // Get template & permalink Template = PageTemplate.GetSingle("pagetemplate_id = @0", Page.TemplateId); Permalink = Permalink.GetSingle(Page.PermalinkId); if (Permalink == null) { // Get the site tree using (var db = new DataContext()) { var sitetree = db.SiteTrees.Where(s => s.Id == Page.SiteTreeId).Single(); Permalink = new Permalink() { Id = Guid.NewGuid(), Type = Permalink.PermalinkType.PAGE, NamespaceId = sitetree.NamespaceId }; Page.PermalinkId = Permalink.Id; } } // Get placement ref title if (!IsSite) { if (Page.ParentId != Guid.Empty || Page.Seqno > 1) { Page refpage = null; if (Page.Seqno > 1) { if (Page.ParentId != Guid.Empty) { refpage = Page.GetSingle("page_parent_id = @0 AND page_seqno = @1", Page.ParentId, Page.Seqno - 1); } else { refpage = Page.GetSingle("page_parent_id IS NULL AND page_seqno = @0", Page.Seqno - 1); } } else { refpage = Page.GetSingle(Page.ParentId, true); } PlaceRef = refpage.Title; } } if (Template != null) { // Only load regions & properties if this is an original if (Page.OriginalId == Guid.Empty) { // Get regions var regions = RegionTemplate.Get("regiontemplate_template_id = @0", Template.Id, new Params() { OrderBy = "regiontemplate_seqno" }); foreach (var rt in regions) { var reg = Region.GetSingle("region_regiontemplate_id = @0 AND region_page_id = @1 and region_draft = @2", rt.Id, Page.Id, Page.IsDraft); if (reg != null) { Regions.Add(reg); } else { Regions.Add(new Region() { InternalId = rt.InternalId, Name = rt.Name, Type = rt.Type, PageId = Page.Id, RegiontemplateId = rt.Id, IsDraft = Page.IsDraft, IsPageDraft = Page.IsDraft }); } } // Get Properties foreach (string name in Template.Properties) { Property prp = Property.GetSingle("property_name = @0 AND property_parent_id = @1 AND property_draft = @2", name, Page.Id, Page.IsDraft); if (prp != null) { Properties.Add(prp); } else { Properties.Add(new Property() { Name = name, ParentId = Page.Id, IsDraft = Page.IsDraft }); } } } } else { throw new ArgumentException("Could not find page template for page {" + Page.Id.ToString() + "}"); } // Only load attachments if this is an original if (Page.OriginalId == Guid.Empty) { // Get attached content if (Page.Attachments.Count > 0) { // Content meta data is actually memcached, so this won't result in multiple queries Page.Attachments.ForEach(a => { Models.Content c = Models.Content.GetSingle(a, true); if (c != null) { AttachedContent.Add(c); } }); } } // Get page position Parents = BuildParentPages(Sitemap.GetStructure(Page.SiteTreeInternalId, false), Page); Parents.Insert(0, new PagePlacement() { Level = 1, IsSelected = Page.ParentId == Guid.Empty }); Siblings = BuildSiblingPages(Page.Id, Page.ParentId, Page.Seqno, Page.ParentId, Page.SiteTreeInternalId); // Only load extensions if this is an original if (Page.OriginalId == Guid.Empty) { // Get extensions Extensions = Page.GetExtensions(true); } // Initialize regions foreach (var reg in Regions) { reg.Body.InitManager(this); } // Get whether comments should be enabled EnableComments = Areas.Manager.Models.CommentSettingsModel.Get().EnablePages; if (!Page.IsNew && EnableComments) { using (var db = new DataContext()) { Comments = db.Comments. Where(c => c.ParentId == Page.Id && c.ParentIsDraft == false). OrderByDescending(c => c.Created).ToList(); } } // Get the site if this is a site page if (Permalink.Type == Models.Permalink.PermalinkType.SITE) { using (var db = new DataContext()) { SiteTree = db.SiteTrees.Where(s => s.Id == Page.SiteTreeId).Single(); } } // Check if the page can be published if (Page.OriginalId != Guid.Empty) { CanPublish = Page.GetScalar("SELECT count(*) FROM page WHERE page_id=@0 AND page_draft=0", Page.OriginalId) > 0; } }
private void Generate(WebBrowser browser) { if (SelectAllCustomers == false && SelectedCustomer == null) { return; } _browser = browser; var DataElementList = new List <DataElement>(); var list = _taskRepository.All(); foreach (var item in list) { if (item.ParkingLot.Address != null && item.DateTimeEnd != null && item.DateTimeStart != null || item.Customer?.Name != null) { bool region = true; if (SelectedRegion != null && item.ParkingLot.Address != null && item.ParkingLot.Address.Province != null) { if (!item.ParkingLot.Address.Province.Equals(SelectedRegion)) { region = false; } } if ((region || SelectAllRegions == true) && item.DateTimeStart > BeginDateTime && item.DateTimeStart < EndDateTime && (item.Customer.Name == SelectedCustomer?.Name || SelectAllCustomers == true)) { var inspections = item.Inspections; List <Employee> employees = (from i in inspections from ii in i.InspectionInspectors select ii.Employee).ToList(); if (employees.Contains(SelectedEmployee) || SelectAllEmployees == true) { List <TimeSpan> spans = new List <TimeSpan>(); foreach (var i in item.Inspections) { TimeSpan span; if (i.DateTimeDone != null) { TimeSpan?tempSpan = i.DateTimeDone - i.DateTimeStarted; span = tempSpan.Value; spans.Add(span); } } if (spans.Count > 0) { double duration = spans.Average(timeSpan => timeSpan.TotalMinutes); int finalDuration = (int)duration; DataElementList.Add(new DataElement { inspection = item.Customer.Name, duration = finalDuration.ToString() }); } } } } } var o = new DataSet { data = DataElementList, ChartType = SelectedChart }; var test = JsonConvert.SerializeObject(o); browser.InvokeScript("go", test); Regions.Clear(); foreach (var address in _addressRepository.All()) { if (!Regions.Contains(address.Province)) { Regions.Add(address.Province); } } Customers.Clear(); _customerRepository.All().ForEach(Customers.Add); _userRepository.All().ForEach(Inspectors.Add); }
private void GetRelated() { // Clear related Regions.Clear(); Properties.Clear(); AttachedContent.Clear(); // Get group parents DisableGroups = SysGroup.GetParents(Page.GroupId); DisableGroups.Reverse(); // Get placement ref title if (Page.ParentId != Guid.Empty || Page.Seqno > 1) { Page refpage = null; if (Page.Seqno > 1) { if (Page.ParentId != Guid.Empty) { refpage = Page.GetSingle("page_parent_id = @0 AND page_seqno = @1", Page.ParentId, Page.Seqno - 1); } else { refpage = Page.GetSingle("page_parent_id IS NULL AND page_seqno = @0", Page.Seqno - 1); } } else { refpage = Page.GetSingle(Page.ParentId, true); } PlaceRef = refpage.Title; } // Get template & permalink Template = PageTemplate.GetSingle("pagetemplate_id = @0", Page.TemplateId); Permalink = Permalink.GetSingle(Page.PermalinkId); if (Permalink == null) { Permalink = new Permalink() { Id = Guid.NewGuid(), Type = Permalink.PermalinkType.PAGE, NamespaceId = new Guid("8FF4A4B4-9B6C-4176-AAA2-DB031D75AC03") }; Page.PermalinkId = Permalink.Id; } if (Template != null) { // Get regions var regions = RegionTemplate.Get("regiontemplate_template_id = @0", Template.Id, new Params() { OrderBy = "regiontemplate_seqno" }); foreach (var rt in regions) { var reg = Region.GetSingle("region_regiontemplate_id = @0 AND region_page_id = @1 and region_draft = @2", rt.Id, Page.Id, Page.IsDraft); if (reg != null) { Regions.Add(reg); } else { Regions.Add(new Region() { InternalId = rt.InternalId, Name = rt.Name, Type = rt.Type, PageId = Page.Id, RegiontemplateId = rt.Id, IsDraft = Page.IsDraft, IsPageDraft = Page.IsDraft }); } } // Get Properties foreach (string name in Template.Properties) { Property prp = Property.GetSingle("property_name = @0 AND property_parent_id = @1 AND property_draft = @2", name, Page.Id, Page.IsDraft); if (prp != null) { Properties.Add(prp); } else { Properties.Add(new Property() { Name = name, ParentId = Page.Id, IsDraft = Page.IsDraft }); } } } else { throw new ArgumentException("Could not find page template for page {" + Page.Id.ToString() + "}"); } // Get attached content if (Page.Attachments.Count > 0) { // Content meta data is actually memcached, so this won't result in multiple queries Page.Attachments.ForEach(a => { Models.Content c = Models.Content.GetSingle(a); if (c != null) { AttachedContent.Add(c); } }); } // Get page position Parents = BuildParentPages(Sitemap.GetStructure(false), Page); Parents.Insert(0, new PagePlacement() { Level = 1, IsSelected = Page.ParentId == Guid.Empty }); Siblings = BuildSiblingPages(Page.Id, Page.ParentId, Page.Seqno, Page.ParentId); }
public void Analyze() { Region reg; // Temprory object Bitmap inputBmp; Color currentPixelColor; CPoint currentPixel; // Current pixel location (in Input Image coordinate) // Initialize this.Output = null; Pixels = new Pixel[Input.Width, Input.Height]; currentPixel = new CPoint(); inputBmp = (Bitmap)Input; _colorIdCounter = 0; Regions.Clear(); UsedColors.Clear(); Region.ResetIdCounter(); this.AnalyzeCanceled = false; this.AnalyzeException = null; #region Fast Algorithm //try { // // Initialize // Pixels = new Pixel[Input.Width, Input.Height]; // currentPixel = new CPoint(); // inputBmp = (Bitmap)Input; // _colorIdCounter = 0; // Regions.Clear(); // UsedColors.Clear(); // Region.ResetIdCounter(); // this.AnalyzeCanceled = false; // this.AnalyzeException = null; // for (int y = 0; y < Input.Height; y++) { // for (int x = 0; x < Input.Width; x++) { // Pixels[x, y] = new Pixel(); // reg = new Region(); // Pixels[x, y].Color = inputBmp.GetPixel(x, y); // reg.ColorID = GetColorID(Pixels[x, y].Color); // Pixels[x, y].Region = reg; // } // } //} //catch (Exception e) { // AnalyzeException = e; // this.Pixels = null; // this.UsedColors = null; // this.Output = null; // GC.Collect(); // return; //} #endregion #region Complete Algorithm try { #region Scan First Row // Scan inputBmp[0, 0] reg = new Region(); currentPixel.X = 0; currentPixel.Y = 0; Pixels[0, 0] = new Pixel(); Pixels[0, 0].Region = reg; Pixels[0, 0].Color = inputBmp.GetPixel(0, 0); reg.ColorID = GetColorID(Pixels[0, 0].Color); reg.Boundaries = new Rectangle(0, 0, 1, 1); reg.GeometricSum = new Point(0, 0); reg.Pixels.Add(currentPixel); Regions.Add(reg); // Scan Pixel [1...Input.Width-1] of First Row // reg = null; for (int x = 1; x < Input.Width; x++) { currentPixel = new CPoint(); currentPixel.X = x; currentPixel.Y = 0; currentPixelColor = inputBmp.GetPixel(x, 0); if (currentPixelColor == Pixels[x - 1, 0].Color) { // Add this pixel to it's left neighbor's region reg = Pixels[x - 1, 0].Region; reg.Pixels.Add(currentPixel); reg.Boundaries.Width += 1; // reg.GeometricSum.Y = 0; // No need to set. it has already set to zero } else { // Create a new Region for currentPixel reg = new Region(GetColorID(currentPixelColor), new Rectangle(x, 0, 1, 1)); reg.Pixels.Add(currentPixel); Regions.Add(reg); } reg.GeometricSum.X += currentPixel.X; reg.GeometricSum.Y += currentPixel.Y; Pixels[x, 0] = new Pixel(); Pixels[x, 0].Color = currentPixelColor; Pixels[x, 0].Region = reg; } #endregion #region Scan Rest of Image // reg = null; for (int y = 1; (y < Input.Height) && (_continueAnalyze); y++) { #region Scan First Pixel of Current Row currentPixel = new CPoint(); currentPixel.X = 0; currentPixel.Y = y; currentPixelColor = inputBmp.GetPixel(0, y); if (currentPixelColor == Pixels[0, currentPixel.Y - 1].Color) { reg = Pixels[0, currentPixel.Y - 1].Region; reg.Boundaries.Height++; } else if (currentPixelColor == Pixels[1, currentPixel.Y - 1].Color) { reg = Pixels[1, currentPixel.Y - 1].Region; reg.Boundaries = Rectangle.Union(reg.Boundaries, new Rectangle(currentPixel.X, currentPixel.Y, 1, 1)); } else { reg = new Region(GetColorID(currentPixelColor), new Rectangle(0, currentPixel.Y, 1, 1)); Regions.Add(reg); } //reg.GeometricSum.X += currentPixel.X; reg.GeometricSum.Y += currentPixel.Y; reg.Pixels.Add(currentPixel); Pixels[0, currentPixel.Y] = new Pixel(); Pixels[0, currentPixel.Y].Region = reg; Pixels[0, currentPixel.Y].Color = currentPixelColor; #endregion #region Scan Inner Pixels of Current Row for (int x = 1; x < Input.Width - 1; x++) { currentPixel = new CPoint(); currentPixel.X = x; currentPixel.Y = y; currentPixelColor = inputBmp.GetPixel(x, y); if (currentPixelColor == Pixels[x - 1, currentPixel.Y].Color) { reg = Pixels[x - 1, currentPixel.Y].Region; } else if (currentPixelColor == Pixels[x - 1, currentPixel.Y - 1].Color) { reg = Pixels[x - 1, currentPixel.Y - 1].Region; } else if (currentPixelColor == Pixels[x, currentPixel.Y - 1].Color) { reg = Pixels[x, currentPixel.Y - 1].Region; } else if (currentPixelColor == Pixels[x + 1, currentPixel.Y - 1].Color) { reg = Pixels[x + 1, currentPixel.Y - 1].Region; } else { // Create a new region reg = new Region(); reg.ColorID = GetColorID(currentPixelColor); reg.Boundaries = new Rectangle(currentPixel.X, currentPixel.Y, 1, 1); Regions.Add(reg); } reg.GeometricSum.X += currentPixel.X; reg.GeometricSum.Y += currentPixel.Y; reg.Boundaries = Rectangle.Union(reg.Boundaries, new Rectangle(currentPixel.X, currentPixel.Y, 1, 1)); reg.Pixels.Add(currentPixel); Pixels[currentPixel.X, currentPixel.Y] = new Pixel(); Pixels[currentPixel.X, currentPixel.Y].Region = reg; Pixels[currentPixel.X, currentPixel.Y].Color = currentPixelColor; // Merge Regions with same color if ((currentPixelColor == Pixels[x - 1, currentPixel.Y - 1].Color) && (currentPixelColor == Pixels[x + 1, currentPixel.Y - 1].Color) && (Pixels[x - 1, currentPixel.Y - 1].Region.ID != Pixels[x + 1, currentPixel.Y - 1].Region.ID)) { Regions.Remove(Pixels[x + 1, currentPixel.Y - 1].Region); Pixels[x - 1, currentPixel.Y - 1].Region.Merge(Pixels[x + 1, currentPixel.Y - 1].Region, Pixels); } if ((currentPixelColor == Pixels[x - 1, currentPixel.Y].Color) && (currentPixelColor == Pixels[x + 1, currentPixel.Y - 1].Color) && (Pixels[x - 1, currentPixel.Y].Region.ID != Pixels[x + 1, currentPixel.Y - 1].Region.ID)) { Regions.Remove(Pixels[x + 1, currentPixel.Y - 1].Region); Pixels[x - 1, currentPixel.Y].Region.Merge(Pixels[x + 1, currentPixel.Y - 1].Region, Pixels); } } #endregion #region Scan Last Pixel of Current Row currentPixel = new CPoint(); currentPixel.X = Input.Width - 1; currentPixel.Y = y; currentPixelColor = inputBmp.GetPixel(currentPixel.X, currentPixel.Y); if (currentPixelColor == Pixels[currentPixel.X - 1, currentPixel.Y].Color) { reg = Pixels[currentPixel.X - 1, currentPixel.Y].Region; } else if (currentPixelColor == Pixels[currentPixel.X - 1, currentPixel.Y - 1].Color) { reg = Pixels[currentPixel.X - 1, currentPixel.Y - 1].Region; } else if (currentPixelColor == Pixels[currentPixel.X, currentPixel.Y - 1].Color) { reg = Pixels[currentPixel.X, currentPixel.Y - 1].Region; } else { reg = new Region(GetColorID(currentPixelColor), new Rectangle(currentPixel.X, currentPixel.Y, 1, 1)); Regions.Add(reg); } reg.GeometricSum.X += currentPixel.X; reg.GeometricSum.Y += currentPixel.Y; reg.Boundaries = Rectangle.Union(reg.Boundaries, new Rectangle(currentPixel.X, currentPixel.Y, 1, 1)); reg.Pixels.Add(currentPixel); Pixels[currentPixel.X, currentPixel.Y] = new Pixel(); Pixels[currentPixel.X, currentPixel.Y].Region = reg; Pixels[currentPixel.X, currentPixel.Y].Color = currentPixelColor; #endregion } #endregion } catch (Exception e) { AnalyzeException = e; this.Pixels = null; this.UsedColors = null; this.Output = null; GC.Collect(); return; } #endregion // Produce Output Image if (_continueAnalyze) { RedrawOutput(); } else { // Operations canceled, Reset object _continueAnalyze = true; this.AnalyzeCanceled = true; } }