]> git.mdlowis.com Git - proto/aos.git/commitdiff
changed style and added new ui functions
authorMichael D. Lowis <mike@mdlowis.com>
Fri, 2 Oct 2020 03:35:06 +0000 (23:35 -0400)
committerMichael D. Lowis <mike@mdlowis.com>
Fri, 2 Oct 2020 03:35:06 +0000 (23:35 -0400)
inc/libui.h
src/libui/font_close.c [new file with mode: 0644]
src/libui/font_load.c
src/libui/libui_impl.h
src/libui/ui_begin.c [new file with mode: 0644]
src/libui/ui_end.c [new file with mode: 0644]
src/libui/window_create.c
src/libui/window_delete.c
src/libui/window_hide.c
src/libui/window_show.c

index 984aaee7c1a7627adc7be1acbd9b10742bcd0786..f3e2bc91d6c7f91c860489c53aa57885d9832c78 100644 (file)
@@ -1,10 +1,15 @@
 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
diff --git a/src/libui/font_close.c b/src/libui/font_close.c
new file mode 100644 (file)
index 0000000..6891a1e
--- /dev/null
@@ -0,0 +1,9 @@
+#include <stdc.h>
+#include <liba.h>
+#include <libui.h>
+#include "libui_impl.h"
+
+void font_close(UIFont font)
+{
+    XftFontClose(X.display, font.font);
+}
\ No newline at end of file
index 71eed5c9668c246c35aa6b4870fb97e3343e9012..aa469b71042644f68c6739de845e0742c4557d55 100644 (file)
@@ -3,7 +3,7 @@
 #include <libui.h>
 #include "libui_impl.h"
 
-UIFont FontLoad(char* patt)
+UIFont font_load(char* patt)
 {
     static bool inited = false;
     if (!inited && !FcInit())
@@ -16,15 +16,15 @@ UIFont FontLoad(char* patt)
     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)
index 1da7734ffda5b8618ff36ed8100cd4b2b2743e10..06a97619a0bfb7e7ddcd91f2650e6d4f65f98ac4 100644 (file)
@@ -9,13 +9,6 @@ struct UIFont {
 struct UIWin
 {
     struct UIWin* next;
-    Display* display;
-    Window root;
-    Screen* screen;
-    int screen_num;
-    int depth;
-    Visual* visual;
-    Colormap colormap;
     int width;
     int height;
     Window self;
@@ -25,7 +18,19 @@ struct UIWin
     XftFont* font;
 };
 
-extern struct UIWin* Managed_Windows;
+struct XConf
+{
+    Display* display;
+    Window root;
+    Screen* screen;
+    int screen_num;
+    int depth;
+    Visual* visual;
+    Colormap colormap;
+    struct UIWin* windows;
+};
+
+extern struct XConf X;
 
 enum {
     WIN_BACKGROUND = 0xEAEAEA
diff --git a/src/libui/ui_begin.c b/src/libui/ui_begin.c
new file mode 100644 (file)
index 0000000..0042d31
--- /dev/null
@@ -0,0 +1,10 @@
+#include <stdc.h>
+#include <liba.h>
+#include <libui.h>
+#include "libui_impl.h"
+
+void ui_begin(UIWin* win)
+{
+    XSetForeground(X.display, win->gc, 0xEAEAEA);
+    XFillRectangle(X.display, win->pixmap, win->gc, 0, 0, win->width, win->height);
+}
diff --git a/src/libui/ui_end.c b/src/libui/ui_end.c
new file mode 100644 (file)
index 0000000..11baa5a
--- /dev/null
@@ -0,0 +1,10 @@
+#include <stdc.h>
+#include <liba.h>
+#include <libui.h>
+#include "libui_impl.h"
+
+void ui_end(UIWin* win)
+{
+    XCopyArea(X.display, win->pixmap, win->self, win->gc, 0, 0, win->width, win->height, 0, 0);
+    XSync(X.display, False);
+}
index 8b82ffe974166452f9dd882dd5247b3d8d75ae09..a321c695e6df05fb60ab77a714f73e6b59259b43 100644 (file)
@@ -3,18 +3,20 @@
 #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);
         }
@@ -22,31 +24,29 @@ UIWin* WindowCreate(char* title)
 
     /* 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
@@ -59,8 +59,8 @@ UIWin* WindowCreate(char* title)
     );
 
     /* 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;
 }
index 7f2db5670c3024eb24bb58d21a3c3aff1d8df6b9..0aa5b5c810a913770fb0fe564da513d26158ce86 100644 (file)
@@ -3,10 +3,10 @@
 #include <libui.h>
 #include "libui_impl.h"
 
-void WindowDelete(UIWin* win)
+void win_delete(UIWin* win)
 {
     assert(win);
-    WindowHide(win);
+    win_hide(win);
     /* TODO: remove window from managed list */
     /* TODO: delete/close the X window and free resources */
 }
index 78ca6e82713ab1200fa8d89a785c5eb93335bda1..f23590124f22dc8424192b1d43ced49584bc8ef8 100644 (file)
@@ -3,8 +3,8 @@
 #include <libui.h>
 #include "libui_impl.h"
 
-void WindowShow(UIWin* win)
+void win_show(UIWin* win)
 {
-    XUnmapWindow(win->display, win->self);
-    XSync(win->display, False);
+    XUnmapWindow(X.display, win->self);
+    XSync(X.display, False);
 }
index 6cc8d596561e07bae1218e4f02fea8deaeaae7b6..c034c998cf321f07ad653beacb7afce40f951abc 100644 (file)
@@ -3,8 +3,8 @@
 #include <libui.h>
 #include "libui_impl.h"
 
-void WindowShow(UIWin* win)
+void win_show(UIWin* win)
 {
-    XMapWindow(win->display, win->self);
-    XSync(win->display, False);
+    XMapWindow(X.display, win->self);
+    XSync(X.display, False);
 }