pixelchart 1.0.1 → 1.2.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.
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: []