sketchup-api-stubs 0.1.2 → 0.2.0

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.
Files changed (92) hide show
  1. checksums.yaml +4 -4
  2. data/SketchUp/Geom/BoundingBox.rb +17 -20
  3. data/SketchUp/Geom/Bounds2d.rb +172 -0
  4. data/SketchUp/Geom/LatLong.rb +31 -16
  5. data/SketchUp/Geom/OrientedBounds2d.rb +102 -0
  6. data/SketchUp/Geom/Point2d.rb +365 -0
  7. data/SketchUp/Geom/Point3d.rb +121 -110
  8. data/SketchUp/Geom/PolygonMesh.rb +30 -21
  9. data/SketchUp/Geom/Transformation.rb +8 -4
  10. data/SketchUp/Geom/Transformation2d.rb +125 -0
  11. data/SketchUp/Geom/UTM.rb +43 -37
  12. data/SketchUp/Geom/Vector2d.rb +497 -0
  13. data/SketchUp/Geom/Vector3d.rb +143 -131
  14. data/SketchUp/Layout.rb +25 -0
  15. data/SketchUp/Layout/AngularDimension.rb +569 -0
  16. data/SketchUp/Layout/AutoTextDefinition.rb +417 -0
  17. data/SketchUp/Layout/AutoTextDefinitions.rb +186 -0
  18. data/SketchUp/Layout/ConnectionPoint.rb +70 -0
  19. data/SketchUp/Layout/Document.rb +458 -0
  20. data/SketchUp/Layout/Ellipse.rb +29 -0
  21. data/SketchUp/Layout/Entities.rb +155 -0
  22. data/SketchUp/Layout/Entity.rb +363 -0
  23. data/SketchUp/Layout/FormattedText.rb +349 -0
  24. data/SketchUp/Layout/Grid.rb +131 -0
  25. data/SketchUp/Layout/Group.rb +261 -0
  26. data/SketchUp/Layout/Image.rb +86 -0
  27. data/SketchUp/Layout/Label.rb +371 -0
  28. data/SketchUp/Layout/Layer.rb +222 -0
  29. data/SketchUp/Layout/LayerInstance.rb +128 -0
  30. data/SketchUp/Layout/Layers.rb +232 -0
  31. data/SketchUp/Layout/LinearDimension.rb +563 -0
  32. data/SketchUp/Layout/LockedEntityError.rb +10 -0
  33. data/SketchUp/Layout/LockedLayerError.rb +11 -0
  34. data/SketchUp/Layout/Page.rb +187 -0
  35. data/SketchUp/Layout/PageInfo.rb +393 -0
  36. data/SketchUp/Layout/Pages.rb +216 -0
  37. data/SketchUp/Layout/Path.rb +326 -0
  38. data/SketchUp/Layout/Rectangle.rb +174 -0
  39. data/SketchUp/Layout/SketchUpModel.rb +522 -0
  40. data/SketchUp/Layout/Style.rb +1520 -0
  41. data/SketchUp/Layout/Table.rb +290 -0
  42. data/SketchUp/Layout/TableCell.rb +149 -0
  43. data/SketchUp/Layout/TableColumn.rb +139 -0
  44. data/SketchUp/Layout/TableRow.rb +135 -0
  45. data/SketchUp/Sketchup/Animation.rb +7 -4
  46. data/SketchUp/Sketchup/ArcCurve.rb +10 -10
  47. data/SketchUp/Sketchup/AttributeDictionaries.rb +13 -4
  48. data/SketchUp/Sketchup/AttributeDictionary.rb +12 -12
  49. data/SketchUp/Sketchup/Color.rb +68 -78
  50. data/SketchUp/Sketchup/ComponentDefinition.rb +60 -60
  51. data/SketchUp/Sketchup/ComponentInstance.rb +57 -55
  52. data/SketchUp/Sketchup/DefinitionList.rb +34 -17
  53. data/SketchUp/Sketchup/Drawingelement.rb +19 -21
  54. data/SketchUp/Sketchup/Edge.rb +22 -24
  55. data/SketchUp/Sketchup/Entities.rb +173 -162
  56. data/SketchUp/Sketchup/Entity.rb +71 -55
  57. data/SketchUp/Sketchup/Face.rb +45 -44
  58. data/SketchUp/Sketchup/Group.rb +47 -49
  59. data/SketchUp/Sketchup/Image.rb +16 -0
  60. data/SketchUp/Sketchup/ImageRep.rb +226 -0
  61. data/SketchUp/Sketchup/InstancePath.rb +13 -13
  62. data/SketchUp/Sketchup/Layer.rb +15 -17
  63. data/SketchUp/Sketchup/Material.rb +40 -30
  64. data/SketchUp/Sketchup/Materials.rb +40 -22
  65. data/SketchUp/Sketchup/Menu.rb +5 -5
  66. data/SketchUp/Sketchup/Model.rb +230 -228
  67. data/SketchUp/Sketchup/Page.rb +32 -0
  68. data/SketchUp/Sketchup/Pages.rb +3 -4
  69. data/SketchUp/Sketchup/RenderingOptions.rb +21 -16
  70. data/SketchUp/Sketchup/SectionPlane.rb +64 -0
  71. data/SketchUp/Sketchup/Selection.rb +20 -28
  72. data/SketchUp/Sketchup/ShadowInfo.rb +14 -14
  73. data/SketchUp/Sketchup/Text.rb +24 -26
  74. data/SketchUp/Sketchup/Texture.rb +28 -12
  75. data/SketchUp/Sketchup/Vertex.rb +14 -11
  76. data/SketchUp/Sketchup/View.rb +126 -116
  77. data/SketchUp/UI/Command.rb +17 -17
  78. data/SketchUp/UI/HtmlDialog.rb +8 -5
  79. data/SketchUp/UI/Notification.rb +1 -1
  80. data/SketchUp/UI/Toolbar.rb +13 -14
  81. data/SketchUp/UI/WebDialog.rb +55 -59
  82. data/SketchUp/_top_level.rb +139 -27
  83. data/SketchUp/{Array.rb → array.rb} +167 -30
  84. data/SketchUp/{Geom.rb → geom.rb} +9 -7
  85. data/SketchUp/{LanguageHandler.rb → languagehandler.rb} +15 -15
  86. data/SketchUp/{Length.rb → length.rb} +15 -15
  87. data/SketchUp/{Numeric.rb → numeric.rb} +19 -19
  88. data/SketchUp/sketchup.rb +167 -156
  89. data/SketchUp/{SketchupExtension.rb → sketchupextension.rb} +27 -27
  90. data/SketchUp/{String.rb → string.rb} +1 -1
  91. data/SketchUp/ui.rb +113 -87
  92. metadata +46 -9
