Sha256: 05f241a9426644a1f68d9bd6b73dba512fedb99b041edbba161ee1bd81056485

Contents?: true

Size: 1.9 KB

Versions: 2

Compression:

Stored size: 1.9 KB

Contents

module Vedeu

  module Clear

    # Clear the named interface.
    #
    # @api private
    class NamedInterface

      class << self

        # @return [void]
        # @see #initialize
        def render(name)
          new(name).render
        end
        alias_method :clear_by_name, :render
        alias_method :by_name, :render

      end # Eigenclass

      # Return a new instance of Vedeu::Clear::NamedInterface.
      #
      # @param name [String] The name of the interface to clear.
      # @return [Vedeu::Clear::NamedInterface]
      def initialize(name)
        @name = name
      end

      # @return [void]
      def render
        return [] unless interface.visible?

        output
      end

      protected

      # @!attribute [r] name
      # @return [String]
      attr_reader :name

      private

      # @see Vedeu::Geometries#by_name
      def geometry
        @geometry ||= Vedeu.geometries.by_name(name)
      end

      # @see Vedeu::Interfaces#by_name
      def interface
        @interface ||= Vedeu.interfaces.by_name(name)
      end

      # For each visible line of the interface, set the foreground and
      # background colours to those specified when the interface was defined,
      # then starting write space characters over the area which the interface
      # occupies.
      #
      # @return [Array<Array<Vedeu::Char>>]
      def output
        Vedeu.timer("Clearing: '#{name}'") do
          @y      = geometry.y
          @x      = geometry.x
          @width  = geometry.width
          @height = geometry.height
          @colour = interface.colour

          @clear ||= Array.new(@height) do |iy|
            Array.new(@width) do |ix|
              Vedeu::Char.new(value:    ' ',
                              colour:   @colour,
                              position: [@y + iy, @x + ix])
            end
          end
        end
      end

    end # NamedInterface

  end # Clear

end # Vedeu

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
vedeu-0.4.53 lib/vedeu/output/clear/named_interface.rb
vedeu-0.4.52 lib/vedeu/output/clear/named_interface.rb