Class: TUITD::Screenshot
- Inherits:
-
Object
- Object
- TUITD::Screenshot
- Includes:
- 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], "┍" => [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, :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
Constants included from ANSIUtils
ANSIUtils::ANSI_INDEX, ANSIUtils::ANSI_RGB, ANSIUtils::CUBE, ANSIUtils::DEFAULT_BG, ANSIUtils::DEFAULT_FG
Instance Method Summary collapse
-
#initialize(state) ⇒ Screenshot
constructor
A new instance of Screenshot.
- #render(output_path) ⇒ Object
Methods included from ANSIUtils
#_dig, #resolve_color, #xterm_256
Constructor Details
#initialize(state) ⇒ Screenshot
Returns a new instance of Screenshot.
203 204 205 206 207 208 |
# File 'lib/tui_td/screenshot.rb', line 203 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
210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 |
# File 'lib/tui_td/screenshot.rb', line 210 def render(output_path) width = @cols * CELL_W height = @rows * CELL_H image = ChunkyPNG::Image.new(width, height, ChunkyPNG::Color::BLACK) @grid.each_with_index do |row, ri| next unless row row.each_with_index do |cell, ci| next unless cell render_cell(image, ri, ci, cell) end end image.save(output_path) output_path end |