Sha256: 577c4f6a5905842362067738fac77327572a356fa962980236c503b1dd692f80

Contents?: true

Size: 1.18 KB

Versions: 1

Compression:

Stored size: 1.18 KB

Contents

class Shoes
  module Swt
    class TextBlockPainter
      include ::Swt::Events::PaintListener
      include Common::Resource

      attr_reader :app
      def initialize(dsl)
        @dsl = dsl
        @opts = @dsl.opts
        @app = @dsl.app.gui
      end

      def paintControl(paint_event)
        gcs_reset(paint_event.gc)
        return if @dsl.hidden?

        draw_layouts(paint_event.gc)
        draw_text_cursor
      end

      def draw_layouts(graphic_context)
        layouts = FittedTextLayoutCollection.new(@dsl.gui.fitted_layouts,
                                                 default_text_styles)
        layouts.paint_control(@dsl, graphic_context)
      end

      def draw_text_cursor
        TextBlockCursorPainter.new(@dsl, @dsl.gui.fitted_layouts).draw
      end

      private

      def default_text_styles
        {
          :fg          => @opts[:fg],
          :bg          => @opts[:bg],
          :strikecolor => @opts[:strikecolor],
          :undercolor  => @opts[:undercolor],
          :font_detail => {
            :name   => @dsl.font,
            :size   => @dsl.font_size,
            :styles => [::Swt::SWT::NORMAL]
          }
        }
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

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