diff --git a/errors.h b/errors.h index cade3071..4f1cab97 100644 --- a/errors.h +++ b/errors.h @@ -21,7 +21,7 @@ /// Functions and macros for tracing and error reporting. ////////////////////////////////////////////////////////////////////////////// -#ifndef __func__ +#ifdef __VBCC__ #define __func__ "stupid compiler !" #endif diff --git a/factory.c b/factory.c index 79b53850..89991563 100644 --- a/factory.c +++ b/factory.c @@ -25,7 +25,9 @@ #include "brush.h" #include "buttons.h" #include "engine.h" +#include "errors.h" #include "global.h" +#include "graph.h" #include "misc.h" #include "readline.h" #include "sdlscreen.h" @@ -37,19 +39,62 @@ #include // Wrapper functions to call C from Lua -int L_PutPixel(lua_State* L) + +int L_SetBrushSize(lua_State* L) +{ + Realloc_brush(lua_tonumber(L, 1), lua_tonumber(L, 2)); + return 0; +} + +int L_GetBrushSize(lua_State* L) +{ + DEBUG("GBS",Brush_width); + lua_pushinteger(L, Brush_width); + lua_pushinteger(L, Brush_height); + return 2; +} + +int L_PutBrushPixel(lua_State* L) { Pixel_in_brush(lua_tonumber(L, 1), lua_tonumber(L, 2), lua_tonumber(L, 3)); return 0; // no values returned for lua } -int L_GetPixel(lua_State* L) +int L_GetBrushPixel(lua_State* L) { uint8_t c = Read_pixel_from_brush(lua_tonumber(L, 1), lua_tonumber(L, 2)); lua_pushinteger(L, c); return 1; } +int L_SetPictureSize(lua_State* L) +{ + Resize_image(lua_tonumber(L, 1), lua_tonumber(L, 2)); + return 0; +} + +int L_GetPictureSize(lua_State* L) +{ + lua_pushinteger(L, Main_image_width); + lua_pushinteger(L, Main_image_height); + return 2; +} + +int L_PutPicturePixel(lua_State* L) +{ + Pixel_in_current_screen(lua_tonumber(L, 1), lua_tonumber(L, 2), + lua_tonumber(L, 3)); + return 0; // no values returned for lua +} + +int L_GetPicturePixel(lua_State* L) +{ + uint8_t c = Read_pixel_from_current_screen(lua_tonumber(L, 1), + lua_tonumber(L, 2)); + lua_pushinteger(L, c); + return 1; +} + int L_SetColor(lua_State* L) { Set_color(lua_tonumber(L, 1), lua_tonumber(L, 2), lua_tonumber(L, 3), @@ -60,29 +105,11 @@ int L_SetColor(lua_State* L) void Button_Brush_Factory(void) { short clicked_button; - word height; - word width; - char str[5]; - - T_Special_button* width_button; - T_Special_button* height_button; Open_window(154, 162, "Brush Factory"); Window_set_normal_button(77, 141, 67, 14, "Cancel", 0, 1, KEY_ESC); // 1 Window_set_normal_button(10, 141, 67, 14, "Run", 0, 1, 0); // 2 - Print_in_window(10, 17, "Width:", MC_Black, MC_Light); - width_button = Window_set_input_button(64, 15, 4); // 3 - Print_in_window(10, 30, "Height:", MC_Black, MC_Light); - height_button = Window_set_input_button(64, 28, 4); // 4 - - width = Paintbrush_width; - Num2str(width, str, 4); - Window_input_content(width_button, str); - - height = Paintbrush_height; - Num2str(height, str, 4); - Window_input_content(height_button, str); Update_window_area(0, 0, Window_width, Window_height); Display_cursor(); @@ -92,34 +119,6 @@ void Button_Brush_Factory(void) switch (clicked_button) { - case 3 : // Largeur - Num2str(width, str, 4); - Readline(65, 16, str, 4, 1); - width = atoi(str); - // On corrige les dimensions - if (width == 0) - { - width = 1; - Num2str(width, str, 4); - Window_input_content(width_button, str); - } - Display_cursor(); - break; - - case 4 : // Height - Num2str(height, str, 4); - Readline(65, 29, str, 4, 1); - height = atoi(str); - // On corrige les dimensions - if (height == 0) - { - height = 1; - Num2str(height, str, 4); - Window_input_content(height_button, str); - } - Display_cursor(); - break; - default: break; } @@ -130,23 +129,25 @@ void Button_Brush_Factory(void) { lua_State* L = lua_open(); - Realloc_brush(width, height); - - lua_register(L,"putpixel",L_PutPixel); - lua_register(L,"getpixel",L_GetPixel); + lua_register(L,"putbrushpixel",L_PutBrushPixel); + lua_register(L,"getbrushpixel",L_GetBrushPixel); + lua_register(L,"putpicturepixel",L_PutPicturePixel); + lua_register(L,"getpicturepixel",L_GetPicturePixel); + lua_register(L,"setbrushsize",L_SetBrushSize); + lua_register(L,"setpicturesize",L_SetPictureSize); + lua_register(L,"getbrushsize",L_GetBrushSize); + lua_register(L,"getpicturesize",L_GetPictureSize); lua_register(L,"setcolor",L_SetColor); + // For debug only + // luaL_openlibs(L); + if (luaL_loadfile(L,"./test.lua") != 0) Verbose_error_message(lua_tostring(L, 1)); - - lua_pushinteger(L, width); - lua_pushinteger(L, height); - if (lua_pcall(L, 2, 0, 0) != 0) + else if (lua_pcall(L, 0, 0, 0) != 0) Verbose_error_message(lua_tostring(L, 1)); lua_close(L); - - Change_paintbrush_shape(PAINTBRUSH_SHAPE_COLOR_BRUSH); } Close_window(); diff --git a/test.lua b/test.lua new file mode 100644 index 00000000..a8804d1d --- /dev/null +++ b/test.lua @@ -0,0 +1,7 @@ +w, h = getbrushsize() + +for x = 0, w - 1, 1 do + for y = 0, h - 1, 1 do + putbrushpixel(x, y, (x+y)%256); + end +end