emf2svg 1.4.1-x86_64-darwin → 1.4.3-x86_64-darwin
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/.github/workflows/build.yml +72 -91
- data/.github/workflows/release.yml +9 -9
- data/.gitignore +1 -0
- data/.rubocop.yml +6 -1
- data/README.adoc +10 -2
- data/Rakefile +1 -0
- data/bin/emf2svg +33 -3
- data/emf2svg.gemspec +2 -2
- data/exe/emf2svg +33 -2
- data/lib/emf2svg/libemf2svg.dylib +0 -0
- data/lib/emf2svg/recipe.rb +100 -58
- data/lib/emf2svg/version.rb +2 -1
- data/lib/emf2svg.rb +8 -7
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: afe239fbaa37a0e744b549ffbe796260daa1ff3c040b0baf8797ac31e8930d8a
|
4
|
+
data.tar.gz: eee4732ef3a64fc2efec61425b8d80c38a92b545039de2658420f0df0ce6cd23
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 85f97672b641618a147acb51d410dedef5464229287f7f33efc2e45106fde36a607946cbfe6518c95473612fce60440611efc027c190275da4bef0666722f6c4
|
7
|
+
data.tar.gz: ab6c6d1941a81108c0f2fb011e0f0e61943d51e76176baf8789a799c65d2af807488ac440da07a8554aac3b60edd37932f1fc50e8ccce3086b5f6047dd892686
|
data/.github/workflows/build.yml
CHANGED
@@ -8,21 +8,23 @@ on:
|
|
8
8
|
pull_request:
|
9
9
|
workflow_dispatch:
|
10
10
|
|
11
|
+
concurrency:
|
12
|
+
group: '${{ github.workflow }}-${{ github.job }}-${{ github.head_ref || github.ref_name }}'
|
13
|
+
cancel-in-progress: true
|
14
|
+
|
11
15
|
jobs:
|
12
16
|
test:
|
13
17
|
runs-on: ${{ matrix.os }}
|
14
18
|
strategy:
|
15
19
|
fail-fast: false
|
16
20
|
matrix:
|
17
|
-
os: [ ubuntu-
|
18
|
-
ruby-version: [ '2.7' ]
|
19
|
-
|
20
|
-
- os: windows-latest
|
21
|
-
ruby-version: '3.1'
|
21
|
+
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
22
|
+
ruby-version: [ '2.7', '3.0', '3.1' ]
|
23
|
+
|
22
24
|
steps:
|
23
25
|
- uses: actions/checkout@v3
|
24
26
|
|
25
|
-
- uses: ruby/setup-ruby@
|
27
|
+
- uses: ruby/setup-ruby@master
|
26
28
|
with:
|
27
29
|
bundler-cache: true
|
28
30
|
ruby-version: ${{ matrix.ruby-version }}
|
@@ -44,30 +46,26 @@ jobs:
|
|
44
46
|
fail-fast: false
|
45
47
|
matrix:
|
46
48
|
include:
|
47
|
-
- os: ubuntu-
|
49
|
+
- os: ubuntu-latest
|
48
50
|
platform: any
|
49
51
|
ruby-version: '2.7'
|
50
|
-
|
51
|
-
- os: ubuntu-18.04
|
52
|
+
- os: ubuntu-latest
|
52
53
|
platform: x86_64-linux
|
53
54
|
ruby-version: '2.7'
|
54
|
-
file: 'ELF 64-bit LSB shared object, x86-64'
|
55
55
|
- os: windows-latest
|
56
56
|
platform: x64-mingw32
|
57
57
|
ruby-version: '2.7'
|
58
|
-
file: 'skip'
|
59
58
|
- os: windows-latest
|
60
59
|
platform: x64-mingw-ucrt
|
61
60
|
ruby-version: '3.1'
|
62
|
-
file: 'skip'
|
63
61
|
- os: macos-latest
|
64
62
|
platform: x86_64-darwin
|
65
63
|
ruby-version: '2.7'
|
66
|
-
file: 'Mach-O 64-bit dynamically linked shared library x86_64'
|
67
64
|
steps:
|
68
65
|
- uses: actions/checkout@v3
|
69
66
|
|
70
|
-
-
|
67
|
+
- name: Setup Ruby
|
68
|
+
uses: ruby/setup-ruby@master
|
71
69
|
with:
|
72
70
|
ruby-version: ${{ matrix.ruby-version }}
|
73
71
|
bundler-cache: true
|
@@ -80,122 +78,105 @@ jobs:
|
|
80
78
|
|
81
79
|
- run: bundle exec rake gem:native:${{ matrix.platform }}
|
82
80
|
|
83
|
-
- uses: actions/upload-artifact@
|
81
|
+
- uses: actions/upload-artifact@v3
|
84
82
|
with:
|
85
83
|
name: pkg
|
86
84
|
path: pkg/*.gem
|
87
85
|
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
- name: Test conversion
|
92
|
-
run: |
|
93
|
-
ruby -remf2svg -e "puts File.write('output.svg', Emf2svg.from_file('spec/examples/image1.emf'), mode: 'wb')"
|
94
|
-
|
95
|
-
- name: Check file format
|
96
|
-
if: matrix.file != 'skip'
|
97
|
-
run: file $(ls pkg/*/lib/emf2svg/libemf2svg.*) | grep "${{ matrix.file }}"
|
98
|
-
|
99
|
-
test-build:
|
100
|
-
needs: build
|
86
|
+
cross-build:
|
87
|
+
name: build ${{ matrix.os }}, ${{ matrix.ruby-version }}, ${{ matrix.platform }}
|
101
88
|
runs-on: ${{ matrix.os }}
|
102
89
|
strategy:
|
103
90
|
fail-fast: false
|
104
91
|
matrix:
|
105
92
|
include:
|
106
93
|
- os: ubuntu-latest
|
107
|
-
platform:
|
108
|
-
ruby-version: '2.7'
|
109
|
-
- os: windows-latest
|
110
|
-
platform: any
|
111
|
-
ruby-version: '2.7'
|
112
|
-
- os: macos-latest
|
113
|
-
platform: any
|
114
|
-
ruby-version: '2.7'
|
115
|
-
- os: ubuntu-18.04
|
116
|
-
platform: x86_64-linux
|
117
|
-
ruby-version: '2.7'
|
118
|
-
- os: ubuntu-latest
|
119
|
-
platform: x86_64-linux
|
120
|
-
ruby-version: '2.7'
|
121
|
-
- os: windows-latest
|
122
|
-
platform: x64-mingw32
|
94
|
+
platform: aarch64-linux
|
123
95
|
ruby-version: '2.7'
|
124
|
-
- os: windows-latest
|
125
|
-
platform: x64-mingw-ucrt
|
126
|
-
ruby-version: '3.1'
|
127
96
|
- os: macos-latest
|
128
|
-
platform:
|
97
|
+
platform: arm64-darwin
|
129
98
|
ruby-version: '2.7'
|
130
|
-
|
131
99
|
steps:
|
132
|
-
- uses: actions/checkout@
|
100
|
+
- uses: actions/checkout@v3
|
101
|
+
|
102
|
+
- name: Install Ubuntu packages
|
103
|
+
if: startsWith(matrix.os, 'ubuntu')
|
104
|
+
run: |
|
105
|
+
sudo apt-get update
|
106
|
+
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu gperf
|
133
107
|
|
134
|
-
-
|
108
|
+
- name: Install Ruby
|
109
|
+
uses: ruby/setup-ruby@master
|
135
110
|
with:
|
136
111
|
ruby-version: ${{ matrix.ruby-version }}
|
112
|
+
bundler-cache: true
|
113
|
+
|
114
|
+
- name: Build native extension
|
115
|
+
run: bundle exec rake gem:native:${{ matrix.platform }}
|
137
116
|
|
138
|
-
- uses: actions/
|
117
|
+
- uses: actions/upload-artifact@v3
|
139
118
|
with:
|
140
119
|
name: pkg
|
141
|
-
path: pkg
|
120
|
+
path: pkg/*.gem
|
142
121
|
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
122
|
+
test-build:
|
123
|
+
needs: [ build, cross-build ]
|
124
|
+
runs-on: ${{ matrix.os }}
|
125
|
+
strategy:
|
126
|
+
fail-fast: false
|
127
|
+
matrix:
|
128
|
+
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
129
|
+
ruby-version: [ '2.7', '3.0', '3.1' ]
|
148
130
|
|
149
|
-
|
150
|
-
|
151
|
-
run: gem install -b pkg/emf2svg-$(ruby -I lib -r emf2svg/version -e "puts Emf2svg::VERSION").gem
|
131
|
+
steps:
|
132
|
+
- uses: actions/checkout@v3
|
152
133
|
|
153
|
-
-
|
154
|
-
|
155
|
-
|
134
|
+
- uses: ruby/setup-ruby@master
|
135
|
+
with:
|
136
|
+
ruby-version: ${{ matrix.ruby-version }}
|
137
|
+
|
138
|
+
- uses: actions/download-artifact@v3
|
139
|
+
with:
|
140
|
+
name: pkg
|
141
|
+
path: pkg
|
156
142
|
|
143
|
+
- name: Install binary gem
|
144
|
+
run: gem install -b pkg/emf2svg-$(ruby -I lib -r emf2svg/version -e "puts Emf2svg::VERSION")-$(ruby -e "puts RUBY_PLATFORM.sub(/darwin\d{2}$/, 'darwin')").gem
|
145
|
+
# MacOS with have something like arm64-darwin19, others just aarch64-linux
|
157
146
|
- name: Test conversion
|
158
147
|
run: |
|
159
148
|
ruby -remf2svg -e "puts File.write('output.svg', Emf2svg.from_file('spec/examples/image1.emf'), mode: 'wb')"
|
160
149
|
|
161
|
-
|
162
|
-
|
150
|
+
test-build-any:
|
151
|
+
needs: [ build, cross-build ]
|
163
152
|
runs-on: ${{ matrix.os }}
|
164
153
|
strategy:
|
165
154
|
fail-fast: false
|
166
155
|
matrix:
|
167
|
-
|
168
|
-
|
169
|
-
|
170
|
-
ruby-version: '2.7'
|
171
|
-
file: 'ELF 64-bit LSB shared object, ARM aarch64'
|
172
|
-
- os: macos-latest
|
173
|
-
platform: arm64-darwin
|
174
|
-
ruby-version: '2.7'
|
175
|
-
file: 'Mach-O 64-bit dynamically linked shared library arm64'
|
156
|
+
os: [ ubuntu-latest, windows-latest, macos-latest ]
|
157
|
+
ruby-version: [ '2.7', '3.0', '3.1' ]
|
158
|
+
|
176
159
|
steps:
|
177
160
|
- uses: actions/checkout@v3
|
178
161
|
|
179
|
-
-
|
180
|
-
if: matrix.os == 'ubuntu-latest'
|
181
|
-
run: |
|
182
|
-
sudo apt-get update
|
183
|
-
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu gperf
|
184
|
-
|
185
|
-
- uses: ruby/setup-ruby@v1
|
162
|
+
- uses: ruby/setup-ruby@master
|
186
163
|
with:
|
187
164
|
ruby-version: ${{ matrix.ruby-version }}
|
188
|
-
bundler-cache: true
|
189
165
|
|
190
|
-
-
|
191
|
-
|
192
|
-
- uses: actions/upload-artifact@v2
|
166
|
+
- uses: actions/download-artifact@v3
|
193
167
|
with:
|
194
168
|
name: pkg
|
195
|
-
path: pkg
|
169
|
+
path: pkg
|
170
|
+
|
171
|
+
- name: Workaround for vcpkg
|
172
|
+
if: startsWith(matrix.os, 'ubuntu')
|
173
|
+
run: |
|
174
|
+
sudo apt-get update
|
175
|
+
sudo apt-get install gperf
|
196
176
|
|
197
|
-
- name: Install gem
|
198
|
-
run: gem install -b pkg/emf2svg
|
177
|
+
- name: Install native gem
|
178
|
+
run: gem install -b pkg/emf2svg-$(ruby -I lib -r emf2svg/version -e "puts Emf2svg::VERSION").gem
|
199
179
|
|
200
|
-
- name:
|
201
|
-
run:
|
180
|
+
- name: Test conversion
|
181
|
+
run: |
|
182
|
+
ruby -remf2svg -e "puts File.write('output.svg', Emf2svg.from_file('spec/examples/image1.emf'), mode: 'wb')"
|
@@ -12,10 +12,10 @@ jobs:
|
|
12
12
|
fail-fast: false
|
13
13
|
matrix:
|
14
14
|
include:
|
15
|
-
- os: ubuntu-
|
15
|
+
- os: ubuntu-latest
|
16
16
|
platform: any
|
17
17
|
ruby-version: '2.7'
|
18
|
-
- os: ubuntu-
|
18
|
+
- os: ubuntu-latest
|
19
19
|
platform: x86_64-linux
|
20
20
|
ruby-version: '2.7'
|
21
21
|
- os: windows-latest
|
@@ -30,7 +30,7 @@ jobs:
|
|
30
30
|
steps:
|
31
31
|
- uses: actions/checkout@v3
|
32
32
|
|
33
|
-
- uses: ruby/setup-ruby@
|
33
|
+
- uses: ruby/setup-ruby@master
|
34
34
|
with:
|
35
35
|
ruby-version: ${{ matrix.ruby-version }}
|
36
36
|
bundler-cache: true
|
@@ -70,7 +70,7 @@ jobs:
|
|
70
70
|
platform: arm64-darwin
|
71
71
|
ruby-version: '2.7'
|
72
72
|
steps:
|
73
|
-
- uses: actions/checkout@
|
73
|
+
- uses: actions/checkout@v3
|
74
74
|
|
75
75
|
- name: Install packages
|
76
76
|
if: matrix.os == 'ubuntu-latest'
|
@@ -78,14 +78,14 @@ jobs:
|
|
78
78
|
sudo apt-get update
|
79
79
|
sudo apt-get install gcc-aarch64-linux-gnu g++-aarch64-linux-gnu binutils-aarch64-linux-gnu gperf
|
80
80
|
|
81
|
-
- uses: ruby/setup-ruby@
|
81
|
+
- uses: ruby/setup-ruby@master
|
82
82
|
with:
|
83
83
|
ruby-version: ${{ matrix.ruby-version }}
|
84
84
|
bundler-cache: true
|
85
85
|
|
86
86
|
- run: bundle exec rake gem:native:${{ matrix.platform }}
|
87
87
|
|
88
|
-
- uses: actions/upload-artifact@
|
88
|
+
- uses: actions/upload-artifact@v3
|
89
89
|
with:
|
90
90
|
name: pkg
|
91
91
|
path: pkg/*.gem
|
@@ -97,14 +97,14 @@ jobs:
|
|
97
97
|
needs: [ build, cross ]
|
98
98
|
runs-on: ubuntu-latest
|
99
99
|
steps:
|
100
|
-
- uses: actions/checkout@
|
100
|
+
- uses: actions/checkout@v3
|
101
101
|
|
102
|
-
- uses: ruby/setup-ruby@
|
102
|
+
- uses: ruby/setup-ruby@master
|
103
103
|
with:
|
104
104
|
ruby-version: '2.7'
|
105
105
|
bundler-cache: true
|
106
106
|
|
107
|
-
- uses: actions/download-artifact@
|
107
|
+
- uses: actions/download-artifact@v3
|
108
108
|
with:
|
109
109
|
name: pkg
|
110
110
|
path: pkg
|
data/.gitignore
CHANGED
data/.rubocop.yml
CHANGED
@@ -2,8 +2,13 @@ inherit_from:
|
|
2
2
|
- 'https://raw.githubusercontent.com/riboseinc/oss-guides/master/ci/rubocop.yml'
|
3
3
|
|
4
4
|
AllCops:
|
5
|
-
TargetRubyVersion: 2.
|
5
|
+
TargetRubyVersion: 2.7
|
6
6
|
SuggestExtensions: false
|
7
|
+
Exclude:
|
8
|
+
- 'tmp/**/*'
|
9
|
+
- 'pkg/**/*'
|
10
|
+
- 'ports/**/*'
|
11
|
+
- 'vendor/**/*'
|
7
12
|
|
8
13
|
Gemspec/RequireMFA:
|
9
14
|
Enabled: false
|
data/README.adoc
CHANGED
@@ -54,9 +54,13 @@ There are two ways to provide EMF data to `emf2svg`.
|
|
54
54
|
----
|
55
55
|
require "emf2svg"
|
56
56
|
|
57
|
-
data = Emf2svg.from_file("example.emf")
|
57
|
+
data = Emf2svg.from_file("example.emf", 800, 600)
|
58
58
|
File.write("output.svg", data, mode: "wb")
|
59
59
|
----
|
60
|
+
800, 600 - optional width and height of the bounding rectangle for svg file
|
61
|
+
The image will be scaled to fit into this rectangle
|
62
|
+
These parameters are optional. If skipped or set to 0 SVG image will have the
|
63
|
+
same size as EMF (in pixels)
|
60
64
|
====
|
61
65
|
|
62
66
|
=== Loading binary data
|
@@ -71,9 +75,13 @@ File.write("output.svg", data, mode: "wb")
|
|
71
75
|
require "emf2svg"
|
72
76
|
|
73
77
|
emf_content = File.read("example.emf", mode: "rb")
|
74
|
-
svg_data = Emf2svg.from_binary_string(emf_content)
|
78
|
+
svg_data = Emf2svg.from_binary_string(emf_content, 800, 600)
|
75
79
|
File.write("output.svg", svg_data, mode: "wb")
|
76
80
|
----
|
81
|
+
800, 600 - optional width and height of the bounding rectangle for svg file
|
82
|
+
The image will be scaled to fit into this rectangle
|
83
|
+
These parameters are optional. If skipped or set to 0 SVG image will have the
|
84
|
+
same size as EMF (in pixels)
|
77
85
|
====
|
78
86
|
|
79
87
|
|
data/Rakefile
CHANGED
data/bin/emf2svg
CHANGED
@@ -1,8 +1,38 @@
|
|
1
1
|
#!/usr/bin/env ruby
|
2
2
|
# frozen_string_literal: true
|
3
3
|
|
4
|
-
require "bundler/setup"
|
5
4
|
require "emf2svg"
|
6
5
|
|
7
|
-
|
8
|
-
|
6
|
+
def print_usage
|
7
|
+
usage = %{Usage: emf2svg <input> <output> [<width>] [<height>]
|
8
|
+
<input> -- emf file to convert
|
9
|
+
<output> -- svg file to save
|
10
|
+
<width> -- svg image width, defaults to source width in px if not set or 0
|
11
|
+
<height> -- svg image height, defaults to source height in px if not set or 0
|
12
|
+
Note: width and height specify bounding rectangle, the image will be scaled
|
13
|
+
propotionally to fit into it.
|
14
|
+
}
|
15
|
+
puts usage
|
16
|
+
end
|
17
|
+
|
18
|
+
def tint(pos)
|
19
|
+
ARGV.size > pos ? Integer(ARGV[pos]) : 0
|
20
|
+
rescue ArgumentError, TypeError => e
|
21
|
+
puts "ERROR: Failed to convert #{ARGV[pos]} to integer: #{e.message}"
|
22
|
+
print_usage
|
23
|
+
exit 1
|
24
|
+
end
|
25
|
+
|
26
|
+
if ARGV.size < 2 || ARGV.size > 4 || ARGV[0].casecmp("help").zero?
|
27
|
+
print_usage
|
28
|
+
exit 0
|
29
|
+
end
|
30
|
+
|
31
|
+
begin
|
32
|
+
svg = Emf2svg.from_file(ARGV[0], tint(2), tint(3))
|
33
|
+
File.write(ARGV[1], svg, mode: "wb")
|
34
|
+
rescue StandardError => e
|
35
|
+
puts "ERROR: Failed to process #{ARGV[0]}: #{e.message}"
|
36
|
+
print_usage
|
37
|
+
exit 1
|
38
|
+
end
|
data/emf2svg.gemspec
CHANGED
@@ -8,10 +8,10 @@ Gem::Specification.new do |spec|
|
|
8
8
|
spec.authors = ["Ribose"]
|
9
9
|
spec.email = ["open.source@ribose.com"]
|
10
10
|
|
11
|
-
spec.summary = "
|
11
|
+
spec.summary = "EMF to SVG conversion in Ruby."
|
12
12
|
spec.homepage = "https://github.com/metanorma/emf2svg-ruby"
|
13
13
|
spec.license = "BSD-2-Clause"
|
14
|
-
spec.required_ruby_version = ">= 2.
|
14
|
+
spec.required_ruby_version = ">= 2.7.0"
|
15
15
|
|
16
16
|
spec.metadata["homepage_uri"] = spec.homepage
|
17
17
|
spec.metadata["source_code_uri"] = "https://github.com/metanorma/emf2svg-ruby"
|
data/exe/emf2svg
CHANGED
@@ -3,5 +3,36 @@
|
|
3
3
|
|
4
4
|
require "emf2svg"
|
5
5
|
|
6
|
-
|
7
|
-
|
6
|
+
def print_usage
|
7
|
+
usage = %{Usage: emf2svg <input> <output> [<width>] [<height>]
|
8
|
+
<input> -- emf file to convert
|
9
|
+
<output> -- svg file to save
|
10
|
+
<width> -- svg image width, defaults to source width in px if not set or 0
|
11
|
+
<height> -- svg image height, defaults to source height in px if not set or 0
|
12
|
+
Note: width and height specify bounding rectangle, the image will be scaled
|
13
|
+
propotionally to fit into it.
|
14
|
+
}
|
15
|
+
puts usage
|
16
|
+
end
|
17
|
+
|
18
|
+
def tint(pos)
|
19
|
+
ARGV.size > pos ? Integer(ARGV[pos]) : 0
|
20
|
+
rescue ArgumentError, TypeError => e
|
21
|
+
puts "ERROR: Failed to convert #{ARGV[pos]} to integer: #{e.message}"
|
22
|
+
print_usage
|
23
|
+
exit 1
|
24
|
+
end
|
25
|
+
|
26
|
+
if ARGV.size < 2 || ARGV.size > 4 || ARGV[0].casecmp("help").zero?
|
27
|
+
print_usage
|
28
|
+
exit 0
|
29
|
+
end
|
30
|
+
|
31
|
+
begin
|
32
|
+
svg = Emf2svg.from_file(ARGV[0], tint(2), tint(3))
|
33
|
+
File.write(ARGV[1], svg, mode: "wb")
|
34
|
+
rescue StandardError => e
|
35
|
+
puts "ERROR: Failed to process #{ARGV[0]}: #{e.message}"
|
36
|
+
print_usage
|
37
|
+
exit 1
|
38
|
+
end
|
Binary file
|
data/lib/emf2svg/recipe.rb
CHANGED
@@ -2,17 +2,19 @@ require "rbconfig"
|
|
2
2
|
require "mini_portile2"
|
3
3
|
require "pathname"
|
4
4
|
require "tmpdir"
|
5
|
+
require "open3"
|
6
|
+
require_relative "version"
|
5
7
|
|
6
8
|
module Emf2svg
|
7
9
|
class Recipe < MiniPortileCMake
|
8
10
|
ROOT = Pathname.new(File.expand_path("../..", __dir__))
|
9
11
|
|
10
12
|
def initialize
|
11
|
-
super("libemf2svg",
|
13
|
+
super("libemf2svg", LIBEMF2SVG_VERSION)
|
12
14
|
|
13
15
|
@files << {
|
14
|
-
url: "https://github.com/metanorma/libemf2svg/releases/download/
|
15
|
-
sha256: "
|
16
|
+
url: "https://github.com/metanorma/libemf2svg/releases/download/v#{LIBEMF2SVG_VERSION}/libemf2svg.tar.gz",
|
17
|
+
sha256: "c65f25040a351d18beb5172609a55d034245f85a1152d7f294780c6cc155d876", # rubocop:disable Layout/LineLength
|
16
18
|
}
|
17
19
|
|
18
20
|
@target = ROOT.join(@target).to_s
|
@@ -28,58 +30,6 @@ module Emf2svg
|
|
28
30
|
FileUtils.touch(checkpoint)
|
29
31
|
end
|
30
32
|
|
31
|
-
# rubocop:disable Metrics/MethodLength
|
32
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
33
|
-
def host_platform
|
34
|
-
@host_platform ||=
|
35
|
-
case @host
|
36
|
-
when /\Ax86_64.*mingw32/
|
37
|
-
"x64-mingw32"
|
38
|
-
when /\Ax86_64.*linux/
|
39
|
-
"x86_64-linux"
|
40
|
-
when /\A(arm64|aarch64).*linux/
|
41
|
-
"arm64-linux"
|
42
|
-
when /\Ax86_64.*(darwin|macos|osx)/
|
43
|
-
"x86_64-darwin"
|
44
|
-
when /\A(arm64|aarch64).*(darwin|macos|osx)/
|
45
|
-
"arm64-darwin"
|
46
|
-
else
|
47
|
-
@host
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
def target_platform
|
52
|
-
@target_platform ||=
|
53
|
-
case ENV["target_platform"]
|
54
|
-
when /\A(arm64|aarch64).*(darwin|macos|osx)/
|
55
|
-
"arm64-darwin"
|
56
|
-
when /\Ax86_64.*(darwin|macos|osx)/
|
57
|
-
"x86_64-darwin"
|
58
|
-
when /\A(arm64|aarch64).*linux/
|
59
|
-
"aarch64-linux"
|
60
|
-
else
|
61
|
-
ENV["target_platform"] || host_platform
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
def target_triplet
|
66
|
-
@target_triplet ||=
|
67
|
-
case target_platform
|
68
|
-
when "arm64-darwin"
|
69
|
-
"arm64-osx"
|
70
|
-
when "x86_64-darwin"
|
71
|
-
"x64-osx"
|
72
|
-
when "aarch64-linux"
|
73
|
-
"arm64-linux"
|
74
|
-
when "x86_64-linux"
|
75
|
-
"x64-linux"
|
76
|
-
when /\Ax64-mingw(32|-ucrt)/
|
77
|
-
"x64-mingw-static"
|
78
|
-
end
|
79
|
-
end
|
80
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
81
|
-
# rubocop:enable Metrics/MethodLength
|
82
|
-
|
83
33
|
def windows_native?
|
84
34
|
MiniPortile.windows? && target_triplet.eql?("x64-mingw-static")
|
85
35
|
end
|
@@ -115,20 +65,42 @@ module Emf2svg
|
|
115
65
|
"cmake --build #{File.expand_path(work_path)} --config Release"
|
116
66
|
end
|
117
67
|
|
68
|
+
def lb_to_verify
|
69
|
+
pt = if MiniPortile.windows?
|
70
|
+
"emf2svg.dll"
|
71
|
+
else
|
72
|
+
"libemf2svg.{so,dylib}"
|
73
|
+
end
|
74
|
+
@lb_to_verify ||= Dir.glob(ROOT.join("lib", "emf2svg", pt))
|
75
|
+
end
|
76
|
+
|
77
|
+
def verify_libs
|
78
|
+
lb_to_verify.each do |l|
|
79
|
+
out, st = Open3.capture2("file #{l}")
|
80
|
+
raise "Failed to query file #{l}: #{out}" unless st.exitstatus.zero?
|
81
|
+
|
82
|
+
if out.include?(target_format)
|
83
|
+
message("Verifying #{l} ... OK\n")
|
84
|
+
else
|
85
|
+
raise "Invalid file format '#{out}', '#{@target_format}' expected"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end
|
89
|
+
|
118
90
|
def install
|
119
|
-
message("Called install\n")
|
120
91
|
libs = if MiniPortile.windows?
|
121
92
|
Dir.glob(File.join(work_path, "Release", "*.dll"))
|
122
93
|
else
|
123
94
|
Dir.glob(File.join(work_path, "libemf2svg.{so,dylib}"))
|
124
95
|
.grep(/\/(?:lib)?[a-zA-Z0-9\-]+\.(?:so|dylib)$/)
|
125
96
|
end
|
126
|
-
|
127
97
|
FileUtils.cp_r(libs, ROOT.join("lib", "emf2svg"), verbose: true)
|
98
|
+
|
99
|
+
verify_libs unless target_format.eql?("skip")
|
128
100
|
end
|
129
101
|
|
130
102
|
def execute(action, command, command_opts = {})
|
131
|
-
super(action, command, command_opts.merge(debug:
|
103
|
+
super(action, command, command_opts.merge(debug: false))
|
132
104
|
end
|
133
105
|
|
134
106
|
def message(text)
|
@@ -151,5 +123,75 @@ module Emf2svg
|
|
151
123
|
def port_path
|
152
124
|
"port"
|
153
125
|
end
|
126
|
+
|
127
|
+
# rubocop:disable Metrics/MethodLength
|
128
|
+
# rubocop:disable Metrics/CyclomaticComplexity
|
129
|
+
def host_platform
|
130
|
+
@host_platform ||=
|
131
|
+
case @host
|
132
|
+
when /\Ax86_64.*mingw32/
|
133
|
+
"x64-mingw32"
|
134
|
+
when /\Ax86_64.*linux/
|
135
|
+
"x86_64-linux"
|
136
|
+
when /\A(arm64|aarch64).*linux/
|
137
|
+
"arm64-linux"
|
138
|
+
when /\Ax86_64.*(darwin|macos|osx)/
|
139
|
+
"x86_64-darwin"
|
140
|
+
when /\A(arm64|aarch64).*(darwin|macos|osx)/
|
141
|
+
"arm64-darwin"
|
142
|
+
else
|
143
|
+
@host
|
144
|
+
end
|
145
|
+
end
|
146
|
+
|
147
|
+
def target_platform
|
148
|
+
@target_platform ||=
|
149
|
+
case ENV.fetch("target_platform", nil)
|
150
|
+
when /\A(arm64|aarch64).*(darwin|macos|osx)/
|
151
|
+
"arm64-darwin"
|
152
|
+
when /\Ax86_64.*(darwin|macos|osx)/
|
153
|
+
"x86_64-darwin"
|
154
|
+
when /\A(arm64|aarch64).*linux/
|
155
|
+
"aarch64-linux"
|
156
|
+
else
|
157
|
+
ENV.fetch("target_platform", host_platform)
|
158
|
+
end
|
159
|
+
end
|
160
|
+
|
161
|
+
def target_triplet
|
162
|
+
@target_triplet ||=
|
163
|
+
case target_platform
|
164
|
+
when "arm64-darwin"
|
165
|
+
"arm64-osx"
|
166
|
+
when "x86_64-darwin"
|
167
|
+
"x64-osx"
|
168
|
+
when "aarch64-linux"
|
169
|
+
"arm64-linux"
|
170
|
+
when "x86_64-linux"
|
171
|
+
"x64-linux"
|
172
|
+
when /\Ax64-mingw(32|-ucrt)/
|
173
|
+
"x64-mingw-static"
|
174
|
+
end
|
175
|
+
end
|
176
|
+
|
177
|
+
def target_format
|
178
|
+
@target_format ||=
|
179
|
+
case target_platform
|
180
|
+
when "arm64-darwin"
|
181
|
+
"Mach-O 64-bit dynamically linked shared library arm64"
|
182
|
+
when "x86_64-darwin"
|
183
|
+
"Mach-O 64-bit dynamically linked shared library x86_64"
|
184
|
+
when "aarch64-linux"
|
185
|
+
"ELF 64-bit LSB shared object, ARM aarch64"
|
186
|
+
when "x86_64-linux"
|
187
|
+
"ELF 64-bit LSB shared object, x86-64"
|
188
|
+
when /\Ax64-mingw(32|-ucrt)/
|
189
|
+
"PE32+ executable (DLL) (console) x86-64, for MS Windows"
|
190
|
+
else
|
191
|
+
"skip"
|
192
|
+
end
|
193
|
+
end
|
194
|
+
# rubocop:enable Metrics/CyclomaticComplexity
|
195
|
+
# rubocop:enable Metrics/MethodLength
|
154
196
|
end
|
155
197
|
end
|
data/lib/emf2svg/version.rb
CHANGED
data/lib/emf2svg.rb
CHANGED
@@ -39,17 +39,18 @@ module Emf2svg
|
|
39
39
|
:int
|
40
40
|
|
41
41
|
class << self
|
42
|
-
def from_file(path)
|
42
|
+
def from_file(path, width = 0, height = 0)
|
43
43
|
content = File.read(path, mode: "rb")
|
44
|
-
from_binary_string(content)
|
44
|
+
from_binary_string(content, width, height)
|
45
45
|
end
|
46
46
|
|
47
|
-
def from_binary_string(content)
|
47
|
+
def from_binary_string(content, width = 0, height = 0)
|
48
48
|
svg_out = FFI::MemoryPointer.new(:pointer)
|
49
49
|
svg_out_len = FFI::MemoryPointer.new(:pointer)
|
50
50
|
content_ptr = FFI::MemoryPointer.from_string(content)
|
51
51
|
|
52
|
-
|
52
|
+
opt = options(width, height)
|
53
|
+
ret = emf2svg(content_ptr, content.size, svg_out, svg_out_len, opt)
|
53
54
|
raise Error, "emf2svg failed with error code: #{ret}" unless ret == 1
|
54
55
|
|
55
56
|
svg_out.read_pointer.read_bytes(svg_out_len.read_int)
|
@@ -57,13 +58,13 @@ module Emf2svg
|
|
57
58
|
|
58
59
|
private
|
59
60
|
|
60
|
-
def options
|
61
|
+
def options(width, height)
|
61
62
|
GeneratorOptions.new.tap do |opts|
|
62
63
|
opts[:verbose] = false
|
63
64
|
opts[:emfplus] = true
|
64
65
|
opts[:svgDelimiter] = true
|
65
|
-
opts[:imgHeight] =
|
66
|
-
opts[:imgWidth] =
|
66
|
+
opts[:imgHeight] = height
|
67
|
+
opts[:imgWidth] = width
|
67
68
|
end
|
68
69
|
end
|
69
70
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: emf2svg
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.4.
|
4
|
+
version: 1.4.3
|
5
5
|
platform: x86_64-darwin
|
6
6
|
authors:
|
7
7
|
- Ribose
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-10-26 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: ffi
|
@@ -109,7 +109,7 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
109
109
|
requirements:
|
110
110
|
- - ">="
|
111
111
|
- !ruby/object:Gem::Version
|
112
|
-
version: 2.
|
112
|
+
version: 2.7.0
|
113
113
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
114
114
|
requirements:
|
115
115
|
- - ">="
|
@@ -119,5 +119,5 @@ requirements: []
|
|
119
119
|
rubygems_version: 3.1.6
|
120
120
|
signing_key:
|
121
121
|
specification_version: 4
|
122
|
-
summary:
|
122
|
+
summary: EMF to SVG conversion in Ruby.
|
123
123
|
test_files: []
|