git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@15 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
NishiOwO
2025-09-28 09:04:35 +00:00
parent 174291234d
commit 09ae765d0a
6 changed files with 61 additions and 13 deletions

View File

@@ -60,12 +60,33 @@ MILSKODECL void MilskoLoop(HMILSKO handle) {
}
}
void MilskoSetInteger(HMILSKO handle, const char* key, int n) {
int xy = 0;
int wh = 0;
if((xy = (strcmp(key, MilskoNx) == 0 || strcmp(key, MilskoNy) == 0)) || (wh = (strcmp(key, MilskoNwidth) == 0 || strcmp(key, MilskoNheight) == 0))) {
int x, y;
unsigned int w, h;
MilskoLLGetXYWH(handle->lowlevel, &x, &y, &w, &h);
if(strcmp(key, MilskoNx) == 0) x = n;
if(strcmp(key, MilskoNy) == 0) y = n;
if(strcmp(key, MilskoNwidth) == 0) w = n;
if(strcmp(key, MilskoNheight) == 0) h = n;
if(xy) MilskoLLSetXY(handle->lowlevel, x, y);
if(wh) MilskoLLSetWH(handle->lowlevel, w, h);
}
}
void MilskoApply(HMILSKO handle, ...) {
va_list va;
char* key;
char* key;
va_start(va, handle);
while((key = va_arg(va, char*)) != NULL){
while((key = va_arg(va, char*)) != NULL) {
if(key[0] == 'I') {
int n = va_arg(va, int);
MilskoSetInteger(handle, key, n);
}
}
va_end(va);
}

View File

@@ -4,8 +4,10 @@
static unsigned long mask = ExposureMask | StructureNotifyMask | ButtonPressMask | ButtonReleaseMask;
HMILSKOLL MilskoLLCreate(HMILSKOLL parent, int x, int y, int width, int height) {
HMILSKOLL r;
Window p;
HMILSKOLL r;
Window p;
Window root;
unsigned int border, depth;
r = malloc(sizeof(*r));
r->x = x;
@@ -22,7 +24,8 @@ HMILSKOLL MilskoLLCreate(HMILSKOLL parent, int x, int y, int width, int height)
}
r->window = XCreateSimpleWindow(r->display, p, x, y, width, height, 0, 0, WhitePixel(r->display, XDefaultScreen(r->display)));
r->colormap = DefaultColormap(r->display, XDefaultScreen(r->display));
r->gc = XCreateGC(r->display, r->window, 0, 0);
r->gc = XCreateGC(r->display, r->window, 0, 0);
XSelectInput(r->display, r->window, mask);
XMapWindow(r->display, r->window);
@@ -64,14 +67,23 @@ HMILSKOCOLOR MilskoLLAllocColor(HMILSKOLL handle, int r, int g, int b) {
}
void MilskoLLGetXYWH(HMILSKOLL handle, int* x, int* y, unsigned int* w, unsigned int* h) {
*x = handle->x;
*y = handle->y;
*w = handle->width;
*h = handle->height;
Window root;
unsigned int border, depth;
XGetGeometry(handle->display, handle->window, &root, x, y, w, h, &border, &depth);
handle->x = *x;
handle->y = *y;
handle->width = *w;
handle->height = *h;
}
void MilskoLLSetXYWH(HMILSKOLL handle, int x, int y, unsigned int w, unsigned int h) {
XMoveResizeWindow(handle->display, handle->window, x, y, w, h);
void MilskoLLSetXY(HMILSKOLL handle, int x, int y) {
XMoveWindow(handle->display, handle->window, x, y);
}
void MilskoLLSetWH(HMILSKOLL handle, int w, int h) {
XResizeWindow(handle->display, handle->window, w, h);
}
void MilskoLLFreeColor(HMILSKOCOLOR color) {