make op list order independent
parent
fb6862ebae
commit
d195b7756b
|
@ -61,7 +61,7 @@ typedef enum {
|
||||||
TOP_DRAW_RECT,
|
TOP_DRAW_RECT,
|
||||||
TOP_DRAW_LINE,
|
TOP_DRAW_LINE,
|
||||||
TOP_DITHER,
|
TOP_DITHER,
|
||||||
TOP_LOAD_IMAGE,
|
TOP_DRAW_IMAGE,
|
||||||
TOP_DRAW_TEXT,
|
TOP_DRAW_TEXT,
|
||||||
TOP_RESIZE_IMAGE,
|
TOP_RESIZE_IMAGE,
|
||||||
|
|
||||||
|
@ -117,9 +117,11 @@ void texed_compose_image(void);
|
||||||
void texed_msgbox_init(char const *title, char const *message, char const *buttons);
|
void texed_msgbox_init(char const *title, char const *message, char const *buttons);
|
||||||
void texed_process_ops(void);
|
void texed_process_ops(void);
|
||||||
void texed_process_params(void);
|
void texed_process_params(void);
|
||||||
void texed_add_op(int idx);
|
|
||||||
|
void texed_add_op(int kind);
|
||||||
void texed_rem_op(int idx);
|
void texed_rem_op(int idx);
|
||||||
void texed_swp_op(int idx, int idx2);
|
void texed_swp_op(int idx, int idx2);
|
||||||
|
int texed_find_op(int kind);
|
||||||
|
|
||||||
void texed_draw_oplist_pane(zpl_aabb2 r);
|
void texed_draw_oplist_pane(zpl_aabb2 r);
|
||||||
void texed_draw_props_pane(zpl_aabb2 r);
|
void texed_draw_props_pane(zpl_aabb2 r);
|
||||||
|
@ -169,7 +171,7 @@ void texed_run(int argc, char **argv) {
|
||||||
Image orig = LoadImage(zpl_bprintf("art/%s", path));
|
Image orig = LoadImage(zpl_bprintf("art/%s", path));
|
||||||
texed_new(orig.width, orig.height);
|
texed_new(orig.width, orig.height);
|
||||||
is_repaint_locked = true;
|
is_repaint_locked = true;
|
||||||
texed_add_op(TOP_LOAD_IMAGE);
|
texed_add_op(TOP_DRAW_IMAGE);
|
||||||
td_param *params = ctx.ops[1].params;
|
td_param *params = ctx.ops[1].params;
|
||||||
zpl_strcpy(params[0].str, path);
|
zpl_strcpy(params[0].str, path);
|
||||||
is_repaint_locked = false;
|
is_repaint_locked = false;
|
||||||
|
@ -336,9 +338,19 @@ void texed_msgbox_init(char const *title, char const *message, char const *butto
|
||||||
ctx.msgbox.buttons = buttons;
|
ctx.msgbox.buttons = buttons;
|
||||||
}
|
}
|
||||||
|
|
||||||
void texed_add_op(int idx) {
|
int texed_find_op(int kind) {
|
||||||
assert(idx >= 0 && idx < DEF_OPS_LEN);
|
assert(kind >= 0 && kind < DEF_OPS_LEN);
|
||||||
td_op *dop = &default_ops[idx];
|
for (int i = 0; i < DEF_OPS_LEN; i += 1) {
|
||||||
|
if (default_ops[i].kind == kind) {
|
||||||
|
return i;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
void texed_add_op(int kind) {
|
||||||
|
assert(kind >= 0 && kind < DEF_OPS_LEN);
|
||||||
|
td_op *dop = &default_ops[texed_find_op(kind)];
|
||||||
|
|
||||||
td_op op = {
|
td_op op = {
|
||||||
.kind = dop->kind,
|
.kind = dop->kind,
|
||||||
|
|
|
@ -33,7 +33,7 @@ void texed_process_ops(void) {
|
||||||
op->params[2].i32,
|
op->params[2].i32,
|
||||||
op->params[3].i32);
|
op->params[3].i32);
|
||||||
}break;
|
}break;
|
||||||
case TOP_LOAD_IMAGE: {
|
case TOP_DRAW_IMAGE: {
|
||||||
char const *str = zpl_bprintf("art/%s", op->params[0].str);
|
char const *str = zpl_bprintf("art/%s", op->params[0].str);
|
||||||
if (FileExists(str)) {
|
if (FileExists(str)) {
|
||||||
Image img = LoadImage(str);
|
Image img = LoadImage(str);
|
||||||
|
|
|
@ -36,17 +36,7 @@ static td_op default_ops[] = {
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
OP(TOP_DITHER),
|
OP(TOP_DRAW_IMAGE),
|
||||||
.num_params = 4,
|
|
||||||
.params = (td_param[]) {
|
|
||||||
PARAM(TPARAM_INT, "r_bpp", "8"),
|
|
||||||
PARAM(TPARAM_INT, "g_bpp", "8"),
|
|
||||||
PARAM(TPARAM_INT, "b_bpp", "8"),
|
|
||||||
PARAM(TPARAM_INT, "a_bpp", "8"),
|
|
||||||
}
|
|
||||||
},
|
|
||||||
{
|
|
||||||
OP(TOP_LOAD_IMAGE),
|
|
||||||
.num_params = 6,
|
.num_params = 6,
|
||||||
.params = (td_param[]) {
|
.params = (td_param[]) {
|
||||||
PARAM(TPARAM_STRING, "src", "samples/test.png"),
|
PARAM(TPARAM_STRING, "src", "samples/test.png"),
|
||||||
|
@ -68,6 +58,16 @@ static td_op default_ops[] = {
|
||||||
PARAM(TPARAM_COLOR, "color", PARAM_DEF_COLOR),
|
PARAM(TPARAM_COLOR, "color", PARAM_DEF_COLOR),
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
OP(TOP_DITHER),
|
||||||
|
.num_params = 4,
|
||||||
|
.params = (td_param[]) {
|
||||||
|
PARAM(TPARAM_INT, "r_bpp", "8"),
|
||||||
|
PARAM(TPARAM_INT, "g_bpp", "8"),
|
||||||
|
PARAM(TPARAM_INT, "b_bpp", "8"),
|
||||||
|
PARAM(TPARAM_INT, "a_bpp", "8"),
|
||||||
|
}
|
||||||
|
},
|
||||||
{
|
{
|
||||||
OP(TOP_RESIZE_IMAGE),
|
OP(TOP_RESIZE_IMAGE),
|
||||||
.num_params = 3,
|
.num_params = 3,
|
||||||
|
|
|
@ -39,7 +39,8 @@ void texed_load(void) {
|
||||||
op->is_hidden = uc.item.as.boolean;
|
op->is_hidden = uc.item.as.boolean;
|
||||||
|
|
||||||
UNPACK(CWP_ITEM_ARRAY);
|
UNPACK(CWP_ITEM_ARRAY);
|
||||||
op->num_params = default_ops[kind].num_params;
|
int idx = texed_find_op(kind);
|
||||||
|
op->num_params = default_ops[idx].num_params;
|
||||||
op->params = zpl_malloc(sizeof(td_param)*op->num_params);
|
op->params = zpl_malloc(sizeof(td_param)*op->num_params);
|
||||||
int parmarrsize = (int)uc.item.as.array.size;
|
int parmarrsize = (int)uc.item.as.array.size;
|
||||||
for (int j = 0; j < parmarrsize; j += 1) {
|
for (int j = 0; j < parmarrsize; j += 1) {
|
||||||
|
@ -48,16 +49,16 @@ void texed_load(void) {
|
||||||
zpl_memcopy(p->str, uc.item.as.str.start, uc.item.as.str.length);
|
zpl_memcopy(p->str, uc.item.as.str.start, uc.item.as.str.length);
|
||||||
|
|
||||||
// NOTE(zaklaus): fix up other metadata
|
// NOTE(zaklaus): fix up other metadata
|
||||||
p->name = default_ops[kind].params[j].name;
|
p->name = default_ops[idx].params[j].name;
|
||||||
p->kind = default_ops[kind].params[j].kind;
|
p->kind = default_ops[idx].params[j].kind;
|
||||||
}
|
}
|
||||||
|
|
||||||
// NOTE(zaklaus): resolve missing params
|
// NOTE(zaklaus): resolve missing params
|
||||||
for (int j = parmarrsize; j < default_ops[kind].num_params; j += 1) {
|
for (int j = parmarrsize; j < default_ops[idx].num_params; j += 1) {
|
||||||
td_param *p = &op->params[j];
|
td_param *p = &op->params[j];
|
||||||
p->name = default_ops[kind].params[j].name;
|
p->name = default_ops[idx].params[j].name;
|
||||||
p->kind = default_ops[kind].params[j].kind;
|
p->kind = default_ops[idx].params[j].kind;
|
||||||
zpl_strcpy(p->str, default_ops[kind].params[j].str);
|
zpl_strcpy(p->str, default_ops[idx].params[j].str);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -145,7 +145,7 @@ void texed_draw_oplist_pane(zpl_aabb2 r) {
|
||||||
zpl_aabb2 add_op_btn_r = zpl_aabb2_cut_top(&add_op_r, 22.5f);
|
zpl_aabb2 add_op_btn_r = zpl_aabb2_cut_top(&add_op_r, 22.5f);
|
||||||
zpl_aabb2_cut_bottom(&add_op_btn_r, 2.5f);
|
zpl_aabb2_cut_bottom(&add_op_btn_r, 2.5f);
|
||||||
if (GuiButton(aabb2_ray(add_op_btn_r), default_ops[i].name)) {
|
if (GuiButton(aabb2_ray(add_op_btn_r), default_ops[i].name)) {
|
||||||
texed_add_op(i);
|
texed_add_op(default_ops[i].kind);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -198,7 +198,7 @@ void texed_draw_oplist_pane(zpl_aabb2 r) {
|
||||||
|
|
||||||
zpl_aabb2 hidden_r = zpl_aabb2_cut_right(&op_item_r, 20.0f);
|
zpl_aabb2 hidden_r = zpl_aabb2_cut_right(&op_item_r, 20.0f);
|
||||||
|
|
||||||
if (!default_ops[ctx.ops[i].kind].is_locked) GuiSetState(GUI_STATE_NORMAL);
|
if (!default_ops[texed_find_op(ctx.ops[i].kind)].is_locked) GuiSetState(GUI_STATE_NORMAL);
|
||||||
if (GuiButton(aabb2_ray(hidden_r), ctx.ops[i].is_hidden ? "#45#" : "#44#")) {
|
if (GuiButton(aabb2_ray(hidden_r), ctx.ops[i].is_hidden ? "#45#" : "#44#")) {
|
||||||
ctx.ops[i].is_hidden = !ctx.ops[i].is_hidden;
|
ctx.ops[i].is_hidden = !ctx.ops[i].is_hidden;
|
||||||
texed_repaint_preview();
|
texed_repaint_preview();
|
||||||
|
@ -207,7 +207,7 @@ void texed_draw_oplist_pane(zpl_aabb2 r) {
|
||||||
|
|
||||||
zpl_aabb2 lock_r = zpl_aabb2_cut_right(&op_item_r, 20.0f);
|
zpl_aabb2 lock_r = zpl_aabb2_cut_right(&op_item_r, 20.0f);
|
||||||
|
|
||||||
if (default_ops[ctx.ops[i].kind].is_locked) GuiSetState(GUI_STATE_DISABLED);
|
if (default_ops[texed_find_op(ctx.ops[i].kind)].is_locked) GuiSetState(GUI_STATE_DISABLED);
|
||||||
if (GuiButton(aabb2_ray(lock_r), ctx.ops[i].is_locked ? "#137#" : "#138#")) {
|
if (GuiButton(aabb2_ray(lock_r), ctx.ops[i].is_locked ? "#137#" : "#138#")) {
|
||||||
ctx.ops[i].is_locked = !ctx.ops[i].is_locked;
|
ctx.ops[i].is_locked = !ctx.ops[i].is_locked;
|
||||||
ctx.is_saved = false;
|
ctx.is_saved = false;
|
||||||
|
|
Loading…
Reference in New Issue