punkart 0.0.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: 2771bd1863acddae95d6cc5ff9b6db4bebe4fb464d0b26830792ab188fc8bf49
4
+ data.tar.gz: 35d51b8ee54604d2b7f724081053137738e118cfa30d223b545ed55fdaa83ec9
5
+ SHA512:
6
+ metadata.gz: f6670e656b26d902a8867ba549ce7df25019f2a4653e7ac24ee47312bd3651b7c4ade311f635c7c9ff519aaa15ac2c44109e6b78236612e7bbdadcc9cc3800fa
7
+ data.tar.gz: 2668bc66bb81b4ef18873cb90853ea277023344ce1c6bdb36c3a3ce1d654e149ffbbe6f88e04ba2039016c467a802b22bb6e594f765bad7920ad949ea3415715
data/CHANGELOG.md ADDED
@@ -0,0 +1,3 @@
1
+ ### 0.0.1 / 2023-04-21
2
+
3
+ * Everything is new. First release
data/Manifest.txt ADDED
@@ -0,0 +1,16 @@
1
+ CHANGELOG.md
2
+ Manifest.txt
3
+ README.md
4
+ Rakefile
5
+ config/bronzecoin.png
6
+ config/dollar.png
7
+ config/goldcoin-back.png
8
+ config/goldcoin-front.png
9
+ config/goldcoin.png
10
+ config/silvercoin.png
11
+ lib/punkart.rb
12
+ lib/punkart/bronzecoin.rb
13
+ lib/punkart/dollar.rb
14
+ lib/punkart/goldcoin.rb
15
+ lib/punkart/silvercoin.rb
16
+ lib/punkart/version.rb
data/README.md ADDED
@@ -0,0 +1,160 @@
1
+ # punk art
2
+
3
+ punkart gem - (automagically) turn your "classic" punk (pixel) heads into dollar greenbacks, gold/silver/bronze coins, and much more
4
+
5
+
6
+
7
+ * home :: [github.com/cryptopunksnotdead/cryptopunks](https://github.com/cryptopunksnotdead/cryptopunks)
8
+ * bugs :: [github.com/cryptopunksnotdead/cryptopunks/issues](https://github.com/cryptopunksnotdead/cryptopunks/issues)
9
+ * gem :: [rubygems.org/gems/punkart](https://rubygems.org/gems/punkart)
10
+ * rdoc :: [rubydoc.info/gems/punkart](http://rubydoc.info/gems/punkart)
11
+
12
+
13
+
14
+
15
+ ## Usage
16
+
17
+
18
+ ### `Image#greenback` (also known as `dollar`, `dollarize`)
19
+
20
+
21
+
22
+ Let's print dollar greenbacks... brrr...
23
+
24
+ ``` ruby
25
+ require 'punkart'
26
+
27
+ specs = [
28
+ ['Robot Male', 'Big Beard'],
29
+ ['Human Male 2', 'Birthday Hat', 'Bubble Gum'],
30
+ ['Human Female 1', 'Dark Hair', 'Flowers', 'Frown', 'Gold Chain'],
31
+ ['Demon Male', 'Hoodie', 'Pipe'],
32
+ ['Ape Male Blue', 'Bandana', 'Earring'],
33
+ ['Human Male 3', 'Cowboy Hat', 'Smile', 'Laser Eyes'],
34
+ ]
35
+
36
+ specs.each_with_index do |attributes, i|
37
+ punk = Punk::Image.generate( *attributes )
38
+
39
+ dollar = punk.greenback ## turn into greenback dollar
40
+ dollar.save( "dollar-#{i+1}.png" )
41
+ dollar.zoom(4).save( "dollar-#{i+1}@4x.png" )
42
+ end
43
+ ```
44
+
45
+
46
+ Voila!
47
+
48
+ ![](i/punk-1.png)
49
+ ![](i/punk-2.png)
50
+ ![](i/punk-3.png)
51
+ ![](i/punk-4.png)
52
+ ![](i/punk-5.png)
53
+ ![](i/punk-6.png)
54
+
55
+ turns into
56
+
57
+ ![](i/dollar-1.png)
58
+ ![](i/dollar-2.png)
59
+ ![](i/dollar-3.png)
60
+ ![](i/dollar-4.png)
61
+ ![](i/dollar-5.png)
62
+ ![](i/dollar-6.png)
63
+
64
+ 4x
65
+
66
+ ![](i/dollar-1@4x.png)
67
+ ![](i/dollar-2@4x.png)
68
+ ![](i/dollar-3@4x.png)
69
+ ![](i/dollar-4@4x.png)
70
+ ![](i/dollar-5@4x.png)
71
+ ![](i/dollar-6@4x.png)
72
+
73
+
74
+
75
+ ### `Image#goldcoin` or `silvercoin` or `bronzecoin`
76
+
77
+ Let's continue and let's mint gold/silver/bronze coins...
78
+
79
+ ``` ruby
80
+ specs.each_with_index do |attributes, i|
81
+ punk = Punk::Image.generate( *attributes )
82
+
83
+ coin = punk.goldcoin ## turn into goldcoin
84
+ coin.save( "goldcoin-#{i+1}.png" )
85
+ coin.zoom(4).save( "goldcoin-#{i+1}@4x.png" )
86
+
87
+ coin = punk.silvercoin ## turn into silvercoin
88
+ coin.save( "silvercoin-#{i+1}.png" )
89
+ coin.zoom(4).save( "silvercoin-#{i+1}@4x.png" )
90
+
91
+ coin = punk.bronzecoin ## turn into bronzecoin
92
+ coin.save( "bronzecoin-#{i+1}.png" )
93
+ coin.zoom(4).save( "bronzecoin-#{i+1}@4x.png" )
94
+ end
95
+ ```
96
+
97
+
98
+ Voila!
99
+
100
+ ![](i/goldcoin-1.png)
101
+ ![](i/goldcoin-2.png)
102
+ ![](i/goldcoin-3.png)
103
+ ![](i/goldcoin-4.png)
104
+ ![](i/goldcoin-5.png)
105
+ ![](i/goldcoin-6.png)
106
+
107
+ ![](i/silvercoin-1.png)
108
+ ![](i/silvercoin-2.png)
109
+ ![](i/silvercoin-3.png)
110
+ ![](i/silvercoin-4.png)
111
+ ![](i/silvercoin-5.png)
112
+ ![](i/silvercoin-6.png)
113
+
114
+ ![](i/bronzecoin-1.png)
115
+ ![](i/bronzecoin-2.png)
116
+ ![](i/bronzecoin-3.png)
117
+ ![](i/bronzecoin-4.png)
118
+ ![](i/bronzecoin-5.png)
119
+ ![](i/bronzecoin-6.png)
120
+
121
+
122
+ 4x
123
+
124
+ ![](i/goldcoin-1@4x.png)
125
+ ![](i/goldcoin-2@4x.png)
126
+ ![](i/goldcoin-3@4x.png)
127
+ ![](i/goldcoin-4@4x.png)
128
+ ![](i/goldcoin-5@4x.png)
129
+ ![](i/goldcoin-6@4x.png)
130
+
131
+ ![](i/silvercoin-1@4x.png)
132
+ ![](i/silvercoin-2@4x.png)
133
+ ![](i/silvercoin-3@4x.png)
134
+ ![](i/silvercoin-4@4x.png)
135
+ ![](i/silvercoin-5@4x.png)
136
+ ![](i/silvercoin-6@4x.png)
137
+
138
+ ![](i/bronzecoin-1@4x.png)
139
+ ![](i/bronzecoin-2@4x.png)
140
+ ![](i/bronzecoin-3@4x.png)
141
+ ![](i/bronzecoin-4@4x.png)
142
+ ![](i/bronzecoin-5@4x.png)
143
+ ![](i/bronzecoin-6@4x.png)
144
+
145
+
146
+
147
+ That's it.
148
+
149
+
150
+ ## License
151
+
152
+ The scripts are dedicated to the public domain.
153
+ Use it as you please with no restrictions whatsoever.
154
+
155
+
156
+ ## Questions? Comments?
157
+
158
+ Post them over at the [Help & Support](https://github.com/geraldb/help) page. Thanks.
159
+
160
+
data/Rakefile ADDED
@@ -0,0 +1,42 @@
1
+ require 'hoe'
2
+ require './lib/punkart/version.rb'
3
+
4
+
5
+ ###
6
+ # hack/ quick fix for broken intuit_values - overwrite with dummy
7
+ class Hoe
8
+ def intuit_values( input ); end
9
+ end
10
+
11
+
12
+ Hoe.spec 'punkart' do
13
+
14
+ self.version = Pixelart::Module::Punkart::VERSION
15
+
16
+
17
+ self.summary = 'punkart gem - (automagically) turn your "classic" punk (pixel) heads into dollar greenbacks, gold/silver/bronze coins, and much more'
18
+ self.description = summary
19
+
20
+ self.urls = { home: 'https://github.com/cryptopunksnotdead/cryptopunks' }
21
+
22
+ self.author = 'Gerald Bauer'
23
+ self.email = 'gerald.bauer@gmail.com'
24
+
25
+ # switch extension to .markdown for gihub formatting
26
+ self.readme_file = 'README.md'
27
+ self.history_file = 'CHANGELOG.md'
28
+
29
+ self.extra_deps = [
30
+ ['pixelart'],
31
+ ['punks'],
32
+ ['punkmaker'],
33
+ ]
34
+
35
+ self.licenses = ['Public Domain']
36
+
37
+ self.spec_extras = {
38
+ required_ruby_version: '>= 2.3'
39
+ }
40
+
41
+ end
42
+
Binary file
data/config/dollar.png ADDED
Binary file
Binary file
Binary file
Binary file
Binary file
@@ -0,0 +1,33 @@
1
+
2
+ module Pixelart
3
+ module Bronzecoin
4
+
5
+ def self.mint( img )
6
+ raise ArgumentError, "sorry only 24x24 supported for now; called on image #{img.width}x#{img.height}" unless img.width == 24 && img.height == 24
7
+
8
+ ## change to coin color palette
9
+ coin = Image.new( 32, 32 )
10
+ coin.compose!( COIN_FRAME )
11
+ coin.compose!( img.change_palette8bit( COIN_PALETTE ), 5, 3 )
12
+ coin
13
+ end
14
+
15
+ ####
16
+ # helpers
17
+ COIN_FRAME = Image.read( "#{Module::Punkart.root}/config/bronzecoin.png" )
18
+
19
+ # note: use dark to light
20
+ COIN_PALETTE = Gradient.new( '#7C433A',
21
+ '#8D5144',
22
+ '#B16C57',
23
+ '#C87E63',
24
+ '#E99775' ).colors( 256 )
25
+
26
+
27
+ def self.frame() COIN_FRAME; end
28
+ def self.width() COIN_FRAME.width; end
29
+ def self.height() COIN_FRAME.height; end
30
+ def self.palette() COIN_PALETTE; end
31
+
32
+ end # module Bronzecoin
33
+ end # module Pixelart
@@ -0,0 +1,54 @@
1
+
2
+ module Pixelart
3
+ module Dollar ## use/rename to Greenback - why? why not?
4
+
5
+ def self.print( img )
6
+ raise ArgumentError, "sorry only 24x24 supported for now; called on image #{img.width}x#{img.height}" unless img.width == 24 && img.height == 24
7
+
8
+ ## change to greenback color palette
9
+ dollar = Image.new( DOLLAR_FRAME.width, DOLLAR_FRAME.height )
10
+ dollar.compose!( DOLLAR_FRAME )
11
+ dollar.compose!( img.change_palette8bit( DOLLAR_PALETTE ), 16, 0 )
12
+ dollar
13
+ end
14
+
15
+
16
+ ####
17
+ # helpers
18
+ DOLLAR_FRAME = Image.read( "#{Module::Punkart.root}/config/dollar.png" )
19
+
20
+ def self.frame() DOLLAR_FRAME; end
21
+ def self.width() DOLLAR_FRAME.width; end
22
+ def self.height() DOLLAR_FRAME.height; end
23
+ def self.palette() DOLLAR_PALETTE; end
24
+
25
+
26
+ def self._gen_palette( color )
27
+ color = Color.parse( color ) if color.is_a?( String )
28
+
29
+ h,s,l = Color.to_hsl( color )
30
+
31
+ pp h
32
+ pp s
33
+ pp l
34
+
35
+ darker = 0.25 ## cut-off colors starting from black
36
+ lighter = 0.05 ## cut-off colors starting from white
37
+
38
+ ldiff = (1.0 - darker - lighter)
39
+
40
+ puts " ldiff: #{ldiff}"
41
+
42
+ colors = []
43
+ 256.times do |i|
44
+ lnew = darker+(ldiff*i / 256.0)
45
+ puts " #{i} - #{lnew}"
46
+ colors << Color.from_hsl( h, s, lnew)
47
+ end
48
+ colors
49
+ end
50
+
51
+ DOLLAR_PALETTE = _gen_palette( '#536140' )
52
+ #=> #536140 / rgb( 83 97 64) - hsl( 85° 20% 32%)
53
+ end # module Dollar
54
+ end # module Pixelart
@@ -0,0 +1,36 @@
1
+
2
+ module Pixelart
3
+ module Goldcoin
4
+
5
+ def self.mint( img )
6
+ raise ArgumentError, "sorry only 24x24 supported for now; called on image #{img.width}x#{img.height}" unless img.width == 24 && img.height == 24
7
+
8
+ ## change to coin color palette
9
+ coin = Image.new( 32, 32 )
10
+ coin.compose!( COIN_FRAME_BACK )
11
+ coin.compose!( img.change_palette8bit( COIN_PALETTE ), 5, 3 )
12
+ coin.compose!( COIN_FRAME_FRONT )
13
+ coin
14
+ end
15
+
16
+ ####
17
+ # helpers
18
+ COIN_FRAME = Image.read( "#{Module::Punkart.root}/config/goldcoin.png" )
19
+ COIN_FRAME_FRONT = Image.read( "#{Module::Punkart.root}/config/goldcoin-front.png" )
20
+ COIN_FRAME_BACK = Image.read( "#{Module::Punkart.root}/config/goldcoin-back.png" )
21
+
22
+ # note: use dark to light
23
+ COIN_PALETTE = Gradient.new( '#CA7128',
24
+ '#D9862C',
25
+ '#F2AF39',
26
+ '#F6C451',
27
+ '#FBE272' ).colors( 256 )
28
+
29
+
30
+ def self.frame() COIN_FRAME; end
31
+ def self.width() COIN_FRAME.width; end
32
+ def self.height() COIN_FRAME.height; end
33
+ def self.palette() COIN_PALETTE; end
34
+
35
+ end # module Goldcoin
36
+ end # module Pixelart
@@ -0,0 +1,33 @@
1
+
2
+ module Pixelart
3
+ module Silvercoin
4
+
5
+ def self.mint( img )
6
+ raise ArgumentError, "sorry only 24x24 supported for now; called on image #{img.width}x#{img.height}" unless img.width == 24 && img.height == 24
7
+
8
+ ## change to coin color palette
9
+ coin = Image.new( 32, 32 )
10
+ coin.compose!( COIN_FRAME )
11
+ coin.compose!( img.change_palette8bit( COIN_PALETTE ), 5, 3 )
12
+ coin
13
+ end
14
+
15
+ ####
16
+ # helpers
17
+ COIN_FRAME = Image.read( "#{Module::Punkart.root}/config/silvercoin.png" )
18
+
19
+ # note: use dark to light
20
+ COIN_PALETTE = Gradient.new( '#4F5865',
21
+ '#636C78',
22
+ '#8B949E',
23
+ '#A5AEB6',
24
+ '#CAD3D9' ).colors( 256 )
25
+
26
+
27
+ def self.frame() COIN_FRAME; end
28
+ def self.width() COIN_FRAME.width; end
29
+ def self.height() COIN_FRAME.height; end
30
+ def self.palette() COIN_PALETTE; end
31
+
32
+ end # module Silvercoin
33
+ end # module Pixelart
@@ -0,0 +1,24 @@
1
+ module Pixelart
2
+ module Module
3
+ module Punkart
4
+ MAJOR = 0
5
+ MINOR = 0
6
+ PATCH = 1
7
+ VERSION = [MAJOR,MINOR,PATCH].join('.')
8
+
9
+ def self.version
10
+ VERSION
11
+ end
12
+
13
+ def self.banner
14
+ "punkart/#{VERSION} on Ruby #{RUBY_VERSION} (#{RUBY_RELEASE_DATE}) [#{RUBY_PLATFORM}] in (#{root})"
15
+ end
16
+
17
+ def self.root
18
+ File.expand_path( File.dirname(File.dirname(File.dirname(__FILE__))) )
19
+ end
20
+
21
+ end # module Punkart
22
+ end # module Module
23
+ end # module Pixelart
24
+
data/lib/punkart.rb ADDED
@@ -0,0 +1,35 @@
1
+ require 'pixelart'
2
+
3
+ ## auto-requre punks and punkmaker - why? why not?
4
+ require 'punks'
5
+ require 'punkmaker'
6
+
7
+
8
+
9
+ ## our own code
10
+ require_relative 'punkart/version' # let versoin go first
11
+ require_relative 'punkart/dollar'
12
+ require_relative 'punkart/goldcoin'
13
+ require_relative 'punkart/silvercoin'
14
+ require_relative 'punkart/bronzecoin'
15
+
16
+
17
+ module Pixelart
18
+ class Image
19
+
20
+
21
+ def greenback() Dollar.print( self ); end
22
+ alias_method :dollar, :greenback
23
+ alias_method :dollarize, :greenback
24
+
25
+ def goldcoin() Goldcoin.mint( self ); end
26
+ def silvercoin() Silvercoin.mint( self ); end
27
+ def bronzecoin() Bronzecoin.mint( self ); end
28
+
29
+
30
+ end # class Image
31
+ end # module Pixelart
32
+
33
+
34
+
35
+
metadata ADDED
@@ -0,0 +1,141 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: punkart
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.0.1
5
+ platform: ruby
6
+ authors:
7
+ - Gerald Bauer
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2023-04-21 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: pixelart
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: '0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: punks
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
41
+ - !ruby/object:Gem::Dependency
42
+ name: punkmaker
43
+ requirement: !ruby/object:Gem::Requirement
44
+ requirements:
45
+ - - ">="
46
+ - !ruby/object:Gem::Version
47
+ version: '0'
48
+ type: :runtime
49
+ prerelease: false
50
+ version_requirements: !ruby/object:Gem::Requirement
51
+ requirements:
52
+ - - ">="
53
+ - !ruby/object:Gem::Version
54
+ version: '0'
55
+ - !ruby/object:Gem::Dependency
56
+ name: rdoc
57
+ requirement: !ruby/object:Gem::Requirement
58
+ requirements:
59
+ - - ">="
60
+ - !ruby/object:Gem::Version
61
+ version: '4.0'
62
+ - - "<"
63
+ - !ruby/object:Gem::Version
64
+ version: '7'
65
+ type: :development
66
+ prerelease: false
67
+ version_requirements: !ruby/object:Gem::Requirement
68
+ requirements:
69
+ - - ">="
70
+ - !ruby/object:Gem::Version
71
+ version: '4.0'
72
+ - - "<"
73
+ - !ruby/object:Gem::Version
74
+ version: '7'
75
+ - !ruby/object:Gem::Dependency
76
+ name: hoe
77
+ requirement: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '3.23'
82
+ type: :development
83
+ prerelease: false
84
+ version_requirements: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '3.23'
89
+ description: punkart gem - (automagically) turn your "classic" punk (pixel) heads
90
+ into dollar greenbacks, gold/silver/bronze coins, and much more
91
+ email: gerald.bauer@gmail.com
92
+ executables: []
93
+ extensions: []
94
+ extra_rdoc_files:
95
+ - CHANGELOG.md
96
+ - Manifest.txt
97
+ - README.md
98
+ files:
99
+ - CHANGELOG.md
100
+ - Manifest.txt
101
+ - README.md
102
+ - Rakefile
103
+ - config/bronzecoin.png
104
+ - config/dollar.png
105
+ - config/goldcoin-back.png
106
+ - config/goldcoin-front.png
107
+ - config/goldcoin.png
108
+ - config/silvercoin.png
109
+ - lib/punkart.rb
110
+ - lib/punkart/bronzecoin.rb
111
+ - lib/punkart/dollar.rb
112
+ - lib/punkart/goldcoin.rb
113
+ - lib/punkart/silvercoin.rb
114
+ - lib/punkart/version.rb
115
+ homepage: https://github.com/cryptopunksnotdead/cryptopunks
116
+ licenses:
117
+ - Public Domain
118
+ metadata: {}
119
+ post_install_message:
120
+ rdoc_options:
121
+ - "--main"
122
+ - README.md
123
+ require_paths:
124
+ - lib
125
+ required_ruby_version: !ruby/object:Gem::Requirement
126
+ requirements:
127
+ - - ">="
128
+ - !ruby/object:Gem::Version
129
+ version: '2.3'
130
+ required_rubygems_version: !ruby/object:Gem::Requirement
131
+ requirements:
132
+ - - ">="
133
+ - !ruby/object:Gem::Version
134
+ version: '0'
135
+ requirements: []
136
+ rubygems_version: 3.3.7
137
+ signing_key:
138
+ specification_version: 4
139
+ summary: punkart gem - (automagically) turn your "classic" punk (pixel) heads into
140
+ dollar greenbacks, gold/silver/bronze coins, and much more
141
+ test_files: []