[theme] theme builder region management
This commit is contained in:
parent
04e282eeba
commit
e5dbad88d3
|
@ -13,9 +13,9 @@ struct ax_ctxt {
|
|||
char* err;
|
||||
|
||||
// theme
|
||||
struct ax_theme* sel_theme;
|
||||
struct ax_theme_builder* thmb0;
|
||||
struct rgn thmb_rgn;
|
||||
struct ax_theme_builder* thmb;
|
||||
struct ax_theme* sel_theme;
|
||||
};
|
||||
|
||||
void ax__ctxt_init(struct ax_ctxt* ax, struct rgn* self_rgn);
|
||||
|
|
|
@ -41,17 +41,14 @@ void ax__ctxt_init(struct ax_ctxt* ax, struct rgn* init_rgn)
|
|||
rgn_init(&ax->err_rgn, SMALL);
|
||||
ax->err = "";
|
||||
|
||||
ax->sel_theme = NULL;
|
||||
ax->thmb0 = ralloc_typed(init_rgn, struct ax_theme_builder, 1);
|
||||
rgn_init(&ax->thmb_rgn, THEME_BUILDER_DESIRED_REGION_SIZE);
|
||||
ax->thmb = NULL;
|
||||
ax->sel_theme = NULL;
|
||||
}
|
||||
|
||||
void ax__ctxt_cleanup(struct ax_ctxt* ax)
|
||||
{
|
||||
if (ax->thmb != NULL) {
|
||||
ax__theme_builder_cleanup(ax->thmb);
|
||||
}
|
||||
|
||||
rgn_cleanup(&ax->thmb_rgn);
|
||||
rgn_cleanup(&ax->err_rgn);
|
||||
}
|
||||
|
||||
|
@ -61,21 +58,15 @@ void ax__ctxt_cleanup(struct ax_ctxt* ax)
|
|||
|
||||
void ax_begin_theme(struct ax_ctxt* ax)
|
||||
{
|
||||
if (ax->thmb != NULL) {
|
||||
ax__theme_builder_cleanup(ax->thmb);
|
||||
}
|
||||
|
||||
ax->thmb = ax->thmb0;
|
||||
ax__theme_builder_init(ax->thmb);
|
||||
rgn_clear(&ax->thmb_rgn);
|
||||
ax->thmb = ralloc_typed(&ax->thmb_rgn, struct ax_theme_builder, 1);
|
||||
ax__theme_builder_init(ax->thmb, &ax->thmb_rgn);
|
||||
}
|
||||
|
||||
int ax_end_theme(struct ax_ctxt* ax, struct ax_theme** out_thm)
|
||||
{
|
||||
ASSERT(ax->thmb != NULL, "`ax_end_theme' called while not building a theme");
|
||||
|
||||
ax__theme_builder_finish(ax->thmb, ax->init_rgn, out_thm);
|
||||
ax__theme_builder_cleanup(ax->thmb);
|
||||
ax->thmb = NULL;
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
|
|
@ -1,7 +1,6 @@
|
|||
#include "theme.h"
|
||||
#include "../util.h"
|
||||
|
||||
#define THMB_RGN_SIZE MEDIUM
|
||||
#include "../util/region.h"
|
||||
|
||||
static void theme_init(struct ax_theme* thm)
|
||||
{
|
||||
|
@ -28,14 +27,11 @@ static void theme_init(struct ax_theme* thm)
|
|||
thm->font_size[AX_FONT_BUTTON] = 14;
|
||||
}
|
||||
|
||||
void ax__theme_builder_init(struct ax_theme_builder* thmb)
|
||||
void ax__theme_builder_init(struct ax_theme_builder* thmb, struct rgn* rgn)
|
||||
{
|
||||
theme_init(&thmb->thm);
|
||||
thmb->rgn = rgn;
|
||||
thmb->dflt_font_path = NULL;
|
||||
}
|
||||
|
||||
void ax__theme_builder_cleanup(struct ax_theme_builder* thmb)
|
||||
{
|
||||
theme_init(&thmb->thm);
|
||||
}
|
||||
|
||||
void ax__theme_set_color(
|
||||
|
|
|
@ -1,7 +1,10 @@
|
|||
#pragma once
|
||||
|
||||
#include <stdint.h>
|
||||
#include "../util/region.h"
|
||||
#include <stddef.h>
|
||||
|
||||
struct rgn;
|
||||
#define THEME_BUILDER_DESIRED_REGION_SIZE (16*1024)
|
||||
|
||||
enum ax_color_cat {
|
||||
AX_COLOR_BACKGROUND = 0,
|
||||
|
@ -35,16 +38,17 @@ struct ax_theme {
|
|||
};
|
||||
|
||||
struct ax_theme_builder {
|
||||
struct ax_theme thm;
|
||||
struct rgn* rgn;
|
||||
const char* dflt_font_path;
|
||||
struct ax_theme thm;
|
||||
};
|
||||
|
||||
int ax__string_to_color_cat(const char* str, enum ax_color_cat* out_cat);
|
||||
int ax__string_to_font_cat(const char* str, enum ax_font_cat* out_cat);
|
||||
//void ax__color_cat_to_string(enum ax_color_cat cat, const char** out_str);
|
||||
|
||||
void ax__theme_builder_init(struct ax_theme_builder* thmb);
|
||||
void ax__theme_builder_cleanup(struct ax_theme_builder* thmb);
|
||||
void ax__theme_builder_init(
|
||||
struct ax_theme_builder* thmb, struct rgn* rgn);
|
||||
|
||||
void ax__theme_set_color(
|
||||
struct ax_theme_builder* thmb,
|
||||
|
|
Loading…
Reference in New Issue