-
Notifications
You must be signed in to change notification settings - Fork 0
/
Program.cs
62 lines (51 loc) · 1.7 KB
/
Program.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
using System;
using System.Collections.Generic;
using System.IO;
using System.Runtime.InteropServices;
using System.Text;
using NativeFileDialogSharp;
using SkiaSharp;
namespace KeyPaint
{
static class Program
{
[DllImport("kernel32.dll", SetLastError = true)]
public static extern int FreeConsole();
private static GraphicsWindow Window = default!;
private static readonly DrawEngine DrawEngine = new();
const int WindowWidth = 1200;
const int WindowHeight = 900;
static void Main()
{
DetachConsoleWindow();
Window = new GraphicsWindow("KeyPaint", WindowWidth, WindowHeight);
Window.OnFrame += OnFrame;
Window.OnLoaded += OnWindowLoaded;
Window.Start();
}
static void OnWindowLoaded()
{
foreach (var keyboard in Window.Input.Keyboards)
{
keyboard.KeyDown += (_, key, _) => DrawEngine.KeyMapper.HandleKeyDown(key);
keyboard.KeyUp += (_, key, _) => DrawEngine.KeyMapper.HandleKeyUp(key);
}
DrawEngine.SetCanvasSize(WindowWidth, WindowHeight);
DrawEngine.OnRenderRequest += Window.RequestNewFrame;
Window.RequestNewFrame();
}
static void DetachConsoleWindow()
{
if (RuntimeInformation.IsOSPlatform(OSPlatform.Windows))
{
Console.WriteLine("Running on Windows");
// Console.WriteLine("Detaching the console");
// _ = FreeConsole();
}
}
static void OnFrame(SKCanvas canvas)
{
DrawEngine.DrawOnCanvas(canvas);
}
}
}