pixelchart 1.0.1 → 1.2.0

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 1e012a46e162173916b5e188d593a61704855bc36ca6c1039ee5bf288db47013
4
- data.tar.gz: 9dd4970255464fef969837e132c56a394e714e17ee95554fe76be9529c5839c3
3
+ metadata.gz: 9129a6e4edfeeaeef2f80c67cdf5c7e5d35a30e425f432a4a62a68b9cdd4943d
4
+ data.tar.gz: 6f9411731b1b14fc0d55978f6903daaaa0cd74d2b897d030782c287ec73d6a28
5
5
  SHA512:
6
- metadata.gz: 2b4e60fc67e806e93a0ce37f70d19dbcc23c7267a9763dfae99bf58450bb0dcab19295a5da9570e9fb7e8bdecceb4571b2509cb3e48d1ee3cede5231012a653b
7
- data.tar.gz: fa9dbc116d968e64fab6a5e8a1ffc874a7699fd82d29ca85511896b05754f5e87d283052988607427c4a237f09a551fdfd1895ad833c4c3b864427536dac1283
6
+ metadata.gz: 6374a49217570f9aea5f4a6e43e91f48486c33c5398d4dc507ec5ef8921363ff70c22bb0d132e3e7c8662ca61d5582094f6f34cda889be7a1ea5add11c57082a
7
+ data.tar.gz: ef7b0d1b87451cb90b536a5c6a509bab1cade6227f8e77b296fc40a6e60402914e3bb3c5cfd5451b546747f5df52f35a93681dad79b1f592ed8b419a016713e1
data/LICENSE.txt CHANGED
@@ -1,6 +1,6 @@
1
1
  The MIT License (MIT)
2
2
 
3
- Copyright (c) 2019-2020 Alexandre ZANNI
3
+ Copyright (c) 2019-2023 Alexandre ZANNI
4
4
 
5
5
  Permission is hereby granted, free of charge, to any person obtaining a copy
6
6
  of this software and associated documentation files (the "Software"), to deal
data/bin/pixelchart CHANGED
@@ -2,7 +2,6 @@
2
2
  # frozen_string_literal: true
3
3
 
4
4
  # Ruby internal
5
- require 'pp'
6
5
  # Project internal
7
6
  require 'pixelchart'
8
7
  # External
@@ -24,7 +23,7 @@ doc = <<~DOCOPT
24
23
  -w <pixel>, --width <pixel> Width of the output image (in number pixel)
25
24
  -h <pixel>, --height <pixel> Height of the output image (in number pixel)
26
25
  -c <colors>, --colors <colors> Colors of the image (in RGB or random)
27
- -b <name>, --backend <name> Image processing backend (rmagick or ruby-vips)
26
+ -b <name>, --backend <name> Image processing backend (rmagick or rubyvips)
28
27
  -s <ratio>, --scale <ratio> Scale ratio or dimensions
29
28
  --area <size> Area, number of values, total number of pixel
30
29
  --no-color Disable colorized output
@@ -41,7 +40,7 @@ DOCOPT
41
40
 
42
41
  begin
43
42
  args = Docopt.docopt(doc, version: PixelChart::VERSION)
44
- pp args if args['--debug']
43
+ puts args if args['--debug']
45
44
  Paint.mode = 0 if args['--no-color']
46
45
  if args['draw']
47
46
  data = PixelChart.load_file(args['<input>'])
@@ -62,15 +61,15 @@ begin
62
61
  end
63
62
  opts[:backend] = args['--backend'].to_sym if args['--backend']
64
63
  if args['--scale']
65
- opts[:scale] = if /,/.match?(args['--scale']) # dimensions
66
- args['--scale'].split(',').map(&:to_i)
67
- else # ratio
68
- args['--scale'].to_f
69
- end
64
+ opts[:scale] = if /,/.match?(args['--scale']) # dimensions
65
+ args['--scale'].split(',').map(&:to_i)
66
+ else # ratio
67
+ args['--scale'].to_f
68
+ end
70
69
  end
71
70
  pc = PixelChart.new(data, width, height, opts)
72
71
  pc.draw(filename, opts)
