Class: RawLine::Renderer

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

Instance Method Summary collapse

Constructor Details

#initialize(dom:, output:, width:, height:) ⇒ Renderer

Returns a new instance of Renderer.



3
4
5
6
7
8
9
10
11
12
13
# File 'lib/rawline/renderer.rb', line 3

def initialize(dom:, output:, width:, height:)
  @dom = dom
  @output = output
  @renderer = TerminalLayout::TerminalRenderer.new(output: output)
  @render_tree = TerminalLayout::RenderTree.new(
    dom,
    parent: nil,
    style: { width: width, height: height },
    renderer: @renderer
  )
end

Instance Method Details

#pauseObject



15
16
17
# File 'lib/rawline/renderer.rb', line 15

def pause
  @paused = true
end

#render(reset: false) ⇒ Object



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

def render(reset: false)
  Treefell['editor'].puts %|#{self.class}##{__callee__} reset=#{reset}}|
  if @paused
    Treefell['editor'].puts "    paused"
    if @render_on_unpause_kwargs && @render_on_unpause_kwargs[:reset]
      reset = true
    end
    @render_on_unpause_kwargs = {reset: reset}
  else
    Treefell['editor'].puts "    unpaused"
    @render_tree.layout
    @renderer.render(@render_tree, reset: reset)
  end
end

#render_cursorObject



42
43
44
# File 'lib/rawline/renderer.rb', line 42

def render_cursor
  @renderer.render_cursor(@dom.focused_input_box)
end

#unpauseObject



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

def unpause
  @paused = false
  if @render_on_unpause_kwargs
    render(**@render_on_unpause_kwargs)
    @render_on_unpause = nil
  end
end

#update_dimensions(width:, height:) ⇒ Object



46
47
48
49
# File 'lib/rawline/renderer.rb', line 46

def update_dimensions(width:, height:)
  @render_tree.width = width
  @render_tree.height = height
end