Advertisement
Guest User

colour.lua

a guest
Feb 27th, 2015
303
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Lua 2.05 KB | None | 0 0
  1. local com = require('component')
  2. local term = require('term')
  3. local os = require('os')
  4. local args = { ... }
  5. local gpu = com.gpu
  6. local w,h = gpu.getResolution()
  7.  
  8. local red = {}
  9. red[1] = 0 -- 00
  10. red[2] = 3342336 -- 33
  11. red[3] = 6684672 -- 66
  12. red[4] = 10027008 -- 99
  13. red[5] = 13369344 -- CC
  14. red[6] = 16711680 -- FF
  15.  
  16. local green = {}
  17. green[1] = 0 -- 00
  18. green[2] = 9216 -- 24
  19. green[3] = 18688 -- 49
  20. green[4] = 27904 -- 6D
  21. green[5] = 37376 -- 92
  22. green[6] = 46592 -- B6
  23. green[7] = 55296 -- DB
  24. green[8] = 65280 -- FF
  25.  
  26. local blue = {}
  27. blue[1] = 0 -- 00
  28. blue[2] = 64 -- 40
  29. blue[3] = 128 -- 80
  30. blue[4] = 192 -- C0
  31. blue[5] = 255 -- FF
  32.  
  33. local lumen = {}
  34.  
  35. function drawRect(colour)
  36.   local old = gpu.getBackground()
  37.   gpu.setBackground(colour)
  38.   gpu.fill(w/4,h,w/2,1," ")
  39.   gpu.setBackground(old)
  40. end
  41.  
  42. function decHex(dec)
  43.   local b,k,out,i,d=16,"0123456789ABCDEF","",0
  44.   while dec>0 do
  45.     i=i+1
  46.     dec,d=math.floor(dec/b),dec%b+1
  47.     out=string.sub(k,d,d)..out
  48.   end
  49.   return out
  50. end
  51.  
  52. function pairsByKeys(t,f)
  53.   local a = {}
  54.   for n in pairs(t) do table.insert(a,n) end
  55.   table.sort(a,f)
  56.   local i = 0
  57.   local iter = function()
  58.     i = i + 1
  59.     if a[i] == nil then return nil
  60.     else return a[i], t[a[i]]
  61.     end
  62.   end
  63.   return iter
  64. end
  65.  
  66. if args[1] == "normal" then
  67.   count = 1
  68.   term.setCursor(1,h)
  69.   for i=1,6 do
  70.     for j=1,8 do
  71.       for k=1,5 do
  72.         local num = red[i]+green[j]+blue[k]
  73.         drawRect(num)
  74.         print(count, decHex(num))
  75.         count = count + 1
  76.         os.sleep(0.1)
  77.       end
  78.     end
  79.   end
  80. elseif args[1] == "lum" then
  81.   count = 1
  82.   term.setCursor(1,h)
  83.   for i=1,6 do
  84.     for j=1,8 do
  85.       for k=1,5 do
  86.         local num = red[i]+green[j]+blue[k]
  87.         drawRect(num)
  88.         local lum = math.sqrt(0.299*((red[i]/65536)^2)+0.587*((green[j]/256)^2)+(blue[k]^2))
  89.         print(count, decHex(num), lum)
  90.         lumen[lum] = num
  91.         count = count + 1
  92.         os.sleep(0.1)
  93.       end
  94.     end
  95.   end
  96.   for col,lumi in pairsByKeys(lumen) do
  97.     print(col,decHex(lumi))
  98.     drawRect(lumi)
  99.     os.sleep(0.1)
  100.   end
  101. else
  102.   print("Usage: colour normal")
  103.   print("Usage: colour lum")
  104. end
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement