Sha256: 563459c49924ac0ed4f94301f1b79a11fdb0e9b17961b8575d5f8c0579ba3aff

Contents?: true

Size: 1.33 KB

Versions: 1

Compression:

Stored size: 1.33 KB

Contents

module CyberarmEngine
  class Element
    class Progress < Element
      def initialize(options = {}, block = nil)
        super(options, block)

        @fraction_background = Background.new(background: @style.fraction_background)
        self.value = options[:fraction] || 0.0
      end

      def render
        @fraction_background.draw
      end

      def recalculate
        _width = dimensional_size(@style.width, :width)
        _height = dimensional_size(@style.height, :height)
        @width = _width
        @height = _height

        update_background
      end

      def update_background
        super

        @fraction_background.x = @style.border_thickness_left + @style.padding_left + @x
        @fraction_background.y = @style.border_thickness_top + @style.padding_top + @y
        @fraction_background.z = @z
        @fraction_background.width = @width * @fraction
        @fraction_background.height = @height

        @fraction_background.background = @style.fraction_background
      end

      def value
        @fraction
      end

      def value=(decimal)
        raise "value must be number" unless decimal.is_a?(Numeric)

        @fraction = decimal.clamp(0.0, 1.0)
        update_background

        publish(:changed, @fraction)
        @fraction
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
cyberarm_engine-0.19.1 lib/cyberarm_engine/ui/elements/progress.rb