73
- puts Paint['[+]', :green] + ' Image saved'
72
+ puts "#{Paint['[+]', :green]} Image saved"
74
73
  elsif args['calc']
75
74
  dimensions = nil
76
75
  if args['--area']
@@ -81,7 +80,7 @@ begin
81
80
  end
82
81
  puts 'Possible dimensions: width x height or height x width'
83
82
  dimensions.each do |xy|
84
- puts Paint[xy[0], :magenta] + ' x ' + Paint[xy[1], :magenta]
83
+ puts "#{Paint[xy[0], :magenta]} x #{Paint[xy[1], :magenta]}"
85
84
  end
86
85
  end
87
86
  rescue Docopt::Exit => e
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Version
4
- VERSION = '1.0.1'
4
+ VERSION = '1.2.0'
5
5
  end
data/lib/pixelchart.rb CHANGED
@@ -19,7 +19,7 @@ class PixelChart
19
19
  # @param width [Integer] Desired width of the image.
20
20
  # @param height [Integer] Desired height of the image.
21
21
  # @option opts [Array<Color>] :colors Must be an array containing 2 values.
22
- # Each value is either the +:random+ symbol to get a random color or a
22
+ # Each value is either the `:random` symbol to get a random color or a
23
23
  # color given as RGB, so 3 integers in an array.
24
24
  # @option opts [Scale] :scale Scale the image to dimensions or with a ratio.
25
25
  # Ratio must be a positive (non-nul) float or integer, and dimensions must
@@ -41,14 +41,15 @@ class PixelChart
41
41
  # Generate and save the image
42
42
  # @param filename [String] Name of the output image.
43
43
  # @param opts [Hash] options for image processing
44
- # @option opts [Symbol] :backend Image processing backend, +:rmagick+ for
45
- # Rmagick/Imagemagick or +:rubyvips+ for ruby-vips/libvips.
44
+ # @option opts [Symbol] :backend Image processing backend, `:rmagick` for
45
+ # Rmagick/Imagemagick or `:rubyvips` for ruby-vips/libvips.
46
46
  def draw(filename, opts = {})
47
47
  opts[:backend] ||= :rmagick
48
48
  backend = check_backend(opts[:backend])
49
- if backend == :rmagick
49
+ case backend
50
+ when :rmagick
50
51
  draw_rmagick(filename)
51
- elsif backend == :rubyvips
52
+ when :rubyvips
52
53
  draw_rubyvips(filename)
53
54
  end
54
55
  end
@@ -103,13 +104,12 @@ class PixelChart
103
104
  end
104
105
  end
105
106
  unless @scale.nil?
106
- if @scale.is_a?(Numeric)
107
- if @scale.zero?
108
- raise(ArgumentError, 'Scale must be a ratio or a set of width and height')
109
- end
107
+ case @scale
108
+ when Numeric
109
+ raise(ArgumentError, 'Scale must be a ratio or a set of width and height') if @scale.zero?
110
110
 
111
111
  img.scale!(@scale)
112
- elsif @scale.is_a?(Array)
112
+ when Array
113
113
  img.scale!(@scale[0], @scale[1])
114
114
  else
115
115
  raise(ArgumentError, 'Scale must be a ratio or a set of width and height')
@@ -131,16 +131,14 @@ class PixelChart
131
131
  opts = { kernel: :nearest }
132
132
  im = im.resize(@scale, **opts)
133
133
  end
134
- im.write_to_file(filename, compression: 9, palette: true, colours: 2, Q: 0)
134
+ im.write_to_file(filename, compression: 9, palette: true, colours: 2, Q: 0, bitdepth: 1)
135
135
  end
136
136
 
137
137
  # Check if the argument is an integer else raise an error
138
138
  # @param data [Object] The object to check
139
139
  # @return [Object] Untouched input object
140
140
  def check_int(data)
141
- unless data.is_a?(Integer)
142
- raise(ArgumentError, 'Argument is not an integer')
143
- end
141
+ raise(ArgumentError, 'Argument is not an integer') unless data.is_a?(Integer)
144
142
 
145
143
  data
146
144
  end
@@ -170,18 +168,15 @@ class PixelChart
170
168
  raise(ArgumentError, 'Argument is not an array') unless data.is_a?(Array)
