typedef struct UIFont UIFont;
typedef struct UIWin UIWin;
-UIWin* WindowCreate(char* title);
-void WindowDelete(UIWin* win);
-void WindowShow(UIWin* win);
-void WindowHide(UIWin* win);
+UIWin* win_create(char* title);
+void win_delete(UIWin* win);
+void win_show(UIWin* win);
+void win_hide(UIWin* win);
+
+UIFont font_load(char* patt);
+void font_close(UIFont font);
+
+void ui_begin(UIWin* win);
+void ui_end(UIWin* win);
+
-UIFont FontLoad(char* patt);
-void FontClose(UIFont font);
\ No newline at end of file
#include <libui.h>
#include "libui_impl.h"
-UIFont FontLoad(char* patt)
+UIFont font_load(char* patt)
{
static bool inited = false;
if (!inited && !FcInit())
FcPattern* pattern = FcNameParse((FcChar8 *)patt);
if (pattern)
{
-// /* load the base font */
-// FcResult result;
-// FcPattern* match = XftFontMatch(X.display, X.screen_num, pattern, &result);
-// if (match)
-// {
-// font = XftFontOpenPattern(X.display, match);
-// }
-// FcPatternDestroy(pattern);
-// FcPatternDestroy(match);
+ /* load the base font */
+ FcResult result;
+ FcPattern* match = XftFontMatch(X.display, X.screen_num, pattern, &result);
+ if (match)
+ {
+ font = XftFontOpenPattern(X.display, match);
+ }
+ FcPatternDestroy(pattern);
+ FcPatternDestroy(match);
}
if (!font)
#include <libui.h>
#include "libui_impl.h"
-static Display* XDisplay = NULL;
-struct UIWin* Managed_Windows = NULL;
+//static Display* XDisplay = NULL;
+//struct UIWin* Managed_Windows = NULL;
-UIWin* WindowCreate(char* title)
+struct XConf X = {0};
+
+UIWin* win_create(char* title)
{
assert(title);
/* initialize xlib if it isn't already */
- if (!XDisplay)
+ if (!X.display)
{
- XDisplay = XOpenDisplay(NULL);
- if (!XDisplay)
+ X.display = XOpenDisplay(NULL);
+ if (!X.display)
{
exit(1);
}
/* allocate a window struct and start populating it */
UIWin* win = ecalloc(1, sizeof(UIWin));
- win->display = XDisplay;
- win->root = DefaultRootWindow(win->display);
- win->screen = DefaultScreenOfDisplay(win->display);
- win->screen_num = DefaultScreen(win->display);
- win->depth = DefaultDepth(win->display, win->screen_num);
+ X.root = DefaultRootWindow(X.display);
+ X.screen = DefaultScreenOfDisplay(X.display);
+ X.screen_num = DefaultScreen(X.display);
+ X.depth = DefaultDepth(X.display, X.screen_num);
XWindowAttributes wa;
- XGetWindowAttributes(win->display, win->root, &wa);
- win->visual = wa.visual;
- win->colormap = wa.colormap;
+ XGetWindowAttributes(X.display, X.root, &wa);
+ X.visual = wa.visual;
+ X.colormap = wa.colormap;
win->width = 640;
win->height = 480;
- win->self = XCreateSimpleWindow(win->display, win->root, 0, 0, win->width, win->height, 0, 0, 0xEAEAEA);
- XStoreName(win->display, win->self, title);
+ win->self = XCreateSimpleWindow(X.display, X.root, 0, 0, win->width, win->height, 0, 0, 0xEAEAEA);
+ XStoreName(X.display, win->self, title);
/* initialize the graphics */
- win->pixmap = XCreatePixmap(win->display, win->self, win->width, win->height, win->depth);
- win->xft = XftDrawCreate(win->display, win->pixmap, win->visual, win->colormap);
-// win->font = FontLoad("Verdana:size=12");
+ win->pixmap = XCreatePixmap(X.display, win->self, win->width, win->height, X.depth);
+ win->xft = XftDrawCreate(X.display, win->pixmap, X.visual, X.colormap);
XGCValues gcv;
gcv.foreground = 0xEAEAEA;
gcv.graphics_exposures = False;
- win->gc = XCreateGC(win->display, win->self, GCGraphicsExposures, &gcv);
+ win->gc = XCreateGC(X.display, win->self, GCGraphicsExposures, &gcv);
/* initialize event handling */
- XSelectInput(win->display, win->self, 0
+ XSelectInput(X.display, win->self, 0
| ButtonPressMask
| ButtonReleaseMask
| ButtonMotionMask
);
/* register it so the even loop will manage it*/
- win->next = Managed_Windows;
- Managed_Windows = win;
+ win->next = X.windows;
+ X.windows = win;
return win;
}