Class: VectorSalad::StandardShapes::Clip
- Inherits:
-
BasicShape
- Object
- BasicShape
- VectorSalad::StandardShapes::Clip
- Includes:
- VectorSalad::StandardShapes
- Defined in:
- lib/vector_salad/standard_shapes/clip.rb
Overview
Perform a clipping operation on the contained paths or shapes. It's easier to use one of the subclasses; (see Difference, Intersection, Union, Exclusion).
Direct Known Subclasses
Instance Attribute Summary (collapse)
-
- (Object) options
inherited
from BasicShape
Returns the value of attribute options.
Instance Method Summary (collapse)
-
- (Object) canvas
The canvas the clipping is done on.
-
- (MultiPath) initialize(operation, **options, &block)
constructor
The first path is used as the subject, subsequent paths are applied to the first using the specified operation.
-
- (Object) to_path
Convert the shape to a path.
Constructor Details
- (MultiPath) initialize(operation, **options, &block)
The first path is used as the subject, subsequent paths are applied to the first using the specified operation.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 |
# File 'lib/vector_salad/standard_shapes/clip.rb', line 20 def initialize(operation, **, &block) instance_eval(&block) # canvas is populated clipper = Clipper::Clipper.new i = 0 canvas.each do |shape| method = i == 0 ? "subject" : "clip" path = shape.to_simple_path.to_a if path[0][0].instance_of? Array # MultiPath clipper.send("add_#{method}_polygons".to_sym, path) else # Path clipper.send("add_#{method}_polygon".to_sym, path) end i += 1 end @path = MultiPath.new( *clipper.send(operation, :non_zero, :non_zero), ** ) end |
Dynamic Method Handling
This class handles dynamic methods through the method_missing method in the class VectorSalad::DSL
Instance Attribute Details
- (Object) options Originally defined in class BasicShape
Returns the value of attribute options
Instance Method Details
- (Object) canvas
The canvas the clipping is done on.
43 44 45 |
# File 'lib/vector_salad/standard_shapes/clip.rb', line 43 def canvas @canvas ||= VectorSalad::Canvas.new end |
- (Object) to_path
Convert the shape to a path
48 49 50 |
# File 'lib/vector_salad/standard_shapes/clip.rb', line 48 def to_path @path end |