46 lines
1.4 KiB
C#
46 lines
1.4 KiB
C#
using System.Drawing;
|
|
using System.Linq;
|
|
using CC_Functions.W32;
|
|
|
|
namespace Resizor
|
|
{
|
|
internal class WindowSizeSetter
|
|
{
|
|
public readonly Wnd32 Window;
|
|
public Rectangle Pos;
|
|
|
|
private WindowSizeSetter(Wnd32 window, Rectangle pos)
|
|
{
|
|
Window = window;
|
|
Pos = pos;
|
|
}
|
|
|
|
public static void Make(Wnd32 window, Rectangle pos)
|
|
{
|
|
WindowSizeSetter[] match = Program.Ctx.WindowSizeSetters.Where(s => s.Window == window).ToArray();
|
|
switch (match.Length)
|
|
{
|
|
case 0:
|
|
Program.Ctx.WindowSizeSetters.Add(new WindowSizeSetter(window, pos));
|
|
break;
|
|
case 1:
|
|
match[0].Pos = pos;
|
|
break;
|
|
default:
|
|
for (int i = 0; i < match.Length; i++)
|
|
if (i == match.Length - 1)
|
|
match[0].Pos = pos;
|
|
else
|
|
Program.Ctx.WindowSizeSetters.Remove(match[i]);
|
|
break;
|
|
}
|
|
}
|
|
|
|
public static void TryRemove(Wnd32 window)
|
|
{
|
|
WindowSizeSetter[] match = Program.Ctx.WindowSizeSetters.Where(s => s.Window == window).ToArray();
|
|
if (match.Length > 0)
|
|
Program.Ctx.WindowSizeSetters.RemoveAll(s => s.Window == window);
|
|
}
|
|
}
|
|
} |