mirror of
https://github.com/linux-man/LoveFrames.git
synced 2024-11-26 05:14:21 +00:00
1208 lines
49 KiB
Lua
1208 lines
49 KiB
Lua
--[[------------------------------------------------
|
|
-- LÖVE Frames --
|
|
-- By Nikolai Resokav --
|
|
--]]------------------------------------------------
|
|
|
|
-- skin table
|
|
local skin = {}
|
|
|
|
-- skin info (you always need this in a skin)
|
|
skin.name = "Blue"
|
|
skin.author = "Nikolai Resokav"
|
|
skin.version = "1.0"
|
|
|
|
local smallfont = love.graphics.newFont(10)
|
|
local imagebuttonfont = love.graphics.newFont(15)
|
|
local bordercolor = {143, 143, 143, 255}
|
|
|
|
-- controls
|
|
skin.controls = {}
|
|
|
|
-- frame
|
|
skin.controls.frame_border_color = bordercolor
|
|
skin.controls.frame_body_color = {255, 255, 255, 150}
|
|
skin.controls.frame_top_color = {102, 194, 255, 255}
|
|
skin.controls.frame_name_color = {255, 255, 255, 255}
|
|
skin.controls.frame_name_font = smallfont
|
|
|
|
-- button
|
|
skin.controls.button_border_down_color = bordercolor
|
|
skin.controls.button_border_nohover_color = bordercolor
|
|
skin.controls.button_border_hover_color = bordercolor
|
|
skin.controls.button_body_down_color = {128, 204, 255, 255}
|
|
skin.controls.button_body_nohover_color = {255, 255, 255, 255}
|
|
skin.controls.button_body_hover_color = {153, 214, 255, 255}
|
|
skin.controls.button_text_down_color = {255, 255, 255, 255}
|
|
skin.controls.button_text_nohover_color = {0, 0, 0, 200}
|
|
skin.controls.button_text_hover_color = {255, 255, 255, 255}
|
|
skin.controls.button_text_font = smallfont
|
|
|
|
-- image button
|
|
skin.controls.imagebutton_text_down_color = {255, 255, 255, 255}
|
|
skin.controls.imagebutton_text_nohover_color = {0, 0, 0, 200}
|
|
skin.controls.imagebutton_text_hover_color = {255, 255, 255, 255}
|
|
skin.controls.imagebutton_text_font = imagebuttonfont
|
|
|
|
-- close button
|
|
skin.controls.closebutton_body_down_color = {255, 255, 255, 255}
|
|
skin.controls.closebutton_body_nohover_color = {255, 255, 255, 255}
|
|
skin.controls.closebutton_body_hover_color = {255, 255, 255, 255}
|
|
|
|
-- progress bar
|
|
skin.controls.progressbar_border_color = bordercolor
|
|
skin.controls.progressbar_body_color = {255, 255, 255, 255}
|
|
skin.controls.progressbar_bar_color = {0, 255, 0, 255}
|
|
skin.controls.progressbar_text_color = {0, 0, 0, 255}
|
|
skin.controls.progressbar_text_font = smallfont
|
|
|
|
-- list
|
|
skin.controls.list_border_color = bordercolor
|
|
skin.controls.list_body_color = {232, 232, 232, 255}
|
|
|
|
-- scrollbar
|
|
skin.controls.scrollbar_border_down_color = bordercolor
|
|
skin.controls.scrollbar_border_hover_color = bordercolor
|
|
skin.controls.scrollbar_border_nohover_color = bordercolor
|
|
skin.controls.scrollbar_body_down_color = {128, 204, 255, 255}
|
|
skin.controls.scrollbar_body_nohover_color = {255, 255, 255, 255}
|
|
skin.controls.scrollbar_body_hover_color = {153, 214, 255, 255}
|
|
|
|
-- scrollarea
|
|
skin.controls.scrollarea_body_color = {200, 200, 200, 255}
|
|
skin.controls.scrollarea_border_color = bordercolor
|
|
|
|
-- scrollbody
|
|
skin.controls.scrollbody_body_color = {0, 0, 0, 0}
|
|
|
|
-- panel
|
|
skin.controls.panel_body_color = {232, 232, 232, 255}
|
|
skin.controls.panel_border_color = bordercolor
|
|
|
|
-- tab panel
|
|
skin.controls.tabpanel_body_color = {232, 232, 232, 255}
|
|
skin.controls.tabpanel_border_color = bordercolor
|
|
|
|
-- tab button
|
|
skin.controls.tab_border_nohover_color = bordercolor
|
|
skin.controls.tab_border_hover_color = bordercolor
|
|
skin.controls.tab_body_nohover_color = {255, 255, 255, 255}
|
|
skin.controls.tab_body_hover_color = {153, 214, 255, 255}
|
|
skin.controls.tab_text_nohover_color = {0, 0, 0, 200}
|
|
skin.controls.tab_text_hover_color = {255, 255, 255, 255}
|
|
skin.controls.tab_text_font = smallfont
|
|
|
|
-- multichoice
|
|
skin.controls.multichoice_body_color = {240, 240, 240, 255}
|
|
skin.controls.multichoice_border_color = bordercolor
|
|
skin.controls.multichoice_text_color = {0, 0, 0, 255}
|
|
skin.controls.multichoice_text_font = smallfont
|
|
|
|
-- multichoicelist
|
|
skin.controls.multichoicelist_body_color = {240, 240, 240, 200}
|
|
skin.controls.multichoicelist_border_color = bordercolor
|
|
|
|
-- multichoicerow
|
|
skin.controls.multichoicerow_body_nohover_color = {240, 240, 240, 200}
|
|
skin.controls.multichoicerow_body_hover_color = {51, 204, 255, 255}
|
|
skin.controls.multichoicerow_border_color = {50, 50, 50, 255}
|
|
skin.controls.multichoicerow_text_nohover_color = {0, 0, 0, 150}
|
|
skin.controls.multichoicerow_text_hover_color = {255, 255, 255, 255}
|
|
skin.controls.multichoicerow_text_font = smallfont
|
|
|
|
-- tooltip
|
|
skin.controls.tooltip_border_color = bordercolor
|
|
skin.controls.tooltip_body_color = {255, 255, 255, 255}
|
|
skin.controls.tooltip_text_color = {0, 0, 0, 255}
|
|
skin.controls.tooltip_text_font = smallfont
|
|
|
|
-- text input
|
|
skin.controls.textinput_border_color = bordercolor
|
|
skin.controls.textinput_body_color = {240, 240, 240, 255}
|
|
skin.controls.textinput_blinker_color = {0, 0, 0, 255}
|
|
|
|
-- slider
|
|
skin.controls.slider_bar_color = bordercolor
|
|
skin.controls.slider_bar_outline_color = {220, 220, 220, 255}
|
|
skin.controls.slider_text_color = {0, 0, 0, 255}
|
|
skin.controls.slider_text_font = smallfont
|
|
|
|
-- checkbox
|
|
skin.controls.checkbox_border_color = bordercolor
|
|
skin.controls.checkbox_body_color = {255, 255, 255, 255}
|
|
skin.controls.checkbox_check_color = {0, 0, 0, 255}
|
|
skin.controls.checkbox_text_color = {0, 0, 0, 255}
|
|
skin.controls.checkbox_text_font = smallfont
|
|
|
|
-- collapsiblecategory
|
|
skin.controls.collapsiblecategory_text_color = {0, 0, 0, 255}
|
|
skin.controls.collapsiblecategory_body_color = {255, 255, 255, 255}
|
|
skin.controls.collapsiblecategory_border_color = bordercolor
|
|
|
|
-- columnlist
|
|
skin.controls.columnlist_border_color = bordercolor
|
|
skin.controls.columnlist_body_color = {232, 232, 232, 255}
|
|
|
|
-- columlistarea
|
|
skin.controls.columnlistarea_border_color = bordercolor
|
|
skin.controls.columnlistarea_body_color = {232, 232, 232, 255}
|
|
|
|
-- columnlistheader
|
|
skin.controls.columnlistheader_border_down_color = bordercolor
|
|
skin.controls.columnlistheader_border_nohover_color = bordercolor
|
|
skin.controls.columnlistheader_border_hover_color = bordercolor
|
|
skin.controls.columnlistheader_body_down_color = {128, 204, 255, 255}
|
|
skin.controls.columnlistheader_body_nohover_color = {255, 255, 255, 255}
|
|
skin.controls.columnlistheader_body_hover_color = {153, 214, 255, 255}
|
|
skin.controls.columnlistheader_text_down_color = {255, 255, 255, 255}
|
|
skin.controls.columnlistheader_text_nohover_color = {0, 0, 0, 200}
|
|
skin.controls.columnlistheader_text_hover_color = {255, 255, 255, 255}
|
|
skin.controls.columnlistheader_text_font = smallfont
|
|
|
|
-- columnlistrow
|
|
skin.controls.columnlistrow_border1_color = bordercolor
|
|
skin.controls.columnlistrow_body1_color = {232, 232, 232, 255}
|
|
skin.controls.columnlistrow_border2_color = bordercolor
|
|
skin.controls.columnlistrow_body2_color = {200, 200, 200, 255}
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: OutlinedRectangle(object)
|
|
- desc: creates and outlined rectangle
|
|
--]]---------------------------------------------------------
|
|
function skin.OutlinedRectangle(x, y, width, height, ovt, ovb, ovl, ovr)
|
|
|
|
local ovt = ovt or false
|
|
local ovb = ovb or false
|
|
local ovl = ovl or false
|
|
local ovr = ovr or false
|
|
|
|
-- top
|
|
if ovt == false then
|
|
love.graphics.rectangle("fill", x, y, width, 1)
|
|
end
|
|
|
|
-- bottom
|
|
if ovb == false then
|
|
love.graphics.rectangle("fill", x, y + height - 1, width, 1)
|
|
end
|
|
|
|
-- left
|
|
if ovl == false then
|
|
love.graphics.rectangle("fill", x, y, 1, height)
|
|
end
|
|
|
|
-- right
|
|
if ovr == false then
|
|
love.graphics.rectangle("fill", x + width - 1, y, 1, height)
|
|
end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawRepeatingImage(image, x, y, width, height)
|
|
- desc: draw a repeating image a box
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawRepeatingImage(image, x, y, width, height)
|
|
|
|
local image = love.graphics.newImage(image)
|
|
local iwidth = image:getWidth()
|
|
local iheight = image:getHeight()
|
|
local cords = {}
|
|
local posx = 0
|
|
local posy = 0
|
|
local stencilfunc = function() love.graphics.rectangle("fill", x, y, width, height) end
|
|
local stencil = love.graphics.newStencil(stencilfunc)
|
|
|
|
while posy < height do
|
|
|
|
table.insert(cords, {posx, posy})
|
|
|
|
if posx >= width then
|
|
posx = 0
|
|
posy = posy + iheight
|
|
else
|
|
posx = posx + iwidth
|
|
end
|
|
|
|
end
|
|
|
|
love.graphics.setStencil(stencil)
|
|
|
|
for k, v in ipairs(cords) do
|
|
love.graphics.setColor(255, 255, 255, 255)
|
|
love.graphics.draw(image, x + v[1], y + v[2])
|
|
end
|
|
|
|
love.graphics.setStencil()
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: skin.DrawGradient(x, y, width, height,
|
|
direction, color, colormod)
|
|
- desc: draws a gradient
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawGradient(x, y, width, height, direction, color, colormod)
|
|
|
|
local color = color
|
|
local colormod = colormod or 0
|
|
local percent = 0
|
|
local once = false
|
|
|
|
if direction == "up" then
|
|
|
|
for i=1, height - 1 do
|
|
percent = i/height * 255
|
|
color = {color[1], color[2], color[3], loveframes.util.Round(percent)}
|
|
love.graphics.setColor(unpack(color))
|
|
love.graphics.rectangle("fill", x, y + i, width, 1)
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawFrame(object)
|
|
- desc: draws the frame object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawFrame(object)
|
|
|
|
local gradientcolor = {}
|
|
|
|
-- frame body
|
|
love.graphics.setColor(unpack(skin.controls.frame_body_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
-- frame top bar
|
|
love.graphics.setColor(unpack(skin.controls.frame_top_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), 25)
|
|
|
|
gradientcolor = {skin.controls.frame_top_color[1] - 20, skin.controls.frame_top_color[2] - 20, skin.controls.frame_top_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY(), object:GetWidth(), 25, "up", gradientcolor)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.frame_border_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY() + 25, object:GetWidth(), 1)
|
|
|
|
-- frame name section
|
|
love.graphics.setFont(skin.controls.frame_name_font)
|
|
love.graphics.setColor(unpack(skin.controls.frame_name_color))
|
|
love.graphics.print(object.name, object:GetX() + 5, object:GetY() + 5)
|
|
|
|
-- frame border
|
|
love.graphics.setColor(unpack(skin.controls.frame_border_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawButton(object)
|
|
- desc: draws the button object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawButton(object)
|
|
|
|
local index = loveframes.config["ACTIVESKIN"]
|
|
local font = skin.controls.button_text_font
|
|
local twidth = font:getWidth(object.text)
|
|
local theight = font:getHeight(object.text)
|
|
local hover = object.hover
|
|
local down = object.down
|
|
local gradientcolor = {}
|
|
|
|
if down == true then
|
|
|
|
-- button body
|
|
love.graphics.setColor(unpack(skin.controls.button_body_down_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
|
|
gradientcolor = {skin.controls.button_body_down_color[1] - 20, skin.controls.button_body_down_color[2] - 20, skin.controls.button_body_down_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
|
|
-- button text
|
|
love.graphics.setFont(skin.controls.button_text_font)
|
|
love.graphics.setColor(unpack(skin.controls.button_text_down_color))
|
|
love.graphics.print(object.text, object:GetX() + object:GetWidth()/2 - twidth/2, object:GetY() + object:GetHeight()/2 - theight/2)
|
|
|
|
-- button border
|
|
love.graphics.setColor(unpack(skin.controls.button_border_down_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
elseif hover == true then
|
|
|
|
-- button body
|
|
love.graphics.setColor(unpack(skin.controls.button_body_hover_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
|
|
gradientcolor = {skin.controls.button_body_hover_color[1] - 20, skin.controls.button_body_hover_color[2] - 20, skin.controls.button_body_hover_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
|
|
-- button text
|
|
love.graphics.setFont(skin.controls.button_text_font)
|
|
love.graphics.setColor(unpack(skin.controls.button_text_hover_color))
|
|
love.graphics.print(object.text, object:GetX() + object:GetWidth()/2 - twidth/2, object:GetY() + object:GetHeight()/2 - theight/2)
|
|
|
|
-- button border
|
|
love.graphics.setColor(unpack(skin.controls.button_border_down_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
else
|
|
|
|
-- button body
|
|
love.graphics.setColor(unpack(skin.controls.button_body_nohover_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
|
|
gradientcolor = {skin.controls.button_body_nohover_color[1] - 20, skin.controls.button_body_nohover_color[2] - 20, skin.controls.button_body_nohover_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
|
|
-- button text
|
|
love.graphics.setFont(skin.controls.button_text_font)
|
|
love.graphics.setColor(unpack(skin.controls.button_text_nohover_color))
|
|
love.graphics.print(object.text, object:GetX() + object:GetWidth()/2 - twidth/2, object:GetY() + object:GetHeight()/2 - theight/2)
|
|
|
|
-- button border
|
|
love.graphics.setColor(unpack(skin.controls.button_border_down_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawCloseButton(object)
|
|
- desc: draws the close button object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawCloseButton(object)
|
|
|
|
local index = loveframes.config["ACTIVESKIN"]
|
|
local font = skin.controls.button_text_font
|
|
local twidth = font:getWidth("X")
|
|
local theight = font:getHeight("X")
|
|
local hover = object.hover
|
|
local down = object.down
|
|
local image = skin.images["close.png"]
|
|
local gradientcolor = {}
|
|
|
|
if down == true then
|
|
|
|
-- button body
|
|
love.graphics.setColor(unpack(skin.controls.closebutton_body_down_color))
|
|
love.graphics.draw(image, object:GetX(), object:GetY())
|
|
|
|
elseif hover == true then
|
|
|
|
-- button body
|
|
love.graphics.setColor(unpack(skin.controls.closebutton_body_hover_color))
|
|
love.graphics.draw(image, object:GetX(), object:GetY())
|
|
|
|
else
|
|
|
|
-- button body
|
|
love.graphics.setColor(unpack(skin.controls.closebutton_body_nohover_color))
|
|
love.graphics.draw(image, object:GetX(), object:GetY())
|
|
|
|
end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawImage(object)
|
|
- desc: draws the image object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawImage(object)
|
|
|
|
local image = object.image
|
|
local color = object.imagecolor
|
|
|
|
if color then
|
|
love.graphics.setColor(unpack(color))
|
|
love.graphics.draw(image)
|
|
else
|
|
love.graphics.setColor(255, 255, 255, 255)
|
|
love.graphics.draw(image, object:GetX(), object:GetY())
|
|
end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawImageButton(object)
|
|
- desc: draws the image button object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawImageButton(object)
|
|
|
|
local index = loveframes.config["ACTIVESKIN"]
|
|
local font = skin.controls.imagebutton_text_font
|
|
local twidth = font:getWidth(object.text)
|
|
local theight = font:getHeight(object.text)
|
|
local hover = object.hover
|
|
local down = object.down
|
|
local image = object:GetImage()
|
|
|
|
if down == true then
|
|
|
|
if image ~= false then
|
|
love.graphics.setColor(255, 255, 255, 255)
|
|
love.graphics.draw(image, object:GetX() + 1, object:GetY() + 1)
|
|
end
|
|
|
|
love.graphics.setFont(font)
|
|
love.graphics.setColor(0, 0, 0, 255)
|
|
love.graphics.print(object:GetText(), object:GetX() + object:GetWidth()/2 - twidth/2 + 1, object:GetY() + object:GetHeight() - theight - 5 + 1)
|
|
love.graphics.setColor(unpack(skin.controls.imagebutton_text_down_color))
|
|
love.graphics.print(object:GetText(), object:GetX() + object:GetWidth()/2 - twidth/2 + 1, object:GetY() + object:GetHeight() - theight - 6 + 1)
|
|
|
|
elseif hover == true then
|
|
|
|
if image ~= false then
|
|
love.graphics.setColor(255, 255, 255, 255)
|
|
love.graphics.draw(image, object:GetX(), object:GetY())
|
|
end
|
|
|
|
love.graphics.setFont(font)
|
|
love.graphics.setColor(0, 0, 0, 255)
|
|
love.graphics.print(object:GetText(), object:GetX() + object:GetWidth()/2 - twidth/2, object:GetY() + object:GetHeight() - theight - 5)
|
|
love.graphics.setColor(unpack(skin.controls.imagebutton_text_hover_color))
|
|
love.graphics.print(object:GetText(), object:GetX() + object:GetWidth()/2 - twidth/2, object:GetY() + object:GetHeight() - theight - 6)
|
|
|
|
else
|
|
|
|
if image ~= false then
|
|
love.graphics.setColor(255, 255, 255, 255)
|
|
love.graphics.draw(image, object:GetX(), object:GetY())
|
|
end
|
|
|
|
love.graphics.setFont(font)
|
|
love.graphics.setColor(0, 0, 0, 255)
|
|
love.graphics.print(object:GetText(), object:GetX() + object:GetWidth()/2 - twidth/2, object:GetY() + object:GetHeight() - theight - 5)
|
|
love.graphics.setColor(unpack(skin.controls.imagebutton_text_down_color))
|
|
love.graphics.print(object:GetText(), object:GetX() + object:GetWidth()/2 - twidth/2, object:GetY() + object:GetHeight() - theight - 6)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawProgressBar(object)
|
|
- desc: draws the progress bar object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawProgressBar(object)
|
|
|
|
local font = skin.controls.progressbar_text_font
|
|
local twidth = font:getWidth(object.value .. "/" ..object.max)
|
|
local theight = font:getHeight(object.value .. "/" ..object.max)
|
|
local gradientcolor = {}
|
|
|
|
-- progress bar body
|
|
love.graphics.setColor(unpack(skin.controls.progressbar_body_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
love.graphics.setColor(unpack(skin.controls.progressbar_bar_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object.progress, object:GetHeight())
|
|
gradientcolor = {skin.controls.progressbar_bar_color[1], skin.controls.progressbar_bar_color[2] - 20, skin.controls.progressbar_bar_color[3], 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY(), object.progress, object:GetHeight(), "up", gradientcolor)
|
|
love.graphics.setFont(font)
|
|
love.graphics.setColor(unpack(skin.controls.progressbar_text_color))
|
|
love.graphics.print(object.value .. "/" ..object.max, object:GetX() + object:GetWidth()/2 - twidth/2, object:GetY() + object:GetHeight()/2 - theight/2)
|
|
|
|
-- progress bar border
|
|
love.graphics.setColor(unpack(skin.controls.progressbar_border_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawScrollArea(object)
|
|
- desc: draws the scroll area object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawScrollArea(object)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.scrollarea_body_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
love.graphics.setColor(unpack(skin.controls.scrollarea_border_color))
|
|
|
|
if object.bartype == "vertical" then
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight(), true, true)
|
|
elseif object.bartype == "horizontal" then
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight(), false, false, true, true)
|
|
end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawScrollBar(object)
|
|
- desc: draws the scroll bar object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawScrollBar(object)
|
|
|
|
local gradientcolor = {}
|
|
|
|
if object.dragging == true then
|
|
love.graphics.setColor(unpack(skin.controls.scrollbar_body_down_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
gradientcolor = {skin.controls.scrollbar_body_down_color[1] - 20, skin.controls.scrollbar_body_down_color[2] - 20, skin.controls.scrollbar_body_down_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
love.graphics.setColor(unpack(skin.controls.scrollbar_border_down_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
elseif object.hover == true then
|
|
love.graphics.setColor(unpack(skin.controls.scrollbar_body_hover_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
gradientcolor = {skin.controls.scrollbar_body_hover_color[1] - 20, skin.controls.scrollbar_body_hover_color[2] - 20, skin.controls.scrollbar_body_hover_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
love.graphics.setColor(unpack(skin.controls.scrollbar_border_hover_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
else
|
|
love.graphics.setColor(unpack(skin.controls.scrollbar_body_nohover_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
gradientcolor = {skin.controls.scrollbar_body_nohover_color[1] - 20, skin.controls.scrollbar_body_nohover_color[2] - 20, skin.controls.scrollbar_body_nohover_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
love.graphics.setColor(unpack(skin.controls.scrollbar_border_nohover_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
end
|
|
|
|
if object.bartype == "vertical" then
|
|
love.graphics.setColor(unpack(skin.controls.scrollbar_border_nohover_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 3, object:GetY() + object:GetHeight()/2 - 3, object:GetWidth() - 6, 1)
|
|
love.graphics.rectangle("fill", object:GetX() + 3, object:GetY() + object:GetHeight()/2, object:GetWidth() - 6, 1)
|
|
love.graphics.rectangle("fill", object:GetX() + 3, object:GetY() + object:GetHeight()/2 + 3, object:GetWidth() - 6, 1)
|
|
else
|
|
love.graphics.setColor(unpack(skin.controls.scrollbar_border_nohover_color))
|
|
love.graphics.rectangle("fill", object:GetX() + object:GetWidth()/2 - 3, object:GetY() + 3, 1, object:GetHeight() - 6)
|
|
love.graphics.rectangle("fill", object:GetX() + object:GetWidth()/2, object:GetY() + 3, 1, object:GetHeight() - 6)
|
|
love.graphics.rectangle("fill", object:GetX() + object:GetWidth()/2 + 3, object:GetY() + 3, 1, object:GetHeight() - 6)
|
|
end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawScrollBody(object)
|
|
- desc: draws the scroll body object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawScrollBody(object)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.scrollbody_body_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawPanel(object)
|
|
- desc: draws the panel object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawPanel(object)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.panel_body_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
love.graphics.setColor(unpack(skin.controls.panel_border_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawList(object)
|
|
- desc: draws the list object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawList(object)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.list_body_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawList(object)
|
|
- desc: used to draw over the object and it's children
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawOverList(object)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.list_border_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawTabPanel(object)
|
|
- desc: draws the tab panel object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawTabPanel(object)
|
|
|
|
local buttonheight = object:GetHeightOfButtons()
|
|
|
|
love.graphics.setColor(unpack(skin.controls.tabpanel_body_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY() + buttonheight, object:GetWidth(), object:GetHeight() - buttonheight)
|
|
love.graphics.setColor(unpack(skin.controls.tabpanel_border_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY() + buttonheight - 1, object:GetWidth(), object:GetHeight() - buttonheight + 2)
|
|
|
|
object:SetScrollButtonSize(15, buttonheight)
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawTabButton(object)
|
|
- desc: draws the tab button object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawTabButton(object)
|
|
|
|
local index = loveframes.config["ACTIVESKIN"]
|
|
local font = skin.controls.tab_text_font
|
|
local twidth = font:getWidth(object.text)
|
|
local theight = font:getHeight(object.text)
|
|
local hover = object.hover
|
|
local activetab = object.activetab
|
|
local image = object.image
|
|
local gradientcolor = {}
|
|
|
|
local imagewidth
|
|
local imageheight
|
|
|
|
if image then
|
|
imagewidth = image:getWidth()
|
|
imageheight = image:getHeight()
|
|
end
|
|
|
|
if object.tabnumber == object.parent.tab then
|
|
|
|
-- button body
|
|
love.graphics.setColor(unpack(skin.controls.tab_body_hover_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
gradientcolor = {skin.controls.tab_body_hover_color[1] - 20, skin.controls.tab_body_hover_color[2] - 20, skin.controls.tab_body_hover_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.tabpanel_border_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
if image then
|
|
-- button image
|
|
love.graphics.setColor(255, 255, 255, 255)
|
|
love.graphics.draw(image, object:GetX() + 5, object:GetY() + object:GetHeight()/2 - imageheight/2)
|
|
-- button text
|
|
love.graphics.setFont(skin.controls.tab_text_font)
|
|
love.graphics.setColor(unpack(skin.controls.tab_text_hover_color))
|
|
love.graphics.print(object.text, object:GetX() + imagewidth + 10, object:GetY() + object:GetHeight()/2 - theight/2)
|
|
else
|
|
-- button text
|
|
love.graphics.setFont(skin.controls.tab_text_font)
|
|
love.graphics.setColor(unpack(skin.controls.tab_text_hover_color))
|
|
love.graphics.print(object.text, object:GetX() + 5, object:GetY() + object:GetHeight()/2 - theight/2)
|
|
end
|
|
|
|
else
|
|
|
|
-- button body
|
|
love.graphics.setColor(unpack(skin.controls.tab_body_nohover_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
gradientcolor = {skin.controls.tab_body_nohover_color[1] - 20, skin.controls.tab_body_nohover_color[2] - 20, skin.controls.tab_body_nohover_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.tabpanel_border_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
if image then
|
|
-- button image
|
|
love.graphics.setColor(255, 255, 255, 150)
|
|
love.graphics.draw(image, object:GetX() + 5, object:GetY() + object:GetHeight()/2 - imageheight/2)
|
|
-- button text
|
|
love.graphics.setFont(skin.controls.tab_text_font)
|
|
love.graphics.setColor(unpack(skin.controls.tab_text_nohover_color))
|
|
love.graphics.print(object.text, object:GetX() + imagewidth + 10, object:GetY() + object:GetHeight()/2 - theight/2)
|
|
else
|
|
-- button text
|
|
love.graphics.setFont(skin.controls.tab_text_font)
|
|
love.graphics.setColor(unpack(skin.controls.tab_text_nohover_color))
|
|
love.graphics.print(object.text, object:GetX() + 5, object:GetY() + object:GetHeight()/2 - theight/2)
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawMultiChoice(object)
|
|
- desc: draws the multi choice object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawMultiChoice(object)
|
|
|
|
local image = skin.images["multichoice-arrow.png"]
|
|
|
|
love.graphics.setColor(unpack(skin.controls.multichoice_body_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
|
|
love.graphics.setColor(skin.controls.multichoice_text_color)
|
|
love.graphics.setFont(skin.controls.multichoice_text_font)
|
|
|
|
local h = smallfont:getHeight()
|
|
|
|
if object.choice == "" then
|
|
love.graphics.print(object.text, object:GetX() + 5, object:GetY() + object:GetHeight()/2 - h/2)
|
|
else
|
|
love.graphics.print(object.choice, object:GetX() + 5, object:GetY() + object:GetHeight()/2 - h/2)
|
|
end
|
|
|
|
love.graphics.setColor(255, 255, 255, 255)
|
|
love.graphics.draw(image, object:GetX() + object:GetWidth() - 20, object:GetY() + 5)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.multichoice_border_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawMultiChoiceList(object)
|
|
- desc: draws the multi choice list object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawMultiChoiceList(object)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.multichoicelist_body_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
|
|
function skin.DrawOverMultiChoiceList(object)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.multichoicelist_border_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawMultiChoiceRow(object)
|
|
- desc: draws the multi choice row object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawMultiChoiceRow(object)
|
|
|
|
love.graphics.setFont(skin.controls.multichoicerow_text_font)
|
|
|
|
if object.hover == true then
|
|
love.graphics.setColor(unpack(skin.controls.multichoicerow_body_hover_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
love.graphics.setColor(unpack(skin.controls.multichoicerow_text_hover_color))
|
|
love.graphics.print(object.text, object:GetX() + 5, object:GetY() + 5)
|
|
else
|
|
love.graphics.setColor(unpack(skin.controls.multichoicerow_body_nohover_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
love.graphics.setColor(unpack(skin.controls.multichoicerow_text_nohover_color))
|
|
love.graphics.print(object.text, object:GetX() + 5, object:GetY() + 5)
|
|
end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawToolTip(object)
|
|
- desc: draws the tool tip object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawToolTip(object)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.tooltip_body_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
love.graphics.setColor(unpack(skin.controls.tooltip_border_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
love.graphics.setColor(unpack(skin.controls.tooltip_text_color))
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawText(object)
|
|
- desc: draws the text object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawText(object)
|
|
|
|
--love.graphics.setColor(0, 0, 0, 255)
|
|
--love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
--love.graphics.setFont(object.font)
|
|
--love.graphics.setColor(255, 255, 255, 255)
|
|
--love.graphics.print(object.text, object:GetX(), object:GetY())
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawTextInput(object)
|
|
- desc: draws the text input object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawTextInput(object)
|
|
|
|
local height = object.font:getHeight("a")
|
|
local twidth = object.font:getWidth(object.text)
|
|
local focus = object:GetFocus()
|
|
local showblink = object:GetBlinkerVisibility()
|
|
|
|
love.graphics.setColor(unpack(skin.controls.textinput_body_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
object:SetTextOffsetY(object:GetHeight()/2 - height/2)
|
|
|
|
if object.xoffset ~= 0 then
|
|
object:SetTextOffsetX(-5)
|
|
else
|
|
object:SetTextOffsetX(5)
|
|
end
|
|
|
|
if showblink == true and focus == true then
|
|
|
|
love.graphics.setColor(unpack(skin.controls.textinput_blinker_color))
|
|
|
|
if object.xoffset ~= 0 then
|
|
love.graphics.rectangle("fill", object.blinkx, object.blinky, 1, height)
|
|
else
|
|
love.graphics.rectangle("fill", object.blinkx, object.blinky, 1, height)
|
|
end
|
|
|
|
end
|
|
|
|
love.graphics.setColor(unpack(skin.controls.textinput_border_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: DrawScrollButton(object)
|
|
- desc: draws the scroll button object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawScrollButton(object)
|
|
|
|
local hover = object.hover
|
|
local down = object.down
|
|
local gradientcolor = {}
|
|
|
|
if down == true then
|
|
|
|
-- button body
|
|
love.graphics.setColor(unpack(skin.controls.button_body_down_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
|
|
gradientcolor = {skin.controls.button_body_down_color[1] - 20, skin.controls.button_body_down_color[2] - 20, skin.controls.button_body_down_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
|
|
-- button border
|
|
love.graphics.setColor(unpack(skin.controls.button_border_down_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
elseif hover == true then
|
|
|
|
-- button body
|
|
love.graphics.setColor(unpack(skin.controls.button_body_hover_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
|
|
gradientcolor = {skin.controls.button_body_hover_color[1] - 20, skin.controls.button_body_hover_color[2] - 20, skin.controls.button_body_hover_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
|
|
-- button border
|
|
love.graphics.setColor(unpack(skin.controls.button_border_down_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
else
|
|
|
|
-- button body
|
|
love.graphics.setColor(unpack(skin.controls.button_body_nohover_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
|
|
gradientcolor = {skin.controls.button_body_nohover_color[1] - 20, skin.controls.button_body_nohover_color[2] - 20, skin.controls.button_body_nohover_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
|
|
-- button border
|
|
love.graphics.setColor(unpack(skin.controls.button_border_down_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
if object.scrolltype == "up" then
|
|
local image = skin.images["arrow-up.png"]
|
|
if object.hover == true then
|
|
love.graphics.setColor(255, 255, 255, 255)
|
|
else
|
|
love.graphics.setColor(255, 255, 255, 150)
|
|
end
|
|
love.graphics.draw(image, object:GetX() + object:GetWidth()/2 - image:getWidth()/2, object:GetY() + object:GetHeight()/2 - image:getHeight()/2)
|
|
elseif object.scrolltype == "down" then
|
|
local image = skin.images["arrow-down.png"]
|
|
if object.hover == true then
|
|
love.graphics.setColor(255, 255, 255, 255)
|
|
else
|
|
love.graphics.setColor(255, 255, 255, 150)
|
|
end
|
|
love.graphics.draw(image, object:GetX() + object:GetWidth()/2 - image:getWidth()/2, object:GetY() + object:GetHeight()/2 - image:getHeight()/2)
|
|
elseif object.scrolltype == "left" then
|
|
local image = skin.images["arrow-left.png"]
|
|
if object.hover == true then
|
|
love.graphics.setColor(255, 255, 255, 255)
|
|
else
|
|
love.graphics.setColor(255, 255, 255, 150)
|
|
end
|
|
love.graphics.draw(image, object:GetX() + object:GetWidth()/2 - image:getWidth()/2, object:GetY() + object:GetHeight()/2 - image:getHeight()/2)
|
|
elseif object.scrolltype == "right" then
|
|
local image = skin.images["arrow-right.png"]
|
|
if object.hover == true then
|
|
love.graphics.setColor(255, 255, 255, 255)
|
|
else
|
|
love.graphics.setColor(255, 255, 255, 150)
|
|
end
|
|
love.graphics.draw(image, object:GetX() + object:GetWidth()/2 - image:getWidth()/2, object:GetY() + object:GetHeight()/2 - image:getHeight()/2)
|
|
end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: skin.DrawSlider(object)
|
|
- desc: draws the slider object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawSlider(object)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.slider_bar_outline_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY() + object.ycenter - 5, object:GetWidth(), 10)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.slider_bar_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 5, object:GetY() + object.ycenter - 0.5, object:GetWidth() - 10, 1)
|
|
|
|
love.graphics.setFont(skin.controls.slider_text_font)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.slider_text_color))
|
|
love.graphics.print(object.text, object:GetX(), object:GetY())
|
|
|
|
love.graphics.setColor(unpack(skin.controls.slider_text_color))
|
|
love.graphics.printf(object.value, object:GetX() + object:GetWidth(), object:GetY(), 0, "right")
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: skin.DrawSliderButton(object)
|
|
- desc: draws the slider button object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawSliderButton(object)
|
|
|
|
local index = loveframes.config["ACTIVESKIN"]
|
|
local hover = object.hover
|
|
local down = object.down
|
|
local gradientcolor = {}
|
|
|
|
if down == true then
|
|
|
|
-- button body
|
|
love.graphics.setColor(unpack(skin.controls.button_body_down_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
|
|
gradientcolor = {skin.controls.button_body_down_color[1] - 20, skin.controls.button_body_down_color[2] - 20, skin.controls.button_body_down_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
|
|
-- button border
|
|
love.graphics.setColor(unpack(skin.controls.button_border_down_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
elseif hover == true then
|
|
|
|
-- button body
|
|
love.graphics.setColor(unpack(skin.controls.button_body_hover_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
|
|
gradientcolor = {skin.controls.button_body_hover_color[1] - 20, skin.controls.button_body_hover_color[2] - 20, skin.controls.button_body_hover_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
|
|
-- button border
|
|
love.graphics.setColor(unpack(skin.controls.button_border_down_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
else
|
|
|
|
-- button body
|
|
love.graphics.setColor(unpack(skin.controls.button_body_nohover_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
|
|
gradientcolor = {skin.controls.button_body_nohover_color[1] - 20, skin.controls.button_body_nohover_color[2] - 20, skin.controls.button_body_nohover_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
|
|
-- button border
|
|
love.graphics.setColor(unpack(skin.controls.button_border_down_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: skin.DrawCheckBox(object)
|
|
- desc: draws the check box object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawCheckBox(object)
|
|
|
|
local font = smallfont
|
|
local linesize = (1 * (object.boxwidth * 0.05))
|
|
local checked = object.checked
|
|
local height = font:getHeight()
|
|
|
|
love.graphics.setColor(unpack(skin.controls.checkbox_body_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object.boxwidth, object.boxheight)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.checkbox_border_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object.boxwidth, object.boxheight)
|
|
|
|
if checked == true then
|
|
|
|
love.graphics.setLine(linesize, "smooth")
|
|
|
|
love.graphics.setColor(unpack(skin.controls.checkbox_check_color))
|
|
love.graphics.line(object:GetX() + 5 + linesize, object:GetY() + 5 + linesize, object:GetX() + object.boxwidth - 5 - linesize, object:GetY() + object.boxheight - 5 - linesize)
|
|
love.graphics.line(object:GetX() + object.boxwidth - 5 - linesize, object:GetY() + 5 + linesize, object:GetX() + 5 + linesize, object:GetY() + object.boxheight - 5 - linesize)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: skin.DrawCollapsibleCategory(object)
|
|
- desc: draws the collapsible category object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawCollapsibleCategory(object)
|
|
|
|
local font = smallfont
|
|
local gradientcolor = {skin.controls.collapsiblecategory_body_color[1] - 20, skin.controls.collapsiblecategory_body_color[2] - 20, skin.controls.collapsiblecategory_body_color[3] - 20, 255}
|
|
|
|
love.graphics.setColor(unpack(skin.controls.collapsiblecategory_body_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
love.graphics.setColor(unpack(gradientcolor))
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.collapsiblecategory_text_color))
|
|
love.graphics.print(object.text, object:GetX() + 5, object:GetY() + 5)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.collapsiblecategory_border_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: skin.DrawColumnList(object)
|
|
- desc: draws the column list object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawColumnList(object)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.columnlist_body_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: skin.DrawColumnListHeader(object)
|
|
- desc: draws the column list header object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawColumnListHeader(object)
|
|
|
|
local font = skin.controls.columnlistheader_text_font
|
|
local twidth = font:getWidth(object.name)
|
|
local theight = font:getHeight(object.name)
|
|
local hover = object.hover
|
|
local down = object.down
|
|
local gradientcolor = {}
|
|
|
|
if down == true then
|
|
|
|
-- header body
|
|
love.graphics.setColor(unpack(skin.controls.columnlistheader_body_down_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
|
|
gradientcolor = {skin.controls.columnlistheader_body_down_color[1] - 20, skin.controls.columnlistheader_body_down_color[2] - 20, skin.controls.columnlistheader_body_down_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
|
|
-- header name
|
|
love.graphics.setFont(font)
|
|
love.graphics.setColor(unpack(skin.controls.columnlistheader_text_down_color))
|
|
love.graphics.print(object.name, object:GetX() + object:GetWidth()/2 - twidth/2, object:GetY() + object:GetHeight()/2 - theight/2)
|
|
|
|
-- header border
|
|
love.graphics.setColor(unpack(skin.controls.columnlistheader_border_down_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
elseif hover == true then
|
|
|
|
-- header body
|
|
love.graphics.setColor(unpack(skin.controls.columnlistheader_body_hover_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
|
|
gradientcolor = {skin.controls.columnlistheader_body_hover_color[1] - 20, skin.controls.columnlistheader_body_hover_color[2] - 20, skin.controls.columnlistheader_body_hover_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
|
|
-- header name
|
|
love.graphics.setFont(font)
|
|
love.graphics.setColor(unpack(skin.controls.columnlistheader_text_hover_color))
|
|
love.graphics.print(object.name, object:GetX() + object:GetWidth()/2 - twidth/2, object:GetY() + object:GetHeight()/2 - theight/2)
|
|
|
|
-- header border
|
|
love.graphics.setColor(unpack(skin.controls.columnlistheader_border_down_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
else
|
|
|
|
-- header body
|
|
love.graphics.setColor(unpack(skin.controls.columnlistheader_body_nohover_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
|
|
gradientcolor = {skin.controls.columnlistheader_body_nohover_color[1] - 20, skin.controls.columnlistheader_body_nohover_color[2] - 20, skin.controls.columnlistheader_body_nohover_color[3] - 20, 255}
|
|
skin.DrawGradient(object:GetX(), object:GetY() - 1, object:GetWidth(), object:GetHeight(), "up", gradientcolor)
|
|
|
|
-- header name
|
|
love.graphics.setFont(font)
|
|
love.graphics.setColor(unpack(skin.controls.button_text_nohover_color))
|
|
love.graphics.print(object.name, object:GetX() + object:GetWidth()/2 - twidth/2, object:GetY() + object:GetHeight()/2 - theight/2)
|
|
|
|
-- header border
|
|
love.graphics.setColor(unpack(skin.controls.columnlistheader_border_down_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: skin.DrawColumnListArea(object)
|
|
- desc: draws the column list area object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawColumnListArea(object)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.columnlistarea_body_color))
|
|
love.graphics.rectangle("fill", object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: skin.DrawOverColumnListArea(object)
|
|
- desc: draws the column list area object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawColumnListArea(object)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.columnlistarea_border_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
--[[---------------------------------------------------------
|
|
- func: skin.DrawColumnListRow(object)
|
|
- desc: draws the column list row object
|
|
--]]---------------------------------------------------------
|
|
function skin.DrawColumnListRow(object)
|
|
|
|
local colorindex = object:GetColorIndex()
|
|
local font = object:GetFont()
|
|
local height = font:getHeight("a")
|
|
|
|
object:SetTextPos(5, object:GetHeight()/2 - height/2)
|
|
object:SetTextColor(bordercolor)
|
|
|
|
if colorindex == 1 then
|
|
|
|
love.graphics.setColor(unpack(skin.controls.columnlistrow_body1_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.columnlistrow_border1_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
else
|
|
|
|
love.graphics.setColor(unpack(skin.controls.columnlistrow_body2_color))
|
|
love.graphics.rectangle("fill", object:GetX() + 1, object:GetY() + 1, object:GetWidth() - 2, object:GetHeight() - 2)
|
|
|
|
love.graphics.setColor(unpack(skin.controls.columnlistrow_border2_color))
|
|
skin.OutlinedRectangle(object:GetX(), object:GetY(), object:GetWidth(), object:GetHeight())
|
|
|
|
end
|
|
|
|
end
|
|
|
|
-- register the skin
|
|
loveframes.skins.Register(skin) |