Sha256: 5ebfc75f811221477cd9c0d603dbeba2fa55d2c39f3a0bd9d7040f435d1c82f5

Contents?: true

Size: 1.88 KB

Versions: 1

Compression:

Stored size: 1.88 KB

Contents

module Vedeu

  module Presentation

    # Provides colour related presentation behaviour.
    #
    # @api private
    #
    module Colour

      include Vedeu::Repositories::Parent
      include Vedeu::Presentation::Colour::Background
      include Vedeu::Presentation::Colour::Foreground

      # @return [Vedeu::Colours::Colour]
      def colour
        @_colour ||= if colour?
                       Vedeu::Colours::Colour.coerce(@colour)

                     elsif parent_colour?
                       Vedeu::Colours::Colour.coerce(parent_colour)

                     elsif named_colour?
                       Vedeu::Colours::Colour.coerce(named_colour)

                     elsif self.is_a?(Vedeu::Views::Char) && name
                       # Currently used by Vedeu::Output::Viewport
                       Vedeu::Colours::Colour.coerce(interface.colour)

                     else
                       Vedeu::Colours::Colour.new

                     end
      end

      # Allows the setting of the model's colour by coercing the given
      # value into a Vedeu::Colours::Colour.
      #
      # @return [Vedeu::Colours::Colour]
      def colour=(value)
        @_colour = @colour = Vedeu::Colours::Colour.coerce(value)
      end

      # @return [Boolean]
      def colour?
        present?(@colour)
      end

      private

      # @return [Vedeu::Colours::Colour]
      def named_colour
        Vedeu.interfaces.by_name(name).colour
      end

      # @return [Boolean]
      def named_colour?
        return false if self.is_a?(Vedeu::Interfaces::Interface)

        present?(name) && Vedeu.interfaces.registered?(name)
      end

      # @return [Vedeu::Colours::Colour]
      def parent_colour
        parent.colour
      end

      # @return [Boolean]
      def parent_colour?
        present?(parent) && parent.respond_to?(:colour?)
      end

    end # Colour

  end # Presentation

end # Vedeu

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
vedeu-0.8.0 lib/vedeu/presentation/colour.rb