diff --git a/changelog.txt b/changelog.txt index 118f409..9c73d9a 100644 --- a/changelog.txt +++ b/changelog.txt @@ -1,3 +1,17 @@ +================================================ +Version 0.9.5.2 - Alpha (February 24 - 2013) +================================================ +[ADDED] a new slider method: SetEnabled(bool) +[ADDED] a new slider method: GetEnabled() + +[FIXED] a resizing/layout issue with the columnlist object +[FIXED] base:GetChildren being declared twice and base:GetInternals never being declared + +[CHANGED] major performance improvements for the default skins Blue and Orange + +[REMOVED] the "Blue (basic)" skin +[REMOVED] the "Orange (basic)" skin + ================================================ Version 0.9.5.1 - Alpha (February 17 - 2013) ================================================ diff --git a/init.lua b/init.lua index 0ff033f..eaf4f55 100644 --- a/init.lua +++ b/init.lua @@ -9,7 +9,7 @@ loveframes = {} -- library info loveframes.info = {} loveframes.info.author = "Kenny Shields" -loveframes.info.version = "0.9.5.1" +loveframes.info.version = "0.9.5.2" loveframes.info.stage = "Alpha" -- library configurations diff --git a/objects/base.lua b/objects/base.lua index 6dd18d8..8560e78 100644 --- a/objects/base.lua +++ b/objects/base.lua @@ -39,12 +39,13 @@ function newobject:update(dt) end local children = self.children + local internals = self.internals for k, v in ipairs(children) do v:update(dt) end - for k, v in ipairs(self.internals) do + for k, v in ipairs(internals) do v:update(dt) end @@ -64,6 +65,7 @@ function newobject:draw() end local children = self.children + local internals = self.internals -- set the object's draw order self:SetDrawOrder() @@ -72,7 +74,7 @@ function newobject:draw() v:draw() end - for k, v in ipairs(self.internals) do + for k, v in ipairs(internals) do v:draw() end @@ -820,7 +822,7 @@ end - func: GetInternals() - desc: returns the object's internals --]]--------------------------------------------------------- -function newobject:GetChildren() +function newobject:GetInternals() local internals = self.internals diff --git a/objects/columnlist.lua b/objects/columnlist.lua index 89c3061..6e22b54 100644 --- a/objects/columnlist.lua +++ b/objects/columnlist.lua @@ -296,9 +296,12 @@ function newobject:SetSize(width, height) self.width = width self.height = height + self:AdjustColumns() list:SetSize(width, height) list:SetPos(0, 0) + list:CalculateSize() + list:RedoLayout() end @@ -312,9 +315,12 @@ function newobject:SetWidth(width) local list = internals[1] self.width = width + self:AdjustColumns() list:SetSize(width) list:SetPos(0, 0) + list:CalculateSize() + list:RedoLayout() end @@ -328,9 +334,12 @@ function newobject:SetHeight(height) local list = internals[1] self.height = height + self:AdjustColumns() list:SetSize(height) list:SetPos(0, 0) + list:CalculateSize() + list:RedoLayout() end diff --git a/objects/list.lua b/objects/list.lua index 0b475ca..a251a5e 100644 --- a/objects/list.lua +++ b/objects/list.lua @@ -96,7 +96,6 @@ function newobject:update(dt) if v.lastheight ~= v.height then self:CalculateSize() self:RedoLayout() - print("!") end end end diff --git a/objects/slider.lua b/objects/slider.lua index 223c694..4fb8c3f 100644 --- a/objects/slider.lua +++ b/objects/slider.lua @@ -24,6 +24,7 @@ function newobject:initialize() self.scrollincrease = 1 self.scrolldecrease = 1 self.scrollable = true + self.enabled = true self.internal = false self.internals = {} self.OnValueChanged = nil @@ -159,6 +160,12 @@ function newobject:mousepressed(x, y, button) if not visible then return end + + local enabled = self.enabled + + if not enabled then + return + end local internals = self.internals local hover = self.hover @@ -202,7 +209,6 @@ function newobject:mousepressed(x, y, button) local newvalue = value - decrease self:SetValue(newvalue) end - for k, v in ipairs(internals) do v:mousepressed(x, y, button) @@ -492,4 +498,24 @@ function newobject:GetScrollDecrease() return self.scrolldecrease +end + +--[[--------------------------------------------------------- + - func: SetEnabled(bool) + - desc: sets whether or not the object is enabled +--]]--------------------------------------------------------- +function newobject:SetEnabled(bool) + + self.enabled = bool + +end + +--[[--------------------------------------------------------- + - func: GetEnabled() + - desc: gets whether or not the object is enabled +--]]--------------------------------------------------------- +function newobject:GetEnabled() + + return self.enabled + end \ No newline at end of file diff --git a/objects/tabs.lua b/objects/tabs.lua index 1c1593d..02d3c3b 100644 --- a/objects/tabs.lua +++ b/objects/tabs.lua @@ -303,9 +303,9 @@ function newobject:AddTab(name, object, tip, image, onopened, onclosed) self:AddScrollButtons() if autosize and not retainsize then - object:SetSize(self.width - padding*2, (self.height - tabheight) - padding*2) + object:SetSize(self.width - padding * 2, (self.height - tabheight) - padding * 2) end - + end --[[--------------------------------------------------------- diff --git a/objects/textinput.lua b/objects/textinput.lua index 1daac8e..b196b4c 100644 --- a/objects/textinput.lua +++ b/objects/textinput.lua @@ -10,9 +10,8 @@ local newobject = loveframes.NewObject("textinput", "loveframes_object_textinput - func: initialize() - desc: initializes the object --]]--------------------------------------------------------- - function newobject:initialize() - + self.type = "textinput" self.keydown = "none" self.tabreplacement = " " @@ -732,9 +731,8 @@ function newobject:RunKey(key, unicode) curline = lines[line] text = curline if not multiline then - local twidth = font:getWidth(text) - local cwidth = font:getWidth(ckey) - + local twidth = font:getWidth(text) + local cwidth = font:getWidth(ckey) -- swidth - 1 is for the "-" character if (twidth + textoffsetx) >= (swidth - 1) then self.offsetx = self.offsetx + cwidth diff --git a/skins/Blue (basic)/images/arrow-down.png b/skins/Blue (basic)/images/arrow-down.png deleted file mode 100644 index 37d8058..0000000 Binary files a/skins/Blue (basic)/images/arrow-down.png and /dev/null differ diff --git a/skins/Blue (basic)/images/arrow-left.png b/skins/Blue (basic)/images/arrow-left.png deleted file mode 100644 index c5045dd..0000000 Binary files a/skins/Blue (basic)/images/arrow-left.png and /dev/null differ diff --git a/skins/Blue (basic)/images/arrow-right.png b/skins/Blue (basic)/images/arrow-right.png deleted file mode 100644 index 89b4818..0000000 Binary files a/skins/Blue (basic)/images/arrow-right.png and /dev/null differ diff --git a/skins/Blue (basic)/images/arrow-up.png b/skins/Blue (basic)/images/arrow-up.png deleted file mode 100644 index 475d5db..0000000 Binary files a/skins/Blue (basic)/images/arrow-up.png and /dev/null differ diff --git a/skins/Blue (basic)/images/close.png b/skins/Blue (basic)/images/close.png deleted file mode 100644 index 0825add..0000000 Binary files a/skins/Blue (basic)/images/close.png and /dev/null differ diff --git a/skins/Blue (basic)/images/multichoice-arrow.png b/skins/Blue (basic)/images/multichoice-arrow.png deleted file mode 100644 index 165121c..0000000 Binary files a/skins/Blue (basic)/images/multichoice-arrow.png and /dev/null differ diff --git a/skins/Blue (basic)/skin.lua b/skins/Blue (basic)/skin.lua deleted file mode 100644 index 0b61e45..0000000 --- a/skins/Blue (basic)/skin.lua +++ /dev/null @@ -1,1471 +0,0 @@ ---[[------------------------------------------------ - -- Love Frames - A GUI library for LOVE -- - -- Copyright (c) 2013 Kenny Shields -- ---]]------------------------------------------------ - --- skin table -local skin = {} - --- skin info (you always need this in a skin) -skin.name = "Blue (basic)" -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 = {232, 232, 232, 255} -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_body_nonclickable_color = {220, 220, 220, 255} -skin.controls.button_text_nonclickable_color = {0, 0, 0, 100} -skin.controls.button_text_font = smallfont - --- image button -skin.controls.imagebutton_text_down_color = {255, 255, 255, 255} -skin.controls.imagebutton_text_nohover_color = {255, 255, 255, 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, 255} -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} - --- text input -skin.controls.textinput_border_color = bordercolor -skin.controls.textinput_body_color = {240, 240, 240, 255} -skin.controls.textinput_indicator_color = {0, 0, 0, 255} -skin.controls.textinput_text_normal_color = {0, 0, 0, 255} -skin.controls.textinput_text_selected_color = {255, 255, 255, 255} -skin.controls.textinput_highlight_bar_color = {51, 204, 255, 255} - --- slider -skin.controls.slider_bar_color = bordercolor -skin.controls.slider_bar_outline_color = {220, 220, 220, 255} - --- checkbox -skin.controls.checkbox_border_color = bordercolor -skin.controls.checkbox_body_color = {255, 255, 255, 255} -skin.controls.checkbox_check_color = {128, 204, 255, 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} -skin.controls.columnlistrow_text_color = {100, 100, 100, 255} - --- modalbackground -skin.controls.modalbackground_body_color = {255, 255, 255, 100} - --- linenumberspanel -skin.controls.linenumberspanel_border_color = bordercolor -skin.controls.linenumberspanel_text_color = {100, 100, 100, 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 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 x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local hover = object:GetHover() - local name = object:GetName() - local bodycolor = skin.controls.frame_body_color - local topcolor = skin.controls.frame_top_color - local bordercolor = skin.controls.frame_border_color - local namecolor = skin.controls.frame_name_color - local font = skin.controls.frame_name_font - - -- frame body - love.graphics.setColor(bodycolor) - love.graphics.rectangle("fill", x, y, width, height) - - -- frame top bar - love.graphics.setColor(topcolor) - love.graphics.rectangle("fill", x, y, width, 25) - love.graphics.setColor(bordercolor) - skin.OutlinedRectangle(x, y + 25, width, 1) - - -- frame name section - love.graphics.setFont(font) - love.graphics.setColor(namecolor) - love.graphics.print(name, x + 5, y + 5) - - -- frame border - love.graphics.setColor(bordercolor) - skin.OutlinedRectangle(x, y, width, height) - -end - ---[[--------------------------------------------------------- - - func: DrawButton(object) - - desc: draws the button object ---]]--------------------------------------------------------- -function skin.DrawButton(object) - - 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.down - local enabled = object:GetEnabled() - local clickable = object:GetClickable() - local bodydowncolor = skin.controls.button_body_down_color - local textdowncolor = skin.controls.button_text_down_color - local borderdowncolor = skin.controls.button_border_down_color - local bodyhovercolor = skin.controls.button_body_hover_color - local texthovercolor = skin.controls.button_text_hover_color - local borderhovercolor = skin.controls.button_border_down_color - local bodynohvercolor = skin.controls.button_body_nohover_color - local textnohovercolor = skin.controls.button_text_nohover_color - local bordernohovercolor = skin.controls.button_border_down_color - local bodynonclickablecolor = skin.controls.button_body_nonclickable_color - local textnonclickablecolor = skin.controls.button_text_nonclickable_color - - if not enabled or not clickable then - -- button body - love.graphics.setColor(bodynonclickablecolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- 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(bordernohovercolor) - skin.OutlinedRectangle(x, y, width, height) - return - end - - if down then - -- button body - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- 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(borderdowncolor) - skin.OutlinedRectangle(x, y, width, height) - elseif hover then - -- button body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- 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(borderhovercolor) - skin.OutlinedRectangle(x, y, width, height) - else - -- button body - love.graphics.setColor(bodynohvercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- 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(bordernohovercolor) - skin.OutlinedRectangle(x, y, width, height) - end - -end - ---[[--------------------------------------------------------- - - func: DrawCloseButton(object) - - desc: draws the close button object ---]]--------------------------------------------------------- -function skin.DrawCloseButton(object) - - local x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local parentwidth = object.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 - - object:SetPos(parentwidth - 20, 4) - object:SetSize(16, 16) - -end - ---[[--------------------------------------------------------- - - func: DrawImage(object) - - desc: draws the image object ---]]--------------------------------------------------------- -function skin.DrawImage(object) - - 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 - - if color then - love.graphics.setColor(color) - love.graphics.draw(image, x, y, orientation, scalex, scaley, offsetx, offsety, shearx, sheary) - else - love.graphics.setColor(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 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() - 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 - - if down then - if image then - love.graphics.setColor(255, 255, 255, 255) - love.graphics.draw(image, x + 1, y + 1) - end - love.graphics.setFont(font) - love.graphics.setColor(0, 0, 0, 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(255, 255, 255, 255) - love.graphics.draw(image, x, y) - end - love.graphics.setFont(font) - love.graphics.setColor(0, 0, 0, 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(255, 255, 255, 255) - love.graphics.draw(image, x, y) - end - love.graphics.setFont(font) - love.graphics.setColor(0, 0, 0, 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 - -end - ---[[--------------------------------------------------------- - - func: DrawProgressBar(object) - - desc: draws the progress bar object ---]]--------------------------------------------------------- -function skin.DrawProgressBar(object) - - 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 barwidth = object:GetBarWidth() - local font = skin.controls.progressbar_text_font - local text = value .. "/" ..max - 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 bordercolor = skin.controls.progressbar_border_color - - -- progress bar body - love.graphics.setColor(bodycolor) - love.graphics.rectangle("fill", x, y, width, height) - love.graphics.setColor(barcolor) - love.graphics.rectangle("fill", x, y, barwidth, height) - 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) - -end - ---[[--------------------------------------------------------- - - func: DrawScrollArea(object) - - desc: draws the scroll area object ---]]--------------------------------------------------------- -function skin.DrawScrollArea(object) - - 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 - local bordercolor = skin.controls.scrollarea_border_color - - love.graphics.setColor(bodycolor) - love.graphics.rectangle("fill", x, y, width, height) - love.graphics.setColor(bordercolor) - - if bartype == "vertical" then - skin.OutlinedRectangle(x, y, width, height, true, true) - elseif bartype == "horizontal" then - 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 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 borderdowncolor = skin.controls.scrollbar_border_down_color - local bodyhovercolor = skin.controls.scrollbar_body_hover_color - local borderhovercolor = skin.controls.scrollbar_border_hover_color - local bodynohvercolor = skin.controls.scrollbar_body_nohover_color - local bordernohovercolor = skin.controls.scrollbar_border_nohover_color - - if dragging then - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - love.graphics.setColor(borderdowncolor) - skin.OutlinedRectangle(x, y, width, height) - elseif hover then - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - love.graphics.setColor(borderhovercolor) - skin.OutlinedRectangle(x, y, width, height) - else - love.graphics.setColor(bodynohvercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - love.graphics.setColor(bordernohovercolor) - skin.OutlinedRectangle(x, y, width, height) - end - - if bartype == "vertical" then - love.graphics.setColor(bordernohovercolor) - love.graphics.rectangle("fill", x + 3, y + height/2 - 3, width - 6, 1) - love.graphics.rectangle("fill", x + 3, y + height/2, width - 6, 1) - love.graphics.rectangle("fill", x + 3, y + height/2 + 3, width - 6, 1) - else - love.graphics.setColor(bordernohovercolor) - love.graphics.rectangle("fill", x + width/2 - 3, y + 3, 1, height - 6) - love.graphics.rectangle("fill", x + width/2, y + 3, 1, height - 6) - love.graphics.rectangle("fill", x + width/2 + 3, y + 3, 1, height - 6) - end - -end - ---[[--------------------------------------------------------- - - func: DrawScrollBody(object) - - desc: draws the scroll body object ---]]--------------------------------------------------------- -function skin.DrawScrollBody(object) - - 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 x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local bodycolor = skin.controls.panel_body_color - local bordercolor = skin.controls.panel_border_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: DrawList(object) - - desc: draws the list object ---]]--------------------------------------------------------- -function skin.DrawList(object) - - 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 it's children ---]]--------------------------------------------------------- -function skin.DrawOverList(object) - - local x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local bordrcolor = skin.controls.list_border_color - - love.graphics.setColor(bordrcolor) - skin.OutlinedRectangle(x, y, width, height) - -end - ---[[--------------------------------------------------------- - - func: DrawTabPanel(object) - - desc: draws the tab panel object ---]]--------------------------------------------------------- -function skin.DrawTabPanel(object) - - 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 - local bordercolor = skin.controls.tabpanel_border_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: DrawTabButton(object) - - desc: draws the tab button object ---]]--------------------------------------------------------- -function skin.DrawTabButton(object) - - 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 bordercolor = skin.controls.tabpanel_border_color - local bodyhovercolor = skin.controls.button_body_hover_color - local texthovercolor = skin.controls.button_text_hover_color - local bodynohovercolor = skin.controls.button_body_nohover_color - local textnohovercolor = skin.controls.button_text_nohover_color - - if image then - imagewidth = image:getWidth() - imageheight = image:getHeight() - object.width = imagewidth + 15 + twidth - if imageheight > theight then - parent:SetTabHeight(imageheight + 5) - object.height = imageheight + 5 - else - parent:SetTabHeight(theight + 5) - object.height = theight + 5 - end - else - object.width = 10 + twidth - parent:SetTabHeight(theight + 5) - object.height = theight + 5 - end - - local width = object:GetWidth() - local height = object:GetHeight() - - if tabnumber == ptabnumber then - -- button body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x, y, width, height) - -- button border - love.graphics.setColor(bordercolor) - skin.OutlinedRectangle(x, y, width, height) - if image then - image:setFilter("nearest", "nearest") - -- button image - love.graphics.setColor(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 - love.graphics.setColor(bodynohovercolor) - love.graphics.rectangle("fill", x, y, width, height) - -- button border - love.graphics.setColor(bordercolor) - skin.OutlinedRectangle(x, y, width, height) - if image then - image:setFilter("nearest", "nearest") - -- button image - love.graphics.setColor(255, 255, 255, 150) - 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 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 - local bordercolor = skin.controls.multichoice_border_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 - - love.graphics.setColor(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 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 x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local bordercolor = skin.controls.multichoicelist_border_color - - 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 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 x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local bodycolor = skin.controls.tooltip_body_color - local bordercolor = skin.controls.tooltip_border_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 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 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() - local theight = font:getHeight("a") - local bodycolor = skin.controls.textinput_body_color - local textnormalcolor = skin.controls.textinput_text_normal_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 - local twidth = font:getWidth(lines[i]) - love.graphics.setColor(highlightbarcolor) - love.graphics.rectangle("fill", textx, texty + bary, twidth, theight) - bary = bary + theight - end - else - local twidth = font:getWidth(text) - 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) - else - love.graphics.setColor(textnormalcolor) - end - - if multiline then - for i=1, #lines do - love.graphics.print(lines[i], textx, texty + theight * i - theight) - end - else - love.graphics.print(lines[1], textx, texty) - end - -end - ---[[--------------------------------------------------------- - - func: DrawOverTextInput(object) - - desc: draws over the text input object ---]]--------------------------------------------------------- -function skin.DrawOverTextInput(object) - - local x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local bordercolor = skin.controls.textinput_border_color - - 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 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 borderdowncolor = skin.controls.button_border_down_color - local bodyhovercolor = skin.controls.button_body_hover_color - local borderhovercolor = skin.controls.button_border_hover_color - local bodynohovercolor = skin.controls.button_body_nohover_color - local bordernohovercolor = skin.controls.button_border_nohover_color - - if down then - -- button body - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- button border - love.graphics.setColor(borderdowncolor) - skin.OutlinedRectangle(x, y, width, height) - elseif hover then - -- button body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- button border - love.graphics.setColor(borderhovercolor) - skin.OutlinedRectangle(x, y, width, height) - else - -- button body - love.graphics.setColor(bodynohovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- button border - love.graphics.setColor(bordernohovercolor) - skin.OutlinedRectangle(x, y, width, height) - end - - if scrolltype == "up" then - local image = skin.images["arrow-up.png"] - image:setFilter("nearest", "nearest") - if hover then - love.graphics.setColor(255, 255, 255, 255) - else - love.graphics.setColor(255, 255, 255, 150) - end - love.graphics.draw(image, x + width/2 - image:getWidth()/2, y + height/2 - image:getHeight()/2) - elseif scrolltype == "down" then - local image = skin.images["arrow-down.png"] - image:setFilter("nearest", "nearest") - if hover then - love.graphics.setColor(255, 255, 255, 255) - else - love.graphics.setColor(255, 255, 255, 150) - end - love.graphics.draw(image, x + width/2 - image:getWidth()/2, y + height/2 - image:getHeight()/2) - elseif scrolltype == "left" then - local image = skin.images["arrow-left.png"] - image:setFilter("nearest", "nearest") - if hover then - love.graphics.setColor(255, 255, 255, 255) - else - love.graphics.setColor(255, 255, 255, 150) - end - love.graphics.draw(image, x + width/2 - image:getWidth()/2, y + height/2 - image:getHeight()/2) - elseif scrolltype == "right" then - local image = skin.images["arrow-right.png"] - image:setFilter("nearest", "nearest") - if hover then - love.graphics.setColor(255, 255, 255, 255) - else - love.graphics.setColor(255, 255, 255, 150) - end - love.graphics.draw(image, x + width/2 - image:getWidth()/2, y + height/2 - image:getHeight()/2) - end - -end - ---[[--------------------------------------------------------- - - func: skin.DrawSlider(object) - - desc: draws the slider object ---]]--------------------------------------------------------- -function skin.DrawSlider(object) - - 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 - local barcolor = skin.controls.slider_bar_color - - if slidtype == "horizontal" then - love.graphics.setColor(baroutlinecolor) - love.graphics.rectangle("fill", x, y + height/2 - 5, width, 10) - love.graphics.setColor(barcolor) - 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(barcolor) - 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 x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local hover = object:GetHover() - local down = object.down - local bodydowncolor = skin.controls.button_body_down_color - local borderdowncolor = skin.controls.button_border_down_color - local bodyhovercolor = skin.controls.button_body_hover_color - local borderhovercolor = skin.controls.button_border_down_color - local bodynohvercolor = skin.controls.button_body_nohover_color - local bordernohovercolor = skin.controls.button_border_down_color - - if down then - -- button body - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- button border - love.graphics.setColor(borderdowncolor) - skin.OutlinedRectangle(x, y, width, height) - elseif hover then - -- button body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- button border - love.graphics.setColor(borderhovercolor) - skin.OutlinedRectangle(x, y, width, height) - else - -- button body - love.graphics.setColor(bodynohvercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- button border - love.graphics.setColor(bordernohovercolor) - skin.OutlinedRectangle(x, y, width, height) - end - -end - ---[[--------------------------------------------------------- - - func: skin.DrawCheckBox(object) - - desc: draws the check box object ---]]--------------------------------------------------------- -function skin.DrawCheckBox(object) - - 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 bordercolor = skin.controls.checkbox_border_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 - ---[[--------------------------------------------------------- - - func: skin.DrawCollapsibleCategory(object) - - desc: draws the collapsible category object ---]]--------------------------------------------------------- -function skin.DrawCollapsibleCategory(object) - - local x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local text = object:GetText() - local bodycolor = skin.controls.collapsiblecategory_body_color - local textcolor = skin.controls.collapsiblecategory_text_color - local bordercolor = skin.controls.collapsiblecategory_border_color - local font = smallfont - - love.graphics.setColor(bodycolor) - love.graphics.rectangle("fill", x, y, width, height) - - love.graphics.setFont(font) - love.graphics.setColor(textcolor) - love.graphics.print(text, x + 5, y + 5) - - love.graphics.setColor(bordercolor) - skin.OutlinedRectangle(x, y, width, height) - -end - ---[[--------------------------------------------------------- - - func: skin.DrawColumnList(object) - - desc: draws the column list object ---]]--------------------------------------------------------- -function skin.DrawColumnList(object) - - 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 x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local hover = object:GetHover() - local name = object:GetName() - local down = object.down - local font = skin.controls.columnlistheader_text_font - local twidth = font:getWidth(object.name) - local theight = font:getHeight(object.name) - local bodydowncolor = skin.controls.columnlistheader_body_down_color - local textdowncolor = skin.controls.columnlistheader_text_down_color - local borderdowncolor = skin.controls.columnlistheader_border_down_color - local bodyhovercolor = skin.controls.columnlistheader_body_hover_color - local textdowncolor = skin.controls.columnlistheader_text_hover_color - local borderdowncolor = skin.controls.columnlistheader_border_down_color - local nohovercolor = skin.controls.columnlistheader_body_nohover_color - local textnohovercolor = skin.controls.columnlistheader_text_nohover_color - local bordernohovercolor = skin.controls.columnlistheader_border_down_color - - if down then - -- header body - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 1, height - 2) - -- 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(borderdowncolor) - skin.OutlinedRectangle(x, y, width, height, false, false, false, true) - elseif hover then - -- header body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 1, height - 2) - -- 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(borderdowncolor) - skin.OutlinedRectangle(x, y, width, height, false, false, false, true) - else - -- header body - love.graphics.setColor(nohovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 1, height - 2) - -- 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(bordernohovercolor) - skin.OutlinedRectangle(x, y, width, height, false, false, false, true) - end - -end - ---[[--------------------------------------------------------- - - func: skin.DrawColumnListArea(object) - - desc: draws the column list area object ---]]--------------------------------------------------------- -function skin.DrawColumnListArea(object) - - 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) - -end - ---[[--------------------------------------------------------- - - func: skin.DrawOverColumnListArea(object) - - desc: draws over the column list area object ---]]--------------------------------------------------------- -function skin.DrawOverColumnListArea(object) - - local x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local bordercolor = skin.controls.columnlist_border_color - - 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 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 cwidth, cheight = parent:GetParent():GetColumnSize() - local theight = font:getHeight("a") - local body1color = skin.controls.columnlistrow_body1_color - local border1color = skin.controls.columnlistrow_border1_color - local body2color = skin.controls.columnlistrow_body2_color - local border2color = skin.controls.columnlistrow_border2_color - local textcolor = skin.controls.columnlistrow_text_color - - object:SetTextPos(5, height/2 - theight/2) - - if colorindex == 1 then - love.graphics.setColor(body1color) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - love.graphics.setColor(border1color) - skin.OutlinedRectangle(x, y, width, height, true, false, true, true) - else - love.graphics.setColor(body2color) - love.graphics.rectangle("fill", x, y, width, height) - love.graphics.setColor(border2color) - skin.OutlinedRectangle(x, y, width, height, true, false, true, true) - end - - for k, v in ipairs(columndata) do - love.graphics.setFont(font) - love.graphics.setColor(textcolor) - love.graphics.print(v, x + textx, y + texty) - x = x + cwidth - end - -end - ---[[--------------------------------------------------------- - - func: skin.DrawModalBackground(object) - - desc: draws the modal background object ---]]--------------------------------------------------------- -function skin.DrawModalBackground(object) - - 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 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 bordercolor = skin.controls.linenumberspanel_border_color - local textcolor = skin.controls.linenumberspanel_text_color - local mody = y - - object:SetWidth(10 + font:getWidth(#lines)) - love.graphics.setFont(font) - - love.graphics.setColor(200, 200, 200, 255) - love.graphics.rectangle("fill", x, y, width, height) - - love.graphics.setColor(bordercolor) - skin.OutlinedRectangle(x, y, width, height, true, true, true, false) - - for i=1, #lines do - love.graphics.setColor(textcolor) - love.graphics.print(i, object.x + 5, mody - offsety) - mody = mody + theight - end - -end - ---[[--------------------------------------------------------- - - func: skin.DrawNumberBox(object) - - desc: draws the numberbox object ---]]--------------------------------------------------------- -function skin.DrawNumberBox(object) - -end - --- register the skin -loveframes.skins.Register(skin) \ No newline at end of file diff --git a/skins/Blue/images/gradients/button-down.png b/skins/Blue/images/gradients/button-down.png new file mode 100644 index 0000000..a3838c8 Binary files /dev/null and b/skins/Blue/images/gradients/button-down.png differ diff --git a/skins/Blue/images/gradients/button-hover.png b/skins/Blue/images/gradients/button-hover.png new file mode 100644 index 0000000..13f51e0 Binary files /dev/null and b/skins/Blue/images/gradients/button-hover.png differ diff --git a/skins/Blue/images/gradients/button-nohover.png b/skins/Blue/images/gradients/button-nohover.png new file mode 100644 index 0000000..39ff24a Binary files /dev/null and b/skins/Blue/images/gradients/button-nohover.png differ diff --git a/skins/Blue/images/gradients/button-unclickable.png b/skins/Blue/images/gradients/button-unclickable.png new file mode 100644 index 0000000..ef8bf7d Binary files /dev/null and b/skins/Blue/images/gradients/button-unclickable.png differ diff --git a/skins/Blue/images/gradients/frame-topbar.png b/skins/Blue/images/gradients/frame-topbar.png new file mode 100644 index 0000000..f5c3a8c Binary files /dev/null and b/skins/Blue/images/gradients/frame-topbar.png differ diff --git a/skins/Blue/images/gradients/progressbar.png b/skins/Blue/images/gradients/progressbar.png new file mode 100644 index 0000000..7cdfb4b Binary files /dev/null and b/skins/Blue/images/gradients/progressbar.png differ diff --git a/skins/Blue/skin.lua b/skins/Blue/skin.lua index d9f9fba..077ad86 100644 --- a/skins/Blue/skin.lua +++ b/skins/Blue/skin.lua @@ -19,104 +19,72 @@ local bordercolor = {143, 143, 143, 255} skin.controls = {} -- frame -skin.controls.frame_border_color = bordercolor skin.controls.frame_body_color = {232, 232, 232, 255} -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_body_nonclickable_color = {220, 220, 220, 255} skin.controls.button_text_nonclickable_color = {0, 0, 0, 100} skin.controls.button_text_font = smallfont --- image button +-- imagebutton skin.controls.imagebutton_text_down_color = {255, 255, 255, 255} skin.controls.imagebutton_text_nohover_color = {255, 255, 255, 200} skin.controls.imagebutton_text_hover_color = {255, 255, 255, 255} skin.controls.imagebutton_text_font = imagebuttonfont --- close button +-- closebutton 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 +-- progressbar 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 +-- tabpanel 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} +-- tabbutton 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, 255} 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} --- text input -skin.controls.textinput_border_color = bordercolor +-- textinput skin.controls.textinput_body_color = {240, 240, 240, 255} skin.controls.textinput_indicator_color = {0, 0, 0, 255} skin.controls.textinput_text_normal_color = {0, 0, 0, 255} @@ -124,11 +92,9 @@ skin.controls.textinput_text_selected_color = {255, 255, 255, 255} skin.controls.textinput_highlight_bar_color = {51, 204, 255, 255} -- slider -skin.controls.slider_bar_color = bordercolor skin.controls.slider_bar_outline_color = {220, 220, 220, 255} -- checkbox -skin.controls.checkbox_border_color = bordercolor skin.controls.checkbox_body_color = {255, 255, 255, 255} skin.controls.checkbox_check_color = {128, 204, 255, 255} skin.controls.checkbox_text_color = {0, 0, 0, 255} @@ -136,33 +102,21 @@ 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} skin.controls.columnlistrow_text_color = {100, 100, 100, 255} @@ -170,7 +124,6 @@ skin.controls.columnlistrow_text_color = {100, 100, 100, 255} skin.controls.modalbackground_body_color = {255, 255, 255, 100} -- linenumberspanel -skin.controls.linenumberspanel_border_color = bordercolor skin.controls.linenumberspanel_text_color = {100, 100, 100, 255} --[[--------------------------------------------------------- @@ -206,24 +159,6 @@ function skin.OutlinedRectangle(x, y, width, height, ovt, ovb, ovl, ovr) end ---[[--------------------------------------------------------- - - func: skin.DrawGradient(x, y, width, height, color) - - desc: draws a gradient ---]]--------------------------------------------------------- -function skin.DrawGradient(x, y, width, height, color) - - local color = color - local percent = 0 - - for i=1, (height - 1) do - percent = i/height * 255 - color[4] = loveframes.util.Round(percent) - love.graphics.setColor(unpack(color)) - love.graphics.rectangle("fill", x, y + i, width, 1) - end - -end - --[[--------------------------------------------------------- - func: DrawFrame(object) - desc: draws the frame object @@ -238,19 +173,23 @@ function skin.DrawFrame(object) local name = object:GetName() local bodycolor = skin.controls.frame_body_color local topcolor = skin.controls.frame_top_color - local bordercolor = skin.controls.frame_border_color local namecolor = skin.controls.frame_name_color local font = skin.controls.frame_name_font - local gradientcolor = {topcolor[1] - 20, topcolor[2] - 20, topcolor[3] - 20, 255} + local image = skin.images["frame-topbar.png"] + local imageheight = image:getHeight() + local scaley = 25/imageheight + -- button body + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) + -- frame body love.graphics.setColor(bodycolor) love.graphics.rectangle("fill", x, y, width, height) -- frame top bar - love.graphics.setColor(topcolor) - love.graphics.rectangle("fill", x, y, width, 25) - skin.DrawGradient(x, y, width, 25, gradientcolor) + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y + 25, width, 1) @@ -283,73 +222,69 @@ function skin.DrawButton(object) local down = object.down local enabled = object:GetEnabled() local clickable = object:GetClickable() - local bodydowncolor = skin.controls.button_body_down_color local textdowncolor = skin.controls.button_text_down_color - local borderdowncolor = skin.controls.button_border_down_color - local bodyhovercolor = skin.controls.button_body_hover_color local texthovercolor = skin.controls.button_text_hover_color - local borderhovercolor = skin.controls.button_border_down_color - local bodynohvercolor = skin.controls.button_body_nohover_color local textnohovercolor = skin.controls.button_text_nohover_color - local bordernohovercolor = skin.controls.button_border_down_color - local bodynonclickablecolor = skin.controls.button_body_nonclickable_color local textnonclickablecolor = skin.controls.button_text_nonclickable_color - local gradientcolor = {} if not enabled or not clickable then + local image = skin.images["button-unclickable.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight -- button body - love.graphics.setColor(bodynonclickablecolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodynonclickablecolor[1] - 20, bodynonclickablecolor[2] - 20, bodynonclickablecolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, 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(bordernohovercolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) return end - + if down then + local image = skin.images["button-down.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight -- button body - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodydowncolor[1] - 20, bodydowncolor[2] - 20, bodydowncolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, 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(borderdowncolor) + 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 -- button body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodyhovercolor[1] - 20, bodyhovercolor[2] - 20, bodyhovercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, 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(borderhovercolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) - else + else + local image = skin.images["button-nohover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight -- button body - love.graphics.setColor(bodynohvercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodynohvercolor[1] - 20, bodynohvercolor[2] - 20, bodynohvercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, 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(bordernohovercolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) end @@ -496,15 +431,15 @@ function skin.DrawProgressBar(object) local bodycolor = skin.controls.progressbar_body_color local barcolor = skin.controls.progressbar_bar_color local textcolor = skin.controls.progressbar_text_color - local bordercolor = skin.controls.progressbar_border_color - local gradientcolor = {barcolor[1], barcolor[2] - 20, barcolor[3], 255} - + 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) - love.graphics.setColor(barcolor) - love.graphics.rectangle("fill", x, y, barwidth, height) - skin.DrawGradient(x, y, barwidth, height, gradientcolor) + love.graphics.setColor(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) @@ -527,7 +462,6 @@ function skin.DrawScrollArea(object) local height = object:GetHeight() local bartype = object:GetBarType() local bodycolor = skin.controls.scrollarea_body_color - local bordercolor = skin.controls.scrollarea_border_color love.graphics.setColor(bodycolor) love.graphics.rectangle("fill", x, y, width, height) @@ -555,43 +489,42 @@ function skin.DrawScrollBar(object) local hover = object:GetHover() local bartype = object:GetBarType() local bodydowncolor = skin.controls.scrollbar_body_down_color - local borderdowncolor = skin.controls.scrollbar_border_down_color local bodyhovercolor = skin.controls.scrollbar_body_hover_color - local borderhovercolor = skin.controls.scrollbar_border_hover_color local bodynohvercolor = skin.controls.scrollbar_body_nohover_color - local bordernohovercolor = skin.controls.scrollbar_border_nohover_color - local gradientcolor = {} if dragging then - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodydowncolor[1] - 20, bodydowncolor[2] - 20, bodydowncolor[3] - 20, 255} - skin.DrawGradient(x, y, width, height, gradientcolor) - love.graphics.setColor(borderdowncolor) + local image = skin.images["button-down.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(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 - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodyhovercolor[1] - 20, bodyhovercolor[2] - 20, bodyhovercolor[3] - 20, 255} - skin.DrawGradient(x, y, width, height, gradientcolor) - love.graphics.setColor(borderhovercolor) + local image = skin.images["button-hover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) else - love.graphics.setColor(bodynohvercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodynohvercolor[1] - 20, bodynohvercolor[2] - 20, bodynohvercolor[3] - 20, 255} - skin.DrawGradient(x, y, width, height, gradientcolor) - love.graphics.setColor(bordernohovercolor) + local image = skin.images["button-nohover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) end if bartype == "vertical" then - love.graphics.setColor(bordernohovercolor) + love.graphics.setColor(bordercolor) love.graphics.rectangle("fill", x + 3, y + height/2 - 3, width - 6, 1) love.graphics.rectangle("fill", x + 3, y + height/2, width - 6, 1) love.graphics.rectangle("fill", x + 3, y + height/2 + 3, width - 6, 1) else - love.graphics.setColor(bordernohovercolor) + love.graphics.setColor(bordercolor) love.graphics.rectangle("fill", x + width/2 - 3, y + 3, 1, height - 6) love.graphics.rectangle("fill", x + width/2, y + 3, 1, height - 6) love.graphics.rectangle("fill", x + width/2 + 3, y + 3, 1, height - 6) @@ -627,7 +560,6 @@ function skin.DrawPanel(object) local width = object:GetWidth() local height = object:GetHeight() local bodycolor = skin.controls.panel_body_color - local bordercolor = skin.controls.panel_border_color love.graphics.setColor(bodycolor) love.graphics.rectangle("fill", x, y, width, height) @@ -663,9 +595,8 @@ function skin.DrawOverList(object) local y = object:GetY() local width = object:GetWidth() local height = object:GetHeight() - local bordrcolor = skin.controls.list_border_color - love.graphics.setColor(bordrcolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) end @@ -682,7 +613,6 @@ function skin.DrawTabPanel(object) local height = object:GetHeight() local buttonheight = object:GetHeightOfButtons() local bodycolor = skin.controls.tabpanel_body_color - local bordercolor = skin.controls.tabpanel_border_color love.graphics.setColor(bodycolor) love.graphics.rectangle("fill", x, y + buttonheight, width, height - buttonheight) @@ -712,12 +642,8 @@ function skin.DrawTabButton(object) local theight = font:getHeight(object.text) local imagewidth = 0 local imageheight = 0 - local bordercolor = skin.controls.tabpanel_border_color - local bodyhovercolor = skin.controls.button_body_hover_color local texthovercolor = skin.controls.button_text_hover_color - local bodynohovercolor = skin.controls.button_body_nohover_color local textnohovercolor = skin.controls.button_text_nohover_color - local gradientcolor = {} if image then image:setFilter("nearest", "nearest") @@ -742,10 +668,11 @@ function skin.DrawTabButton(object) if tabnumber == ptabnumber then -- button body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x, y, width, height) - gradientcolor = {bodyhovercolor[1] - 20, bodyhovercolor[2] - 20, bodyhovercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + local gradient = skin.images["button-hover.png"] + local gradientheight = gradient:getHeight() + local scaley = height/gradientheight + love.graphics.setColor(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) @@ -765,10 +692,11 @@ function skin.DrawTabButton(object) end else -- button body - love.graphics.setColor(bodynohovercolor) - love.graphics.rectangle("fill", x, y, width, height) - gradientcolor = {bodynohovercolor[1] - 20, bodynohovercolor[2] - 20, bodynohovercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + local gradient = skin.images["button-nohover.png"] + local gradientheight = gradient:getHeight() + local scaley = height/gradientheight + love.graphics.setColor(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) @@ -807,7 +735,6 @@ function skin.DrawMultiChoice(object) local theight = font:getHeight("a") local bodycolor = skin.controls.multichoice_body_color local textcolor = skin.controls.multichoice_text_color - local bordercolor = skin.controls.multichoice_border_color image:setFilter("nearest", "nearest") @@ -858,7 +785,6 @@ function skin.DrawOverMultiChoiceList(object) local y = object:GetY() local width = object:GetWidth() local height = object:GetHeight() - local bordercolor = skin.controls.multichoicelist_border_color love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y - 1, width, height + 1) @@ -909,7 +835,6 @@ function skin.DrawToolTip(object) local width = object:GetWidth() local height = object:GetHeight() local bodycolor = skin.controls.tooltip_body_color - local bordercolor = skin.controls.tooltip_border_color love.graphics.setColor(bodycolor) love.graphics.rectangle("fill", x, y, width, height) @@ -968,6 +893,9 @@ function skin.DrawTextInput(object) if multiline then for i=1, #lines do local twidth = font:getWidth(lines[i]) + if twidth == 0 then + twidth = 5 + end love.graphics.setColor(highlightbarcolor) love.graphics.rectangle("fill", textx, texty + bary, twidth, theight) bary = bary + theight @@ -1062,7 +990,6 @@ function skin.DrawOverTextInput(object) local y = object:GetY() local width = object:GetWidth() local height = object:GetHeight() - local bordercolor = skin.controls.textinput_border_color love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) @@ -1083,40 +1010,39 @@ function skin.DrawScrollButton(object) local scrolltype = object:GetScrollType() local down = object.down local bodydowncolor = skin.controls.button_body_down_color - local borderdowncolor = skin.controls.button_border_down_color local bodyhovercolor = skin.controls.button_body_hover_color - local borderhovercolor = skin.controls.button_border_hover_color local bodynohovercolor = skin.controls.button_body_nohover_color - local bordernohovercolor = skin.controls.button_border_nohover_color - local gradientcolor = {} if down then -- button body - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodydowncolor[1] - 20, bodydowncolor[2] - 20, bodydowncolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + local image = skin.images["button-down.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) -- button border - love.graphics.setColor(borderdowncolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) elseif hover then -- button body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodyhovercolor[1] - 20, bodyhovercolor[2] - 20, bodyhovercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + local image = skin.images["button-hover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) -- button border - love.graphics.setColor(borderhovercolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) else -- button body - love.graphics.setColor(bodynohovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodynohovercolor[1] - 20, bodynohovercolor[2] - 20, bodynohovercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + local image = skin.images["button-nohover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) -- button border - love.graphics.setColor(bordernohovercolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) end @@ -1180,17 +1106,16 @@ function skin.DrawSlider(object) local height = object:GetHeight() local slidtype = object:GetSlideType() local baroutlinecolor = skin.controls.slider_bar_outline_color - local barcolor = skin.controls.slider_bar_color if slidtype == "horizontal" then love.graphics.setColor(baroutlinecolor) love.graphics.rectangle("fill", x, y + height/2 - 5, width, 10) - love.graphics.setColor(barcolor) + 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(barcolor) + love.graphics.setColor(bordercolor) love.graphics.rectangle("fill", x + width/2, y + 5, 1, height - 10) end @@ -1208,40 +1133,54 @@ function skin.DrawSliderButton(object) 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 borderdowncolor = skin.controls.button_border_down_color local bodyhovercolor = skin.controls.button_body_hover_color - local borderhovercolor = skin.controls.button_border_down_color local bodynohvercolor = skin.controls.button_body_nohover_color - local bordernohovercolor = skin.controls.button_border_down_color - local gradientcolor = {} + + if not enabled then + local image = skin.images["button-unclickable.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + -- button body + love.graphics.setColor(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 - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodydowncolor[1] - 20, bodydowncolor[2] - 20, bodydowncolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + local image = skin.images["button-down.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) -- button border - love.graphics.setColor(borderdowncolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) elseif hover then -- button body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodyhovercolor[1] - 20, bodyhovercolor[2] - 20, bodyhovercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + local image = skin.images["button-hover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) -- button border - love.graphics.setColor(borderhovercolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) else -- button body - love.graphics.setColor(bodynohvercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodynohvercolor[1] - 20, bodynohvercolor[2] - 20, bodynohvercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + local image = skin.images["button-nohover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) -- button border - love.graphics.setColor(bordernohovercolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) end @@ -1260,7 +1199,6 @@ function skin.DrawCheckBox(object) local checked = object:GetChecked() local hover = object:GetHover() local bodycolor = skin.controls.checkbox_body_color - local bordercolor = skin.controls.checkbox_border_color local checkcolor = skin.controls.checkbox_check_color love.graphics.setColor(bodycolor) @@ -1292,17 +1230,14 @@ function skin.DrawCollapsibleCategory(object) local width = object:GetWidth() local height = object:GetHeight() local text = object:GetText() - local bodycolor = skin.controls.collapsiblecategory_body_color local textcolor = skin.controls.collapsiblecategory_text_color - local bordercolor = skin.controls.collapsiblecategory_border_color local font = smallfont - local gradientcolor = {bodycolor[1] - 20, bodycolor[2] - 20, bodycolor[3] - 20, 255} + local image = skin.images["button-nohover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight - love.graphics.setColor(bodycolor) - love.graphics.rectangle("fill", x, y, width, height) - - love.graphics.setColor(gradientcolor) - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) love.graphics.setFont(font) love.graphics.setColor(textcolor) @@ -1348,53 +1283,52 @@ function skin.DrawColumnListHeader(object) local theight = font:getHeight(object.name) local bodydowncolor = skin.controls.columnlistheader_body_down_color local textdowncolor = skin.controls.columnlistheader_text_down_color - local borderdowncolor = skin.controls.columnlistheader_border_down_color local bodyhovercolor = skin.controls.columnlistheader_body_hover_color local textdowncolor = skin.controls.columnlistheader_text_hover_color - local borderdowncolor = skin.controls.columnlistheader_border_down_color local nohovercolor = skin.controls.columnlistheader_body_nohover_color local textnohovercolor = skin.controls.columnlistheader_text_nohover_color - local bordernohovercolor = skin.controls.columnlistheader_border_down_color - local gradientcolor = {} if down then + local image = skin.images["button-down.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight -- header body - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 1, height - 2) - gradientcolor = {bodydowncolor[1] - 20, bodydowncolor[2] - 20, bodydowncolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + love.graphics.setColor(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(borderdowncolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height, false, false, false, true) elseif hover then + local image = skin.images["button-hover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight -- header body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 1, height - 2) - gradientcolor = {bodyhovercolor[1] - 20, bodyhovercolor[2] - 20, bodyhovercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + love.graphics.setColor(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(borderdowncolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height, false, false, false, true) else + local image = skin.images["button-nohover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight -- header body - love.graphics.setColor(nohovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 1, height - 2) - gradientcolor = {nohovercolor[1] - 20, nohovercolor[2] - 20, nohovercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + love.graphics.setColor(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(bordernohovercolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height, false, false, false, true) end @@ -1427,7 +1361,6 @@ function skin.DrawOverColumnListArea(object) local y = object:GetY() local width = object:GetWidth() local height = object:GetHeight() - local bordercolor = skin.controls.columnlist_border_color love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) @@ -1453,9 +1386,7 @@ function skin.DrawColumnListRow(object) local cwidth, cheight = parent:GetParent():GetColumnSize() local theight = font:getHeight("a") local body1color = skin.controls.columnlistrow_body1_color - local border1color = skin.controls.columnlistrow_border1_color local body2color = skin.controls.columnlistrow_body2_color - local border2color = skin.controls.columnlistrow_border2_color local textcolor = skin.controls.columnlistrow_text_color object:SetTextPos(5, height/2 - theight/2) @@ -1463,12 +1394,12 @@ function skin.DrawColumnListRow(object) if colorindex == 1 then love.graphics.setColor(body1color) love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - love.graphics.setColor(border1color) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height, true, false, true, true) else love.graphics.setColor(body2color) love.graphics.rectangle("fill", x, y, width, height) - love.graphics.setColor(border2color) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height, true, false, true, true) end @@ -1513,7 +1444,6 @@ function skin.DrawLineNumbersPanel(object) local lines = parent:GetLines() local font = parent:GetFont() local theight = font:getHeight("a") - local bordercolor = skin.controls.linenumberspanel_border_color local textcolor = skin.controls.linenumberspanel_text_color local mody = y diff --git a/skins/Orange (basic)/images/arrow-down.png b/skins/Orange (basic)/images/arrow-down.png deleted file mode 100644 index 37d8058..0000000 Binary files a/skins/Orange (basic)/images/arrow-down.png and /dev/null differ diff --git a/skins/Orange (basic)/images/arrow-left.png b/skins/Orange (basic)/images/arrow-left.png deleted file mode 100644 index c5045dd..0000000 Binary files a/skins/Orange (basic)/images/arrow-left.png and /dev/null differ diff --git a/skins/Orange (basic)/images/arrow-right.png b/skins/Orange (basic)/images/arrow-right.png deleted file mode 100644 index 89b4818..0000000 Binary files a/skins/Orange (basic)/images/arrow-right.png and /dev/null differ diff --git a/skins/Orange (basic)/images/arrow-up.png b/skins/Orange (basic)/images/arrow-up.png deleted file mode 100644 index 475d5db..0000000 Binary files a/skins/Orange (basic)/images/arrow-up.png and /dev/null differ diff --git a/skins/Orange (basic)/images/close.png b/skins/Orange (basic)/images/close.png deleted file mode 100644 index 0825add..0000000 Binary files a/skins/Orange (basic)/images/close.png and /dev/null differ diff --git a/skins/Orange (basic)/images/multichoice-arrow.png b/skins/Orange (basic)/images/multichoice-arrow.png deleted file mode 100644 index 165121c..0000000 Binary files a/skins/Orange (basic)/images/multichoice-arrow.png and /dev/null differ diff --git a/skins/Orange (basic)/skin.lua b/skins/Orange (basic)/skin.lua deleted file mode 100644 index c4c7363..0000000 --- a/skins/Orange (basic)/skin.lua +++ /dev/null @@ -1,1471 +0,0 @@ ---[[------------------------------------------------ - -- Love Frames - A GUI library for LOVE -- - -- Copyright (c) 2013 Kenny Shields -- ---]]------------------------------------------------ - --- skin table -local skin = {} - --- skin info (you always need this in a skin) -skin.name = "Orange (basic)" -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 = {232, 232, 232, 255} -skin.controls.frame_top_color = {255, 153, 0, 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 = {255, 173, 51, 255} -skin.controls.button_body_nohover_color = {255, 255, 255, 255} -skin.controls.button_body_hover_color = {255, 184, 77, 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_body_nonclickable_color = {220, 220, 220, 255} -skin.controls.button_text_nonclickable_color = {0, 0, 0, 100} -skin.controls.button_text_font = smallfont - --- image button -skin.controls.imagebutton_text_down_color = {255, 255, 255, 255} -skin.controls.imagebutton_text_nohover_color = {255, 255, 255, 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 = {255, 173, 51, 255} -skin.controls.scrollbar_body_nohover_color = {255, 255, 255, 255} -skin.controls.scrollbar_body_hover_color = {255, 184, 77, 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 = {255, 173, 51, 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, 255} -skin.controls.multichoicerow_body_hover_color = {255, 117, 26, 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} - --- text input -skin.controls.textinput_border_color = bordercolor -skin.controls.textinput_body_color = {240, 240, 240, 255} -skin.controls.textinput_indicator_color = {0, 0, 0, 255} -skin.controls.textinput_text_normal_color = {0, 0, 0, 255} -skin.controls.textinput_text_selected_color = {255, 255, 255, 255} -skin.controls.textinput_highlight_bar_color = {51, 204, 255, 255} - --- slider -skin.controls.slider_bar_color = bordercolor -skin.controls.slider_bar_outline_color = {220, 220, 220, 255} - --- checkbox -skin.controls.checkbox_border_color = bordercolor -skin.controls.checkbox_body_color = {255, 255, 255, 255} -skin.controls.checkbox_check_color = {255, 173, 51, 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 = {255, 173, 51, 255} -skin.controls.columnlistheader_body_nohover_color = {255, 255, 255, 255} -skin.controls.columnlistheader_body_hover_color = {255, 184, 77, 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} -skin.controls.columnlistrow_text_color = {100, 100, 100, 255} - --- modalbackground -skin.controls.modalbackground_body_color = {255, 255, 255, 100} - --- linenumberspanel -skin.controls.linenumberspanel_border_color = bordercolor -skin.controls.linenumberspanel_text_color = {100, 100, 100, 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 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 x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local hover = object:GetHover() - local name = object:GetName() - local bodycolor = skin.controls.frame_body_color - local topcolor = skin.controls.frame_top_color - local bordercolor = skin.controls.frame_border_color - local namecolor = skin.controls.frame_name_color - local font = skin.controls.frame_name_font - - -- frame body - love.graphics.setColor(bodycolor) - love.graphics.rectangle("fill", x, y, width, height) - - -- frame top bar - love.graphics.setColor(topcolor) - love.graphics.rectangle("fill", x, y, width, 25) - love.graphics.setColor(bordercolor) - skin.OutlinedRectangle(x, y + 25, width, 1) - - -- frame name section - love.graphics.setFont(font) - love.graphics.setColor(namecolor) - love.graphics.print(name, x + 5, y + 5) - - -- frame border - love.graphics.setColor(bordercolor) - skin.OutlinedRectangle(x, y, width, height) - -end - ---[[--------------------------------------------------------- - - func: DrawButton(object) - - desc: draws the button object ---]]--------------------------------------------------------- -function skin.DrawButton(object) - - 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.down - local enabled = object:GetEnabled() - local clickable = object:GetClickable() - local bodydowncolor = skin.controls.button_body_down_color - local textdowncolor = skin.controls.button_text_down_color - local borderdowncolor = skin.controls.button_border_down_color - local bodyhovercolor = skin.controls.button_body_hover_color - local texthovercolor = skin.controls.button_text_hover_color - local borderhovercolor = skin.controls.button_border_down_color - local bodynohvercolor = skin.controls.button_body_nohover_color - local textnohovercolor = skin.controls.button_text_nohover_color - local bordernohovercolor = skin.controls.button_border_down_color - local bodynonclickablecolor = skin.controls.button_body_nonclickable_color - local textnonclickablecolor = skin.controls.button_text_nonclickable_color - - if not enabled or not clickable then - -- button body - love.graphics.setColor(bodynonclickablecolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- 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(bordernohovercolor) - skin.OutlinedRectangle(x, y, width, height) - return - end - - if down then - -- button body - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- 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(borderdowncolor) - skin.OutlinedRectangle(x, y, width, height) - elseif hover then - -- button body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- 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(borderhovercolor) - skin.OutlinedRectangle(x, y, width, height) - else - -- button body - love.graphics.setColor(bodynohvercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- 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(bordernohovercolor) - skin.OutlinedRectangle(x, y, width, height) - end - -end - ---[[--------------------------------------------------------- - - func: DrawCloseButton(object) - - desc: draws the close button object ---]]--------------------------------------------------------- -function skin.DrawCloseButton(object) - - local x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local parentwidth = object.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 - - object:SetPos(parentwidth - 20, 4) - object:SetSize(16, 16) - -end - ---[[--------------------------------------------------------- - - func: DrawImage(object) - - desc: draws the image object ---]]--------------------------------------------------------- -function skin.DrawImage(object) - - 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 - - if color then - love.graphics.setColor(color) - love.graphics.draw(image, x, y, orientation, scalex, scaley, offsetx, offsety, shearx, sheary) - else - love.graphics.setColor(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 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() - 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 - - if down then - if image then - love.graphics.setColor(255, 255, 255, 255) - love.graphics.draw(image, x + 1, y + 1) - end - love.graphics.setFont(font) - love.graphics.setColor(0, 0, 0, 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(255, 255, 255, 255) - love.graphics.draw(image, x, y) - end - love.graphics.setFont(font) - love.graphics.setColor(0, 0, 0, 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(255, 255, 255, 255) - love.graphics.draw(image, x, y) - end - love.graphics.setFont(font) - love.graphics.setColor(0, 0, 0, 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 - -end - ---[[--------------------------------------------------------- - - func: DrawProgressBar(object) - - desc: draws the progress bar object ---]]--------------------------------------------------------- -function skin.DrawProgressBar(object) - - 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 barwidth = object:GetBarWidth() - local font = skin.controls.progressbar_text_font - local text = value .. "/" ..max - 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 bordercolor = skin.controls.progressbar_border_color - - -- progress bar body - love.graphics.setColor(bodycolor) - love.graphics.rectangle("fill", x, y, width, height) - love.graphics.setColor(barcolor) - love.graphics.rectangle("fill", x, y, barwidth, height) - 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) - -end - ---[[--------------------------------------------------------- - - func: DrawScrollArea(object) - - desc: draws the scroll area object ---]]--------------------------------------------------------- -function skin.DrawScrollArea(object) - - 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 - local bordercolor = skin.controls.scrollarea_border_color - - love.graphics.setColor(bodycolor) - love.graphics.rectangle("fill", x, y, width, height) - love.graphics.setColor(bordercolor) - - if bartype == "vertical" then - skin.OutlinedRectangle(x, y, width, height, true, true) - elseif bartype == "horizontal" then - 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 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 borderdowncolor = skin.controls.scrollbar_border_down_color - local bodyhovercolor = skin.controls.scrollbar_body_hover_color - local borderhovercolor = skin.controls.scrollbar_border_hover_color - local bodynohvercolor = skin.controls.scrollbar_body_nohover_color - local bordernohovercolor = skin.controls.scrollbar_border_nohover_color - - if dragging then - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - love.graphics.setColor(borderdowncolor) - skin.OutlinedRectangle(x, y, width, height) - elseif hover then - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - love.graphics.setColor(borderhovercolor) - skin.OutlinedRectangle(x, y, width, height) - else - love.graphics.setColor(bodynohvercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - love.graphics.setColor(bordernohovercolor) - skin.OutlinedRectangle(x, y, width, height) - end - - if bartype == "vertical" then - love.graphics.setColor(bordernohovercolor) - love.graphics.rectangle("fill", x + 3, y + height/2 - 3, width - 6, 1) - love.graphics.rectangle("fill", x + 3, y + height/2, width - 6, 1) - love.graphics.rectangle("fill", x + 3, y + height/2 + 3, width - 6, 1) - else - love.graphics.setColor(bordernohovercolor) - love.graphics.rectangle("fill", x + width/2 - 3, y + 3, 1, height - 6) - love.graphics.rectangle("fill", x + width/2, y + 3, 1, height - 6) - love.graphics.rectangle("fill", x + width/2 + 3, y + 3, 1, height - 6) - end - -end - ---[[--------------------------------------------------------- - - func: DrawScrollBody(object) - - desc: draws the scroll body object ---]]--------------------------------------------------------- -function skin.DrawScrollBody(object) - - 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 x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local bodycolor = skin.controls.panel_body_color - local bordercolor = skin.controls.panel_border_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: DrawList(object) - - desc: draws the list object ---]]--------------------------------------------------------- -function skin.DrawList(object) - - 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 it's children ---]]--------------------------------------------------------- -function skin.DrawOverList(object) - - local x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local bordrcolor = skin.controls.list_border_color - - love.graphics.setColor(bordrcolor) - skin.OutlinedRectangle(x, y, width, height) - -end - ---[[--------------------------------------------------------- - - func: DrawTabPanel(object) - - desc: draws the tab panel object ---]]--------------------------------------------------------- -function skin.DrawTabPanel(object) - - 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 - local bordercolor = skin.controls.tabpanel_border_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: DrawTabButton(object) - - desc: draws the tab button object ---]]--------------------------------------------------------- -function skin.DrawTabButton(object) - - 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 bordercolor = skin.controls.tabpanel_border_color - local bodyhovercolor = skin.controls.button_body_hover_color - local texthovercolor = skin.controls.button_text_hover_color - local bodynohovercolor = skin.controls.button_body_nohover_color - local textnohovercolor = skin.controls.button_text_nohover_color - - if image then - imagewidth = image:getWidth() - imageheight = image:getHeight() - object.width = imagewidth + 15 + twidth - if imageheight > theight then - parent:SetTabHeight(imageheight + 5) - object.height = imageheight + 5 - else - parent:SetTabHeight(theight + 5) - object.height = theight + 5 - end - else - object.width = 10 + twidth - parent:SetTabHeight(theight + 5) - object.height = theight + 5 - end - - local width = object:GetWidth() - local height = object:GetHeight() - - if tabnumber == ptabnumber then - -- button body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x, y, width, height) - -- button border - love.graphics.setColor(bordercolor) - skin.OutlinedRectangle(x, y, width, height) - if image then - image:setFilter("nearest", "nearest") - -- button image - love.graphics.setColor(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 - love.graphics.setColor(bodynohovercolor) - love.graphics.rectangle("fill", x, y, width, height) - -- button border - love.graphics.setColor(bordercolor) - skin.OutlinedRectangle(x, y, width, height) - if image then - image:setFilter("nearest", "nearest") - -- button image - love.graphics.setColor(255, 255, 255, 150) - 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 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 - local bordercolor = skin.controls.multichoice_border_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 - - love.graphics.setColor(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 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 x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local bordercolor = skin.controls.multichoicelist_border_color - - 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 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 x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local bodycolor = skin.controls.tooltip_body_color - local bordercolor = skin.controls.tooltip_border_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 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 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() - local theight = font:getHeight("a") - local bodycolor = skin.controls.textinput_body_color - local textnormalcolor = skin.controls.textinput_text_normal_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 - local twidth = font:getWidth(lines[i]) - love.graphics.setColor(highlightbarcolor) - love.graphics.rectangle("fill", textx, texty + bary, twidth, theight) - bary = bary + theight - end - else - local twidth = font:getWidth(text) - 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) - else - love.graphics.setColor(textnormalcolor) - end - - if multiline then - for i=1, #lines do - love.graphics.print(lines[i], textx, texty + theight * i - theight) - end - else - love.graphics.print(lines[1], textx, texty) - end - -end - ---[[--------------------------------------------------------- - - func: DrawOverTextInput(object) - - desc: draws over the text input object ---]]--------------------------------------------------------- -function skin.DrawOverTextInput(object) - - local x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local bordercolor = skin.controls.textinput_border_color - - 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 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 borderdowncolor = skin.controls.button_border_down_color - local bodyhovercolor = skin.controls.button_body_hover_color - local borderhovercolor = skin.controls.button_border_hover_color - local bodynohovercolor = skin.controls.button_body_nohover_color - local bordernohovercolor = skin.controls.button_border_nohover_color - - if down then - -- button body - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- button border - love.graphics.setColor(borderdowncolor) - skin.OutlinedRectangle(x, y, width, height) - elseif hover then - -- button body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- button border - love.graphics.setColor(borderhovercolor) - skin.OutlinedRectangle(x, y, width, height) - else - -- button body - love.graphics.setColor(bodynohovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- button border - love.graphics.setColor(bordernohovercolor) - skin.OutlinedRectangle(x, y, width, height) - end - - if scrolltype == "up" then - local image = skin.images["arrow-up.png"] - image:setFilter("nearest", "nearest") - if hover then - love.graphics.setColor(255, 255, 255, 255) - else - love.graphics.setColor(255, 255, 255, 150) - end - love.graphics.draw(image, x + width/2 - image:getWidth()/2, y + height/2 - image:getHeight()/2) - elseif scrolltype == "down" then - local image = skin.images["arrow-down.png"] - image:setFilter("nearest", "nearest") - if hover then - love.graphics.setColor(255, 255, 255, 255) - else - love.graphics.setColor(255, 255, 255, 150) - end - love.graphics.draw(image, x + width/2 - image:getWidth()/2, y + height/2 - image:getHeight()/2) - elseif scrolltype == "left" then - local image = skin.images["arrow-left.png"] - image:setFilter("nearest", "nearest") - if hover then - love.graphics.setColor(255, 255, 255, 255) - else - love.graphics.setColor(255, 255, 255, 150) - end - love.graphics.draw(image, x + width/2 - image:getWidth()/2, y + height/2 - image:getHeight()/2) - elseif scrolltype == "right" then - local image = skin.images["arrow-right.png"] - image:setFilter("nearest", "nearest") - if hover then - love.graphics.setColor(255, 255, 255, 255) - else - love.graphics.setColor(255, 255, 255, 150) - end - love.graphics.draw(image, x + width/2 - image:getWidth()/2, y + height/2 - image:getHeight()/2) - end - -end - ---[[--------------------------------------------------------- - - func: skin.DrawSlider(object) - - desc: draws the slider object ---]]--------------------------------------------------------- -function skin.DrawSlider(object) - - 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 - local barcolor = skin.controls.slider_bar_color - - if slidtype == "horizontal" then - love.graphics.setColor(baroutlinecolor) - love.graphics.rectangle("fill", x, y + height/2 - 5, width, 10) - love.graphics.setColor(barcolor) - 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(barcolor) - 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 x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local hover = object:GetHover() - local down = object.down - local bodydowncolor = skin.controls.button_body_down_color - local borderdowncolor = skin.controls.button_border_down_color - local bodyhovercolor = skin.controls.button_body_hover_color - local borderhovercolor = skin.controls.button_border_down_color - local bodynohvercolor = skin.controls.button_body_nohover_color - local bordernohovercolor = skin.controls.button_border_down_color - - if down then - -- button body - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- button border - love.graphics.setColor(borderdowncolor) - skin.OutlinedRectangle(x, y, width, height) - elseif hover then - -- button body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- button border - love.graphics.setColor(borderhovercolor) - skin.OutlinedRectangle(x, y, width, height) - else - -- button body - love.graphics.setColor(bodynohvercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - -- button border - love.graphics.setColor(bordernohovercolor) - skin.OutlinedRectangle(x, y, width, height) - end - -end - ---[[--------------------------------------------------------- - - func: skin.DrawCheckBox(object) - - desc: draws the check box object ---]]--------------------------------------------------------- -function skin.DrawCheckBox(object) - - 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 bordercolor = skin.controls.checkbox_border_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 - ---[[--------------------------------------------------------- - - func: skin.DrawCollapsibleCategory(object) - - desc: draws the collapsible category object ---]]--------------------------------------------------------- -function skin.DrawCollapsibleCategory(object) - - local x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local text = object:GetText() - local bodycolor = skin.controls.collapsiblecategory_body_color - local textcolor = skin.controls.collapsiblecategory_text_color - local bordercolor = skin.controls.collapsiblecategory_border_color - local font = smallfont - - love.graphics.setColor(bodycolor) - love.graphics.rectangle("fill", x, y, width, height) - - love.graphics.setFont(font) - love.graphics.setColor(textcolor) - love.graphics.print(text, x + 5, y + 5) - - love.graphics.setColor(bordercolor) - skin.OutlinedRectangle(x, y, width, height) - -end - ---[[--------------------------------------------------------- - - func: skin.DrawColumnList(object) - - desc: draws the column list object ---]]--------------------------------------------------------- -function skin.DrawColumnList(object) - - 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 x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local hover = object:GetHover() - local name = object:GetName() - local down = object.down - local font = skin.controls.columnlistheader_text_font - local twidth = font:getWidth(object.name) - local theight = font:getHeight(object.name) - local bodydowncolor = skin.controls.columnlistheader_body_down_color - local textdowncolor = skin.controls.columnlistheader_text_down_color - local borderdowncolor = skin.controls.columnlistheader_border_down_color - local bodyhovercolor = skin.controls.columnlistheader_body_hover_color - local textdowncolor = skin.controls.columnlistheader_text_hover_color - local borderdowncolor = skin.controls.columnlistheader_border_down_color - local nohovercolor = skin.controls.columnlistheader_body_nohover_color - local textnohovercolor = skin.controls.columnlistheader_text_nohover_color - local bordernohovercolor = skin.controls.columnlistheader_border_down_color - - if down then - -- header body - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 1, height - 2) - -- 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(borderdowncolor) - skin.OutlinedRectangle(x, y, width, height, false, false, false, true) - elseif hover then - -- header body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 1, height - 2) - -- 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(borderdowncolor) - skin.OutlinedRectangle(x, y, width, height, false, false, false, true) - else - -- header body - love.graphics.setColor(nohovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 1, height - 2) - -- 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(bordernohovercolor) - skin.OutlinedRectangle(x, y, width, height, false, false, false, true) - end - -end - ---[[--------------------------------------------------------- - - func: skin.DrawColumnListArea(object) - - desc: draws the column list area object ---]]--------------------------------------------------------- -function skin.DrawColumnListArea(object) - - 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) - -end - ---[[--------------------------------------------------------- - - func: skin.DrawOverColumnListArea(object) - - desc: draws over the column list area object ---]]--------------------------------------------------------- -function skin.DrawOverColumnListArea(object) - - local x = object:GetX() - local y = object:GetY() - local width = object:GetWidth() - local height = object:GetHeight() - local bordercolor = skin.controls.columnlist_border_color - - 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 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 cwidth, cheight = parent:GetParent():GetColumnSize() - local theight = font:getHeight("a") - local body1color = skin.controls.columnlistrow_body1_color - local border1color = skin.controls.columnlistrow_border1_color - local body2color = skin.controls.columnlistrow_body2_color - local border2color = skin.controls.columnlistrow_border2_color - local textcolor = skin.controls.columnlistrow_text_color - - object:SetTextPos(5, height/2 - theight/2) - - if colorindex == 1 then - love.graphics.setColor(body1color) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - love.graphics.setColor(border1color) - skin.OutlinedRectangle(x, y, width, height, true, false, true, true) - else - love.graphics.setColor(body2color) - love.graphics.rectangle("fill", x, y, width, height) - love.graphics.setColor(border2color) - skin.OutlinedRectangle(x, y, width, height, true, false, true, true) - end - - for k, v in ipairs(columndata) do - love.graphics.setFont(font) - love.graphics.setColor(textcolor) - love.graphics.print(v, x + textx, y + texty) - x = x + cwidth - end - -end - ---[[--------------------------------------------------------- - - func: skin.DrawModalBackground(object) - - desc: draws the modal background object ---]]--------------------------------------------------------- -function skin.DrawModalBackground(object) - - 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 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 bordercolor = skin.controls.linenumberspanel_border_color - local textcolor = skin.controls.linenumberspanel_text_color - local mody = y - - object:SetWidth(10 + font:getWidth(#lines)) - love.graphics.setFont(font) - - love.graphics.setColor(200, 200, 200, 255) - love.graphics.rectangle("fill", x, y, width, height) - - love.graphics.setColor(bordercolor) - skin.OutlinedRectangle(x, y, width, height, true, true, true, false) - - for i=1, #lines do - love.graphics.setColor(textcolor) - love.graphics.print(i, object.x + 5, mody - offsety) - mody = mody + theight - end - -end - ---[[--------------------------------------------------------- - - func: skin.DrawNumberBox(object) - - desc: draws the numberbox object ---]]--------------------------------------------------------- -function skin.DrawNumberBox(object) - -end - --- register the skin -loveframes.skins.Register(skin) \ No newline at end of file diff --git a/skins/Orange/images/gradients/button-down.png b/skins/Orange/images/gradients/button-down.png new file mode 100644 index 0000000..c7dd887 Binary files /dev/null and b/skins/Orange/images/gradients/button-down.png differ diff --git a/skins/Orange/images/gradients/button-hover.png b/skins/Orange/images/gradients/button-hover.png new file mode 100644 index 0000000..f621691 Binary files /dev/null and b/skins/Orange/images/gradients/button-hover.png differ diff --git a/skins/Orange/images/gradients/button-nohover.png b/skins/Orange/images/gradients/button-nohover.png new file mode 100644 index 0000000..39ff24a Binary files /dev/null and b/skins/Orange/images/gradients/button-nohover.png differ diff --git a/skins/Orange/images/gradients/button-unclickable.png b/skins/Orange/images/gradients/button-unclickable.png new file mode 100644 index 0000000..ef8bf7d Binary files /dev/null and b/skins/Orange/images/gradients/button-unclickable.png differ diff --git a/skins/Orange/images/gradients/frame-topbar.png b/skins/Orange/images/gradients/frame-topbar.png new file mode 100644 index 0000000..3667096 Binary files /dev/null and b/skins/Orange/images/gradients/frame-topbar.png differ diff --git a/skins/Orange/images/gradients/progressbar.png b/skins/Orange/images/gradients/progressbar.png new file mode 100644 index 0000000..7cdfb4b Binary files /dev/null and b/skins/Orange/images/gradients/progressbar.png differ diff --git a/skins/Orange/skin.lua b/skins/Orange/skin.lua index 9fca680..66086d5 100644 --- a/skins/Orange/skin.lua +++ b/skins/Orange/skin.lua @@ -19,104 +19,72 @@ local bordercolor = {143, 143, 143, 255} skin.controls = {} -- frame -skin.controls.frame_border_color = bordercolor skin.controls.frame_body_color = {232, 232, 232, 255} -skin.controls.frame_top_color = {255, 153, 0, 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 = {255, 173, 51, 255} -skin.controls.button_body_nohover_color = {255, 255, 255, 255} -skin.controls.button_body_hover_color = {255, 184, 77, 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_body_nonclickable_color = {220, 220, 220, 255} skin.controls.button_text_nonclickable_color = {0, 0, 0, 100} skin.controls.button_text_font = smallfont --- image button +-- imagebutton skin.controls.imagebutton_text_down_color = {255, 255, 255, 255} skin.controls.imagebutton_text_nohover_color = {255, 255, 255, 200} skin.controls.imagebutton_text_hover_color = {255, 255, 255, 255} skin.controls.imagebutton_text_font = imagebuttonfont --- close button +-- closebutton 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 +-- progressbar 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 = {255, 173, 51, 255} -skin.controls.scrollbar_body_nohover_color = {255, 255, 255, 255} -skin.controls.scrollbar_body_hover_color = {255, 184, 77, 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 +-- tabpanel 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 = {255, 173, 51, 255} +-- tabbutton 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, 255} -skin.controls.multichoicerow_body_hover_color = {255, 117, 26, 255} -skin.controls.multichoicerow_border_color = {50, 50, 50, 255} +skin.controls.multichoicerow_body_hover_color = {255, 153, 0, 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} --- text input -skin.controls.textinput_border_color = bordercolor +-- textinput skin.controls.textinput_body_color = {240, 240, 240, 255} skin.controls.textinput_indicator_color = {0, 0, 0, 255} skin.controls.textinput_text_normal_color = {0, 0, 0, 255} @@ -124,45 +92,31 @@ skin.controls.textinput_text_selected_color = {255, 255, 255, 255} skin.controls.textinput_highlight_bar_color = {51, 204, 255, 255} -- slider -skin.controls.slider_bar_color = bordercolor skin.controls.slider_bar_outline_color = {220, 220, 220, 255} -- checkbox -skin.controls.checkbox_border_color = bordercolor skin.controls.checkbox_body_color = {255, 255, 255, 255} -skin.controls.checkbox_check_color = {255, 173, 51, 255} +skin.controls.checkbox_check_color = {255, 153, 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 = {255, 173, 51, 255} -skin.controls.columnlistheader_body_nohover_color = {255, 255, 255, 255} -skin.controls.columnlistheader_body_hover_color = {255, 184, 77, 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} skin.controls.columnlistrow_text_color = {100, 100, 100, 255} @@ -170,7 +124,6 @@ skin.controls.columnlistrow_text_color = {100, 100, 100, 255} skin.controls.modalbackground_body_color = {255, 255, 255, 100} -- linenumberspanel -skin.controls.linenumberspanel_border_color = bordercolor skin.controls.linenumberspanel_text_color = {100, 100, 100, 255} --[[--------------------------------------------------------- @@ -206,24 +159,6 @@ function skin.OutlinedRectangle(x, y, width, height, ovt, ovb, ovl, ovr) end ---[[--------------------------------------------------------- - - func: skin.DrawGradient(x, y, width, height, color) - - desc: draws a gradient ---]]--------------------------------------------------------- -function skin.DrawGradient(x, y, width, height, color) - - local color = color - local percent = 0 - - for i=1, (height - 1) do - percent = i/height * 255 - color[4] = loveframes.util.Round(percent) - love.graphics.setColor(unpack(color)) - love.graphics.rectangle("fill", x, y + i, width, 1) - end - -end - --[[--------------------------------------------------------- - func: DrawFrame(object) - desc: draws the frame object @@ -238,19 +173,23 @@ function skin.DrawFrame(object) local name = object:GetName() local bodycolor = skin.controls.frame_body_color local topcolor = skin.controls.frame_top_color - local bordercolor = skin.controls.frame_border_color local namecolor = skin.controls.frame_name_color local font = skin.controls.frame_name_font - local gradientcolor = {topcolor[1] - 20, topcolor[2] - 20, topcolor[3], 255} + local image = skin.images["frame-topbar.png"] + local imageheight = image:getHeight() + local scaley = 25/imageheight + -- button body + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) + -- frame body love.graphics.setColor(bodycolor) love.graphics.rectangle("fill", x, y, width, height) -- frame top bar - love.graphics.setColor(topcolor) - love.graphics.rectangle("fill", x, y, width, 25) - skin.DrawGradient(x, y, width, 25, gradientcolor) + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y + 25, width, 1) @@ -283,73 +222,69 @@ function skin.DrawButton(object) local down = object.down local enabled = object:GetEnabled() local clickable = object:GetClickable() - local bodydowncolor = skin.controls.button_body_down_color local textdowncolor = skin.controls.button_text_down_color - local borderdowncolor = skin.controls.button_border_down_color - local bodyhovercolor = skin.controls.button_body_hover_color local texthovercolor = skin.controls.button_text_hover_color - local borderhovercolor = skin.controls.button_border_down_color - local bodynohvercolor = skin.controls.button_body_nohover_color local textnohovercolor = skin.controls.button_text_nohover_color - local bordernohovercolor = skin.controls.button_border_down_color - local bodynonclickablecolor = skin.controls.button_body_nonclickable_color local textnonclickablecolor = skin.controls.button_text_nonclickable_color - local gradientcolor = {} if not enabled or not clickable then + local image = skin.images["button-unclickable.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight -- button body - love.graphics.setColor(bodynonclickablecolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodynonclickablecolor[1] - 20, bodynonclickablecolor[2] - 20, bodynonclickablecolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, 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(bordernohovercolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) return end - + if down then + local image = skin.images["button-down.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight -- button body - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodydowncolor[1] - 20, bodydowncolor[2] - 20, bodydowncolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, 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(borderdowncolor) + 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 -- button body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodyhovercolor[1] - 20, bodyhovercolor[2] - 20, bodyhovercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, 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(borderhovercolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) - else + else + local image = skin.images["button-nohover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight -- button body - love.graphics.setColor(bodynohvercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodynohvercolor[1] - 20, bodynohvercolor[2] - 20, bodynohvercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, 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(bordernohovercolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) end @@ -496,15 +431,15 @@ function skin.DrawProgressBar(object) local bodycolor = skin.controls.progressbar_body_color local barcolor = skin.controls.progressbar_bar_color local textcolor = skin.controls.progressbar_text_color - local bordercolor = skin.controls.progressbar_border_color - local gradientcolor = {barcolor[1], barcolor[2] - 20, barcolor[3], 255} - + 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) - love.graphics.setColor(barcolor) - love.graphics.rectangle("fill", x, y, barwidth, height) - skin.DrawGradient(x, y, barwidth, height, gradientcolor) + love.graphics.setColor(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) @@ -527,7 +462,6 @@ function skin.DrawScrollArea(object) local height = object:GetHeight() local bartype = object:GetBarType() local bodycolor = skin.controls.scrollarea_body_color - local bordercolor = skin.controls.scrollarea_border_color love.graphics.setColor(bodycolor) love.graphics.rectangle("fill", x, y, width, height) @@ -555,43 +489,42 @@ function skin.DrawScrollBar(object) local hover = object:GetHover() local bartype = object:GetBarType() local bodydowncolor = skin.controls.scrollbar_body_down_color - local borderdowncolor = skin.controls.scrollbar_border_down_color local bodyhovercolor = skin.controls.scrollbar_body_hover_color - local borderhovercolor = skin.controls.scrollbar_border_hover_color local bodynohvercolor = skin.controls.scrollbar_body_nohover_color - local bordernohovercolor = skin.controls.scrollbar_border_nohover_color - local gradientcolor = {} if dragging then - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodydowncolor[1] - 20, bodydowncolor[2] - 20, bodydowncolor[3] - 20, 255} - skin.DrawGradient(x, y, width, height, gradientcolor) - love.graphics.setColor(borderdowncolor) + local image = skin.images["button-down.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(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 - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodyhovercolor[1] - 20, bodyhovercolor[2] - 20, bodyhovercolor[3] - 20, 255} - skin.DrawGradient(x, y, width, height, gradientcolor) - love.graphics.setColor(borderhovercolor) + local image = skin.images["button-hover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) else - love.graphics.setColor(bodynohvercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodynohvercolor[1] - 20, bodynohvercolor[2] - 20, bodynohvercolor[3] - 20, 255} - skin.DrawGradient(x, y, width, height, gradientcolor) - love.graphics.setColor(bordernohovercolor) + local image = skin.images["button-nohover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) end if bartype == "vertical" then - love.graphics.setColor(bordernohovercolor) + love.graphics.setColor(bordercolor) love.graphics.rectangle("fill", x + 3, y + height/2 - 3, width - 6, 1) love.graphics.rectangle("fill", x + 3, y + height/2, width - 6, 1) love.graphics.rectangle("fill", x + 3, y + height/2 + 3, width - 6, 1) else - love.graphics.setColor(bordernohovercolor) + love.graphics.setColor(bordercolor) love.graphics.rectangle("fill", x + width/2 - 3, y + 3, 1, height - 6) love.graphics.rectangle("fill", x + width/2, y + 3, 1, height - 6) love.graphics.rectangle("fill", x + width/2 + 3, y + 3, 1, height - 6) @@ -627,7 +560,6 @@ function skin.DrawPanel(object) local width = object:GetWidth() local height = object:GetHeight() local bodycolor = skin.controls.panel_body_color - local bordercolor = skin.controls.panel_border_color love.graphics.setColor(bodycolor) love.graphics.rectangle("fill", x, y, width, height) @@ -663,9 +595,8 @@ function skin.DrawOverList(object) local y = object:GetY() local width = object:GetWidth() local height = object:GetHeight() - local bordrcolor = skin.controls.list_border_color - love.graphics.setColor(bordrcolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) end @@ -682,7 +613,6 @@ function skin.DrawTabPanel(object) local height = object:GetHeight() local buttonheight = object:GetHeightOfButtons() local bodycolor = skin.controls.tabpanel_body_color - local bordercolor = skin.controls.tabpanel_border_color love.graphics.setColor(bodycolor) love.graphics.rectangle("fill", x, y + buttonheight, width, height - buttonheight) @@ -712,12 +642,8 @@ function skin.DrawTabButton(object) local theight = font:getHeight(object.text) local imagewidth = 0 local imageheight = 0 - local bordercolor = skin.controls.tabpanel_border_color - local bodyhovercolor = skin.controls.button_body_hover_color local texthovercolor = skin.controls.button_text_hover_color - local bodynohovercolor = skin.controls.button_body_nohover_color local textnohovercolor = skin.controls.button_text_nohover_color - local gradientcolor = {} if image then image:setFilter("nearest", "nearest") @@ -742,10 +668,11 @@ function skin.DrawTabButton(object) if tabnumber == ptabnumber then -- button body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x, y, width, height) - gradientcolor = {bodyhovercolor[1] - 20, bodyhovercolor[2] - 20, bodyhovercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + local gradient = skin.images["button-hover.png"] + local gradientheight = gradient:getHeight() + local scaley = height/gradientheight + love.graphics.setColor(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) @@ -765,10 +692,11 @@ function skin.DrawTabButton(object) end else -- button body - love.graphics.setColor(bodynohovercolor) - love.graphics.rectangle("fill", x, y, width, height) - gradientcolor = {bodynohovercolor[1] - 20, bodynohovercolor[2] - 20, bodynohovercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + local gradient = skin.images["button-nohover.png"] + local gradientheight = gradient:getHeight() + local scaley = height/gradientheight + love.graphics.setColor(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) @@ -779,12 +707,12 @@ function skin.DrawTabButton(object) -- button text love.graphics.setFont(font) love.graphics.setColor(textnohovercolor) - love.graphics.print(object.text, x + imagewidth + 10, y + height/2 - theight/2) + 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(object.text, x + 5, y + height/2 - theight/2) + love.graphics.print(text, x + 5, y + height/2 - theight/2) end end @@ -807,7 +735,6 @@ function skin.DrawMultiChoice(object) local theight = font:getHeight("a") local bodycolor = skin.controls.multichoice_body_color local textcolor = skin.controls.multichoice_text_color - local bordercolor = skin.controls.multichoice_border_color image:setFilter("nearest", "nearest") @@ -858,7 +785,6 @@ function skin.DrawOverMultiChoiceList(object) local y = object:GetY() local width = object:GetWidth() local height = object:GetHeight() - local bordercolor = skin.controls.multichoicelist_border_color love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y - 1, width, height + 1) @@ -909,7 +835,6 @@ function skin.DrawToolTip(object) local width = object:GetWidth() local height = object:GetHeight() local bodycolor = skin.controls.tooltip_body_color - local bordercolor = skin.controls.tooltip_border_color love.graphics.setColor(bodycolor) love.graphics.rectangle("fill", x, y, width, height) @@ -968,6 +893,9 @@ function skin.DrawTextInput(object) if multiline then for i=1, #lines do local twidth = font:getWidth(lines[i]) + if twidth == 0 then + twidth = 5 + end love.graphics.setColor(highlightbarcolor) love.graphics.rectangle("fill", textx, texty + bary, twidth, theight) bary = bary + theight @@ -1062,7 +990,6 @@ function skin.DrawOverTextInput(object) local y = object:GetY() local width = object:GetWidth() local height = object:GetHeight() - local bordercolor = skin.controls.textinput_border_color love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) @@ -1083,40 +1010,39 @@ function skin.DrawScrollButton(object) local scrolltype = object:GetScrollType() local down = object.down local bodydowncolor = skin.controls.button_body_down_color - local borderdowncolor = skin.controls.button_border_down_color local bodyhovercolor = skin.controls.button_body_hover_color - local borderhovercolor = skin.controls.button_border_hover_color local bodynohovercolor = skin.controls.button_body_nohover_color - local bordernohovercolor = skin.controls.button_border_nohover_color - local gradientcolor = {} if down then -- button body - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodydowncolor[1] - 20, bodydowncolor[2] - 20, bodydowncolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + local image = skin.images["button-down.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) -- button border - love.graphics.setColor(borderdowncolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) elseif hover then -- button body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodyhovercolor[1] - 20, bodyhovercolor[2] - 20, bodyhovercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + local image = skin.images["button-hover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) -- button border - love.graphics.setColor(borderhovercolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) else -- button body - love.graphics.setColor(bodynohovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodynohovercolor[1] - 20, bodynohovercolor[2] - 20, bodynohovercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + local image = skin.images["button-nohover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) -- button border - love.graphics.setColor(bordernohovercolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) end @@ -1180,17 +1106,16 @@ function skin.DrawSlider(object) local height = object:GetHeight() local slidtype = object:GetSlideType() local baroutlinecolor = skin.controls.slider_bar_outline_color - local barcolor = skin.controls.slider_bar_color if slidtype == "horizontal" then love.graphics.setColor(baroutlinecolor) love.graphics.rectangle("fill", x, y + height/2 - 5, width, 10) - love.graphics.setColor(barcolor) + 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(barcolor) + love.graphics.setColor(bordercolor) love.graphics.rectangle("fill", x + width/2, y + 5, 1, height - 10) end @@ -1208,40 +1133,54 @@ function skin.DrawSliderButton(object) 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 borderdowncolor = skin.controls.button_border_down_color local bodyhovercolor = skin.controls.button_body_hover_color - local borderhovercolor = skin.controls.button_border_down_color local bodynohvercolor = skin.controls.button_body_nohover_color - local bordernohovercolor = skin.controls.button_border_down_color - local gradientcolor = {} + + if not enabled then + local image = skin.images["button-unclickable.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + -- button body + love.graphics.setColor(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 - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodydowncolor[1] - 20, bodydowncolor[2] - 20, bodydowncolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + local image = skin.images["button-down.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) -- button border - love.graphics.setColor(borderdowncolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) elseif hover then -- button body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodyhovercolor[1] - 20, bodyhovercolor[2] - 20, bodyhovercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + local image = skin.images["button-hover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) -- button border - love.graphics.setColor(borderhovercolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) else -- button body - love.graphics.setColor(bodynohvercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - gradientcolor = {bodynohvercolor[1] - 20, bodynohvercolor[2] - 20, bodynohvercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + local image = skin.images["button-nohover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) -- button border - love.graphics.setColor(bordernohovercolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) end @@ -1260,7 +1199,6 @@ function skin.DrawCheckBox(object) local checked = object:GetChecked() local hover = object:GetHover() local bodycolor = skin.controls.checkbox_body_color - local bordercolor = skin.controls.checkbox_border_color local checkcolor = skin.controls.checkbox_check_color love.graphics.setColor(bodycolor) @@ -1292,17 +1230,14 @@ function skin.DrawCollapsibleCategory(object) local width = object:GetWidth() local height = object:GetHeight() local text = object:GetText() - local bodycolor = skin.controls.collapsiblecategory_body_color local textcolor = skin.controls.collapsiblecategory_text_color - local bordercolor = skin.controls.collapsiblecategory_border_color local font = smallfont - local gradientcolor = {bodycolor[1] - 20, bodycolor[2] - 20, bodycolor[3] - 20, 255} + local image = skin.images["button-nohover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight - love.graphics.setColor(bodycolor) - love.graphics.rectangle("fill", x, y, width, height) - - love.graphics.setColor(gradientcolor) - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + love.graphics.setColor(255, 255, 255, 255) + love.graphics.draw(image, x, y, 0, width, scaley) love.graphics.setFont(font) love.graphics.setColor(textcolor) @@ -1348,53 +1283,52 @@ function skin.DrawColumnListHeader(object) local theight = font:getHeight(object.name) local bodydowncolor = skin.controls.columnlistheader_body_down_color local textdowncolor = skin.controls.columnlistheader_text_down_color - local borderdowncolor = skin.controls.columnlistheader_border_down_color local bodyhovercolor = skin.controls.columnlistheader_body_hover_color local textdowncolor = skin.controls.columnlistheader_text_hover_color - local borderdowncolor = skin.controls.columnlistheader_border_down_color local nohovercolor = skin.controls.columnlistheader_body_nohover_color local textnohovercolor = skin.controls.columnlistheader_text_nohover_color - local bordernohovercolor = skin.controls.columnlistheader_border_down_color - local gradientcolor = {} if down then + local image = skin.images["button-down.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight -- header body - love.graphics.setColor(bodydowncolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 1, height - 2) - gradientcolor = {bodydowncolor[1] - 20, bodydowncolor[2] - 20, bodydowncolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + love.graphics.setColor(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(borderdowncolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height, false, false, false, true) elseif hover then + local image = skin.images["button-hover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight -- header body - love.graphics.setColor(bodyhovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 1, height - 2) - gradientcolor = {bodyhovercolor[1] - 20, bodyhovercolor[2] - 20, bodyhovercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + love.graphics.setColor(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(borderdowncolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height, false, false, false, true) else + local image = skin.images["button-nohover.png"] + local imageheight = image:getHeight() + local scaley = height/imageheight -- header body - love.graphics.setColor(nohovercolor) - love.graphics.rectangle("fill", x + 1, y + 1, width - 1, height - 2) - gradientcolor = {nohovercolor[1] - 20, nohovercolor[2] - 20, nohovercolor[3] - 20, 255} - skin.DrawGradient(x, y - 1, width, height, gradientcolor) + love.graphics.setColor(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(bordernohovercolor) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height, false, false, false, true) end @@ -1427,7 +1361,6 @@ function skin.DrawOverColumnListArea(object) local y = object:GetY() local width = object:GetWidth() local height = object:GetHeight() - local bordercolor = skin.controls.columnlist_border_color love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height) @@ -1453,9 +1386,7 @@ function skin.DrawColumnListRow(object) local cwidth, cheight = parent:GetParent():GetColumnSize() local theight = font:getHeight("a") local body1color = skin.controls.columnlistrow_body1_color - local border1color = skin.controls.columnlistrow_border1_color local body2color = skin.controls.columnlistrow_body2_color - local border2color = skin.controls.columnlistrow_border2_color local textcolor = skin.controls.columnlistrow_text_color object:SetTextPos(5, height/2 - theight/2) @@ -1463,12 +1394,12 @@ function skin.DrawColumnListRow(object) if colorindex == 1 then love.graphics.setColor(body1color) love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) - love.graphics.setColor(border1color) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height, true, false, true, true) else love.graphics.setColor(body2color) love.graphics.rectangle("fill", x, y, width, height) - love.graphics.setColor(border2color) + love.graphics.setColor(bordercolor) skin.OutlinedRectangle(x, y, width, height, true, false, true, true) end @@ -1513,7 +1444,6 @@ function skin.DrawLineNumbersPanel(object) local lines = parent:GetLines() local font = parent:GetFont() local theight = font:getHeight("a") - local bordercolor = skin.controls.linenumberspanel_border_color local textcolor = skin.controls.linenumberspanel_text_color local mody = y