klear 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (284) hide show
  1. data/.gitignore +6 -0
  2. data/Gemfile +3 -0
  3. data/Gemfile.lock +44 -0
  4. data/Guardfile +8 -0
  5. data/Rakefile +2 -0
  6. data/bin/klear.rb +60 -0
  7. data/klear.gemspec +41 -0
  8. data/lib/klear.rb +7 -0
  9. data/lib/klear/file_generator.rb +160 -0
  10. data/lib/klear/version.rb +4 -0
  11. data/spec/fixtures/black_to_white_linear.kle +0 -0
  12. data/spec/fixtures/kle_generate/Waves/Waves_00129.png +0 -0
  13. data/spec/fixtures/kle_generate/Waves/Waves_00130.png +0 -0
  14. data/spec/fixtures/kle_generate/Waves/Waves_00131.png +0 -0
  15. data/spec/fixtures/kle_generate/Waves/Waves_00132.png +0 -0
  16. data/spec/fixtures/kle_generate/Waves/Waves_00133.png +0 -0
  17. data/spec/fixtures/kle_generate/Waves/Waves_00134.png +0 -0
  18. data/spec/fixtures/kle_generate/Waves/Waves_00135.png +0 -0
  19. data/spec/fixtures/kle_generate/Waves/Waves_00136.png +0 -0
  20. data/spec/fixtures/kle_generate/Waves/Waves_00137.png +0 -0
  21. data/spec/fixtures/kle_generate/Waves/Waves_00138.png +0 -0
  22. data/spec/fixtures/kle_generate/Waves/Waves_00139.png +0 -0
  23. data/spec/fixtures/kle_generate/Waves/Waves_00140.png +0 -0
  24. data/spec/fixtures/kle_generate/Waves/Waves_00141.png +0 -0
  25. data/spec/fixtures/kle_generate/Waves/Waves_00142.png +0 -0
  26. data/spec/fixtures/kle_generate/Waves/Waves_00143.png +0 -0
  27. data/spec/fixtures/kle_generate/Waves/Waves_00144.png +0 -0
  28. data/spec/fixtures/kle_generate/Waves/Waves_00145.png +0 -0
  29. data/spec/fixtures/kle_generate/Waves/Waves_00146.png +0 -0
  30. data/spec/fixtures/kle_generate/Waves/Waves_00147.png +0 -0
  31. data/spec/fixtures/kle_generate/Waves/Waves_00148.png +0 -0
  32. data/spec/fixtures/kle_generate/Waves/Waves_00149.png +0 -0
  33. data/spec/fixtures/kle_generate/Waves/Waves_00150.png +0 -0
  34. data/spec/fixtures/kle_generate/Waves/Waves_00151.png +0 -0
  35. data/spec/fixtures/kle_generate/Waves/Waves_00152.png +0 -0
  36. data/spec/fixtures/kle_generate/Waves/Waves_00153.png +0 -0
  37. data/spec/fixtures/kle_generate/Waves/Waves_00154.png +0 -0
  38. data/spec/fixtures/kle_generate/Waves/Waves_00155.png +0 -0
  39. data/spec/fixtures/kle_generate/Waves/Waves_00156.png +0 -0
  40. data/spec/fixtures/kle_generate/Waves/Waves_00157.png +0 -0
  41. data/spec/fixtures/kle_generate/Waves/Waves_00158.png +0 -0
  42. data/spec/fixtures/kle_generate/Waves/Waves_00159.png +0 -0
  43. data/spec/fixtures/kle_generate/Waves/Waves_00160.png +0 -0
  44. data/spec/fixtures/kle_generate/Waves/Waves_00161.png +0 -0
  45. data/spec/fixtures/kle_generate/Waves/Waves_00162.png +0 -0
  46. data/spec/fixtures/kle_generate/Waves/Waves_00163.png +0 -0
  47. data/spec/fixtures/kle_generate/Waves/Waves_00164.png +0 -0
  48. data/spec/fixtures/kle_generate/Waves/Waves_00165.png +0 -0
  49. data/spec/fixtures/kle_generate/Waves/Waves_00166.png +0 -0
  50. data/spec/fixtures/kle_generate/Waves/Waves_00167.png +0 -0
  51. data/spec/fixtures/kle_generate/Waves/Waves_00168.png +0 -0
  52. data/spec/fixtures/kle_generate/Waves/Waves_00169.png +0 -0
  53. data/spec/fixtures/kle_generate/Waves/Waves_00170.png +0 -0
  54. data/spec/fixtures/kle_generate/Waves/Waves_00171.png +0 -0
  55. data/spec/fixtures/kle_generate/Waves/Waves_00172.png +0 -0
  56. data/spec/fixtures/kle_generate/Waves/Waves_00173.png +0 -0
  57. data/spec/fixtures/kle_generate/Waves/Waves_00174.png +0 -0
  58. data/spec/fixtures/kle_generate/Waves/Waves_00175.png +0 -0
  59. data/spec/fixtures/kle_generate/Waves/Waves_00176.png +0 -0
  60. data/spec/fixtures/kle_generate/Waves/Waves_00177.png +0 -0
  61. data/spec/fixtures/kle_generate/Waves/Waves_00178.png +0 -0
  62. data/spec/fixtures/kle_generate/Waves/Waves_00179.png +0 -0
  63. data/spec/fixtures/kle_generate/Waves/Waves_00180.png +0 -0
  64. data/spec/fixtures/kle_generate/Waves/Waves_00181.png +0 -0
  65. data/spec/fixtures/kle_generate/Waves/Waves_00182.png +0 -0
  66. data/spec/fixtures/kle_generate/Waves/Waves_00183.png +0 -0
  67. data/spec/fixtures/kle_generate/Waves/Waves_00184.png +0 -0
  68. data/spec/fixtures/kle_generate/Waves/Waves_00185.png +0 -0
  69. data/spec/fixtures/kle_generate/Waves/Waves_00186.png +0 -0
  70. data/spec/fixtures/kle_generate/Waves/Waves_00187.png +0 -0
  71. data/spec/fixtures/kle_generate/Waves/Waves_00188.png +0 -0
  72. data/spec/fixtures/kle_generate/Waves/Waves_00189.png +0 -0
  73. data/spec/fixtures/kle_generate/Waves/Waves_00190.png +0 -0
  74. data/spec/fixtures/kle_generate/Waves/Waves_00191.png +0 -0
  75. data/spec/fixtures/kle_generate/Waves/Waves_00192.png +0 -0
  76. data/spec/fixtures/kle_generate/Waves/Waves_00193.png +0 -0
  77. data/spec/fixtures/kle_generate/Waves/Waves_00194.png +0 -0
  78. data/spec/fixtures/kle_generate/Waves/Waves_00195.png +0 -0
  79. data/spec/fixtures/kle_generate/Waves/Waves_00196.png +0 -0
  80. data/spec/fixtures/kle_generate/Waves/Waves_00197.png +0 -0
  81. data/spec/fixtures/kle_generate/Waves/Waves_00198.png +0 -0
  82. data/spec/fixtures/kle_generate/Waves/Waves_00199.png +0 -0
  83. data/spec/fixtures/kle_generate/Waves/Waves_00200.png +0 -0
  84. data/spec/fixtures/kle_generate/Waves/Waves_00201.png +0 -0
  85. data/spec/fixtures/kle_generate/Waves/Waves_00202.png +0 -0
  86. data/spec/fixtures/kle_generate/Waves/Waves_00203.png +0 -0
  87. data/spec/fixtures/kle_generate/Waves/Waves_00204.png +0 -0
  88. data/spec/fixtures/kle_generate/Waves/Waves_00205.png +0 -0
  89. data/spec/fixtures/kle_generate/Waves/Waves_00206.png +0 -0
  90. data/spec/fixtures/kle_generate/Waves/Waves_00207.png +0 -0
  91. data/spec/fixtures/kle_generate/Waves/Waves_00208.png +0 -0
  92. data/spec/fixtures/kle_generate/Waves/Waves_00209.png +0 -0
  93. data/spec/fixtures/kle_generate/Waves/Waves_00210.png +0 -0
  94. data/spec/fixtures/kle_generate/Waves/Waves_00211.png +0 -0
  95. data/spec/fixtures/kle_generate/Waves/Waves_00212.png +0 -0
  96. data/spec/fixtures/kle_generate/Waves/Waves_00213.png +0 -0
  97. data/spec/fixtures/kle_generate/Waves/Waves_00214.png +0 -0
  98. data/spec/fixtures/kle_generate/Waves/Waves_00215.png +0 -0
  99. data/spec/fixtures/kle_generate/Waves/Waves_00216.png +0 -0
  100. data/spec/fixtures/kle_generate/Waves/Waves_00217.png +0 -0
  101. data/spec/fixtures/kle_generate/Waves/Waves_00218.png +0 -0
  102. data/spec/fixtures/kle_generate/Waves/Waves_00219.png +0 -0
  103. data/spec/fixtures/kle_generate/Waves/Waves_00220.png +0 -0
  104. data/spec/fixtures/kle_generate/Waves/Waves_00221.png +0 -0
  105. data/spec/fixtures/kle_generate/Waves/Waves_00222.png +0 -0
  106. data/spec/fixtures/kle_generate/Waves/Waves_00223.png +0 -0
  107. data/spec/fixtures/kle_generate/Waves/Waves_00224.png +0 -0
  108. data/spec/fixtures/kle_generate/Waves/Waves_00225.png +0 -0
  109. data/spec/fixtures/kle_generate/Waves/Waves_00226.png +0 -0
  110. data/spec/fixtures/kle_generate/Waves/Waves_00227.png +0 -0
  111. data/spec/fixtures/kle_generate/Waves/Waves_00228.png +0 -0
  112. data/spec/fixtures/kle_generate/Waves/Waves_00229.png +0 -0
  113. data/spec/fixtures/kle_generate/Waves/Waves_00230.png +0 -0
  114. data/spec/fixtures/kle_generate/Waves/Waves_00231.png +0 -0
  115. data/spec/fixtures/kle_generate/Waves/Waves_00232.png +0 -0
  116. data/spec/fixtures/kle_generate/Waves/Waves_00233.png +0 -0
  117. data/spec/fixtures/kle_generate/Waves/Waves_00234.png +0 -0
  118. data/spec/fixtures/kle_generate/Waves/Waves_00235.png +0 -0
  119. data/spec/fixtures/kle_generate/Waves/Waves_00236.png +0 -0
  120. data/spec/fixtures/kle_generate/Waves/Waves_00237.png +0 -0
  121. data/spec/fixtures/kle_generate/Waves/Waves_00238.png +0 -0
  122. data/spec/fixtures/kle_generate/Waves/Waves_00239.png +0 -0
  123. data/spec/fixtures/kle_generate/Waves/Waves_00240.png +0 -0
  124. data/spec/fixtures/kle_generate/Waves/Waves_00241.png +0 -0
  125. data/spec/fixtures/kle_generate/Waves/Waves_00242.png +0 -0
  126. data/spec/fixtures/kle_generate/Waves/Waves_00243.png +0 -0
  127. data/spec/fixtures/kle_generate/Waves/Waves_00244.png +0 -0
  128. data/spec/fixtures/kle_generate/Waves/Waves_00245.png +0 -0
  129. data/spec/fixtures/kle_generate/Waves/Waves_00246.png +0 -0
  130. data/spec/fixtures/kle_generate/Waves/Waves_00247.png +0 -0
  131. data/spec/fixtures/kle_generate/Waves/Waves_00248.png +0 -0
  132. data/spec/fixtures/kle_generate/Waves/Waves_00249.png +0 -0
  133. data/spec/fixtures/kle_generate/Waves/Waves_00250.png +0 -0
  134. data/spec/fixtures/kle_generate/Waves/Waves_00251.png +0 -0
  135. data/spec/fixtures/kle_generate/Waves/Waves_00252.png +0 -0
  136. data/spec/fixtures/kle_generate/Waves/Waves_00253.png +0 -0
  137. data/spec/fixtures/kle_generate/Waves/Waves_00254.png +0 -0
  138. data/spec/fixtures/kle_generate/Waves/Waves_00255.png +0 -0
  139. data/spec/fixtures/kle_generate/Waves/Waves_00256.png +0 -0
  140. data/spec/fixtures/kle_generate/Waves/Waves_00257.png +0 -0
  141. data/spec/fixtures/kle_generate/Waves/Waves_00258.png +0 -0
  142. data/spec/fixtures/kle_generate/Waves/Waves_00259.png +0 -0
  143. data/spec/fixtures/kle_generate/Waves/Waves_00260.png +0 -0
  144. data/spec/fixtures/kle_generate/Waves/Waves_00261.png +0 -0
  145. data/spec/fixtures/kle_generate/Waves/Waves_00262.png +0 -0
  146. data/spec/fixtures/kle_generate/Waves/Waves_00263.png +0 -0
  147. data/spec/fixtures/kle_generate/Waves/Waves_00264.png +0 -0
  148. data/spec/fixtures/kle_generate/Waves/Waves_00265.png +0 -0
  149. data/spec/fixtures/kle_generate/Waves/Waves_00266.png +0 -0
  150. data/spec/fixtures/kle_generate/Waves/Waves_00267.png +0 -0
  151. data/spec/fixtures/kle_generate/Waves/Waves_00268.png +0 -0
  152. data/spec/fixtures/kle_generate/Waves/Waves_00269.png +0 -0
  153. data/spec/fixtures/kle_generate/Waves/Waves_00270.png +0 -0
  154. data/spec/fixtures/kle_generate/Waves/Waves_00271.png +0 -0
  155. data/spec/fixtures/kle_generate/Waves/Waves_00272.png +0 -0
  156. data/spec/fixtures/kle_generate/Waves/Waves_00273.png +0 -0
  157. data/spec/fixtures/kle_generate/Waves/Waves_00274.png +0 -0
  158. data/spec/fixtures/kle_generate/Waves/Waves_00275.png +0 -0
  159. data/spec/fixtures/kle_generate/Waves/Waves_00276.png +0 -0
  160. data/spec/fixtures/kle_generate/Waves/Waves_00277.png +0 -0
  161. data/spec/fixtures/kle_generate/Waves/Waves_00278.png +0 -0
  162. data/spec/fixtures/kle_generate/Waves/Waves_00279.png +0 -0
  163. data/spec/fixtures/kle_generate/Waves/Waves_00280.png +0 -0
  164. data/spec/fixtures/kle_generate/Waves/Waves_00281.png +0 -0
  165. data/spec/fixtures/kle_generate/Waves/Waves_00282.png +0 -0
  166. data/spec/fixtures/kle_generate/Waves/Waves_00283.png +0 -0
  167. data/spec/fixtures/kle_generate/Waves/Waves_00284.png +0 -0
  168. data/spec/fixtures/kle_generate/Waves/Waves_00285.png +0 -0
  169. data/spec/fixtures/kle_generate/Waves/Waves_00286.png +0 -0
  170. data/spec/fixtures/kle_generate/Waves/Waves_00287.png +0 -0
  171. data/spec/fixtures/kle_generate/Waves/Waves_00288.png +0 -0
  172. data/spec/fixtures/kle_generate/Waves/Waves_00289.png +0 -0
  173. data/spec/fixtures/kle_generate/Waves/Waves_00290.png +0 -0
  174. data/spec/fixtures/kle_generate/Waves/Waves_00291.png +0 -0
  175. data/spec/fixtures/kle_generate/Waves/Waves_00292.png +0 -0
  176. data/spec/fixtures/kle_generate/Waves/Waves_00293.png +0 -0
  177. data/spec/fixtures/kle_generate/Waves/Waves_00294.png +0 -0
  178. data/spec/fixtures/kle_generate/Waves/Waves_00295.png +0 -0
  179. data/spec/fixtures/kle_generate/Waves/Waves_00296.png +0 -0
  180. data/spec/fixtures/kle_generate/Waves/Waves_00297.png +0 -0
  181. data/spec/fixtures/kle_generate/Waves/Waves_00298.png +0 -0
  182. data/spec/fixtures/kle_generate/Waves/Waves_00299.png +0 -0
  183. data/spec/fixtures/kle_generate/Waves/Waves_00300.png +0 -0
  184. data/spec/fixtures/kle_generate/Waves/Waves_00301.png +0 -0
  185. data/spec/fixtures/kle_generate/Waves/Waves_00302.png +0 -0
  186. data/spec/fixtures/kle_generate/Waves/Waves_00303.png +0 -0
  187. data/spec/fixtures/kle_generate/Waves/Waves_00304.png +0 -0
  188. data/spec/fixtures/kle_generate/Waves/Waves_00305.png +0 -0
  189. data/spec/fixtures/kle_generate/Waves/Waves_00306.png +0 -0
  190. data/spec/fixtures/kle_generate/Waves/Waves_00307.png +0 -0
  191. data/spec/fixtures/kle_generate/Waves/Waves_00308.png +0 -0
  192. data/spec/fixtures/kle_generate/Waves/Waves_00309.png +0 -0
  193. data/spec/fixtures/kle_generate/Waves/Waves_00310.png +0 -0
  194. data/spec/fixtures/kle_generate/Waves/Waves_00311.png +0 -0
  195. data/spec/fixtures/kle_generate/Waves/Waves_00312.png +0 -0
  196. data/spec/fixtures/kle_generate/Waves/Waves_00313.png +0 -0
  197. data/spec/fixtures/kle_generate/Waves/Waves_00314.png +0 -0
  198. data/spec/fixtures/kle_generate/Waves/Waves_00315.png +0 -0
  199. data/spec/fixtures/kle_generate/Waves/Waves_00316.png +0 -0
  200. data/spec/fixtures/kle_generate/Waves/Waves_00317.png +0 -0
  201. data/spec/fixtures/kle_generate/Waves/Waves_00318.png +0 -0
  202. data/spec/fixtures/kle_generate/Waves/Waves_00319.png +0 -0
  203. data/spec/fixtures/kle_generate/Waves/Waves_00320.png +0 -0
  204. data/spec/fixtures/kle_generate/Waves/Waves_00321.png +0 -0
  205. data/spec/fixtures/kle_generate/Waves/Waves_00322.png +0 -0
  206. data/spec/fixtures/kle_generate/Waves/Waves_00323.png +0 -0
  207. data/spec/fixtures/kle_generate/Waves/Waves_00324.png +0 -0
  208. data/spec/fixtures/kle_generate/Waves/Waves_00325.png +0 -0
  209. data/spec/fixtures/kle_generate/Waves/Waves_00326.png +0 -0
  210. data/spec/fixtures/kle_generate/Waves/Waves_00327.png +0 -0
  211. data/spec/fixtures/kle_generate/Waves/Waves_00328.png +0 -0
  212. data/spec/fixtures/kle_generate/Waves/Waves_00329.png +0 -0
  213. data/spec/fixtures/kle_generate/Waves/Waves_00330.png +0 -0
  214. data/spec/fixtures/kle_generate/Waves/Waves_00331.png +0 -0
  215. data/spec/fixtures/kle_generate/Waves/Waves_00332.png +0 -0
  216. data/spec/fixtures/kle_generate/Waves/Waves_00333.png +0 -0
  217. data/spec/fixtures/kle_generate/Waves/Waves_00334.png +0 -0
  218. data/spec/fixtures/kle_generate/Waves/Waves_00335.png +0 -0
  219. data/spec/fixtures/kle_generate/Waves/Waves_00336.png +0 -0
  220. data/spec/fixtures/kle_generate/Waves/Waves_00337.png +0 -0
  221. data/spec/fixtures/kle_generate/Waves/Waves_00338.png +0 -0
  222. data/spec/fixtures/kle_generate/Waves/Waves_00339.png +0 -0
  223. data/spec/fixtures/kle_generate/Waves/Waves_00340.png +0 -0
  224. data/spec/fixtures/kle_generate/Waves/Waves_00341.png +0 -0
  225. data/spec/fixtures/kle_generate/Waves/Waves_00342.png +0 -0
  226. data/spec/fixtures/kle_generate/Waves/Waves_00343.png +0 -0
  227. data/spec/fixtures/kle_generate/Waves/Waves_00344.png +0 -0
  228. data/spec/fixtures/kle_generate/Waves/Waves_00345.png +0 -0
  229. data/spec/fixtures/kle_generate/Waves/Waves_00346.png +0 -0
  230. data/spec/fixtures/kle_generate/Waves/Waves_00347.png +0 -0
  231. data/spec/fixtures/kle_generate/Waves/Waves_00348.png +0 -0
  232. data/spec/fixtures/kle_generate/Waves/Waves_00349.png +0 -0
  233. data/spec/fixtures/kle_generate/Waves/Waves_00350.png +0 -0
  234. data/spec/fixtures/kle_generate/Waves/Waves_00351.png +0 -0
  235. data/spec/fixtures/kle_generate/Waves/Waves_00352.png +0 -0
  236. data/spec/fixtures/kle_generate/Waves/Waves_00353.png +0 -0
  237. data/spec/fixtures/kle_generate/Waves/Waves_00354.png +0 -0
  238. data/spec/fixtures/kle_generate/Waves/Waves_00355.png +0 -0
  239. data/spec/fixtures/kle_generate/Waves/Waves_00356.png +0 -0
  240. data/spec/fixtures/kle_generate/Waves/Waves_00357.png +0 -0
  241. data/spec/fixtures/kle_generate/Waves/Waves_00358.png +0 -0
  242. data/spec/fixtures/kle_generate/Waves/Waves_00359.png +0 -0
  243. data/spec/fixtures/kle_generate/Waves/Waves_00360.png +0 -0
  244. data/spec/fixtures/kle_generate/Waves/Waves_00361.png +0 -0
  245. data/spec/fixtures/kle_generate/Waves/Waves_00362.png +0 -0
  246. data/spec/fixtures/kle_generate/Waves/Waves_00363.png +0 -0
  247. data/spec/fixtures/kle_generate/Waves/Waves_00364.png +0 -0
  248. data/spec/fixtures/kle_generate/Waves/Waves_00365.png +0 -0
  249. data/spec/fixtures/kle_generate/Waves/Waves_00366.png +0 -0
  250. data/spec/fixtures/kle_generate/Waves/Waves_00367.png +0 -0
  251. data/spec/fixtures/kle_generate/Waves/Waves_00368.png +0 -0
  252. data/spec/fixtures/kle_generate/Waves/Waves_00369.png +0 -0
  253. data/spec/fixtures/kle_generate/Waves/Waves_00370.png +0 -0
  254. data/spec/fixtures/kle_generate/Waves/Waves_00371.png +0 -0
  255. data/spec/fixtures/kle_generate/Waves/Waves_00372.png +0 -0
  256. data/spec/fixtures/kle_generate/Waves/Waves_00373.png +0 -0
  257. data/spec/fixtures/kle_generate/Waves/Waves_00374.png +0 -0
  258. data/spec/fixtures/kle_generate/Waves/Waves_00375.png +0 -0
  259. data/spec/fixtures/kle_generate/Waves/Waves_00376.png +0 -0
  260. data/spec/fixtures/kle_generate/Waves/Waves_00377.png +0 -0
  261. data/spec/fixtures/kle_generate/Waves/Waves_00378.png +0 -0
  262. data/spec/fixtures/kle_generate/Waves/Waves_00379.png +0 -0
  263. data/spec/fixtures/kle_generate/Waves/Waves_00380.png +0 -0
  264. data/spec/fixtures/kle_generate/Waves/Waves_00381.png +0 -0
  265. data/spec/fixtures/kle_generate/Waves/Waves_00382.png +0 -0
  266. data/spec/fixtures/kle_generate/Waves/Waves_00383.png +0 -0
  267. data/spec/fixtures/kle_generate/Waves/Waves_00384.png +0 -0
  268. data/spec/fixtures/kle_generate/Waves/Waves_00385.png +0 -0
  269. data/spec/fixtures/kle_generate/Waves/Waves_00386.png +0 -0
  270. data/spec/fixtures/kle_generate/Waves/Waves_00387.png +0 -0
  271. data/spec/fixtures/kle_generate/Waves/Waves_00388.png +0 -0
  272. data/spec/fixtures/kle_generate/Waves/Waves_00389.png +0 -0
  273. data/spec/fixtures/kle_generate/Waves/Waves_00390.png +0 -0
  274. data/spec/fixtures/kle_generate/Waves/Waves_00391.png +0 -0
  275. data/spec/fixtures/kle_generate/Waves/Waves_00392.png +0 -0
  276. data/spec/fixtures/kle_generate/simple_Waves/Waves_00129.png +0 -0
  277. data/spec/fixtures/kle_generate/simple_Waves/Waves_00130.png +0 -0
  278. data/spec/fixtures/kle_generate/test/1.png +0 -0
  279. data/spec/fixtures/test.kle +0 -0
  280. data/spec/fixtures/test_without_gamma_and_fps.kle +0 -0
  281. data/spec/fixtures/wave.kle +0 -0
  282. data/spec/lib/klear/file_generator_spec.rb +81 -0
  283. data/spec/spec_helper.rb +19 -0
  284. metadata +715 -0
