Initial import of ViperOS
This commit is contained in:
93
vpsdk/window.py
Normal file
93
vpsdk/window.py
Normal file
@@ -0,0 +1,93 @@
|
||||
import t, c
|
||||
from . import syscall as syscall
|
||||
from stdint import *
|
||||
|
||||
STYLE_CLASSIC: t.CDefine = 0
|
||||
STYLE_WIN10: t.CDefine = 1
|
||||
STYLE_WIN11: t.CDefine = 2
|
||||
STYLE_WIN7: t.CDefine = 3
|
||||
STYLE_WINXP: t.CDefine = 4
|
||||
|
||||
EVENT_TYPE_NONE: t.CDefine = 0
|
||||
EVENT_TYPE_CLICK: t.CDefine = 1
|
||||
EVENT_TYPE_HOVER: t.CDefine = 2
|
||||
EVENT_TYPE_RELEASE: t.CDefine = 3
|
||||
EVENT_TYPE_HOVER_LEAVE: t.CDefine = 4
|
||||
EVENT_TYPE_KEY: t.CDefine = 5
|
||||
EVENT_TYPE_KEY_RELEASE: t.CDefine = 6
|
||||
EVENT_TYPE_PING: t.CDefine = 7
|
||||
EVENT_TYPE_RESIZE: t.CDefine = 8
|
||||
|
||||
KEY_STATE_PRESS: t.CDefine = 1
|
||||
KEY_STATE_RELEASE: t.CDefine = 2
|
||||
KEY_STATE_REPEAT: t.CDefine = 3
|
||||
|
||||
CURSOR_DEFAULT: t.CDefine = 0
|
||||
CURSOR_IBEAM: t.CDefine = 1
|
||||
CURSOR_RESIZE_EW: t.CDefine = 2
|
||||
CURSOR_RESIZE_NS: t.CDefine = 3
|
||||
CURSOR_RESIZE_NWSE: t.CDefine = 4
|
||||
|
||||
VK_LEFT: t.CDefine = -1
|
||||
VK_RIGHT: t.CDefine = -2
|
||||
VK_UP: t.CDefine = -3
|
||||
VK_DOWN: t.CDefine = -4
|
||||
VK_HOME: t.CDefine = -5
|
||||
VK_END: t.CDefine = -6
|
||||
VK_DELETE: t.CDefine = -7
|
||||
VK_PRIOR: t.CDefine = -8
|
||||
VK_NEXT: t.CDefine = -9
|
||||
|
||||
@c.Attribute(t.attr.packed)
|
||||
@t.Object
|
||||
class InputEvent:
|
||||
type: t.CUInt32T
|
||||
win_id: t.CInt
|
||||
x: t.CInt
|
||||
y: t.CInt
|
||||
button: t.CUInt8T
|
||||
_pad0: t.CUInt8T
|
||||
_pad1: t.CUInt8T
|
||||
_pad2: t.CUInt8T
|
||||
|
||||
def create_window(x: t.CInt, y: t.CInt, w: t.CInt, h: t.CInt, title: t.CConst | t.CChar | t.CPtr, style: t.CInt) -> t.CInt:
|
||||
return t.CInt(syscall._syscall6(t.CUInt64T(syscall.CREATE_WINDOW), t.CUInt64T(x), t.CUInt64T(y), t.CUInt64T(w), t.CUInt64T(h), t.CUInt64T(title), t.CUInt64T(style)))
|
||||
|
||||
def draw_text(win_id: t.CInt, x: t.CInt, y: t.CInt, text: t.CConst | t.CChar | t.CPtr, color: t.CUInt32T) -> t.CInt:
|
||||
return t.CInt(syscall._syscall5(t.CUInt64T(syscall.DRAW_TEXT), t.CUInt64T(win_id), t.CUInt64T(x), t.CUInt64T(y), t.CUInt64T(text), t.CUInt64T(color)))
|
||||
|
||||
def get_winbuf(win_id: t.CInt) -> UINT32PTR:
|
||||
return t.CVoid(syscall._syscall2(t.CUInt64T(syscall.GET_WINBUF), t.CUInt64T(win_id), 0), t.CPtr)
|
||||
|
||||
def get_win_size(win_id: t.CInt) -> t.CInt:
|
||||
return t.CInt(syscall._syscall2(t.CUInt64T(syscall.GET_WIN_SIZE), t.CUInt64T(win_id), 0))
|
||||
|
||||
def flush(win_id: t.CInt) -> t.CVoid:
|
||||
syscall._syscall2(t.CUInt64T(syscall.WIN_FLUSH), t.CUInt64T(win_id), 0)
|
||||
|
||||
def mainloop(win_id: t.CInt) -> t.CVoid:
|
||||
syscall._syscall1(t.CUInt64T(syscall.WAIT_WINDOW), t.CUInt64T(win_id))
|
||||
|
||||
def poll_event(evt: InputEvent | t.CPtr) -> t.CInt:
|
||||
return t.CInt(syscall._syscall1(t.CUInt64T(syscall.POLL_EVENT), t.CUInt64T(evt)))
|
||||
|
||||
def is_active(win_id: t.CInt) -> t.CInt:
|
||||
return t.CInt(syscall._syscall2(t.CUInt64T(syscall.WAIT_WINDOW), t.CUInt64T(win_id), 1))
|
||||
|
||||
def set_cursor_type(win_id: t.CInt, cursor_t: t.CInt) -> t.CVoid:
|
||||
syscall._syscall2(t.CUInt64T(syscall.SET_CURSOR), t.CUInt64T(win_id), t.CUInt64T(cursor_t))
|
||||
|
||||
def set_title(win_id: t.CInt, title: t.CConst | t.CChar | t.CPtr) -> t.CInt:
|
||||
return t.CInt(syscall._syscall2(t.CUInt64T(syscall.SET_TITLE), t.CUInt64T(win_id), t.CUInt64T(title)))
|
||||
|
||||
def set_geometry(win_id: t.CInt, x: t.CInt, y: t.CInt, w: t.CInt, h: t.CInt) -> t.CInt:
|
||||
return t.CInt(syscall._syscall5(t.CUInt64T(syscall.SET_GEOMETRY), t.CUInt64T(win_id), t.CUInt64T(x), t.CUInt64T(y), t.CUInt64T(w), t.CUInt64T(h)))
|
||||
|
||||
def set_resizable(win_id: t.CInt, rw: t.CInt, rh: t.CInt) -> t.CInt:
|
||||
return t.CInt(syscall._syscall3(t.CUInt64T(syscall.SET_RESIZABLE), t.CUInt64T(win_id), t.CUInt64T(rw), t.CUInt64T(rh)))
|
||||
|
||||
#class Window:
|
||||
# HWND: t.CInt
|
||||
# def __init__(self):
|
||||
# self.HWND = create_window(100, 100, 100, 100)
|
||||
|
||||
Reference in New Issue
Block a user