internal WindowData(MainWindow window) { _window = window; }
internal static async void KeyPress(this Canvas canvas, WindowData data, KeyEventArgs e, MainWindow mainWindow) { if (mainWindow.DragLeft || mainWindow.DragRight) return; if (data.RectangleHasFocus) { var step = 2; if (e.IsRepeat) step = 4; if (e.KeyboardDevice.IsKeyDown(Key.Back)) { await canvas.ChangeRectangle(data, -1); } if (e.KeyboardDevice.IsKeyDown(Key.Space)) { await canvas.ChangeRectangle(data, +1); } if (e.KeyboardDevice.IsKeyDown(Key.Left)) { data.FileList[data.FileIndex].Rectangles[data.RectangleIndex] = canvas.TransformRectangle(data.FileList[data.FileIndex].Rectangles[data.RectangleIndex], WindowData.Dimension.X, -step); } if (e.KeyboardDevice.IsKeyDown(Key.Right)) { data.FileList[data.FileIndex].Rectangles[data.RectangleIndex] = canvas.TransformRectangle(data.FileList[data.FileIndex].Rectangles[data.RectangleIndex], WindowData.Dimension.X, step); } if (e.KeyboardDevice.IsKeyDown(Key.Up)) { data.FileList[data.FileIndex].Rectangles[data.RectangleIndex] = canvas.TransformRectangle(data.FileList[data.FileIndex].Rectangles[data.RectangleIndex], WindowData.Dimension.Y, -step); } if (e.KeyboardDevice.IsKeyDown(Key.Down)) { data.FileList[data.FileIndex].Rectangles[data.RectangleIndex] = canvas.TransformRectangle(data.FileList[data.FileIndex].Rectangles[data.RectangleIndex], WindowData.Dimension.Y, step); } if (e.KeyboardDevice.IsKeyDown(Key.W)) { data.FileList[data.FileIndex].Rectangles[data.RectangleIndex] = canvas.TransformRectangle(data.FileList[data.FileIndex].Rectangles[data.RectangleIndex], WindowData.Dimension.Size, step); } if (e.KeyboardDevice.IsKeyDown(Key.S)) { data.FileList[data.FileIndex].Rectangles[data.RectangleIndex] = canvas.TransformRectangle(data.FileList[data.FileIndex].Rectangles[data.RectangleIndex], WindowData.Dimension.Size, -step); } if (e.KeyboardDevice.IsKeyDown(Key.Delete) && !e.IsRepeat) { canvas.RemoveRectangle(data, data.FileIndex, data.RectangleIndex); data.RectangleHasFocus = false; canvas.LoadRectangles(data, data.FileIndex); e.Handled = true; return; } } else if (e.KeyboardDevice.IsKeyDown(Key.LeftCtrl) || e.KeyboardDevice.IsKeyDown(Key.RightCtrl) && e.KeyboardDevice.IsKeyDown(Key.Z) && !e.IsRepeat) { canvas.UndoRemoveRectangle(data, ref data.FileIndex, ref data.RectangleIndex); await canvas.LoadImage(data, data.FileIndex); } else if (!(e.Key == Key.Space || e.Key == Key.Back)) { return; } data.RectangleIndex = Math.Min(Math.Max(data.RectangleIndex, 0), data.FileList[data.FileIndex].Rectangles.Count - 1); canvas.FocusRectangle(data, data.FileIndex, data.RectangleIndex); e.Handled = true; }