Class: Squib::Graphics::CairoContextWrapper Private
- Inherits:
-
Object
- Object
- Squib::Graphics::CairoContextWrapper
- Extended by:
- Forwardable
- Defined in:
- lib/squib/graphics/cairo_context_wrapper.rb
Overview
This class is part of a private API. You should avoid using this class if possible, as it may be removed or be changed in the future.
Wrapper class for the Cairo context. Private.
Instance Attribute Summary collapse
-
#cairo_cxt ⇒ Object
private
:nodoc:.
Instance Method Summary collapse
-
#fancy_stroke(draw) ⇒ Object
private
Convenience method for a common task.
-
#fill_n_stroke(draw) ⇒ Object
private
Convenience method for a common task.
-
#flip(vertical, horizontal, x, y) ⇒ Object
private
Flip either vertical or horizontal depending From the cairo website: cairographics.org/matrix_transform/ cairo.Matrix(fx, 0, 0, fy, cx*(1-fx), cy*(fy-1)) fx/fy = 1 means ‘no flip’, fx/fy = -1 are used for horizontal/vertical flip.
-
#initialize(cairo_cxt) ⇒ CairoContextWrapper
constructor
private
:nodoc:.
- #rotate_about(x, y, angle) ⇒ Object private
-
#set_source_squibcolor(arg) ⇒ Object
private
:nodoc:.
- #stroke_n_fill(draw) ⇒ Object private
Constructor Details
#initialize(cairo_cxt) ⇒ CairoContextWrapper
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
:nodoc:
17 18 19 |
# File 'lib/squib/graphics/cairo_context_wrapper.rb', line 17 def initialize(cairo_cxt) @cairo_cxt = cairo_cxt end |
Instance Attribute Details
#cairo_cxt ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
:nodoc:
13 14 15 |
# File 'lib/squib/graphics/cairo_context_wrapper.rb', line 13 def cairo_cxt @cairo_cxt end |
Instance Method Details
#fancy_stroke(draw) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Convenience method for a common task
84 85 86 87 88 89 90 91 |
# File 'lib/squib/graphics/cairo_context_wrapper.rb', line 84 def fancy_stroke(draw) set_source_squibcolor draw.stroke_color set_line_width draw.stroke_width set_line_join draw.join set_line_cap draw.cap set_dash draw.dash stroke end |
#fill_n_stroke(draw) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Convenience method for a common task
58 59 60 61 62 63 64 65 66 67 68 |
# File 'lib/squib/graphics/cairo_context_wrapper.rb', line 58 def fill_n_stroke(draw) return stroke_n_fill(draw) if draw.stroke_strategy == :stroke_first set_source_squibcolor draw.fill_color fill_preserve set_source_squibcolor draw.stroke_color set_line_width draw.stroke_width set_line_join draw.join set_line_cap draw.cap set_dash draw.dash stroke end |
#flip(vertical, horizontal, x, y) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
Flip either vertical or horizontal depending From the cairo website: cairographics.org/matrix_transform/ cairo.Matrix(fx, 0, 0,
fy, cx*(1-fx), cy*(fy-1))
fx/fy = 1 means ‘no flip’, fx/fy = -1 are used for horizontal/vertical flip
104 105 106 107 108 109 |
# File 'lib/squib/graphics/cairo_context_wrapper.rb', line 104 def flip(vertical, horizontal, x, y) v = vertical ? -1.0 : 1.0 h = horizontal ? -1.0 : 1.0 transform Cairo::Matrix.new(v, 0.0, 0.0, h, x * (1 - v), y * (1 - h)) end |
#rotate_about(x, y, angle) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
93 94 95 96 97 |
# File 'lib/squib/graphics/cairo_context_wrapper.rb', line 93 def rotate_about(x, y, angle) translate(x, y) rotate(angle) translate(-x, -y) end |
#set_source_squibcolor(arg) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
:nodoc:
32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 |
# File 'lib/squib/graphics/cairo_context_wrapper.rb', line 32 def set_source_squibcolor(arg) raise 'nil is not a valid color' if arg.nil? 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 linear.matrix = matrix # match the coordinate systems - see bug 127 @cairo_cxt.set_source(linear) elsif match = arg.match(RADIAL_GRADIENT) x1, y1, r1, x2, y2, r2 = match.captures radial = Cairo::RadialPattern.new(x1.to_f, y1.to_f, r1.to_f, x2.to_f, y2.to_f, r2.to_f) radial.matrix = matrix # match the coordinate systems - see bug 127 arg.scan(STOPS).each do |color, offset| radial.add_color_stop(offset.to_f, color) end @cairo_cxt.set_source(radial) else @cairo_cxt.set_source_color(arg) end end |
#stroke_n_fill(draw) ⇒ Object
This method is part of a private API. You should avoid using this method if possible, as it may be removed or be changed in the future.
70 71 72 73 74 75 76 77 78 79 80 |
# File 'lib/squib/graphics/cairo_context_wrapper.rb', line 70 def stroke_n_fill(draw) return fill_n_stroke(draw) if draw.stroke_strategy == :fill_first set_source_squibcolor draw.stroke_color set_line_width draw.stroke_width set_line_join draw.join set_line_cap draw.cap set_dash draw.dash stroke_preserve set_source_squibcolor draw.fill_color fill end |