171
169
 
172
170
  data.each do |item|
173
- if item == :random
171
+ case item
172
+ when :random
174
173
  # nothing
175
- elsif item.is_a?(Array)
174
+ when Array
176
175
  raise(ArgumentError, 'RGB must contains 3 values') unless item.size == 3
177
176
 
178
177
  item.each do |i|
179
- unless i.is_a?(Integer)
180
- raise(ArgumentError, 'RGB values are not integers')
181
- end
182
- unless (0..255).include?(i)
183
- raise(ArgumentError, 'RGB values must be between 0 and 255')
184
- end
178
+ raise(ArgumentError, 'RGB values are not integers') unless i.is_a?(Integer)
179
+ raise(ArgumentError, 'RGB values must be between 0 and 255') unless (0..255).include?(i)
185
180
  end
186
181
  else
187
182
  raise(ArgumentError, 'Colors are not a RGB array or :random')
@@ -196,9 +191,7 @@ class PixelChart
196
191
  # @return [Object] Untouched input object
197
192
  def check_backend(data)
198
193
  accepted_values = %i[rmagick rubyvips]
199
- unless accepted_values.include?(data)
200
- raise(ArgumentError, "Backend must be #{accepted_values.join(' or ')}")
201
- end
194
+ raise(ArgumentError, "Backend must be #{accepted_values.join(' or ')}") unless accepted_values.include?(data)
202
195
 
203
196
  data
204
197
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pixelchart
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.1
4
+ version: 1.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexandre ZANNI
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-04-09 00:00:00.000000000 Z
11
+ date: 2023-12-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: docopt
@@ -42,16 +42,22 @@ dependencies:
42
42
  name: rmagick
43
43
  requirement: !ruby/object:Gem::Requirement
44
44
  requirements:
45
- - - "~>"
45
+ - - ">="
46
46
  - !ruby/object:Gem::Version
47
47
  version: '4.1'
48
+ - - "<"
49
+ - !ruby/object:Gem::Version
50
+ version: '6.0'
48
51
  type: :runtime
49
52
  prerelease: false
50
53
  version_requirements: !ruby/object:Gem::Requirement
51
54
  requirements:
52
- - - "~>"
55
+ - - ">="
53
56
  - !ruby/object:Gem::Version
54
57
  version: '4.1'
58
+ - - "<"
59
+ - !ruby/object:Gem::Version
60
+ version: '6.0'
55
61
  - !ruby/object:Gem::Dependency
56
62
  name: ruby-vips
57
63
  requirement: !ruby/object:Gem::Requirement
@@ -66,118 +72,6 @@ dependencies:
66
72
  - - "~>"
67
73
  - !ruby/object:Gem::Version
68
74
  version: '2.0'
