Sha256: bc56141662da7cf34e14cf1acfdec6f8dc3d4abe6829aa93c09060e7f62e3af1

Contents?: true

Size: 1.54 KB

Versions: 1

Compression:

Stored size: 1.54 KB

Contents

class Shoes
  module Swt
    class Oval
      include Common::Fill
      include Common::Stroke
      include Common::Clickable
      include Common::PainterUpdatesPosition
      include Common::Toggle
      include Common::Clear
      include ::Shoes::BackendDimensionsDelegations

      attr_reader :dsl, :app, :transform, :painter, :container


      # @param [Shoes::Oval] dsl the dsl object to provide gui for
      # @param [Shoes::Swt::App] app the app
      # @param [Hash] opts options
      def initialize(dsl, app, &blk)
        @dsl = dsl
        @app = app
        @container = @app.real

        @painter = Painter.new(self)
        @app.add_paint_listener @painter
        clickable blk if blk
      end

      def update_position
        # No-op, since it has its own painter
      end

      class Painter < Common::Painter
        def clipping
          clipping = ::Swt::Path.new(Shoes.display)
          clipping.add_arc(@obj.element_left, @obj.element_top,
                           @obj.element_width, @obj.element_height, 0, 360)
          clipping
        end

        def fill(graphics_context)
          graphics_context.fill_oval(@obj.element_left, @obj.element_top,
                                     @obj.element_width, @obj.element_height)
        end

        def draw(graphics_context)
          sw = graphics_context.get_line_width
          graphics_context.draw_oval(@obj.element_left+sw/2, @obj.element_top+sw/2,
                                     @obj.element_width-sw, @obj.element_height-sw)
        end
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
shoes-4.0.0.pre1 lib/shoes/swt/oval.rb