emfsvg 0.1.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.
@@ -0,0 +1,7 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Emfsvg
4
+ module Visitors
5
+ autoload :EmrVisitor, "emfsvg/visitors/emr_visitor"
6
+ end
7
+ end
data/lib/emfsvg.rb ADDED
@@ -0,0 +1,49 @@
1
+ # frozen_string_literal: true
2
+
3
+ require "emf"
4
+
5
+ module Emfsvg
6
+ autoload :VERSION, "emfsvg/version"
7
+ autoload :Error, "emfsvg/error"
8
+ autoload :FormatError, "emfsvg/error"
9
+ autoload :RenderError, "emfsvg/error"
10
+ autoload :Renderer, "emfsvg/renderer"
11
+ autoload :DeviceContext, "emfsvg/device_context"
12
+ autoload :ObjectTable, "emfsvg/object_table"
13
+ autoload :TransformStack, "emfsvg/transform_stack"
14
+ autoload :SvgBuilder, "emfsvg/svg_builder"
15
+ autoload :Options, "emfsvg/options"
16
+ autoload :Compat, "emfsvg/compat"
17
+ autoload :DibDecoder, "emfsvg/dib_decoder"
18
+ autoload :PngEncoder, "emfsvg/png_encoder"
19
+ autoload :ClipRegion, "emfsvg/clip_region"
20
+ autoload :BsdRand, "emfsvg/bsd_rand"
21
+ autoload :FormatHelpers, "emfsvg/format_helpers"
22
+ autoload :GlyphIndexMapper, "emfsvg/glyph_index_mapper"
23
+
24
+ class << self
25
+ # Render an Emf::Model::Metafile to an SVG string.
26
+ #
27
+ # Options:
28
+ # namespace: XML namespace prefix, e.g. "svg" (default: none)
29
+ # width: override viewport width (default: from metafile header)
30
+ # height: override viewport height
31
+ # verbose: print record-by-record dispatch to STDERR (default: false)
32
+ # emf_plus: attempt to render EMF+ records instead of EMF fallback
33
+ # (default: false — EMF+ is structured-parsed by emf but
34
+ # not yet rendered)
35
+ def to_svg(metafile, **options)
36
+ Renderer.call(metafile, Options.new(**options))
37
+ end
38
+
39
+ # Parse from bytes then render.
40
+ def from_bytes(bytes, **options)
41
+ to_svg(Emf.parse(bytes), **options)
42
+ end
43
+
44
+ # Parse from a file path then render.
45
+ def from_file(path, **options)
46
+ from_bytes(File.binread(path), **options)
47
+ end
48
+ end
49
+ end
metadata ADDED
@@ -0,0 +1,153 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: emfsvg
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - Ribose Inc.
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: base64
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - ">="
17
+ - !ruby/object:Gem::Version
18
+ version: '0'
19
+ type: :runtime
20
+ prerelease: false
21
+ version_requirements: !ruby/object:Gem::Requirement
22
+ requirements:
23
+ - - ">="
24
+ - !ruby/object:Gem::Version
25
+ version: '0'
26
+ - !ruby/object:Gem::Dependency
27
+ name: bigdecimal
28
+ requirement: !ruby/object:Gem::Requirement
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ version: '0'
33
+ type: :runtime
34
+ prerelease: false
35
+ version_requirements: !ruby/object:Gem::Requirement
36
+ requirements:
37
+ - - ">="
38
+ - !ruby/object:Gem::Version
39
+ version: '0'
40
+ - !ruby/object:Gem::Dependency
41
+ name: emf
42
+ requirement: !ruby/object:Gem::Requirement
43
+ requirements:
44
+ - - "~>"
45
+ - !ruby/object:Gem::Version
46
+ version: '0.1'
47
+ type: :runtime
48
+ prerelease: false
49
+ version_requirements: !ruby/object:Gem::Requirement
50
+ requirements:
51
+ - - "~>"
52
+ - !ruby/object:Gem::Version
53
+ version: '0.1'
54
+ - !ruby/object:Gem::Dependency
55
+ name: fontisan
56
+ requirement: !ruby/object:Gem::Requirement
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ version: '0'
61
+ type: :runtime
62
+ prerelease: false
63
+ version_requirements: !ruby/object:Gem::Requirement
64
+ requirements:
65
+ - - ">="
66
+ - !ruby/object:Gem::Version
67
+ version: '0'
68
+ - !ruby/object:Gem::Dependency
69
+ name: libpng
70
+ requirement: !ruby/object:Gem::Requirement
71
+ requirements:
72
+ - - "~>"
73
+ - !ruby/object:Gem::Version
74
+ version: '1.6'
75
+ type: :runtime
76
+ prerelease: false
77
+ version_requirements: !ruby/object:Gem::Requirement
78
+ requirements:
79
+ - - "~>"
80
+ - !ruby/object:Gem::Version
81
+ version: '1.6'
82
+ - !ruby/object:Gem::Dependency
83
+ name: rexml
84
+ requirement: !ruby/object:Gem::Requirement
85
+ requirements:
86
+ - - "~>"
87
+ - !ruby/object:Gem::Version
88
+ version: '3.3'
89
+ type: :runtime
90
+ prerelease: false
91
+ version_requirements: !ruby/object:Gem::Requirement
92
+ requirements:
93
+ - - "~>"
94
+ - !ruby/object:Gem::Version
95
+ version: '3.3'
96
+ description: Convert Microsoft Enhanced Metafile (EMF) to SVG and back. Consumes the
97
+ `emf` gem's domain model. Replaces the FFI wrapper around libemf2svg with a pure-Ruby
98
+ transformer.
99
+ email:
100
+ - open.source@ribose.com
101
+ executables:
102
+ - emfsvg
103
+ extensions: []
104
+ extra_rdoc_files: []
105
+ files:
106
+ - LICENSE.txt
107
+ - README.adoc
108
+ - exe/emfsvg
109
+ - lib/emfsvg.rb
110
+ - lib/emfsvg/bsd_rand.rb
111
+ - lib/emfsvg/bsd_rand_sequence.txt
112
+ - lib/emfsvg/clip_region.rb
113
+ - lib/emfsvg/compat.rb
114
+ - lib/emfsvg/device_context.rb
115
+ - lib/emfsvg/dib_decoder.rb
116
+ - lib/emfsvg/error.rb
117
+ - lib/emfsvg/format_helpers.rb
118
+ - lib/emfsvg/glyph_index_mapper.rb
119
+ - lib/emfsvg/object_table.rb
120
+ - lib/emfsvg/options.rb
121
+ - lib/emfsvg/png_encoder.rb
122
+ - lib/emfsvg/renderer.rb
123
+ - lib/emfsvg/svg_builder.rb
124
+ - lib/emfsvg/transform_stack.rb
125
+ - lib/emfsvg/version.rb
126
+ - lib/emfsvg/visitors.rb
127
+ - lib/emfsvg/visitors/emr_visitor.rb
128
+ homepage: https://github.com/claricle/emfsvg
129
+ licenses:
130
+ - BSD-2-Clause
131
+ metadata:
132
+ homepage_uri: https://github.com/claricle/emfsvg
133
+ source_code_uri: https://github.com/claricle/emfsvg
134
+ changelog_uri: https://github.com/claricle/emfsvg/blob/main/CHANGELOG.adoc
135
+ rubygems_mfa_required: 'true'
136
+ rdoc_options: []
137
+ require_paths:
138
+ - lib
139
+ required_ruby_version: !ruby/object:Gem::Requirement
140
+ requirements:
141
+ - - ">="
142
+ - !ruby/object:Gem::Version
143
+ version: 3.1.0
144
+ required_rubygems_version: !ruby/object:Gem::Requirement
145
+ requirements:
146
+ - - ">="
147
+ - !ruby/object:Gem::Version
148
+ version: '0'
149
+ requirements: []
150
+ rubygems_version: 4.0.16
151
+ specification_version: 4
152
+ summary: EMF <-> SVG transformer (Ruby).
153
+ test_files: []