69
- - !ruby/object:Gem::Dependency
70
- name: bundler
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - "~>"
74
- - !ruby/object:Gem::Version
75
- version: '2.1'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - "~>"
81
- - !ruby/object:Gem::Version
82
- version: '2.1'
83
- - !ruby/object:Gem::Dependency
84
- name: commonmarker
85
- requirement: !ruby/object:Gem::Requirement
86
- requirements:
87
- - - "~>"
88
- - !ruby/object:Gem::Version
89
- version: '0.21'
90
- type: :development
91
- prerelease: false
92
- version_requirements: !ruby/object:Gem::Requirement
93
- requirements:
94
- - - "~>"
95
- - !ruby/object:Gem::Version
96
- version: '0.21'
97
- - !ruby/object:Gem::Dependency
98
- name: github-markup
99
- requirement: !ruby/object:Gem::Requirement
100
- requirements:
101
- - - "~>"
102
- - !ruby/object:Gem::Version
103
- version: '3.0'
104
- type: :development
105
- prerelease: false
106
- version_requirements: !ruby/object:Gem::Requirement
107
- requirements:
108
- - - "~>"
109
- - !ruby/object:Gem::Version
110
- version: '3.0'
111
- - !ruby/object:Gem::Dependency
112
- name: minitest
113
- requirement: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '5.12'
118
- type: :development
119
- prerelease: false
120
- version_requirements: !ruby/object:Gem::Requirement
121
- requirements:
122
- - - "~>"
123
- - !ruby/object:Gem::Version
124
- version: '5.12'
125
- - !ruby/object:Gem::Dependency
126
- name: rake
127
- requirement: !ruby/object:Gem::Requirement
128
- requirements:
129
- - - "~>"
130
- - !ruby/object:Gem::Version
131
- version: '13.0'
132
- type: :development
133
- prerelease: false
134
- version_requirements: !ruby/object:Gem::Requirement
135
- requirements:
136
- - - "~>"
137
- - !ruby/object:Gem::Version
138
- version: '13.0'
139
- - !ruby/object:Gem::Dependency
140
- name: redcarpet
141
- requirement: !ruby/object:Gem::Requirement
142
- requirements:
143
- - - "~>"
144
- - !ruby/object:Gem::Version
145
- version: '3.5'
146
- type: :development
147
- prerelease: false
148
- version_requirements: !ruby/object:Gem::Requirement
149
- requirements:
150
- - - "~>"
151
- - !ruby/object:Gem::Version
152
- version: '3.5'
153
- - !ruby/object:Gem::Dependency
154
- name: rubocop
155
- requirement: !ruby/object:Gem::Requirement
156
- requirements:
157
- - - "~>"
158
- - !ruby/object:Gem::Version
159
- version: '0.80'
160
- type: :development
161
- prerelease: false
162
- version_requirements: !ruby/object:Gem::Requirement
163
- requirements:
164
- - - "~>"
165
- - !ruby/object:Gem::Version
166
- version: '0.80'
167
- - !ruby/object:Gem::Dependency
168
- name: yard
169
- requirement: !ruby/object:Gem::Requirement
170
- requirements:
171
- - - "~>"
172
- - !ruby/object:Gem::Version
173
- version: '0.9'
174
- type: :development
175
- prerelease: false
176
- version_requirements: !ruby/object:Gem::Requirement
177
- requirements:
178
- - - "~>"
179
- - !ruby/object:Gem::Version
180
- version: '0.9'
181
75
  description: Create a binary pixel map
182
76
  email: alexandre.zanni@engineer.com
183
77
  executables:
@@ -189,33 +83,37 @@ files:
189
83
  - bin/pixelchart
190
84
  - lib/pixelchart.rb
191
85
  - lib/pixelchart/version.rb
192
- homepage: https://pixelchart.cf/
86
+ homepage: https://noraj.github.io/PixelChart/
193
87
  licenses:
194
88
  - MIT
195
89
  metadata:
196
90
  yard.run: yard
197
91
  bug_tracker_uri: https://github.com/noraj/PixelChart/issues
198
92
  changelog_uri: https://github.com/noraj/PixelChart/blob/master/pages/CHANGELOG.md
199
- documentation_uri: https://pixelchart.cf/yard/
200
- homepage_uri: https://pixelchart.cf/
93
+ documentation_uri: https://noraj.github.io/PixelChart/yard/
94
+ homepage_uri: https://noraj.github.io/PixelChart/
201
95
  source_code_uri: https://github.com/noraj/PixelChart
202
- post_install_message:
96
+ rubygems_mfa_required: 'true'
97
+ post_install_message:
203
98
  rdoc_options: []
204
99
  require_paths:
205
100
  - lib
206
101
  required_ruby_version: !ruby/object:Gem::Requirement
207
102
  requirements:
208
- - - "~>"
103
+ - - ">="
104
+ - !ruby/object:Gem::Version
105
+ version: 3.0.0
106
+ - - "<"
209
107
  - !ruby/object:Gem::Version
210
- version: '2.4'
108
+ version: '4.0'
211
109
  required_rubygems_version: !ruby/object:Gem::Requirement
212
110
  requirements:
213
111
  - - ">="
214
112
  - !ruby/object:Gem::Version
215
113
  version: '0'
216
114
  requirements: []
217
- rubygems_version: 3.1.2
218
- signing_key:
115
+ rubygems_version: 3.4.10
116
+ signing_key:
219
117
  specification_version: 4
220
118
  summary: Create a binary pixel map
221
119
  test_files: []