vector_salad 0.0.7 → 0.0.8
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.gitignore +1 -1
- data/.yardopts +1 -0
- data/README.md +6 -5
- data/examples/birthday.png +0 -0
- data/examples/birthday.svg +604 -604
- data/examples/bunny_card.png +0 -0
- data/examples/bunny_card.svg +110 -110
- data/examples/circles.png +0 -0
- data/examples/circles.svg +2 -2
- data/examples/rects.rb +4 -4
- data/examples/squares.png +0 -0
- data/examples/squares.rb +4 -4
- data/examples/squares.svg +6 -6
- data/lib/contracts_contracts.rb +4 -4
- data/lib/vector_salad/canvas.rb +17 -0
- data/lib/vector_salad/dsl.rb +29 -28
- data/lib/vector_salad/export_with_magic.rb +1 -0
- data/lib/vector_salad/exporters/base_exporter.rb +1 -0
- data/lib/vector_salad/exporters/svg_exporter.rb +30 -22
- data/lib/vector_salad/interpolate.rb +13 -12
- data/lib/vector_salad/magic.rb +4 -3
- data/lib/vector_salad/mixins/at.rb +1 -0
- data/lib/vector_salad/mixins/mixins.rb +5 -0
- data/lib/vector_salad/monkeypatches.rb +4 -0
- data/lib/vector_salad/shape_proxy.rb +1 -0
- data/lib/vector_salad/standard_shapes/basic_shape.rb +25 -17
- data/lib/vector_salad/standard_shapes/circle.rb +9 -3
- data/lib/vector_salad/standard_shapes/clip.rb +10 -9
- data/lib/vector_salad/standard_shapes/custom.rb +23 -4
- data/lib/vector_salad/standard_shapes/difference.rb +5 -6
- data/lib/vector_salad/standard_shapes/exclusion.rb +5 -6
- data/lib/vector_salad/standard_shapes/flip.rb +8 -2
- data/lib/vector_salad/standard_shapes/heart.rb +3 -1
- data/lib/vector_salad/standard_shapes/hexagon.rb +3 -2
- data/lib/vector_salad/standard_shapes/intersection.rb +5 -6
- data/lib/vector_salad/standard_shapes/iso_tri.rb +3 -2
- data/lib/vector_salad/standard_shapes/jitter.rb +10 -7
- data/lib/vector_salad/standard_shapes/move.rb +7 -1
- data/lib/vector_salad/standard_shapes/multi_path.rb +17 -6
- data/lib/vector_salad/standard_shapes/n.rb +6 -3
- data/lib/vector_salad/standard_shapes/oval.rb +3 -1
- data/lib/vector_salad/standard_shapes/path.rb +28 -14
- data/lib/vector_salad/standard_shapes/pentagon.rb +2 -1
- data/lib/vector_salad/standard_shapes/polygon.rb +3 -1
- data/lib/vector_salad/standard_shapes/rect.rb +3 -1
- data/lib/vector_salad/standard_shapes/rotate.rb +3 -5
- data/lib/vector_salad/standard_shapes/scale.rb +8 -7
- data/lib/vector_salad/standard_shapes/square.rb +6 -21
- data/lib/vector_salad/standard_shapes/standard_shapes.rb +6 -0
- data/lib/vector_salad/standard_shapes/transform.rb +6 -5
- data/lib/vector_salad/standard_shapes/triangle.rb +3 -2
- data/lib/vector_salad/standard_shapes/union.rb +5 -6
- data/lib/vector_salad/version.rb +1 -1
- data/lib/vector_salad.rb +1 -1
- metadata +4 -2
@@ -2,10 +2,11 @@ require "vector_salad/standard_shapes/polygon"
|
|
2
2
|
|
3
3
|
module VectorSalad
|
4
4
|
module StandardShapes
|
5
|
+
# Regular pentagon shape.
|
5
6
|
class Pentagon < Polygon
|
6
7
|
# Create a regular pentagon.
|
7
8
|
#
|
8
|
-
#
|
9
|
+
# @example
|
9
10
|
# new(100)
|
10
11
|
def initialize(radius, **options)
|
11
12
|
super(5, radius, **options)
|
@@ -4,13 +4,14 @@ require "vector_salad/mixins/at"
|
|
4
4
|
|
5
5
|
module VectorSalad
|
6
6
|
module StandardShapes
|
7
|
+
# Regular polygon shape.
|
7
8
|
class Polygon < BasicShape
|
8
9
|
include VectorSalad::Mixins::At
|
9
10
|
attr_reader :sides
|
10
11
|
|
11
12
|
# Create a regular polygon with a specified number of sides.
|
12
13
|
#
|
13
|
-
#
|
14
|
+
# @example
|
14
15
|
# new(6, 100)
|
15
16
|
Contract PolySides, Pos, {} => Polygon
|
16
17
|
def initialize(sides, radius, **options)
|
@@ -20,6 +21,7 @@ module VectorSalad
|
|
20
21
|
self
|
21
22
|
end
|
22
23
|
|
24
|
+
# Convert the shape to a path
|
23
25
|
def to_path
|
24
26
|
nodes = []
|
25
27
|
angle = 2 * Math::PI / @sides
|
@@ -4,13 +4,14 @@ require "vector_salad/mixins/at"
|
|
4
4
|
|
5
5
|
module VectorSalad
|
6
6
|
module StandardShapes
|
7
|
+
# Rectangle shape.
|
7
8
|
class Rect < BasicShape
|
8
9
|
include VectorSalad::Mixins::At
|
9
10
|
attr_reader :width, :height
|
10
11
|
|
11
12
|
# Create a rectangle with specified width and height.
|
12
13
|
#
|
13
|
-
#
|
14
|
+
# @example
|
14
15
|
# new(100, 200)
|
15
16
|
Contract Pos, Pos, {} => Rect
|
16
17
|
def initialize(width, height, **options)
|
@@ -20,6 +21,7 @@ module VectorSalad
|
|
20
21
|
self
|
21
22
|
end
|
22
23
|
|
24
|
+
# Convert the shape to a path
|
23
25
|
def to_path
|
24
26
|
Path.new(
|
25
27
|
N.n(@x, @y),
|
@@ -1,12 +1,10 @@
|
|
1
|
-
require
|
1
|
+
require "vector_salad/standard_shapes/transform"
|
2
2
|
|
3
3
|
module VectorSalad
|
4
4
|
module StandardShapes
|
5
|
+
# Rotates the contained shapes by the specified angle about the origin.
|
5
6
|
class Rotate < Transform
|
6
|
-
#
|
7
|
-
#
|
8
|
-
# Examples:
|
9
|
-
#
|
7
|
+
# @example
|
10
8
|
# rotate(45) do
|
11
9
|
# triangle(30, at: [50, -50])
|
12
10
|
# pentagon(40, at: [50, -100])
|
@@ -1,24 +1,25 @@
|
|
1
|
-
require
|
1
|
+
require "vector_salad/standard_shapes/transform"
|
2
2
|
|
3
3
|
module VectorSalad
|
4
4
|
module StandardShapes
|
5
|
+
# Scale the contained shapes by multiplier about the origin.
|
5
6
|
class Scale < Transform
|
6
|
-
#
|
7
|
-
#
|
8
|
-
# to stretch or squash the axies.
|
9
|
-
# @param x_multiplier 1 is no change, 2 is double size, 0.5 is half, etc.
|
10
|
-
#
|
11
|
-
# Examples:
|
7
|
+
# Supply just 1 multiplier to scale evenly,
|
8
|
+
# or x and y multipliers to stretch or squash the axies.
|
12
9
|
#
|
10
|
+
# @example
|
13
11
|
# scale(2) do
|
14
12
|
# triangle(30, at: [50, -50])
|
15
13
|
# pentagon(40, at: [50, -100])
|
16
14
|
# end
|
17
15
|
#
|
16
|
+
# @example Uneven scaling
|
18
17
|
# scale(2, 0.5) do
|
19
18
|
# triangle(30, at: [50, -50])
|
20
19
|
# pentagon(40, at: [50, -100])
|
21
20
|
# end
|
21
|
+
#
|
22
|
+
# @param x_multiplier 1 is no change, 2 is double size, 0.5 is half, etc.
|
22
23
|
Contract Coord, Coord, { canvas: VectorSalad::Canvas }, Proc => Any
|
23
24
|
def initialize(x_multiplier,
|
24
25
|
y_multiplier = x_multiplier,
|
@@ -1,34 +1,19 @@
|
|
1
|
-
require "vector_salad/standard_shapes/
|
2
|
-
require "vector_salad/standard_shapes/n"
|
1
|
+
require "vector_salad/standard_shapes/rect"
|
3
2
|
require "vector_salad/mixins/at"
|
4
3
|
|
5
4
|
module VectorSalad
|
6
5
|
module StandardShapes
|
7
|
-
|
8
|
-
|
9
|
-
attr_reader :size
|
10
|
-
|
6
|
+
# Square shape with equal width and height.
|
7
|
+
class Square < Rect
|
11
8
|
# Create a square with equal width and height.
|
12
9
|
#
|
13
|
-
#
|
14
|
-
# new(100)
|
10
|
+
# @example Square with sides 100x100
|
11
|
+
# new(100)
|
15
12
|
Contract Pos, {} => Square
|
16
13
|
def initialize(size, **options)
|
17
|
-
|
18
|
-
@options = options
|
19
|
-
@x, @y = 0, 0
|
14
|
+
super(size, size, **options)
|
20
15
|
self
|
21
16
|
end
|
22
|
-
|
23
|
-
def to_path
|
24
|
-
Path.new(
|
25
|
-
N.n(@x, @y),
|
26
|
-
N.n(@x, @y + @size),
|
27
|
-
N.n(@x + @size, @y + @size),
|
28
|
-
N.n(@x + @size, @y),
|
29
|
-
**@options
|
30
|
-
)
|
31
|
-
end
|
32
17
|
end
|
33
18
|
end
|
34
19
|
end
|
@@ -1,12 +1,13 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "contracts"
|
2
|
+
require "contracts_contracts"
|
3
3
|
|
4
|
-
require
|
5
|
-
require
|
6
|
-
require
|
4
|
+
require "vector_salad/dsl"
|
5
|
+
require "vector_salad/canvas"
|
6
|
+
require "vector_salad/standard_shapes/path"
|
7
7
|
|
8
8
|
module VectorSalad
|
9
9
|
module StandardShapes
|
10
|
+
# @api private
|
10
11
|
class Transform
|
11
12
|
include VectorSalad::DSL
|
12
13
|
include VectorSalad::StandardShapes
|
@@ -2,10 +2,11 @@ require "vector_salad/standard_shapes/polygon"
|
|
2
2
|
|
3
3
|
module VectorSalad
|
4
4
|
module StandardShapes
|
5
|
+
# Equilateral triangle shape.
|
5
6
|
class Triangle < Polygon
|
6
|
-
# Create
|
7
|
+
# Create a new equilateral triangle.
|
7
8
|
#
|
8
|
-
#
|
9
|
+
# @example
|
9
10
|
# new(100)
|
10
11
|
def initialize(radius, **options)
|
11
12
|
super(3, radius, **options)
|
@@ -1,21 +1,20 @@
|
|
1
|
-
require
|
2
|
-
require
|
1
|
+
require "vector_salad/standard_shapes/clip"
|
2
|
+
require "vector_salad/standard_shapes/multi_path"
|
3
3
|
|
4
4
|
module VectorSalad
|
5
5
|
module StandardShapes
|
6
|
+
# Unite the contained shapes.
|
6
7
|
class Union < Clip
|
7
|
-
# Unite paths.
|
8
8
|
# The first path is used as the subject, subsequent paths are united
|
9
9
|
# with the first.
|
10
10
|
#
|
11
|
-
#
|
12
|
-
#
|
11
|
+
# @example
|
13
12
|
# Union.new do
|
14
13
|
# canvas << Path.new([0,0], [90,90], [0,90])
|
15
14
|
# canvas << Path.new([50,0], [95,0], [50, 70])
|
16
15
|
# end
|
17
16
|
#
|
18
|
-
#
|
17
|
+
# @example Using DSL:
|
19
18
|
# union do
|
20
19
|
# path([0,0], [90,90], [0,90])
|
21
20
|
# path([50,0], [95,0], [50, 70])
|
data/lib/vector_salad/version.rb
CHANGED
data/lib/vector_salad.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: vector_salad
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Simon George
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-09-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: pretty_backtrace
|
@@ -208,6 +208,7 @@ files:
|
|
208
208
|
- lib/vector_salad/interpolate.rb
|
209
209
|
- lib/vector_salad/magic.rb
|
210
210
|
- lib/vector_salad/mixins/at.rb
|
211
|
+
- lib/vector_salad/mixins/mixins.rb
|
211
212
|
- lib/vector_salad/monkeypatches.rb
|
212
213
|
- lib/vector_salad/shape_proxy.rb
|
213
214
|
- lib/vector_salad/standard_shapes/basic_shape.rb
|
@@ -233,6 +234,7 @@ files:
|
|
233
234
|
- lib/vector_salad/standard_shapes/rotate.rb
|
234
235
|
- lib/vector_salad/standard_shapes/scale.rb
|
235
236
|
- lib/vector_salad/standard_shapes/square.rb
|
237
|
+
- lib/vector_salad/standard_shapes/standard_shapes.rb
|
236
238
|
- lib/vector_salad/standard_shapes/transform.rb
|
237
239
|
- lib/vector_salad/standard_shapes/triangle.rb
|
238
240
|
- lib/vector_salad/standard_shapes/union.rb
|