Replace layout_ratios and points with single floats array

This commit is contained in:
Kevin Harrison 2016-12-18 20:08:51 -05:00
parent 1d86aa51f4
commit 8aa93de803

View file

@ -46,9 +46,8 @@ static int font_count;
static char *edit_buffer; static char *edit_buffer;
static const char **combobox_items; static const char **combobox_items;
static struct nk_cursor cursors[NK_CURSOR_COUNT]; static struct nk_cursor cursors[NK_CURSOR_COUNT];
static float *layout_ratios; static float *floats;
static int layout_ratio_count; static int layout_ratio_count;
static float *points;
static void nk_love_configureGraphics(int line_thickness, struct nk_color col) static void nk_love_configureGraphics(int line_thickness, struct nk_color col)
{ {
@ -820,10 +819,8 @@ static int nk_love_init(lua_State *luaState)
nk_love_assert(edit_buffer != NULL, "nk.init: out of memory"); nk_love_assert(edit_buffer != NULL, "nk.init: out of memory");
combobox_items = malloc(sizeof(char*) * NK_LOVE_COMBOBOX_MAX_ITEMS); combobox_items = malloc(sizeof(char*) * NK_LOVE_COMBOBOX_MAX_ITEMS);
nk_love_assert(combobox_items != NULL, "nk.init: out of memory"); nk_love_assert(combobox_items != NULL, "nk.init: out of memory");
layout_ratios = malloc(sizeof(float) * NK_LOVE_MAX_RATIOS); floats = malloc(sizeof(float) * NK_MAX(NK_LOVE_MAX_RATIOS, NK_LOVE_MAX_POINTS * 2));
nk_love_assert(layout_ratios != NULL, "nk.init: out of memory"); nk_love_assert(floats != NULL, "nk.init: out of memory");
points = malloc(sizeof(float) * NK_LOVE_MAX_POINTS * 2);
nk_love_assert(points != NULL, "nk.init: out of memory");
return 0; return 0;
} }
@ -840,10 +837,8 @@ static int nk_love_shutdown(lua_State *luaState)
edit_buffer = NULL; edit_buffer = NULL;
free(combobox_items); free(combobox_items);
combobox_items = NULL; combobox_items = NULL;
free(layout_ratios); free(floats);
layout_ratios = NULL; floats = NULL;
free(points);
points = NULL;
return 0; return 0;
} }
@ -1491,10 +1486,10 @@ static int nk_love_layout_row(lua_State *L)
int i, j; int i, j;
for (i = 1, j = layout_ratio_count; i <= cols && j < NK_LOVE_MAX_RATIOS; ++i, ++j) { for (i = 1, j = layout_ratio_count; i <= cols && j < NK_LOVE_MAX_RATIOS; ++i, ++j) {
lua_rawgeti(L, -1, i); lua_rawgeti(L, -1, i);
layout_ratios[j] = lua_tonumber(L, -1); floats[j] = lua_tonumber(L, -1);
lua_pop(L, 1); lua_pop(L, 1);
} }
nk_layout_row(&context, format, height, cols, layout_ratios + layout_ratio_count); nk_layout_row(&context, format, height, cols, floats + layout_ratio_count);
layout_ratio_count += cols; layout_ratio_count += cols;
} }
return 0; return 0;
@ -3413,12 +3408,12 @@ static int nk_love_line(lua_State *L)
int i; int i;
for (i = 0; i < argc; ++i) { for (i = 0; i < argc; ++i) {
nk_love_assert(lua_type(L, i + 1) == LUA_TNUMBER, "nk.line: point coordinates should be numbers"); nk_love_assert(lua_type(L, i + 1) == LUA_TNUMBER, "nk.line: point coordinates should be numbers");
points[i] = lua_tointeger(L, i + 1); floats[i] = lua_tonumber(L, i + 1);
} }
float line_thickness; float line_thickness;
struct nk_color color; struct nk_color color;
nk_love_getGraphics(&line_thickness, &color); nk_love_getGraphics(&line_thickness, &color);
nk_stroke_polyline(&context.current->buffer, points, argc / 2, line_thickness, color); nk_stroke_polyline(&context.current->buffer, floats, argc / 2, line_thickness, color);
return 0; return 0;
} }
@ -3453,15 +3448,15 @@ static int nk_love_polygon(lua_State *L)
int i; int i;
for (i = 0; i < argc - 1; ++i) { for (i = 0; i < argc - 1; ++i) {
nk_love_assert(lua_type(L, i + 2) == LUA_TNUMBER, "nk.polygon: point coordinates should be numbers"); nk_love_assert(lua_type(L, i + 2) == LUA_TNUMBER, "nk.polygon: point coordinates should be numbers");
points[i] = lua_tonumber(L, i + 2); floats[i] = lua_tonumber(L, i + 2);
} }
float line_thickness; float line_thickness;
struct nk_color color; struct nk_color color;
nk_love_getGraphics(&line_thickness, &color); nk_love_getGraphics(&line_thickness, &color);
if (!strcmp(mode, "fill")) { if (!strcmp(mode, "fill")) {
nk_fill_polygon(&context.current->buffer, points, (argc - 1) / 2, color); nk_fill_polygon(&context.current->buffer, floats, (argc - 1) / 2, color);
} else if (!strcmp(mode, "line")) { } else if (!strcmp(mode, "line")) {
nk_stroke_polygon(&context.current->buffer, points, (argc - 1) / 2, line_thickness, color); nk_stroke_polygon(&context.current->buffer, floats, (argc - 1) / 2, line_thickness, color);
} else { } else {
nk_love_error("nk.polygon: arg 1 should be a draw mode"); nk_love_error("nk.polygon: arg 1 should be a draw mode");
} }