Class: Emfsvg::Renderer
- Inherits:
-
Object
- Object
- Emfsvg::Renderer
- Defined in:
- lib/emfsvg/renderer.rb
Overview
Top-level renderer: walks an Emf::Model::Metafile and emits an SVG string via SvgBuilder.
Matches the exact SVG structure of libemf2svg:
1. XML declaration
2. <svg version="1.1" ... width="W.0000" height="H.0000">
3. <g transform="translate(-RefX, -RefY)"> (header translate)
4. ... content with per-element point_cal coordinate transform ...
5. </g> (close world transform if open)
6. </g> (close header translate)
7. </svg>
Defined Under Namespace
Classes: PathTransform
Constant Summary collapse
- MAX_OUTPUT_BYTES =
500 * 1024 * 1024
Class Method Summary collapse
Instance Method Summary collapse
- #call ⇒ Object
-
#initialize(metafile, options) ⇒ Renderer
constructor
A new instance of Renderer.
Constructor Details
#initialize(metafile, options) ⇒ Renderer
Returns a new instance of Renderer.
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/emfsvg/renderer.rb', line 25 def initialize(, ) @metafile = @options = @builder = SvgBuilder.new @dc = DeviceContext.new @object_table = ObjectTable.new @transform_stack = TransformStack.new BsdRand.reset compute_header_params end |
Class Method Details
.call(metafile, options) ⇒ Object
21 22 23 |
# File 'lib/emfsvg/renderer.rb', line 21 def self.call(, ) new(, ).call end |
Instance Method Details
#call ⇒ Object
36 37 38 39 40 41 42 43 44 45 46 47 |
# File 'lib/emfsvg/renderer.rb', line 36 def call emit_xml_declaration emit_svg_open do emit_header_translate_group do visit_records end end result = @builder.to_s raise RenderError, "SVG output exceeds #{MAX_OUTPUT_BYTES} bytes" if result.bytesize > MAX_OUTPUT_BYTES result end |