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 +4 -4
- data/LICENSE.txt +1 -1
- data/bin/pixelchart +9 -10
- data/lib/pixelchart/version.rb +1 -1
- data/lib/pixelchart.rb +18 -25
- metadata +23 -125
checksums.yaml
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
---
|
|
2
2
|
SHA256:
|
|
3
|
-
metadata.gz:
|
|
4
|
-
data.tar.gz:
|
|
3
|
+
metadata.gz: 9129a6e4edfeeaeef2f80c67cdf5c7e5d35a30e425f432a4a62a68b9cdd4943d
|
|
4
|
+
data.tar.gz: 6f9411731b1b14fc0d55978f6903daaaa0cd74d2b897d030782c287ec73d6a28
|
|
5
5
|
SHA512:
|
|
6
|
-
metadata.gz:
|
|
7
|
-
data.tar.gz:
|
|
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-
|
|
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
|
|
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
|
-
|
|
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] =
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
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]
|
|
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]
|
|
83
|
+
puts "#{Paint[xy[0], :magenta]} x #{Paint[xy[1], :magenta]}"
|
|
85
84
|
end
|
|
86
85
|
end
|
|
87
86
|
rescue Docopt::Exit => e
|
data/lib/pixelchart/version.rb
CHANGED
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
|
|
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,
|
|
45
|
-
# Rmagick/Imagemagick or
|
|
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
|
-
|
|
49
|
+
case backend
|
|
50
|
+
when :rmagick
|
|
50
51
|
draw_rmagick(filename)
|
|
51
|
-
|
|
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
|
-
|
|
107
|
-
|
|
108
|
-
|
|
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
|
-
|
|
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
|
-
|
|
171
|
+
case item
|
|
172
|
+
when :random
|
|
174
173
|
# nothing
|
|
175
|
-
|
|
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
|
-
|
|
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
|
|
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:
|
|
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://
|
|
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://
|
|
200
|
-
homepage_uri: https://
|
|
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
|
-
|
|
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: '
|
|
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.
|
|
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: []
|