eco2d/code/game/source/editors/texed_ops.c

93 lines
3.4 KiB
C
Raw Normal View History

2021-05-15 15:19:50 +00:00
void texed_process_ops(void) {
for (int i = 0; i < zpl_array_count(ctx.ops); i += 1) {
td_op *op = &ctx.ops[i];
if (op->is_hidden) continue;
zpl_printf("processing op: %s ... \n", op->name);
switch (op->kind) {
case TOP_CLEAR: {
ImageClearBackground(&ctx.img, op->params[0].color);
}break;
case TOP_DRAW_RECT: {
ImageDrawRectangle(&ctx.img,
op->params[0].i32,
op->params[1].i32,
op->params[2].i32,
op->params[3].i32,
op->params[4].color);
}break;
case TOP_DRAW_LINE: {
ImageDrawLine(&ctx.img,
op->params[0].i32,
op->params[1].i32,
op->params[2].i32,
op->params[3].i32,
op->params[4].color);
}break;
case TOP_DITHER: {
ImageDither(&ctx.img,
op->params[0].i32,
op->params[1].i32,
op->params[2].i32,
op->params[3].i32);
}break;
case TOP_LOAD_IMAGE: {
if (FileExists(op->params[0].str)) {
Image img = LoadImage(op->params[0].str);
int x = op->params[1].i32;
int y = op->params[2].i32;
int w = op->params[3].i32;
int h = op->params[4].i32;
if (w != -1 || h != -1) {
ImageResize(&img, w != -1 ? w : img.width, h != -1 ? h : img.height);
}
ImageDraw(&ctx.img, img,
(Rectangle){0.0f, 0.0f, img.width, img.height},
(Rectangle){x, y, img.width, img.height},
op->params[5].color);
UnloadImage(img);
} else {
zpl_printf("TOP_LOAD_IMAGE: src %s not found!\n", op->params[0].str);
}
}break;
default: {
zpl_printf("%s\n", "unsupported op!");
}break;
}
}
}
void texed_process_params(void) {
for (int i = 0; i < zpl_array_count(ctx.ops); i += 1) {
td_op *op = &ctx.ops[i];
if (op->is_hidden) continue;
for (int j = 0; j < op->num_params; j += 1) {
td_param *p = &op->params[j];
switch (p->kind) {
case TPARAM_FLOAT: {
p->flt = (float)zpl_str_to_f64(p->str, NULL);
}break;
case TPARAM_INT: {
p->u32 = (int)zpl_str_to_i64(p->str, NULL, 10);
}break;
case TPARAM_COLOR: {
uint32_t color = (uint32_t)zpl_str_to_u64(p->str, NULL, 16);
p->color = GetColor(color);
}break;
case TPARAM_STRING: {
// NOTE(zaklaus): no-op
}break;
default: {
zpl_printf("%s\n", "unsupported param!");
}break;
}
}
}
}