LoveFrames/skins/Blue/skin.lua

2042 lines
66 KiB
Lua
Raw Normal View History

--[[------------------------------------------------
-- Love Frames - A GUI library for LOVE --
2014-01-14 11:29:11 +00:00
-- Copyright (c) 2012-2014 Kenny Shields --
--]]------------------------------------------------
-- get the current require path
local path = string.sub(..., 1, string.len(...) - string.len(".skins.Blue.skin"))
local loveframes = require(path .. ".libraries.common")
-- 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)
2018-04-15 01:23:26 +00:00
local bordercolor = {143/255, 143/255, 143/255, 255/255}
-- add skin directives to this table
skin.directives = {}
-- controls
skin.controls = {}
-- frame
2018-04-15 01:23:26 +00:00
skin.controls.frame_body_color = {232/255, 232/255, 232/255, 255/255}
skin.controls.frame_name_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.frame_name_font = smallfont
-- button
2018-04-15 01:23:26 +00:00
skin.controls.button_text_down_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.button_text_nohover_color = {0, 0, 0, 200/255}
skin.controls.button_text_hover_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.button_text_nonclickable_color = {0, 0, 0, 100/255}
skin.controls.button_text_font = smallfont
-- imagebutton
2018-04-15 01:23:26 +00:00
skin.controls.imagebutton_text_down_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.imagebutton_text_nohover_color = {255/255, 255/255, 255/255, 200/255}
skin.controls.imagebutton_text_hover_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.imagebutton_text_font = imagebuttonfont
-- closebutton
2018-04-15 01:23:26 +00:00
skin.controls.closebutton_body_down_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.closebutton_body_nohover_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.closebutton_body_hover_color = {255/255, 255/255, 255/255, 255/255}
-- progressbar
2018-04-15 01:23:26 +00:00
skin.controls.progressbar_body_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.progressbar_text_color = {0, 0, 0, 255/255}
skin.controls.progressbar_text_font = smallfont
-- list
2018-04-15 01:23:26 +00:00
skin.controls.list_body_color = {232/255, 232/255, 232/255, 255/255}
-- scrollarea
2018-04-15 01:23:26 +00:00
skin.controls.scrollarea_body_color = {220/255, 220/255, 220/255, 255/255}
-- scrollbody
skin.controls.scrollbody_body_color = {0, 0, 0, 0}
-- panel
2018-04-15 01:23:26 +00:00
skin.controls.panel_body_color = {232/255, 232/255, 232/255, 255/255}
-- tabpanel
2018-04-15 01:23:26 +00:00
skin.controls.tabpanel_body_color = {232/255, 232/255, 232/255, 255/255}
-- tabbutton
2018-04-15 01:23:26 +00:00
skin.controls.tab_text_nohover_color = {0, 0, 0, 200/255}
skin.controls.tab_text_hover_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.tab_text_font = smallfont
-- multichoice
2018-04-15 01:23:26 +00:00
skin.controls.multichoice_body_color = {240/255, 240/255, 240/255, 255/255}
skin.controls.multichoice_text_color = {0, 0, 0, 255/255}
skin.controls.multichoice_text_font = smallfont
-- multichoicelist
2018-04-15 01:23:26 +00:00
skin.controls.multichoicelist_body_color = {240/255, 240/255, 240/255, 200/255}
-- multichoicerow
2018-04-15 01:23:26 +00:00
skin.controls.multichoicerow_body_nohover_color = {240/255, 240/255, 240/255, 255/255}
skin.controls.multichoicerow_body_hover_color = {51/255, 204/255, 255/255, 255/255}
skin.controls.multichoicerow_text_nohover_color = {0, 0, 0, 150/255}
skin.controls.multichoicerow_text_hover_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.multichoicerow_text_font = smallfont
-- tooltip
2018-04-15 01:23:26 +00:00
skin.controls.tooltip_body_color = {255/255, 255/255, 255/255, 255/255}
-- textinput
2018-04-15 01:23:26 +00:00
skin.controls.textinput_body_color = {250/255, 250/255, 250/255, 255/255}
skin.controls.textinput_indicator_color = {0, 0, 0, 255/255}
skin.controls.textinput_text_normal_color = {0, 0, 0, 255/255}
skin.controls.textinput_text_placeholder_color = {127/255, 127/255, 127/255, 255/255}
skin.controls.textinput_text_selected_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.textinput_highlight_bar_color = {51/255, 204/255, 255/255, 255/255}
-- slider
2018-04-15 01:23:26 +00:00
skin.controls.slider_bar_outline_color = {220/255, 220/255, 220/255, 255/255}
-- checkbox
2018-04-15 01:23:26 +00:00
skin.controls.checkbox_body_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.checkbox_check_color = {128/255, 204/255, 255/255, 255/255}
skin.controls.checkbox_text_font = smallfont
2014-07-14 02:37:37 +00:00
-- radiobutton
2018-04-15 01:23:26 +00:00
skin.controls.radiobutton_body_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.radiobutton_check_color = {128/255, 204/255, 255/255, 255/255}
skin.controls.radiobutton_inner_border_color = {77/255, 184/255, 255/255, 255/255}
2014-07-14 05:59:09 +00:00
skin.controls.radiobutton_text_font = smallfont
2014-07-14 02:37:37 +00:00
-- collapsiblecategory
2018-04-15 01:23:26 +00:00
skin.controls.collapsiblecategory_text_color = {255/255, 255/255, 255/255, 255/255}
-- columnlist
2018-04-15 01:23:26 +00:00
skin.controls.columnlist_body_color = {232/255, 232/255, 232/255, 255/255}
-- columlistarea
2018-04-15 01:23:26 +00:00
skin.controls.columnlistarea_body_color = {232/255, 232/255, 232/255, 255/255}
-- columnlistheader
2018-04-15 01:23:26 +00:00
skin.controls.columnlistheader_text_down_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.columnlistheader_text_nohover_color = {0, 0, 0, 200/255}
skin.controls.columnlistheader_text_hover_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.columnlistheader_text_font = smallfont
-- columnlistrow
2018-04-15 01:23:26 +00:00
skin.controls.columnlistrow_body1_color = {245/255, 245/255, 245/255, 255/255}
skin.controls.columnlistrow_body2_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.columnlistrow_body_selected_color = {26/255, 198/255, 255/255, 255/255}
skin.controls.columnlistrow_body_hover_color = {102/255, 217/255, 255/255, 255/255}
skin.controls.columnlistrow_text_color = {100/255, 100/255, 100/255, 255/255}
skin.controls.columnlistrow_text_hover_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.columnlistrow_text_selected_color = {255/255, 255/255, 255/255, 255/255}
-- modalbackground
2018-04-15 01:23:26 +00:00
skin.controls.modalbackground_body_color = {255/255, 255/255, 255/255, 100/255}
-- linenumberspanel
2018-04-15 01:23:26 +00:00
skin.controls.linenumberspanel_text_color = {170/255, 170/255, 170/255, 255/255}
skin.controls.linenumberspanel_body_color = {235/255, 235/255, 235/255, 255/255}
2013-12-26 18:30:35 +00:00
-- grid
2018-04-15 01:23:26 +00:00
skin.controls.grid_body_color = {230/255, 230/255, 230/255, 255/255}
2013-12-26 18:30:35 +00:00
2013-11-25 13:06:41 +00:00
-- form
2018-04-15 01:23:26 +00:00
skin.controls.form_text_color = {0, 0, 0, 255/255}
2013-11-25 13:06:41 +00:00
skin.controls.form_text_font = smallfont
2013-12-26 18:30:35 +00:00
-- menu
2018-04-15 01:23:26 +00:00
skin.controls.menu_body_color = {255/255, 255/255, 255/255, 255/255}
2013-12-26 18:30:35 +00:00
-- menuoption
2018-04-15 01:23:26 +00:00
skin.controls.menuoption_body_hover_color = {51/255, 204/255, 255/255, 255/255}
skin.controls.menuoption_text_hover_color = {255/255, 255/255, 255/255, 255/255}
skin.controls.menuoption_text_color = {180/255, 180/255, 180/255, 255/255}
2013-12-26 18:30:35 +00:00
local function ParseHeaderText(str, hx, hwidth, tx)
local font = love.graphics.getFont()
local twidth = love.graphics.getFont():getWidth(str)
if (tx + twidth) - hwidth/2 > hx + hwidth then
if #str > 1 then
return ParseHeaderText(str:sub(1, #str - 1), hx, hwidth, tx, twidth)
else
return str
end
else
return str
end
end
local function ParseRowText(str, rx, rwidth, tx1, tx2)
local twidth = love.graphics.getFont():getWidth(str)
if (tx1 + tx2) + twidth > rx + rwidth then
if #str > 1 then
return ParseRowText(str:sub(1, #str - 1), rx, rwidth, tx1, tx2)
else
return str
end
else
return str
end
end
--[[
local function DrawColumnHeaderText(text, hx, hwidth, tx, twidth)
local new = ""
if tx + width > hx + hwidth then
--]]
--[[---------------------------------------------------------
2013-11-25 13:06:41 +00:00
- func: OutlinedRectangle(x, y, width, height, ovt, ovb, ovl, ovr)
- 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 not ovt then
love.graphics.rectangle("fill", x, y, width, 1)
end
-- bottom
if not ovb then
love.graphics.rectangle("fill", x, y + height - 1, width, 1)
end
-- left
if not ovl then
love.graphics.rectangle("fill", x, y, 1, height)
end
-- right
if not ovr then
love.graphics.rectangle("fill", x + width - 1, y, 1, height)
end
end
--[[---------------------------------------------------------
- func: DrawFrame(object)
- desc: draws the frame object
--]]---------------------------------------------------------
function skin.DrawFrame(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local hover = object:GetHover()
local name = object:GetName()
local icon = object:GetIcon()
local bodycolor = skin.controls.frame_body_color
local topcolor = skin.controls.frame_top_color
local namecolor = skin.controls.frame_name_color
local font = skin.controls.frame_name_font
local topbarimage = skin.images["frame-topbar.png"]
local topbarimage_width = topbarimage:getWidth()
local topbarimage_height = topbarimage:getHeight()
local topbarimage_scalex = width/topbarimage_width
local topbarimage_scaley = 25/topbarimage_height
local bodyimage = skin.images["frame-body.png"]
local bodyimage_width = bodyimage:getWidth()
local bodyimage_height = bodyimage:getHeight()
local bodyimage_scalex = width/bodyimage_width
local bodyimage_scaley = height/bodyimage_height
-- frame body
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(bodyimage, x, y, 0, bodyimage_scalex, bodyimage_scaley)
-- frame top bar
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(topbarimage, x, y, 0, topbarimage_scalex, topbarimage_scaley)
-- frame name section
love.graphics.setFont(font)
if icon then
local iconwidth = icon:getWidth()
local iconheight = icon:getHeight()
icon:setFilter("nearest", "nearest")
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(icon, x + 5, y + 5)
love.graphics.setColor(namecolor)
love.graphics.print(name, x + iconwidth + 10, y + 5)
else
love.graphics.setColor(namecolor)
love.graphics.print(name, x + 5, y + 5)
end
-- frame border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 70/255)
2013-12-26 18:30:35 +00:00
skin.OutlinedRectangle(x + 1, y + 1, width - 2, 24)
2018-04-15 01:23:26 +00:00
love.graphics.setColor(220/255, 220/255, 220/255, 255/255)
2013-12-26 18:30:35 +00:00
skin.OutlinedRectangle(x + 1, y + 25, width - 2, height - 26)
end
--[[---------------------------------------------------------
- func: DrawButton(object)
- desc: draws the button object
--]]---------------------------------------------------------
function skin.DrawButton(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local hover = object:GetHover()
local text = object:GetText()
local font = skin.controls.button_text_font
local twidth = font:getWidth(object.text)
local theight = font:getHeight(object.text)
local down = object:GetDown()
local checked = object.checked
local enabled = object:GetEnabled()
local clickable = object:GetClickable()
local textdowncolor = skin.controls.button_text_down_color
local texthovercolor = skin.controls.button_text_hover_color
local textnohovercolor = skin.controls.button_text_nohover_color
local textnonclickablecolor = skin.controls.button_text_nonclickable_color
local image_hover = skin.images["button-hover.png"]
local scaley = height/image_hover:getHeight()
if not enabled or not clickable then
-- button body
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(skin.images["button-unclickable.png"], x, y, 0, width, scaley)
-- button text
love.graphics.setFont(font)
love.graphics.setColor(textnonclickablecolor)
love.graphics.print(text, x + width/2 - twidth/2, y + height/2 - theight/2)
-- button border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
return
end
if object.toggleable then
if hover then
if down then
-- button body
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(skin.images["button-down.png"], x, y, 0, width, scaley)
-- button text
love.graphics.setFont(font)
love.graphics.setColor(textdowncolor)
love.graphics.print(text, x + width/2 - twidth/2, y + height/2 - theight/2)
-- button border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
else
-- button body
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image_hover, x, y, 0, width, scaley)
-- button text
love.graphics.setFont(font)
love.graphics.setColor(texthovercolor)
love.graphics.print(text, x + width/2 - twidth/2, y + height/2 - theight/2)
-- button border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
end
else
if object.toggle then
-- button body
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(skin.images["button-down.png"], x, y, 0, width, scaley)
-- button text
love.graphics.setFont(font)
love.graphics.setColor(textdowncolor)
love.graphics.print(text, x + width/2 - twidth/2, y + height/2 - theight/2)
-- button border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
else
-- button body
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(skin.images["button-nohover.png"], x, y, 0, width, scaley)
-- button text
love.graphics.setFont(font)
love.graphics.setColor(textnohovercolor)
love.graphics.print(text, x + width/2 - twidth/2, y + height/2 - theight/2)
-- button border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
end
end
else
if down or checked then
-- button body
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(skin.images["button-down.png"], x, y, 0, width, scaley)
-- button text
love.graphics.setFont(font)
if object.image then
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255)
love.graphics.draw(object.image, x + 2, y + height/2 - object.image:getHeight()/2)
love.graphics.setColor(textdowncolor)
local text = object.text
local font = skin.controls.button_text_font
while font:getWidth(text) > width - object.image:getWidth() - 10 do
text =text:sub(2)
while text:byte(1, 1) > 127 do text = text:sub(2) end
end
love.graphics.print(text, x + object.image:getWidth() + 4, y + height/2 - theight/2)
else
love.graphics.setColor(textdowncolor)
love.graphics.print(text, x + width/2 - twidth/2, y + height/2 - theight/2)
end
-- button border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
elseif hover then
-- button body
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image_hover, x, y, 0, width, scaley)
-- button text
love.graphics.setFont(font)
if object.image then
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255)
love.graphics.draw(object.image, x + 2, y + height/2 - object.image:getHeight()/2)
love.graphics.setColor(texthovercolor)
local text = object.text
local font = skin.controls.button_text_font
while font:getWidth(text) > width - object.image:getWidth() - 10 do
text =text:sub(2)
while text:byte(1, 1) > 127 do text = text:sub(2) end
end
love.graphics.print(text, x + object.image:getWidth() + 4, y + height/2 - theight/2)
else
love.graphics.setColor(texthovercolor)
love.graphics.print(text, x + width/2 - twidth/2, y + height/2 - theight/2)
end
-- button border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
else
-- button body
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(skin.images["button-nohover.png"], x, y, 0, width, scaley)
-- button text
love.graphics.setFont(font)
if object.image then
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255)
love.graphics.draw(object.image, object:GetX() + 2, object:GetY() + object:GetHeight()/2 - object.image:getHeight()/2)
love.graphics.setColor(textnohovercolor)
local text = object.text
local font = skin.controls.button_text_font
while font:getWidth(text) > width - object.image:getWidth() - 10 do
text =text:sub(2)
while text:byte(1, 1) > 127 do text = text:sub(2) end
end
love.graphics.print(text, x + object.image:getWidth() + 4, y + height/2 - theight/2)
else
love.graphics.setColor(textnohovercolor)
love.graphics.print(text, x + width/2 - twidth/2, y + height/2 - theight/2)
end
-- button border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
end
end
2013-12-26 18:30:35 +00:00
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 150/255)
2013-12-26 18:30:35 +00:00
skin.OutlinedRectangle(x + 1, y + 1, width - 2, height - 2)
end
--[[---------------------------------------------------------
- func: DrawCloseButton(object)
- desc: draws the close button object
--]]---------------------------------------------------------
function skin.DrawCloseButton(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local parent = object.parent
local parentwidth = parent:GetWidth()
local hover = object:GetHover()
local down = object.down
local image = skin.images["close.png"]
local bodydowncolor = skin.controls.closebutton_body_down_color
local bodyhovercolor = skin.controls.closebutton_body_hover_color
local bodynohovercolor = skin.controls.closebutton_body_nohover_color
image:setFilter("nearest", "nearest")
if down then
-- button body
love.graphics.setColor(bodydowncolor)
love.graphics.draw(image, x, y)
elseif hover then
-- button body
love.graphics.setColor(bodyhovercolor)
love.graphics.draw(image, x, y)
else
-- button body
love.graphics.setColor(bodynohovercolor)
love.graphics.draw(image, x, y)
end
end
--[[---------------------------------------------------------
- func: DrawImage(object)
- desc: draws the image object
--]]---------------------------------------------------------
function skin.DrawImage(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local orientation = object:GetOrientation()
local scalex = object:GetScaleX()
local scaley = object:GetScaleY()
local offsetx = object:GetOffsetX()
local offsety = object:GetOffsetY()
local shearx = object:GetShearX()
local sheary = object:GetShearY()
local image = object.image
local color = object.imagecolor
local stretch = object.stretch
if stretch then
scalex, scaley = object:GetWidth() / image:getWidth(), object:GetHeight() / image:getHeight()
end
if color then
love.graphics.setColor(color)
love.graphics.draw(image, x, y, orientation, scalex, scaley, offsetx, offsety, shearx, sheary)
else
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x, y, orientation, scalex, scaley, offsetx, offsety, shearx, sheary)
end
end
--[[---------------------------------------------------------
- func: DrawImageButton(object)
- desc: draws the image button object
--]]---------------------------------------------------------
function skin.DrawImageButton(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local text = object:GetText()
local hover = object:GetHover()
local image = object:GetImage()
2018-04-15 01:23:26 +00:00
local imagecolor = object.imagecolor or {255/255, 255/255, 255/255, 255/255}
local down = object.down
local font = skin.controls.imagebutton_text_font
local twidth = font:getWidth(object.text)
local theight = font:getHeight(object.text)
local textdowncolor = skin.controls.imagebutton_text_down_color
local texthovercolor = skin.controls.imagebutton_text_hover_color
local textnohovercolor = skin.controls.imagebutton_text_nohover_color
local checked = object.checked
if down then
if image then
love.graphics.setColor(imagecolor)
love.graphics.draw(image, x + 1, y + 1)
end
love.graphics.setFont(font)
2018-04-15 01:23:26 +00:00
love.graphics.setColor(0, 0, 0, 255/255)
love.graphics.print(text, x + width/2 - twidth/2 + 1, y + height - theight - 5 + 1)
love.graphics.setColor(textdowncolor)
love.graphics.print(text, x + width/2 - twidth/2 + 1, y + height - theight - 6 + 1)
elseif hover then
if image then
love.graphics.setColor(imagecolor)
love.graphics.draw(image, x, y)
end
love.graphics.setFont(font)
2018-04-15 01:23:26 +00:00
love.graphics.setColor(0, 0, 0, 255/255)
love.graphics.print(text, x + width/2 - twidth/2, y + height - theight - 5)
love.graphics.setColor(texthovercolor)
love.graphics.print(text, x + width/2 - twidth/2, y + height - theight - 6)
else
if image then
love.graphics.setColor(imagecolor)
love.graphics.draw(image, x, y)
end
love.graphics.setFont(font)
2018-04-15 01:23:26 +00:00
love.graphics.setColor(0, 0, 0, 255/255)
love.graphics.print(text, x + width/2 - twidth/2, y + height - theight - 5)
love.graphics.setColor(textnohovercolor)
love.graphics.print(text, x + width/2 - twidth/2, y + height - theight - 6)
end
if checked == true then
love.graphics.setColor(bordercolor)
love.graphics.setLineWidth(3)
love.graphics.setLineStyle("smooth")
love.graphics.rectangle("line", x+1, y+1, width-2, height-2)
end
end
--[[---------------------------------------------------------
- func: DrawProgressBar(object)
- desc: draws the progress bar object
--]]---------------------------------------------------------
function skin.DrawProgressBar(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local value = object:GetValue()
local max = object:GetMax()
local text = object:GetText()
local barwidth = object:GetBarWidth()
local font = skin.controls.progressbar_text_font
local twidth = font:getWidth(text)
local theight = font:getHeight("a")
local bodycolor = skin.controls.progressbar_body_color
local barcolor = skin.controls.progressbar_bar_color
local textcolor = skin.controls.progressbar_text_color
local image = skin.images["progressbar.png"]
local imageheight = image:getHeight()
local scaley = height/imageheight
-- progress bar body
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x, y, width, height)
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x, y, 0, barwidth, scaley)
love.graphics.setFont(font)
love.graphics.setColor(textcolor)
love.graphics.print(text, x + width/2 - twidth/2, y + height/2 - theight/2)
-- progress bar border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
object:SetText(value .. "/" ..max)
end
--[[---------------------------------------------------------
- func: DrawScrollArea(object)
- desc: draws the scroll area object
--]]---------------------------------------------------------
function skin.DrawScrollArea(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local bartype = object:GetBarType()
local bodycolor = skin.controls.scrollarea_body_color
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x, y, width, height)
love.graphics.setColor(bordercolor)
if bartype == "vertical" then
2013-12-26 18:30:35 +00:00
--skin.OutlinedRectangle(x, y, width, height, true, true)
elseif bartype == "horizontal" then
2013-12-26 18:30:35 +00:00
--skin.OutlinedRectangle(x, y, width, height, false, false, true, true)
end
end
--[[---------------------------------------------------------
- func: DrawScrollBar(object)
- desc: draws the scroll bar object
--]]---------------------------------------------------------
function skin.DrawScrollBar(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local dragging = object:IsDragging()
local hover = object:GetHover()
local bartype = object:GetBarType()
local bodydowncolor = skin.controls.scrollbar_body_down_color
local bodyhovercolor = skin.controls.scrollbar_body_hover_color
local bodynohvercolor = skin.controls.scrollbar_body_nohover_color
if dragging then
local image = skin.images["button-down.png"]
local imageheight = image:getHeight()
local scaley = height/imageheight
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x, y, 0, width, scaley)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
elseif hover then
local image = skin.images["button-hover.png"]
local imageheight = image:getHeight()
local scaley = height/imageheight
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x, y, 0, width, scaley)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
else
local image = skin.images["button-nohover.png"]
local imageheight = image:getHeight()
local scaley = height/imageheight
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x, y, 0, width, scaley)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
end
end
--[[---------------------------------------------------------
- func: DrawScrollBody(object)
- desc: draws the scroll body object
--]]---------------------------------------------------------
function skin.DrawScrollBody(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local bodycolor = skin.controls.scrollbody_body_color
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x, y, width, height)
end
--[[---------------------------------------------------------
- func: DrawPanel(object)
- desc: draws the panel object
--]]---------------------------------------------------------
function skin.DrawPanel(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local bodycolor = skin.controls.panel_body_color
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x, y, width, height)
2013-12-26 18:30:35 +00:00
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 200/255)
2013-12-26 18:30:35 +00:00
skin.OutlinedRectangle(x + 1, y + 1, width - 2, height - 2)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
end
--[[---------------------------------------------------------
- func: DrawList(object)
- desc: draws the list object
--]]---------------------------------------------------------
function skin.DrawList(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local bodycolor = skin.controls.list_body_color
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x, y, width, height)
end
--[[---------------------------------------------------------
- func: DrawList(object)
- desc: used to draw over the object and its children
--]]---------------------------------------------------------
function skin.DrawOverList(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
end
--[[---------------------------------------------------------
- func: DrawTabPanel(object)
- desc: draws the tab panel object
--]]---------------------------------------------------------
function skin.DrawTabPanel(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local buttonheight = object:GetHeightOfButtons()
local bodycolor = skin.controls.tabpanel_body_color
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x, y + buttonheight, width, height - buttonheight)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y + buttonheight - 1, width, height - buttonheight + 2)
object:SetScrollButtonSize(15, buttonheight)
end
--[[---------------------------------------------------------
- func: DrawOverTabPanel(object)
- desc: draws over the tab panel object
--]]---------------------------------------------------------
function skin.DrawOverTabPanel(object)
end
--[[---------------------------------------------------------
- func: DrawTabButton(object)
- desc: draws the tab button object
--]]---------------------------------------------------------
function skin.DrawTabButton(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local hover = object:GetHover()
local text = object:GetText()
local image = object:GetImage()
local tabnumber = object:GetTabNumber()
local parent = object:GetParent()
local ptabnumber = parent:GetTabNumber()
local font = skin.controls.tab_text_font
local twidth = font:getWidth(object.text)
local theight = font:getHeight(object.text)
local imagewidth = 0
local imageheight = 0
local texthovercolor = skin.controls.button_text_hover_color
local textnohovercolor = skin.controls.button_text_nohover_color
if image then
image:setFilter("nearest", "nearest")
imagewidth = image:getWidth()
imageheight = image:getHeight()
object.width = imagewidth + 15 + twidth
if imageheight > theight then
parent:SetTabHeight(imageheight + 5)
object.height = imageheight + 5
else
object.height = parent.tabheight
end
else
object.width = 10 + twidth
object.height = parent.tabheight
end
local width = object:GetWidth()
local height = object:GetHeight()
if tabnumber == ptabnumber then
-- button body
local gradient = skin.images["button-hover.png"]
local gradientheight = gradient:getHeight()
local scaley = height/gradientheight
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(gradient, x, y, 0, width, scaley)
-- button border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
if image then
-- button image
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x + 5, y + height/2 - imageheight/2)
-- button text
love.graphics.setFont(font)
love.graphics.setColor(texthovercolor)
love.graphics.print(text, x + imagewidth + 10, y + height/2 - theight/2)
else
-- button text
love.graphics.setFont(font)
love.graphics.setColor(texthovercolor)
love.graphics.print(text, x + 5, y + height/2 - theight/2)
end
else
-- button body
local gradient = skin.images["button-nohover.png"]
local gradientheight = gradient:getHeight()
local scaley = height/gradientheight
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(gradient, x, y, 0, width, scaley)
-- button border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
if image then
-- button image
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 150/255)
love.graphics.draw(image, x + 5, y + height/2 - imageheight/2)
-- button text
love.graphics.setFont(font)
love.graphics.setColor(textnohovercolor)
love.graphics.print(text, x + imagewidth + 10, y + height/2 - theight/2)
else
-- button text
love.graphics.setFont(font)
love.graphics.setColor(textnohovercolor)
love.graphics.print(text, x + 5, y + height/2 - theight/2)
end
end
end
--[[---------------------------------------------------------
- func: DrawMultiChoice(object)
- desc: draws the multi choice object
--]]---------------------------------------------------------
function skin.DrawMultiChoice(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local text = object:GetText()
local choice = object:GetChoice()
local image = skin.images["multichoice-arrow.png"]
local font = skin.controls.multichoice_text_font
local theight = font:getHeight("a")
local bodycolor = skin.controls.multichoice_body_color
local textcolor = skin.controls.multichoice_text_color
image:setFilter("nearest", "nearest")
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2)
love.graphics.setColor(textcolor)
love.graphics.setFont(font)
if choice == "" then
love.graphics.print(text, x + 5, y + height/2 - theight/2)
else
love.graphics.print(choice, x + 5, y + height/2 - theight/2)
end
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x + width - 20, y + 5)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
end
--[[---------------------------------------------------------
- func: DrawMultiChoiceList(object)
- desc: draws the multi choice list object
--]]---------------------------------------------------------
function skin.DrawMultiChoiceList(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local bodycolor = skin.controls.multichoicelist_body_color
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x, y, width, height)
end
--[[---------------------------------------------------------
- func: DrawOverMultiChoiceList(object)
- desc: draws over the multi choice list object
--]]---------------------------------------------------------
function skin.DrawOverMultiChoiceList(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y - 1, width, height + 1)
end
--[[---------------------------------------------------------
- func: DrawMultiChoiceRow(object)
- desc: draws the multi choice row object
--]]---------------------------------------------------------
function skin.DrawMultiChoiceRow(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local text = object:GetText()
local font = skin.controls.multichoicerow_text_font
local bodyhovecolor = skin.controls.multichoicerow_body_hover_color
local texthovercolor = skin.controls.multichoicerow_text_hover_color
local bodynohovercolor = skin.controls.multichoicerow_body_nohover_color
local textnohovercolor = skin.controls.multichoicerow_text_nohover_color
love.graphics.setFont(font)
if object.hover then
love.graphics.setColor(bodyhovecolor)
love.graphics.rectangle("fill", x, y, width, height)
love.graphics.setColor(texthovercolor)
love.graphics.print(text, x + 5, y + 5)
else
love.graphics.setColor(bodynohovercolor)
love.graphics.rectangle("fill", x, y, width, height)
love.graphics.setColor(textnohovercolor)
love.graphics.print(text, x + 5, y + 5)
end
end
--[[---------------------------------------------------------
- func: DrawToolTip(object)
- desc: draws the tool tip object
--]]---------------------------------------------------------
function skin.DrawToolTip(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local bodycolor = skin.controls.tooltip_body_color
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x, y, width, height)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
end
--[[---------------------------------------------------------
- func: DrawText(object)
- desc: draws the text object
--]]---------------------------------------------------------
function skin.DrawText(object)
end
--[[---------------------------------------------------------
- func: DrawTextInput(object)
- desc: draws the text input object
--]]---------------------------------------------------------
function skin.DrawTextInput(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local font = object:GetFont()
local focus = object:GetFocus()
local showindicator = object:GetIndicatorVisibility()
local alltextselected = object:IsAllTextSelected()
local textx = object:GetTextX()
local texty = object:GetTextY()
local text = object:GetText()
local multiline = object:GetMultiLine()
local lines = object:GetLines()
local placeholder = object:GetPlaceholderText()
local offsetx = object:GetOffsetX()
local offsety = object:GetOffsetY()
local indicatorx = object:GetIndicatorX()
local indicatory = object:GetIndicatorY()
local vbar = object:HasVerticalScrollBar()
local hbar = object:HasHorizontalScrollBar()
local linenumbers = object:GetLineNumbersEnabled()
local itemwidth = object:GetItemWidth()
2013-10-21 16:25:50 +00:00
local masked = object:GetMasked()
local theight = font:getHeight("a")
local bodycolor = skin.controls.textinput_body_color
local textnormalcolor = skin.controls.textinput_text_normal_color
2013-11-06 22:50:26 +00:00
local textplaceholdercolor = skin.controls.textinput_text_placeholder_color
local textselectedcolor = skin.controls.textinput_text_selected_color
local highlightbarcolor = skin.controls.textinput_highlight_bar_color
local indicatorcolor = skin.controls.textinput_indicator_color
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x, y, width, height)
if alltextselected then
local bary = 0
if multiline then
for i=1, #lines do
2013-10-21 16:25:50 +00:00
local str = lines[i]
if masked then
str = str:gsub(".", "*")
end
local twidth = font:getWidth(str)
if twidth == 0 then
twidth = 5
end
love.graphics.setColor(highlightbarcolor)
love.graphics.rectangle("fill", textx, texty + bary, twidth, theight)
bary = bary + theight
end
else
2013-10-21 16:25:50 +00:00
local twidth = 0
if masked then
local maskchar = object:GetMaskChar()
twidth = font:getWidth(text:gsub(".", maskchar))
else
twidth = font:getWidth(text)
end
love.graphics.setColor(highlightbarcolor)
love.graphics.rectangle("fill", textx, texty, twidth, theight)
end
end
if showindicator and focus then
love.graphics.setColor(indicatorcolor)
love.graphics.rectangle("fill", indicatorx, indicatory, 1, theight)
end
if not multiline then
object:SetTextOffsetY(height/2 - theight/2)
if offsetx ~= 0 then
object:SetTextOffsetX(0)
else
object:SetTextOffsetX(5)
end
else
if vbar then
if offsety ~= 0 then
if hbar then
object:SetTextOffsetY(5)
else
object:SetTextOffsetY(-5)
end
else
object:SetTextOffsetY(5)
end
else
object:SetTextOffsetY(5)
end
if hbar then
if offsety ~= 0 then
if linenumbers then
local panel = object:GetLineNumbersPanel()
if vbar then
object:SetTextOffsetX(5)
else
object:SetTextOffsetX(-5)
end
else
if vbar then
object:SetTextOffsetX(5)
else
object:SetTextOffsetX(-5)
end
end
else
object:SetTextOffsetX(5)
end
else
object:SetTextOffsetX(5)
end
end
textx = object:GetTextX()
texty = object:GetTextY()
love.graphics.setFont(font)
if alltextselected then
love.graphics.setColor(textselectedcolor)
2013-11-06 22:50:26 +00:00
elseif #lines == 1 and lines[1] == "" then
love.graphics.setColor(textplaceholdercolor)
else
love.graphics.setColor(textnormalcolor)
end
2013-10-21 16:25:50 +00:00
local str = ""
if multiline then
for i=1, #lines do
2013-10-21 16:25:50 +00:00
str = lines[i]
if masked then
local maskchar = object:GetMaskChar()
str = str:gsub(".", maskchar)
end
love.graphics.print(#str > 0 and str or (#lines == 1 and placeholder or ""), textx, texty + theight * i - theight)
end
else
2013-10-21 16:25:50 +00:00
str = lines[1]
if masked then
local maskchar = object:GetMaskChar()
str = str:gsub(".", maskchar)
end
2013-11-06 22:50:26 +00:00
love.graphics.print(#str > 0 and str or placeholder, textx, texty)
end
2013-10-21 16:25:50 +00:00
2018-04-15 01:23:26 +00:00
love.graphics.setColor(230/255, 230/255, 230/255, 255/255)
2013-12-26 18:30:35 +00:00
skin.OutlinedRectangle(x + 1, y + 1, width - 2, height - 2)
end
--[[---------------------------------------------------------
- func: DrawOverTextInput(object)
- desc: draws over the text input object
--]]---------------------------------------------------------
function skin.DrawOverTextInput(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
end
--[[---------------------------------------------------------
- func: DrawScrollButton(object)
- desc: draws the scroll button object
--]]---------------------------------------------------------
function skin.DrawScrollButton(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local hover = object:GetHover()
local scrolltype = object:GetScrollType()
local down = object.down
local bodydowncolor = skin.controls.button_body_down_color
local bodyhovercolor = skin.controls.button_body_hover_color
local bodynohovercolor = skin.controls.button_body_nohover_color
if down then
-- button body
local image = skin.images["button-down.png"]
local imageheight = image:getHeight()
local scaley = height/imageheight
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x, y, 0, width, scaley)
-- button border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
elseif hover then
-- button body
local image = skin.images["button-hover.png"]
local imageheight = image:getHeight()
local scaley = height/imageheight
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x, y, 0, width, scaley)
-- button border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
else
-- button body
local image = skin.images["button-nohover.png"]
local imageheight = image:getHeight()
local scaley = height/imageheight
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x, y, 0, width, scaley)
-- button border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
end
if scrolltype == "up" then
local image = skin.images["arrow-up.png"]
local imagewidth = image:getWidth()
local imageheight = image:getHeight()
image:setFilter("nearest", "nearest")
if hover then
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
else
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 150/255)
end
love.graphics.draw(image, x + width/2 - imagewidth/2, y + height/2 - imageheight/2)
elseif scrolltype == "down" then
local image = skin.images["arrow-down.png"]
local imagewidth = image:getWidth()
local imageheight = image:getHeight()
image:setFilter("nearest", "nearest")
if hover then
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
else
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 150/255)
end
love.graphics.draw(image, x + width/2 - imagewidth/2, y + height/2 - imageheight/2)
elseif scrolltype == "left" then
local image = skin.images["arrow-left.png"]
local imagewidth = image:getWidth()
local imageheight = image:getHeight()
image:setFilter("nearest", "nearest")
if hover then
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
else
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 150/255)
end
love.graphics.draw(image, x + width/2 - imagewidth/2, y + height/2 - imageheight/2)
elseif scrolltype == "right" then
local image = skin.images["arrow-right.png"]
local imagewidth = image:getWidth()
local imageheight = image:getHeight()
image:setFilter("nearest", "nearest")
if hover then
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
else
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 150/255)
end
love.graphics.draw(image, x + width/2 - imagewidth/2, y + height/2 - imageheight/2)
end
end
--[[---------------------------------------------------------
- func: skin.DrawSlider(object)
- desc: draws the slider object
--]]---------------------------------------------------------
function skin.DrawSlider(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local slidtype = object:GetSlideType()
local baroutlinecolor = skin.controls.slider_bar_outline_color
if slidtype == "horizontal" then
love.graphics.setColor(baroutlinecolor)
love.graphics.rectangle("fill", x, y + height/2 - 5, width, 10)
love.graphics.setColor(bordercolor)
love.graphics.rectangle("fill", x + 5, y + height/2, width - 10, 1)
elseif slidtype == "vertical" then
love.graphics.setColor(baroutlinecolor)
love.graphics.rectangle("fill", x + width/2 - 5, y, 10, height)
love.graphics.setColor(bordercolor)
love.graphics.rectangle("fill", x + width/2, y + 5, 1, height - 10)
end
end
--[[---------------------------------------------------------
- func: skin.DrawSliderButton(object)
- desc: draws the slider button object
--]]---------------------------------------------------------
function skin.DrawSliderButton(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local hover = object:GetHover()
local down = object.down
local parent = object:GetParent()
local enabled = parent:GetEnabled()
local bodydowncolor = skin.controls.button_body_down_color
local bodyhovercolor = skin.controls.button_body_hover_color
local bodynohvercolor = skin.controls.button_body_nohover_color
if not enabled then
local image = skin.images["button-unclickable.png"]
local imageheight = image:getHeight()
local scaley = height/imageheight
-- button body
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x, y, 0, width, scaley)
-- button border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
return
end
if down then
-- button body
local image = skin.images["button-down.png"]
local imageheight = image:getHeight()
local scaley = height/imageheight
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x, y, 0, width, scaley)
-- button border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
elseif hover then
-- button body
local image = skin.images["button-hover.png"]
local imageheight = image:getHeight()
local scaley = height/imageheight
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x, y, 0, width, scaley)
-- button border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
else
-- button body
local image = skin.images["button-nohover.png"]
local imageheight = image:getHeight()
local scaley = height/imageheight
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x, y, 0, width, scaley)
-- button border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
end
end
--[[---------------------------------------------------------
- func: skin.DrawCheckBox(object)
- desc: draws the check box object
--]]---------------------------------------------------------
function skin.DrawCheckBox(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetBoxWidth()
local height = object:GetBoxHeight()
local checked = object:GetChecked()
local hover = object:GetHover()
local bodycolor = skin.controls.checkbox_body_color
local checkcolor = skin.controls.checkbox_check_color
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x, y, width, height)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
if checked then
love.graphics.setColor(checkcolor)
love.graphics.rectangle("fill", x + 4, y + 4, width - 8, height - 8)
end
if hover then
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x + 4, y + 4, width - 8, height - 8)
end
end
2014-07-14 02:37:37 +00:00
--[[---------------------------------------------------------
- func: skin.DrawCheckBox(object)
- desc: draws the radio button object
--]]---------------------------------------------------------
function skin.DrawRadioButton(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetBoxWidth()
local height = object:GetBoxHeight()
local checked = object:GetChecked()
local hover = object:GetHover()
local bodycolor = skin.controls.radiobutton_body_color
local checkcolor = skin.controls.radiobutton_check_color
2014-07-14 05:59:09 +00:00
local inner_border = skin.controls.radiobutton_inner_border_color
2014-07-14 02:37:37 +00:00
love.graphics.setColor(bordercolor)
2014-07-14 05:59:09 +00:00
love.graphics.setLineStyle("smooth")
love.graphics.setLineWidth(1)
love.graphics.circle("line", x + 10, y + 10, 8, 15)
2014-07-14 02:37:37 +00:00
if checked then
2014-07-14 05:59:09 +00:00
love.graphics.setColor(checkcolor)
love.graphics.circle("fill", x + 10, y + 10, 5, 360)
love.graphics.setColor(inner_border)
love.graphics.circle("line", x + 10, y + 10, 5, 360)
2014-07-14 02:37:37 +00:00
end
if hover then
love.graphics.setColor(bordercolor)
2014-07-14 05:59:09 +00:00
love.graphics.circle("line", x + 10, y + 10, 5, 360)
2014-07-14 02:37:37 +00:00
end
end
--[[---------------------------------------------------------
- func: skin.DrawCollapsibleCategory(object)
- desc: draws the collapsible category object
--]]---------------------------------------------------------
function skin.DrawCollapsibleCategory(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local text = object:GetText()
local open = object:GetOpen()
local textcolor = skin.controls.collapsiblecategory_text_color
local font = smallfont
local image = skin.images["button-nohover.png"]
2013-12-26 18:30:35 +00:00
local topbarimage = skin.images["frame-topbar.png"]
local topbarimage_width = topbarimage:getWidth()
local topbarimage_height = topbarimage:getHeight()
local topbarimage_scalex = width/topbarimage_width
local topbarimage_scaley = 25/topbarimage_height
local imageheight = image:getHeight()
local scaley = height/imageheight
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x, y, 0, width, scaley)
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
2013-12-26 18:30:35 +00:00
love.graphics.draw(topbarimage, x, y, 0, topbarimage_scalex, topbarimage_scaley)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
if open then
local icon = skin.images["collapse.png"]
icon:setFilter("nearest", "nearest")
love.graphics.draw(icon, x + width - 21, y + 5)
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 70/255)
2013-12-26 18:30:35 +00:00
skin.OutlinedRectangle(x + 1, y + 1, width - 2, 24)
else
local icon = skin.images["expand.png"]
icon:setFilter("nearest", "nearest")
love.graphics.draw(icon, x + width - 21, y + 5)
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 70/255)
2013-12-26 18:30:35 +00:00
skin.OutlinedRectangle(x + 1, y + 1, width - 2, 23)
end
2013-12-26 18:30:35 +00:00
love.graphics.setFont(font)
love.graphics.setColor(textcolor)
love.graphics.print(text, x + 5, y + 5)
end
--[[---------------------------------------------------------
- func: skin.DrawColumnList(object)
- desc: draws the column list object
--]]---------------------------------------------------------
function skin.DrawColumnList(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local bodycolor = skin.controls.columnlist_body_color
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x, y, width, height)
end
--[[---------------------------------------------------------
- func: skin.DrawColumnListHeader(object)
- desc: draws the column list header object
--]]---------------------------------------------------------
function skin.DrawColumnListHeader(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local hover = object:GetHover()
local down = object.down
local font = skin.controls.columnlistheader_text_font
local theight = font:getHeight(object.name)
local bodydowncolor = skin.controls.columnlistheader_body_down_color
local textdowncolor = skin.controls.columnlistheader_text_down_color
local bodyhovercolor = skin.controls.columnlistheader_body_hover_color
local textdowncolor = skin.controls.columnlistheader_text_hover_color
local nohovercolor = skin.controls.columnlistheader_body_nohover_color
local textnohovercolor = skin.controls.columnlistheader_text_nohover_color
local name = ParseHeaderText(object:GetName(), x, width, x + width/2, twidth)
local twidth = font:getWidth(name)
if down then
local image = skin.images["button-down.png"]
local imageheight = image:getHeight()
local scaley = height/imageheight
-- header body
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x, y, 0, width, scaley)
-- header name
love.graphics.setFont(font)
love.graphics.setColor(textdowncolor)
love.graphics.print(name, x + width/2 - twidth/2, y + height/2 - theight/2)
-- header border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
elseif hover then
local image = skin.images["button-hover.png"]
local imageheight = image:getHeight()
local scaley = height/imageheight
-- header body
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x, y, 0, width, scaley)
-- header name
love.graphics.setFont(font)
love.graphics.setColor(textdowncolor)
love.graphics.print(name, x + width/2 - twidth/2, y + height/2 - theight/2)
-- header border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
else
local image = skin.images["button-nohover.png"]
local imageheight = image:getHeight()
local scaley = height/imageheight
-- header body
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x, y, 0, width, scaley)
-- header name
love.graphics.setFont(font)
love.graphics.setColor(textnohovercolor)
love.graphics.print(name, x + width/2 - twidth/2, y + height/2 - theight/2)
-- header border
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
end
end
--[[---------------------------------------------------------
- func: skin.DrawColumnListArea(object)
- desc: draws the column list area object
--]]---------------------------------------------------------
function skin.DrawColumnListArea(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local bodycolor = skin.controls.columnlistarea_body_color
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x, y, width, height)
local cheight = 0
local columns = object:GetParent():GetChildren()
if #columns > 0 then
cheight = columns[1]:GetHeight()
end
local image = skin.images["button-nohover.png"]
local scaley = cheight/image:getHeight()
-- header body
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(image, x, y, 0, width, scaley)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, cheight, true, false, true, true)
end
--[[---------------------------------------------------------
- func: skin.DrawOverColumnListArea(object)
- desc: draws over the column list area object
--]]---------------------------------------------------------
function skin.DrawOverColumnListArea(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
end
--[[---------------------------------------------------------
- func: skin.DrawColumnListRow(object)
- desc: draws the column list row object
--]]---------------------------------------------------------
function skin.DrawColumnListRow(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local colorindex = object:GetColorIndex()
local font = object:GetFont()
local columndata = object:GetColumnData()
local textx = object:GetTextX()
local texty = object:GetTextY()
local parent = object:GetParent()
local theight = font:getHeight("a")
local hover = object:GetHover()
local selected = object:GetSelected()
local body1color = skin.controls.columnlistrow_body1_color
local body2color = skin.controls.columnlistrow_body2_color
local bodyhovercolor = skin.controls.columnlistrow_body_hover_color
local bodyselectedcolor = skin.controls.columnlistrow_body_selected_color
local textcolor = skin.controls.columnlistrow_text_color
local texthovercolor = skin.controls.columnlistrow_text_hover_color
local textselectedcolor = skin.controls.columnlistrow_text_selected_color
object:SetTextPos(5, height/2 - theight/2)
if selected then
love.graphics.setColor(bodyselectedcolor)
love.graphics.rectangle("fill", x, y, width, height)
elseif hover then
love.graphics.setColor(bodyhovercolor)
love.graphics.rectangle("fill", x, y, width, height)
elseif colorindex == 1 then
love.graphics.setColor(body1color)
2013-12-26 18:30:35 +00:00
love.graphics.rectangle("fill", x, y, width, height)
else
love.graphics.setColor(body2color)
love.graphics.rectangle("fill", x, y, width, height)
end
love.graphics.setFont(font)
if selected then
love.graphics.setColor(textselectedcolor)
elseif hover then
love.graphics.setColor(texthovercolor)
else
love.graphics.setColor(textcolor)
end
for k, v in ipairs(columndata) do
local rwidth = parent.parent:GetColumnWidth(k)
if rwidth then
local text = ParseRowText(v, x, rwidth, x, textx)
love.graphics.print(text, x + textx, y + texty)
x = x + parent.parent.children[k]:GetWidth()
else
break
end
end
end
--[[---------------------------------------------------------
- func: skin.DrawModalBackground(object)
- desc: draws the modal background object
--]]---------------------------------------------------------
function skin.DrawModalBackground(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local bodycolor = skin.controls.modalbackground_body_color
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x, y, width, height)
end
--[[---------------------------------------------------------
- func: skin.DrawLineNumbersPanel(object)
- desc: draws the line numbers panel object
--]]---------------------------------------------------------
function skin.DrawLineNumbersPanel(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local offsety = object:GetOffsetY()
local parent = object:GetParent()
local lines = parent:GetLines()
local font = parent:GetFont()
local theight = font:getHeight("a")
local textcolor = skin.controls.linenumberspanel_text_color
local bodycolor = skin.controls.linenumberspanel_body_color
object:SetWidth(10 + font:getWidth(#lines))
love.graphics.setFont(font)
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x, y, width, height)
love.graphics.setColor(bordercolor)
--skin.OutlinedRectangle(x, y, width, height, true, true, true, false)
local startline = math.ceil(offsety / theight)
if startline < 1 then
startline = 1
end
local endline = math.ceil(startline + (height / theight)) + 1
if endline > #lines then
endline = #lines
end
for i=startline, endline do
love.graphics.setColor(textcolor)
love.graphics.print(i, x + 5, (y + (theight * (i - 1))) - offsety)
end
end
--[[---------------------------------------------------------
- func: skin.DrawNumberBox(object)
- desc: draws the numberbox object
--]]---------------------------------------------------------
function skin.DrawNumberBox(object)
end
--[[---------------------------------------------------------
- func: skin.DrawGrid(object)
- desc: draws the grid object
--]]---------------------------------------------------------
function skin.DrawGrid(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
2013-12-26 18:30:35 +00:00
local bodycolor = skin.controls.grid_body_color
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
local cx = x
local cy = y
local cw = object.cellwidth + (object.cellpadding * 2)
local ch = object.cellheight + (object.cellpadding * 2)
for i=1, object.rows do
for n=1, object.columns do
local ovt = false
local ovl = false
if i > 1 then
ovt = true
end
if n > 1 then
ovl = true
end
2013-12-26 18:30:35 +00:00
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", cx, cy, cw, ch)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(cx, cy, cw, ch, ovt, false, ovl, false)
cx = cx + cw
end
cx = x
cy = cy + ch
end
end
2013-11-25 13:06:41 +00:00
--[[---------------------------------------------------------
- func: skin.DrawForm(object)
- desc: draws the form object
--]]---------------------------------------------------------
function skin.DrawForm(object)
2013-12-26 18:30:35 +00:00
local skin = object:GetSkin()
2013-11-25 13:06:41 +00:00
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local topmargin = object.topmargin
local name = object.name
local font = skin.controls.form_text_font
local textcolor = skin.controls.form_text_color
local twidth = font:getWidth(name)
love.graphics.setFont(font)
love.graphics.setColor(textcolor)
love.graphics.print(name, x + 7, y)
love.graphics.setColor(bordercolor)
love.graphics.rectangle("fill", x, y + 7, 5, 1)
love.graphics.rectangle("fill", x + twidth + 9, y + 7, width - (twidth + 9), 1)
love.graphics.rectangle("fill", x, y + height, width, 1)
love.graphics.rectangle("fill", x, y + 7, 1, height - 7)
love.graphics.rectangle("fill", x + width - 1, y + 7, 1, height - 7)
end
2013-12-26 18:30:35 +00:00
--[[---------------------------------------------------------
- func: skin.DrawMenu(object)
- desc: draws the menu object
--]]---------------------------------------------------------
function skin.DrawMenu(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local bodycolor = skin.controls.menu_body_color
love.graphics.setColor(bodycolor)
love.graphics.rectangle("fill", x, y, width, height)
love.graphics.setColor(bordercolor)
skin.OutlinedRectangle(x, y, width, height)
end
--[[---------------------------------------------------------
- func: skin.DrawMenuOption(object)
- desc: draws the menuoption object
--]]---------------------------------------------------------
function skin.DrawMenuOption(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
local hover = object:GetHover()
local text = object:GetText()
local icon = object:GetIcon()
local option_type = object.option_type
local body_hover_color = skin.controls.menuoption_body_hover_color
local text_hover_color = skin.controls.menuoption_text_hover_color
local text_color = skin.controls.menuoption_text_color
local twidth = smallfont:getWidth(text)
if option_type == "divider" then
2018-04-15 01:23:26 +00:00
love.graphics.setColor(200/255, 200/255, 200/255, 255/255)
2013-12-26 18:30:35 +00:00
love.graphics.rectangle("fill", x + 4, y + 2, width - 8, 1)
object.contentheight = 10
else
love.graphics.setFont(smallfont)
if hover then
love.graphics.setColor(body_hover_color)
love.graphics.rectangle("fill", x + 2, y + 2, width - 4, height - 4)
love.graphics.setColor(text_hover_color)
love.graphics.print(text, x + 26, y + 5)
else
love.graphics.setColor(text_color)
love.graphics.print(text, x + 26, y + 5)
end
if icon then
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
2013-12-26 18:30:35 +00:00
love.graphics.draw(icon, x + 5, y + 5)
end
object.contentwidth = twidth + 31
object.contentheight = 25
end
end
2014-06-29 05:16:25 +00:00
function skin.DrawTree(object)
local skin = object:GetSkin()
local x = object:GetX()
local y = object:GetY()
local width = object:GetWidth()
local height = object:GetHeight()
2018-04-15 01:23:26 +00:00
love.graphics.setColor(200/255, 200/255, 200/255, 255/255)
2014-06-29 05:16:25 +00:00
love.graphics.rectangle("fill", x, y, width, height)
end
function skin.DrawTreeNode(object)
local icon = object.icon
local buttonimage = skin.images["tree-node-button-open.png"]
local width = 0
local x = object.x
local leftpadding = 15 * object.level
if object.level > 0 then
leftpadding = leftpadding + buttonimage:getWidth() + 5
else
leftpadding = buttonimage:getWidth() + 5
end
local iconwidth
2014-06-29 05:16:25 +00:00
if icon then
iconwidth = icon:getWidth()
end
local twidth = loveframes.basicfont:getWidth(object.text)
local theight = loveframes.basicfont:getHeight(object.text)
if object.tree.selectednode == object then
2018-04-15 01:23:26 +00:00
love.graphics.setColor(102/255, 140/255, 255/255, 255/255)
love.graphics.rectangle("fill", x + leftpadding + 2 + iconwidth, object.y + 2, twidth, theight)
2014-06-29 05:16:25 +00:00
end
width = width + iconwidth + loveframes.basicfont:getWidth(object.text) + leftpadding
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
love.graphics.draw(icon, x + leftpadding, object.y)
love.graphics.setFont(loveframes.basicfont)
2018-04-15 01:23:26 +00:00
love.graphics.setColor(0, 0, 0, 255/255)
love.graphics.print(object.text, x + leftpadding + 2 + iconwidth, object.y + 2)
2014-06-29 05:16:25 +00:00
object:SetWidth(width + 5)
end
function skin.DrawTreeNodeButton(object)
local leftpadding = 15 * object.parent.level
local image
if object.parent.open then
image = skin.images["tree-node-button-close.png"]
else
image = skin.images["tree-node-button-open.png"]
end
image:setFilter("nearest", "nearest")
2018-04-15 01:23:26 +00:00
love.graphics.setColor(255/255, 255/255, 255/255, 255/255)
2014-06-29 05:16:25 +00:00
love.graphics.draw(image, object.x, object.y)
object:SetPos(2 + leftpadding, 3)
object:SetSize(image:getWidth(), image:getHeight())
end
-- register the skin
2014-07-14 02:37:37 +00:00
loveframes.skins.Register(skin)