Class: Shellfie::Renderer

Inherits:
Object
  • Object
show all
Defined in:
lib/shellfie/renderer.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(config, chrome_cache: nil) ⇒ Renderer

Returns a new instance of Renderer.



20
21
22
23
24
25
26
# File 'lib/shellfie/renderer.rb', line 20

def initialize(config, chrome_cache: nil)
  @config = config
  @chrome_cache = chrome_cache
  @theme = ThemeRegistry.build(config)
  @ansi_parser = AnsiParser.new(state_mode: config.window[:ansi_state] || :persistent)
  @font_resolver = FontResolver.new(-> { imagemagick_command })
end

Instance Attribute Details

#configObject (readonly)

Returns the value of attribute config.



18
19
20
# File 'lib/shellfie/renderer.rb', line 18

def config
  @config
end

#font_resolverObject (readonly)

Returns the value of attribute font_resolver.



18
19
20
# File 'lib/shellfie/renderer.rb', line 18

def font_resolver
  @font_resolver
end

#themeObject (readonly)

Returns the value of attribute theme.



18
19
20
# File 'lib/shellfie/renderer.rb', line 18

def theme
  @theme
end

Instance Method Details

#estimate(scale: 1, shadow: true) ⇒ Object



40
41
42
43
# File 'lib/shellfie/renderer.rb', line 40

def estimate(scale: 1, shadow: true)
  geometry = build_geometry(build_lines, scale: scale, shadow: shadow)
  geometry.slice(:canvas_width, :canvas_height, :scaled_width, :scaled_height, :logical_width, :logical_height, :scale)
end

#render(output_path, scale: 1, shadow: true, transparent: false, format: nil) ⇒ Object



28
29
30
31
32
33
34
35
36
37
38
# File 'lib/shellfie/renderer.rb', line 28

def render(output_path, scale: 1, shadow: true, transparent: false, format: nil)
  check_dependencies!
  lines = build_lines
  extension = FormatResolver.resolve(output_path, explicit: format, default: "png")
  OutputWriter.write(output_path, extension: extension) do |temporary_path|
    render_method = (extension == "svg") ? :create_svg_image : :create_image
    send(render_method, lines, temporary_path, scale: scale, shadow: shadow, transparent: transparent)
  end
rescue MiniMagick::Error => e
  raise RenderError.new("ImageMagick render failed: #{e.message}", category: :render)
end