@@ -0,0 +1,6 @@
1
+ # Ignore all logfiles and tempfiles.
2
+ /log/*
3
+ /tmp
4
+
5
+ ## PROJECT::SPECIFIC
6
+ README.html
data/Gemfile ADDED
@@ -0,0 +1,3 @@
1
+ source 'https://rubygems.org'
2
+
3
+ gemspec # see klear.gemspec for dependencies
@@ -0,0 +1,44 @@
1
+ PATH
2
+ remote: .
3
+ specs:
4
+ klear (0.0.1)
5
+ applix
6
+ bindata
7
+ rubyzip
8
+
9
+ GEM
10
+ remote: https://rubygems.org/
11
+ specs:
12
+ applix (0.4.10)
13
+ daemons
14
+ bindata (1.5.0)
15
+ daemons (1.1.9)
16
+ diff-lcs (1.1.3)
17
+ guard (1.3.2)
18
+ listen (>= 0.4.2)
19
+ thor (>= 0.14.6)
20
+ guard-rspec (1.2.1)
21
+ guard (>= 1.1)
22
+ listen (0.5.0)
23
+ rb-fsevent (0.9.3)
24
+ rspec (2.11.0)
25
+ rspec-core (~> 2.11.0)
26
+ rspec-expectations (~> 2.11.0)
27
+ rspec-mocks (~> 2.11.0)
28
+ rspec-core (2.11.1)
29
+ rspec-expectations (2.11.3)
30
+ diff-lcs (~> 1.1.3)
31
+ rspec-mocks (2.11.2)
32
+ rubyzip (0.9.9)
33
+ thor (0.16.0)
34
+
35
+ PLATFORMS
36
+ java
37
+ ruby
38
+
39
+ DEPENDENCIES
40
+ guard
41
+ guard-rspec
42
+ klear!
43
+ rb-fsevent (~> 0.9.1)
44
+ rspec
@@ -0,0 +1,8 @@
1
+ # Guardfile info at: https://github.com/guard/guard#readme
2
+
3
+ guard 'rspec', all_on_start: true, cli: '--format nested --color' do
4
+ watch(%r{^spec/.+_spec\.rb$})
5
+ watch(%r{^lib/(.+)\.rb$}) { |m| "spec/lib/#{m[1]}_spec.rb" }
6
+ watch('spec/spec_helper.rb') { "spec" }
7
+ watch('lib/klear.rb') { "spec" }
8
+ end
@@ -0,0 +1,2 @@
1
+ require 'bundler'
2
+ Bundler::GemHelper.install_tasks
@@ -0,0 +1,60 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'rubygems'
4
+ require 'bundler/setup'
5
+ require 'applix'
6
+
7
+ $:.unshift File.join(File.dirname(__FILE__), '..', 'lib')
8
+ require 'klear'
9
+
10
+ def usage
11
+ puts <<HELP
12
+ klear usage
13
+
14
+ klear --help
15
+ * this help
16
+ klear [OPTIONS] generate <path_to_png_folder> <kle-file>
17
+ * Generates kle file from png_folder
18
+ klear [OPTIONS] regenerate <kle-file>
19
+ * Regenerates kle file's cache
20
+ klear info <kle-file>
21
+ * Produces report on a kle file.
22
+
23
+ OPTIONS
24
+ -- silent:[true/false] - default false
25
+ HELP
26
+ #'
27
+
28
+ exit
29
+ end
30
+
31
+ Defaults = {
32
+ silent: false,
33
+ fps: 25,
34
+ gamma: 1.0
35
+ }
36
+
37
+ Applix.main(ARGV, Defaults) do
38
+ prolog do |_, opts|
39
+ opts[:help] and usage
40
+ @app = Klear::FileGenerator.new(opts)
41
+ end
42
+
43
+ handle(:generate) do |*args, opts|
44
+ (1 < args.size) or usage
45
+ @app.generate(*args)
46
+ end
47
+
48
+ handle(:regenerate) do |*args, opts|
49
+ (0 < args.size) or usage
50
+ @app.regenerate(*args)
51
+ end
52
+
53
+ # handle(:info) do |*args, opts|
54
+ # (0 < args.size) or usage
55
+ # choreograhpy = Klear::Choreography.load args[0]
56
+ # puts choreograhpy.info
57
+ # end
58
+
59
+ handle(:any) {|_, _| usage}
60
+ end
@@ -0,0 +1,41 @@
1
+ # -*- encoding: utf-8 -*-
2
+ $:.push File.expand_path("../lib", __FILE__)
3
+ require 'klear/version'
4
+
5
+ Gem::Specification.new do |s|
6
+ s.name = 'klear'
7
+ s.version = Klear::VERSION
8
+ s.date = Klear::DATE
9
+ s.authors = ['art+com/dirk luesebrink']
10
+ s.email = ['dirk.luesebrink@artcom.de']
11
+ s.homepage = 'http://www.artcom.de/en/projects/project/detail/manta-rhei/'
12
+ s.summary = 'create, manage and play choreographies and atrificial light patterns on the Manta Rhei'
13
+ s.description = %q{
14
+ kinetic light engine by art+com. Create, manage and play choreographies and
15
+ artificial light patterns on the Manta Rhei
16
+ }
17
+ s.add_dependency 'applix'
18
+ s.add_dependency 'rubyzip'
19
+ s.add_dependency 'bindata'
20
+
21
+ s.add_development_dependency 'rspec'
22
+ #s.add_development_dependency 'rspec-mocks'
23
+ s.add_development_dependency 'guard'
24
+ s.add_development_dependency 'guard-rspec'
25
+ #s.add_development_dependency 'growl'
26
+ #s.add_development_dependency 'ruby-prof'
27
+ s.add_development_dependency 'rb-fsevent', '~>0.9.1'
28
+
29
+ if RUBY_PLATFORM.match /java/i
30
+ #s.add_development_dependency 'ruby-debug'
31
+ else
32
+ s.add_development_dependency 'debugger'
33
+ end
34
+
35
+ s.files = `git ls-files`.split("\n")
36
+ s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
37
+ s.executables = `git ls-files -- bin/*`.split("\n").map do |f|
38
+ File.basename(f)
39
+ end
40
+ s.require_paths = ["lib"]
41
+ end
@@ -0,0 +1,7 @@
1
+ require 'zip/zipfilesystem'
2
+ require 'bindata'
3
+ require 'yaml'
4
+
5
+ module Klear; end
6
+ require 'klear/version'
7
+ require 'klear/file_generator'
@@ -0,0 +1,160 @@
1
+ # TODO maybe use Zip::ZipOutputStream for generating the zip first in-memory?
2
+ # TODO extract java/jruby specific stuff
3
+
4
+ class Klear::FileGenerator
5
+
6
+ def initialize options = {}
7
+ @png_path = nil
8
+ @kle_path = nil
9
+ @fps = 25
10
+ if options.has_key? :fps
11
+ @fps = options[:fps]
12
+ end
13
+ @gamma = 1.0
14
+ if options.has_key? :gamma
15
+ @gamma = options[:gamma]
16
+ end
17
+ @geometry = nil
18
+ @raw_frame_values = []
19
+ @kle_file = nil
20
+ @silent = true
21
+ if options.has_key? :silent
22
+ @silent = !!options[:silent]
23
+ end
24
+ end
25
+
26
+ def load
27
+ Zip::ZipFile.open(@kle_path) { |kle|
28
+ @kle_file = kle
29
+ }
30
+ end
31
+
32
+ def write
33
+ Zip::ZipFile.open(@kle_path, Zip::ZipFile::CREATE) { |kle|
34
+ @kle_file = kle
35
+ add_pngs
36
+ regenerate_cache
37
+
38
+ # Meta
39
+ kle.mkdir('META-INF')
40
+ kle.file.open("META-INF/MANIFEST.MF", "w") do |os|
41
+ os.write <<-MANIFEST
42
+ Manifest-Version: 1.0
43
+
44
+ Kle-Version: 1.0
45
+ Created-By: #{__FILE__} (#{Klear::VERSION})
46
+ Generated-At: #{Time.now}
47
+
48
+ MANIFEST
49
+ end
50
+ kle.file.open("META-INF/kle.yml", "w") { |os|
51
+ os.write({
52
+ "geometry" => @geometry,
53
+ "gamma" => @gamma,
54
+ "fps" => @fps
55
+ }.to_yaml)
56
+ }
57
+ }
58
+ end
59
+
60
+ def generate thePngPath, theKleFile
61
+ @png_path = thePngPath
62
+ @kle_path = theKleFile
63
+ if File.exists? @kle_path
64
+ raise "File #{@kle_path} already exists"
65
+ end
66
+ write
67
+ report
68
+ end
69
+
70
+ def report
71
+ report = <<-REPORT
72
+
73
+ Input Directory : '#{@png_path}'
74
+ Output KleFile : '#{@kle_path}'
75
+
76
+ Details:
77
+ * number of [png files|frames]: #{@kle_file.dir.entries("/frames").size}
78
+ * fps: #{@fps}
79
+ * gamma : #{@gamma}
80
+ * geometry : #{@geometry}
81
+
82
+ REPORT
83
+ puts report if !@silent
84
+ end
85
+
86
+ def regenerate theKleFile
87
+ @kle_path = theKleFile
88
+ load
89
+ regenerate_cache
90
+ end
91
+
92
+ private
93
+
94
+ def add_pngs
95
+ @kle_file.mkdir('frames')
96
+ Dir.glob("#{@png_path}/*.png") do |file|
97
+ puts " * adding png file '#{file}' to '#{@kle_path}'" if !@silent
98
+ @kle_file.add("frames/#{File.basename(file)}", file)
99
+ end
100
+ end
101
+
102
+ def regenerate_cache
103
+ puts "regenerating cache..." if !@silent
104
+ if @kle_file.dir.entries("/").include?("cache")
105
+ @kle_file.dir.rmdir('cache')
106
+ end
107
+ @kle_file.dir.mkdir('cache')
108
+ if @raw_frame_values.empty?
109
+ analyze_images
110
+ end
111
+ @kle_file.file.open("cache/frames.bin", "wb") { |os|
112
+ arr = BinData::Array.new(:type => :uint16be)
113
+ arr.assign @raw_frame_values
114
+ arr.write(os)
115
+ }
116
+ @kle_file.commit
117
+ end
118
+
119
+ if RUBY_PLATFORM.match /java/i
120
+ include Java
121
+ import 'javax.media.jai.JAI'
122
+ import 'com.sun.media.jai.codec.ByteArraySeekableStream'
123
+
124
+ def analyze_images
125
+ @kle_file.dir.entries("/frames").each { |png|
126
+ puts "analyzing image file '#{png}'" if !@silent
127
+ seekable = ByteArraySeekableStream.new(@kle_file.file.read("/frames/#{png}").to_java_bytes)
128
+ image = JAI.create("stream", seekable)
129
+ @raw_frame_values = @raw_frame_values + analyze_image(image)
130
+ }
131
+ end
132
+
133
+ def analyze_image image
134
+ if !@geometry
135
+ @geometry = { :columns => image.width / 10,
136
+ :rows => image.height / 10 }
137
+ puts "Determined geometry: #{@geometry.inspect}" if !@silent
138
+ end
139
+
140
+ raster = image.getData
141
+ bytes = []
142
+ (0...@geometry[:rows]).to_a.reverse!.each { |row|
143
+ (0...@geometry[:columns]).each { |col|
144
+ myPixelY = 5 + 10 * (row)
145
+ myPixelX = 5 + 10 * (col)
146
+ myPickedValue = raster.getPixel(myPixelX, myPixelY, nil)[0].to_i
147
+ #puts "value at (col #{col}, #{@geometry[:rows] - row - 1}) - pixel-coords: (#{myPixelX}, #{myPixelY}) => #{myPickedValue}"
148
+ bytes << myPickedValue
149
+ }
150
+ }
151
+ bytes
152
+ end
153
+
154
+ else # NOT JAVA!
155
+ def analyze_images
156
+ raise "use JRUBY to run this script with #analyse_images support"
157
+ end
158
+ end
159
+
160
+ end
@@ -0,0 +1,4 @@
1
+ module Klear
2
+ VERSION = '0.0.1'
3
+ DATE = '2013-06-20'
4
+ end