93 lines
2.2 KiB
C#
93 lines
2.2 KiB
C#
|
using Quik.CommandMachine;
|
|||
|
using Quik.Controls;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Text;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace Quik.PAL
|
|||
|
{
|
|||
|
/// <summary>
|
|||
|
/// An abstraction layer over the UI input and output.
|
|||
|
/// </summary>
|
|||
|
public class QuikPort
|
|||
|
{
|
|||
|
private readonly IQuikPortHandle handle;
|
|||
|
private readonly IQuikPlatform platform;
|
|||
|
|
|||
|
public string Title
|
|||
|
{
|
|||
|
get => platform.PortGetTitle(handle);
|
|||
|
set => platform.PortSetTitle(handle, value);
|
|||
|
}
|
|||
|
|
|||
|
public QVec2 Size
|
|||
|
{
|
|||
|
get => platform.PortGetSize(handle);
|
|||
|
set => platform.PortSetSize(handle, value);
|
|||
|
}
|
|||
|
|
|||
|
public QVec2 Position
|
|||
|
{
|
|||
|
get => platform.PortGetPosition(handle);
|
|||
|
set => platform.PortSetPosition(handle, value);
|
|||
|
}
|
|||
|
|
|||
|
public UIBase UIElement { get; set; }
|
|||
|
|
|||
|
public bool IsValid => platform.PortIsValid(handle);
|
|||
|
|
|||
|
public event EventHandler EventRaised
|
|||
|
{
|
|||
|
add
|
|||
|
{
|
|||
|
platform.PortSubscribeEvent(handle, value);
|
|||
|
}
|
|||
|
remove
|
|||
|
{
|
|||
|
platform.PortUnsubscribeEvent(handle, value);
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public QuikPort(IQuikPlatform platform)
|
|||
|
{
|
|||
|
this.platform = platform;
|
|||
|
handle = platform.CreatePort();
|
|||
|
}
|
|||
|
|
|||
|
bool isDisposed = false;
|
|||
|
public void Dispose()
|
|||
|
{
|
|||
|
if (isDisposed) return;
|
|||
|
|
|||
|
platform.DestroyPort(handle);
|
|||
|
isDisposed = true;
|
|||
|
}
|
|||
|
|
|||
|
public void Focus()
|
|||
|
{
|
|||
|
platform.PortFocus(handle);
|
|||
|
}
|
|||
|
|
|||
|
public void Paint(CommandList list = null)
|
|||
|
{
|
|||
|
if (UIElement == null)
|
|||
|
return;
|
|||
|
|
|||
|
if(list == null)
|
|||
|
list = new CommandList();
|
|||
|
|
|||
|
list.Clear();
|
|||
|
UIElement.Bounds = new QRectangle(Size, new QVec2(0,0));
|
|||
|
UIElement.Paint(list);
|
|||
|
platform.PortPaint(handle, list);
|
|||
|
}
|
|||
|
|
|||
|
public void Show(bool shown = true)
|
|||
|
{
|
|||
|
platform.PortShow(handle, shown);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|