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, left, top, &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(left, 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