Advertisement
Anatoly03

Colors v6

Nov 9th, 2019
206
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 45.62 KB | None | 0 0
  1.  
  2. --# Colors
  3.  
  4.  
  5. --[[
  6.  
  7. Author: Anatoly
  8. License: ISC
  9. Description: Colors is a library, that manipulates colors.
  10. Thread: https://codea.io/talk/discussion/10043/colors
  11. Release: 6
  12.  
  13. FIX! redish has been changed to the correct reddish where it hasn't been yet.
  14.  
  15. WARNING! In Colors{}, "transparency" renamed to "alpha"
  16.  
  17. CHANGES
  18. - In Colors{}, "transparency" renamed to "alpha"
  19. - Function "Background(s, a)" where s is any possible Color() input, and a (optional), the transparency.
  20. - Grayscales now don't support all the prefices.
  21. - New prefices! cyanish, magentish, yellowish
  22.  
  23. In Main:
  24. - Dynamic backround, average of colors you see. Makes the background fit the theme.
  25. - Changed to the scroll engine.
  26.  
  27. ]]
  28.  
  29. colors = {}
  30. _colors = {}
  31. _colors.svg = {}
  32. _colors.x11 = {}
  33.  
  34. do
  35.  
  36. local colors1 = {}
  37.  
  38. -- Origins
  39. colors1["red"] = color(255, 0, 0, 255)
  40. colors1["orangered"] = color(255, 60, 0, 255)
  41. colors1["orange"] = color(255, 150, 0, 255)
  42. colors1["brown"] = color(200, 115, 45, 255)
  43. colors1["darkbrown"] = color(115, 75, 40, 255)
  44. colors1["strawberry-red"] = color(223, 85, 111, 255)
  45. colors1["yellow"] = color(255, 255, 0, 255)
  46. colors1["gold"] = color(225, 180, 60, 255)
  47. colors1["bronze"] = color(190, 155, 90, 255)
  48. colors1["forestgreen"] = color(0, 155, 0, 255)
  49. colors1["middlegreen"] = color(150, 155, 0, 255)
  50. colors1["green"] = color(0, 255, 0, 255)
  51. colors1["grassgreen"] = color(150, 255, 0, 255)
  52. colors1["turquoise"] = color(0, 255, 150, 255)
  53. colors1["neon-green"] = color(210, 255, 0, 255)
  54. colors1["blue"] = color(0, 0, 255, 255)
  55. colors1["skyblue"] = color(0, 150, 255, 255)
  56. colors1["seablue"] = color(50, 200, 255)
  57. colors1["diamondblue"] = color(95, 170, 225, 255)
  58. colors1["cyan"] = color(0, 255, 255, 255)
  59. colors1["silver"] = color(180, 210, 210, 255)
  60. colors1["cold-white"] = color(192, 212, 225, 255)
  61. colors1["warm-white"] = color(228, 223, 207, 255)
  62. colors1["purple"] = color(160, 0, 255, 255)
  63. colors1["rosa"] = color(255, 0, 150, 255)
  64. colors1["magenta"] = color(255, 0, 255, 255)
  65. colors1["pink"] = color(255, 150, 255, 255)
  66. colors1["violet"] = color(125, 0, 255, 255)
  67. colors1["darkviolet"] = color(150, 25, 120, 255)
  68.  
  69. -- SVG, X11
  70. -- Author: Andrew Stacey, adopted by Anatoly
  71. -- Website: http://www.math.ntnu.no/~stacey/HowDidIDoThat/iPad/Codea.html
  72. -- Source: https://github.com/loopspace/Codea-Library-Base/blob/master/ColourExt.lua
  73. -- Licence: CC0 (http://wiki.creativecommons.org/CC0)
  74.  
  75. -- SVG
  76.  
  77. _colors.svg.AliceBlue = color(239,247,255,255)
  78. _colors.svg.AntiqueWhite = color(249,234,215,255)
  79. _colors.svg.Aqua = color(0,255,255,255)
  80. _colors.svg.Aquamarine = color(126,255,211,255)
  81. _colors.svg.Azure = color(239,255,255,255)
  82. _colors.svg.Beige = color(244,244,220,255)
  83. _colors.svg.Bisque = color(255,227,196,255)
  84. _colors.svg.Black = color(0,0,0,255)
  85. _colors.svg.BlanchedAlmond = color(255,234,205,255)
  86. _colors.svg.Blue = color(0,0,255,255)
  87. _colors.svg.BlueViolet = color(137,43,226,255)
  88. _colors.svg.Brown = color(165,42,42,255)
  89. _colors.svg.BurlyWood = color(221,183,135,255)
  90. _colors.svg.CadetBlue = color(94,158,160,255)
  91. _colors.svg.Chartreuse = color(126,255,0,255)
  92. _colors.svg.Chocolate = color(210,104,29,255)
  93. _colors.svg.Coral = color(255,126,79,255)
  94. _colors.svg.CornflowerBlue = color(99,149,237,255)
  95. _colors.svg.Cornsilk = color(255,247,220,255)
  96. _colors.svg.Crimson = color(220,20,59,255)
  97. _colors.svg.Cyan = color(0,255,255,255)
  98. _colors.svg.DarkBlue = color(0,0,138,255)
  99. _colors.svg.DarkCyan = color(0,138,138,255)
  100. _colors.svg.DarkGoldenrod = color(183,133,11,255)
  101. _colors.svg.DarkGray = color(169,169,169,255)
  102. _colors.svg.DarkGreen = color(0,99,0,255)
  103. _colors.svg.DarkGrey = color(169,169,169,255)
  104. _colors.svg.DarkKhaki = color(188,182,107,255)
  105. _colors.svg.DarkMagenta = color(138,0,138,255)
  106. _colors.svg.DarkOliveGreen = color(84,107,47,255)
  107. _colors.svg.DarkOrange = color(255,140,0,255)
  108. _colors.svg.DarkOrchid = color(183,49,204,255)
  109. _colors.svg.DarkRed = color(138,0,0,255)
  110. _colors.svg.DarkSalmon = color(232,150,122,255)
  111. _colors.svg.DarkSeaGreen = color(142,187,142,255)
  112. _colors.svg.DarkSlateBlue = color(72,61,138,255)
  113. _colors.svg.DarkSlateGray = color(47,79,79,255)
  114. _colors.svg.DarkSlateGrey = color(47,79,79,255)
  115. _colors.svg.DarkTurquoise = color(0,206,209,255)
  116. _colors.svg.DarkViolet = color(147,0,211,255)
  117. _colors.svg.DeepPink = color(255,20,146,255)
  118. _colors.svg.DeepSkyBlue = color(0,191,255,255)
  119. _colors.svg.DimGray = color(104,104,104,255)
  120. _colors.svg.DimGrey = color(104,104,104,255)
  121. _colors.svg.DodgerBlue = color(29,144,255,255)
  122. _colors.svg.FireBrick = color(177,33,33,255)
  123. _colors.svg.FloralWhite = color(255,249,239,255)
  124. _colors.svg.ForestGreen = color(33,138,33,255)
  125. _colors.svg.Fuchsia = color(255,0,255,255)
  126. _colors.svg.Gainsboro = color(220,220,220,255)
  127. _colors.svg.GhostWhite = color(247,247,255,255)
  128. _colors.svg.Gold = color(255,215,0,255)
  129. _colors.svg.Goldenrod = color(218,165,31,255)
  130. _colors.svg.Gray = color(127,127,127,255)
  131. _colors.svg.Green = color(0,127,0,255)
  132. _colors.svg.GreenYellow = color(173,255,47,255)
  133. _colors.svg.Grey = color(127,127,127,255)
  134. _colors.svg.Honeydew = color(239,255,239,255)
  135. _colors.svg.HotPink = color(255,104,179,255)
  136. _colors.svg.IndianRed = color(205,91,91,255)
  137. _colors.svg.Indigo = color(74,0,130,255)
  138. _colors.svg.Ivory = color(255,255,239,255)
  139. _colors.svg.Khaki = color(239,229,140,255)
  140. _colors.svg.Lavender = color(229,229,249,255)
  141. _colors.svg.LavenderBlush = color(255,239,244,255)
  142. _colors.svg.LawnGreen = color(124,252,0,255)
  143. _colors.svg.LemonChiffon = color(255,249,205,255)
  144. _colors.svg.LightBlue = color(173,216,229,255)
  145. _colors.svg.LightCoral = color(239,127,127,255)
  146. _colors.svg.LightCyan = color(224,255,255,255)
  147. _colors.svg.LightGoldenrod = color(237,221,130,255)
  148. _colors.svg.LightGoldenrodYellow = color(249,249,210,255)
  149. _colors.svg.LightGray = color(211,211,211,255)
  150. _colors.svg.LightGreen = color(144,237,144,255)
  151. _colors.svg.LightGrey = color(211,211,211,255)
  152. _colors.svg.LightPink = color(255,181,192,255)
  153. _colors.svg.LightSalmon = color(255,160,122,255)
  154. _colors.svg.LightSeaGreen = color(31,177,170,255)
  155. _colors.svg.LightSkyBlue = color(135,206,249,255)
  156. _colors.svg.LightSlateBlue = color(132,112,255,255)
  157. _colors.svg.LightSlateGray = color(119,135,153,255)
  158. _colors.svg.LightSlateGrey = color(119,135,153,255)
  159. _colors.svg.LightSteelBlue = color(175,196,221,255)
  160. _colors.svg.LightYellow = color(255,255,224,255)
  161. _colors.svg.Lime = color(0,255,0,255)
  162. _colors.svg.LimeGreen = color(49,205,49,255)
  163. _colors.svg.Linen = color(249,239,229,255)
  164. _colors.svg.Magenta = color(255,0,255,255)
  165. _colors.svg.Maroon = color(127,0,0,255)
  166. _colors.svg.MediumAquamarine = color(102,205,170,255)
  167. _colors.svg.MediumBlue = color(0,0,205,255)
  168. _colors.svg.MediumOrchid = color(186,84,211,255)
  169. _colors.svg.MediumPurple = color(146,112,219,255)
  170. _colors.svg.MediumSeaGreen = color(59,178,113,255)
  171. _colors.svg.MediumSlateBlue = color(123,104,237,255)
  172. _colors.svg.MediumSpringGreen = color(0,249,154,255)
  173. _colors.svg.MediumTurquoise = color(72,209,204,255)
  174. _colors.svg.MediumVioletRed = color(198,21,132,255)
  175. _colors.svg.MidnightBlue = color(24,24,112,255)
  176. _colors.svg.MintCream = color(244,255,249,255)
  177. _colors.svg.MistyRose = color(255,227,225,255)
  178. _colors.svg.Moccasin = color(255,227,181,255)
  179. _colors.svg.NavajoWhite = color(255,221,173,255)
  180. _colors.svg.Navy = color(0,0,127,255)
  181. _colors.svg.NavyBlue = color(0,0,127,255)
  182. _colors.svg.OldLace = color(252,244,229,255)
  183. _colors.svg.Olive = color(127,127,0,255)
  184. _colors.svg.OliveDrab = color(107,141,34,255)
  185. _colors.svg.Orange = color(255,165,0,255)
  186. _colors.svg.OrangeRed = color(255,68,0,255)
  187. _colors.svg.Orchid = color(218,112,214,255)
  188. _colors.svg.PaleGoldenrod = color(237,232,170,255)
  189. _colors.svg.PaleGreen = color(151,251,151,255)
  190. _colors.svg.PaleTurquoise = color(175,237,237,255)
  191. _colors.svg.PaleVioletRed = color(219,112,146,255)
  192. _colors.svg.PapayaWhip = color(255,238,212,255)
  193. _colors.svg.PeachPuff = color(255,218,184,255)
  194. _colors.svg.Peru = color(205,132,63,255)
  195. _colors.svg.Pink = color(255,191,202,255)
  196. _colors.svg.Plum = color(221,160,221,255)
  197. _colors.svg.PowderBlue = color(175,224,229,255)
  198. _colors.svg.Purple = color(127,0,127,255)
  199. _colors.svg.Red = color(255,0,0,255)
  200. _colors.svg.RosyBrown = color(187,142,142,255)
  201. _colors.svg.RoyalBlue = color(65,104,225,255)
  202. _colors.svg.SaddleBrown = color(138,68,19,255)
  203. _colors.svg.Salmon = color(249,127,114,255)
  204. _colors.svg.SandyBrown = color(243,164,95,255)
  205. _colors.svg.SeaGreen = color(45,138,86,255)
  206. _colors.svg.Seashell = color(255,244,237,255)
  207. _colors.svg.Sienna = color(160,81,44,255)
  208. _colors.svg.Silver = color(191,191,191,255)
  209. _colors.svg.SkyBlue = color(135,206,234,255)
  210. _colors.svg.SlateBlue = color(105,89,205,255)
  211. _colors.svg.SlateGray = color(112,127,144,255)
  212. _colors.svg.SlateGrey = color(112,127,144,255)
  213. _colors.svg.Snow = color(255,249,249,255)
  214. _colors.svg.SpringGreen = color(0,255,126,255)
  215. _colors.svg.SteelBlue = color(70,130,179,255)
  216. _colors.svg.Tan = color(210,179,140,255)
  217. _colors.svg.Teal = color(0,127,127,255)
  218. _colors.svg.Thistle = color(216,191,216,255)
  219. _colors.svg.Tomato = color(255,99,71,255)
  220. _colors.svg.Turquoise = color(63,224,207,255)
  221. _colors.svg.Violet = color(237,130,237,255)
  222. _colors.svg.VioletRed = color(208,31,144,255)
  223. _colors.svg.Wheat = color(244,221,178,255)
  224. _colors.svg.White = color(255,255,255,255)
  225. _colors.svg.WhiteSmoke = color(244,244,244,255)
  226. _colors.svg.Yellow = color(255,255,0,255)
  227. _colors.svg.YellowGreen = color(154,205,49,255)
  228.  
  229. for a, b in pairs(_colors.svg) do table.insert(_colors, {n="svg-"..string.lower(a), c=b}) end
  230.  
  231. -- X11
  232.  
  233. _colors.x11.AntiqueWhite1 = color(255,238,219,255)
  234. _colors.x11.AntiqueWhite2 = color(237,223,204,255)
  235. _colors.x11.AntiqueWhite3 = color(205,191,175,255)
  236. _colors.x11.AntiqueWhite4 = color(138,130,119,255)
  237. _colors.x11.Aquamarine1 = color(126,255,211,255)
  238. _colors.x11.Aquamarine2 = color(118,237,197,255)
  239. _colors.x11.Aquamarine3 = color(102,205,170,255)
  240. _colors.x11.Aquamarine4 = color(68,138,116,255)
  241. _colors.x11.Azure1 = color(239,255,255,255)
  242. _colors.x11.Azure2 = color(224,237,237,255)
  243. _colors.x11.Azure3 = color(192,205,205,255)
  244. _colors.x11.Azure4 = color(130,138,138,255)
  245. _colors.x11.Bisque1 = color(255,227,196,255)
  246. _colors.x11.Bisque2 = color(237,212,182,255)
  247. _colors.x11.Bisque3 = color(205,182,158,255)
  248. _colors.x11.Bisque4 = color(138,124,107,255)
  249. _colors.x11.Blue1 = color(0,0,255,255)
  250. _colors.x11.Blue2 = color(0,0,237,255)
  251. _colors.x11.Blue3 = color(0,0,205,255)
  252. _colors.x11.Blue4 = color(0,0,138,255)
  253. _colors.x11.Brown1 = color(255,63,63,255)
  254. _colors.x11.Brown2 = color(237,58,58,255)
  255. _colors.x11.Brown3 = color(205,51,51,255)
  256. _colors.x11.Brown4 = color(138,34,34,255)
  257. _colors.x11.Burlywood1 = color(255,211,155,255)
  258. _colors.x11.Burlywood2 = color(237,196,145,255)
  259. _colors.x11.Burlywood3 = color(205,170,124,255)
  260. _colors.x11.Burlywood4 = color(138,114,84,255)
  261. _colors.x11.CadetBlue1 = color(151,244,255,255)
  262. _colors.x11.CadetBlue2 = color(141,228,237,255)
  263. _colors.x11.CadetBlue3 = color(122,196,205,255)
  264. _colors.x11.CadetBlue4 = color(82,133,138,255)
  265. _colors.x11.Chartreuse1 = color(126,255,0,255)
  266. _colors.x11.Chartreuse2 = color(118,237,0,255)
  267. _colors.x11.Chartreuse3 = color(102,205,0,255)
  268. _colors.x11.Chartreuse4 = color(68,138,0,255)
  269. _colors.x11.Chocolate1 = color(255,126,35,255)
  270. _colors.x11.Chocolate2 = color(237,118,33,255)
  271. _colors.x11.Chocolate3 = color(205,102,28,255)
  272. _colors.x11.Chocolate4 = color(138,68,19,255)
  273. _colors.x11.Coral1 = color(255,114,85,255)
  274. _colors.x11.Coral2 = color(237,105,79,255)
  275. _colors.x11.Coral3 = color(205,90,68,255)
  276. _colors.x11.Coral4 = color(138,62,47,255)
  277. _colors.x11.Cornsilk1 = color(255,247,220,255)
  278. _colors.x11.Cornsilk2 = color(237,232,205,255)
  279. _colors.x11.Cornsilk3 = color(205,200,176,255)
  280. _colors.x11.Cornsilk4 = color(138,135,119,255)
  281. _colors.x11.Cyan1 = color(0,255,255,255)
  282. _colors.x11.Cyan2 = color(0,237,237,255)
  283. _colors.x11.Cyan3 = color(0,205,205,255)
  284. _colors.x11.Cyan4 = color(0,138,138,255)
  285. _colors.x11.DarkGoldenrod1 = color(255,184,15,255)
  286. _colors.x11.DarkGoldenrod2 = color(237,173,14,255)
  287. _colors.x11.DarkGoldenrod3 = color(205,149,12,255)
  288. _colors.x11.DarkGoldenrod4 = color(138,100,7,255)
  289. _colors.x11.DarkOliveGreen1 = color(201,255,112,255)
  290. _colors.x11.DarkOliveGreen2 = color(187,237,104,255)
  291. _colors.x11.DarkOliveGreen3 = color(161,205,89,255)
  292. _colors.x11.DarkOliveGreen4 = color(109,138,61,255)
  293. _colors.x11.DarkOrange1 = color(255,126,0,255)
  294. _colors.x11.DarkOrange2 = color(237,118,0,255)
  295. _colors.x11.DarkOrange3 = color(205,102,0,255)
  296. _colors.x11.DarkOrange4 = color(138,68,0,255)
  297. _colors.x11.DarkOrchid1 = color(191,62,255,255)
  298. _colors.x11.DarkOrchid2 = color(177,58,237,255)
  299. _colors.x11.DarkOrchid3 = color(154,49,205,255)
  300. _colors.x11.DarkOrchid4 = color(104,33,138,255)
  301. _colors.x11.DarkSeaGreen1 = color(192,255,192,255)
  302. _colors.x11.DarkSeaGreen2 = color(179,237,179,255)
  303. _colors.x11.DarkSeaGreen3 = color(155,205,155,255)
  304. _colors.x11.DarkSeaGreen4 = color(104,138,104,255)
  305. _colors.x11.DarkSlateGray1 = color(150,255,255,255)
  306. _colors.x11.DarkSlateGray2 = color(140,237,237,255)
  307. _colors.x11.DarkSlateGray3 = color(121,205,205,255)
  308. _colors.x11.DarkSlateGray4 = color(81,138,138,255)
  309. _colors.x11.DeepPink1 = color(255,20,146,255)
  310. _colors.x11.DeepPink2 = color(237,17,136,255)
  311. _colors.x11.DeepPink3 = color(205,16,118,255)
  312. _colors.x11.DeepPink4 = color(138,10,79,255)
  313. _colors.x11.DeepSkyBlue1 = color(0,191,255,255)
  314. _colors.x11.DeepSkyBlue2 = color(0,177,237,255)
  315. _colors.x11.DeepSkyBlue3 = color(0,154,205,255)
  316. _colors.x11.DeepSkyBlue4 = color(0,104,138,255)
  317. _colors.x11.DodgerBlue1 = color(29,144,255,255)
  318. _colors.x11.DodgerBlue2 = color(28,133,237,255)
  319. _colors.x11.DodgerBlue3 = color(23,116,205,255)
  320. _colors.x11.DodgerBlue4 = color(16,77,138,255)
  321. _colors.x11.Firebrick1 = color(255,48,48,255)
  322. _colors.x11.Firebrick2 = color(237,43,43,255)
  323. _colors.x11.Firebrick3 = color(205,38,38,255)
  324. _colors.x11.Firebrick4 = color(138,25,25,255)
  325. _colors.x11.Gold1 = color(255,215,0,255)
  326. _colors.x11.Gold2 = color(237,201,0,255)
  327. _colors.x11.Gold3 = color(205,173,0,255)
  328. _colors.x11.Gold4 = color(138,117,0,255)
  329. _colors.x11.Goldenrod1 = color(255,192,36,255)
  330. _colors.x11.Goldenrod2 = color(237,179,33,255)
  331. _colors.x11.Goldenrod3 = color(205,155,28,255)
  332. _colors.x11.Goldenrod4 = color(138,104,20,255)
  333. _colors.x11.Green1 = color(0,255,0,255)
  334. _colors.x11.Green2 = color(0,237,0,255)
  335. _colors.x11.Green3 = color(0,205,0,255)
  336. _colors.x11.Green4 = color(0,138,0,255)
  337. _colors.x11.Honeydew1 = color(239,255,239,255)
  338. _colors.x11.Honeydew2 = color(224,237,224,255)
  339. _colors.x11.Honeydew3 = color(192,205,192,255)
  340. _colors.x11.Honeydew4 = color(130,138,130,255)
  341. _colors.x11.HotPink1 = color(255,109,179,255)
  342. _colors.x11.HotPink2 = color(237,105,167,255)
  343. _colors.x11.HotPink3 = color(205,95,144,255)
  344. _colors.x11.HotPink4 = color(138,58,98,255)
  345. _colors.x11.IndianRed1 = color(255,105,105,255)
  346. _colors.x11.IndianRed2 = color(237,99,99,255)
  347. _colors.x11.IndianRed3 = color(205,84,84,255)
  348. _colors.x11.IndianRed4 = color(138,58,58,255)
  349. _colors.x11.Ivory1 = color(255,255,239,255)
  350. _colors.x11.Ivory2 = color(237,237,224,255)
  351. _colors.x11.Ivory3 = color(205,205,192,255)
  352. _colors.x11.Ivory4 = color(138,138,130,255)
  353. _colors.x11.Khaki1 = color(255,246,142,255)
  354. _colors.x11.Khaki2 = color(237,229,132,255)
  355. _colors.x11.Khaki3 = color(205,197,114,255)
  356. _colors.x11.Khaki4 = color(138,133,77,255)
  357. _colors.x11.LavenderBlush1 = color(255,239,244,255)
  358. _colors.x11.LavenderBlush2 = color(237,224,228,255)
  359. _colors.x11.LavenderBlush3 = color(205,192,196,255)
  360. _colors.x11.LavenderBlush4 = color(138,130,133,255)
  361. _colors.x11.LemonChiffon1 = color(255,249,205,255)
  362. _colors.x11.LemonChiffon2 = color(237,232,191,255)
  363. _colors.x11.LemonChiffon3 = color(205,201,165,255)
  364. _colors.x11.LemonChiffon4 = color(138,136,112,255)
  365. _colors.x11.LightBlue1 = color(191,238,255,255)
  366. _colors.x11.LightBlue2 = color(177,223,237,255)
  367. _colors.x11.LightBlue3 = color(154,191,205,255)
  368. _colors.x11.LightBlue4 = color(104,130,138,255)
  369. _colors.x11.LightCyan1 = color(224,255,255,255)
  370. _colors.x11.LightCyan2 = color(209,237,237,255)
  371. _colors.x11.LightCyan3 = color(179,205,205,255)
  372. _colors.x11.LightCyan4 = color(122,138,138,255)
  373. _colors.x11.LightGoldenrod1 = color(255,235,138,255)
  374. _colors.x11.LightGoldenrod2 = color(237,220,130,255)
  375. _colors.x11.LightGoldenrod3 = color(205,189,112,255)
  376. _colors.x11.LightGoldenrod4 = color(138,128,75,255)
  377. _colors.x11.LightPink1 = color(255,174,184,255)
  378. _colors.x11.LightPink2 = color(237,161,173,255)
  379. _colors.x11.LightPink3 = color(205,140,149,255)
  380. _colors.x11.LightPink4 = color(138,94,100,255)
  381. _colors.x11.LightSalmon1 = color(255,160,122,255)
  382. _colors.x11.LightSalmon2 = color(237,149,114,255)
  383. _colors.x11.LightSalmon3 = color(205,128,98,255)
  384. _colors.x11.LightSalmon4 = color(138,86,66,255)
  385. _colors.x11.LightSkyBlue1 = color(175,226,255,255)
  386. _colors.x11.LightSkyBlue2 = color(164,211,237,255)
  387. _colors.x11.LightSkyBlue3 = color(140,181,205,255)
  388. _colors.x11.LightSkyBlue4 = color(95,123,138,255)
  389. _colors.x11.LightSteelBlue1 = color(201,225,255,255)
  390. _colors.x11.LightSteelBlue2 = color(187,210,237,255)
  391. _colors.x11.LightSteelBlue3 = color(161,181,205,255)
  392. _colors.x11.LightSteelBlue4 = color(109,123,138,255)
  393. _colors.x11.LightYellow1 = color(255,255,224,255)
  394. _colors.x11.LightYellow2 = color(237,237,209,255)
  395. _colors.x11.LightYellow3 = color(205,205,179,255)
  396. _colors.x11.LightYellow4 = color(138,138,122,255)
  397. _colors.x11.Magenta1 = color(255,0,255,255)
  398. _colors.x11.Magenta2 = color(237,0,237,255)
  399. _colors.x11.Magenta3 = color(205,0,205,255)
  400. _colors.x11.Magenta4 = color(138,0,138,255)
  401. _colors.x11.Maroon1 = color(255,52,178,255)
  402. _colors.x11.Maroon2 = color(237,48,167,255)
  403. _colors.x11.Maroon3 = color(205,40,144,255)
  404. _colors.x11.Maroon4 = color(138,28,98,255)
  405. _colors.x11.MediumOrchid1 = color(224,102,255,255)
  406. _colors.x11.MediumOrchid2 = color(209,94,237,255)
  407. _colors.x11.MediumOrchid3 = color(179,81,205,255)
  408. _colors.x11.MediumOrchid4 = color(122,54,138,255)
  409. _colors.x11.MediumPurple1 = color(170,130,255,255)
  410. _colors.x11.MediumPurple2 = color(159,121,237,255)
  411. _colors.x11.MediumPurple3 = color(136,104,205,255)
  412. _colors.x11.MediumPurple4 = color(93,71,138,255)
  413. _colors.x11.MistyRose1 = color(255,227,225,255)
  414. _colors.x11.MistyRose2 = color(237,212,210,255)
  415. _colors.x11.MistyRose3 = color(205,182,181,255)
  416. _colors.x11.MistyRose4 = color(138,124,123,255)
  417. _colors.x11.NavajoWhite1 = color(255,221,173,255)
  418. _colors.x11.NavajoWhite2 = color(237,206,160,255)
  419. _colors.x11.NavajoWhite3 = color(205,178,138,255)
  420. _colors.x11.NavajoWhite4 = color(138,121,94,255)
  421. _colors.x11.OliveDrab1 = color(191,255,62,255)
  422. _colors.x11.OliveDrab2 = color(178,237,58,255)
  423. _colors.x11.OliveDrab3 = color(154,205,49,255)
  424. _colors.x11.OliveDrab4 = color(104,138,33,255)
  425. _colors.x11.Orange1 = color(255,165,0,255)
  426. _colors.x11.Orange2 = color(237,154,0,255)
  427. _colors.x11.Orange3 = color(205,132,0,255)
  428. _colors.x11.Orange4 = color(138,89,0,255)
  429. _colors.x11.OrangeRed1 = color(255,68,0,255)
  430. _colors.x11.OrangeRed2 = color(237,63,0,255)
  431. _colors.x11.OrangeRed3 = color(205,54,0,255)
  432. _colors.x11.OrangeRed4 = color(138,36,0,255)
  433. _colors.x11.Orchid1 = color(255,130,249,255)
  434. _colors.x11.Orchid2 = color(237,122,232,255)
  435. _colors.x11.Orchid3 = color(205,104,201,255)
  436. _colors.x11.Orchid4 = color(138,71,136,255)
  437. _colors.x11.PaleGreen1 = color(154,255,154,255)
  438. _colors.x11.PaleGreen2 = color(144,237,144,255)
  439. _colors.x11.PaleGreen3 = color(124,205,124,255)
  440. _colors.x11.PaleGreen4 = color(84,138,84,255)
  441. _colors.x11.PaleTurquoise1 = color(186,255,255,255)
  442. _colors.x11.PaleTurquoise2 = color(174,237,237,255)
  443. _colors.x11.PaleTurquoise3 = color(150,205,205,255)
  444. _colors.x11.PaleTurquoise4 = color(102,138,138,255)
  445. _colors.x11.PaleVioletRed1 = color(255,130,170,255)
  446. _colors.x11.PaleVioletRed2 = color(237,121,159,255)
  447. _colors.x11.PaleVioletRed3 = color(205,104,136,255)
  448. _colors.x11.PaleVioletRed4 = color(138,71,93,255)
  449. _colors.x11.PeachPuff1 = color(255,218,184,255)
  450. _colors.x11.PeachPuff2 = color(237,202,173,255)
  451. _colors.x11.PeachPuff3 = color(205,175,149,255)
  452. _colors.x11.PeachPuff4 = color(138,119,100,255)
  453. _colors.x11.Pink1 = color(255,181,196,255)
  454. _colors.x11.Pink2 = color(237,169,183,255)
  455. _colors.x11.Pink3 = color(205,145,158,255)
  456. _colors.x11.Pink4 = color(138,99,108,255)
  457. _colors.x11.Plum1 = color(255,186,255,255)
  458. _colors.x11.Plum2 = color(237,174,237,255)
  459. _colors.x11.Plum3 = color(205,150,205,255)
  460. _colors.x11.Plum4 = color(138,102,138,255)
  461. _colors.x11.Purple1 = color(155,48,255,255)
  462. _colors.x11.Purple2 = color(145,43,237,255)
  463. _colors.x11.Purple3 = color(124,38,205,255)
  464. _colors.x11.Purple4 = color(84,25,138,255)
  465. _colors.x11.Red1 = color(255,0,0,255)
  466. _colors.x11.Red2 = color(237,0,0,255)
  467. _colors.x11.Red3 = color(205,0,0,255)
  468. _colors.x11.Red4 = color(138,0,0,255)
  469. _colors.x11.RosyBrown1 = color(255,192,192,255)
  470. _colors.x11.RosyBrown2 = color(237,179,179,255)
  471. _colors.x11.RosyBrown3 = color(205,155,155,255)
  472. _colors.x11.RosyBrown4 = color(138,104,104,255)
  473. _colors.x11.RoyalBlue1 = color(72,118,255,255)
  474. _colors.x11.RoyalBlue2 = color(67,109,237,255)
  475. _colors.x11.RoyalBlue3 = color(58,94,205,255)
  476. _colors.x11.RoyalBlue4 = color(38,63,138,255)
  477. _colors.x11.Salmon1 = color(255,140,104,255)
  478. _colors.x11.Salmon2 = color(237,130,98,255)
  479. _colors.x11.Salmon3 = color(205,112,84,255)
  480. _colors.x11.Salmon4 = color(138,75,57,255)
  481. _colors.x11.SeaGreen1 = color(84,255,159,255)
  482. _colors.x11.SeaGreen2 = color(77,237,147,255)
  483. _colors.x11.SeaGreen3 = color(67,205,127,255)
  484. _colors.x11.SeaGreen4 = color(45,138,86,255)
  485. _colors.x11.Seashell1 = color(255,244,237,255)
  486. _colors.x11.Seashell2 = color(237,228,221,255)
  487. _colors.x11.Seashell3 = color(205,196,191,255)
  488. _colors.x11.Seashell4 = color(138,133,130,255)
  489. _colors.x11.Sienna1 = color(255,130,71,255)
  490. _colors.x11.Sienna2 = color(237,121,66,255)
  491. _colors.x11.Sienna3 = color(205,104,57,255)
  492. _colors.x11.Sienna4 = color(138,71,38,255)
  493. _colors.x11.SkyBlue1 = color(135,206,255,255)
  494. _colors.x11.SkyBlue2 = color(125,191,237,255)
  495. _colors.x11.SkyBlue3 = color(108,165,205,255)
  496. _colors.x11.SkyBlue4 = color(73,112,138,255)
  497. _colors.x11.SlateBlue1 = color(130,110,255,255)
  498. _colors.x11.SlateBlue2 = color(122,103,237,255)
  499. _colors.x11.SlateBlue3 = color(104,89,205,255)
  500. _colors.x11.SlateBlue4 = color(71,59,138,255)
  501. _colors.x11.SlateGray1 = color(197,226,255,255)
  502. _colors.x11.SlateGray2 = color(184,211,237,255)
  503. _colors.x11.SlateGray3 = color(159,181,205,255)
  504. _colors.x11.SlateGray4 = color(108,123,138,255)
  505. _colors.x11.Snow1 = color(255,249,249,255)
  506. _colors.x11.Snow2 = color(237,232,232,255)
  507. _colors.x11.Snow3 = color(205,201,201,255)
  508. _colors.x11.Snow4 = color(138,136,136,255)
  509. _colors.x11.SpringGreen1 = color(0,255,126,255)
  510. _colors.x11.SpringGreen2 = color(0,237,118,255)
  511. _colors.x11.SpringGreen3 = color(0,205,102,255)
  512. _colors.x11.SpringGreen4 = color(0,138,68,255)
  513. _colors.x11.SteelBlue1 = color(99,183,255,255)
  514. _colors.x11.SteelBlue2 = color(91,172,237,255)
  515. _colors.x11.SteelBlue3 = color(79,147,205,255)
  516. _colors.x11.SteelBlue4 = color(53,99,138,255)
  517. _colors.x11.Tan1 = color(255,165,79,255)
  518. _colors.x11.Tan2 = color(237,154,73,255)
  519. _colors.x11.Tan3 = color(205,132,63,255)
  520. _colors.x11.Tan4 = color(138,89,43,255)
  521. _colors.x11.Thistle1 = color(255,225,255,255)
  522. _colors.x11.Thistle2 = color(237,210,237,255)
  523. _colors.x11.Thistle3 = color(205,181,205,255)
  524. _colors.x11.Thistle4 = color(138,123,138,255)
  525. _colors.x11.Tomato1 = color(255,99,71,255)
  526. _colors.x11.Tomato2 = color(237,91,66,255)
  527. _colors.x11.Tomato3 = color(205,79,57,255)
  528. _colors.x11.Tomato4 = color(138,53,38,255)
  529. _colors.x11.Turquoise1 = color(0,244,255,255)
  530. _colors.x11.Turquoise2 = color(0,228,237,255)
  531. _colors.x11.Turquoise3 = color(0,196,205,255)
  532. _colors.x11.Turquoise4 = color(0,133,138,255)
  533. _colors.x11.VioletRed1 = color(255,62,150,255)
  534. _colors.x11.VioletRed2 = color(237,58,140,255)
  535. _colors.x11.VioletRed3 = color(205,49,119,255)
  536. _colors.x11.VioletRed4 = color(138,33,81,255)
  537. _colors.x11.Wheat1 = color(255,230,186,255)
  538. _colors.x11.Wheat2 = color(237,216,174,255)
  539. _colors.x11.Wheat3 = color(205,186,150,255)
  540. _colors.x11.Wheat4 = color(138,125,102,255)
  541. _colors.x11.Yellow1 = color(255,255,0,255)
  542. _colors.x11.Yellow2 = color(237,237,0,255)
  543. _colors.x11.Yellow3 = color(205,205,0,255)
  544. _colors.x11.Yellow4 = color(138,138,0,255)
  545. _colors.x11.Gray0 = color(189,189,189,255)
  546. _colors.x11.Green0 = color(0,255,0,255)
  547. _colors.x11.Grey0 = color(189,189,189,255)
  548. _colors.x11.Maroon0 = color(175,48,95,255)
  549. _colors.x11.Purple0 = color(160,31,239,255)
  550.  
  551. for a, b in pairs(_colors.x11) do table.insert(_colors, {n="x11-"..string.lower(a), c=b}) end
  552.  
  553. -- Generator
  554. local colors2 = {}
  555.  
  556. local domains = {
  557. { -- The default color
  558. d = "", -- Subdomain
  559. w = true, -- Grayscale generate subdomains?
  560. c = function(b) return b end -- Returns color
  561. },
  562. {
  563. d = "slightly-dark-",
  564. w = false,
  565. c = function(b) return b:mix(color(65, 255), 0.5) end
  566. },
  567. {
  568. d = "dark-",
  569. w = false,
  570. c = function(b) return b:mix(color(0, 255), 0.5) end
  571. },
  572. {
  573. d = "slightly-light-",
  574. w = false,
  575. c = function(b) return b:mix(color(190, 255), 0.5) end
  576. },
  577. {
  578. d = "light-",
  579. w = false,
  580. c = function(b) return b:mix(color(255, 255), 0.5) end
  581. },
  582. {
  583. d = "middle-",
  584. w = false,
  585. c = function(b) return b:mix(color(127, 255), 0.5) end
  586. },
  587. {
  588. d = "reddish-",
  589. w = true,
  590. c = function(b) return b:mix(color(255, 0, 0, 255), 0.6) end
  591. },
  592. {
  593. d = "greenish-",
  594. w = true,
  595. c = function(b) return b:mix(color(0, 255, 0, 255), 0.6) end
  596. },
  597. {
  598. d = "blueish-",
  599. w = true,
  600. c = function(b) return b:mix(color(0, 0, 255, 255), 0.6) end
  601. },
  602. {
  603. d = "cyanish-",
  604. w = true,
  605. c = function(b) return b:mix(color(0, 255, 255, 255), 0.6) end
  606. },
  607. {
  608. d = "magentish-",
  609. w = true,
  610. c = function(b) return b:mix(color(255, 0, 255, 255), 0.6) end
  611. },
  612. {
  613. d = "yellowish-",
  614. w = true,
  615. c = function(b) return b:mix(color(255, 255, 0, 255), 0.6) end
  616. },
  617. {
  618. d = "slightly-reddish-",
  619. w = true,
  620. c = function(b) return b:mix(color(255, 0, 0, 255), 0.7) end
  621. },
  622. {
  623. d = "slightly-greenish-",
  624. w = true,
  625. c = function(b) return b:mix(color(0, 255, 0, 255), 0.7) end
  626. },
  627. {
  628. d = "slightly-blueish-",
  629. w = true,
  630. c = function(b) return b:mix(color(0, 0, 255, 255), 0.7) end
  631. },
  632. {
  633. d = "reduced-",
  634. w = false,
  635. c = function(b) return color(math.max(b.r-90,0), math.max(b.g-90,0), math.max(b.b-90,0), 255) end
  636. },
  637. {
  638. d = "saturated-",
  639. w = false,
  640. c = function(b) return color(b.r*b.r/255, b.g*b.g/255, b.b*b.b/255) end
  641. },
  642. {
  643. d = "over-saturated-",
  644. w = false,
  645. c = function(b) return color(b.r*b.r*b.r/65025, b.g*b.g*b.g/65025, b.b*b.b*b.b/65025) end
  646. },
  647. }
  648.  
  649. -- Generate subdomains.
  650. for a, b in pairs(colors1) do
  651. for c, d in ipairs (domains) do
  652. colors2[d.d .. a] = d.c(b)
  653. table.insert(_colors, {n=d.d..a,c=colors2[d.d..a]})
  654. end
  655. end
  656.  
  657. -- Grayscale
  658. for a, b in ipairs (domains) do
  659. if b.w then
  660. table.insert(_colors, {n=b.d .. "white", c = b.c(color(255, 255))})
  661. colors[b.d .. "white"] = b.c(color(255, 255))
  662. table.insert(_colors, {n=b.d .. "black", c = b.c(color(0, 255))})
  663. colors[b.d .. "black"] = b.c(color(0, 255))
  664. table.insert(_colors, {n=b.d .. "grey", c = b.c(color(128, 255))})
  665. colors[b.d .. "grey"] = b.c(color(128, 255))
  666. table.insert(_colors, {n=b.d .. "gray", c = b.c(color(128, 255))})
  667. colors[b.d .. "gray"] = b.c(color(128, 255))
  668.  
  669. for i = 1, 9 do
  670. table.insert(_colors, {n=b.d .. "white-" .. i .. "0", c = b.c(color(25.5 * i, 255))})
  671. colors[b.d .. "white-" .. i .. "0"] = b.c(color(25.5 * i, 255))
  672. end
  673. end
  674. end
  675.  
  676. -- Export
  677. for a, b in pairs(colors2) do colors[a]=b; end
  678.  
  679. -- Sort alphabetically.
  680. table.sort(_colors, function(a, b)
  681. return a.n < b.n
  682. end)
  683. end
  684.  
  685. -- Initialise
  686.  
  687. --[[
  688.  
  689. Hex() -> color()
  690.  
  691. ]]
  692.  
  693. Hex = function(l, alpha)
  694. if not (type(l) == "string") then
  695. assert(false, "bad argument #1 to 'Hex' (string expected, got ".. type(l) ..")")
  696. end
  697.  
  698. if #l == 6 then
  699. return Color(tonumber(l, 16))
  700. elseif #l == 3 then
  701. l = string.rep(string.sub(l, 1, 1), 2) +
  702. string.rep(string.sub(l, 2, 2), 2) +
  703. string.rep(string.sub(l, 3, 3), 2)
  704. elseif #l == 2 then
  705. l = string.rep(l, 3)
  706. elseif #l == 1 then
  707. l = string.rep(l, 6)
  708. end
  709.  
  710. return Color(tonumber(l, 16), alpha)
  711. end
  712.  
  713. --[[
  714.  
  715. Hue() -> color()
  716.  
  717. ]]
  718.  
  719. Hue = function(val, alpha)
  720. local r, g, b = 0, 0, 0
  721.  
  722. if val > 360 then
  723. val = val - math.floor(val / 360) * 360
  724. elseif val < 0 then
  725. val = val + math.floor(val / 360) * 360
  726. end
  727.  
  728. val = math.floor(val)
  729.  
  730. if val <= 60 then
  731. r = 255
  732. g = (val/60)*255
  733. b = 0
  734. elseif val <= 120 then
  735. r = 255 - (val-60)/60 * 255
  736. g = 255
  737. b = 0
  738. elseif val <= 180 then
  739. r = 0
  740. g = 255
  741. b = ((val-120)/60)*255
  742. elseif val <= 240 then
  743. r = 0
  744. g = 255 - (val-180)/60 * 255
  745. b = 255
  746. elseif val <= 300 then
  747. r = ((val-240)/60)*255
  748. g = 0
  749. b = 255
  750. else
  751. r = 255
  752. g = 0
  753. b = 255 - (val-300)/60 * 255
  754. end
  755.  
  756. return color(r, g, b, alpha)
  757. end
  758.  
  759. --[[
  760.  
  761. Color(col, alpha) -> color()
  762.  
  763. ]]
  764.  
  765. Color = function(s, alpha)
  766. local c = color(0, 255)
  767.  
  768. -- Define Color
  769. if type(s) == "string" then
  770. s = string.lower(s)
  771. if s == "random" then
  772. c = RandomColor()
  773. elseif s == "transparent" then
  774. return color(0, 0)
  775. elseif (s == "random-grey") or (s == "random-gray") then
  776. c = color(math.random(255))
  777. elseif string.sub(s, 1, 4) == "svg-" then
  778. for a, b in pairs(_colors.svg) do if string.lower(a) == string.sub(s, 5, #s) then c = b end end
  779. elseif string.sub(s, 1, 4) == "x11-" then
  780. for a, b in pairs(_colors.x11) do if string.lower(a) == string.sub(s, 5, #s) then c = b end end
  781. elseif string.sub(s, 1, 4) == "hue-" then
  782. local v = tonumber(string.sub(s, 5, #s))
  783. c = Hue(v, a)
  784. elseif colors[s] then
  785. c = colors[s]
  786. elseif string.sub(s, 1, 1) == "#" and #s > 1 then
  787. c = Hex(string.sub(s, 2, #s), alpha)
  788. end
  789. elseif type(s) == "table" then
  790. local methods = {
  791. {
  792. name = "origin",
  793. f = function(q)
  794. return Color(q)
  795. end
  796. },
  797. {
  798. name = "shade",
  799. f = function(q)
  800. for a, b in pairs{
  801. -- Visibility
  802. ["light"] = function()
  803. return c:mix(color(255, 255), 0.5)
  804. end,
  805. ["dark"] = function()
  806. return c:mix(color(0, 255), 0.5)
  807. end,
  808. ["slightly-dark"] = function()
  809. return c:mix(color(65, 255), 0.5)
  810. end,
  811. ["slightly-light"] = function()
  812. return c:mix(color(190, 255), 0.5)
  813. end,
  814. ["middle"] = function()
  815. return c:mix(color(127, 255), 0.5)
  816. end,
  817. ["saturated"] = function()
  818. return color(c.r*c.r/255, c.g*c.g/255, c.b*c.b/255)
  819. end,
  820.  
  821. -- Shading
  822. ["reddish"] = function()
  823. return c:mix(color(255, 0, 0), 0.6)
  824. end,
  825. ["greenish"] = function()
  826. return c:mix(color(0, 255, 0), 0.6)
  827. end,
  828. ["blueish"] = function()
  829. return c:mix(color(0, 0, 255), 0.6)
  830. end,
  831. ["slightly-reddish"] = function()
  832. return c:mix(color(255, 0, 0), 0.7)
  833. end,
  834. ["slightly-greenish"] = function()
  835. return c:mix(color(0, 255, 0), 0.7)
  836. end,
  837. ["slightly-blueish"] = function()
  838. return c:mix(color(0, 0, 255), 0.7)
  839. end,
  840. } do
  841. if q == a then
  842. return b()
  843. end
  844. end
  845.  
  846. end
  847. },
  848. {
  849. name = "desaturate",
  850. f = function(q)
  851. for a, b in pairs{
  852. ["avg"] = function()
  853. return color((c.r+c.g+c.b)/3, 255)
  854. end,
  855. ["hsv"] = function()
  856. return color(math.max(c.r, c.g, c.b), 255)
  857. end,
  858. ["hsl"] = function()
  859. return color((math.max(c.r, c.g, c.b) + math.min(c.r, c.g, c.b))*.5, 255)
  860. end,
  861. ["lum"] = function()
  862. return color(c.r*.22 + c.g*.72 + c.b*.06, 255)
  863. end,
  864. ["red"] = function()
  865. return color(c.r, 255)
  866. end,
  867. ["green"] = function()
  868. return color(c.g, 255)
  869. end,
  870. ["blue"] = function()
  871. return color(c.b, 255)
  872. end,
  873. } do
  874. if q == a then
  875. return b()
  876. end
  877. end
  878. end
  879. },
  880. {
  881. name = "invert",
  882. f = function(q)
  883. if q then
  884. return color(255-c.r, 255-c.g, 255-c.b, 255)
  885. end
  886. end
  887. },
  888. {
  889. name = "filter",
  890. f = function(q)
  891. local m = c
  892. if q.r == false then
  893. m.r = 0
  894. end if q.g == false then
  895. m.g = 0
  896. end if q.b == false then
  897. m.b = 0
  898. end
  899. return m
  900. end
  901. },
  902. {
  903. name = "alpha",
  904. f = function(q)
  905. return color(c.r, c.g, c.b, q)
  906. end
  907. },
  908. }
  909.  
  910. for d, e in ipairs(methods) do
  911. for a, b in pairs(s) do
  912. if a == e.name then
  913. c = e.f(b) or c
  914. end
  915. end
  916. end
  917. elseif type(s) == "number" then
  918. local b = s%256
  919. local g = ((s - b)/256)%256
  920. local r = ((s - g - b)/256^2)
  921.  
  922. c = color(r, g, b)
  923. elseif type(s) == "userdata" then -- s is already a color
  924. c = s
  925. elseif type(s) == "nil" then
  926. --if s then
  927. return RandomColor()
  928. --end
  929. else
  930. assert(false, "bad argument #1 to 'Color' (string expected, got ".. type(s) ..")")
  931. end
  932.  
  933. -- Set transparency
  934. if type(alpha) == "number" then
  935. c.a = alpha
  936. elseif type(alpha) == "string" then
  937. local m = {
  938. ["slightly-opaque"] = 225,
  939. ["slightly-visible"] = 50
  940. }
  941. c.a = m[alpha]
  942. elseif type(alpha) == "boolean" then
  943. if alpha then
  944. c.a = 255
  945. else
  946. c.a = 0
  947. end
  948. elseif type(s) == "table" then
  949. elseif alpha == nil then
  950. -- ignore
  951. else
  952. assert(false, "bad argument #2 to 'Color' (number expected, got ".. type(alpha) ..")")
  953. end
  954.  
  955. return c
  956. end
  957.  
  958. --[[
  959.  
  960. Colors(col1, col2, ) -> color()
  961.  
  962. ]]
  963.  
  964. Colors = function(c1, c2, mode)
  965. local modes = {
  966. ["dif"] = function()
  967. return color(math.abs(c1.r-c2.r), math.abs(c1.g-c2.g), math.abs(c1.b-c2.b))
  968. end,
  969. ["avg"] = function()
  970. return color((c1.r+c2.r)/2, (c1.g+c2.g)/2, (c1.b+c2.b)/2)
  971. end,
  972. ["min"] = function()
  973. return color(math.min(c1.r, c2.r), math.min(c1.g, c2.g), math.min(c1.b, c2.b))
  974. end,
  975. ["max"] = function()
  976. return color(math.max(c1.r, c2.r), math.max(c1.g, c2.g), math.max(c1.b, c2.b))
  977. end,
  978. ["sqrt"] = function()
  979. return color(math.sqrt(c1.r^2 + c2.r^2)/math.sqrt(2),
  980. math.sqrt(c1.g^2 + c2.g^2)/math.sqrt(2),
  981. math.sqrt(c1.b^2 + c2.b^2)/math.sqrt(2)
  982. )
  983. end,
  984. ["multiply"] = function()
  985. return color(c1.r*c2.r/255, c1.g*c2.g/255, c1.b*c2.b/255)
  986. end,
  987. ["screen"] = function()
  988. return color(255-(255-c1.r)*(255-c2.r)/255,
  989. 255-(255-c1.g)*(255-c2.g)/255,
  990. 255-(255-c1.b)*(255-c2.b)/255
  991. )
  992. end,
  993. }
  994.  
  995. return modes[string.lower(mode)]()
  996. end
  997.  
  998. -- Fast access implementations
  999.  
  1000. function Fill(s, a) fill(Color(s, a)) end
  1001. function Stroke(s, a) stroke(Color(s, a)) end
  1002. function Tint(s, a) tint(Color(s, a)) end
  1003. function Background(s, a) background(Color(s, a)) end
  1004. function RandomColor(a) return color(math.random(255), math.random(255), math.random(255), a or 255) end
  1005.  
  1006.  
  1007. --# Main
  1008. -- colors1
  1009.  
  1010. function setup()
  1011. displayMode(FULLSCREEN)
  1012.  
  1013. parameter.text("SEARCH", "", search)
  1014. --parameter.watch("1/DeltaTime")
  1015.  
  1016. scrollY = 0
  1017. scrollYAcc = 1.5
  1018. scrollYAccMax = 100
  1019. scrollYAccMin = -100
  1020.  
  1021. touching = false
  1022. touchSelected = -1
  1023. interupted = false
  1024. infoState = 1
  1025. infoVisibility = 20
  1026.  
  1027. credits = getCredits()
  1028. genIcon()
  1029. AVG_BACKGROUND = color(0)
  1030.  
  1031. COLORS = _colors
  1032.  
  1033. local __different = {}
  1034. for a, b in pairs(colors) do
  1035. local unique = true
  1036. for c, d in ipairs(__different) do
  1037. if d.r == b.r and d.g == b.g and d.b == b.b then
  1038. unique = false
  1039. end
  1040. end
  1041.  
  1042. if unique then
  1043. table.insert(__different, b)
  1044. end
  1045. end
  1046.  
  1047. print("There are " .. #__different .. " unique colors on the 'colors' thread.")
  1048.  
  1049. __different = {}
  1050. for a, b in ipairs(_colors) do
  1051. local unique = true
  1052. for c, d in ipairs(__different) do
  1053. if d.r == b.c.r and d.g == b.c.g and d.b == b.c.b then
  1054. unique = false
  1055. end
  1056. end
  1057.  
  1058. if unique then
  1059. table.insert(__different, b.c)
  1060. end
  1061. end
  1062.  
  1063. print("There are " .. #__different .. " unique colors on the '_colors' thread.")
  1064. end
  1065.  
  1066. function getCredits()
  1067. local m = image(1024, 1024)
  1068. -- Generate Credits
  1069. setContext(m)
  1070. Fill("brown", 255)
  1071. fontSize(100)
  1072. font("MarkerFelt-Wide")
  1073. text("Colors v5", 512, 512)
  1074.  
  1075. Fill("blueish-strawberry-red", 255)
  1076. fontSize(50)
  1077. font("Noteworthy-Light")
  1078. text("Created by Anatoly.", 512, 412)
  1079.  
  1080. -- Generate Blur
  1081. local n = image(1024, 1024)
  1082. local _n = mesh()
  1083. _n.texture = m
  1084. _n.shader = shader("Filters:Blur")
  1085. _n.shader.conPixel = vec2(1/1024,1/1024)
  1086. _n.shader.conWeight = 1/5
  1087. __n = _n:addRect(0, 0, 0, 0)
  1088. setContext(n)
  1089. sprite(m, 512, 512, 1024, 1024)
  1090. tint(255, 100)
  1091. _n:setRect(__n, 512, 512, 1024, 1024)
  1092. _n:draw()
  1093.  
  1094. -- Reset
  1095. setContext()
  1096. return n
  1097. end
  1098.  
  1099. function genIcon()
  1100. local m = image(320, 320)
  1101. setContext(m)
  1102. background(0)
  1103. setContext()
  1104. saveImage("Project:Icon", m)
  1105. end
  1106.  
  1107. function search(h)
  1108. local function s(str, match)
  1109. return string.find(str, match:gsub("-", "%%-"))
  1110. end
  1111.  
  1112. c = {}
  1113. for a, b in ipairs(_colors) do c[a]=b end
  1114.  
  1115. if #h > 0 then
  1116. r = 0
  1117. for v = 1, #c do
  1118. if not s(c[v - r].n, h) then
  1119. table.remove(c, v - r)
  1120. r = r + 1
  1121. elseif v > #c then
  1122. break
  1123. end
  1124. end
  1125. end
  1126.  
  1127. COLORS = c
  1128. end
  1129.  
  1130. function showInfo()
  1131. infoState = 1
  1132. end
  1133.  
  1134. function hideInfo()
  1135. infoState = 2
  1136. end
  1137.  
  1138. function draw()
  1139. displayRows = math.floor(HEIGHT/50)+3
  1140.  
  1141. scrollY = scrollY + scrollYAcc
  1142. if touching then
  1143. scrollYAcc = scrollYAcc * .8
  1144. elseif interupted then
  1145. scrollYAcc = scrollYAcc * .95
  1146. end
  1147.  
  1148. if scrollYAcc > scrollYAccMax then
  1149. scrollYAcc = scrollYAccMax
  1150. elseif scrollYAcc < scrollYAccMin then
  1151. scrollYAcc = scrollYAccMin
  1152. end
  1153.  
  1154. if scrollY > #COLORS * 50 + 100 then
  1155. scrollY = -HEIGHT
  1156. scrollYAcc = 2
  1157. elseif scrollY < -HEIGHT then
  1158. scrollY = -HEIGHT
  1159. scrollYAcc = 0
  1160. showInfo()
  1161. end
  1162.  
  1163. if scrollY > 100-HEIGHT then
  1164. hideInfo()
  1165. end
  1166.  
  1167. if infoState == 1 and infoVisibility < 20 then
  1168. infoVisibility = infoVisibility + 1
  1169. elseif infoState == 2 and infoVisibility > 0 and (ElapsedTime > 4 or touching) then
  1170. infoVisibility = infoVisibility - 1
  1171. end
  1172.  
  1173. local backgrounds = {}
  1174. Background{
  1175. origin = AVG_BACKGROUND,
  1176. shade = "dark"
  1177. }
  1178.  
  1179. resetStyle()
  1180. for a, b in ipairs(COLORS) do
  1181. -- IGNORE IF OUTSIDE OF RANGE
  1182. if (scrollY - 50 * a < 50 and HEIGHT - 50 * a + scrollY > -50) and b.c then
  1183. table.insert(backgrounds, b.c)
  1184. -- BG
  1185. strokeWidth(40)
  1186. Stroke(b.c)
  1187. if touchSelected == a then stroke(20) end
  1188. lineCapMode(ROUND)
  1189. line(50, HEIGHT - 50 * a + scrollY, WIDTH-75, HEIGHT - 50 * a + scrollY)
  1190.  
  1191. -- TEXT
  1192. strokeWidth(0)
  1193. fill(0)
  1194. if (b.c.r <= 50 and b.c.g <= 50 and b.c.b <= 50) then
  1195. fill(255)
  1196. end
  1197. fontSize(30)
  1198. font("CourierNewPS-BoldMT")
  1199. text(b.n, WIDTH*.5, HEIGHT - 50 * a + scrollY)
  1200.  
  1201. -- COMPARISERS
  1202. for d, e in
  1203. ipairs({
  1204. "white", "white-50", "black", "red", "yellow", "green", "cyan", "blue", "magenta"
  1205. })
  1206. do
  1207. Fill(e)
  1208. ellipse(50 + (d-1) * 15, HEIGHT - 50 * a + scrollY, 10)
  1209. end
  1210.  
  1211. -- INDEX
  1212. local w, _ = textSize("#" .. a)
  1213. --[[Fill{
  1214. origin = b.c,
  1215. --invert = true,
  1216. }]]
  1217. Fill("white")
  1218. --[[if Color{origin = b.c, desaturate = "avg"}.r > 150 then
  1219. Fill("black")
  1220. end]]
  1221. text("#" .. a, WIDTH-85-w*.5, HEIGHT - 50 * a + scrollY)
  1222. end
  1223. end
  1224.  
  1225. --AVG_BACKGROUND = color(0)
  1226. local r, g, b = 0, 0, 0
  1227. for a, c in ipairs(backgrounds) do
  1228. r = r + c.r
  1229. g = g + c.g
  1230. b = b + c.b
  1231. end
  1232. if #backgrounds > 0 then
  1233. AVG_BACKGROUND =
  1234. color(r / #backgrounds, g / #backgrounds, b / #backgrounds)
  1235. else
  1236. Stroke("transparent")
  1237. end
  1238.  
  1239. local _c = color(stroke())
  1240. local heightTotal = 50 * #COLORS
  1241.  
  1242. Stroke{
  1243. origin = "black",
  1244. shade = "blueish",
  1245. }
  1246. strokeWidth(25)
  1247. lineCapMode(SQUARE)
  1248. line(WIDTH-25, 0, WIDTH-25, HEIGHT)
  1249. fill(_c)
  1250. strokeWidth(0)
  1251. ellipse(WIDTH-25, 25 + (HEIGHT-50)*(scrollY/heightTotal), 20)
  1252.  
  1253. if infoVisibility > 0 then
  1254. tint(255, 255 * (infoVisibility / 20))
  1255. spriteMode(CENTER)
  1256. sprite(credits, WIDTH*.5, HEIGHT*.5)
  1257. end
  1258. end
  1259.  
  1260. function touched(t)
  1261. local heightTotal = 50 * #COLORS
  1262. -- t.y = 25 + (HEIGHT-50)*(scrollY/heightTotal)
  1263. -- (t.y - 25) * heightTotal = (HEIGHT-50)*scrollY
  1264. -- (t.y - 25) * heightTotal / (HEIGHT-50) = scrollY
  1265. -- scrollY = (t.y - 25) * heightTotal / (HEIGHT-50)
  1266.  
  1267. if t.state == BEGAN then
  1268. if t.x < WIDTH - 25 * 1.5 then
  1269. touching = true
  1270. interupted = true
  1271. elseif t.x > WIDTH - 25 * 1.5 then
  1272. scrollY = (t.y - 25) * heightTotal / (HEIGHT-50)
  1273. end
  1274. elseif t.state == MOVING then
  1275. if t.x < WIDTH - 25 * 1.5 and touching then
  1276. scrollYAcc = scrollYAcc + t.deltaY *.2
  1277. interupted = false
  1278. elseif t.x > WIDTH - 25 * 1.5 then
  1279. scrollY = (t.y - 25) * heightTotal / (HEIGHT-50)
  1280. end
  1281. else
  1282. touching = false
  1283. end
  1284. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement