--[[------------------------------------------------ -- Love Frames - A GUI library for LOVE -- -- Copyright (c) 2012 Kenny Shields -- --]]------------------------------------------------ -- skin table local skin = {} -- skin info (you always need this in a skin) skin.name = "Orange" 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_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, 200} 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 ovt == false then love.graphics.rectangle("fill", x, y, width, 1) end -- bottom if ovb == false then love.graphics.rectangle("fill", x, y + height - 1, width, 1) end -- left if ovl == false then love.graphics.rectangle("fill", x, y, 1, height) end -- right if ovr == false then love.graphics.rectangle("fill", x + width - 1, y, 1, height) end end --[[--------------------------------------------------------- - func: 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 --]]--------------------------------------------------------- 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 local gradientcolor = {topcolor[1] - 20, topcolor[2] - 20, topcolor[3], 255} -- frame body love.graphics.setColor(unpack(bodycolor)) love.graphics.rectangle("fill", x, y, width, height) -- frame top bar love.graphics.setColor(unpack(topcolor)) love.graphics.rectangle("fill", x, y, width, 25) skin.DrawGradient(x, y, width, 25, gradientcolor) love.graphics.setColor(unpack(bordercolor)) skin.OutlinedRectangle(x, y + 25, width, 1) -- frame name section love.graphics.setFont(font) love.graphics.setColor(unpack(namecolor)) love.graphics.print(name, x + 5, y + 5) -- frame border love.graphics.setColor(unpack(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 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 gradientcolor = {} if down then -- button body love.graphics.setColor(unpack(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) -- button text love.graphics.setFont(font) love.graphics.setColor(unpack(textdowncolor)) love.graphics.print(text, x + width/2 - twidth/2, y + height/2 - theight/2) -- button border love.graphics.setColor(unpack(borderdowncolor)) skin.OutlinedRectangle(x, y, width, height) elseif hover then -- button body love.graphics.setColor(unpack(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) -- button text love.graphics.setFont(font) love.graphics.setColor(unpack(texthovercolor)) love.graphics.print(text, x + width/2 - twidth/2, y + height/2 - theight/2) -- button border love.graphics.setColor(unpack(borderhovercolor)) skin.OutlinedRectangle(x, y, width, height) else -- button body love.graphics.setColor(unpack(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) -- button text love.graphics.setFont(font) love.graphics.setColor(unpack(textnohovercolor)) love.graphics.print(text, x + width/2 - twidth/2, y + height/2 - theight/2) -- button border love.graphics.setColor(unpack(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 staticx = object:GetStaticX() local width = object:GetWidth() local height = object:GetHeight() local parentwidth = object.parent:GetWidth() local index = loveframes.config["ACTIVESKIN"] local font = skin.controls.button_text_font local twidth = font:getWidth("X") local theight = font:getHeight("X") local hover = object: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 if down == true then -- button body love.graphics.setColor(unpack(bodydowncolor)) love.graphics.draw(image, x, y) elseif hover == true then -- button body love.graphics.setColor(unpack(bodyhovercolor)) love.graphics.draw(image, x, y) else -- button body love.graphics.setColor(unpack(bodynohovercolor)) love.graphics.draw(image, x, y) end if staticx ~= (parentwidth - 20) then object:SetPos(parentwidth - 20, 4) end 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(unpack(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(unpack(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(unpack(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(unpack(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 local gradientcolor = {barcolor[1], barcolor[2] - 20, barcolor[3], 255} -- progress bar body love.graphics.setColor(unpack(bodycolor)) love.graphics.rectangle("fill", x, y, width, height) love.graphics.setColor(unpack(barcolor)) love.graphics.rectangle("fill", x, y, barwidth, height) skin.DrawGradient(x, y, barwidth, height, gradientcolor) love.graphics.setFont(font) love.graphics.setColor(unpack(textcolor)) love.graphics.print(text, x + width/2 - twidth/2, y + height/2 - theight/2) -- progress bar border love.graphics.setColor(unpack(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(unpack(bodycolor)) love.graphics.rectangle("fill", x, y, width, height) love.graphics.setColor(unpack(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 local gradientcolor = {} if dragging then love.graphics.setColor(unpack(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(unpack(borderdowncolor)) skin.OutlinedRectangle(x, y, width, height) elseif hover then love.graphics.setColor(unpack(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(unpack(borderhovercolor)) skin.OutlinedRectangle(x, y, width, height) else love.graphics.setColor(unpack(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(unpack(bordernohovercolor)) skin.OutlinedRectangle(x, y, width, height) end if bartype == "vertical" then love.graphics.setColor(unpack(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(unpack(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(unpack(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(unpack(bodycolor)) love.graphics.rectangle("fill", x, y, width, height) love.graphics.setColor(unpack(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(unpack(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(unpack(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(unpack(bodycolor)) love.graphics.rectangle("fill", x, y + buttonheight, width, height - buttonheight) love.graphics.setColor(unpack(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 local gradientcolor = {} 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(unpack(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) love.graphics.setColor(unpack(bordercolor)) skin.OutlinedRectangle(x, y, width, height) if image then -- 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(unpack(texthovercolor)) love.graphics.print(text, x + imagewidth + 10, y + height/2 - theight/2) else -- button text love.graphics.setFont(font) love.graphics.setColor(unpack(texthovercolor)) love.graphics.print(text, x + 5, y + height/2 - theight/2) end else -- button body love.graphics.setColor(unpack(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) love.graphics.setColor(unpack(bordercolor)) skin.OutlinedRectangle(x, y, width, height) if image then -- 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(unpack(textnohovercolor)) love.graphics.print(object.text, x + imagewidth + 10, y + height/2 - theight/2) else -- button text love.graphics.setFont(font) love.graphics.setColor(unpack(textnohovercolor)) love.graphics.print(object.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 love.graphics.setColor(unpack(bodycolor)) love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) love.graphics.setColor(unpack(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(unpack(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(unpack(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(unpack(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(unpack(bodyhovecolor)) love.graphics.rectangle("fill", x, y, width, height) love.graphics.setColor(unpack(texthovercolor)) love.graphics.print(text, x + 5, y + 5) else love.graphics.setColor(unpack(bodynohovercolor)) love.graphics.rectangle("fill", x, y, width, height) love.graphics.setColor(unpack(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(unpack(bodycolor)) love.graphics.rectangle("fill", x, y, width, height) love.graphics.setColor(unpack(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(unpack(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(unpack(highlightbarcolor)) love.graphics.rectangle("fill", textx, texty + bary, twidth, theight) bary = bary + theight end else local twidth = font:getWidth(text) love.graphics.setColor(unpack(highlightbarcolor)) love.graphics.rectangle("fill", textx, texty, twidth, theight) end end if showindicator and focus then love.graphics.setColor(unpack(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(unpack(textselectedcolor)) else love.graphics.setColor(unpack(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(unpack(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 local gradientcolor = {} if down then -- button body love.graphics.setColor(unpack(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) -- button border love.graphics.setColor(unpack(borderdowncolor)) skin.OutlinedRectangle(x, y, width, height) elseif hover then -- button body love.graphics.setColor(unpack(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) -- button border love.graphics.setColor(unpack(borderhovercolor)) skin.OutlinedRectangle(x, y, width, height) else -- button body love.graphics.setColor(unpack(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) -- button border love.graphics.setColor(unpack(bordernohovercolor)) skin.OutlinedRectangle(x, y, width, height) end if scrolltype == "up" then local image = skin.images["arrow-up.png"] local imagewidth = image:getWidth() local imageheight = image:getHeight() 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 - imagewidth/2, y + height/2 - imageheight/2) elseif scrolltype == "down" then local image = skin.images["arrow-down.png"] local imagewidth = image:getWidth() local imageheight = image:getHeight() 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 - imagewidth/2, y + height/2 - imageheight/2) elseif scrolltype == "left" then local image = skin.images["arrow-left.png"] local imagewidth = image:getWidth() local imageheight = image:getHeight() 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 - imagewidth/2, y + height/2 - imageheight/2) elseif scrolltype == "right" then local image = skin.images["arrow-right.png"] local imagewidth = image:getWidth() local imageheight = image:getHeight() 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 - imagewidth/2, y + height/2 - imageheight/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(unpack(baroutlinecolor)) love.graphics.rectangle("fill", x, y + height/2 - 5, width, 10) love.graphics.setColor(unpack(barcolor)) love.graphics.rectangle("fill", x + 5, y + height/2, width - 10, 1) elseif slidtype == "vertical" then love.graphics.setColor(unpack(baroutlinecolor)) love.graphics.rectangle("fill", x + width/2 - 5, y, 10, height) love.graphics.setColor(unpack(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 local gradientcolor = {} if down then -- button body love.graphics.setColor(unpack(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) -- button border love.graphics.setColor(unpack(borderdowncolor)) skin.OutlinedRectangle(x, y, width, height) elseif hover then -- button body love.graphics.setColor(unpack(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) -- button border love.graphics.setColor(unpack(borderhovercolor)) skin.OutlinedRectangle(x, y, width, height) else -- button body love.graphics.setColor(unpack(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) -- button border love.graphics.setColor(unpack(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(unpack(bodycolor)) love.graphics.rectangle("fill", x, y, width, height) love.graphics.setColor(unpack(bordercolor)) skin.OutlinedRectangle(x, y, width, height) if checked then love.graphics.setColor(unpack(checkcolor)) love.graphics.rectangle("fill", x + 4, y + 4, width - 8, height - 8) end if hover then love.graphics.setColor(unpack(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 local gradientcolor = {bodycolor[1] - 20, bodycolor[2] - 20, bodycolor[3] - 20, 255} love.graphics.setColor(unpack(bodycolor)) love.graphics.rectangle("fill", x, y, width, height) love.graphics.setColor(unpack(gradientcolor)) skin.DrawGradient(x, y - 1, width, height, gradientcolor) love.graphics.setFont(font) love.graphics.setColor(unpack(textcolor)) love.graphics.print(text, x + 5, y + 5) love.graphics.setColor(unpack(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(unpack(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 local gradientcolor = {} if down then -- header body love.graphics.setColor(unpack(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) -- header name love.graphics.setFont(font) love.graphics.setColor(unpack(textdowncolor)) love.graphics.print(name, x + width/2 - twidth/2, y + height/2 - theight/2) -- header border love.graphics.setColor(unpack(borderdowncolor)) skin.OutlinedRectangle(x, y, width, height, false, false, false, true) elseif hover then -- header body love.graphics.setColor(unpack(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) -- header name love.graphics.setFont(font) love.graphics.setColor(unpack(textdowncolor)) love.graphics.print(name, x + width/2 - twidth/2, y + height/2 - theight/2) -- header border love.graphics.setColor(unpack(borderdowncolor)) skin.OutlinedRectangle(x, y, width, height, false, false, false, true) else -- header body love.graphics.setColor(unpack(nohovercolor)) love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) gradientcolor = {nohovercolor[1] - 20, nohovercolor[2] - 20, nohovercolor[3] - 20, 255} skin.DrawGradient(x, y - 1, width, height, gradientcolor) -- header name love.graphics.setFont(font) love.graphics.setColor(unpack(textnohovercolor)) love.graphics.print(name, x + width/2 - twidth/2, y + height/2 - theight/2) -- header border love.graphics.setColor(unpack(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(unpack(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(unpack(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(unpack(body1color)) love.graphics.rectangle("fill", x + 1, y + 1, width - 2, height - 2) love.graphics.setColor(unpack(skin.controls.columnlistrow_border1_color)) skin.OutlinedRectangle(x, y, width, height, true, false, true, true) else love.graphics.setColor(unpack(body2color)) love.graphics.rectangle("fill", x, y, width, height) love.graphics.setColor(unpack(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(unpack(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(unpack(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(unpack(bordercolor)) skin.OutlinedRectangle(x, y, width, height, true, true, true, false) for i=1, #lines do love.graphics.setColor(unpack(textcolor)) love.graphics.print(i, object.x + 5, mody - offsety) mody = mody + theight end end -- register the skin loveframes.skins.Register(skin)