/// <summary> /// Stops creating a region /// </summary> public void StopCreatingRegion() { if (_currently_creating_region != null) { RemoveSmallRegion(); } _currently_creating_region = null; }
/// <summary> /// Given a point, will create a new region if we did not click on a separate region /// </summary> /// <param name="p"></param> public void StartCreatingRegion(Point p) { if (InputPack.SelectedRegionBrush.SelectedEmulatedDevice == null || InputPack.SelectedRegionBrush.SelectedEmulatedKey == null) { return; } foreach (Data.RectRegion r in InputPack.EditingTexture.Regions) { if (p.X > r.ScaledX && p.X < (r.X + r.ScaledWidth) && p.Y > r.ScaledY && p.Y < (r.Y + r.ScaledHeight)) { _currently_creating_region = null; return; } } if (InputPack.SelectedRegionBrush.FillRegion) { _currently_creating_region = new Data.RectRegion() { ScaleFactor = InputPack.EditingTexture.ScaleFactor, X = 0, Y = 0, Height = InputPack.EditingTexture.ImageHeight, Width = InputPack.EditingTexture.ImageWidth, Device = InputPack.SelectedRegionBrush.SelectedEmulatedDevice, Key = InputPack.SelectedRegionBrush.SelectedEmulatedKey, OwnedTexture = InputPack.EditingTexture }; } else { _currently_creating_region = new Data.RectRegion() { ScaleFactor = InputPack.EditingTexture.ScaleFactor, X = p.X, Y = p.Y, Height = 1, Width = 1, Device = InputPack.SelectedRegionBrush.SelectedEmulatedDevice, Key = InputPack.SelectedRegionBrush.SelectedEmulatedKey, OwnedTexture = InputPack.EditingTexture }; } InputPack.EditingTexture.Regions.Add(_currently_creating_region); if (InputPack.SelectedRegionBrush.FillRegion) { // No need to continue, operation is finished _currently_creating_region = null; } }