commit - 870fe49e4274af2aa8cdc5315feb6956330d2af7
commit + 94783f656eaf549437a61d52e2df97f28791e880
blob - 2fde96a624cd67966672ed3bfcb09cb4d96e552c
blob + aec9a0c7220e03ce9f502e4ec0c4777ea53660cc
--- TODO
+++ TODO
-Event targets
+- Create debugging macros that make programs more verbose when compiling
+ with the `MUI_DEBUG` flag
-Debug macro
+- Complete man page 7 for a brief description of the library ins and outs
-Complete man `mui.1` for demos
+- Complete man page 1 for library demos that will be run using the mui
+ command with the demo name
-Complete man `mui.3`
+- Implement nested groups
-Nested groups
+- Implement groups styles (ex. VStack groups, HStack groups, Grid groups,
+ etc.) with a set of flags (ex. Scrollable and clipping?)
-Groups styles (Scroll, VStack, HStack, Grid)
+- Add font options (ex. color, size, etc) with flags (ex. multiline, text
+ wrapping)
-Group clipping
+- Add a minimum size option for layouts
-Font faces (color, size, style)
-
-Minimum layout dimensions
-
-Multiline support text rendering
-
-Man page
-
-Fix image rendering and text rendering on FreeBSD and NetBSD (DONE)
-
-Fix issue when text render with noise when having a small len (DONE?)
-
-Cleanup functions aka delete functions (DONE)
-
-Fix alignment to update when added to group (DONE)
-
-New flag 'MUI_SCALE_X' and 'MUI_SCALE_Y' which will be actual scale of
-the layout while 'MUI_EXPAND_X' and 'MUI_EXPAND_Y' will be the actual
-width and height. (DONE)
-
-Proper scale matrix for xcb_render (DONE)
-
-Layout anchoring (DONE)
-
-Change shape color after adding to group (DONE)
-
-Events (KeyPress and KeyRelease) (DONE)
-
-Fix issue when shape changes color but isn't visible until update (DONE)
-
-Image rendering (DONE)
-
-Text rendering (the hardest) (DONE)
+- Fix issues happening in text rendering (noises that adds odd colors to
+ text and sometimes text from a dead program invading the new one)
blob - 043be9b90254b76b7bcdf9f49dc09e9758c7f0b4
blob + 2a2c2f029682e93ee55c38e5cf3c7cd27737c954
--- demo/event/main.c
+++ demo/event/main.c
*/
/********************************************************/
+#include <unistd.h>
+
#include "mui.h"
#define PRESS 0
event = mui_pop_event(window.handler);
switch (event.type) {
- case MUI_EVENT_MOUSE_MOTION:
- if (event_recorder[MOTION].ptr && event.target.ptr != event_recorder[MOTION].ptr) {
- if (event_recorder[MOTION].ptr != event_recorder[PRESS].ptr)
- mui_set_shape_color(event_recorder[MOTION].ptr, 1.0, 1.0, 1.0, 1.0);
- event_recorder[MOTION].ptr = NULL;
- }
-
- if (event.target.ptr && event_recorder[MOTION].ptr != event.target.ptr) {
- mui_set_shape_color(event.target.ptr, 0.75, 0.75, 0.75, 1.0);
- event_recorder[MOTION].ptr = event.target.ptr;
- }
- break;
-
case MUI_EVENT_MOUSE_PRESS:
- if (event.target.ptr && event_recorder[PRESS].ptr != event.target.ptr) {
- mui_set_shape_color(event.target.ptr, 0.5, 0.5, 0.5, 1.0);
- }
event_recorder[PRESS].ptr = event.target.ptr;
+
+ if (event.target.ptr)
+ mui_set_shape_color(event.target.ptr, 0.5, 0.5, 0.5, 1.0);
break;
+ case MUI_EVENT_MOUSE_MOTION:
+ if (event.target.ptr == event_recorder[MOTION].ptr)
+ break;
+ if (event_recorder[MOTION].ptr)
+ if (event_recorder[MOTION].ptr != event_recorder[PRESS].ptr)
+ mui_set_shape_color(event_recorder[MOTION].ptr, 1.0, 1.0, 1.0, 1.0);
+
+ if (event.target.ptr && event.target.ptr != event_recorder[PRESS].ptr)
+ mui_set_shape_color(event.target.ptr, 0.75, 0.75, 0.75, 1.0);
+ event_recorder[MOTION].ptr = event.target.ptr;
+
+ break;
case MUI_EVENT_MOUSE_RELEASE:
- if (event_recorder[PRESS].ptr) {
- mui_set_shape_color(event_recorder[PRESS].ptr, 1.0, 1.0, 1.0, 1.0);
- event_recorder[PRESS].ptr = NULL;
- }
-
if (event.target.ptr) {
- if (event_recorder[MOTION].ptr)
- mui_set_shape_color(event_recorder[MOTION].ptr, 1.0, 1.0, 1.0, 1.0);
-
- mui_set_shape_color(event.target.ptr, 0.75, 0.75, 0.75, 1.0);
event_recorder[MOTION].ptr = event.target.ptr;
+ if (event_recorder[MOTION].ptr == event_recorder[PRESS].ptr)
+ mui_set_shape_color(event.target.ptr, 0.75, 0.75, 0.75, 1.0);
+ else {
+ if (event_recorder[PRESS].ptr)
+ mui_set_shape_color(event_recorder[PRESS].ptr, 1.0, 1.0, 1.0, 1.0);
+ }
+ } else {
+ if (event_recorder[PRESS].ptr)
+ mui_set_shape_color(event_recorder[PRESS].ptr, 1.0, 1.0, 1.0, 1.0);
}
+
+ event_recorder[PRESS].ptr = NULL;
+
+ break;
+ default:
+ break;
}
+
+ usleep(10000);
mui_update();
}
+ for (int i = 0; i < 5; i++)
+ mui_delete_shape(buttons[i].shape);
+ mui_delete_window(window.mw);
+
return 0;
}
blob - d555489a457852e1d81213e465561c078d6ecc12
blob + 7550594e8ce6f36f6d267ec6b8d9396befa14332
--- event.c
+++ event.c
if (handler->count == MUI_EVENT_MAX) {
struct mui_event *tail;
- tail = TAILQ_LAST(&handler->head, ev_list);
+ tail = TAILQ_FIRST(&handler->head);
TAILQ_REMOVE(&handler->head, tail, entries);
handler->count--;
free(tail);
if (handler->count == 0)
return event;
- head = TAILQ_FIRST(&handler->head);
+ head = TAILQ_LAST(&handler->head, ev_list);
memcpy(&event, head, sizeof(event));
TAILQ_REMOVE(&handler->head, head, entries);
blob - 30a8ba0bd7cb98e97ed8cec4a94b029b0316d11e
blob + ce6f83d61a7141b265272ee276b83e3d79851a72
--- mui.h
+++ mui.h
struct mui_ctx;
-#define MUI_EVENT_MAX 32
+#define MUI_EVENT_MAX 3
enum {
MUI_EVENT_NONE,
#define MUI_LABEL 2
#define MUI_IMAGE 3
#define MUI_GROUP 4
+ #define MUI_VSTACK 1
+ #define MUI_HSTACK 2
+ #define MUI_ZSTACK 3
+ #define MUI_GRID 4
/* LABEL FLAGS */