git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@4 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
NishiOwO
2025-09-28 04:04:30 +00:00
parent f4763b58de
commit 6f3439fc39
3 changed files with 43 additions and 1 deletions

View File

@@ -11,7 +11,7 @@ L_OBJS =
ifeq ($(TARGET),NetBSD)
CFLAGS += -I/usr/X11R7/include -I/usr/pkg/include
LDFLAGS += -L/usr/X11R7/lib -L/usr/pkg/lib
LDFLAGS += -L/usr/X11R7/lib -L/usr/pkg/lib -Wl,-R/usr/X11R7/lib -Wl,-R/usr/pkg/lib
UNIX = 1
else ifeq ($(TARGET),Linux)
UNIX = 1

View File

@@ -21,7 +21,10 @@ typedef void* HMILSKOCOLOR;
#endif
HMILSKO MilskoLLCreate(HMILSKO parent, int x, int y, int width, int height);
void MilskoLLDestroy(HMILSKO handle);
void MilskoLLPolygon(HMILSKO handle, MilskoPoint* points, int points_count, HMILSKOCOLOR color);
HMILSKOCOLOR MilskoLLAllocColor(HMILSKO handle, int r, int g, int b);
void MilskoLLGetXYWH(HMILSKO handle, int* x, int* y, unsigned int* w, unsigned int* h);
int MilskoLLPending(HMILSKO handle);
#endif

View File

@@ -1,6 +1,10 @@
/* $Id$ */
#include <Milsko/Milsko.h>
#include <stdlib.h>
static unsigned long mask = ExposureMask | StructureNotifyMask | ButtonPressMask | ButtonReleaseMask;
HMILSKO MilskoLLCreate(HMILSKO parent, int x, int y, int width, int height){
HMILSKO r;
Window p;
@@ -17,12 +21,31 @@ HMILSKO MilskoLLCreate(HMILSKO parent, int x, int y, int width, int height){
r->colormap = DefaultColormap(r->display, XDefaultScreen(r->display));
r->gc = XCreateGC(r->display, r->window, 0, 0);
XSelectInput(r->display, r->window, mask);
XMapWindow(r->display, r->window);
return r;
}
void MilskoLLDestroy(HMILSKO handle){
XFreeGC(handle->display, handle->gc);
XDestroyWindow(handle->display, handle->window);
free(handle);
}
void MilskoLLPolygon(HMILSKO handle, MilskoPoint* points, int points_count, HMILSKOCOLOR color){
int i;
XPoint* p = malloc(sizeof(*p) * points_count);
XSetForeground(handle->display, handle->gc, color->pixel);
for(i = 0; i < points_count; i++){
p[i].x = points[i].x;
p[i].y = points[i].y;
}
XFillPolygon(handle->display, handle->window, handle->gc, p, points_count, Convex, CoordModeOrigin);
free(p);
}
HMILSKOCOLOR MilskoLLAllocColor(HMILSKO handle, int r, int g, int b){
@@ -37,6 +60,22 @@ HMILSKOCOLOR MilskoLLAllocColor(HMILSKO handle, int r, int g, int b){
return c;
}
void MilskoLLGetXYWH(HMILSKO handle, int* x, int* y, unsigned int* w, unsigned int* h){
Window root;
unsigned int depth, border;
XGetGeometry(handle->display, handle->window, &root, x, y, w, h, &border, &depth);
}
void MilskoLLFreeColor(HMILSKOCOLOR color){
free(color);
}
int MilskoLLPending(HMILSKO handle){
XEvent ev;
if(XCheckWindowEvent(handle->display, handle->window, mask, &ev)){
XPutBackEvent(handle->display, &ev);
return 1;
}
return 0;
}