From 9e4120284dc338c65c309a253ec81a628fdb41d7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominik=20Madar=C3=A1sz?= Date: Sun, 16 May 2021 16:11:29 +0200 Subject: [PATCH] add slider prop control --- art/demo.ecotex | Bin 146 -> 172 bytes art/gen/demo.h | 1458 ++++++++++----------- art/gen/demo.png | Bin 9259 -> 5865 bytes code/game/source/editors/texed.c | 7 +- code/game/source/editors/texed_ops.c | 15 + code/game/source/editors/texed_ops_list.c | 50 +- code/game/source/editors/texed_widgets.c | 12 +- 7 files changed, 784 insertions(+), 758 deletions(-) diff --git a/art/demo.ecotex b/art/demo.ecotex index bfad6e300c9eaefc69abad302e6332468298e1b5..55ed6fd9e862b539ea959870b8f24d094186c727 100644 GIT binary patch delta 43 vcmbQlxQ3B~neCKA0|UeKi5y*0?1v6bTw$PRZe(F(V9EjEn3|gyn_2<@B-jmZ delta 16 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[0].flt, -100.0f, 100.0f)); + }break; + case TOP_COLOR_BRIGHTNESS: { + ImageColorBrightness(&ctx.img, (int)texed_map_value(op->params[0].flt, -255.0f, 255.0f)); + }break; default: { zpl_printf("%s\n", "unsupported op!"); }break; @@ -90,6 +98,7 @@ void texed_process_params(void) { td_param *p = &op->params[j]; switch (p->kind) { + case TPARAM_SLIDER: case TPARAM_FLOAT: { p->flt = (float)zpl_str_to_f64(p->str, NULL); }break; @@ -113,3 +122,9 @@ void texed_process_params(void) { } } } + +static inline +float texed_map_value(float v, float min, float max) { + float slope = max-min; + return min + zpl_round(slope * v); +} \ No newline at end of file diff --git a/code/game/source/editors/texed_ops_list.c b/code/game/source/editors/texed_ops_list.c index dba125a..350ff1b 100644 --- a/code/game/source/editors/texed_ops_list.c +++ b/code/game/source/editors/texed_ops_list.c @@ -1,44 +1,38 @@ #define PARAM(k,n,v) { .kind = k, .name = n, .str = v } +#define PARAMS(n) .num_params = n, .params = (td_param[]) #define PARAM_DEF_COLOR "000000ff" static td_op default_ops[] = { { OP(TOP_NEW_IMAGE), .is_locked = true, - .num_params = 3, - .params = (td_param[]) { + PARAMS(3) { PARAM(TPARAM_COORD, "w", "64"), PARAM(TPARAM_COORD, "h", "64"), PARAM(TPARAM_COLOR, "color", "ffffffff"), } - }, - { + },{ OP(TOP_DRAW_RECT), - .num_params = 5, - .params = (td_param[]) { + PARAMS(5) { PARAM(TPARAM_COORD, "x", "0"), PARAM(TPARAM_COORD, "y", "0"), PARAM(TPARAM_COORD, "w", "10"), PARAM(TPARAM_COORD, "h", "10"), PARAM(TPARAM_COLOR, "color", PARAM_DEF_COLOR), } - }, - { + },{ OP(TOP_DRAW_LINE), - .num_params = 5, - .params = (td_param[]) { + PARAMS(5) { PARAM(TPARAM_COORD, "x1", "0"), PARAM(TPARAM_COORD, "y1", "0"), PARAM(TPARAM_COORD, "x2", "64"), PARAM(TPARAM_COORD, "y2", "64"), PARAM(TPARAM_COLOR, "color", PARAM_DEF_COLOR), } - }, - { + },{ OP(TOP_DRAW_IMAGE), - .num_params = 6, - .params = (td_param[]) { + PARAMS(6) { PARAM(TPARAM_STRING, "src", "samples/test.png"), PARAM(TPARAM_COORD, "x", "0"), PARAM(TPARAM_COORD, "y", "0"), @@ -46,36 +40,40 @@ static td_op default_ops[] = { PARAM(TPARAM_COORD, "h", "-1"), PARAM(TPARAM_COLOR, "tint", "ffffffff"), } - }, - { + },{ OP(TOP_DRAW_TEXT), - .num_params = 5, - .params = (td_param[]) { + PARAMS(5) { PARAM(TPARAM_STRING, "text", "hello world"), PARAM(TPARAM_COORD, "x", "0"), PARAM(TPARAM_COORD, "y", "0"), PARAM(TPARAM_COORD, "size", "16"), PARAM(TPARAM_COLOR, "color", PARAM_DEF_COLOR), } - }, - { + },{ OP(TOP_DITHER), - .num_params = 4, - .params = (td_param[]) { + PARAMS(4) { 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), - .num_params = 3, - .params = (td_param[]) { + PARAMS(3) { PARAM(TPARAM_COORD, "w", "64"), PARAM(TPARAM_COORD, "h", "64"), PARAM(TPARAM_COORD, "mode (0=nearest,1=bicubic)", "0"), } + },{ + OP(TOP_COLOR_CONTRAST), + PARAMS(1) { + PARAM(TPARAM_SLIDER, "contrast", "0.5") + } + },{ + OP(TOP_COLOR_BRIGHTNESS), + PARAMS(1) { + PARAM(TPARAM_SLIDER, "brightness", "0.5") + } } }; diff --git a/code/game/source/editors/texed_widgets.c b/code/game/source/editors/texed_widgets.c index fe19439..4f88aca 100644 --- a/code/game/source/editors/texed_widgets.c +++ b/code/game/source/editors/texed_widgets.c @@ -135,7 +135,7 @@ void texed_draw_topbar(zpl_aabb2 r) { void texed_draw_oplist_pane(zpl_aabb2 r) { // NOTE(zaklaus): add operator { - zpl_aabb2 add_op_r = zpl_aabb2_cut_right(&r, 120.0f); + zpl_aabb2 add_op_r = zpl_aabb2_cut_right(&r, 180.0f); DrawAABB(add_op_r, GetColor(0x122025)); add_op_r = zpl_aabb2_contract(&add_op_r, 3.0f); @@ -240,7 +240,7 @@ void texed_draw_props_pane(zpl_aabb2 r) { zpl_aabb2 column_1_r = zpl_aabb2_cut_left(&r, dims.width/2.0f); zpl_aabb2 column_2_r = r; - float prop_height = 40.0f; + float prop_height = 20.0f; int prop_column_treshold = (int)zpl_floor(dims.height / prop_height); for (int i = 0; i < op->num_params; i += 1) { @@ -280,6 +280,14 @@ void texed_draw_props_pane(zpl_aabb2 r) { } if (is_color_editing) GuiLock(); }break; + case TPARAM_SLIDER: { + p->flt = GuiSlider(aabb2_ray(tbox_r), NULL, zpl_bprintf("%.02f", p->flt), p->flt, 0.0f, 1.0f); + if (p->old_flt != p->flt) { + sprintf(p->str, "%f", p->flt); + p->old_flt = p->flt; + texed_repaint_preview(); + } + }break; case TPARAM_COORD: { if (GuiValueBox(aabb2_ray(tbox_r), NULL, &p->i32, INT32_MIN, INT32_MAX, p->edit_mode)) { p->edit_mode = !p->edit_mode;