Sha256: 455dedd306abfc71354f39443a079fbbc5bcb302843eb32c48d76fc7766331f3

Contents?: true

Size: 1.05 KB

Versions: 1

Compression:

Stored size: 1.05 KB

Contents

require 'whirled_peas/utils/formatted_string'
require 'whirled_peas/utils/title_font'

require_relative 'painter'
require_relative 'text_dimensions'

module WhirledPeas
  module Graphics
    class TextPainter < Painter
      attr_reader :content

      def paint(canvas, &block)
        return unless canvas.writable?
        formatting = [*settings.color, *settings.bg_color]
        formatting << Utils::Ansi::BOLD if settings.bold?
        if settings.underline? && settings.title_font.nil?
          formatting << Utils::Ansi::UNDERLINE
        end
        content.each.with_index do |line, index|
          canvas.stroke(canvas.start_left, canvas.start_top + index, line, formatting, &block)
        end
      end

      def dimensions
        TextDimensions.new(content)
      end

      def content=(content)
        @content = if settings.title_font
          Utils::TitleFont.to_s(
            content, settings.title_font
          ).split("\n")
        else
          content.split("\n")
        end
      end
    end
    private_constant :TextPainter
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
whirled_peas-0.6.0 lib/whirled_peas/graphics/text_painter.rb