Module: Emfsvg

Defined in:
lib/emfsvg.rb,
lib/emfsvg/svg.rb,
lib/emfsvg/error.rb,
lib/emfsvg/options.rb,
lib/emfsvg/version.rb,
lib/emfsvg/bsd_rand.rb,
lib/emfsvg/renderer.rb,
lib/emfsvg/visitors.rb,
lib/emfsvg/svg/color.rb,
lib/emfsvg/svg/paint.rb,
lib/emfsvg/svg/parser.rb,
lib/emfsvg/svg/stroke.rb,
lib/emfsvg/clip_region.rb,
lib/emfsvg/dib_decoder.rb,
lib/emfsvg/dib_encoder.rb,
lib/emfsvg/png_decoder.rb,
lib/emfsvg/png_encoder.rb,
lib/emfsvg/svg/element.rb,
lib/emfsvg/svg_builder.rb,
lib/emfsvg/translation.rb,
lib/emfsvg/object_table.rb,
lib/emfsvg/svg/document.rb,
lib/emfsvg/svg/elements.rb,
lib/emfsvg/svg/path_data.rb,
lib/emfsvg/device_context.rb,
lib/emfsvg/format_helpers.rb,
lib/emfsvg/transform_stack.rb,
lib/emfsvg/svg/elements/defs.rb,
lib/emfsvg/svg/elements/line.rb,
lib/emfsvg/svg/elements/path.rb,
lib/emfsvg/svg/elements/rect.rb,
lib/emfsvg/svg/elements/text.rb,
lib/emfsvg/glyph_index_mapper.rb,
lib/emfsvg/svg/elements/group.rb,
lib/emfsvg/svg/elements/image.rb,
lib/emfsvg/translation/scaler.rb,
lib/emfsvg/svg/elements/circle.rb,
lib/emfsvg/translation/context.rb,
lib/emfsvg/svg/attribute_parser.rb,
lib/emfsvg/svg/elements/ellipse.rb,
lib/emfsvg/svg/elements/polygon.rb,
lib/emfsvg/svg/transform_parser.rb,
lib/emfsvg/translation/handlers.rb,
lib/emfsvg/visitors/emr_visitor.rb,
lib/emfsvg/svg/elements/polyline.rb,
lib/emfsvg/svg/elements/stylable.rb,
lib/emfsvg/svg/path_data/command.rb,
lib/emfsvg/svg/clip_path_registry.rb,
lib/emfsvg/svg/elements/clip_path.rb,
lib/emfsvg/translation/emf_renderer.rb,
lib/emfsvg/translation/scaler/fixed.rb,
lib/emfsvg/translation/header_builder.rb,
lib/emfsvg/translation/record_emitter.rb,
lib/emfsvg/translation/scaler/identity.rb,
lib/emfsvg/translation/decimal_detector.rb,
lib/emfsvg/translation/handler_registry.rb,
lib/emfsvg/translation/handlers/shared_gdi.rb,
lib/emfsvg/translation/handlers/defs_handler.rb,
lib/emfsvg/translation/handlers/line_handler.rb,
lib/emfsvg/translation/handlers/path_handler.rb,
lib/emfsvg/translation/handlers/rect_handler.rb,
lib/emfsvg/translation/handlers/text_handler.rb,
lib/emfsvg/translation/handlers/group_handler.rb,
lib/emfsvg/translation/handlers/image_handler.rb,
lib/emfsvg/translation/handlers/circle_handler.rb,
lib/emfsvg/translation/handlers/path_flattener.rb,
lib/emfsvg/translation/handlers/ellipse_handler.rb,
lib/emfsvg/translation/handlers/polygon_handler.rb,
lib/emfsvg/translation/handlers/polyline_handler.rb,
lib/emfsvg/translation/handlers/clip_path_handler.rb

Defined Under Namespace

Modules: DibEncoder, FormatHelpers, PngDecoder, Svg, Translation, Visitors Classes: Brush, BsdRand, ClipRegion, CoordinateState, DeviceContext, DibDecoder, Error, Font, FormatError, GlyphIndexMapper, ObjectTable, Options, ParseError, Pen, PngEncoder, RenderError, Renderer, SvgBuilder, TransformStack

Constant Summary collapse

VERSION =
"0.1.2"

Class Method Summary collapse

Class Method Details

.from_bytes(bytes, **options) ⇒ Object

Parse from bytes then render.



44
45
46
# File 'lib/emfsvg.rb', line 44

def from_bytes(bytes, **options)
  to_svg(Emf.parse(bytes), **options)
end

.from_file(path, **options) ⇒ Object

Parse from a file path then render.



49
50
51
# File 'lib/emfsvg.rb', line 49

def from_file(path, **options)
  from_bytes(File.binread(path), **options)
end

.from_svg(svg_string) ⇒ Object

Parse SVG string and translate to EMF bytes.



60
61
62
# File 'lib/emfsvg.rb', line 60

def from_svg(svg_string)
  to_emf(Svg::Parser.call(svg_string))
end

.from_svg_file(path) ⇒ Object

Parse SVG from a file path and translate to EMF bytes.



65
66
67
# File 'lib/emfsvg.rb', line 65

def from_svg_file(path)
  from_svg(File.read(path))
end

.to_emf(document) ⇒ Object

Translate an Svg::Document to EMF bytes.



54
55
56
57
# File 'lib/emfsvg.rb', line 54

def to_emf(document)
  metafile = Translation::EmfRenderer.call(document)
  Emf.serialize(metafile)
end

.to_svg(metafile, **options) ⇒ Object

Render an Emf::Model::Metafile to an SVG string.

Options:

namespace:  XML namespace prefix, e.g. "svg" (default: none)
width:      override viewport width (default: from metafile header)
height:     override viewport height
verbose:    print record-by-record dispatch to STDERR (default: false)
emf_plus:   attempt to render EMF+ records instead of EMF fallback
          (default: false — EMF+ is structured-parsed by emf but
          not yet rendered)


39
40
41
# File 'lib/emfsvg.rb', line 39

def to_svg(metafile, **options)
  Renderer.call(metafile, Options.new(**options))
end