pixitar 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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: []