@@ -0,0 +1,216 @@
1
+ # Copyright:: Copyright 2017 Trimble Inc.
2
+ # License:: The MIT License (MIT)
3
+
4
+ # The Pages class is a container class for all pages in a {Layout::Document}.
5
+ #
6
+ # @example
7
+ # # Grab a handle to an existing LayOut document's pages.
8
+ # doc = Layout::Document.open("C:/path/to/document.layout")
9
+ # pages = doc.pages
10
+ #
11
+ # # From here, we can add pages to or remove them from the document
12
+ # pages.add("New Page")
13
+ # pages.remove(pages[0])
14
+ #
15
+ # @version LayOut 2018
16
+ class Layout::Pages
17
+
18
+ # Includes
19
+
20
+ include Enumerable
21
+
22
+ # Instance Methods
23
+
24
+ # The {#[]} method returns a value from the array of {Layout::Page}s.
25
+ #
26
+ # @example
27
+ # doc = Layout::Document.open("C:/path/to/document.layout")
28
+ # pages = doc.pages
29
+ # page = pages[2]
30
+ #
31
+ # @param [Integer] index
32
+ # The index of the {Layout::Page} to return.
33
+ #
34
+ # @raise [IndexError] if index is out of range
35
+ #
36
+ # @return [Layout::Page]
37
+ #
38
+ # @version LayOut 2018
39
+ def [](index)
40
+ end
41
+
42
+ # The {#add} method adds a new {Layout::Page} to the {Layout::Document}.
43
+ # The newly added {Layout::Page} will be the last one in the {Layout::Document}.
44
+ #
45
+ # @example
46
+ # doc = Layout::Document.open("C:/path/to/document.layout")
47
+ # pages = doc.pages
48
+ # new_page = doc.add
49
+ #
50
+ # @param [String] name
51
+ # The name for the new page.
52
+ #
53
+ # @return [Layout::Page] The newly added {Layout::Page}.
54
+ #
55
+ # @version LayOut 2018
56
+ def add(name = nil)
57
+ end
58
+
59
+ # The {#each} method iterates through all of the {Layout::Page}s.
60
+ #
61
+ # @example
62
+ # doc = Layout::Document.open("C:/path/to/document.layout")
63
+ # pages = doc.pages
64
+ # pages.each { |page|
65
+ # puts page.name
66
+ # }
67
+ #
68
+ # @version LayOut 2018
69
+ #
70
+ # @yieldparam [Layout::Page] page
71
+ def each
72
+ end
73
+
74
+ # The {#index} method returns the index of the {Layout::Page}, or +nil+ if
75
+ # it doesn't exist in the {Layout::Document}.
76
+ #
77
+ # @example
78
+ # doc = Layout::Document.open("C:/path/to/document.layout")
79
+ # pages = doc.pages
80
+ # page_index = pages.index(pages.first) # Returns 0
81
+ #
82
+ # @param [Layout::Page] page
83
+ #
84
+ # @return [Integer, nil]
85
+ #
86
+ # @version LayOut 2018
87
+ def index(page)
88
+ end
89
+
90
+ # The {#initial} method returns the initial {Layout::Page} that will be
91
+ # displayed the next time the {Layout::Document} is opened. This value will
92
+ # change whenever the {Layout::Page} is changed in the {Layout::Document} in
93
+ # LayOut.
94
+ #
95
+ # @example
96
+ # doc = Layout::Document.open("C:/path/to/document.layout")
97
+ # pages = doc.pages
98
+ # page = pages.initial
99
+ #
100
+ # @return [Layout::Page]
101
+ #
102
+ # @version LayOut 2018
103
+ def initial
104
+ end
105
+
106
+ # The {#initial=} method sets the initial {Layout::Page} that will be
107
+ # displayed the next time the {Layout::Document} is opened. This value will
108
+ # change whenever the {Layout::Page} is changed in the {Layout::Document} in
109
+ # LayOut.
110
+ #
111
+ # @example
112
+ # doc = Layout::Document.open("C:/path/to/document.layout")
113
+ # pages = doc.pages
114
+ # pages.initial = doc.pages[0]
115
+ #
116
+ # @overload initial=(page)
117
+ #
118
+ # @param [Layout::Page] page The {Layout::Page} to set as the initial one
119
+ #
120
+ # @raise [ArgumentError] if page does not belong to the {Layout::Document}
121
+ #
122
+ # @overload initial=(index)
123
+ #
124
+ # @param [Integer] index The index of the {Layout::Page} to set as the
125
+ # initial one
126
+ #
127
+ # @raise [IndexError] if index is out of range
128
+ #
129
+ # @version LayOut 2018
130
+ def initial=(page)
131
+ end
132
+
133
+ # The {#length} method returns the number of {Layout::Page}s.
134
+ #
135
+ # @example
136
+ # doc = Layout::Document.open("C:/path/to/document.layout")
137
+ # pages = doc.pages
138
+ # num_pages = pages.length
139
+ #
140
+ # @return [Integer]
141
+ #
142
+ # @version LayOut 2018
143
+ def length
144
+ end
145
+
146
+ # The {#remove} method deletes the given {Layout::Page} from the
147
+ # {Layout::Document}.
148
+ #
149
+ # @example
150
+ # doc = Layout::Document.open("C:/path/to/document.layout")
151
+ # pages = doc.pages
152
+ # pages.remove(pages[0])
153
+ #
154
+ # @overload remove(page)
155
+ #
156
+ # @param [Layout::Page] page The {Layout::Page} to be removed
157
+ #
158
+ # @raise [ArgumentError] if the {Layout::Page} is not in the
159
+ # {Layout::Document}
160
+ # @raise [ArgumentError] if the {Layout::Page} is the only one in the
161
+ # {Layout::Document}
162
+ #
163
+ # @overload remove(index)
164
+ #
165
+ # @param [Integer] index The index of the {Layout::Page} to be removed
166
+ #
167
+ # @raise [ArgumentError] if the {Layout::Page} is the only one in the
168
+ # {Layout::Document}
169
+ # @raise [IndexError] if index is out of range
170
+ #
171
+ # @version LayOut 2018
172
+ def remove(page)
173
+ end
174
+
175
+ # The {#reorder} method moves a {Layout::Page} to a different index within
176
+ # the {Layout::Document}'s list of pages. This will move the {Layout::Page}
177
+ # such that its new index becomes new_index.
178
+ #
179
+ # @example
180
+ # doc = Layout::Document.open("C:/path/to/document.layout")
181
+ # pages = doc.pages
182
+ # pages.reorder(pages[1], 3)
183
+ #
184
+ # @overload reorder(page, new_index)
185
+ #
186
+ # @param [Layout::Page] page The {Layout::Page} to be reordered
187
+ # @param [Integer] new_index The index to put the {Layout::Page} at
188
+ #
189
+ # @raise [ArgumentError] if the {Layout::Page} is not in the {Layout::Document}
190
+ # @raise [IndexError] if new_index is out of range
191
+ #
192
+ # @overload reorder(index, new_index)
193
+ #
194
+ # @param [Integer] index The index of the {Layout::Page} to be reordered
195
+ # @param [Integer] new_index The index to put the {Layout::Page} at
196
+ #
197
+ # @raise [IndexError] if index or new_index is out of range
198
+ #
199
+ # @version LayOut 2018
200
+ def reorder(page, new_index)
201
+ end
202
+
203
+ # The {#length} method returns the number of {Layout::Page}s.
204
+ #
205
+ # @example
206
+ # doc = Layout::Document.open("C:/path/to/document.layout")
207
+ # pages = doc.pages
208
+ # num_pages = pages.length
209
+ #
210
+ # @return [Integer]
211
+ #
212
+ # @version LayOut 2018
213
+ def size
214
+ end
215
+
216
+ end
@@ -0,0 +1,326 @@
1
+ # Copyright:: Copyright 2017 Trimble Inc.
2
+ # License:: The MIT License (MIT)
3
+
4
+ # A path entity represents a continuous, multi-segment polyline or bezier
5
+ # curve.
6
+ #
7
+ # @version LayOut 2018
8
+ class Layout::Path < Layout::Entity
9
+
10
+ # Constants
11
+
12
+ POINT_TYPE_ARC_CENTER = nil # Stub value.
13
+ POINT_TYPE_BEZIER_CONTROL = nil # Stub value.
14
+ POINT_TYPE_BEZIER_TO = nil # Stub value.
15
+ POINT_TYPE_CLOSE = nil # Stub value.
16
+ POINT_TYPE_LINE_TO = nil # Stub value.
17
+ POINT_TYPE_MOVE_TO = nil # Stub value.
18
+
19
+ # Class Methods
20
+
21
+ # The {.new_arc} method creates a new arc-shaped {Layout::Path}.
22
+ #
23
+ # @example
24
+ # center = Geom::Point2d.new(5, 5)
25
+ # radius = 2.0
26
+ # start_angle = 180.0
27
+ # end_angle = 360.0
28
+ # arc = Layout::Path.new_arc(center, radius, start_angle, end_angle)
29
+ #
30
+ # @param [Geom::Point2d] center_point
31
+ #
32
+ # @param [Float] radius
33
+ #
34
+ # @param [Float] start_angle
35
+ #
36
+ # @param [Float] end_angle
37
+ #
38
+ # @raise [ArgumentError] if start angle is equal to end angle
39
+ #
40
+ # @raise [ArgumentError] if radius is less than or equal to zero
41
+ #
42
+ # @return [Layout::Path] an arc path
43
+ #
44
+ # @version LayOut 2018
45
+ def self.new_arc(center_point, radius, start_angle, end_angle)
46
+ end
47
+
48
+ # Instance Methods
49
+
50
+ # The {#append_point} method appends a {Geom::Point2d} to the end of the
51
+ # {Layout::Path}.
52
+ #
53
+ # @example
54
+ # point = Geom::Point2d.new(2, 5)
55
+ # path.append_point(point)
56
+ #
57
+ # @overload append_point(point)
58
+ #
59
+ # @param [Geom::Point2d] append_point
60
+ # @return [Layout::Path]
61
+ #
62
+ # @overload append_point(point, control_point1, control_point2)
63
+ #
64
+ # @param [Geom::Point2d] point The point to append
65
+ # @param [Geom::Point2d] control_point1 The first bezier control point
66
+ # @param [Geom::Point2d] control_point2 The second bezier control point
67
+ # @return [Layout::Path]
68
+ #
69
+ # @raise [LockedEntityError] if the {Layout::Path} is locked
70
+ #
71
+ # @raise [LockedLayerError] if the {Layout::Path} is on a locked {Layout::Layer}
72
+ #
73
+ # @version LayOut 2018
74
+ def append_point(*args)
75
+ end
76
+
77
+ # The {#arc} method returns the parameters of an arc from the {Layout::Path},
78
+ # or +nil+ if path is not an arc.
79
+ #
80
+ # @example
81
+ # start_angle, radius, start, end = path.arc
82
+ #
83
+ # @return [Array(Geom::Point2d, Float, Float, Float), nil] The center point,
84
+ # radius, start angle, and end angle
85
+ #
86
+ # @version LayOut 2018
87
+ def arc
88
+ end
89
+
90
+ # The {#circle} method returns the parameters of a circle from the
91
+ # {Layout::Path}, or +nil+ if path is not a circle.
92
+ #
93
+ # @example
94
+ # center_point, radius = path.circle
95
+ #
96
+ # @return [Array(Geom::Point2d, Float), nil] The center point and the radius
97
+ #
98
+ # @version LayOut 2018
99
+ def circle
100
+ end
101
+
102
+ # The {#close} method closes the {Layout::Path}.
103
+ #
104
+ # @example
105
+ # path.close
106
+ #
107
+ # @raise [LockedLayerError] if the {Layout::Path} is on a locked
108
+ # {Layout::Layer}
109
+ #
110
+ # @raise [LockedEntityError] if the {Layout::Path} is locked
111
+ #
112
+ # @raise [ArgumentError] if the {Layout::Path} can not be closed becauase it
113
+ # contains less than three points.
114
+ #
115
+ # @version LayOut 2018
116
+ def close
117
+ end
118
+
119
+ # The {#closed?} method returns whether the {Layout::Path} is closed.
120
+ #
121
+ # @example
122
+ # is_closed = path.closed?
123
+ #
124
+ # @return [Boolean]
125
+ #
126
+ # @return [Boolean]
127
+ #
128
+ # @version LayOut 2018
129
+ def closed?
130
+ end
131
+
132
+ # The {#end_arrow} method creates a new {Layout::Path} from an end arrow.
133
+ #
134
+ # @example
135
+ # path = Layout::Path.end_arrow(path_with_end_arrow)
136
+ #
137
+ # @return [Layout::Path, nil] The end arrow
138
+ #
139
+ # @version LayOut 2018
140
+ def end_arrow
141
+ end
142
+
143
+ # The {#end_point} method returns the end point of the {Layout::Path}.
144
+ #
145
+ # @example
146
+ # start_point = Geom::Point2d.new(1, 1)
147
+ # end_point = Geom::Point2d.new(2, 2)
148
+ # path = Layout::Path.new(start_point, end_point)
149
+ # # should be equal to end_point
150
+ # endp = path.end_point
151
+ #
152
+ # @return [Geom::Point2d]
153
+ #
154
+ # @version LayOut 2018
155
+ def end_point
156
+ end
157
+
158
+ # The {#initialize} method creates a new {Layout::Path} between a start point
159
+ # and an end point, or from a provided {Layout::Rectangle} or
160
+ # {Layout::Ellipse}.
161
+ #
162
+ # @example
163
+ # start = Geom::Point2d.new(1, 1)
164
+ # control_1 = Geom::Point2d.new(1.5, 1)
165
+ # control_2 = Geom::Point2d.new(1, 1.5)
166
+ # end = Geom::Point2d.new(2, 2)
167
+ # new_path = Layout::Path.new(start, control_1, control_2, end)
168
+ #
169
+ # @example
170
+ # start = Geom::Point2d.new(1, 1)
171
+ # end = Geom::Point2d.new(2, 2)
172
+ # new_path = Layout::Path.new(start, end)
173
+ #
174
+ # @overload initialize(start_point, control_point_1, control_point_2, end_point)
175
+ #
176
+ # @param [Geom::Point2D] start_point
177
+ # @param [Geom::Point2D] control_point_1 The first bezier control point
178
+ # @param [Geom::Point2D] control_point_2 The second bezier control point
179
+ # @param [Geom::Point2D] end_point
180
+ # @return [Layout::Path] a bezier path
181
+ #
182
+ # @raise [ArgumentError] if the length between start point and end point is
183
+ # zero
184
+ #
185
+ # @overload initialize(start_point, end_point)
186
+ #
187
+ # @param [Geom::Point2D] start_point
188
+ # @param [Geom::Point2D] end_point
189
+ # @return [Layout::Path] a straight path
190
+ #
191
+ # @raise [ArgumentError] if the length between start point and end point is
192
+ # zero
193
+ #
194
+ # @overload initialize(ellipse)
195
+ #
196
+ # @param [Layout::Ellipse] ellipse
197
+ # @return [Layout::Path] a path created from the {Layout::Ellipse}
198
+ #
199
+ # @raise [TypeError] if ellipse is not an {Layout::Ellipse}
200
+ #
201
+ # @overload initialize(rectangle)
202
+ #
203
+ # @param [Layout::Rectangle] rectangle
204
+ # @return [Layout::Path] a path created from the {Layout::Rectangle}
205
+ #
206
+ # @raise [TypeError] if rectangle is not a {Layout::Rectangle}
207
+ #
208
+ # @version LayOut 2018
209
+ def initialize(*args)
210
+ end
211
+
212
+ # The {#parametric_length} method returns the parametric length for the
213
+ # {Layout::Path}. The parametric length is the length with respect to the curve
214
+ # of the {Layout::Path}.
215
+ #
216
+ # @example
217
+ # length = path.parametric_length
218
+ #
219
+ # @return [Float]
220
+ #
221
+ # @version LayOut 2018
222
+ def parametric_length
223
+ end
224
+
225
+ # The {#point_at} method returns the {Geom::Point2d} at a given parametric
226
+ # value.
227
+ #
228
+ # @example
229
+ # length = path.parametric_length
230
+ # # Get the point halfway along the path
231
+ # halfway_point = path.point_at(length/2)
232
+ #
233
+ # @param [Float] parametric_value
234
+ #
235
+ # @raise [ArgumentError] if the parametric value is less than zero or greater
236
+ # than the {Layout::Path}'s parametric length
237
+ #
238
+ # @return [Geom::Point2d]
239
+ #
240
+ # @version LayOut 2018
241
+ def point_at(parametric_value)
242
+ end
243
+
244
+ # The {#point_types} method returns an array of point types corresponding to
245
+ # the {Geom::Point2d}s in the {Layout::Path}.
246
+ #
247
+ # A point type can be one of the following values:
248
+ # [+POINT_TYPE_MOVE_TO+]
249
+ # [+POINT_TYPE_LINE_TO+]
250
+ # [+POINT_TYPE_BEZIER_TO+]
251
+ # [+POINT_TYPE_ARC_CENTER+]
252
+ # [+POINT_TYPE_BEZIER_CONTROL+]
253
+ # [+POINT_TYPE_CLOSE+]
254
+ #
255
+ # @example
256
+ # types = path.point_types
257
+ #
258
+ # @return [Array<Integer>] An array of integers that correspond with point types.
259
+ #
260
+ # @version LayOut 2018
261
+ def point_types
262
+ end
263
+
264
+ # The {#points} method returns an array of {Geom::Point2d}s in the
265
+ # {Layout::Path}.
266
+ #
267
+ # @example
268
+ # start_point = Geom::Point2d.new(1, 1)
269
+ # end_point = Geom::Point2d.new(2, 2)
270
+ # new_path = Layout::Path.new(start_point, end_point)
271
+ # # Should be an array with points [1, 1] and [2, 2]
272
+ # points = new_path.points
273
+ #
274
+ # @return [Array<Geom::Point2d>]
275
+ #
276
+ # @version LayOut 2018
277
+ def points
278
+ end
279
+
280
+ # The {#start_arrow} method creates a new {Layout::Path} from a start
281
+ # arrow.
282
+ #
283
+ # @example
284
+ # start_arrow = path.start_arrow
285
+ #
286
+ # @return [Layout::Path, nil] The start arrow
287
+ #
288
+ # @version LayOut 2018
289
+ def start_arrow
290
+ end
291
+
292
+ # The {#start_point} method returns the start point of the {Layout::Path}.
293
+ #
294
+ # @example
295
+ # start_point = Geom::Point2d.new(1, 1)
296
+ # end_point = Geom::Point2d.new(2, 2)
297
+ # path = Layout::Path.new(start_point, end_point)
298
+ # # should be equal to start_point
299
+ # start = path.start_point
300
+ #
301
+ # @return [Geom::Point2d]
302
+ #
303
+ # @version LayOut 2018
304
+ def start_point
305
+ end
306
+
307
+ # The {#tangent_at} method returns the tangent {Geom::Vector2d} at the given
308
+ # parametric value.
309
+ #
310
+ # @example
311
+ # length = path.parametric_length
312
+ # # Get the tangent halfway along the path
313
+ # halfway_tangent = path.tangent_at(length/2)
314
+ #
315
+ # @param [Float] parametric_value
316
+ #
317
+ # @raise [ArgumentError] if the parametric value is less than zero or greater
318
+ # than the {Layout::Path}'s parametric length
319
+ #
320
+ # @return [Geom::Vector2d]
321
+ #
322
+ # @version LayOut 2018
323
+ def tangent_at(parametric_value)
324
+ end
325
+
326
+ end