# frozen_string_literal: false # Core SVG data for the file headers. # # This class should never need to be called directly. # @private class USPSFlags class Core class Headers def initialize(width: nil, height: nil, pennant: false, scale: nil, title: 'USPS Flag') @width = width @height = height @title = title scale ||= 3 @generated_at = Time.now.strftime('%Y%m%d.%H%S%z') if @width.nil? || @height.nil? no_sizes(scale, pennant) else set_view_size(width, height, scale) end end def svg svg = +'' svg << header_top svg << trademark unless @title == 'US Ensign' svg << '' svg end private def no_sizes(scale, pennant) @width = USPSFlags::Config::BASE_FLY / scale @height = (@width * Rational(2, 3)).to_i @view_width = USPSFlags::Config::BASE_FLY @view_height = USPSFlags::Config::BASE_HOIST set_pennant_height(@height) if pennant end def set_pennant_height(height) @height = height / 4 @view_height = USPSFlags::Config::BASE_HOIST / 4 end def set_view_size(width, height, scale) @view_width = width * scale @view_height = height * scale end def header_top <<~SVG #{@title} Julian Fiander #{@generated_at} SVG end def trademark <<~SVG This image is a registered trademark of United States Power Squadrons. https://www.usps.org/images/secretary/itcom/trademark.pdf SVG end end end end