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)