sketchup-api-stubs 0.6.1 → 0.7.4
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/.yardopts +2 -0
- data/lib/sketchup-api-stubs.rb +1 -1
- data/lib/sketchup-api-stubs/sketchup.rb +145 -145
- data/lib/sketchup-api-stubs/stubs/Geom/BoundingBox.rb +318 -318
- data/lib/sketchup-api-stubs/stubs/Geom/Bounds2d.rb +172 -172
- data/lib/sketchup-api-stubs/stubs/Geom/LatLong.rb +126 -126
- data/lib/sketchup-api-stubs/stubs/Geom/OrientedBounds2d.rb +102 -102
- data/lib/sketchup-api-stubs/stubs/Geom/Point2d.rb +400 -401
- data/lib/sketchup-api-stubs/stubs/Geom/Point3d.rb +661 -661
- data/lib/sketchup-api-stubs/stubs/Geom/PolygonMesh.rb +492 -492
- data/lib/sketchup-api-stubs/stubs/Geom/Transformation.rb +478 -478
- data/lib/sketchup-api-stubs/stubs/Geom/Transformation2d.rb +263 -263
- data/lib/sketchup-api-stubs/stubs/Geom/UTM.rb +141 -141
- data/lib/sketchup-api-stubs/stubs/Geom/Vector2d.rb +522 -523
- data/lib/sketchup-api-stubs/stubs/Geom/Vector3d.rb +691 -691
- data/lib/sketchup-api-stubs/stubs/Layout.rb +25 -25
- data/lib/sketchup-api-stubs/stubs/Layout/AngularDimension.rb +573 -569
- data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinition.rb +411 -411
- data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinitions.rb +174 -186
- data/lib/sketchup-api-stubs/stubs/Layout/ConnectionPoint.rb +70 -70
- data/lib/sketchup-api-stubs/stubs/Layout/Document.rb +514 -455
- data/lib/sketchup-api-stubs/stubs/Layout/Ellipse.rb +29 -29
- data/lib/sketchup-api-stubs/stubs/Layout/Entities.rb +143 -155
- data/lib/sketchup-api-stubs/stubs/Layout/Entity.rb +353 -359
- data/lib/sketchup-api-stubs/stubs/Layout/FormattedText.rb +349 -349
- data/lib/sketchup-api-stubs/stubs/Layout/Grid.rb +311 -123
- data/lib/sketchup-api-stubs/stubs/Layout/Group.rb +261 -261
- data/lib/sketchup-api-stubs/stubs/Layout/Image.rb +91 -86
- data/lib/sketchup-api-stubs/stubs/Layout/Label.rb +371 -371
- data/lib/sketchup-api-stubs/stubs/Layout/Layer.rb +218 -218
- data/lib/sketchup-api-stubs/stubs/Layout/LayerInstance.rb +128 -128
- data/lib/sketchup-api-stubs/stubs/Layout/Layers.rb +220 -232
- data/lib/sketchup-api-stubs/stubs/Layout/LinearDimension.rb +567 -563
- data/lib/sketchup-api-stubs/stubs/Layout/LockedEntityError.rb +10 -10
- data/lib/sketchup-api-stubs/stubs/Layout/LockedLayerError.rb +11 -11
- data/lib/sketchup-api-stubs/stubs/Layout/Page.rb +183 -183
- data/lib/sketchup-api-stubs/stubs/Layout/PageInfo.rb +387 -387
- data/lib/sketchup-api-stubs/stubs/Layout/Pages.rb +204 -216
- data/lib/sketchup-api-stubs/stubs/Layout/Path.rb +344 -344
- data/lib/sketchup-api-stubs/stubs/Layout/Rectangle.rb +174 -174
- data/lib/sketchup-api-stubs/stubs/Layout/SketchUpModel.rb +694 -547
- data/lib/sketchup-api-stubs/stubs/Layout/Style.rb +1519 -1519
- data/lib/sketchup-api-stubs/stubs/Layout/Table.rb +290 -290
- data/lib/sketchup-api-stubs/stubs/Layout/TableCell.rb +149 -149
- data/lib/sketchup-api-stubs/stubs/Layout/TableColumn.rb +139 -139
- data/lib/sketchup-api-stubs/stubs/Layout/TableRow.rb +135 -135
- data/lib/sketchup-api-stubs/stubs/Sketchup/Animation.rb +140 -140
- data/lib/sketchup-api-stubs/stubs/Sketchup/AppObserver.rb +157 -157
- data/lib/sketchup-api-stubs/stubs/Sketchup/ArcCurve.rb +209 -209
- data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionaries.rb +152 -152
- data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionary.rb +281 -281
- data/lib/sketchup-api-stubs/stubs/Sketchup/Axes.rb +149 -149
- data/lib/sketchup-api-stubs/stubs/Sketchup/Behavior.rb +328 -328
- data/lib/sketchup-api-stubs/stubs/Sketchup/Camera.rb +577 -577
- data/lib/sketchup-api-stubs/stubs/Sketchup/ClassificationSchema.rb +63 -63
- data/lib/sketchup-api-stubs/stubs/Sketchup/Classifications.rb +122 -122
- data/lib/sketchup-api-stubs/stubs/Sketchup/Color.rb +281 -281
- data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentDefinition.rb +562 -554
- data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentInstance.rb +593 -593
- data/lib/sketchup-api-stubs/stubs/Sketchup/Console.rb +76 -76
- data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionLine.rb +257 -257
- data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionPoint.rb +32 -32
- data/lib/sketchup-api-stubs/stubs/Sketchup/Curve.rb +194 -194
- data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionList.rb +329 -329
- data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionObserver.rb +72 -72
- data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionsObserver.rb +102 -102
- data/lib/sketchup-api-stubs/stubs/Sketchup/Dimension.rb +165 -165
- data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionLinear.rb +312 -312
- data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionObserver.rb +38 -38
- data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionRadial.rb +87 -87
- data/lib/sketchup-api-stubs/stubs/Sketchup/Drawingelement.rb +390 -390
- data/lib/sketchup-api-stubs/stubs/Sketchup/Edge.rb +508 -508
- data/lib/sketchup-api-stubs/stubs/Sketchup/EdgeUse.rb +211 -211
- data/lib/sketchup-api-stubs/stubs/Sketchup/Entities.rb +1119 -1097
- data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesObserver.rb +125 -125
- data/lib/sketchup-api-stubs/stubs/Sketchup/Entity.rb +544 -537
- data/lib/sketchup-api-stubs/stubs/Sketchup/EntityObserver.rb +59 -59
- data/lib/sketchup-api-stubs/stubs/Sketchup/ExtensionsManager.rb +125 -125
- data/lib/sketchup-api-stubs/stubs/Sketchup/Face.rb +750 -750
- data/lib/sketchup-api-stubs/stubs/Sketchup/FrameChangeObserver.rb +104 -104
- data/lib/sketchup-api-stubs/stubs/Sketchup/Group.rb +697 -697
- data/lib/sketchup-api-stubs/stubs/Sketchup/Http.rb +27 -27
- data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Request.rb +285 -285
- data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Response.rb +62 -62
- data/lib/sketchup-api-stubs/stubs/Sketchup/Image.rb +409 -409
- data/lib/sketchup-api-stubs/stubs/Sketchup/ImageRep.rb +226 -226
- data/lib/sketchup-api-stubs/stubs/Sketchup/Importer.rb +190 -190
- data/lib/sketchup-api-stubs/stubs/Sketchup/InputPoint.rb +393 -393
- data/lib/sketchup-api-stubs/stubs/Sketchup/InstanceObserver.rb +82 -82
- data/lib/sketchup-api-stubs/stubs/Sketchup/InstancePath.rb +303 -303
- data/lib/sketchup-api-stubs/stubs/Sketchup/Layer.rb +285 -262
- data/lib/sketchup-api-stubs/stubs/Sketchup/Layers.rb +244 -231
- data/lib/sketchup-api-stubs/stubs/Sketchup/LayersObserver.rb +136 -136
- data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing.rb +48 -48
- data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing/ExtensionLicense.rb +86 -86
- data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyle.rb +24 -24
- data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyles.rb +112 -123
- data/lib/sketchup-api-stubs/stubs/Sketchup/Loop.rb +137 -137
- data/lib/sketchup-api-stubs/stubs/Sketchup/Material.rb +416 -416
- data/lib/sketchup-api-stubs/stubs/Sketchup/Materials.rb +311 -311
- data/lib/sketchup-api-stubs/stubs/Sketchup/MaterialsObserver.rb +141 -141
- data/lib/sketchup-api-stubs/stubs/Sketchup/Menu.rb +95 -95
- data/lib/sketchup-api-stubs/stubs/Sketchup/Model.rb +1638 -1483
- data/lib/sketchup-api-stubs/stubs/Sketchup/ModelObserver.rb +356 -356
- data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsManager.rb +132 -132
- data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProvider.rb +284 -282
- data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProviderObserver.rb +58 -58
- data/lib/sketchup-api-stubs/stubs/Sketchup/Page.rb +770 -650
- data/lib/sketchup-api-stubs/stubs/Sketchup/Pages.rb +353 -353
- data/lib/sketchup-api-stubs/stubs/Sketchup/PagesObserver.rb +76 -76
- data/lib/sketchup-api-stubs/stubs/Sketchup/PickHelper.rb +456 -456
- data/lib/sketchup-api-stubs/stubs/Sketchup/RegionalSettings.rb +43 -43
- data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptions.rb +364 -356
- data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptionsObserver.rb +44 -44
- data/lib/sketchup-api-stubs/stubs/Sketchup/SectionPlane.rb +150 -150
- data/lib/sketchup-api-stubs/stubs/Sketchup/Selection.rb +454 -454
- data/lib/sketchup-api-stubs/stubs/Sketchup/SelectionObserver.rb +115 -115
- data/lib/sketchup-api-stubs/stubs/Sketchup/Set.rb +212 -212
- data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfo.rb +257 -257
- data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfoObserver.rb +57 -57
- data/lib/sketchup-api-stubs/stubs/Sketchup/Style.rb +69 -69
- data/lib/sketchup-api-stubs/stubs/Sketchup/Styles.rb +211 -211
- data/lib/sketchup-api-stubs/stubs/Sketchup/Text.rb +262 -262
- data/lib/sketchup-api-stubs/stubs/Sketchup/Texture.rb +225 -225
- data/lib/sketchup-api-stubs/stubs/Sketchup/TextureWriter.rb +237 -237
- data/lib/sketchup-api-stubs/stubs/Sketchup/Tool.rb +829 -829
- data/lib/sketchup-api-stubs/stubs/Sketchup/Tools.rb +132 -132
- data/lib/sketchup-api-stubs/stubs/Sketchup/ToolsObserver.rb +154 -154
- data/lib/sketchup-api-stubs/stubs/Sketchup/UVHelper.rb +61 -61
- data/lib/sketchup-api-stubs/stubs/Sketchup/Vertex.rb +142 -142
- data/lib/sketchup-api-stubs/stubs/Sketchup/View.rb +1301 -995
- data/lib/sketchup-api-stubs/stubs/Sketchup/ViewObserver.rb +43 -43
- data/lib/sketchup-api-stubs/stubs/UI/Command.rb +310 -310
- data/lib/sketchup-api-stubs/stubs/UI/HtmlDialog.rb +356 -356
- data/lib/sketchup-api-stubs/stubs/UI/Notification.rb +229 -229
- data/lib/sketchup-api-stubs/stubs/UI/Toolbar.rb +240 -240
- data/lib/sketchup-api-stubs/stubs/UI/WebDialog.rb +633 -633
- data/lib/sketchup-api-stubs/stubs/_top_level.rb +311 -303
- data/lib/sketchup-api-stubs/stubs/array.rb +741 -741
- data/lib/sketchup-api-stubs/stubs/geom.rb +348 -233
- data/lib/sketchup-api-stubs/stubs/languagehandler.rb +92 -92
- data/lib/sketchup-api-stubs/stubs/length.rb +278 -262
- data/lib/sketchup-api-stubs/stubs/numeric.rb +249 -249
- data/lib/sketchup-api-stubs/stubs/sketchup.rb +1310 -1310
- data/lib/sketchup-api-stubs/stubs/sketchupextension.rb +353 -353
- data/lib/sketchup-api-stubs/stubs/string.rb +24 -24
- data/lib/sketchup-api-stubs/stubs/ui.rb +667 -660
- metadata +2 -16
@@ -1,216 +1,204 @@
|
|
1
|
-
# Copyright:: Copyright
|
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
|
-
|
147
|
-
# {Layout::
|
148
|
-
#
|
149
|
-
#
|
150
|
-
#
|
151
|
-
#
|
152
|
-
# pages.
|
153
|
-
#
|
154
|
-
#
|
155
|
-
#
|
156
|
-
#
|
157
|
-
#
|
158
|
-
#
|
159
|
-
#
|
160
|
-
#
|
161
|
-
#
|
162
|
-
#
|
163
|
-
#
|
164
|
-
#
|
165
|
-
#
|
166
|
-
#
|
167
|
-
#
|
168
|
-
#
|
169
|
-
#
|
170
|
-
#
|
171
|
-
#
|
172
|
-
|
173
|
-
|
174
|
-
|
175
|
-
|
176
|
-
#
|
177
|
-
#
|
178
|
-
#
|
179
|
-
#
|
180
|
-
#
|
181
|
-
#
|
182
|
-
# pages.
|
183
|
-
#
|
184
|
-
#
|
185
|
-
#
|
186
|
-
#
|
187
|
-
# @param [
|
188
|
-
#
|
189
|
-
#
|
190
|
-
# @raise [
|
191
|
-
#
|
192
|
-
#
|
193
|
-
#
|
194
|
-
#
|
195
|
-
# @param [Integer]
|
196
|
-
#
|
197
|
-
#
|
198
|
-
#
|
199
|
-
#
|
200
|
-
|
201
|
-
|
202
|
-
|
203
|
-
|
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
|
1
|
+
# Copyright:: Copyright 2020 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
|
+
alias_method :size, :length
|
146
|
+
|
147
|
+
# The {#remove} method deletes the given {Layout::Page} from the
|
148
|
+
# {Layout::Document}.
|
149
|
+
#
|
150
|
+
# @example
|
151
|
+
# doc = Layout::Document.open("C:/path/to/document.layout")
|
152
|
+
# pages = doc.pages
|
153
|
+
# pages.remove(pages[0])
|
154
|
+
#
|
155
|
+
# @overload remove(page)
|
156
|
+
#
|
157
|
+
# @param [Layout::Page] page The {Layout::Page} to be removed
|
158
|
+
#
|
159
|
+
# @raise [ArgumentError] if the {Layout::Page} is not in the
|
160
|
+
# {Layout::Document}
|
161
|
+
# @raise [ArgumentError] if the {Layout::Page} is the only one in the
|
162
|
+
# {Layout::Document}
|
163
|
+
#
|
164
|
+
# @overload remove(index)
|
165
|
+
#
|
166
|
+
# @param [Integer] index The index of the {Layout::Page} to be removed
|
167
|
+
#
|
168
|
+
# @raise [ArgumentError] if the {Layout::Page} is the only one in the
|
169
|
+
# {Layout::Document}
|
170
|
+
# @raise [IndexError] if index is out of range
|
171
|
+
#
|
172
|
+
# @version LayOut 2018
|
173
|
+
def remove(page)
|
174
|
+
end
|
175
|
+
|
176
|
+
# The {#reorder} method moves a {Layout::Page} to a different index within
|
177
|
+
# the {Layout::Document}'s list of pages. This will move the {Layout::Page}
|
178
|
+
# such that its new index becomes new_index.
|
179
|
+
#
|
180
|
+
# @example
|
181
|
+
# doc = Layout::Document.open("C:/path/to/document.layout")
|
182
|
+
# pages = doc.pages
|
183
|
+
# pages.reorder(pages[1], 3)
|
184
|
+
#
|
185
|
+
# @overload reorder(page, new_index)
|
186
|
+
#
|
187
|
+
# @param [Layout::Page] page The {Layout::Page} to be reordered
|
188
|
+
# @param [Integer] new_index The index to put the {Layout::Page} at
|
189
|
+
#
|
190
|
+
# @raise [ArgumentError] if the {Layout::Page} is not in the {Layout::Document}
|
191
|
+
# @raise [IndexError] if new_index is out of range
|
192
|
+
#
|
193
|
+
# @overload reorder(index, new_index)
|
194
|
+
#
|
195
|
+
# @param [Integer] index The index of the {Layout::Page} to be reordered
|
196
|
+
# @param [Integer] new_index The index to put the {Layout::Page} at
|
197
|
+
#
|
198
|
+
# @raise [IndexError] if index or new_index is out of range
|
199
|
+
#
|
200
|
+
# @version LayOut 2018
|
201
|
+
def reorder(page, new_index)
|
202
|
+
end
|
203
|
+
|
204
|
+
end
|
@@ -1,344 +1,344 @@
|
|
1
|
-
# Copyright:: Copyright
|
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
|
-
PATH_WINDING_CLOCKWISE = nil # Stub value.
|
20
|
-
PATH_WINDING_COUNTER_CLOCKWISE = nil # Stub value.
|
21
|
-
PATH_WINDING_NONE = nil # Stub value.
|
22
|
-
|
23
|
-
# Class Methods
|
24
|
-
|
25
|
-
# The {.new_arc} method creates a new arc-shaped {Layout::Path}.
|
26
|
-
#
|
27
|
-
# @example
|
28
|
-
# center = Geom::Point2d.new(5, 5)
|
29
|
-
# radius = 2.0
|
30
|
-
# start_angle = 180.0
|
31
|
-
# end_angle = 360.0
|
32
|
-
# arc = Layout::Path.new_arc(center, radius, start_angle, end_angle)
|
33
|
-
#
|
34
|
-
# @param [Geom::Point2d] center_point
|
35
|
-
#
|
36
|
-
# @param [Float] radius
|
37
|
-
#
|
38
|
-
# @param [Float] start_angle
|
39
|
-
#
|
40
|
-
# @param [Float] end_angle
|
41
|
-
#
|
42
|
-
# @raise [ArgumentError] if radius is less than or equal to zero
|
43
|
-
#
|
44
|
-
# @raise [ArgumentError] if start angle is equal to end angle
|
45
|
-
#
|
46
|
-
# @return [Layout::Path] an arc path
|
47
|
-
#
|
48
|
-
# @version LayOut 2018
|
49
|
-
def self.new_arc(center_point, radius, start_angle, end_angle)
|
50
|
-
end
|
51
|
-
|
52
|
-
# Instance Methods
|
53
|
-
|
54
|
-
# The {#append_point} method appends a {Geom::Point2d} to the end of the
|
55
|
-
# {Layout::Path}.
|
56
|
-
#
|
57
|
-
# @example
|
58
|
-
# point = Geom::Point2d.new(2, 5)
|
59
|
-
# path.append_point(point)
|
60
|
-
#
|
61
|
-
# @overload append_point(point)
|
62
|
-
#
|
63
|
-
# @param [Geom::Point2d] point
|
64
|
-
# @return [Layout::Path]
|
65
|
-
#
|
66
|
-
# @overload append_point(control_point1, control_point2, point)
|
67
|
-
#
|
68
|
-
# @param [Geom::Point2d] control_point1 The first bezier control point
|
69
|
-
# @param [Geom::Point2d] control_point2 The second bezier control point
|
70
|
-
# @param [Geom::Point2d] point The point to append
|
71
|
-
# @return [Layout::Path]
|
72
|
-
#
|
73
|
-
# @raise [LockedLayerError] if the {Layout::Path} is on a locked {Layout::Layer}
|
74
|
-
#
|
75
|
-
# @raise [LockedEntityError] if the {Layout::Path} is locked
|
76
|
-
#
|
77
|
-
# @version LayOut 2018
|
78
|
-
def append_point(*args)
|
79
|
-
end
|
80
|
-
|
81
|
-
# The {#arc} method returns the parameters of an arc from the {Layout::Path},
|
82
|
-
# or +nil+ if path is not an arc.
|
83
|
-
#
|
84
|
-
# @example
|
85
|
-
# start_angle, radius, start, end = path.arc
|
86
|
-
#
|
87
|
-
# @return [Array(Geom::Point2d, Float, Float, Float), nil] The center point,
|
88
|
-
# radius, start angle, and end angle
|
89
|
-
#
|
90
|
-
# @version LayOut 2018
|
91
|
-
def arc
|
92
|
-
end
|
93
|
-
|
94
|
-
# The {#circle} method returns the parameters of a circle from the
|
95
|
-
# {Layout::Path}, or +nil+ if path is not a circle.
|
96
|
-
#
|
97
|
-
# @example
|
98
|
-
# center_point, radius = path.circle
|
99
|
-
#
|
100
|
-
# @return [Array(Geom::Point2d, Float), nil] The center point and the radius
|
101
|
-
#
|
102
|
-
# @version LayOut 2018
|
103
|
-
def circle
|
104
|
-
end
|
105
|
-
|
106
|
-
# The {#close} method closes the {Layout::Path}.
|
107
|
-
#
|
108
|
-
# @example
|
109
|
-
# path.close
|
110
|
-
#
|
111
|
-
# @raise [LockedLayerError] if the {Layout::Path} is on a locked
|
112
|
-
# {Layout::Layer}
|
113
|
-
#
|
114
|
-
# @raise [ArgumentError] if the {Layout::Path} can not be closed becauase it
|
115
|
-
# contains less than three points.
|
116
|
-
#
|
117
|
-
# @raise [LockedEntityError] if the {Layout::Path} is locked
|
118
|
-
#
|
119
|
-
# @version LayOut 2018
|
120
|
-
def close
|
121
|
-
end
|
122
|
-
|
123
|
-
# The {#closed?} method returns whether the {Layout::Path} is closed.
|
124
|
-
#
|
125
|
-
# @example
|
126
|
-
# is_closed = path.closed?
|
127
|
-
#
|
128
|
-
# @return [Boolean]
|
129
|
-
#
|
130
|
-
# @version LayOut 2018
|
131
|
-
def closed?
|
132
|
-
end
|
133
|
-
|
134
|
-
# The {#end_arrow} method creates a new {Layout::Path} from an end arrow.
|
135
|
-
#
|
136
|
-
# @example
|
137
|
-
# path = Layout::Path.end_arrow(path_with_end_arrow)
|
138
|
-
#
|
139
|
-
# @return [Layout::Path, nil] The end arrow
|
140
|
-
#
|
141
|
-
# @version LayOut 2018
|
142
|
-
def end_arrow
|
143
|
-
end
|
144
|
-
|
145
|
-
# The {#end_point} method returns the end point of the {Layout::Path}.
|
146
|
-
#
|
147
|
-
# @example
|
148
|
-
# start_point = Geom::Point2d.new(1, 1)
|
149
|
-
# end_point = Geom::Point2d.new(2, 2)
|
150
|
-
# path = Layout::Path.new(start_point, end_point)
|
151
|
-
# # should be equal to end_point
|
152
|
-
# endp = path.end_point
|
153
|
-
#
|
154
|
-
# @return [Geom::Point2d]
|
155
|
-
#
|
156
|
-
# @version LayOut 2018
|
157
|
-
def end_point
|
158
|
-
end
|
159
|
-
|
160
|
-
# The {#initialize} method creates a new {Layout::Path} between a start point
|
161
|
-
# and an end point, or from a provided {Layout::Rectangle} or
|
162
|
-
# {Layout::Ellipse}.
|
163
|
-
#
|
164
|
-
# @example
|
165
|
-
# start = Geom::Point2d.new(1, 1)
|
166
|
-
# end = Geom::Point2d.new(2, 2)
|
167
|
-
# new_path = Layout::Path.new(start, end)
|
168
|
-
#
|
169
|
-
# @example
|
170
|
-
# start = Geom::Point2d.new(1, 1)
|
171
|
-
# control_1 = Geom::Point2d.new(1.5, 1)
|
172
|
-
# control_2 = Geom::Point2d.new(1, 1.5)
|
173
|
-
# end = Geom::Point2d.new(2, 2)
|
174
|
-
# new_path = Layout::Path.new(start, control_1, control_2, end)
|
175
|
-
#
|
176
|
-
# @overload initialize(start_point, end_point)
|
177
|
-
#
|
178
|
-
# @param [Geom::Point2D] start_point
|
179
|
-
# @param [Geom::Point2D] end_point
|
180
|
-
# @return [Layout::Path] a straight path
|
181
|
-
#
|
182
|
-
# @raise [ArgumentError] if the length between start point and end point is
|
183
|
-
# zero
|
184
|
-
#
|
185
|
-
# @overload initialize(start_point, control_point_1, control_point_2, end_point)
|
186
|
-
#
|
187
|
-
# @param [Geom::Point2D] start_point
|
188
|
-
# @param [Geom::Point2D] control_point_1 The first bezier control point
|
189
|
-
# @param [Geom::Point2D] control_point_2 The second bezier control point
|
190
|
-
# @param [Geom::Point2D] end_point
|
191
|
-
# @return [Layout::Path] a bezier path
|
192
|
-
#
|
193
|
-
# @raise [ArgumentError] if the length between start point and end point is
|
194
|
-
# zero
|
195
|
-
#
|
196
|
-
# @overload initialize(rectangle)
|
197
|
-
#
|
198
|
-
# @param [Layout::Rectangle] rectangle
|
199
|
-
# @return [Layout::Path] a path created from the {Layout::Rectangle}
|
200
|
-
#
|
201
|
-
# @raise [TypeError] if rectangle is not a {Layout::Rectangle}
|
202
|
-
#
|
203
|
-
# @overload initialize(ellipse)
|
204
|
-
#
|
205
|
-
# @param [Layout::Ellipse] ellipse
|
206
|
-
# @return [Layout::Path] a path created from the {Layout::Ellipse}
|
207
|
-
#
|
208
|
-
# @raise [TypeError] if ellipse is not an {Layout::Ellipse}
|
209
|
-
#
|
210
|
-
# @version LayOut 2018
|
211
|
-
def initialize(*args)
|
212
|
-
end
|
213
|
-
|
214
|
-
# The {#parametric_length} method returns the parametric length for the
|
215
|
-
# {Layout::Path}. The parametric length is the length with respect to the curve
|
216
|
-
# of the {Layout::Path}.
|
217
|
-
#
|
218
|
-
# @example
|
219
|
-
# length = path.parametric_length
|
220
|
-
#
|
221
|
-
# @return [Float]
|
222
|
-
#
|
223
|
-
# @version LayOut 2018
|
224
|
-
def parametric_length
|
225
|
-
end
|
226
|
-
|
227
|
-
# The {#point_at} method returns the {Geom::Point2d} at a given parametric
|
228
|
-
# value.
|
229
|
-
#
|
230
|
-
# @example
|
231
|
-
# length = path.parametric_length
|
232
|
-
# # Get the point halfway along the path
|
233
|
-
# halfway_point = path.point_at(length/2)
|
234
|
-
#
|
235
|
-
# @param [Float] parametric_value
|
236
|
-
#
|
237
|
-
# @raise [ArgumentError] if the parametric value is less than zero or greater
|
238
|
-
# than the {Layout::Path}'s parametric length
|
239
|
-
#
|
240
|
-
# @return [Geom::Point2d]
|
241
|
-
#
|
242
|
-
# @version LayOut 2018
|
243
|
-
def point_at(parametric_value)
|
244
|
-
end
|
245
|
-
|
246
|
-
# The {#point_types} method returns an array of point types corresponding to
|
247
|
-
# the {Geom::Point2d}s in the {Layout::Path}.
|
248
|
-
#
|
249
|
-
# A point type can be one of the following values:
|
250
|
-
# [+POINT_TYPE_MOVE_TO+]
|
251
|
-
# [+POINT_TYPE_LINE_TO+]
|
252
|
-
# [+POINT_TYPE_BEZIER_TO+]
|
253
|
-
# [+POINT_TYPE_ARC_CENTER+]
|
254
|
-
# [+POINT_TYPE_BEZIER_CONTROL+]
|
255
|
-
# [+POINT_TYPE_CLOSE+]
|
256
|
-
#
|
257
|
-
# @example
|
258
|
-
# types = path.point_types
|
259
|
-
#
|
260
|
-
# @return [Array<Integer>] An array of integers that correspond with point types.
|
261
|
-
#
|
262
|
-
# @version LayOut 2018
|
263
|
-
def point_types
|
264
|
-
end
|
265
|
-
|
266
|
-
# The {#points} method returns an array of {Geom::Point2d}s in the
|
267
|
-
# {Layout::Path}.
|
268
|
-
#
|
269
|
-
# @example
|
270
|
-
# start_point = Geom::Point2d.new(1, 1)
|
271
|
-
# end_point = Geom::Point2d.new(2, 2)
|
272
|
-
# new_path = Layout::Path.new(start_point, end_point)
|
273
|
-
# # Should be an array with points [1, 1] and [2, 2]
|
274
|
-
# points = new_path.points
|
275
|
-
#
|
276
|
-
# @return [Array<Geom::Point2d>]
|
277
|
-
#
|
278
|
-
# @version LayOut 2018
|
279
|
-
def points
|
280
|
-
end
|
281
|
-
|
282
|
-
# The {#start_arrow} method creates a new {Layout::Path} from a start
|
283
|
-
# arrow.
|
284
|
-
#
|
285
|
-
# @example
|
286
|
-
# start_arrow = path.start_arrow
|
287
|
-
#
|
288
|
-
# @return [Layout::Path, nil] The start arrow
|
289
|
-
#
|
290
|
-
# @version LayOut 2018
|
291
|
-
def start_arrow
|
292
|
-
end
|
293
|
-
|
294
|
-
# The {#start_point} method returns the start point of the {Layout::Path}.
|
295
|
-
#
|
296
|
-
# @example
|
297
|
-
# start_point = Geom::Point2d.new(1, 1)
|
298
|
-
# end_point = Geom::Point2d.new(2, 2)
|
299
|
-
# path = Layout::Path.new(start_point, end_point)
|
300
|
-
# # should be equal to start_point
|
301
|
-
# start = path.start_point
|
302
|
-
#
|
303
|
-
# @return [Geom::Point2d]
|
304
|
-
#
|
305
|
-
# @version LayOut 2018
|
306
|
-
def start_point
|
307
|
-
end
|
308
|
-
|
309
|
-
# The {#tangent_at} method returns the tangent {Geom::Vector2d} at the given
|
310
|
-
# parametric value.
|
311
|
-
#
|
312
|
-
# @example
|
313
|
-
# length = path.parametric_length
|
314
|
-
# # Get the tangent halfway along the path
|
315
|
-
# halfway_tangent = path.tangent_at(length/2)
|
316
|
-
#
|
317
|
-
# @param [Float] parametric_value
|
318
|
-
#
|
319
|
-
# @raise [ArgumentError] if the parametric value is less than zero or greater
|
320
|
-
# than the {Layout::Path}'s parametric length
|
321
|
-
#
|
322
|
-
# @return [Geom::Vector2d]
|
323
|
-
#
|
324
|
-
# @version LayOut 2018
|
325
|
-
def tangent_at(parametric_value)
|
326
|
-
end
|
327
|
-
|
328
|
-
# The {#winding} method returns the winding type of the {Layout::Path}.
|
329
|
-
#
|
330
|
-
# A point type can be one of the following values:
|
331
|
-
# [+PATH_WINDING_NONE+]
|
332
|
-
# [+PATH_WINDING_CLOCKWISE+]
|
333
|
-
# [+PATH_WINDING_COUNTER_CLOCKWISE+]
|
334
|
-
#
|
335
|
-
# @example
|
336
|
-
# winding = path.winding
|
337
|
-
#
|
338
|
-
# @return [Integer]
|
339
|
-
#
|
340
|
-
# @version LayOut 2019
|
341
|
-
def winding
|
342
|
-
end
|
343
|
-
|
344
|
-
end
|
1
|
+
# Copyright:: Copyright 2020 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
|
+
PATH_WINDING_CLOCKWISE = nil # Stub value.
|
20
|
+
PATH_WINDING_COUNTER_CLOCKWISE = nil # Stub value.
|
21
|
+
PATH_WINDING_NONE = nil # Stub value.
|
22
|
+
|
23
|
+
# Class Methods
|
24
|
+
|
25
|
+
# The {.new_arc} method creates a new arc-shaped {Layout::Path}.
|
26
|
+
#
|
27
|
+
# @example
|
28
|
+
# center = Geom::Point2d.new(5, 5)
|
29
|
+
# radius = 2.0
|
30
|
+
# start_angle = 180.0
|
31
|
+
# end_angle = 360.0
|
32
|
+
# arc = Layout::Path.new_arc(center, radius, start_angle, end_angle)
|
33
|
+
#
|
34
|
+
# @param [Geom::Point2d] center_point
|
35
|
+
#
|
36
|
+
# @param [Float] radius
|
37
|
+
#
|
38
|
+
# @param [Float] start_angle
|
39
|
+
#
|
40
|
+
# @param [Float] end_angle
|
41
|
+
#
|
42
|
+
# @raise [ArgumentError] if radius is less than or equal to zero
|
43
|
+
#
|
44
|
+
# @raise [ArgumentError] if start angle is equal to end angle
|
45
|
+
#
|
46
|
+
# @return [Layout::Path] an arc path
|
47
|
+
#
|
48
|
+
# @version LayOut 2018
|
49
|
+
def self.new_arc(center_point, radius, start_angle, end_angle)
|
50
|
+
end
|
51
|
+
|
52
|
+
# Instance Methods
|
53
|
+
|
54
|
+
# The {#append_point} method appends a {Geom::Point2d} to the end of the
|
55
|
+
# {Layout::Path}.
|
56
|
+
#
|
57
|
+
# @example
|
58
|
+
# point = Geom::Point2d.new(2, 5)
|
59
|
+
# path.append_point(point)
|
60
|
+
#
|
61
|
+
# @overload append_point(point)
|
62
|
+
#
|
63
|
+
# @param [Geom::Point2d] point
|
64
|
+
# @return [Layout::Path]
|
65
|
+
#
|
66
|
+
# @overload append_point(control_point1, control_point2, point)
|
67
|
+
#
|
68
|
+
# @param [Geom::Point2d] control_point1 The first bezier control point
|
69
|
+
# @param [Geom::Point2d] control_point2 The second bezier control point
|
70
|
+
# @param [Geom::Point2d] point The point to append
|
71
|
+
# @return [Layout::Path]
|
72
|
+
#
|
73
|
+
# @raise [LockedLayerError] if the {Layout::Path} is on a locked {Layout::Layer}
|
74
|
+
#
|
75
|
+
# @raise [LockedEntityError] if the {Layout::Path} is locked
|
76
|
+
#
|
77
|
+
# @version LayOut 2018
|
78
|
+
def append_point(*args)
|
79
|
+
end
|
80
|
+
|
81
|
+
# The {#arc} method returns the parameters of an arc from the {Layout::Path},
|
82
|
+
# or +nil+ if path is not an arc.
|
83
|
+
#
|
84
|
+
# @example
|
85
|
+
# start_angle, radius, start, end = path.arc
|
86
|
+
#
|
87
|
+
# @return [Array(Geom::Point2d, Float, Float, Float), nil] The center point,
|
88
|
+
# radius, start angle, and end angle
|
89
|
+
#
|
90
|
+
# @version LayOut 2018
|
91
|
+
def arc
|
92
|
+
end
|
93
|
+
|
94
|
+
# The {#circle} method returns the parameters of a circle from the
|
95
|
+
# {Layout::Path}, or +nil+ if path is not a circle.
|
96
|
+
#
|
97
|
+
# @example
|
98
|
+
# center_point, radius = path.circle
|
99
|
+
#
|
100
|
+
# @return [Array(Geom::Point2d, Float), nil] The center point and the radius
|
101
|
+
#
|
102
|
+
# @version LayOut 2018
|
103
|
+
def circle
|
104
|
+
end
|
105
|
+
|
106
|
+
# The {#close} method closes the {Layout::Path}.
|
107
|
+
#
|
108
|
+
# @example
|
109
|
+
# path.close
|
110
|
+
#
|
111
|
+
# @raise [LockedLayerError] if the {Layout::Path} is on a locked
|
112
|
+
# {Layout::Layer}
|
113
|
+
#
|
114
|
+
# @raise [ArgumentError] if the {Layout::Path} can not be closed becauase it
|
115
|
+
# contains less than three points.
|
116
|
+
#
|
117
|
+
# @raise [LockedEntityError] if the {Layout::Path} is locked
|
118
|
+
#
|
119
|
+
# @version LayOut 2018
|
120
|
+
def close
|
121
|
+
end
|
122
|
+
|
123
|
+
# The {#closed?} method returns whether the {Layout::Path} is closed.
|
124
|
+
#
|
125
|
+
# @example
|
126
|
+
# is_closed = path.closed?
|
127
|
+
#
|
128
|
+
# @return [Boolean]
|
129
|
+
#
|
130
|
+
# @version LayOut 2018
|
131
|
+
def closed?
|
132
|
+
end
|
133
|
+
|
134
|
+
# The {#end_arrow} method creates a new {Layout::Path} from an end arrow.
|
135
|
+
#
|
136
|
+
# @example
|
137
|
+
# path = Layout::Path.end_arrow(path_with_end_arrow)
|
138
|
+
#
|
139
|
+
# @return [Layout::Path, nil] The end arrow
|
140
|
+
#
|
141
|
+
# @version LayOut 2018
|
142
|
+
def end_arrow
|
143
|
+
end
|
144
|
+
|
145
|
+
# The {#end_point} method returns the end point of the {Layout::Path}.
|
146
|
+
#
|
147
|
+
# @example
|
148
|
+
# start_point = Geom::Point2d.new(1, 1)
|
149
|
+
# end_point = Geom::Point2d.new(2, 2)
|
150
|
+
# path = Layout::Path.new(start_point, end_point)
|
151
|
+
# # should be equal to end_point
|
152
|
+
# endp = path.end_point
|
153
|
+
#
|
154
|
+
# @return [Geom::Point2d]
|
155
|
+
#
|
156
|
+
# @version LayOut 2018
|
157
|
+
def end_point
|
158
|
+
end
|
159
|
+
|
160
|
+
# The {#initialize} method creates a new {Layout::Path} between a start point
|
161
|
+
# and an end point, or from a provided {Layout::Rectangle} or
|
162
|
+
# {Layout::Ellipse}.
|
163
|
+
#
|
164
|
+
# @example
|
165
|
+
# start = Geom::Point2d.new(1, 1)
|
166
|
+
# end = Geom::Point2d.new(2, 2)
|
167
|
+
# new_path = Layout::Path.new(start, end)
|
168
|
+
#
|
169
|
+
# @example
|
170
|
+
# start = Geom::Point2d.new(1, 1)
|
171
|
+
# control_1 = Geom::Point2d.new(1.5, 1)
|
172
|
+
# control_2 = Geom::Point2d.new(1, 1.5)
|
173
|
+
# end = Geom::Point2d.new(2, 2)
|
174
|
+
# new_path = Layout::Path.new(start, control_1, control_2, end)
|
175
|
+
#
|
176
|
+
# @overload initialize(start_point, end_point)
|
177
|
+
#
|
178
|
+
# @param [Geom::Point2D] start_point
|
179
|
+
# @param [Geom::Point2D] end_point
|
180
|
+
# @return [Layout::Path] a straight path
|
181
|
+
#
|
182
|
+
# @raise [ArgumentError] if the length between start point and end point is
|
183
|
+
# zero
|
184
|
+
#
|
185
|
+
# @overload initialize(start_point, control_point_1, control_point_2, end_point)
|
186
|
+
#
|
187
|
+
# @param [Geom::Point2D] start_point
|
188
|
+
# @param [Geom::Point2D] control_point_1 The first bezier control point
|
189
|
+
# @param [Geom::Point2D] control_point_2 The second bezier control point
|
190
|
+
# @param [Geom::Point2D] end_point
|
191
|
+
# @return [Layout::Path] a bezier path
|
192
|
+
#
|
193
|
+
# @raise [ArgumentError] if the length between start point and end point is
|
194
|
+
# zero
|
195
|
+
#
|
196
|
+
# @overload initialize(rectangle)
|
197
|
+
#
|
198
|
+
# @param [Layout::Rectangle] rectangle
|
199
|
+
# @return [Layout::Path] a path created from the {Layout::Rectangle}
|
200
|
+
#
|
201
|
+
# @raise [TypeError] if rectangle is not a {Layout::Rectangle}
|
202
|
+
#
|
203
|
+
# @overload initialize(ellipse)
|
204
|
+
#
|
205
|
+
# @param [Layout::Ellipse] ellipse
|
206
|
+
# @return [Layout::Path] a path created from the {Layout::Ellipse}
|
207
|
+
#
|
208
|
+
# @raise [TypeError] if ellipse is not an {Layout::Ellipse}
|
209
|
+
#
|
210
|
+
# @version LayOut 2018
|
211
|
+
def initialize(*args)
|
212
|
+
end
|
213
|
+
|
214
|
+
# The {#parametric_length} method returns the parametric length for the
|
215
|
+
# {Layout::Path}. The parametric length is the length with respect to the curve
|
216
|
+
# of the {Layout::Path}.
|
217
|
+
#
|
218
|
+
# @example
|
219
|
+
# length = path.parametric_length
|
220
|
+
#
|
221
|
+
# @return [Float]
|
222
|
+
#
|
223
|
+
# @version LayOut 2018
|
224
|
+
def parametric_length
|
225
|
+
end
|
226
|
+
|
227
|
+
# The {#point_at} method returns the {Geom::Point2d} at a given parametric
|
228
|
+
# value.
|
229
|
+
#
|
230
|
+
# @example
|
231
|
+
# length = path.parametric_length
|
232
|
+
# # Get the point halfway along the path
|
233
|
+
# halfway_point = path.point_at(length/2)
|
234
|
+
#
|
235
|
+
# @param [Float] parametric_value
|
236
|
+
#
|
237
|
+
# @raise [ArgumentError] if the parametric value is less than zero or greater
|
238
|
+
# than the {Layout::Path}'s parametric length
|
239
|
+
#
|
240
|
+
# @return [Geom::Point2d]
|
241
|
+
#
|
242
|
+
# @version LayOut 2018
|
243
|
+
def point_at(parametric_value)
|
244
|
+
end
|
245
|
+
|
246
|
+
# The {#point_types} method returns an array of point types corresponding to
|
247
|
+
# the {Geom::Point2d}s in the {Layout::Path}.
|
248
|
+
#
|
249
|
+
# A point type can be one of the following values:
|
250
|
+
# [+POINT_TYPE_MOVE_TO+]
|
251
|
+
# [+POINT_TYPE_LINE_TO+]
|
252
|
+
# [+POINT_TYPE_BEZIER_TO+]
|
253
|
+
# [+POINT_TYPE_ARC_CENTER+]
|
254
|
+
# [+POINT_TYPE_BEZIER_CONTROL+]
|
255
|
+
# [+POINT_TYPE_CLOSE+]
|
256
|
+
#
|
257
|
+
# @example
|
258
|
+
# types = path.point_types
|
259
|
+
#
|
260
|
+
# @return [Array<Integer>] An array of integers that correspond with point types.
|
261
|
+
#
|
262
|
+
# @version LayOut 2018
|
263
|
+
def point_types
|
264
|
+
end
|
265
|
+
|
266
|
+
# The {#points} method returns an array of {Geom::Point2d}s in the
|
267
|
+
# {Layout::Path}.
|
268
|
+
#
|
269
|
+
# @example
|
270
|
+
# start_point = Geom::Point2d.new(1, 1)
|
271
|
+
# end_point = Geom::Point2d.new(2, 2)
|
272
|
+
# new_path = Layout::Path.new(start_point, end_point)
|
273
|
+
# # Should be an array with points [1, 1] and [2, 2]
|
274
|
+
# points = new_path.points
|
275
|
+
#
|
276
|
+
# @return [Array<Geom::Point2d>]
|
277
|
+
#
|
278
|
+
# @version LayOut 2018
|
279
|
+
def points
|
280
|
+
end
|
281
|
+
|
282
|
+
# The {#start_arrow} method creates a new {Layout::Path} from a start
|
283
|
+
# arrow.
|
284
|
+
#
|
285
|
+
# @example
|
286
|
+
# start_arrow = path.start_arrow
|
287
|
+
#
|
288
|
+
# @return [Layout::Path, nil] The start arrow
|
289
|
+
#
|
290
|
+
# @version LayOut 2018
|
291
|
+
def start_arrow
|
292
|
+
end
|
293
|
+
|
294
|
+
# The {#start_point} method returns the start point of the {Layout::Path}.
|
295
|
+
#
|
296
|
+
# @example
|
297
|
+
# start_point = Geom::Point2d.new(1, 1)
|
298
|
+
# end_point = Geom::Point2d.new(2, 2)
|
299
|
+
# path = Layout::Path.new(start_point, end_point)
|
300
|
+
# # should be equal to start_point
|
301
|
+
# start = path.start_point
|
302
|
+
#
|
303
|
+
# @return [Geom::Point2d]
|
304
|
+
#
|
305
|
+
# @version LayOut 2018
|
306
|
+
def start_point
|
307
|
+
end
|
308
|
+
|
309
|
+
# The {#tangent_at} method returns the tangent {Geom::Vector2d} at the given
|
310
|
+
# parametric value.
|
311
|
+
#
|
312
|
+
# @example
|
313
|
+
# length = path.parametric_length
|
314
|
+
# # Get the tangent halfway along the path
|
315
|
+
# halfway_tangent = path.tangent_at(length/2)
|
316
|
+
#
|
317
|
+
# @param [Float] parametric_value
|
318
|
+
#
|
319
|
+
# @raise [ArgumentError] if the parametric value is less than zero or greater
|
320
|
+
# than the {Layout::Path}'s parametric length
|
321
|
+
#
|
322
|
+
# @return [Geom::Vector2d]
|
323
|
+
#
|
324
|
+
# @version LayOut 2018
|
325
|
+
def tangent_at(parametric_value)
|
326
|
+
end
|
327
|
+
|
328
|
+
# The {#winding} method returns the winding type of the {Layout::Path}.
|
329
|
+
#
|
330
|
+
# A point type can be one of the following values:
|
331
|
+
# [+PATH_WINDING_NONE+]
|
332
|
+
# [+PATH_WINDING_CLOCKWISE+]
|
333
|
+
# [+PATH_WINDING_COUNTER_CLOCKWISE+]
|
334
|
+
#
|
335
|
+
# @example
|
336
|
+
# winding = path.winding
|
337
|
+
#
|
338
|
+
# @return [Integer]
|
339
|
+
#
|
340
|
+
# @version LayOut 2019
|
341
|
+
def winding
|
342
|
+
end
|
343
|
+
|
344
|
+
end
|