Sha256: f6b040b528421fd72abe453a66941285530451060d1da6b93b330f23c714ef12

Contents?: true

Size: 1.78 KB

Versions: 31

Compression:

Stored size: 1.78 KB

Contents

require 'glimmer/swt/swt_proxy'
require 'glimmer/swt/display_proxy'

module Glimmer
  module SWT
    # Proxy for org.eclipse.swt.graphics.Color
    #
    # Invoking `#swt_color` returns the SWT color object wrapped by this proxy
    #
    # Follows the Proxy Design Pattern
    class ColorProxy
      include_package 'org.eclipse.swt.graphics'

      # Initializes a proxy for an SWT Color object
      #
      # Takes a standard color single argument, rgba 3 args, or rgba 4 args
      #
      # A standard color is a string/symbol representing one of the
      # SWT.COLOR_*** constants like SWT.COLOR_RED, but in underscored string
      # format (e.g :color_red).
      # Glimmer can also accept standard color names without the color_ prefix,
      # and it will automatically figure out the SWT.COLOR_*** constant
      # (e.g. :red)
      #
      # rgb is 3 arguments representing Red, Green, Blue numeric values
      #
      # rgba is 4 arguments representing Red, Green, Blue, and Alpha numeric values
      #
      def initialize(*args)
        @args = args
      end

      def swt_color
        unless @swt_color
          case @args.size
          when 1
            if @args.first.is_a?(String) || @args.first.is_a?(Symbol)
              standard_color = @args.first
              standard_color = "color_#{standard_color}".to_sym unless standard_color.to_s.downcase.include?('color_')
              @swt_color = DisplayProxy.instance.swt_display.getSystemColor(SWTProxy[standard_color])
            else
              @swt_color = @args.first
            end
          when 3..4
            red, green, blue, alpha = @args
            @swt_color = Color.new(DisplayProxy.instance.swt_display, *[red, green, blue, alpha].compact)
          end
        end
        @swt_color
      end
    end
  end
end

Version data entries

31 entries across 31 versions & 2 rubygems

Version Path
glimmer-dsl-swt-0.3.1 lib/glimmer/swt/color_proxy.rb
glimmer-dsl-swt-0.3.0 lib/glimmer/swt/color_proxy.rb
glimmer-dsl-swt-0.2.4 lib/glimmer/swt/color_proxy.rb
glimmer-dsl-swt-0.2.3 lib/glimmer/swt/color_proxy.rb
glimmer-dsl-swt-0.2.2 lib/glimmer/swt/color_proxy.rb
glimmer-dsl-swt-0.2.1 lib/glimmer/swt/color_proxy.rb
glimmer-dsl-swt-0.2.0 lib/glimmer/swt/color_proxy.rb
glimmer-dsl-swt-0.1.3 lib/glimmer/swt/color_proxy.rb
glimmer-dsl-swt-0.1.2 lib/glimmer/swt/color_proxy.rb
glimmer-dsl-swt-0.1.1 lib/glimmer/swt/color_proxy.rb
glimmer-dsl-swt-0.1.0 lib/glimmer/swt/color_proxy.rb
glimmer-0.8.2 lib/glimmer/swt/color_proxy.rb
glimmer-0.8.1 lib/glimmer/swt/color_proxy.rb
glimmer-0.8.0 lib/glimmer/swt/color_proxy.rb
glimmer-0.7.8 lib/glimmer/swt/color_proxy.rb
glimmer-0.7.7 lib/glimmer/swt/color_proxy.rb
glimmer-0.7.6 lib/glimmer/swt/color_proxy.rb
glimmer-0.7.5 lib/glimmer/swt/color_proxy.rb
glimmer-0.7.4 lib/glimmer/swt/color_proxy.rb
glimmer-0.7.3 lib/glimmer/swt/color_proxy.rb