Sha256: 9ea9226a9652414938139e2c8fab11a611e5c55ae14b9a003caa6dcb86784a6f
Contents?: true
Size: 1.75 KB
Versions: 2
Compression:
Stored size: 1.75 KB
Contents
require 'forwardable' require 'squib/graphics/gradient_regex' module Squib module Graphics # Wrapper class for the Cairo context. Private. class CairoContextWrapper extend Forwardable # :nodoc: # @api private attr_accessor :cairo_cxt # :nodoc: # @api private def initialize(cairo_cxt) @cairo_cxt = cairo_cxt end def_delegators :cairo_cxt, :save, :set_source_color, :paint, :restore, :translate, :rotate, :move_to, :update_pango_layout, :width, :height, :show_pango_layout, :rounded_rectangle, :set_line_width, :stroke, :fill, :set_source, :scale, :render_rsvg_handle, :circle, :triangle, :line_to, :operator=, :show_page, :clip, :transform, :mask, :create_pango_layout, :antialias=, :curve_to, :matrix, :matrix=, :identity_matrix # :nodoc: # @api private def set_source_squibcolor(arg) if match = arg.match(LINEAR_GRADIENT) x1, y1, x2, y2 = match.captures linear = Cairo::LinearPattern.new(x1.to_f, y1.to_f, x2.to_f, y2.to_f) arg.scan(STOPS).each do |color, offset| linear.add_color_stop(offset.to_f, color) end @cairo_cxt.set_source(linear) elsif match = arg.match(RADIAL_GRADIENT) x1, y1, r1, x2, y2, r2 = match.captures linear = Cairo::RadialPattern.new(x1.to_f, y1.to_f, r1.to_f, x2.to_f, y2.to_f, r2.to_f) arg.scan(STOPS).each do |color, offset| linear.add_color_stop(offset.to_f, color) end @cairo_cxt.set_source(linear) else @cairo_cxt.set_source_color(arg) end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
squib-0.5.1 | lib/squib/graphics/cairo_context_wrapper.rb |
squib-0.5.0 | lib/squib/graphics/cairo_context_wrapper.rb |