converted buffer states to flags
This commit is contained in:
parent
62981aba66
commit
3e051adc12
@ -624,7 +624,7 @@ main(int argc, char *argv[])
|
||||
memset(&in, 0, sizeof in);
|
||||
memory.memory = calloc(MAX_MEMORY, 1);
|
||||
memory.size = MAX_MEMORY;
|
||||
gui_buffer_init_fixed(&buffer, &memory, GUI_CLIP);
|
||||
gui_buffer_init_fixed(&buffer, &memory, GUI_BUFFER_CLIPPING);
|
||||
|
||||
font.userdata = glfont;
|
||||
font.height = glfont->height;
|
||||
|
87
demo/win32.c
87
demo/win32.c
@ -104,8 +104,8 @@ font_new(HDC hdc, const char *name, int height)
|
||||
XFont *font = malloc(sizeof(XFont));
|
||||
font->height = height;
|
||||
font->handle = CreateFont(height, 0, 0, 0, 0, FALSE, FALSE, FALSE,
|
||||
ANSI_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
|
||||
ANTIALIASED_QUALITY, DEFAULT_PITCH, name);
|
||||
ANSI_CHARSET, OUT_CHARACTER_PRECIS, CLIP_CHARACTER_PRECIS,
|
||||
ANTIALIASED_QUALITY, DEFAULT_PITCH, name);
|
||||
|
||||
old = SelectObject(hdc, font->handle);
|
||||
GetTextMetrics(hdc, &metrics);
|
||||
@ -305,12 +305,12 @@ draw(XSurface *surf, struct gui_command_list *list)
|
||||
case GUI_COMMAND_RECT: {
|
||||
struct gui_command_rect *r = (void*)cmd;
|
||||
surface_draw_rect(surf, r->x, r->y, r->w, r->h,
|
||||
r->color.r, r->color.g, r->color.b);
|
||||
r->color.r, r->color.g, r->color.b);
|
||||
} break;
|
||||
case GUI_COMMAND_CIRCLE: {
|
||||
struct gui_command_circle *c = (void*)cmd;
|
||||
surface_draw_circle(surf, c->x, c->y, c->w, c->h,
|
||||
c->color.r, c->color.g, c->color.b);
|
||||
c->color.r, c->color.g, c->color.b);
|
||||
} break;
|
||||
case GUI_COMMAND_TRIANGLE: {
|
||||
struct gui_command_triangle *t = (void*)cmd;
|
||||
@ -319,7 +319,7 @@ draw(XSurface *surf, struct gui_command_list *list)
|
||||
} break;
|
||||
case GUI_COMMAND_TEXT: {
|
||||
struct gui_command_text *t = (void*)cmd;
|
||||
XWindow *xw = t->font;
|
||||
XWindow *xw = t->font;
|
||||
surface_draw_text(surf, xw->font, t->x, t->y, t->w, t->h, (const char*)t->string,
|
||||
t->length, t->bg.r, t->bg.g, t->bg.b, t->fg.r, t->fg.g, t->fg.b);
|
||||
} break;
|
||||
@ -422,20 +422,19 @@ LRESULT CALLBACK
|
||||
wnd_proc(HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam)
|
||||
{
|
||||
switch (msg) {
|
||||
case WM_DESTROY:
|
||||
PostQuitMessage(WM_QUIT);
|
||||
running = 0;
|
||||
quit = 1;
|
||||
break;
|
||||
case WM_SIZE:
|
||||
if (xw.backbuffer) {
|
||||
xw.width = LOWORD(lParam);
|
||||
xw.height = HIWORD(lParam);
|
||||
surface_resize(xw.backbuffer, xw.hdc, xw.width, xw.height);
|
||||
}
|
||||
break;
|
||||
default:
|
||||
return DefWindowProc(hWnd, msg, wParam, lParam);
|
||||
case WM_DESTROY:
|
||||
PostQuitMessage(WM_QUIT);
|
||||
running = 0;
|
||||
quit = 1;
|
||||
break;
|
||||
case WM_SIZE:
|
||||
if (xw.backbuffer) {
|
||||
xw.width = LOWORD(lParam);
|
||||
xw.height = HIWORD(lParam);
|
||||
surface_resize(xw.backbuffer, xw.hdc, xw.width, xw.height);
|
||||
} break;
|
||||
default:
|
||||
return DefWindowProc(hWnd, msg, wParam, lParam);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
@ -468,11 +467,11 @@ WinMain(HINSTANCE hInstance, HINSTANCE prev, LPSTR lpCmdLine, int show)
|
||||
xw.wc.lpszClassName = "GUI";
|
||||
RegisterClass(&xw.wc);
|
||||
xw.hWnd = CreateWindowEx(
|
||||
0, xw.wc.lpszClassName, "Demo",
|
||||
WS_OVERLAPPEDWINDOW|WS_VISIBLE,
|
||||
CW_USEDEFAULT, CW_USEDEFAULT,
|
||||
CW_USEDEFAULT, CW_USEDEFAULT,
|
||||
0, 0, hInstance, 0);
|
||||
0, xw.wc.lpszClassName, "Demo",
|
||||
WS_OVERLAPPEDWINDOW|WS_VISIBLE,
|
||||
CW_USEDEFAULT, CW_USEDEFAULT,
|
||||
CW_USEDEFAULT, CW_USEDEFAULT,
|
||||
0, 0, hInstance, 0);
|
||||
|
||||
xw.hdc = GetDC(xw.hWnd);
|
||||
GetClientRect(xw.hWnd, &xw.rect);
|
||||
@ -485,7 +484,7 @@ WinMain(HINSTANCE hInstance, HINSTANCE prev, LPSTR lpCmdLine, int show)
|
||||
memset(&in, 0, sizeof in);
|
||||
memory.memory = calloc(MAX_MEMORY, 1);
|
||||
memory.size = MAX_MEMORY;
|
||||
gui_buffer_init_fixed(&buffer, &memory, GUI_CLIP);
|
||||
gui_buffer_init_fixed(&buffer, &memory, GUI_BUFFER_CLIPPING);
|
||||
|
||||
font.userdata = &xw;
|
||||
font.height = (gui_float)xw.font->height;
|
||||
@ -505,37 +504,37 @@ WinMain(HINSTANCE hInstance, HINSTANCE prev, LPSTR lpCmdLine, int show)
|
||||
|
||||
while (running && !quit) {
|
||||
/* Input */
|
||||
MSG msg;
|
||||
start = timestamp(freq);
|
||||
MSG msg;
|
||||
start = timestamp(freq);
|
||||
gui_input_begin(&in);
|
||||
while (PeekMessage(&msg, xw.hWnd, 0, 0, PM_REMOVE)) {
|
||||
if (msg.message == WM_KEYDOWN) key(&in, &msg, gui_true);
|
||||
else if (msg.message == WM_KEYUP) key(&in, &msg, gui_false);
|
||||
else if (msg.message == WM_LBUTTONDOWN) btn(&in, &msg, gui_true);
|
||||
else if (msg.message == WM_LBUTTONUP) btn(&in, &msg, gui_false);
|
||||
else if (msg.message == WM_MOUSEMOVE) motion(&in, &msg);
|
||||
else if (msg.message == WM_CHAR) text(&in, &msg);
|
||||
while (PeekMessage(&msg, xw.hWnd, 0, 0, PM_REMOVE)) {
|
||||
if (msg.message == WM_KEYDOWN) key(&in, &msg, gui_true);
|
||||
else if (msg.message == WM_KEYUP) key(&in, &msg, gui_false);
|
||||
else if (msg.message == WM_LBUTTONDOWN) btn(&in, &msg, gui_true);
|
||||
else if (msg.message == WM_LBUTTONUP) btn(&in, &msg, gui_false);
|
||||
else if (msg.message == WM_MOUSEMOVE) motion(&in, &msg);
|
||||
else if (msg.message == WM_CHAR) text(&in, &msg);
|
||||
TranslateMessage(&msg);
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
DispatchMessage(&msg);
|
||||
}
|
||||
gui_input_end(&in);
|
||||
|
||||
/* GUI */
|
||||
/* GUI */
|
||||
gui_buffer_begin(&canvas, &buffer, xw.width, xw.height);
|
||||
running = gui_panel_begin(&layout, &panel, "Demo", &canvas, &in);
|
||||
demo_panel(&layout, &demo);
|
||||
gui_panel_end(&layout, &panel);
|
||||
gui_buffer_end(&list, &buffer, &canvas, &status);
|
||||
|
||||
/* Draw */
|
||||
surface_begin(xw.backbuffer);
|
||||
surface_clear(xw.backbuffer, 255, 255, 255);
|
||||
draw(xw.backbuffer, &list);
|
||||
surface_end(xw.backbuffer, xw.hdc);
|
||||
/* Draw */
|
||||
surface_begin(xw.backbuffer);
|
||||
surface_clear(xw.backbuffer, 255, 255, 255);
|
||||
draw(xw.backbuffer, &list);
|
||||
surface_end(xw.backbuffer, xw.hdc);
|
||||
|
||||
/* Timing */
|
||||
dt = timestamp(freq) - start;
|
||||
if (dt < DTIME) Sleep(DTIME - dt);
|
||||
dt = timestamp(freq) - start;
|
||||
if (dt < DTIME) Sleep(DTIME - dt);
|
||||
}
|
||||
|
||||
font_del(xw.font);
|
||||
|
@ -511,7 +511,7 @@ main(int argc, char *argv[])
|
||||
memset(&in, 0, sizeof in);
|
||||
memory.memory = calloc(MAX_MEMORY, 1);
|
||||
memory.size = MAX_MEMORY;
|
||||
gui_buffer_init_fixed(&buffer, &memory, GUI_CLIP);
|
||||
gui_buffer_init_fixed(&buffer, &memory, GUI_BUFFER_CLIPPING);
|
||||
|
||||
font.userdata = xw.font;
|
||||
font.height = (gui_float)xw.font->height;
|
||||
|
84
gui.c
84
gui.c
@ -827,9 +827,8 @@ gui_buffer_push(struct gui_command_buffer* buffer,
|
||||
void *tail;
|
||||
|
||||
assert(buffer);
|
||||
assert(buffer->state != GUI_BUFFER_LOCKED);
|
||||
if (!buffer || buffer->state == GUI_BUFFER_LOCKED) return NULL;
|
||||
if (!buffer) return NULL;
|
||||
assert(!(buffer->flags & GUI_BUFFER_LOCKED));
|
||||
if (!buffer || buffer->flags & GUI_BUFFER_LOCKED) return NULL;
|
||||
buffer->needed += size;
|
||||
|
||||
unaligned = (gui_byte*)buffer->end + size;
|
||||
@ -862,8 +861,8 @@ gui_buffer_push_scissor(struct gui_command_buffer *buffer, gui_float x, gui_floa
|
||||
{
|
||||
struct gui_command_scissor *cmd;
|
||||
assert(buffer);
|
||||
assert(buffer->state != GUI_BUFFER_LOCKED);
|
||||
if (!buffer || buffer->state == GUI_BUFFER_LOCKED) return;
|
||||
assert(!(buffer->flags & GUI_BUFFER_LOCKED));
|
||||
if (!buffer || buffer->flags & GUI_BUFFER_LOCKED) return;
|
||||
|
||||
cmd = gui_buffer_push(buffer, GUI_COMMAND_SCISSOR, sizeof(*cmd));
|
||||
if (!cmd) return;
|
||||
@ -885,10 +884,10 @@ gui_buffer_push_line(struct gui_command_buffer *buffer, gui_float x0, gui_float
|
||||
{
|
||||
struct gui_command_line *cmd;
|
||||
assert(buffer);
|
||||
assert(buffer->state != GUI_BUFFER_LOCKED);
|
||||
if (!buffer || buffer->state == GUI_BUFFER_LOCKED) return;
|
||||
assert(!(buffer->flags & GUI_BUFFER_LOCKED));
|
||||
if (!buffer || buffer->flags & GUI_BUFFER_LOCKED) return;
|
||||
|
||||
if (buffer->clipping == GUI_CLIP) {
|
||||
if (buffer->flags & GUI_BUFFER_CLIPPING) {
|
||||
const struct gui_rect *r = &buffer->clip;
|
||||
if (!INBOX(x0, y0, r->x, r->y, r->w, r->h) &&
|
||||
(!INBOX(x1, y1, r->x, r->y, r->w, r->h))) {
|
||||
@ -911,10 +910,10 @@ gui_buffer_push_rect(struct gui_command_buffer *buffer, gui_float x, gui_float y
|
||||
{
|
||||
struct gui_command_rect *cmd;
|
||||
assert(buffer);
|
||||
assert(buffer->state != GUI_BUFFER_LOCKED);
|
||||
if (!buffer || buffer->state == GUI_BUFFER_LOCKED) return;
|
||||
assert(!(buffer->flags & GUI_BUFFER_LOCKED));
|
||||
if (!buffer || buffer->flags & GUI_BUFFER_LOCKED) return;
|
||||
|
||||
if (buffer->clipping == GUI_CLIP) {
|
||||
if (buffer->flags & GUI_BUFFER_CLIPPING) {
|
||||
const struct gui_rect *r = &buffer->clip;
|
||||
if (!INTERSECT(r->x, r->y, r->w, r->h, x, y, w, h)) {
|
||||
buffer->clipped_memory += sizeof(*cmd);
|
||||
@ -937,10 +936,10 @@ gui_buffer_push_circle(struct gui_command_buffer *buffer, gui_float x, gui_float
|
||||
{
|
||||
struct gui_command_circle *cmd;
|
||||
assert(buffer);
|
||||
assert(buffer->state != GUI_BUFFER_LOCKED);
|
||||
if (!buffer || buffer->state == GUI_BUFFER_LOCKED) return;
|
||||
assert(!(buffer->flags & GUI_BUFFER_LOCKED));
|
||||
if (!buffer || buffer->flags & GUI_BUFFER_LOCKED) return;
|
||||
|
||||
if (buffer->clipping == GUI_CLIP) {
|
||||
if (buffer->flags & GUI_BUFFER_CLIPPING) {
|
||||
const struct gui_rect *r = &buffer->clip;
|
||||
if (!INTERSECT(r->x, r->y, r->w, r->h, x, y, w, h)) {
|
||||
buffer->clipped_memory += sizeof(*cmd);
|
||||
@ -964,10 +963,10 @@ gui_buffer_push_triangle(struct gui_command_buffer *buffer, gui_float x0, gui_fl
|
||||
{
|
||||
struct gui_command_triangle *cmd;
|
||||
assert(buffer);
|
||||
assert(buffer->state != GUI_BUFFER_LOCKED);
|
||||
if (!buffer || buffer->state == GUI_BUFFER_LOCKED) return;
|
||||
assert(!(buffer->flags & GUI_BUFFER_LOCKED));
|
||||
if (!buffer || buffer->flags & GUI_BUFFER_LOCKED) return;
|
||||
|
||||
if (buffer->clipping == GUI_CLIP) {
|
||||
if (buffer->flags & GUI_BUFFER_CLIPPING) {
|
||||
const struct gui_rect *r = &buffer->clip;
|
||||
if (!INBOX(x0, y0, r->x, r->y, r->w, r->h) &&
|
||||
!INBOX(x1, y1, r->x, r->y, r->w, r->h) &&
|
||||
@ -994,10 +993,10 @@ gui_buffer_push_image(struct gui_command_buffer *buffer, gui_float x, gui_float
|
||||
{
|
||||
struct gui_command_image *cmd;
|
||||
assert(buffer);
|
||||
assert(buffer->state != GUI_BUFFER_LOCKED);
|
||||
if (!buffer || buffer->state == GUI_BUFFER_LOCKED) return;
|
||||
assert(!(buffer->flags & GUI_BUFFER_LOCKED));
|
||||
if (!buffer || buffer->flags & GUI_BUFFER_LOCKED) return;
|
||||
|
||||
if (buffer->clipping == GUI_CLIP) {
|
||||
if (buffer->flags == GUI_BUFFER_CLIPPING) {
|
||||
const struct gui_rect *r = &buffer->clip;
|
||||
if (!INTERSECT(r->x, r->y, r->w, r->h, x, y, w, h)) {
|
||||
buffer->clipped_memory += sizeof(*cmd);
|
||||
@ -1022,11 +1021,11 @@ gui_buffer_push_text(struct gui_command_buffer *buffer, gui_float x, gui_float y
|
||||
struct gui_command_text *cmd;
|
||||
assert(buffer);
|
||||
assert(font);
|
||||
assert(buffer->state != GUI_BUFFER_LOCKED);
|
||||
assert(!(buffer->flags & GUI_BUFFER_LOCKED));
|
||||
if (!buffer || !string || !length) return;
|
||||
if (buffer->state == GUI_BUFFER_LOCKED) return;
|
||||
if (buffer->flags & GUI_BUFFER_LOCKED) return;
|
||||
|
||||
if (buffer->clipping == GUI_CLIP) {
|
||||
if (buffer->flags & GUI_BUFFER_CLIPPING) {
|
||||
const struct gui_rect *r = &buffer->clip;
|
||||
if (!INTERSECT(r->x, r->y, r->w, r->h, x, y, w, h)) {
|
||||
buffer->clipped_memory += sizeof(*cmd);
|
||||
@ -1050,27 +1049,26 @@ gui_buffer_push_text(struct gui_command_buffer *buffer, gui_float x, gui_float y
|
||||
|
||||
void
|
||||
gui_buffer_init_fixed(struct gui_command_buffer *buffer, const struct gui_memory *memory,
|
||||
enum gui_clipping clipping)
|
||||
gui_flags clipping)
|
||||
{
|
||||
assert(buffer);
|
||||
assert(memory);
|
||||
if (!buffer || !memory) return;
|
||||
|
||||
zero(buffer, sizeof(*buffer));
|
||||
buffer->type = GUI_BUFFER_OWNER;
|
||||
buffer->state = GUI_BUFFER_ACTIVE;
|
||||
buffer->flags = GUI_BUFFER_OWNER;
|
||||
if (clipping) buffer->flags |= GUI_BUFFER_CLIPPING;
|
||||
buffer->memory = memory->memory;
|
||||
buffer->capacity = memory->size;
|
||||
buffer->begin = buffer->memory;
|
||||
buffer->end = buffer->begin;
|
||||
buffer->clipping = clipping;
|
||||
buffer->clip = null_rect;
|
||||
buffer->grow_factor = 0;
|
||||
}
|
||||
|
||||
void
|
||||
gui_buffer_init(struct gui_command_buffer *buffer, const struct gui_allocator *memory,
|
||||
gui_size initial_size, gui_float grow_factor, enum gui_clipping clipping)
|
||||
gui_size initial_size, gui_float grow_factor, gui_flags clipping)
|
||||
{
|
||||
assert(buffer);
|
||||
assert(memory);
|
||||
@ -1078,8 +1076,8 @@ gui_buffer_init(struct gui_command_buffer *buffer, const struct gui_allocator *m
|
||||
if (!buffer || !memory || !initial_size) return;
|
||||
|
||||
zero(buffer, sizeof(*buffer));
|
||||
buffer->type = GUI_BUFFER_OWNER;
|
||||
buffer->state = GUI_BUFFER_ACTIVE;
|
||||
buffer->flags = GUI_BUFFER_OWNER;
|
||||
if (clipping) buffer->flags |= GUI_BUFFER_CLIPPING;
|
||||
buffer->memory = memory->alloc(memory->userdata, initial_size);
|
||||
buffer->allocator = *memory;
|
||||
buffer->capacity = initial_size;
|
||||
@ -1087,26 +1085,24 @@ gui_buffer_init(struct gui_command_buffer *buffer, const struct gui_allocator *m
|
||||
buffer->end = buffer->begin;
|
||||
buffer->grow_factor = grow_factor;
|
||||
buffer->clip = null_rect;
|
||||
buffer->clipping = clipping;
|
||||
}
|
||||
|
||||
void
|
||||
gui_buffer_lock(struct gui_command_buffer *buffer, struct gui_command_buffer *sub,
|
||||
enum gui_clipping clipping)
|
||||
gui_flags clipping)
|
||||
{
|
||||
assert(buffer);
|
||||
assert(sub);
|
||||
assert(buffer->state != GUI_BUFFER_LOCKED);
|
||||
if (!buffer || !sub || buffer->state == GUI_BUFFER_LOCKED) return;
|
||||
assert(buffer->flags & GUI_BUFFER_LOCKED);
|
||||
if (!buffer || !sub || !(buffer->flags & GUI_BUFFER_LOCKED)) return;
|
||||
|
||||
buffer->state = GUI_BUFFER_LOCKED;
|
||||
sub->type = GUI_BUFFER_SUB;
|
||||
sub->state = GUI_BUFFER_ACTIVE;
|
||||
buffer->flags |= GUI_BUFFER_LOCKED;
|
||||
sub->flags = GUI_BUFFER_DEFAULT;
|
||||
if (clipping) sub->flags |= GUI_BUFFER_CLIPPING;
|
||||
sub->memory = buffer->memory;
|
||||
sub->allocator = buffer->allocator;
|
||||
sub->begin = buffer->end;
|
||||
sub->end = sub->begin;
|
||||
sub->clipping = clipping;
|
||||
sub->grow_factor = buffer->grow_factor;
|
||||
sub->allocated = buffer->allocated;
|
||||
sub->capacity = buffer->capacity;
|
||||
@ -1122,7 +1118,7 @@ gui_buffer_unlock(struct gui_command_buffer *buffer, struct gui_command_buffer *
|
||||
assert(buffer);
|
||||
assert(sub);
|
||||
if (!buffer || !sub) return;
|
||||
buffer->state = GUI_BUFFER_ACTIVE;
|
||||
buffer->flags &= (gui_flags)~GUI_BUFFER_LOCKED;
|
||||
buffer->memory = sub->memory;
|
||||
buffer->end = sub->end;
|
||||
buffer->allocated = sub->allocated;
|
||||
@ -1130,7 +1126,7 @@ gui_buffer_unlock(struct gui_command_buffer *buffer, struct gui_command_buffer *
|
||||
buffer->count += sub->count;
|
||||
buffer->needed += sub->needed;
|
||||
zero(sub, sizeof(*sub));
|
||||
sub->state = GUI_BUFFER_LOCKED;
|
||||
sub->flags = GUI_BUFFER_LOCKED;
|
||||
}
|
||||
|
||||
void
|
||||
@ -1162,9 +1158,9 @@ gui_buffer_end(struct gui_command_list *list, struct gui_command_buffer *buffer,
|
||||
assert(canvas);
|
||||
if (!buffer || !canvas) return;
|
||||
if (status) {
|
||||
status->allocated = (buffer->type == GUI_BUFFER_SUB) ?
|
||||
status->allocated = (!(buffer->flags & GUI_BUFFER_OWNER)) ?
|
||||
buffer->allocated - buffer->sub_size: buffer->allocated;
|
||||
status->size = (buffer->type == GUI_BUFFER_SUB) ?
|
||||
status->size = (!(buffer->flags & GUI_BUFFER_OWNER)) ?
|
||||
buffer->capacity - buffer->sub_cap: buffer->capacity;
|
||||
status->needed = buffer->needed;
|
||||
status->clipped_commands = buffer->clipped_cmds;
|
||||
@ -1191,8 +1187,8 @@ gui_buffer_clear(struct gui_command_buffer *buffer)
|
||||
{
|
||||
assert(buffer);
|
||||
if (!buffer || !buffer->memory || !buffer->allocator.free) return;
|
||||
if (buffer->type != GUI_BUFFER_OWNER) return;
|
||||
if (buffer->state == GUI_BUFFER_LOCKED) return;
|
||||
if (!(buffer->flags & GUI_BUFFER_OWNER)) return;
|
||||
if (buffer->flags & GUI_BUFFER_LOCKED) return;
|
||||
buffer->allocator.free(buffer->allocator.userdata, buffer->memory);
|
||||
}
|
||||
|
||||
|
30
gui.h
30
gui.h
@ -281,30 +281,20 @@ struct gui_command_text {
|
||||
gui_char string[1];
|
||||
};
|
||||
|
||||
enum gui_clipping {
|
||||
GUI_NO_CLIP,
|
||||
GUI_CLIP
|
||||
};
|
||||
|
||||
enum gui_buffer_type {
|
||||
GUI_BUFFER_OWNER,
|
||||
GUI_BUFFER_SUB
|
||||
};
|
||||
|
||||
enum gui_buffer_state {
|
||||
GUI_BUFFER_ACTIVE,
|
||||
GUI_BUFFER_LOCKED,
|
||||
enum gui_buffer_flags {
|
||||
GUI_BUFFER_DEFAULT = 0,
|
||||
GUI_BUFFER_CLIPPING = 0x01,
|
||||
GUI_BUFFER_OWNER = 0x02,
|
||||
GUI_BUFFER_LOCKED = 0x04
|
||||
};
|
||||
|
||||
struct gui_command_buffer {
|
||||
void *memory;
|
||||
enum gui_buffer_type type;
|
||||
enum gui_buffer_state state;
|
||||
gui_flags flags;
|
||||
struct gui_allocator allocator;
|
||||
struct gui_command *begin;
|
||||
struct gui_command *end;
|
||||
struct gui_rect clip;
|
||||
enum gui_clipping clipping;
|
||||
gui_size clipped_cmds;
|
||||
gui_size clipped_memory;
|
||||
gui_float grow_factor;
|
||||
@ -439,14 +429,14 @@ void gui_input_end(struct gui_input*);
|
||||
|
||||
/* Buffer */
|
||||
void gui_buffer_init(struct gui_command_buffer*, const struct gui_allocator*,
|
||||
gui_size initial_size, gui_float grow_factor, enum gui_clipping);
|
||||
gui_size initial_size, gui_float grow_factor, gui_flag clipping);
|
||||
void gui_buffer_init_fixed(struct gui_command_buffer*, const struct gui_memory*,
|
||||
enum gui_clipping);
|
||||
gui_flag clipping);
|
||||
void gui_buffer_begin(struct gui_canvas *canvas, struct gui_command_buffer *buffer,
|
||||
gui_size width, gui_size height);
|
||||
void gui_buffer_lock(struct gui_command_buffer *buffer, struct gui_command_buffer *sub,
|
||||
enum gui_clipping clipping)
|
||||
void gui_buffer_unlock(struct gui_command_buffer *buf, struct gui_command_buffer *sub)
|
||||
gui_flag clipping);
|
||||
void gui_buffer_unlock(struct gui_command_buffer *buf, struct gui_command_buffer *sub);
|
||||
void *gui_buffer_push(struct gui_command_buffer*,
|
||||
enum gui_command_type, gui_size size);
|
||||
void gui_buffer_push_scissor(struct gui_command_buffer*, gui_float, gui_float,
|
||||
|
Loading…
x
Reference in New Issue
Block a user