vectory 0.6.0 → 0.7.1
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/lib/vectory/cli.rb +15 -0
- data/lib/vectory/image_resize.rb +70 -0
- data/lib/vectory/utils.rb +1 -1
- data/lib/vectory/version.rb +1 -1
- data/lib/vectory.rb +5 -0
- data/vectory.gemspec +1 -0
- metadata +17 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 208113512c63f1549e160d037bf418c61ce1495cd4475fc517adaa8f962fe5e3
|
4
|
+
data.tar.gz: bbabf9cb905e9c08706d350e476feba0f8403becd943910bf704edcf80cc2a21
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b7e5fd2ad0686242cc2c578e16f9456bf15fb95128e9ad26ee95a55cbee4a22edc06d4c8dc50a19f7c63954b2dff8ebfc99091a79e9099b8ac6aa4d574ab0b87
|
7
|
+
data.tar.gz: f25e2881b8d25b8ba3b9351fd7d613247e8489a9deeba557d9a3f259cb919b5e89beda150ae6069fc62d571d0acc55fd664456b6d9bfa935e254c033c749cb00
|
data/lib/vectory/cli.rb
CHANGED
@@ -11,6 +11,7 @@ module Vectory
|
|
11
11
|
STATUS_CONVERSION_ERROR = 4
|
12
12
|
STATUS_SYSTEM_CALL_ERROR = 5
|
13
13
|
STATUS_INKSCAPE_NOT_FOUND_ERROR = 6
|
14
|
+
STATUS_SAME_FORMAT_ERROR = 7
|
14
15
|
|
15
16
|
MAP_ERROR_TO_STATUS = {
|
16
17
|
Vectory::ConversionError => STATUS_CONVERSION_ERROR,
|
@@ -62,6 +63,10 @@ module Vectory
|
|
62
63
|
end
|
63
64
|
|
64
65
|
input_format = detect_input_format(file)
|
66
|
+
if same_format?(input_format, options[:format])
|
67
|
+
return same_format_error(options[:format])
|
68
|
+
end
|
69
|
+
|
65
70
|
unless supported_input_format?(input_format)
|
66
71
|
return unsupported_input_format_error
|
67
72
|
end
|
@@ -93,6 +98,16 @@ module Vectory
|
|
93
98
|
FileMagic.detect(file)
|
94
99
|
end
|
95
100
|
|
101
|
+
def same_format?(input_format, output_format)
|
102
|
+
input_format.to_s == output_format
|
103
|
+
end
|
104
|
+
|
105
|
+
def same_format_error(format)
|
106
|
+
Vectory.ui.error("Could not convert to the same format '#{format}'.")
|
107
|
+
|
108
|
+
STATUS_SAME_FORMAT_ERROR
|
109
|
+
end
|
110
|
+
|
96
111
|
def supported_input_format?(format)
|
97
112
|
SupportedInputFormats.all.include?(format)
|
98
113
|
end
|
@@ -0,0 +1,70 @@
|
|
1
|
+
require "image_size"
|
2
|
+
|
3
|
+
module Vectory
|
4
|
+
class ImageResize
|
5
|
+
def call(img, path, maxheight, maxwidth)
|
6
|
+
s, realsize = get_image_size(img, path)
|
7
|
+
img.name == "svg" && !img["viewBox"] && s[0] && s[1] and
|
8
|
+
img["viewBox"] = "0 0 #{s[0]} #{s[1]}"
|
9
|
+
s, skip = image_dont_resize(s, realsize)
|
10
|
+
skip and return s
|
11
|
+
s = image_size_fillin(s, realsize)
|
12
|
+
image_shrink(s, maxheight, maxwidth)
|
13
|
+
end
|
14
|
+
|
15
|
+
def get_image_size(img, path)
|
16
|
+
realsize = ImageSize.path(path).size
|
17
|
+
s = image_size_interpret(img, realsize || [nil, nil])
|
18
|
+
image_size_zeroes_complete(s, realsize)
|
19
|
+
end
|
20
|
+
|
21
|
+
private
|
22
|
+
|
23
|
+
def image_dont_resize(dim, realsize)
|
24
|
+
dim.nil? and return [[nil, nil], true]
|
25
|
+
realsize.nil? and return [dim, true]
|
26
|
+
dim[0] == nil && dim[1] == nil and return [dim, true]
|
27
|
+
[dim, false]
|
28
|
+
end
|
29
|
+
|
30
|
+
def image_size_fillin(dim, realsize)
|
31
|
+
dim[1] = fill_size(dim[1], dim[0], realsize[1], realsize[0])
|
32
|
+
dim[0] = fill_size(dim[0], dim[1], realsize[0], realsize[1])
|
33
|
+
|
34
|
+
dim
|
35
|
+
end
|
36
|
+
|
37
|
+
def fill_size(current, another, real_current, real_another)
|
38
|
+
return current unless current.zero? && !another.zero?
|
39
|
+
|
40
|
+
another * real_current / real_another
|
41
|
+
end
|
42
|
+
|
43
|
+
def image_shrink(dim, maxheight, maxwidth)
|
44
|
+
dim[1] > maxheight and
|
45
|
+
dim = [(dim[0] * maxheight / dim[1]).ceil, maxheight]
|
46
|
+
dim[0] > maxwidth and
|
47
|
+
dim = [maxwidth, (dim[1] * maxwidth / dim[0]).ceil]
|
48
|
+
dim
|
49
|
+
end
|
50
|
+
|
51
|
+
def image_size_interpret(img, realsize)
|
52
|
+
w = image_size_percent(img["width"], realsize[0])
|
53
|
+
h = image_size_percent(img["height"], realsize[1])
|
54
|
+
[w, h]
|
55
|
+
end
|
56
|
+
|
57
|
+
def image_size_percent(value, real)
|
58
|
+
/%$/.match?(value) && !real.nil? and
|
59
|
+
value = real * (value.sub(/%$/, "").to_f / 100)
|
60
|
+
value.to_i
|
61
|
+
end
|
62
|
+
|
63
|
+
def image_size_zeroes_complete(dim, realsize)
|
64
|
+
if dim[0].zero? && dim[1].zero?
|
65
|
+
dim = realsize
|
66
|
+
end
|
67
|
+
[dim, realsize]
|
68
|
+
end
|
69
|
+
end
|
70
|
+
end
|
data/lib/vectory/utils.rb
CHANGED
@@ -19,7 +19,7 @@ module Vectory
|
|
19
19
|
path = path_which_exist(uri, local_dir)
|
20
20
|
path and return encode_datauri(path)
|
21
21
|
|
22
|
-
warn "Image specified at `#{uri}` does not exist."
|
22
|
+
Vectory.ui.warn "Image specified at `#{uri}` does not exist."
|
23
23
|
uri # Return original provided location
|
24
24
|
end
|
25
25
|
|
data/lib/vectory/version.rb
CHANGED
data/lib/vectory.rb
CHANGED
@@ -4,6 +4,7 @@ require "logger"
|
|
4
4
|
require_relative "vectory/version"
|
5
5
|
require_relative "vectory/utils"
|
6
6
|
require_relative "vectory/image"
|
7
|
+
require_relative "vectory/image_resize"
|
7
8
|
require_relative "vectory/datauri"
|
8
9
|
require_relative "vectory/vector"
|
9
10
|
require_relative "vectory/eps"
|
@@ -41,4 +42,8 @@ module Vectory
|
|
41
42
|
def self.convert(image, format)
|
42
43
|
image.convert(format)
|
43
44
|
end
|
45
|
+
|
46
|
+
def self.image_resize(img, path, maxheight, maxwidth)
|
47
|
+
Vectory::ImageResize.new.call(img, path, maxheight, maxwidth)
|
48
|
+
end
|
44
49
|
end
|
data/vectory.gemspec
CHANGED
@@ -27,6 +27,7 @@ Gem::Specification.new do |spec|
|
|
27
27
|
spec.required_ruby_version = ">= 2.5.0"
|
28
28
|
|
29
29
|
spec.add_runtime_dependency "emf2svg"
|
30
|
+
spec.add_runtime_dependency "image_size", ">= 3.2.0"
|
30
31
|
spec.add_runtime_dependency "marcel", "~> 1.0.0"
|
31
32
|
spec.add_runtime_dependency "nokogiri", "~> 1.14"
|
32
33
|
spec.add_runtime_dependency "thor", "~> 1.2.1"
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vectory
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.7.1
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ribose Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-01-
|
11
|
+
date: 2024-01-18 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: emf2svg
|
@@ -24,6 +24,20 @@ dependencies:
|
|
24
24
|
- - ">="
|
25
25
|
- !ruby/object:Gem::Version
|
26
26
|
version: '0'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: image_size
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - ">="
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: 3.2.0
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - ">="
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: 3.2.0
|
27
41
|
- !ruby/object:Gem::Dependency
|
28
42
|
name: marcel
|
29
43
|
requirement: !ruby/object:Gem::Requirement
|
@@ -94,6 +108,7 @@ files:
|
|
94
108
|
- lib/vectory/eps.rb
|
95
109
|
- lib/vectory/file_magic.rb
|
96
110
|
- lib/vectory/image.rb
|
111
|
+
- lib/vectory/image_resize.rb
|
97
112
|
- lib/vectory/inkscape_converter.rb
|
98
113
|
- lib/vectory/ps.rb
|
99
114
|
- lib/vectory/svg.rb
|