Color.lua 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384
  1. -------------------------------------------------------------------------------
  2. -- Spine Runtimes Software License v2.5
  3. --
  4. -- Copyright (c) 2013-2016, Esoteric Software
  5. -- All rights reserved.
  6. --
  7. -- You are granted a perpetual, non-exclusive, non-sublicensable, and
  8. -- non-transferable license to use, install, execute, and perform the Spine
  9. -- Runtimes software and derivative works solely for personal or internal
  10. -- use. Without the written permission of Esoteric Software (see Section 2 of
  11. -- the Spine Software License Agreement), you may not (a) modify, translate,
  12. -- adapt, or develop new applications using the Spine Runtimes or otherwise
  13. -- create derivative works or improvements of the Spine Runtimes or (b) remove,
  14. -- delete, alter, or obscure any trademarks or any copyright, trademark, patent,
  15. -- or other intellectual property or proprietary rights notices on or in the
  16. -- Software, including any copy thereof. Redistributions in binary or source
  17. -- form must include this license and terms.
  18. --
  19. -- THIS SOFTWARE IS PROVIDED BY ESOTERIC SOFTWARE "AS IS" AND ANY EXPRESS OR
  20. -- IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
  21. -- MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO
  22. -- EVENT SHALL ESOTERIC SOFTWARE BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
  23. -- SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
  24. -- PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES, BUSINESS INTERRUPTION, OR LOSS OF
  25. -- USE, DATA, OR PROFITS) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
  26. -- IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
  27. -- ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE
  28. -- POSSIBILITY OF SUCH DAMAGE.
  29. -------------------------------------------------------------------------------
  30. local setmetatable = setmetatable
  31. local utils = require "spine-lua.utils"
  32. local Color = {}
  33. Color.__index = Color
  34. function Color.new ()
  35. local self = {
  36. r = 0, g = 0, b = 0, a = 0
  37. }
  38. setmetatable(self, Color)
  39. return self
  40. end
  41. function Color.newWith (r, g, b, a)
  42. local self = {
  43. r = r, g = g, b = b, a = a
  44. }
  45. setmetatable(self, Color)
  46. return self
  47. end
  48. function Color:set(r, g, b, a)
  49. self.r = r
  50. self.g = g
  51. self.b = b
  52. self.a = a
  53. end
  54. function Color:setFrom(color)
  55. self.r = color.r
  56. self.g = color.g
  57. self.b = color.b
  58. self.a = color.a
  59. end
  60. function Color:add(r, g, b, a)
  61. self.r = self.r + r
  62. self.g = self.g + g
  63. self.b = self.b + b
  64. self.a = self.a + a
  65. self:clamp()
  66. end
  67. function Color:clamp()
  68. self.r = utils.clamp(self.r, 0, 1)
  69. self.g = utils.clamp(self.g, 0, 1)
  70. self.b = utils.clamp(self.b, 0, 1)
  71. self.a = utils.clamp(self.a, 0, 1)
  72. end
  73. return Color