pixitar 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (355) hide show
  1. checksums.yaml +7 -0
  2. data/.github/workflows/ruby.yml +33 -0
  3. data/.gitignore +11 -0
  4. data/.travis.yml +6 -0
  5. data/Gemfile +7 -0
  6. data/Gemfile.lock +23 -0
  7. data/LICENSE.txt +21 -0
  8. data/README.md +50 -0
  9. data/Rakefile +10 -0
  10. data/bin/console +14 -0
  11. data/bin/setup +8 -0
  12. data/examples/avatars.png +0 -0
  13. data/images/female/background1.png +0 -0
  14. data/images/female/background2.png +0 -0
  15. data/images/female/background3.png +0 -0
  16. data/images/female/background4.png +0 -0
  17. data/images/female/background5.png +0 -0
  18. data/images/female/clothes1.png +0 -0
  19. data/images/female/clothes10.png +0 -0
  20. data/images/female/clothes11.png +0 -0
  21. data/images/female/clothes12.png +0 -0
  22. data/images/female/clothes13.png +0 -0
  23. data/images/female/clothes14.png +0 -0
  24. data/images/female/clothes15.png +0 -0
  25. data/images/female/clothes16.png +0 -0
  26. data/images/female/clothes17.png +0 -0
  27. data/images/female/clothes18.png +0 -0
  28. data/images/female/clothes19.png +0 -0
  29. data/images/female/clothes2.png +0 -0
  30. data/images/female/clothes20.png +0 -0
  31. data/images/female/clothes21.png +0 -0
  32. data/images/female/clothes22.png +0 -0
  33. data/images/female/clothes23.png +0 -0
  34. data/images/female/clothes24.png +0 -0
  35. data/images/female/clothes25.png +0 -0
  36. data/images/female/clothes26.png +0 -0
  37. data/images/female/clothes27.png +0 -0
  38. data/images/female/clothes28.png +0 -0
  39. data/images/female/clothes29.png +0 -0
  40. data/images/female/clothes3.png +0 -0
  41. data/images/female/clothes30.png +0 -0
  42. data/images/female/clothes31.png +0 -0
  43. data/images/female/clothes32.png +0 -0
  44. data/images/female/clothes33.png +0 -0
  45. data/images/female/clothes34.png +0 -0
  46. data/images/female/clothes35.png +0 -0
  47. data/images/female/clothes36.png +0 -0
  48. data/images/female/clothes37.png +0 -0
  49. data/images/female/clothes38.png +0 -0
  50. data/images/female/clothes39.png +0 -0
  51. data/images/female/clothes4.png +0 -0
  52. data/images/female/clothes40.png +0 -0
  53. data/images/female/clothes41.png +0 -0
  54. data/images/female/clothes42.png +0 -0
  55. data/images/female/clothes43.png +0 -0
  56. data/images/female/clothes44.png +0 -0
  57. data/images/female/clothes45.png +0 -0
  58. data/images/female/clothes46.png +0 -0
  59. data/images/female/clothes47.png +0 -0
  60. data/images/female/clothes48.png +0 -0
  61. data/images/female/clothes49.png +0 -0
  62. data/images/female/clothes5.png +0 -0
  63. data/images/female/clothes50.png +0 -0
  64. data/images/female/clothes51.png +0 -0
  65. data/images/female/clothes52.png +0 -0
  66. data/images/female/clothes53.png +0 -0
  67. data/images/female/clothes54.png +0 -0
  68. data/images/female/clothes55.png +0 -0
  69. data/images/female/clothes56.png +0 -0
  70. data/images/female/clothes57.png +0 -0
  71. data/images/female/clothes58.png +0 -0
  72. data/images/female/clothes59.png +0 -0
  73. data/images/female/clothes6.png +0 -0
  74. data/images/female/clothes7.png +0 -0
  75. data/images/female/clothes8.png +0 -0
  76. data/images/female/clothes9.png +0 -0
  77. data/images/female/eye1.png +0 -0
  78. data/images/female/eye10.png +0 -0
  79. data/images/female/eye11.png +0 -0
  80. data/images/female/eye12.png +0 -0
  81. data/images/female/eye13.png +0 -0
  82. data/images/female/eye14.png +0 -0
  83. data/images/female/eye15.png +0 -0
  84. data/images/female/eye16.png +0 -0
  85. data/images/female/eye17.png +0 -0
  86. data/images/female/eye18.png +0 -0
  87. data/images/female/eye19.png +0 -0
  88. data/images/female/eye2.png +0 -0
  89. data/images/female/eye20.png +0 -0
  90. data/images/female/eye21.png +0 -0
  91. data/images/female/eye22.png +0 -0
  92. data/images/female/eye23.png +0 -0
  93. data/images/female/eye24.png +0 -0
  94. data/images/female/eye25.png +0 -0
  95. data/images/female/eye26.png +0 -0
  96. data/images/female/eye27.png +0 -0
  97. data/images/female/eye28.png +0 -0
  98. data/images/female/eye29.png +0 -0
  99. data/images/female/eye3.png +0 -0
  100. data/images/female/eye30.png +0 -0
  101. data/images/female/eye31.png +0 -0
  102. data/images/female/eye32.png +0 -0
  103. data/images/female/eye33.png +0 -0
  104. data/images/female/eye34.png +0 -0
  105. data/images/female/eye35.png +0 -0
  106. data/images/female/eye36.png +0 -0
  107. data/images/female/eye37.png +0 -0
  108. data/images/female/eye38.png +0 -0
  109. data/images/female/eye39.png +0 -0
  110. data/images/female/eye4.png +0 -0
  111. data/images/female/eye40.png +0 -0
  112. data/images/female/eye41.png +0 -0
  113. data/images/female/eye42.png +0 -0
  114. data/images/female/eye43.png +0 -0
  115. data/images/female/eye44.png +0 -0
  116. data/images/female/eye45.png +0 -0
  117. data/images/female/eye46.png +0 -0
  118. data/images/female/eye47.png +0 -0
  119. data/images/female/eye48.png +0 -0
  120. data/images/female/eye49.png +0 -0
  121. data/images/female/eye5.png +0 -0
  122. data/images/female/eye50.png +0 -0
  123. data/images/female/eye51.png +0 -0
  124. data/images/female/eye52.png +0 -0
  125. data/images/female/eye53.png +0 -0
  126. data/images/female/eye6.png +0 -0
  127. data/images/female/eye7.png +0 -0
  128. data/images/female/eye8.png +0 -0
  129. data/images/female/eye9.png +0 -0
  130. data/images/female/face1.png +0 -0
  131. data/images/female/face2.png +0 -0
  132. data/images/female/face3.png +0 -0
  133. data/images/female/face4.png +0 -0
  134. data/images/female/hair1.png +0 -0
  135. data/images/female/hair10.png +0 -0
  136. data/images/female/hair11.png +0 -0
  137. data/images/female/hair12.png +0 -0
  138. data/images/female/hair13.png +0 -0
  139. data/images/female/hair14.png +0 -0
  140. data/images/female/hair15.png +0 -0
  141. data/images/female/hair16.png +0 -0
  142. data/images/female/hair17.png +0 -0
  143. data/images/female/hair18.png +0 -0
  144. data/images/female/hair19.png +0 -0
  145. data/images/female/hair2.png +0 -0
  146. data/images/female/hair20.png +0 -0
  147. data/images/female/hair21.png +0 -0
  148. data/images/female/hair22.png +0 -0
  149. data/images/female/hair23.png +0 -0
  150. data/images/female/hair24.png +0 -0
  151. data/images/female/hair25.png +0 -0
  152. data/images/female/hair26.png +0 -0
  153. data/images/female/hair27.png +0 -0
  154. data/images/female/hair28.png +0 -0
  155. data/images/female/hair29.png +0 -0
  156. data/images/female/hair3.png +0 -0
  157. data/images/female/hair30.png +0 -0
  158. data/images/female/hair31.png +0 -0
  159. data/images/female/hair32.png +0 -0
  160. data/images/female/hair33.png +0 -0
  161. data/images/female/hair4.png +0 -0
  162. data/images/female/hair5.png +0 -0
  163. data/images/female/hair6.png +0 -0
  164. data/images/female/hair7.png +0 -0
  165. data/images/female/hair8.png +0 -0
  166. data/images/female/hair9.png +0 -0
  167. data/images/female/mouth1.png +0 -0
  168. data/images/female/mouth10.png +0 -0
  169. data/images/female/mouth11.png +0 -0
  170. data/images/female/mouth12.png +0 -0
  171. data/images/female/mouth13.png +0 -0
  172. data/images/female/mouth14.png +0 -0
  173. data/images/female/mouth15.png +0 -0
  174. data/images/female/mouth16.png +0 -0
  175. data/images/female/mouth17.png +0 -0
  176. data/images/female/mouth2.png +0 -0
  177. data/images/female/mouth3.png +0 -0
  178. data/images/female/mouth4.png +0 -0
  179. data/images/female/mouth5.png +0 -0
  180. data/images/female/mouth6.png +0 -0
  181. data/images/female/mouth7.png +0 -0
  182. data/images/female/mouth8.png +0 -0
  183. data/images/female/mouth9.png +0 -0
  184. data/images/male/background1.png +0 -0
  185. data/images/male/background2.png +0 -0
  186. data/images/male/background3.png +0 -0
  187. data/images/male/background4.png +0 -0
  188. data/images/male/background5.png +0 -0
  189. data/images/male/clothes1.png +0 -0
  190. data/images/male/clothes10.png +0 -0
  191. data/images/male/clothes11.png +0 -0
  192. data/images/male/clothes12.png +0 -0
  193. data/images/male/clothes13.png +0 -0
  194. data/images/male/clothes14.png +0 -0
  195. data/images/male/clothes15.png +0 -0
  196. data/images/male/clothes16.png +0 -0
  197. data/images/male/clothes17.png +0 -0
  198. data/images/male/clothes18.png +0 -0
  199. data/images/male/clothes19.png +0 -0
  200. data/images/male/clothes2.png +0 -0
  201. data/images/male/clothes20.png +0 -0
  202. data/images/male/clothes21.png +0 -0
  203. data/images/male/clothes22.png +0 -0
  204. data/images/male/clothes23.png +0 -0
  205. data/images/male/clothes24.png +0 -0
  206. data/images/male/clothes25.png +0 -0
  207. data/images/male/clothes26.png +0 -0
  208. data/images/male/clothes27.png +0 -0
  209. data/images/male/clothes28.png +0 -0
  210. data/images/male/clothes29.png +0 -0
  211. data/images/male/clothes3.png +0 -0
  212. data/images/male/clothes30.png +0 -0
  213. data/images/male/clothes31.png +0 -0
  214. data/images/male/clothes32.png +0 -0
  215. data/images/male/clothes33.png +0 -0
  216. data/images/male/clothes34.png +0 -0
  217. data/images/male/clothes35.png +0 -0
  218. data/images/male/clothes36.png +0 -0
  219. data/images/male/clothes37.png +0 -0
  220. data/images/male/clothes38.png +0 -0
  221. data/images/male/clothes39.png +0 -0
  222. data/images/male/clothes4.png +0 -0
  223. data/images/male/clothes40.png +0 -0
  224. data/images/male/clothes41.png +0 -0
  225. data/images/male/clothes42.png +0 -0
  226. data/images/male/clothes43.png +0 -0
  227. data/images/male/clothes44.png +0 -0
  228. data/images/male/clothes45.png +0 -0
  229. data/images/male/clothes46.png +0 -0
  230. data/images/male/clothes47.png +0 -0
  231. data/images/male/clothes48.png +0 -0
  232. data/images/male/clothes49.png +0 -0
  233. data/images/male/clothes5.png +0 -0
  234. data/images/male/clothes50.png +0 -0
  235. data/images/male/clothes51.png +0 -0
  236. data/images/male/clothes52.png +0 -0
  237. data/images/male/clothes53.png +0 -0
  238. data/images/male/clothes54.png +0 -0
  239. data/images/male/clothes55.png +0 -0
  240. data/images/male/clothes56.png +0 -0
  241. data/images/male/clothes57.png +0 -0
  242. data/images/male/clothes58.png +0 -0
  243. data/images/male/clothes59.png +0 -0
  244. data/images/male/clothes6.png +0 -0
  245. data/images/male/clothes60.png +0 -0
  246. data/images/male/clothes61.png +0 -0
  247. data/images/male/clothes62.png +0 -0
  248. data/images/male/clothes63.png +0 -0
  249. data/images/male/clothes64.png +0 -0
  250. data/images/male/clothes65.png +0 -0
  251. data/images/male/clothes7.png +0 -0
  252. data/images/male/clothes8.png +0 -0
  253. data/images/male/clothes9.png +0 -0
  254. data/images/male/eye1.png +0 -0
  255. data/images/male/eye10.png +0 -0
  256. data/images/male/eye11.png +0 -0
  257. data/images/male/eye12.png +0 -0
  258. data/images/male/eye13.png +0 -0
  259. data/images/male/eye14.png +0 -0
  260. data/images/male/eye15.png +0 -0
  261. data/images/male/eye16.png +0 -0
  262. data/images/male/eye17.png +0 -0
  263. data/images/male/eye18.png +0 -0
  264. data/images/male/eye19.png +0 -0
  265. data/images/male/eye2.png +0 -0
  266. data/images/male/eye20.png +0 -0
  267. data/images/male/eye21.png +0 -0
  268. data/images/male/eye22.png +0 -0
  269. data/images/male/eye23.png +0 -0
  270. data/images/male/eye24.png +0 -0
  271. data/images/male/eye25.png +0 -0
  272. data/images/male/eye26.png +0 -0
  273. data/images/male/eye27.png +0 -0
  274. data/images/male/eye28.png +0 -0
  275. data/images/male/eye29.png +0 -0
  276. data/images/male/eye3.png +0 -0
  277. data/images/male/eye30.png +0 -0
  278. data/images/male/eye31.png +0 -0
  279. data/images/male/eye32.png +0 -0
  280. data/images/male/eye4.png +0 -0
  281. data/images/male/eye5.png +0 -0
  282. data/images/male/eye6.png +0 -0
  283. data/images/male/eye7.png +0 -0
  284. data/images/male/eye8.png +0 -0
  285. data/images/male/eye9.png +0 -0
  286. data/images/male/face1.png +0 -0
  287. data/images/male/face2.png +0 -0
  288. data/images/male/face3.png +0 -0
  289. data/images/male/face4.png +0 -0
  290. data/images/male/hair1.png +0 -0
  291. data/images/male/hair10.png +0 -0
  292. data/images/male/hair11.png +0 -0
  293. data/images/male/hair12.png +0 -0
  294. data/images/male/hair13.png +0 -0
  295. data/images/male/hair14.png +0 -0
  296. data/images/male/hair15.png +0 -0
  297. data/images/male/hair16.png +0 -0
  298. data/images/male/hair17.png +0 -0
  299. data/images/male/hair18.png +0 -0
  300. data/images/male/hair19.png +0 -0
  301. data/images/male/hair2.png +0 -0
  302. data/images/male/hair20.png +0 -0
  303. data/images/male/hair21.png +0 -0
  304. data/images/male/hair22.png +0 -0
  305. data/images/male/hair23.png +0 -0
  306. data/images/male/hair24.png +0 -0
  307. data/images/male/hair25.png +0 -0
  308. data/images/male/hair26.png +0 -0
  309. data/images/male/hair27.png +0 -0
  310. data/images/male/hair28.png +0 -0
  311. data/images/male/hair29.png +0 -0
  312. data/images/male/hair3.png +0 -0
  313. data/images/male/hair30.png +0 -0
  314. data/images/male/hair31.png +0 -0
  315. data/images/male/hair32.png +0 -0
  316. data/images/male/hair33.png +0 -0
  317. data/images/male/hair34.png +0 -0
  318. data/images/male/hair35.png +0 -0
  319. data/images/male/hair36.png +0 -0
  320. data/images/male/hair4.png +0 -0
  321. data/images/male/hair5.png +0 -0
  322. data/images/male/hair6.png +0 -0
  323. data/images/male/hair7.png +0 -0
  324. data/images/male/hair8.png +0 -0
  325. data/images/male/hair9.png +0 -0
  326. data/images/male/mouth1.png +0 -0
  327. data/images/male/mouth10.png +0 -0
  328. data/images/male/mouth11.png +0 -0
  329. data/images/male/mouth12.png +0 -0
  330. data/images/male/mouth13.png +0 -0
  331. data/images/male/mouth14.png +0 -0
  332. data/images/male/mouth15.png +0 -0
  333. data/images/male/mouth16.png +0 -0
  334. data/images/male/mouth17.png +0 -0
  335. data/images/male/mouth18.png +0 -0
  336. data/images/male/mouth19.png +0 -0
  337. data/images/male/mouth2.png +0 -0
  338. data/images/male/mouth20.png +0 -0
  339. data/images/male/mouth21.png +0 -0
  340. data/images/male/mouth22.png +0 -0
  341. data/images/male/mouth23.png +0 -0
  342. data/images/male/mouth24.png +0 -0
  343. data/images/male/mouth25.png +0 -0
  344. data/images/male/mouth26.png +0 -0
  345. data/images/male/mouth3.png +0 -0
  346. data/images/male/mouth4.png +0 -0
  347. data/images/male/mouth5.png +0 -0
  348. data/images/male/mouth6.png +0 -0
  349. data/images/male/mouth7.png +0 -0
  350. data/images/male/mouth8.png +0 -0
  351. data/images/male/mouth9.png +0 -0
  352. data/lib/pixitar.rb +100 -0
  353. data/lib/pixitar/version.rb +3 -0
  354. data/pixitar.gemspec +29 -0
  355. metadata +427 -0
