Compare commits

..

No commits in common. "master" and "v2.2" have entirely different histories.
master ... v2.2

11 changed files with 687 additions and 1301 deletions

1
.gitignore vendored
View file

@ -1 +0,0 @@
build/

2
.gitmodules vendored
View file

@ -1,3 +1,3 @@
[submodule "src/nuklear"] [submodule "src/nuklear"]
path = src/nuklear path = src/nuklear
url = https://github.com/Immediate-Mode-UI/Nuklear.git url = https://github.com/vurtun/nuklear.git

View file

@ -24,14 +24,4 @@ TARGET_LINK_LIBRARIES(
${LUA_LIBRARIES} ${LUA_LIBRARIES}
) )
IF(MSVC)
TARGET_COMPILE_DEFINITIONS(${LIB_NAME} PRIVATE LUA_BUILD_AS_DLL)
endif(MSVC)
SET_TARGET_PROPERTIES("${LIB_NAME}" PROPERTIES PREFIX "") SET_TARGET_PROPERTIES("${LIB_NAME}" PROPERTIES PREFIX "")
IF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
SET(CMAKE_INSTALL_PREFIX "${CMAKE_BINARY_DIR}" CACHE PATH "..." FORCE)
ENDIF(CMAKE_INSTALL_PREFIX_INITIALIZED_TO_DEFAULT)
INSTALL(TARGETS "${LIB_NAME}" DESTINATION .)

View file

