Class: TUITD::Screenshot

Inherits:
Object
  • Object
show all
Includes:
TansParser::ANSIUtils
Defined in:
lib/tui_td/screenshot.rb

Constant Summary collapse

CELL_W =
8
CELL_H =
16
BOX_CHARS =
{
  # horizontal
  "" => [false, false, true, true, :light],
  "" => [false, false, true, true, :heavy],
  "" => [false, false, true, true, :double],
  # vertical
  "" => [true, true, false, false, :light],
  "" => [true, true, false, false, :heavy],
  "" => [true, true, false, false, :double],
  # corners
  "" => [false, true, false, true, :light_rounded],
  "" => [false, true, true, false, :light_rounded],
  "" => [true, false, true, false, :light_rounded],
  "" => [true, false, false, true, :light_rounded],
  "" => [false, true, false, true, :light],
  "" => [false, true, false, true, :light],
  "" => [false, true, false, true, :light],
  "" => [false, true, false, true, :heavy],
  "" => [false, true, true, false, :light],
  "" => [false, true, true, false, :light],
  "" => [false, true, true, false, :light],
  "" => [false, true, true, false, :heavy],
  "" => [true, false, false, true, :light],
  "" => [true, false, false, true, :light],
  "" => [true, false, false, true, :heavy],
  "" => [true, false, true, false, :light],
  "" => [true, false, true, false, :light],
  "" => [true, false, true, false, :light],
  "" => [true, false, true, false, :heavy],
  # double corners
  "" => [false, true, false, true, :double],
  "" => [false, true, true, false, :double],
  "" => [true, false, false, true, :double],
  "" => [true, false, true, false, :double],
  # T-junctions
  "" => [true, true, false, true, :light],
  "" => [true, true, false, true, :heavy],
  "" => [true, true, true, false, :light],
  "" => [true, true, true, false, :heavy],
  "" => [false, true, true, true, :light],
  "" => [false, true, true, true, :heavy],
  "" => [true, false, true, true, :light],
  "" => [true, false, true, true, :heavy],
  # double T-junctions
  "" => [true, true, false, true, :double],
  "" => [true, true, true, false, :double],
  "" => [false, true, true, true, :double],
  "" => [true, false, true, true, :double],
  # crosses
  "" => [true, true, true, true, :light],
  "" => [true, true, true, true, :heavy],
  "" => [true, true, true, true, :double],
  # single lines (ends)
  "" => [false, false, true, false, :light],
  "" => [true, false, false, false, :light],
  "" => [false, false, false, true, :light],
  "" => [false, true, false, false, :light],
  "" => [false, false, true, false, :heavy],
  "" => [true, false, false, false, :heavy],
  "" => [false, false, false, true, :heavy],
  "" => [false, true, false, false, :heavy],
  # mixed corners/junctions
  "" => [true, true, true, true, :light],
  "" => [true, true, true, true, :light],
  "" => [true, true, true, true, :light],
  "" => [true, true, true, true, :light],
  "" => [true, true, true, true, :heavy],
  "" => [true, true, true, true, :heavy],
  "" => [true, true, true, true, :heavy],
  "" => [true, true, true, true, :heavy],
  "" => [true, true, true, true, :heavy],
  "" => [true, true, true, true, :heavy],
  "" => [true, true, true, true, :heavy],
  "" => [true, true, true, true, :heavy],
  "" => [false, true, false, true, :double],
  "" => [false, true, false, true, :double],
  "" => [false, true, true, false, :double],
  "" => [false, true, true, false, :double],
  "" => [true, false, false, true, :double],
  "" => [true, false, false, true, :double],
  "" => [true, false, true, false, :double],
  "" => [true, false, true, false, :double],
  "" => [true, true, false, true, :double],
  "" => [true, true, false, true, :double],
  "" => [true, true, true, false, :double],
  "" => [true, true, true, false, :double],
  "" => [false, true, true, true, :double],
  "" => [false, true, true, true, :double],
  "" => [true, false, true, true, :double],
  "" => [true, false, true, true, :double],
  "" => [true, true, true, true, :double],
  "" => [true, true, true, true, :double],
}.freeze

Instance Method Summary collapse

Constructor Details

#initialize(state) ⇒ Screenshot

Returns a new instance of Screenshot.



210
211
212
213
214
215
# File 'lib/tui_td/screenshot.rb', line 210

def initialize(state)
  @state = state
  @rows = _dig(state, :size, :rows) || 40
  @cols = _dig(state, :size, :cols) || 120
  @grid = state[:rows] || state["rows"] || []
end

Instance Method Details

#render(output_path) ⇒ Object



217
218
219
220
221
# File 'lib/tui_td/screenshot.rb', line 217

def render(output_path)
  image = build_image
  image.save(output_path)
  output_path
end

#to_blobObject

Return the rendered PNG as a binary string (for in-memory use, e.g. video recording).



224
225
226
# File 'lib/tui_td/screenshot.rb', line 224

def to_blob
  build_image.to_blob
end