--[[------------------------------------------------ -- 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 = "Blue" skin.author = "Nikolai Resokav" skin.version = "1.0" local smallfont = love.graphics.newFont(10) local imagebuttonfont = love.graphics.newFont(15) local bordercolor = {143, 143, 143, 255} -- controls skin.controls = {} -- frame skin.controls.frame_border_color = bordercolor skin.controls.frame_body_color = {255, 255, 255, 150} skin.controls.frame_top_color = {102, 194, 255, 255} skin.controls.frame_name_color = {255, 255, 255, 255} skin.controls.frame_name_font = smallfont -- button skin.controls.button_border_down_color = bordercolor skin.controls.button_border_nohover_color = bordercolor skin.controls.button_border_hover_color = bordercolor skin.controls.button_body_down_color = {128, 204, 255, 255} skin.controls.button_body_nohover_color = {255, 255, 255, 255} skin.controls.button_body_hover_color = {153, 214, 255, 255} skin.controls.button_text_down_color = {255, 255, 255, 255} skin.controls.button_text_nohover_color = {0, 0, 0, 200} skin.controls.button_text_hover_color = {255, 255, 255, 255} skin.controls.button_text_font = smallfont -- image button skin.controls.imagebutton_text_down_color = {255, 255, 255, 255} skin.controls.imagebutton_text_nohover_color = {0, 0, 0, 200} skin.controls.imagebutton_text_hover_color = {255, 255, 255, 255} skin.controls.imagebutton_text_font = imagebuttonfont -- close button skin.controls.closebutton_body_down_color = {255, 255, 255, 255} skin.controls.closebutton_body_nohover_color = {255, 255, 255, 255} skin.controls.closebutton_body_hover_color = {255, 255, 255, 255} -- progress bar skin.controls.progressbar_border_color = bordercolor skin.controls.progressbar_body_color = {255, 255, 255, 255} skin.controls.progressbar_bar_color = {0, 255, 0, 255} skin.controls.progressbar_text_color = {0, 0, 0, 255} skin.controls.progressbar_text_font = smallfont -- list skin.controls.list_border_color = bordercolor skin.controls.list_body_color = {232, 232, 232, 255} -- scrollbar skin.controls.scrollbar_border_down_color = bordercolor skin.controls.scrollbar_border_hover_color = bordercolor skin.controls.scrollbar_border_nohover_color = bordercolor skin.controls.scrollbar_body_down_color = {128, 204, 255, 255} skin.controls.scrollbar_body_nohover_color = {255, 255, 255, 255} skin.controls.scrollbar_body_hover_color = {153, 214, 255, 255} -- scrollarea skin.controls.scrollarea_body_color = {200, 200, 200, 255} skin.controls.scrollarea_border_color = bordercolor -- scrollbody skin.controls.scrollbody_body_color = {0, 0, 0, 0} -- panel skin.controls.panel_body_color = {232, 232, 232, 255} skin.controls.panel_border_color = bordercolor -- tab panel skin.controls.tabpanel_body_color = {232, 232, 232, 255} skin.controls.tabpanel_border_color = bordercolor -- tab button skin.controls.tab_border_nohover_color = bordercolor skin.controls.tab_border_hover_color = bordercolor skin.controls.tab_body_nohover_color = {255, 255, 255, 255} skin.controls.tab_body_hover_color = {153, 214, 255, 255} skin.controls.tab_text_nohover_color = {0, 0, 0, 200} skin.controls.tab_text_hover_color = {255, 255, 255, 255} skin.controls.tab_text_font = smallfont -- multichoice skin.controls.multichoice_body_color = {240, 240, 240, 255} skin.controls.multichoice_border_color = bordercolor skin.controls.multichoice_text_color = {0, 0, 0, 255} skin.controls.multichoice_text_font = smallfont -- multichoicelist skin.controls.multichoicelist_body_color = {240, 240, 240, 200} skin.controls.multichoicelist_border_color = bordercolor -- multichoicerow skin.controls.multichoicerow_body_nohover_color = {240, 240, 240, 200} skin.controls.multichoicerow_body_hover_color = {51, 204, 255, 255} skin.controls.multichoicerow_border_color = {50, 50, 50, 255} skin.controls.multichoicerow_text_nohover_color = {0, 0, 0, 150} skin.controls.multichoicerow_text_hover_color = {255, 255, 255, 255} skin.controls.multichoicerow_text_font = smallfont -- tooltip skin.controls.tooltip_border_color = bordercolor skin.controls.tooltip_body_color = {255, 255, 255, 255} skin.controls.tooltip_text_color = {0, 0, 0, 255} skin.controls.tooltip_text_font = smallfont -- text input skin.controls.textinput_border_color = bordercolor skin.controls.textinput_body_color = {240, 240, 240, 255} skin.controls.textinput_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 ovt == false then love.graphics.rectangle("fill", x, y, width, 1) end -- bottom if ovb == false then love.graphics.rectangle("fill", x, y + height - 1, width, 1) end -- left if ovl == false then love.graphics.rectangle("fill", x, y, 1, height) end -- right if ovr == false then love.graphics.rectangle("fill", x + width - 1, y, 1, height) end end --[[--------------------------------------------------------- - func: DrawRepeatingImage(image, x, y, width, height) - desc: draw a repeating image --]]--------------------------------------------------------- function skin.DrawRepeatingImage(image, x, y, width, height) local image = image local iwidth = image:getWidth() local iheight = image:getHeight() local cords = {} local posx = 0 local posy = 0 local stencilfunc = function() love.graphics.rectangle("fill", x, y, width, height) end local stencil = love.graphics.newStencil(stencilfunc) local images = 0 while posy < height do table.insert(cords, {posx, posy}) if posx >= width then posx = 0 posy = posy + iheight else posx = posx + iwidth end end love.graphics.setStencil(stencil) for k, v in ipairs(cords) do love.graphics.setColor(255, 255, 255, 255) love.graphics.draw(image, x + v[1], y + v[2]) images = images + 1 end love.graphics.setStencil() 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 local once = false for i=1, height - 1 do percent = i/height * 255 color = {color[1], color[2], color[3], loveframes.util.Round(percent)} love.graphics.setColor(unpack(color)) love.graphics.rectangle("fill", x, y + i, width, 1) end end --[[--------------------------------------------------------- - 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 = {} -- 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) gradientcolor = {topcolor[1] - 20, topcolor[2] - 20, topcolor[3] - 20, 255} 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 width = object:GetWidth() local height = object:GetHeight() 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 local gradientcolor = {} 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 end --[[--------------------------------------------------------- - func: DrawImage(object) - desc: draws the image object --]]--------------------------------------------------------- function skin.DrawImage(object) local x = object:GetX() local y = object:GetY() local image = object.image local color = object.imagecolor if color then love.graphics.setColor(unpack(color)) love.graphics.draw(image) else love.graphics.setColor(255, 255, 255, 255) love.graphics.draw(image, x, y) 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) 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(skin.controls.imagebutton_text_down_color)) 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(skin.controls.imagebutton_text_hover_color)) 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(skin.controls.imagebutton_text_down_color)) 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 = {} -- 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) gradientcolor = {barcolor[1], barcolor[2] - 20, barcolor[3], 255} 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 width = object:GetWidth() local height = object:GetHeight() 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() end 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 local textcolor = skin.controls.tooltip_text_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) love.graphics.setColor(unpack(textcolor)) 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"] 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"] 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"] 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"] 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(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 gradientcolor = {} love.graphics.setColor(unpack(skin.controls.checkbox_body_color)) love.graphics.rectangle("fill", x, y, width, height) love.graphics.setColor(unpack(skin.controls.checkbox_border_color)) skin.OutlinedRectangle(x, y, width, height) if checked then love.graphics.setColor(unpack(skin.controls.checkbox_check_color)) love.graphics.rectangle("fill", 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(skin.controls.columnlistarea_body_color)) 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)