Working on rounding boxes, need to implement left/right roundness rules
This commit is contained in:
parent
c58a79e275
commit
cdf8246933
106
gui/init.lua
106
gui/init.lua
@ -37,35 +37,35 @@ gui.ALIGN_RIGHT = 2
|
|||||||
|
|
||||||
-- Connections
|
-- Connections
|
||||||
gui.Events = {} -- We are using fastmode for all connection objects.
|
gui.Events = {} -- We are using fastmode for all connection objects.
|
||||||
gui.Events.OnQuit = multi:newConnection():fastMode()
|
gui.Events.OnQuit = multi:newConnection()
|
||||||
gui.Events.OnDirectoryDropped = multi:newConnection():fastMode()
|
gui.Events.OnDirectoryDropped = multi:newConnection()
|
||||||
gui.Events.OnDisplayRotated = multi:newConnection():fastMode()
|
gui.Events.OnDisplayRotated = multi:newConnection()
|
||||||
gui.Events.OnFilesDropped = multi:newConnection():fastMode()
|
gui.Events.OnFilesDropped = multi:newConnection()
|
||||||
gui.Events.OnFocus = multi:newConnection():fastMode()
|
gui.Events.OnFocus = multi:newConnection()
|
||||||
gui.Events.OnMouseFocus = multi:newConnection():fastMode()
|
gui.Events.OnMouseFocus = multi:newConnection()
|
||||||
gui.Events.OnResized = multi:newConnection():fastMode()
|
gui.Events.OnResized = multi:newConnection()
|
||||||
gui.Events.OnVisible = multi:newConnection():fastMode()
|
gui.Events.OnVisible = multi:newConnection()
|
||||||
gui.Events.OnKeyPressed = multi:newConnection():fastMode()
|
gui.Events.OnKeyPressed = multi:newConnection()
|
||||||
gui.Events.OnKeyReleased = multi:newConnection():fastMode()
|
gui.Events.OnKeyReleased = multi:newConnection()
|
||||||
gui.Events.OnTextEdited = multi:newConnection():fastMode()
|
gui.Events.OnTextEdited = multi:newConnection()
|
||||||
gui.Events.OnTextInputed = multi:newConnection():fastMode()
|
gui.Events.OnTextInputed = multi:newConnection()
|
||||||
gui.Events.OnMouseMoved = multi:newConnection():fastMode()
|
gui.Events.OnMouseMoved = multi:newConnection()
|
||||||
gui.Events.OnMousePressed = multi:newConnection():fastMode()
|
gui.Events.OnMousePressed = multi:newConnection()
|
||||||
gui.Events.OnMouseReleased = multi:newConnection():fastMode()
|
gui.Events.OnMouseReleased = multi:newConnection()
|
||||||
gui.Events.OnWheelMoved = multi:newConnection():fastMode()
|
gui.Events.OnWheelMoved = multi:newConnection()
|
||||||
gui.Events.OnTouchMoved = multi:newConnection():fastMode()
|
gui.Events.OnTouchMoved = multi:newConnection()
|
||||||
gui.Events.OnTouchPressed = multi:newConnection():fastMode()
|
gui.Events.OnTouchPressed = multi:newConnection()
|
||||||
gui.Events.OnTouchReleased = multi:newConnection():fastMode()
|
gui.Events.OnTouchReleased = multi:newConnection()
|
||||||
|
|
||||||
-- Non Love Events
|
-- Non Love Events
|
||||||
|
|
||||||
gui.Events.OnThemeChanged = multi:newConnection():fastMode()
|
gui.Events.OnThemeChanged = multi:newConnection()
|
||||||
|
|
||||||
-- Virtual gui init
|
-- Virtual gui init
|
||||||
gui.virtual = {}
|
gui.virtual = {}
|
||||||
|
|
||||||
-- Internal Connections
|
-- Internal Connections
|
||||||
gui.Events.OnObjectFocusChanged = multi:newConnection():fastMode()
|
gui.Events.OnObjectFocusChanged = multi:newConnection()
|
||||||
|
|
||||||
-- Hooks
|
-- Hooks
|
||||||
|
|
||||||
@ -144,7 +144,7 @@ end)
|
|||||||
|
|
||||||
function gui:setHotKey(keys, conn)
|
function gui:setHotKey(keys, conn)
|
||||||
has_hotkey = true
|
has_hotkey = true
|
||||||
local conn = conn or multi:newConnection():fastMode()
|
local conn = conn or multi:newConnection()
|
||||||
table.insert(hot_keys, {Ref=self, Connection = conn, Keys = {unpack(keys)}})
|
table.insert(hot_keys, {Ref=self, Connection = conn, Keys = {unpack(keys)}})
|
||||||
return conn
|
return conn
|
||||||
end
|
end
|
||||||
@ -549,8 +549,8 @@ function gui:newBase(typ,x, y, w, h, sx, sy, sw, sh, virtual)
|
|||||||
end
|
end
|
||||||
end)
|
end)
|
||||||
|
|
||||||
function c:setRoundness(rx,ry,seg)
|
function c:setRoundness(rx, ry, seg, side)
|
||||||
self.roundness = true
|
self.roundness = side or true
|
||||||
self.__rx, self.__ry, self.__segments = rx or 5, ry or 5, seg or 30
|
self.__rx, self.__ry, self.__segments = rx or 5, ry or 5, seg or 30
|
||||||
end
|
end
|
||||||
|
|
||||||
@ -830,7 +830,7 @@ function gui:newTextBox(txt, x, y, w, h, sx, sy, sw, sh)
|
|||||||
c:respectHierarchy(true)
|
c:respectHierarchy(true)
|
||||||
c.doSelection = false
|
c.doSelection = false
|
||||||
|
|
||||||
c.OnReturn = multi:newConnection():fastMode()
|
c.OnReturn = multi:newConnection()
|
||||||
|
|
||||||
c.cur_pos = 0
|
c.cur_pos = 0
|
||||||
c.selection = {0,0}
|
c.selection = {0,0}
|
||||||
@ -1236,11 +1236,11 @@ local drawtypes = {
|
|||||||
local draw_handler = function(child)
|
local draw_handler = function(child)
|
||||||
local bg = child.color
|
local bg = child.color
|
||||||
local bbg = child.borderColor
|
local bbg = child.borderColor
|
||||||
local type = child.type
|
local ctype = child.type
|
||||||
local vis = child.visibility
|
local vis = child.visibility
|
||||||
local x, y, w, h = child:getAbsolutes()
|
local x, y, w, h = child:getAbsolutes()
|
||||||
local roundness = child.roundness
|
local roundness = child.roundness
|
||||||
local rx, ry, segments = child.__rx, child.__ry, child.__segments
|
local rx, ry, segments = child.__rx or 0, child.__ry or 0, child.__segments or 0
|
||||||
child.x = x
|
child.x = x
|
||||||
child.y = y
|
child.y = y
|
||||||
child.w = w
|
child.w = w
|
||||||
@ -1261,20 +1261,58 @@ local draw_handler = function(child)
|
|||||||
if child.__variables.clip[1] then
|
if child.__variables.clip[1] then
|
||||||
local clip = child.__variables.clip
|
local clip = child.__variables.clip
|
||||||
love.graphics.setScissor(clip[2], clip[3], clip[4], clip[5])
|
love.graphics.setScissor(clip[2], clip[3], clip[4], clip[5])
|
||||||
|
elseif type(roundness) == "string" then
|
||||||
|
love.graphics.setScissor(x - 1, y, w + 2, h + 3)
|
||||||
end
|
end
|
||||||
|
|
||||||
-- Set color
|
-- Set color
|
||||||
love.graphics.setColor(bg[1],bg[2],bg[3],vis)
|
love.graphics.setLineStyle("smooth")
|
||||||
love.graphics.rectangle("fill", x, y, w, h, rx, ry, segments)
|
love.graphics.setLineWidth(3)
|
||||||
love.graphics.setColor(bbg[1],bbg[2],bbg[3],vis)
|
love.graphics.setColor(bbg[1],bbg[2],bbg[3],vis)
|
||||||
love.graphics.rectangle("line", x, y, w, h, rx, ry, segments)
|
love.graphics.rectangle("line", x, y, w, h, rx, ry, segments)
|
||||||
|
love.graphics.setColor(bg[1],bg[2],bg[3],vis)
|
||||||
|
love.graphics.rectangle("fill", x, y, w, h, rx, ry, segments)
|
||||||
|
if roundness == "top" then
|
||||||
|
love.graphics.rectangle("fill", x, y+ry/2, w, h-ry/2 + 1)
|
||||||
|
love.graphics.setLineStyle("rough")
|
||||||
|
|
||||||
|
love.graphics.setColor(bbg[1],bbg[2],bbg[3],1)
|
||||||
|
love.graphics.setLineWidth(1)
|
||||||
|
love.graphics.line( x, y + ry,
|
||||||
|
x, y + h +1,
|
||||||
|
x + 1 + w, y + h+1,
|
||||||
|
x + 1 + w, y + ry)
|
||||||
|
love.graphics.line(x, y + h,x + 1 + w, y + h)
|
||||||
|
love.graphics.setScissor()
|
||||||
|
love.graphics.setColor(bbg[1],bbg[2],bbg[3],.6)
|
||||||
|
love.graphics.line(x - 1, y + ry/2 + 2, x - 1, y + h + 2)
|
||||||
|
love.graphics.line(x + w + 2, y + ry/2 + 2, x + w + 2, y + h + 2)
|
||||||
|
elseif roundness == "bottom" then
|
||||||
|
love.graphics.rectangle("fill", x, y, w, h-ry + 2)
|
||||||
|
love.graphics.setLineStyle("rough")
|
||||||
|
love.graphics.setColor(bbg[1],bbg[2],bbg[3],1)
|
||||||
|
love.graphics.setLineWidth(2)
|
||||||
|
love.graphics.line( x-1, y + ry + 1,
|
||||||
|
x-1, y - 1,
|
||||||
|
x + w + 1, y - 1,
|
||||||
|
x + w + 1, y + ry + 1)
|
||||||
|
love.graphics.setScissor()
|
||||||
|
love.graphics.line(x-1, y-1,x + w + 1, y-1)
|
||||||
|
|
||||||
|
love.graphics.setColor(bbg[1],bbg[2],bbg[3],.6)
|
||||||
|
love.graphics.setLineWidth(2)
|
||||||
|
love.graphics.line(x - 1, y + 2, x - 1, y + h - 4 - ry/2)
|
||||||
|
love.graphics.line(x + w + 1, y + 2, x + w + 1, y + h - 4 - ry/2)
|
||||||
|
end
|
||||||
|
|
||||||
-- Start object specific stuff
|
-- Start object specific stuff
|
||||||
drawtypes[band(type,video)](child,x,y,w,h)
|
drawtypes[band(ctype,video)](child,x,y,w,h)
|
||||||
drawtypes[band(type,image)](child,x,y,w,h)
|
drawtypes[band(ctype,image)](child,x,y,w,h)
|
||||||
drawtypes[band(type,text)](child,x,y,w,h)
|
drawtypes[band(ctype,text)](child,x,y,w,h)
|
||||||
drawtypes[band(type,box)](child,x,y,w,h)
|
drawtypes[band(ctype,box)](child,x,y,w,h)
|
||||||
|
if child.post then
|
||||||
|
child:post()
|
||||||
|
end
|
||||||
if child.__variables.clip[1] then
|
if child.__variables.clip[1] then
|
||||||
love.graphics.setScissor() -- Remove the scissor
|
love.graphics.setScissor() -- Remove the scissor
|
||||||
end
|
end
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user