Class: Aspera::Preview::Backend::Base

Inherits:
Object
  • Object
show all
Defined in:
lib/aspera/preview/terminal.rb

Overview

provides image pixels scaled to terminal

Direct Known Subclasses

ChunkyPNG, RMagick

Instance Method Summary collapse

Constructor Details

#initialize(reserve:, double:, font_ratio:) ⇒ Base



16
17
18
19
20
# File 'lib/aspera/preview/terminal.rb', line 16

def initialize(reserve:, double:, font_ratio:)
  @reserve = reserve
  @height_ratio = double ? 2.0 : 1.0
  @font_ratio = font_ratio
end

Instance Method Details

#terminal_scaling(rows, columns) ⇒ Object

compute scaling to fit terminal



23
24
25
26
27
28
# File 'lib/aspera/preview/terminal.rb', line 23

def terminal_scaling(rows, columns)
  (term_rows, term_columns) = IO.console.winsize || [24, 80]
  term_rows = [term_rows - @reserve, 2].max
  fit_term_ratio = [term_rows.to_f * @font_ratio / rows.to_f, term_columns.to_f / columns.to_f].min
  [(columns * fit_term_ratio).to_i, (rows * fit_term_ratio * @height_ratio / @font_ratio).to_i]
end