git-svn-id: http://svn2.nishi.boats/svn/milsko/trunk@31 b9cfdab3-6d41-4d17-bbe4-086880011989
This commit is contained in:
NishiOwO
2025-09-28 22:00:17 +00:00
parent 61b442d259
commit 0bc58045ae
5 changed files with 26 additions and 22 deletions

View File

@@ -7,7 +7,7 @@ CFLAGS = -fPIC -Iinclude -D_MILSKO
LDFLAGS =
LIBS =
L_OBJS = src/ds.o src/core.o src/default.o src/draw.o
L_OBJS = src/ds.o src/core.o src/default.o src/draw.o src/lowlevel.o
L_OBJS += src/window.o src/button.o
L_LIBS = -lfreetype

View File

@@ -32,6 +32,11 @@ struct _MilskoLLCallback {
void (*up)(MilskoLL handle);
};
/* lowlevel.c, common part */
MILSKODECL void MilskoLLCreateCommon(MilskoLL handle);
MILSKODECL void MilskoLLDestroyCommon(MilskoLL handle);
/* driver-specific */
MILSKODECL MilskoLL MilskoLLCreate(MilskoLL parent, int x, int y, int width, int height);
MILSKODECL void MilskoLLDestroy(MilskoLL handle);

View File

@@ -14,15 +14,11 @@ typedef struct _MilskoLLColor *MilskoLLColor, MilskoLLColorRec;
#include <X11/Xutil.h>
struct _MilskoLL {
Display* display;
Window window;
GC gc;
Colormap colormap;
int x;
int y;
unsigned int width;
unsigned int height;
void* user;
Display* display;
Window window;
GC gc;
Colormap colormap;
void* user;
MilskoLLCallback callback;
};

11
src/lowlevel.c Normal file
View File

@@ -0,0 +1,11 @@
/* $Id$ */
#include <Milsko/Milsko.h>
void MilskoLLCreateCommon(MilskoLL handle) {
handle->callback = malloc(sizeof(*handle->callback));
memset(handle->callback, 0, sizeof(*handle->callback));
}
void MilskoLLDestroyCommon(MilskoLL handle) {
free(handle->callback);
}

View File

@@ -9,14 +9,9 @@ MilskoLL MilskoLLCreate(MilskoLL parent, int x, int y, int width, int height) {
Window root;
unsigned int border, depth;
r = malloc(sizeof(*r));
r->x = x;
r->y = y;
r->width = width;
r->height = height;
r->callback = malloc(sizeof(*r->callback));
r = malloc(sizeof(*r));
memset(r->callback, 0, sizeof(*r->callback));
MilskoLLCreateCommon(r);
if(parent == NULL) {
r->display = XOpenDisplay(NULL);
@@ -37,6 +32,8 @@ MilskoLL MilskoLLCreate(MilskoLL parent, int x, int y, int width, int height) {
}
void MilskoLLDestroy(MilskoLL handle) {
MilskoLLDestroyCommon(handle);
XFreeGC(handle->display, handle->gc);
XDestroyWindow(handle->display, handle->window);
free(handle);
@@ -85,11 +82,6 @@ void MilskoLLGetXYWH(MilskoLL handle, int* x, int* y, unsigned int* w, unsigned
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 MilskoLLSetXY(MilskoLL handle, int x, int y) {