@ -1,6 +1,6 @@
# LÖVE-Nuklear # LÖVE-Nuklear
[Nuklear](https://github.com/Immediate-Mode-UI/Nuklear) module for the [LÖVE](https://love2d.org/) game engine. [Nuklear](https://github.com/vurtun/nuklear) module for the [LÖVE](https://love2d.org/) game engine.
Provides a lightweight immediate mode GUI for LÖVE games. Provides a lightweight immediate mode GUI for LÖVE games.
@ -54,12 +54,12 @@ function love.keyreleased(key, scancode)
ui:keyreleased(key, scancode) ui:keyreleased(key, scancode)
end end
function love.mousepressed(x, y, button, istouch, presses) function love.mousepressed(x, y, button, istouch)
ui:mousepressed(x, y, button, istouch, presses) ui:mousepressed(x, y, button, istouch)
end end
function love.mousereleased(x, y, button, istouch, presses) function love.mousereleased(x, y, button, istouch)
ui:mousereleased(x, y, button, istouch, presses) ui:mousereleased(x, y, button, istouch)
end end
function love.mousemoved(x, y, dx, dy, istouch) function love.mousemoved(x, y, dx, dy, istouch)
@ -81,30 +81,23 @@ Windows binaries are available for each [release](https://github.com/keharriso/l
To build the library yourself, grab the code with: To build the library yourself, grab the code with:
```sh ```sh
$ git clone --recursive https://github.com/keharriso/love-nuklear.git $ git clone --recursive git@github.com:keharriso/love-nuklear.git
``` ```
Next, you need to compile the code to a native Lua module. Next, you need to compile the code to a native Lua module.
### Compiling with CMake on Linux ### Compiling with CMake on Linux
1. First, ensure you have a C compiler and the `cmake` and `luajit` or `lua51-luajit` (for openSUSE) packages installed, as well as `libluajit-5.1-dev` (for Ubuntu/Debian), `luajit-devel` (for Fedora), or `lua51-luajit-devel` (for openSUSE) if your distro has one of these packages. 1. First, ensure you have the `cmake` and `luajit` packages installed.
2. Create a new folder next to `love-nuklear` called `love-nuklear-build`. 2. Create a new folder next to `love-nuklear` called `love-nuklear-build`.
3. Open a terminal inside `love-nuklear-build`. 3. Open a terminal inside `love-nuklear-build`.
4. Compile the library with 4. Compile with
```sh ```sh
$ cmake -DCMAKE_BUILD_TYPE=Release ../love-nuklear $ cmake ../love-nuklear
$ make $ make
``` ```
5. Locate `nuklear.so` in the build folder. 5. Locate `nuklear.so` in the build folder.
#### Via GNU Guix
LÖVE-Nuklear is also available as a [Guix](http://guix.gnu.org/) package, and can thus be directly downloaded and built via:
```
$ guix package --install love-nuklear
```
### Compiling with CMake and MinGW on Windows ### Compiling with CMake and MinGW on Windows
1. Install [CMake](https://cmake.org/download/) and [MinGW](http://mingw.org/) or [MinGW-w64](https://mingw-w64.org/doku.php). 1. Install [CMake](https://cmake.org/download/) and [MinGW](http://mingw.org/) or [MinGW-w64](https://mingw-w64.org/doku.php).
@ -132,22 +125,6 @@ $ mingw32-make
``` ```
18. Locate `nuklear.dll` inside the build folder. 18. Locate `nuklear.dll` inside the build folder.
### Compiling with CMake and MSVC on Windows
1. Install [CMake](https://cmake.org/download/) and [Visual Studio](https://visualstudio.microsoft.com/).
Community or Express edition is sufficient.
2. Download the source code for [LuaJIT](http://luajit.org/download.html).
3. Open a Visual Studio Command Prompt (x86 or x64 depending on what architecture you need)
and set the current directory to the LuaJIT folder (the one that contains "README"). Also
remember this path.
4. At the VS Command Prompt, set your current directory to `src` then
execute `msvcbuild.bat`. This will create lua51.dll, lua51.lib, and luajit.exe
5. Now open new command prompt window inside the `love-nuklear` folder.
6. Type `set "LUA_DIR=<path to directory at step 3>"`
7. Then type `cmake -Bbuild -H. -A Win32 -DLUA_INCLUDE_DIR=%LUA_DIR%\src -DLUA_LIBRARY=%LUA_DIR%\src\lua51.lib -DCMAKE_INSTALL_PREFIX=%CD%\install`.
If you previously compile LuaJIT using x64 VS command prompt, replace `Win32` with `x64` at above command.
8. Then type `cmake --build build --config Release --target install` and you'll found `nuklear.dll` inside "install" folder.
## Documentation ## Documentation
A complete description of all functions and style properties, alongside additional examples, is available at the [LÖVE-Nuklear wiki](https://github.com/keharriso/love-nuklear/wiki). A complete description of all functions and style properties, alongside additional examples, is available at the [LÖVE-Nuklear wiki](https://github.com/keharriso/love-nuklear/wiki).

View file

@ -11,7 +11,7 @@
find_path(LUA_INCLUDE_DIR luajit.h find_path(LUA_INCLUDE_DIR luajit.h
HINTS HINTS
ENV LUA_DIR ENV LUA_DIR
PATH_SUFFIXES include/luajit-2.0 include/luajit-2.1 include/luajit-5_1-2.1 include PATH_SUFFIXES include/luajit-2.0 include
PATHS PATHS
~/Library/Frameworks ~/Library/Frameworks
/Library/Frameworks /Library/Frameworks

View file

@ -1,51 +0,0 @@
-- Show off the optional closure-oriented versions of basic functions
local function menu(ui)
ui:layoutRow('dynamic', 30, 2)
ui:menu('Menu A', nil, 100, 200, function ()
ui:layoutRow('dynamic', 30, 1)
if ui:menuItem('Item 1') then
print 'Closure: Item 1'
end
if ui:menuItem('Item 2') then
print 'Closure: Item 2'
end
end)
ui:menu('Menu B', nil, 100, 200, function ()
ui:layoutRow('dynamic', 30, 1)
if ui:menuItem('Item 3') then
print 'Closure: Item 3'
end
if ui:menuItem('Item 4') then
print 'Closure: Item 4'
end
end)
end
local comboText = 'Combo 1'
function combo(ui)
ui:layoutRow('dynamic', 30, 1)
if ui:comboboxItem('Combo 1') then
print 'Closure: Combo 1'
comboText = 'Combo 1'
end
if ui:comboboxItem('Combo 2') then
print 'Closure: Combo 2'
comboText = 'Combo 2'
end
if ui:comboboxItem('Combo 3') then
print 'Closure: Combo 3'
comboText = 'Combo 3'
end
end
local function window(ui)
ui:menubar(menu)
ui:layoutRow('dynamic', 30, 1)
ui:combobox(comboText, combo)
end
return function (ui)
ui:window('Closure', 200, 200, 150, 120, {'title', 'movable', 'border'}, window)
end

View file

@ -5,7 +5,7 @@ local img = love.graphics.newImage 'skin/button.png'
return function (ui) return function (ui)
if ui:windowBegin('Draw Example', 300, 300, 200, 200, 'title', 'movable', 'border') then if ui:windowBegin('Draw Example', 300, 300, 200, 200, 'title', 'movable', 'border') then
local x, y, w, h = ui:windowGetBounds() local x, y, w, h = ui:windowGetBounds()
love.graphics.setColor(1, 0, 0) love.graphics.setColor(255, 0, 0)
ui:line(x + 10, y + 40, x + 50, y + 40, x + 50, y + 80) ui:line(x + 10, y + 40, x + 50, y + 40, x + 50, y + 80)
ui:curve(x + 50, y + 80, x + 80, y + 40, x + 100, y + 80, x + 80, y + 80) ui:curve(x + 50, y + 80, x + 80, y + 40, x + 100, y + 80, x + 80, y + 80)
ui:polygon('line', x + 100, y + 150, x + 60, y + 140, x + 70, y + 70) ui:polygon('line', x + 100, y + 150, x + 60, y + 140, x + 70, y + 70)
@ -13,7 +13,7 @@ return function (ui)
ui:ellipse('fill', x + 30, y + 150, 20, 40) ui:ellipse('fill', x + 30, y + 150, 20, 40)
ui:arc('fill', x + 150, y + 80, 40, 3 * math.pi / 2, 2 * math.pi); ui:arc('fill', x + 150, y + 80, 40, 3 * math.pi / 2, 2 * math.pi);
ui:rectMultiColor(x + 95, y + 50, 50, 50, '#ff0000', '#00ff00', '#0000ff', '#000000') ui:rectMultiColor(x + 95, y + 50, 50, 50, '#ff0000', '#00ff00', '#0000ff', '#000000')
love.graphics.setColor(1, 1, 1) love.graphics.setColor(255, 255, 255)
ui:image(img, x + 120, y + 120, 70, 50) ui:image(img, x + 120, y + 120, 70, 50)
ui:text('DRAW TEXT', x + 15, y + 75, 100, 100) ui:text('DRAW TEXT', x + 15, y + 75, 100, 100)
end end

View file

@ -3,7 +3,6 @@
local nuklear = require 'nuklear' local nuklear = require 'nuklear'
local calculator = require 'calculator' local calculator = require 'calculator'
local closure = require 'closure'
local draw = require 'draw' local draw = require 'draw'
local overview = require 'overview' local overview = require 'overview'
local style = require 'style' local style = require 'style'
@ -14,7 +13,6 @@ local transform = require 'transform'
local ui1, ui2 local ui1, ui2
function love.load() function love.load()
love.keyboard.setKeyRepeat(true)
ui1, ui2 = nuklear.newUI(), nuklear.newUI() ui1, ui2 = nuklear.newUI(), nuklear.newUI()
end end
@ -22,7 +20,6 @@ function love.update(dt)
ui1:frameBegin() ui1:frameBegin()
calculator(ui1) calculator(ui1)
style(ui1) style(ui1)
closure(ui1)
overview(ui1) overview(ui1)
draw(ui1) draw(ui1)
template(ui1) template(ui1)
@ -36,7 +33,7 @@ end
function love.draw() function love.draw()
ui1:draw() ui1:draw()
ui2:draw() ui2:draw()
love.graphics.print('Current FPS: '..tostring(love.timer.getFPS( )), 10, 10) love.graphics.print("Current FPS: "..tostring(love.timer.getFPS( )), 10, 10)
end end
local function input(name, ...) local function input(name, ...)
@ -51,12 +48,12 @@ function love.keyreleased(key, scancode)
input('keyreleased', key, scancode) input('keyreleased', key, scancode)
end end
function love.mousepressed(x, y, button, istouch, presses) function love.mousepressed(x, y, button, istouch)
input('mousepressed', x, y, button, istouch, presses) input('mousepressed', x, y, button, istouch)
end end
function love.mousereleased(x, y, button, istouch, presses) function love.mousereleased(x, y, button, istouch)
input('mousereleased', x, y, button, istouch, presses) input('mousereleased', x, y, button, istouch)
end end
function love.mousemoved(x, y, dx, dy, istouch) function love.mousemoved(x, y, dx, dy, istouch)

View file

@ -11,7 +11,6 @@ local colorPicker = {value = '#ff0000'}
local property = {value = 6} local property = {value = 6}
local edit = {value = 'Edit text'} local edit = {value = 'Edit text'}
local comboA = {value = 1, items = {'A', 'B', 'C'}} local comboA = {value = 1, items = {'A', 'B', 'C'}}
local scissorActive = false
return function (ui) return function (ui)
if ui:windowBegin('Overview', 100, 100, 600, 450, 'border', 'movable', 'title') then if ui:windowBegin('Overview', 100, 100, 600, 450, 'border', 'movable', 'title') then
@ -50,9 +49,6 @@ return function (ui)
ui:spacing(1) ui:spacing(1)
ui:checkbox('Checkbox A', checkA) ui:checkbox('Checkbox A', checkA)
ui:checkbox('Checkbox B', checkB) ui:checkbox('Checkbox B', checkB)
if ui:button('Scissor') then
scissorActive = not scissorActive
end
ui:groupEnd() ui:groupEnd()
end end
if ui:groupBegin('Group 2', 'border') then if ui:groupBegin('Group 2', 'border') then
@ -108,11 +104,4 @@ return function (ui)
end end
end end
ui:windowEnd() ui:windowEnd()
if(scissorActive) then
love.graphics.setScissor()
love.graphics.clear()
love.graphics.setScissor(130, 130, 500, 400)
else
love.graphics.setScissor()
end
end end

@ -1 +1 @@
Subproject commit 614abce05b9455849bbf1519b7f86e53c78b04ab Subproject commit 181cfd86c47ae83eceabaf4e640587b844e613b6

File diff suppressed because it is too large Load diff