function DrawNineslice(image, x1, y1, x2, y2)
local NinesliceImage = type(image) == 'userdata' and image or type(image) == 'string' and love.graphics.newImage(image)
local SpriteWidth, SpriteHeight = NinesliceImage:getWidth(), NinesliceImage:getHeight()
local NinesliceWidth, NinesliceHeight = SpriteWidth / 3, SpriteHeight / 3
local Width, Height = x2 - x1 < SpriteWidth and SpriteWidth or x2 - x1, y2 - y1 < SpriteHeight and SpriteHeight or y2 - y1
local NinesliceQuad = {
-- Top
[1] = love.graphics.newQuad(0, 0, NinesliceWidth, NinesliceHeight, NinesliceImage:getDimensions()),
[2] = love.graphics.newQuad(NinesliceWidth, 0, NinesliceWidth, NinesliceHeight, NinesliceImage:getDimensions()),
[3] = love.graphics.newQuad(NinesliceWidth * 2, 0, NinesliceWidth, NinesliceHeight, NinesliceImage:getDimensions()),
-- Middle
[4] = love.graphics.newQuad(0, NinesliceHeight, NinesliceWidth, NinesliceHeight, NinesliceImage:getDimensions()),
[5] = love.graphics.newQuad(NinesliceWidth, NinesliceHeight, NinesliceWidth, NinesliceHeight, NinesliceImage:getDimensions()),
[6] = love.graphics.newQuad(NinesliceWidth * 2, NinesliceHeight, NinesliceWidth, NinesliceHeight, NinesliceImage:getDimensions()),
-- Bottom
[7] = love.graphics.newQuad(0, NinesliceHeight * 2, NinesliceWidth, NinesliceHeight, NinesliceImage:getDimensions()),
[8] = love.graphics.newQuad(NinesliceWidth, NinesliceHeight * 2, NinesliceWidth, NinesliceHeight, NinesliceImage:getDimensions()),
[9] = love.graphics.newQuad(NinesliceWidth * 2, NinesliceHeight * 2, NinesliceWidth, NinesliceHeight, NinesliceImage:getDimensions())
}
-- Top
love.graphics.draw(NinesliceImage, NinesliceQuad[1], x1, y1)
love.graphics.draw(NinesliceImage, NinesliceQuad[2], x1 + NinesliceWidth, y1, 0, (Width - NinesliceWidth * 2) / NinesliceWidth, 1)
love.graphics.draw(NinesliceImage, NinesliceQuad[3], x1 + (Width - NinesliceWidth), y1)
-- Middle
love.graphics.draw(NinesliceImage, NinesliceQuad[4], x1, y1 + NinesliceHeight, 0, 1, (Height - NinesliceHeight * 2) / NinesliceHeight)
love.graphics.draw(NinesliceImage, NinesliceQuad[5], x1 + NinesliceWidth, y1 + NinesliceHeight, 0, (Width - NinesliceWidth * 2) / NinesliceWidth, (Height - NinesliceHeight * 2) / NinesliceHeight)
love.graphics.draw(NinesliceImage, NinesliceQuad[6], x1 + (Width - NinesliceWidth), y1 + NinesliceHeight, 0, 1, (Height - NinesliceHeight * 2) / NinesliceHeight)
-- Bottom
love.graphics.draw(NinesliceImage, NinesliceQuad[7], x1, y1 + (Height - NinesliceHeight))
love.graphics.draw(NinesliceImage, NinesliceQuad[8], x1 + NinesliceWidth, y1 + (Height - NinesliceHeight), 0, (Width - NinesliceWidth * 2) / NinesliceWidth, 1)
love.graphics.draw(NinesliceImage, NinesliceQuad[9], x1 + (Width - NinesliceWidth), y1 + (Height - NinesliceHeight))
end