Binary file
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,100 @@
1
+ require "chunky_png"
2
+ require "pixitar/version"
3
+
4
+ module Pixitar
5
+ class Image
6
+ attr_reader :image_lib
7
+ attr_reader :image
8
+
9
+ def initialize(image_lib = ChunkyPNG::Image, height = 400, width = 400)
10
+ @image_lib = image_lib
11
+ @image = image_lib.new(height, width)
12
+ end
13
+
14
+ def compose(filename)
15
+ canvas = image_lib.from_file(filename)
16
+ image.compose!(canvas, 0, 0)
17
+ end
18
+
19
+ def save(filename)
20
+ image.save(filename, interlace: true)
21
+ end
22
+ end
23
+
24
+ class Avatar
25
+ class InvalidGenderError < StandardError; end
26
+ class MissingImageFilesError < StandardError; end
27
+
28
+ attr_reader :image
29
+ attr_reader :assets_path
30
+ attr_reader :image_extention
31
+ attr_reader :gender
32
+
33
+ def initialize(image_klass = Pixitar::Image.new, opts = {})
34
+ @image = image_klass
35
+ @assets_path = opts.fetch(:assets_path, "images")
36
+ @image_extention = opts.fetch(:image_extention, "png")
37
+ end
38
+
39
+ def face_parts
40
+ [
41
+ :background,
42
+ :clothes,
43
+ :face,
44
+ :hair,
45
+ :mouth,
46
+ :eye
47
+ ]
48
+ end
49
+
50
+ def genders
51
+ [
52
+ :male,
53
+ :female
54
+ ]
55
+ end
56
+
57
+ def random_gender
58
+ genders.sample
59
+ end
60
+
61
+ def male_avatar
62
+ generate_avatar(:male)
63
+ end
64
+
65
+ def female_avatar
66
+ generate_avatar(:female)
67
+ end
68
+
69
+ def generate_avatar(gender = random_gender, filename = "avatar.png")
70
+ @gender = gender
71
+ raise InvalidGenderError unless genders.include?(gender)
72
+
73
+ create_avatar_image(filename)
74
+ end
75
+
76
+ private
77
+
78
+ def create_avatar_image(filename)
79
+ face_parts.map do |face_part|
80
+ asset = random_asset_for(face_part)
81
+ image.compose(asset)
82
+ end
83
+ image.save(filename)
84
+ end
85
+
86
+ def random_asset_for(face_part)
87
+ parts = assets.grep(/#{face_part}/)
88
+ raise MissingImageFilesError, "Missing #{face_part} image files for #{gender} avatars" if parts.empty?
89
+ parts.sample
90
+ end
91
+
92
+ def assets
93
+ @assets ||= Dir.glob(path)
94
+ end
95
+
96
+ def path
97
+ File.join(assets_path, gender.to_s, "*.#{image_extention}")
98
+ end
99
+ end
100
+ end
@@ -0,0 +1,3 @@
1
+ module Pixitar
2
+ VERSION = "0.1.0"
3
+ end
@@ -0,0 +1,29 @@
1
+ require_relative 'lib/pixitar/version'
2
+
3
+ Gem::Specification.new do |spec|
4
+ spec.name = "pixitar"
5
+ spec.version = Pixitar::VERSION
6
+ spec.authors = ["Pavel Timofeev"]
7
+ spec.email = ["pav.timofeev@gmail.com"]
8
+
9
+ spec.summary = "Avatar generation library"
10
+ spec.description = "Pixitar generates random pixel avatar"
11
+ spec.homepage = "https://github.com/ptcodes/pixitar"
12
+ spec.license = "MIT"
13
+ spec.required_ruby_version = Gem::Requirement.new(">= 2.3.0")
14
+ spec.add_runtime_dependency "chunky_png", "~> 1.3.11"
15
+ spec.add_development_dependency "minitest", "~> 5.0"
16
+
17
+ spec.metadata["homepage_uri"] = spec.homepage
18
+ spec.metadata["source_code_uri"] = "https://github.com/ptcodes/pixitar.git"
19
+ spec.metadata["changelog_uri"] = "https://github.com/ptcodes/pixitar/CHANGELOG.md"
20
+
21
+ # Specify which files should be added to the gem when it is released.
22
+ # The `git ls-files -z` loads the files in the RubyGem that have been added into git.
23
+ spec.files = Dir.chdir(File.expand_path('..', __FILE__)) do
24
+ `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
25
+ end
26
+ spec.bindir = "exe"
27
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
28
+ spec.require_paths = ["lib"]
29
+ end
metadata ADDED
@@ -0,0 +1,427 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: pixitar
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Pavel Timofeev
8
+ autorequire:
9
+ bindir: exe
10
+ cert_chain: []
11
+ date: 2020-06-22 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: chunky_png
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: 1.3.11
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: 1.3.11
27
+ - !ruby/object:Gem::Dependency
28
+ name: minitest
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '5.0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '5.0'
41
+ description: Pixitar generates random pixel avatar
42
+ email:
43
+ - pav.timofeev@gmail.com
44
+ executables: []
45
+ extensions: []
46
+ extra_rdoc_files: []
47
+ files:
48
+ - ".github/workflows/ruby.yml"
49
+ - ".gitignore"
50
+ - ".travis.yml"
51
+ - Gemfile
52
+ - Gemfile.lock
53
+ - LICENSE.txt
54
+ - README.md
55
+ - Rakefile
56
+ - bin/console
57
+ - bin/setup
58
+ - examples/avatars.png
59
+ - images/female/background1.png
60
+ - images/female/background2.png
61
+ - images/female/background3.png
62
+ - images/female/background4.png
63
+ - images/female/background5.png
64
+ - images/female/clothes1.png
65
+ - images/female/clothes10.png
66
+ - images/female/clothes11.png
67
+ - images/female/clothes12.png
68
+ - images/female/clothes13.png
69
+ - images/female/clothes14.png
70
+ - images/female/clothes15.png
71
+ - images/female/clothes16.png
72
+ - images/female/clothes17.png
73
+ - images/female/clothes18.png
74
+ - images/female/clothes19.png
75
+ - images/female/clothes2.png
76
+ - images/female/clothes20.png
77
+ - images/female/clothes21.png
78
+ - images/female/clothes22.png
79
+ - images/female/clothes23.png
80
+ - images/female/clothes24.png
81
+ - images/female/clothes25.png
82
+ - images/female/clothes26.png
83
+ - images/female/clothes27.png
84
+ - images/female/clothes28.png
85
+ - images/female/clothes29.png
86
+ - images/female/clothes3.png
87
+ - images/female/clothes30.png
88
+ - images/female/clothes31.png
89
+ - images/female/clothes32.png
90
+ - images/female/clothes33.png
91
+ - images/female/clothes34.png
92
+ - images/female/clothes35.png
93
+ - images/female/clothes36.png
94
+ - images/female/clothes37.png
95
+ - images/female/clothes38.png
96
+ - images/female/clothes39.png
97
+ - images/female/clothes4.png
98
+ - images/female/clothes40.png
99
+ - images/female/clothes41.png
100
+ - images/female/clothes42.png
101
+ - images/female/clothes43.png
102
+ - images/female/clothes44.png
103
+ - images/female/clothes45.png
104
+ - images/female/clothes46.png
105
+ - images/female/clothes47.png
106
+ - images/female/clothes48.png
107
+ - images/female/clothes49.png
108
+ - images/female/clothes5.png
109
+ - images/female/clothes50.png
110
+ - images/female/clothes51.png
111
+ - images/female/clothes52.png
112
+ - images/female/clothes53.png
113
+ - images/female/clothes54.png
114
+ - images/female/clothes55.png
115
+ - images/female/clothes56.png
116
+ - images/female/clothes57.png
117
+ - images/female/clothes58.png
118
+ - images/female/clothes59.png
119
+ - images/female/clothes6.png
120
+ - images/female/clothes7.png
121
+ - images/female/clothes8.png
122
+ - images/female/clothes9.png
123
+ - images/female/eye1.png
124
+ - images/female/eye10.png
125
+ - images/female/eye11.png
126
+ - images/female/eye12.png
127
+ - images/female/eye13.png
128
+ - images/female/eye14.png
129
+ - images/female/eye15.png
130
+ - images/female/eye16.png
131
+ - images/female/eye17.png
132
+ - images/female/eye18.png
133
+ - images/female/eye19.png
134
+ - images/female/eye2.png
135
+ - images/female/eye20.png
136
+ - images/female/eye21.png
137
+ - images/female/eye22.png
138
+ - images/female/eye23.png
139
+ - images/female/eye24.png
140
+ - images/female/eye25.png
141
+ - images/female/eye26.png
142
+ - images/female/eye27.png
143
+ - images/female/eye28.png
144
+ - images/female/eye29.png
145
+ - images/female/eye3.png
146
+ - images/female/eye30.png
147
+ - images/female/eye31.png
148
+ - images/female/eye32.png
149
+ - images/female/eye33.png
150
+ - images/female/eye34.png
151
+ - images/female/eye35.png
152
+ - images/female/eye36.png
153
+ - images/female/eye37.png
154
+ - images/female/eye38.png
155
+ - images/female/eye39.png
156
+ - images/female/eye4.png
157
+ - images/female/eye40.png
158
+ - images/female/eye41.png
159
+ - images/female/eye42.png
160
+ - images/female/eye43.png
161
+ - images/female/eye44.png
162
+ - images/female/eye45.png
163
+ - images/female/eye46.png
164
+ - images/female/eye47.png
165
+ - images/female/eye48.png
166
+ - images/female/eye49.png
167
+ - images/female/eye5.png
168
+ - images/female/eye50.png
169
+ - images/female/eye51.png
170
+ - images/female/eye52.png
171
+ - images/female/eye53.png
172
+ - images/female/eye6.png
173
+ - images/female/eye7.png
174
+ - images/female/eye8.png
175
+ - images/female/eye9.png
176
+ - images/female/face1.png
177
+ - images/female/face2.png
178
+ - images/female/face3.png
179
+ - images/female/face4.png
180
+ - images/female/hair1.png
181
+ - images/female/hair10.png
182
+ - images/female/hair11.png
183
+ - images/female/hair12.png
184
+ - images/female/hair13.png
185
+ - images/female/hair14.png
186
+ - images/female/hair15.png
187
+ - images/female/hair16.png
188
+ - images/female/hair17.png
189
+ - images/female/hair18.png
190
+ - images/female/hair19.png
191
+ - images/female/hair2.png
192
+ - images/female/hair20.png
193
+ - images/female/hair21.png
194
+ - images/female/hair22.png
195
+ - images/female/hair23.png
196
+ - images/female/hair24.png
197
+ - images/female/hair25.png
198
+ - images/female/hair26.png
199
+ - images/female/hair27.png
200
+ - images/female/hair28.png
201
+ - images/female/hair29.png
202
+ - images/female/hair3.png
203
+ - images/female/hair30.png
204
+ - images/female/hair31.png
205
+ - images/female/hair32.png
206
+ - images/female/hair33.png
207
+ - images/female/hair4.png
208
+ - images/female/hair5.png
209
+ - images/female/hair6.png
210
+ - images/female/hair7.png
211
+ - images/female/hair8.png
212
+ - images/female/hair9.png
213
+ - images/female/mouth1.png
214
+ - images/female/mouth10.png
215
+ - images/female/mouth11.png
216
+ - images/female/mouth12.png
217
+ - images/female/mouth13.png
218
+ - images/female/mouth14.png
219
+ - images/female/mouth15.png
220
+ - images/female/mouth16.png
221
+ - images/female/mouth17.png
222
+ - images/female/mouth2.png
223
+ - images/female/mouth3.png
224
+ - images/female/mouth4.png
225
+ - images/female/mouth5.png
226
+ - images/female/mouth6.png
227
+ - images/female/mouth7.png
228
+ - images/female/mouth8.png
229
+ - images/female/mouth9.png
230
+ - images/male/background1.png
231
+ - images/male/background2.png
232
+ - images/male/background3.png
233
+ - images/male/background4.png
234
+ - images/male/background5.png
235
+ - images/male/clothes1.png
236
+ - images/male/clothes10.png
237
+ - images/male/clothes11.png
238
+ - images/male/clothes12.png
239
+ - images/male/clothes13.png
240
+ - images/male/clothes14.png
241
+ - images/male/clothes15.png
242
+ - images/male/clothes16.png
243
+ - images/male/clothes17.png
244
+ - images/male/clothes18.png
245
+ - images/male/clothes19.png
246
+ - images/male/clothes2.png
247
+ - images/male/clothes20.png
248
+ - images/male/clothes21.png
249
+ - images/male/clothes22.png
250
+ - images/male/clothes23.png
251
+ - images/male/clothes24.png
252
+ - images/male/clothes25.png
253
+ - images/male/clothes26.png
254
+ - images/male/clothes27.png
255
+ - images/male/clothes28.png
256
+ - images/male/clothes29.png
257
+ - images/male/clothes3.png
258
+ - images/male/clothes30.png
259
+ - images/male/clothes31.png
260
+ - images/male/clothes32.png
261
+ - images/male/clothes33.png
262
+ - images/male/clothes34.png
263
+ - images/male/clothes35.png
264
+ - images/male/clothes36.png
265
+ - images/male/clothes37.png
266
+ - images/male/clothes38.png
267
+ - images/male/clothes39.png
268
+ - images/male/clothes4.png
269
+ - images/male/clothes40.png
270
+ - images/male/clothes41.png
271
+ - images/male/clothes42.png
272
+ - images/male/clothes43.png
273
+ - images/male/clothes44.png
274
+ - images/male/clothes45.png
275
+ - images/male/clothes46.png
276
+ - images/male/clothes47.png
277
+ - images/male/clothes48.png
278
+ - images/male/clothes49.png
279
+ - images/male/clothes5.png
280
+ - images/male/clothes50.png
281
+ - images/male/clothes51.png
282
+ - images/male/clothes52.png
283
+ - images/male/clothes53.png
284
+ - images/male/clothes54.png
285
+ - images/male/clothes55.png
286
+ - images/male/clothes56.png
287
+ - images/male/clothes57.png
288
+ - images/male/clothes58.png
289
+ - images/male/clothes59.png
290
+ - images/male/clothes6.png
291
+ - images/male/clothes60.png
292
+ - images/male/clothes61.png
293
+ - images/male/clothes62.png
294
+ - images/male/clothes63.png
295
+ - images/male/clothes64.png
296
+ - images/male/clothes65.png
297
+ - images/male/clothes7.png
298
+ - images/male/clothes8.png
299
+ - images/male/clothes9.png
300
+ - images/male/eye1.png
301
+ - images/male/eye10.png
302
+ - images/male/eye11.png
303
+ - images/male/eye12.png
304
+ - images/male/eye13.png
305
+ - images/male/eye14.png
306
+ - images/male/eye15.png
307
+ - images/male/eye16.png
308
+ - images/male/eye17.png
309
+ - images/male/eye18.png
310
+ - images/male/eye19.png
311
+ - images/male/eye2.png
312
+ - images/male/eye20.png
313
+ - images/male/eye21.png
314
+ - images/male/eye22.png
315
+ - images/male/eye23.png
316
+ - images/male/eye24.png
317
+ - images/male/eye25.png
318
+ - images/male/eye26.png
319
+ - images/male/eye27.png
320
+ - images/male/eye28.png
321
+ - images/male/eye29.png
322
+ - images/male/eye3.png
323
+ - images/male/eye30.png
324
+ - images/male/eye31.png
325
+ - images/male/eye32.png
326
+ - images/male/eye4.png
327
+ - images/male/eye5.png
328
+ - images/male/eye6.png
329
+ - images/male/eye7.png
330
+ - images/male/eye8.png
331
+ - images/male/eye9.png
332
+ - images/male/face1.png
333
+ - images/male/face2.png
334
+ - images/male/face3.png
335
+ - images/male/face4.png
336
+ - images/male/hair1.png
337
+ - images/male/hair10.png
338
+ - images/male/hair11.png
339
+ - images/male/hair12.png
340
+ - images/male/hair13.png
341
+ - images/male/hair14.png
342
+ - images/male/hair15.png
343
+ - images/male/hair16.png
344
+ - images/male/hair17.png
345
+ - images/male/hair18.png
346
+ - images/male/hair19.png
347
+ - images/male/hair2.png
348
+ - images/male/hair20.png
349
+ - images/male/hair21.png
350
+ - images/male/hair22.png
351
+ - images/male/hair23.png
352
+ - images/male/hair24.png
353
+ - images/male/hair25.png
354
+ - images/male/hair26.png
355
+ - images/male/hair27.png
356
+ - images/male/hair28.png
357
+ - images/male/hair29.png
358
+ - images/male/hair3.png
359
+ - images/male/hair30.png
360
+ - images/male/hair31.png
361
+ - images/male/hair32.png
362
+ - images/male/hair33.png
363
+ - images/male/hair34.png
364
+ - images/male/hair35.png
365
+ - images/male/hair36.png
366
+ - images/male/hair4.png
367
+ - images/male/hair5.png
368
+ - images/male/hair6.png
369
+ - images/male/hair7.png
370
+ - images/male/hair8.png
371
+ - images/male/hair9.png
372
+ - images/male/mouth1.png
373
+ - images/male/mouth10.png
374
+ - images/male/mouth11.png
375
+ - images/male/mouth12.png
376
+ - images/male/mouth13.png
377
+ - images/male/mouth14.png
378
+ - images/male/mouth15.png
379
+ - images/male/mouth16.png
380
+ - images/male/mouth17.png
381
+ - images/male/mouth18.png
382
+ - images/male/mouth19.png
383
+ - images/male/mouth2.png
384
+ - images/male/mouth20.png
385
+ - images/male/mouth21.png
386
+ - images/male/mouth22.png
387
+ - images/male/mouth23.png
388
+ - images/male/mouth24.png
389
+ - images/male/mouth25.png
390
+ - images/male/mouth26.png
391
+ - images/male/mouth3.png
392
+ - images/male/mouth4.png
393
+ - images/male/mouth5.png
394
+ - images/male/mouth6.png
395
+ - images/male/mouth7.png
396
+ - images/male/mouth8.png
397
+ - images/male/mouth9.png
398
+ - lib/pixitar.rb
399
+ - lib/pixitar/version.rb
400
+ - pixitar.gemspec
401
+ homepage: https://github.com/ptcodes/pixitar
402
+ licenses:
403
+ - MIT
404
+ metadata:
405
+ homepage_uri: https://github.com/ptcodes/pixitar
406
+ source_code_uri: https://github.com/ptcodes/pixitar.git
407
+ changelog_uri: https://github.com/ptcodes/pixitar/CHANGELOG.md
408
+ post_install_message:
409
+ rdoc_options: []
410
+ require_paths:
411
+ - lib
412
+ required_ruby_version: !ruby/object:Gem::Requirement
413
+ requirements:
414
+ - - ">="
415
+ - !ruby/object:Gem::Version
416
+ version: 2.3.0
417
+ required_rubygems_version: !ruby/object:Gem::Requirement
418
+ requirements:
419
+ - - ">="
420
+ - !ruby/object:Gem::Version
421
+ version: '0'
422
+ requirements: []
423
+ rubygems_version: 3.0.3
424
+ signing_key:
425
+ specification_version: 4
426
+ summary: Avatar generation library
427
+ test_files: []