summaryrefslogtreecommitdiff
path: root/src/rgui.c
diff options
context:
space:
mode:
authorjussi2022-02-18 18:27:10 +0200
committerjussi2022-02-18 18:27:10 +0200
commit6e4fdd3b3ae4e4656e151f098c40cfe551a36e8c (patch)
tree37e30d371ebd44dfc8bab0d33c26f0294bda5ae4 /src/rgui.c
parent345cc1d5aa3b3c97e2cce453dc65a62c3e05427b (diff)
downloadreilua-enhanced-6e4fdd3b3ae4e4656e151f098c40cfe551a36e8c.tar.gz
reilua-enhanced-6e4fdd3b3ae4e4656e151f098c40cfe551a36e8c.tar.bz2
reilua-enhanced-6e4fdd3b3ae4e4656e151f098c40cfe551a36e8c.zip
Added initial files.
Diffstat (limited to 'src/rgui.c')
-rw-r--r--src/rgui.c544
1 files changed, 544 insertions, 0 deletions
diff --git a/src/rgui.c b/src/rgui.c
new file mode 100644
index 0000000..2a967da
--- /dev/null
+++ b/src/rgui.c
@@ -0,0 +1,544 @@
+#include "main.h"
+#include "state.h"
+#include "rgui.h"
+#include "lua_core.h"
+
+#define RAYGUI_IMPLEMENTATION
+#include "raygui.h"
+
+/*
+## Gui - Global
+*/
+
+/*
+> RL_GuiEnable()
+
+Enable gui controls ( Global state )
+*/
+int lguiGuiEnable( lua_State *L ) {
+ GuiEnable();
+
+ return 1;
+}
+
+/*
+> RL_GuiDisable()
+
+Disable gui controls ( Global state )
+*/
+int lguiGuiDisable( lua_State *L ) {
+ GuiDisable();
+
+ return 1;
+}
+
+/*
+> RL_GuiLock()
+
+Lock gui controls ( Global state )
+*/
+int lguiGuiLock( lua_State *L ) {
+ GuiLock();
+
+ return 1;
+}
+
+/*
+> RL_GuiUnlock()
+
+Unlock gui controls ( Global state )
+*/
+int lguiGuiUnlock( lua_State *L ) {
+ GuiUnlock();
+
+ return 1;
+}
+
+/*
+## Gui - Font
+*/
+
+/*
+> success = RL_GuiSetFont( Font font )
+
+Set gui custom font ( Global state )
+
+- Failure return false
+- Success return true
+*/
+int lguiGuiSetFont( lua_State *L ) {
+ if ( !lua_isnumber( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GuiSetFont( Font font )" );
+ lua_pushboolean( L, false );
+ return 1;
+ }
+ GuiSetFont( *state->fonts[ lua_tointeger( L, -1 ) ] );
+ lua_pushboolean( L, true );
+
+ return 1;
+}
+
+/*
+## Gui - Container
+*/
+
+/*
+> state = RL_GuiWindowBox( Rectangle bounds, string title )
+
+Window Box control, shows a window that can be closed
+
+- Failure return nil
+- Success return bool
+*/
+int lguiGuiWindowBox( lua_State *L ) {
+ if ( !lua_istable( L, -2 ) || !lua_isstring( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GuiWindowBox( Rectangle bounds, string title )" );
+ lua_pushnil( L );
+ return 1;
+ }
+ char text[ STRING_LEN ] = { '\0' };
+ strcpy( text, lua_tostring( L, -1 ) );
+ lua_pop( L, 1 );
+ Rectangle rect = uluaGetRectangle( L );
+
+ lua_pushboolean( L, GuiWindowBox( rect, text ) );
+
+ return 1;
+}
+
+/*
+> success = RL_GuiPanel( Rectangle bounds )
+
+Panel control, useful to group controls
+
+- Failure return false
+- Success return true
+*/
+int lguiGuiPanel( lua_State *L ) {
+ if ( !lua_istable( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GuiPanel( Rectangle bounds )" );
+ lua_pushboolean( L, false );
+ return 1;
+ }
+ Rectangle rect = uluaGetRectangle( L );
+
+ GuiPanel( rect );
+ lua_pushboolean( L, true );
+
+ return 1;
+}
+
+/*
+> view, scroll = RL_GuiScrollPanel( Rectangle bounds, Rectangle content, Vector2 scroll )
+
+Scroll Panel control
+
+- Failure return false
+- Success return Rectangle, Vector2
+*/
+int lguiGuiScrollPanel( lua_State *L ) {
+ if ( !lua_istable( L, -3 ) || !lua_istable( L, -2 ) || !lua_istable( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GuiScrollPanel( Rectangle bounds, Rectangle content, Vector2 scroll )" );
+ lua_pushboolean( L, false );
+ return 1;
+ }
+ Vector2 scroll = uluaGetVector2( L );
+ lua_pop( L, 1 );
+ Rectangle content = uluaGetRectangle( L );
+ lua_pop( L, 1 );
+ Rectangle bounds = uluaGetRectangle( L );
+
+ uluaPushRectangle( L, GuiScrollPanel( bounds, content, &scroll ) );
+ uluaPushVector2( L, scroll );
+
+ return 2;
+}
+
+/*
+## Gui - Basic
+*/
+
+/*
+> success = RL_GuiLabel( Rectangle bounds, string text )
+
+Label control, shows text
+
+- Failure return false
+- Success return true
+*/
+int lguiGuiLabel( lua_State *L ) {
+ if ( !lua_istable( L, -2 ) || !lua_isstring( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GuiLabel( Rectangle bounds, string text )" );
+ lua_pushboolean( L, false );
+ return 1;
+ }
+ char text[ STRING_LEN ] = { '\0' };
+ strcpy( text, lua_tostring( L, -1 ) );
+ lua_pop( L, 1 );
+ Rectangle rect = uluaGetRectangle( L );
+
+ GuiLabel( rect, text );
+ lua_pushboolean( L, true );
+
+ return 1;
+}
+
+/*
+> clicked = RL_GuiButton( Rectangle bounds, string text )
+
+Button control, returns true when clicked
+
+- Failure return nil
+- Success return boolean
+*/
+int lguiGuiButton( lua_State *L ) {
+ if ( !lua_istable( L, -2 ) || !lua_isstring( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GuiButton( Rectangle bounds, string text )" );
+ lua_pushnil( L );
+ return 1;
+ }
+ char text[ STRING_LEN ] = { '\0' };
+ strcpy( text, lua_tostring( L, -1 ) );
+ lua_pop( L, 1 );
+ Rectangle rect = uluaGetRectangle( L );
+
+ lua_pushboolean( L, GuiButton( rect, text ) );
+
+ return 1;
+}
+
+/*
+> active = RL_GuiToggle( Rectangle bounds, string text, bool active )
+
+Toggle Button control, returns true when active
+
+- Failure return nil
+- Success return boolean
+*/
+int lguiGuiToggle( lua_State *L ) {
+ if ( !lua_istable( L, -3 ) || !lua_isstring( L, -2 ) || !lua_isboolean( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GuiToggle( Rectangle bounds, string text, bool active )" );
+ lua_pushnil( L );
+ return 1;
+ }
+ bool checked = lua_toboolean( L, -1 );
+ lua_pop( L, 1 );
+ char text[ STRING_LEN ] = { '\0' };
+ strcpy( text, lua_tostring( L, -1 ) );
+ lua_pop( L, 1 );
+ Rectangle rect = uluaGetRectangle( L );
+
+ lua_pushboolean( L, GuiToggle( rect, text, checked ) );
+
+ return 1;
+}
+
+/*
+> active = RL_GuiCheckBox( Rectangle bounds, string text, bool checked )
+
+Check Box control, returns true when active
+
+- Failure return nil
+- Success return boolean
+*/
+int lguiGuiCheckBox( lua_State *L ) {
+ if ( !lua_istable( L, -3 ) || !lua_isstring( L, -2 ) || !lua_isboolean( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GuiCheckBox( Rectangle bounds, string text, bool checked )" );
+ lua_pushnil( L );
+ return 1;
+ }
+ bool checked = lua_toboolean( L, -1 );
+ lua_pop( L, 1 );
+ char text[ STRING_LEN ] = { '\0' };
+ strcpy( text, lua_tostring( L, -1 ) );
+ lua_pop( L, 1 );
+ Rectangle rect = uluaGetRectangle( L );
+
+ lua_pushboolean( L, GuiCheckBox( rect, text, checked ) );
+
+ return 1;
+}
+
+/*
+> pressed, text = RL_GuiTextBox( Rectangle bounds, string text, int textSize, bool editMode )
+
+Text Box control, updates input text
+
+- Failure return nil
+- Success return boolean, string
+*/
+int lguiGuiTextBox( lua_State *L ) {
+ if ( !lua_istable( L, -4 ) || !lua_isstring( L, -3 ) || !lua_isnumber( L, -2 ) || !lua_isboolean( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GuiTextBox( Rectangle bounds, string text, int textSize, bool editMode )" );
+ lua_pushnil( L );
+ return 1;
+ }
+ bool editMode = lua_toboolean( L, -1 );
+ lua_pop( L, 1 );
+ int textSize = lua_tointeger( L, -1 );
+ lua_pop( L, 1 );
+ char text[ STRING_LEN ] = { '\0' };
+ strcpy( text, lua_tostring( L, -1 ) );
+ lua_pop( L, 1 );
+ Rectangle rect = uluaGetRectangle( L );
+
+ lua_pushboolean( L, GuiTextBox( rect, text, textSize, editMode ) );
+ lua_pushstring( L, text );
+
+ return 2;
+}
+
+/*
+> pressed, text = RL_GuiTextBoxMulti( Rectangle bounds, string text, int textSize, bool editMode )
+
+Text Box control with multiple lines
+
+- Failure return nil
+- Success return boolean, string
+*/
+int lguiGuiTextBoxMulti( lua_State *L ) {
+ if ( !lua_istable( L, -4 ) || !lua_isstring( L, -3 ) || !lua_isnumber( L, -2 ) || !lua_isboolean( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GuiTextBoxMulti( Rectangle bounds, string text, int textSize, bool editMode )" );
+ lua_pushnil( L );
+ return 1;
+ }
+ bool editMode = lua_toboolean( L, -1 );
+ lua_pop( L, 1 );
+ int textSize = lua_tointeger( L, -1 );
+ lua_pop( L, 1 );
+ char text[ STRING_LEN ] = { '\0' };
+ strcpy( text, lua_tostring( L, -1 ) );
+ lua_pop( L, 1 );
+ Rectangle rect = uluaGetRectangle( L );
+
+ lua_pushboolean( L, GuiTextBoxMulti( rect, text, textSize, editMode ) );
+ lua_pushstring( L, text );
+
+ return 2;
+}
+
+/*
+> pressed, value = RL_GuiSpinner( Rectangle bounds, string text, int value, int minValue, int maxValue, bool editMode )
+
+Spinner control, returns selected value
+
+- Failure return nil
+- Success return boolean, int
+*/
+int lguiGuiSpinner( lua_State *L ) {
+ if ( !lua_istable( L, -6 ) || !lua_isstring( L, -5 ) || !lua_isnumber( L, -4 )
+ || !lua_isnumber( L, -3 ) || !lua_isnumber( L, -2 ) || !lua_isboolean( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GuiSpinner( Rectangle bounds, string text, int value, int minValue, int maxValue, bool editMode )" );
+ lua_pushnil( L );
+ return 1;
+ }
+ bool editMode = lua_toboolean( L, -1 );
+ lua_pop( L, 1 );
+ int maxValue = lua_tointeger( L, -1 );
+ lua_pop( L, 1 );
+ int minValue = lua_tointeger( L, -1 );
+ lua_pop( L, 1 );
+ int value = lua_tointeger( L, -1 );
+ lua_pop( L, 1 );
+ char text[ STRING_LEN ] = { '\0' };
+ strcpy( text, lua_tostring( L, -1 ) );
+ lua_pop( L, 1 );
+ Rectangle rect = uluaGetRectangle( L );
+
+ lua_pushboolean( L, GuiSpinner( rect, text, &value, minValue, maxValue, editMode ) );
+ lua_pushinteger( L, value );
+
+ return 2;
+}
+
+/*
+> pressed, value = RL_GuiValueBox( Rectangle bounds, string text, int value, int minValue, int maxValue, bool editMode )
+
+Value Box control, updates input text with numbers
+
+- Failure return nil
+- Success return boolean, int
+*/
+int lguiGuiValueBox( lua_State *L ) {
+ if ( !lua_istable( L, -6 ) || !lua_isstring( L, -5 ) || !lua_isnumber( L, -4 )
+ || !lua_isnumber( L, -3 ) || !lua_isnumber( L, -2 ) || !lua_isboolean( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GuiValueBox( Rectangle bounds, string text, int value, int minValue, int maxValue, bool editMode )" );
+ lua_pushnil( L );
+ return 1;
+ }
+ bool editMode = lua_toboolean( L, -1 );
+ lua_pop( L, 1 );
+ int maxValue = lua_tointeger( L, -1 );
+ lua_pop( L, 1 );
+ int minValue = lua_tointeger( L, -1 );
+ lua_pop( L, 1 );
+ int value = lua_tointeger( L, -1 );
+ lua_pop( L, 1 );
+ char text[ STRING_LEN ] = { '\0' };
+ strcpy( text, lua_tostring( L, -1 ) );
+ lua_pop( L, 1 );
+ Rectangle rect = uluaGetRectangle( L );
+
+ lua_pushboolean( L, GuiValueBox( rect, text, &value, minValue, maxValue, editMode ) );
+ lua_pushinteger( L, value );
+
+ return 2;
+}
+
+/*
+> value = RL_GuiSlider( Rectangle bounds, string textLeft, string textRight, float value, float minValue, float maxValue )
+
+Slider control, returns selected value
+
+- Failure return nil
+- Success return float
+*/
+int lguiGuiSlider( lua_State *L ) {
+ if ( !lua_istable( L, -6 ) || !lua_isstring( L, -5 ) || !lua_isstring( L, -4 )
+ || !lua_isnumber( L, -3 ) || !lua_isnumber( L, -2 ) || !lua_isnumber( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GuiSlider( Rectangle bounds, string textLeft, string textRight, float value, float minValue, float maxValue )" );
+ lua_pushnil( L );
+ return 1;
+ }
+ float maxValue = lua_tonumber( L, -1 );
+ lua_pop( L, 1 );
+ float minValue = lua_tonumber( L, -1 );
+ lua_pop( L, 1 );
+ float value = lua_tonumber( L, -1 );
+ lua_pop( L, 1 );
+ char textRight[ STRING_LEN ] = { '\0' };
+ strcpy( textRight, lua_tostring( L, -1 ) );
+ lua_pop( L, 1 );
+ char textLeft[ STRING_LEN ] = { '\0' };
+ strcpy( textLeft, lua_tostring( L, -1 ) );
+ lua_pop( L, 1 );
+ Rectangle rect = uluaGetRectangle( L );
+
+ lua_pushnumber( L, GuiSlider( rect, textLeft, textRight, value, minValue, maxValue ) );
+
+ return 1;
+}
+
+/*
+> value = RL_GuiSliderBar( Rectangle bounds, string textLeft, string textRight, float value, float minValue, float maxValue )
+
+Slider Bar control, returns selected value
+
+- Failure return nil
+- Success return float
+*/
+int lguiGuiSliderBar( lua_State *L ) {
+ if ( !lua_istable( L, -6 ) || !lua_isstring( L, -5 ) || !lua_isstring( L, -4 )
+ || !lua_isnumber( L, -3 ) || !lua_isnumber( L, -2 ) || !lua_isnumber( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GuiSliderBar( Rectangle bounds, string textLeft, string textRight, float value, float minValue, float maxValue )" );
+ lua_pushnil( L );
+ return 1;
+ }
+ float maxValue = lua_tonumber( L, -1 );
+ lua_pop( L, 1 );
+ float minValue = lua_tonumber( L, -1 );
+ lua_pop( L, 1 );
+ float value = lua_tonumber( L, -1 );
+ lua_pop( L, 1 );
+ char textRight[ STRING_LEN ] = { '\0' };
+ strcpy( textRight, lua_tostring( L, -1 ) );
+ lua_pop( L, 1 );
+ char textLeft[ STRING_LEN ] = { '\0' };
+ strcpy( textLeft, lua_tostring( L, -1 ) );
+ lua_pop( L, 1 );
+ Rectangle rect = uluaGetRectangle( L );
+
+ lua_pushnumber( L, GuiSliderBar( rect, textLeft, textRight, value, minValue, maxValue ) );
+
+ return 1;
+}
+
+/*
+> value = RL_GuiProgressBar( Rectangle bounds, string textLeft, string textRight, float value, float minValue, float maxValue )
+
+Progress Bar control, shows current progress value
+
+- Failure return nil
+- Success return float
+*/
+int lguiGuiProgressBar( lua_State *L ) {
+ if ( !lua_istable( L, -6 ) || !lua_isstring( L, -5 ) || !lua_isstring( L, -4 )
+ || !lua_isnumber( L, -3 ) || !lua_isnumber( L, -2 ) || !lua_isnumber( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GuiProgressBar( Rectangle bounds, string textLeft, string textRight, float value, float minValue, float maxValue )" );
+ lua_pushnil( L );
+ return 1;
+ }
+ float maxValue = lua_tonumber( L, -1 );
+ lua_pop( L, 1 );
+ float minValue = lua_tonumber( L, -1 );
+ lua_pop( L, 1 );
+ float value = lua_tonumber( L, -1 );
+ lua_pop( L, 1 );
+ char textRight[ STRING_LEN ] = { '\0' };
+ strcpy( textRight, lua_tostring( L, -1 ) );
+ lua_pop( L, 1 );
+ char textLeft[ STRING_LEN ] = { '\0' };
+ strcpy( textLeft, lua_tostring( L, -1 ) );
+ lua_pop( L, 1 );
+ Rectangle rect = uluaGetRectangle( L );
+
+ lua_pushnumber( L, GuiProgressBar( rect, textLeft, textRight, value, minValue, maxValue ) );
+
+ return 1;
+}
+
+/*
+> value = RL_GuiScrollBar( Rectangle bounds, int value, int minValue, int maxValue )
+
+Scroll Bar control
+
+- Failure return nil
+- Success return int
+*/
+int lguiGuiScrollBar( lua_State *L ) {
+ if ( !lua_istable( L, -4 ) || !lua_isnumber( L, -3 ) || !lua_isnumber( L, -2 ) || !lua_isnumber( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GuiScrollBar( Rectangle bounds, int value, int minValue, int maxValue )" );
+ lua_pushnil( L );
+ return 1;
+ }
+ int maxValue = lua_tointeger( L, -1 );
+ lua_pop( L, 1 );
+ int minValue = lua_tointeger( L, -1 );
+ lua_pop( L, 1 );
+ int value = lua_tointeger( L, -1 );
+ lua_pop( L, 1 );
+ Rectangle rect = uluaGetRectangle( L );
+
+ lua_pushinteger( L, GuiScrollBar( rect, value, minValue, maxValue ) );
+
+ return 1;
+}
+
+/*
+> pressed, item = RL_GuiDropdownBox( Rectangle bounds, string text, int active, bool editMode )
+
+Dropdown Box control, returns selected item
+
+- Failure return nil
+- Success return bool, int
+*/
+int lguiGuiDropdownBox( lua_State *L ) {
+ if ( !lua_istable( L, -4 ) || !lua_isstring( L, -3 ) || !lua_isnumber( L, -2 ) || !lua_isboolean( L, -1 ) ) {
+ TraceLog( LOG_WARNING, "%s", "Bad call of function. RL_GuiDropdownBox( Rectangle bounds, string text, int active, bool editMode )" );
+ lua_pushnil( L );
+ return 1;
+ }
+ bool editMode = lua_toboolean( L, -1 );
+ lua_pop( L, 1 );
+ int active = lua_tointeger( L, -1 );
+ lua_pop( L, 1 );
+ char text[ STRING_LEN ] = { '\0' };
+ strcpy( text, lua_tostring( L, -1 ) );
+ lua_pop( L, 1 );
+ Rectangle rect = uluaGetRectangle( L );
+
+ lua_pushboolean( L, GuiDropdownBox( rect, text, &active, editMode ) );
+ lua_pushinteger( L, active );
+
+ return 2;
+}