panel.lua 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475
  1. local love = require("compat")
  2. local panel = {}
  3. panel.__index = panel
  4. function panel:new( x, y, width, height, cornersize )
  5. local o = {
  6. x = x,
  7. y = y,
  8. w = width,
  9. h = height }
  10. setmetatable( o, self )
  11. cornersize = cornersize or 3
  12. self.corners = {cornersize, cornersize, cornersize, cornersize}
  13. panel.calcBorder( o )
  14. return o
  15. end
  16. function panel:calcBorder()
  17. self.border = {}
  18. -- top left:
  19. if self.corners[1] > 0 then
  20. table.insert( self.border, 0 )
  21. table.insert( self.border, 0 + self.corners[1] )
  22. table.insert( self.border, 0 + self.corners[1] )
  23. table.insert( self.border, 0 )
  24. else
  25. table.insert( self.border, 0 )
  26. table.insert( self.border, 0 )
  27. end
  28. -- top right
  29. if self.corners[2] > 0 then
  30. table.insert( self.border, self.w - self.corners[2] )
  31. table.insert( self.border, 0 )
  32. table.insert( self.border, self.w )
  33. table.insert( self.border, 0 + self.corners[2] )
  34. else
  35. table.insert( self.border, self.w )
  36. table.insert( self.border, 0 )
  37. end
  38. -- bottom right
  39. if self.corners[3] > 0 then
  40. table.insert( self.border, self.w )
  41. table.insert( self.border, self.h - self.corners[3] )
  42. table.insert( self.border, self.w - self.corners[3] )
  43. table.insert( self.border, self.h )
  44. else
  45. table.insert( self.border, self.w )
  46. table.insert( self.border, self.h )
  47. end
  48. -- bottom left:
  49. if self.corners[4] > 0 then
  50. table.insert( self.border, self.corners[4] )
  51. table.insert( self.border, self.h )
  52. table.insert( self.border, 0 )
  53. table.insert( self.border, self.h - self.corners[4] )
  54. else
  55. table.insert( self.border, 0 )
  56. table.insert( self.border, self.h )
  57. end
  58. end
  59. function panel:draw( x, y )
  60. love.graphics.setColor( 0,0,0,200 )
  61. love.graphics.push()
  62. love.graphics.translate( x or self.x, y or self.y )
  63. love.graphics.polygon( "fill", self.border )
  64. love.graphics.pop()
  65. end
  66. return panel