Fix Object.merge; add many color palettes, normalize color fns

This commit is contained in:
2023-09-23 17:35:02 +00:00
parent 721abd6a8f
commit 174a9ed586
12 changed files with 157 additions and 135 deletions

View File

@@ -559,8 +559,8 @@ void draw_grid(float width, float span, struct rgba color)
sg_apply_pipeline(grid_pipe);
sg_apply_bindings(&grid_bind);
float col[4] = { color.r/255.0 ,color.g/255.0 ,color.b/255.0 ,color.a/255.0 };
float col[4];
rgba2floats(col,color);
fs_params_t pt;
pt.thickness = (float)width;

View File

@@ -161,12 +161,12 @@ struct rgba js2color(JSValue v) {
JSValue c[4];
for (int i = 0; i < 4; i++)
c[i] = js_arridx(v,i);
unsigned char a = JS_IsUndefined(c[3]) ? 255 : js2int(c[3]);
float a = JS_IsUndefined(c[3]) ? 1.0 : js2number(c[3]);
struct rgba color = {
.r = js2int(c[0]),
.g = js2int(c[1]),
.b = js2int(c[2]),
.a = a,
.r = js2number(c[0])*RGBA_MAX,
.g = js2number(c[1])*RGBA_MAX,
.b = js2number(c[2])*RGBA_MAX,
.a = a*RGBA_MAX,
};
return color;

View File

@@ -15,6 +15,8 @@
#include "sokol/sokol_gfx.h"
#include "HandmadeMath.h"
#define RGBA_MAX 255
struct mCamera;
struct window;
@@ -126,10 +128,10 @@ static struct boundingbox cwh2bb(HMM_Vec2 c, HMM_Vec2 wh) {
static float *rgba2floats(float *r, struct rgba c)
{
r[0] = c.r / 255.0;
r[1] = c.g / 255.0;
r[2] = c.b / 255.0;
r[3] = c.a / 255.0;
r[0] = (float)c.r / RGBA_MAX;
r[1] = (float)c.g / RGBA_MAX;
r[2] = (float)c.b / RGBA_MAX;
r[3] = (float)c.a / RGBA_MAX;
return r;
}

View File

@@ -202,17 +202,12 @@ int fexists(char *path)
return 0;
}
void *slurp_file(const char *filename, size_t *size)
void *os_slurp(const char *file, size_t *size)
{
if (cdb_find(&game_cdb, filename, strlen(filename)))
return cdb_slurp(&game_cdb, filename, size);
else if (cdb_find(&corecdb, filename, strlen(filename)))
return cdb_slurp(&corecdb, filename, size);
FILE *f;
jump:
f = fopen(filename, "rb");
f = fopen(file, "rb");
if (!f) return NULL;
@@ -228,6 +223,18 @@ void *slurp_file(const char *filename, size_t *size)
return slurp;
}
void *slurp_file(const char *filename, size_t *size)
{
if (!access(filename, R_OK))
return os_slurp(filename, size);
else if (cdb_find(&game_cdb, filename, strlen(filename)))
return cdb_slurp(&game_cdb, filename, size);
else if (cdb_find(&corecdb, filename, strlen(filename)))
return cdb_slurp(&corecdb, filename, size);
return NULL;
}
char *slurp_text(const char *filename, size_t *size)
{
size_t len;

View File

@@ -98,7 +98,7 @@ void script_evalf(const char *format, ...)
}
uint8_t *compile_script(const char *file, size_t *len) {
const char *script = slurp_text(file, len);
char *script = slurp_text(file, len);
JSValue obj = JS_Eval(js, script, *len, file, JS_EVAL_FLAG_COMPILE_ONLY | JS_EVAL_TYPE_GLOBAL | JS_EVAL_FLAGS);
free(script);
size_t out_len;