sketchup-api-stubs 0.7.8 → 0.7.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (154) hide show
  1. checksums.yaml +4 -4
  2. data/lib/sketchup-api-stubs/sketchup.rb +151 -148
  3. data/lib/sketchup-api-stubs/stubs/Array.rb +741 -741
  4. data/lib/sketchup-api-stubs/stubs/Geom/BoundingBox.rb +322 -322
  5. data/lib/sketchup-api-stubs/stubs/Geom/Bounds2d.rb +172 -172
  6. data/lib/sketchup-api-stubs/stubs/Geom/LatLong.rb +126 -126
  7. data/lib/sketchup-api-stubs/stubs/Geom/OrientedBounds2d.rb +102 -102
  8. data/lib/sketchup-api-stubs/stubs/Geom/Point2d.rb +400 -400
  9. data/lib/sketchup-api-stubs/stubs/Geom/Point3d.rb +661 -661
  10. data/lib/sketchup-api-stubs/stubs/Geom/PolygonMesh.rb +509 -523
  11. data/lib/sketchup-api-stubs/stubs/Geom/Transformation.rb +476 -478
  12. data/lib/sketchup-api-stubs/stubs/Geom/Transformation2d.rb +263 -263
  13. data/lib/sketchup-api-stubs/stubs/Geom/UTM.rb +141 -141
  14. data/lib/sketchup-api-stubs/stubs/Geom/Vector2d.rb +522 -522
  15. data/lib/sketchup-api-stubs/stubs/Geom/Vector3d.rb +693 -693
  16. data/lib/sketchup-api-stubs/stubs/Geom.rb +351 -351
  17. data/lib/sketchup-api-stubs/stubs/LanguageHandler.rb +93 -93
  18. data/lib/sketchup-api-stubs/stubs/Layout/AngularDimension.rb +595 -595
  19. data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinition.rb +747 -698
  20. data/lib/sketchup-api-stubs/stubs/Layout/AutoTextDefinitions.rb +183 -183
  21. data/lib/sketchup-api-stubs/stubs/Layout/ConnectionPoint.rb +70 -70
  22. data/lib/sketchup-api-stubs/stubs/Layout/Document.rb +517 -516
  23. data/lib/sketchup-api-stubs/stubs/Layout/Ellipse.rb +29 -29
  24. data/lib/sketchup-api-stubs/stubs/Layout/Entities.rb +148 -148
  25. data/lib/sketchup-api-stubs/stubs/Layout/Entity.rb +353 -353
  26. data/lib/sketchup-api-stubs/stubs/Layout/FormattedText.rb +354 -354
  27. data/lib/sketchup-api-stubs/stubs/Layout/Grid.rb +311 -311
  28. data/lib/sketchup-api-stubs/stubs/Layout/Group.rb +261 -261
  29. data/lib/sketchup-api-stubs/stubs/Layout/Image.rb +91 -91
  30. data/lib/sketchup-api-stubs/stubs/Layout/Label.rb +370 -370
  31. data/lib/sketchup-api-stubs/stubs/Layout/Layer.rb +218 -218
  32. data/lib/sketchup-api-stubs/stubs/Layout/LayerInstance.rb +128 -128
  33. data/lib/sketchup-api-stubs/stubs/Layout/Layers.rb +225 -225
  34. data/lib/sketchup-api-stubs/stubs/Layout/LinearDimension.rb +567 -567
  35. data/lib/sketchup-api-stubs/stubs/Layout/LockedEntityError.rb +10 -10
  36. data/lib/sketchup-api-stubs/stubs/Layout/LockedLayerError.rb +11 -11
  37. data/lib/sketchup-api-stubs/stubs/Layout/Page.rb +183 -183
  38. data/lib/sketchup-api-stubs/stubs/Layout/PageInfo.rb +387 -387
  39. data/lib/sketchup-api-stubs/stubs/Layout/Pages.rb +209 -209
  40. data/lib/sketchup-api-stubs/stubs/Layout/Path.rb +344 -344
  41. data/lib/sketchup-api-stubs/stubs/Layout/Rectangle.rb +174 -174
  42. data/lib/sketchup-api-stubs/stubs/Layout/ReferenceEntity.rb +82 -0
  43. data/lib/sketchup-api-stubs/stubs/Layout/SketchUpModel.rb +692 -692
  44. data/lib/sketchup-api-stubs/stubs/Layout/Style.rb +1519 -1519
  45. data/lib/sketchup-api-stubs/stubs/Layout/Table.rb +290 -290
  46. data/lib/sketchup-api-stubs/stubs/Layout/TableCell.rb +149 -149
  47. data/lib/sketchup-api-stubs/stubs/Layout/TableColumn.rb +139 -139
  48. data/lib/sketchup-api-stubs/stubs/Layout/TableRow.rb +135 -135
  49. data/lib/sketchup-api-stubs/stubs/Layout.rb +25 -25
  50. data/lib/sketchup-api-stubs/stubs/Length.rb +278 -278
  51. data/lib/sketchup-api-stubs/stubs/Numeric.rb +249 -249
  52. data/lib/sketchup-api-stubs/stubs/Sketchup/Animation.rb +144 -144
  53. data/lib/sketchup-api-stubs/stubs/Sketchup/AppObserver.rb +169 -169
  54. data/lib/sketchup-api-stubs/stubs/Sketchup/ArcCurve.rb +209 -209
  55. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionaries.rb +150 -152
  56. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionary.rb +281 -286
  57. data/lib/sketchup-api-stubs/stubs/Sketchup/Axes.rb +149 -149
  58. data/lib/sketchup-api-stubs/stubs/Sketchup/Behavior.rb +302 -302
  59. data/lib/sketchup-api-stubs/stubs/Sketchup/Camera.rb +478 -478
  60. data/lib/sketchup-api-stubs/stubs/Sketchup/ClassificationSchema.rb +63 -63
  61. data/lib/sketchup-api-stubs/stubs/Sketchup/Classifications.rb +121 -122
  62. data/lib/sketchup-api-stubs/stubs/Sketchup/Color.rb +294 -294
  63. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentDefinition.rb +659 -619
  64. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentInstance.rb +593 -593
  65. data/lib/sketchup-api-stubs/stubs/Sketchup/Console.rb +76 -76
  66. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionLine.rb +257 -257
  67. data/lib/sketchup-api-stubs/stubs/Sketchup/ConstructionPoint.rb +32 -32
  68. data/lib/sketchup-api-stubs/stubs/Sketchup/Curve.rb +201 -201
  69. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionList.rb +449 -426
  70. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionObserver.rb +74 -74
  71. data/lib/sketchup-api-stubs/stubs/Sketchup/DefinitionsObserver.rb +104 -104
  72. data/lib/sketchup-api-stubs/stubs/Sketchup/Dimension.rb +165 -165
  73. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionLinear.rb +306 -306
  74. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionObserver.rb +42 -42
  75. data/lib/sketchup-api-stubs/stubs/Sketchup/DimensionRadial.rb +87 -87
  76. data/lib/sketchup-api-stubs/stubs/Sketchup/Drawingelement.rb +406 -396
  77. data/lib/sketchup-api-stubs/stubs/Sketchup/Edge.rb +397 -502
  78. data/lib/sketchup-api-stubs/stubs/Sketchup/EdgeUse.rb +211 -211
  79. data/lib/sketchup-api-stubs/stubs/Sketchup/Entities.rb +1239 -1205
  80. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesBuilder.rb +261 -272
  81. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesObserver.rb +127 -127
  82. data/lib/sketchup-api-stubs/stubs/Sketchup/Entity.rb +545 -545
  83. data/lib/sketchup-api-stubs/stubs/Sketchup/EntityObserver.rb +60 -60
  84. data/lib/sketchup-api-stubs/stubs/Sketchup/ExtensionsManager.rb +125 -126
  85. data/lib/sketchup-api-stubs/stubs/Sketchup/Face.rb +937 -937
  86. data/lib/sketchup-api-stubs/stubs/Sketchup/FrameChangeObserver.rb +102 -104
  87. data/lib/sketchup-api-stubs/stubs/Sketchup/Group.rb +750 -750
  88. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Request.rb +282 -292
  89. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Response.rb +62 -62
  90. data/lib/sketchup-api-stubs/stubs/Sketchup/Http.rb +27 -27
  91. data/lib/sketchup-api-stubs/stubs/Sketchup/Image.rb +468 -468
  92. data/lib/sketchup-api-stubs/stubs/Sketchup/ImageRep.rb +266 -266
  93. data/lib/sketchup-api-stubs/stubs/Sketchup/Importer.rb +189 -189
  94. data/lib/sketchup-api-stubs/stubs/Sketchup/InputPoint.rb +406 -407
  95. data/lib/sketchup-api-stubs/stubs/Sketchup/InstanceObserver.rb +84 -84
  96. data/lib/sketchup-api-stubs/stubs/Sketchup/InstancePath.rb +306 -306
  97. data/lib/sketchup-api-stubs/stubs/Sketchup/Layer.rb +326 -326
  98. data/lib/sketchup-api-stubs/stubs/Sketchup/LayerFolder.rb +422 -422
  99. data/lib/sketchup-api-stubs/stubs/Sketchup/Layers.rb +427 -427
  100. data/lib/sketchup-api-stubs/stubs/Sketchup/LayersObserver.rb +249 -249
  101. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing/ExtensionLicense.rb +86 -86
  102. data/lib/sketchup-api-stubs/stubs/Sketchup/Licensing.rb +48 -48
  103. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyle.rb +24 -24
  104. data/lib/sketchup-api-stubs/stubs/Sketchup/LineStyles.rb +114 -112
  105. data/lib/sketchup-api-stubs/stubs/Sketchup/Loop.rb +137 -137
  106. data/lib/sketchup-api-stubs/stubs/Sketchup/Material.rb +414 -414
  107. data/lib/sketchup-api-stubs/stubs/Sketchup/Materials.rb +317 -318
  108. data/lib/sketchup-api-stubs/stubs/Sketchup/MaterialsObserver.rb +142 -142
  109. data/lib/sketchup-api-stubs/stubs/Sketchup/Menu.rb +93 -93
  110. data/lib/sketchup-api-stubs/stubs/Sketchup/Model.rb +1652 -1651
  111. data/lib/sketchup-api-stubs/stubs/Sketchup/ModelObserver.rb +357 -357
  112. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsManager.rb +130 -131
  113. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProvider.rb +271 -284
  114. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProviderObserver.rb +58 -58
  115. data/lib/sketchup-api-stubs/stubs/Sketchup/Overlay.rb +490 -0
  116. data/lib/sketchup-api-stubs/stubs/Sketchup/OverlaysManager.rb +116 -0
  117. data/lib/sketchup-api-stubs/stubs/Sketchup/Page.rb +797 -797
  118. data/lib/sketchup-api-stubs/stubs/Sketchup/Pages.rb +361 -363
  119. data/lib/sketchup-api-stubs/stubs/Sketchup/PagesObserver.rb +77 -77
  120. data/lib/sketchup-api-stubs/stubs/Sketchup/PickHelper.rb +478 -477
  121. data/lib/sketchup-api-stubs/stubs/Sketchup/RegionalSettings.rb +43 -43
  122. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptions.rb +361 -364
  123. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptionsObserver.rb +45 -45
  124. data/lib/sketchup-api-stubs/stubs/Sketchup/SectionPlane.rb +150 -150
  125. data/lib/sketchup-api-stubs/stubs/Sketchup/Selection.rb +458 -459
  126. data/lib/sketchup-api-stubs/stubs/Sketchup/SelectionObserver.rb +115 -115
  127. data/lib/sketchup-api-stubs/stubs/Sketchup/Set.rb +212 -212
  128. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfo.rb +255 -260
  129. data/lib/sketchup-api-stubs/stubs/Sketchup/ShadowInfoObserver.rb +59 -59
  130. data/lib/sketchup-api-stubs/stubs/Sketchup/Skp.rb +40 -40
  131. data/lib/sketchup-api-stubs/stubs/Sketchup/Style.rb +69 -69
  132. data/lib/sketchup-api-stubs/stubs/Sketchup/Styles.rb +217 -217
  133. data/lib/sketchup-api-stubs/stubs/Sketchup/Text.rb +262 -262
  134. data/lib/sketchup-api-stubs/stubs/Sketchup/Texture.rb +217 -217
  135. data/lib/sketchup-api-stubs/stubs/Sketchup/TextureWriter.rb +237 -237
  136. data/lib/sketchup-api-stubs/stubs/Sketchup/Tool.rb +834 -837
  137. data/lib/sketchup-api-stubs/stubs/Sketchup/Tools.rb +132 -132
  138. data/lib/sketchup-api-stubs/stubs/Sketchup/ToolsObserver.rb +156 -156
  139. data/lib/sketchup-api-stubs/stubs/Sketchup/UVHelper.rb +75 -75
  140. data/lib/sketchup-api-stubs/stubs/Sketchup/Vertex.rb +142 -142
  141. data/lib/sketchup-api-stubs/stubs/Sketchup/View.rb +1311 -1317
  142. data/lib/sketchup-api-stubs/stubs/Sketchup/ViewObserver.rb +45 -45
  143. data/lib/sketchup-api-stubs/stubs/Sketchup.rb +1377 -1360
  144. data/lib/sketchup-api-stubs/stubs/SketchupExtension.rb +353 -353
  145. data/lib/sketchup-api-stubs/stubs/String.rb +24 -24
  146. data/lib/sketchup-api-stubs/stubs/UI/Command.rb +389 -389
  147. data/lib/sketchup-api-stubs/stubs/UI/HtmlDialog.rb +494 -496
  148. data/lib/sketchup-api-stubs/stubs/UI/Notification.rb +269 -269
  149. data/lib/sketchup-api-stubs/stubs/UI/Toolbar.rb +241 -240
  150. data/lib/sketchup-api-stubs/stubs/UI/WebDialog.rb +635 -635
  151. data/lib/sketchup-api-stubs/stubs/UI.rb +683 -683
  152. data/lib/sketchup-api-stubs/stubs/_top_level.rb +303 -311
  153. data/lib/sketchup-api-stubs.rb +1 -1
  154. metadata +10 -7
@@ -1,1317 +1,1311 @@
1
- # Copyright:: Copyright 2022 Trimble Inc.
2
- # License:: The MIT License (MIT)
3
-
4
- # This class contains methods to manipulate the current point of view of the
5
- # model. The drawing methods here (draw_line, draw_polyline, etc) are meant to
6
- # be invoked within a tool's Tool.draw method. Calling them outside Tool.draw
7
- # will have no effect.
8
- #
9
- # You access the View by calling the Model.active_view method.
10
- #
11
- # @example
12
- # view = Sketchup.active_model.active_view
13
- #
14
- # @version SketchUp 6.0
15
- class Sketchup::View
16
-
17
- # Instance Methods
18
-
19
- # The add_observer method is used to add an observer to the current object.
20
- #
21
- # @example
22
- # view = Sketchup.active_model.active_view
23
- # status = view.add_observer observer
24
- #
25
- # @param [Object] observer
26
- # An observer.
27
- #
28
- # @return [Boolean] true if successful, false if unsuccessful.
29
- #
30
- # @version SketchUp 6.0
31
- def add_observer(observer)
32
- end
33
-
34
- # The animation= method is used to set an animation that is displayed for a
35
- # view. See Animation for details on how to create an animation object.
36
- #
37
- # @example
38
- # animation = ViewSpinner.new
39
- # model = Sketchup.active_model
40
- # view = model.active_view
41
- # anim = view.animation=animation
42
- # if (anim)
43
- # UI.messagebox anim
44
- # else
45
- # UI.messagebox "Failure"
46
- # end
47
- #
48
- # @param [#nextFrame] animation
49
- # An Animation object.
50
- #
51
- # @return [#nextFrame] the newly set Animation object
52
- #
53
- # @version SketchUp 6.0
54
- def animation=(animation)
55
- end
56
-
57
- # The average_refresh_time is used to set the average time used to refresh the
58
- # current model in the view. This can be used to estimate the frame rate for
59
- # an animation.
60
- #
61
- # @example
62
- # model = Sketchup.active_model
63
- # view = model.active_view
64
- # time = view.average_refresh_time
65
- #
66
- # @return [Float] the time in seconds
67
- #
68
- # @version SketchUp 6.0
69
- def average_refresh_time
70
- end
71
-
72
- # The camera method is used to retrieve the camera for the view.
73
- #
74
- # @example
75
- # camera = view.camera
76
- #
77
- # @return [Sketchup::Camera] a Camera object
78
- #
79
- # @version SketchUp 6.0
80
- def camera
81
- end
82
-
83
- # The {#camera=} method is used to set the camera for the view. If a transition
84
- # time is given, then it will animate the transition from the current camera
85
- # to the new one.
86
- #
87
- # @example
88
- # camera = Sketchup::Camera.new([5, 5, 9], [5, 10, 0], Z_AXIS)
89
- # view = Sketchup.active_model.active_view
90
- # view.camera = camera
91
- #
92
- # @overload camera=(camera)
93
- #
94
- # @param [Sketchup::Camera] camera The new camera object.
95
- #
96
- # @overload camera=(camera_and_transition)
97
- #
98
- # @param [Array(Sketchup::Camera, Float)] camera_and_transition
99
- # The second item in the array represents the transition time from the
100
- # existing camera to the new one.
101
- #
102
- # @version SketchUp 6.0
103
- def camera=(arg)
104
- end
105
-
106
- # The center method is used to retrieve the coordinates of the center of the
107
- # view in pixels. It is returned as an array of 2 values for x and y.
108
- #
109
- # @example
110
- # model = Sketchup.active_model
111
- # view = model.active_view
112
- # c = view.center
113
- #
114
- # @return [Geom::Point3d] the center of the view
115
- #
116
- # @version SketchUp 6.0
117
- def center
118
- end
119
-
120
- # The corner method is used to retrieve the coordinates of one of the corners
121
- # of the view. The argument is an index between 0 and 3 that identifies which
122
- # corner you want. This method returns an array with two integers which are
123
- # the coordinates of the corner of the view in the view space. If the view
124
- # uses a Camera with a fixed aspect ratio, then the corners are the corners of
125
- # the viewing are of the camera which might be different than the actual
126
- # corners of the view itself.
127
- #
128
- # The index numbers are as follows:
129
- # - 0: top left,
130
- # - 1: top right,
131
- # - 2: bottom left,
132
- # - 3: bottom right.
133
- #
134
- # @example
135
- # point = view.corner index
136
- #
137
- # @param [Integer] index
138
- # A value between (or including) 0 and 3 identifying the
139
- # corner whose coordinate you want to retrieve.
140
- #
141
- # @return [Array(Integer, Integer)] a 2d array [w,h] representing the screen point
142
- #
143
- # @version SketchUp 6.0
144
- def corner(index)
145
- end
146
-
147
- # The {#draw} method is used to do basic drawing. This method can only be
148
- # called from within the {Tool#draw} method of a tool that you implement in
149
- # Ruby.
150
- #
151
- # The following constants are all OpenGL terms and have been externalized to
152
- # Ruby. Here is a summary of their meanings:
153
- #
154
- # [GL_POINTS]
155
- # Treats each vertex as a single point. Vertex n defines point n. N
156
- # points are drawn.
157
- #
158
- # [GL_LINES]
159
- # Treats each pair of vertices as
160
- # an independent line segment. Vertices 2n-1 and 2n define line n. N/2 lines
161
- # are drawn.
162
- #
163
- # [GL_LINE_STRIP]
164
- # Draws a connected group of line
165
- # segments from the first vertex to the last. Vertices n and n+1 define
166
- # line n. N-1 lines are drawn.
167
- #
168
- # [GL_LINE_LOOP]
169
- # Draws a connected group of line segments from the first vertex to the last,
170
- # then back to the first. Vertices n and n+1 define line n. The last line,
171
- # however, is defined by vertices N and 1. N lines are drawn.
172
- #
173
- # [GL_TRIANGLES]
174
- # Treats each triplet of vertices as an independent
175
- # triangle. Vertices 3n-2, 3n-1, and 3n define triangle n. N/3 triangles are
176
- # drawn.
177
- #
178
- # [GL_TRIANGLE_STRIP]
179
- # Draws a connected group of triangles. One triangle is defined for each
180
- # vertex presented after the first two vertices. For odd n, vertices n, n+1,
181
- # and n+2 define triangle n. For even n, vertices n+1, n, and n+2 define
182
- # triangle n. N-2 triangles are drawn.
183
- #
184
- # [GL_TRIANGLE_FAN]
185
- # Draws a connected group of triangles.
186
- # One triangle is defined for each vertex presented after the first two
187
- # vertices. Vertices 1, n+1, and n+2 define triangle n. N-2 triangles are
188
- # drawn.
189
- #
190
- # [GL_QUADS]
191
- # Treats each group of four vertices as an
192
- # independent quadrilateral. Vertices 4n-3, 4n-2, 4n-1, and 4n define
193
- # quadrilateral n. N/4 quadrilaterals are drawn.
194
- #
195
- # [GL_QUAD_STRIP]
196
- # Draws a connected group of quadrilaterals. One quadrilateral is
197
- # defined for each pair of vertices presented after the first pair.
198
- # Vertices 2n-1, 2n, 2n+2, and 2n+1 define quadrilateral n. N/2-1
199
- # quadrilaterals are drawn. Note that the order in which vertices are used to
200
- # construct a quadrilateral from strip data is different from that used with
201
- # independent data.
202
- #
203
- # [GL_POLYGON]
204
- # Draws a single, convex polygon. Vertices 1
205
- # through N define this polygon.
206
- #
207
- # @example
208
- # points = [
209
- # Geom::Point3d.new(0, 0, 0),
210
- # Geom::Point3d.new(9, 0, 0),
211
- # Geom::Point3d.new(9, 9, 0),
212
- # Geom::Point3d.new(0, 9, 0)
213
- # ]
214
- # view.draw(GL_LINE_LOOP, points)
215
- #
216
- # @note If you draw outside the model bounds you need to implement
217
- # {Tool#getExtents} which returns a bounding box large enough to include the
218
- # points you draw. Otherwise your drawing will be clipped.
219
- #
220
- # @overload draw(openglenum, points)
221
- #
222
- # @param [Integer] openglenum
223
- # The item you are going to draw, one of the constants
224
- # from the comments, such as +GL_LINES+.
225
- # @param [Array<Geom::Point3d>] points
226
- #
227
- # @overload draw(openglenum, *points)
228
- #
229
- # @param [Integer] openglenum
230
- # The item you are going to draw, one of the constants
231
- # from the comments, such as +GL_LINES+.
232
- # @param [Array<Geom::Point3d>] points
233
- #
234
- # @overload draw(openglenum, points, **options)
235
- #
236
- # @version SketchUp 2020.0
237
- # @param [Integer] openglenum
238
- # The item you are going to draw, one of the constants
239
- # from the comments, such as +GL_LINES+.
240
- # @param [Array<Geom::Point3d>] points
241
- # @param [Hash] options
242
- # @option options [Array<Geom::Vector3d>] :normals
243
- # Without normals the polygons will be rendered with flat shading. No
244
- # light will affect it. By providing an array of vertex normals lighting
245
- # is turned on and will use the model's current light. Note that the number
246
- # of normals must match the number of points provided.
247
- # @option options [Integer] :texture
248
- # A texture id provided by {#load_texture}.
249
- # @option options [Array<Geom::Vector3d>] :uvs
250
- # Set of UV (Not UVQ) coordinates matching the number of points provided.
251
- # This must be used along with the +:texture+ option.
252
- #
253
- # @overload draw(openglenum, *points, **options)
254
- #
255
- # @version SketchUp 2020.0
256
- # @param [Integer] openglenum
257
- # The item you are going to draw, one of the constants
258
- # from the comments, such as +GL_LINES+.
259
- # @param [Array<Geom::Point3d>] points
260
- # @param [Hash] options
261
- # @option options [Array<Geom::Vector3d>] :normals ([])
262
- # Without normals the polygons will be rendered with flat shading. No
263
- # light will affect it. By providing an array of vertex normals lighting
264
- # is turned on and will use the model's current light. Note that the number
265
- # of normals must match the number of points provided.
266
- # @option options [Integer] :texture
267
- # A texture id provided by {#load_texture}.
268
- # @option options [Array<Geom::Vector3d>] :uvs
269
- # Set of UV (Not UVQ) coordinates matching the number of points provided.
270
- # This must be used along with the +:texture+ option.
271
- #
272
- # @return [Sketchup::View]
273
- #
274
- # @see Tool#getExtents
275
- #
276
- # @version SketchUp 6.0
277
- def draw(*args)
278
- end
279
-
280
- # The {#draw2d} method is used to draw in screen space (using 2D screen
281
- # coordinates) instead of 3D space.
282
- #
283
- # The second parameter is an {Array} of {Geom::Point3d} objects (or several
284
- # individual {Geom::Point3d} objects). These {Geom::Point3d} objects are in
285
- # screen space, not 3D space.
286
- # The X value corresponds to the number of pixels from the left edge of the
287
- # drawing area. The Y value corresponds to the number of pixels down from
288
- # the top of the drawing area. The Z value is not used.
289
- #
290
- # @example
291
- # points = [
292
- # Geom::Point3d.new(0, 0, 0),
293
- # Geom::Point3d.new(8, 0, 0),
294
- # Geom::Point3d.new(8, 4, 0),
295
- # Geom::Point3d.new(0, 4, 0)
296
- # ]
297
- # view.draw2d(GL_LINE_STRIP, points)
298
- #
299
- # @overload draw2d(openglenum, points)
300
- #
301
- # @param [Integer] openglenum
302
- # The item you are going to draw, one of the constants
303
- # from the comments, such as +GL_LINES+.
304
- # @param [Array<Geom::Point3d>] points
305
- #
306
- # @overload draw2d(openglenum, *points)
307
- #
308
- # @param [Integer] openglenum
309
- # The item you are going to draw, one of the constants
310
- # from the comments, such as +GL_LINES+.
311
- # @param [Array<Geom::Point3d>] points
312
- #
313
- # @overload draw2d(openglenum, points, **options)
314
- #
315
- # @version SketchUp 2020.0
316
- # @param [Integer] openglenum
317
- # The item you are going to draw, one of the constants
318
- # from the comments, such as +GL_LINES+.
319
- # @param [Array<Geom::Point3d>] points
320
- # @param [Hash] options
321
- # @option options [Integer] :texture
322
- # A texture id provided by {#load_texture}.
323
- # @option options [Array<Geom::Vector3d>] :uvs
324
- # Set of UV (Not UVQ) coordinates matching the number of points provided.
325
- # This must be used along with the +:texture+ option.
326
- #
327
- # @overload draw2d(openglenum, *points, **options)
328
- #
329
- # @version SketchUp 2020.0
330
- # @param [Integer] openglenum
331
- # The item you are going to draw, one of the constants
332
- # from the comments, such as +GL_LINES+.
333
- # @param [Array<Geom::Point3d>] points
334
- # @param [Hash] options
335
- # @option options [Integer] :texture
336
- # A texture id provided by {#load_texture}.
337
- # @option options [Array<Geom::Vector3d>] :uvs
338
- # Set of UV (Not UVQ) coordinates matching the number of points provided.
339
- # This must be used along with the +:texture+ option.
340
- #
341
- # @return [Sketchup::View]
342
- #
343
- # @see #draw
344
- #
345
- # @see UI.scale_factor
346
- #
347
- # @version SketchUp 6.0
348
- def draw2d(*args)
349
- end
350
-
351
- # The draw_lines method is used to draw disconnected lines.
352
- #
353
- # You must have an even number of points. This method is usually invoked
354
- # within the draw method of a tool.
355
- #
356
- # @example
357
- # point4 = Geom::Point3d.new 0,0,0
358
- # point5 = Geom::Point3d.new 100,100,100
359
- # # returns a view
360
- # status = view.drawing_color="red"
361
- # status = view.draw_lines point4, point5
362
- #
363
- # @overload draw_lines(points, ...)
364
- #
365
- # @param [Array<Geom::Point3d>] points
366
- # An even number of Point3d objects.
367
- # @return [Sketchup::View]
368
- #
369
- # @overload draw_lines(points)
370
- #
371
- # @param [Array<Geom::Point3d>] points An array of Point3d objects.
372
- # @return [Sketchup::View]
373
- #
374
- # @version SketchUp 6.0
375
- def draw_line(*args)
376
- end
377
-
378
- # The draw_lines method is used to draw disconnected lines.
379
- #
380
- # You must have an even number of points. This method is usually invoked
381
- # within the draw method of a tool.
382
- #
383
- # @example
384
- # point4 = Geom::Point3d.new 0,0,0
385
- # point5 = Geom::Point3d.new 100,100,100
386
- # # returns a view
387
- # status = view.drawing_color="red"
388
- # status = view.draw_lines point4, point5
389
- #
390
- # @overload draw_lines(points, ...)
391
- #
392
- # @param [Array<Geom::Point3d>] points
393
- # An even number of Point3d objects.
394
- # @return [Sketchup::View]
395
- #
396
- # @overload draw_lines(points)
397
- #
398
- # @param [Array<Geom::Point3d>] points An array of Point3d objects.
399
- # @return [Sketchup::View]
400
- #
401
- # @version SketchUp 6.0
402
- def draw_lines(*args)
403
- end
404
-
405
- # This method is used to draw points.
406
- #
407
- # This method is usually invoked within the draw method of a tool.
408
- #
409
- # @example
410
- # point3 = Geom::Point3d.new 0,0,0
411
- # # returns a view
412
- # status = view.draw_points(point3, 10, 1, "red")
413
- #
414
- # @param [Array<Geom::Point3d>] points
415
- #
416
- # @param [Integer] size
417
- # Size of the point in pixels.
418
- #
419
- # @param [Integer] style
420
- # 1 = open square, 2 = filled square, 3 = "+", 4 = "X", 5 = "*",
421
- # 6 = open triangle, 7 = filled triangle.
422
- #
423
- # @param [Sketchup::Color] color
424
- #
425
- # @return [Sketchup::View] a View object
426
- #
427
- # @version SketchUp 6.0
428
- def draw_points(points, size = 6, style = 3, color = 'black')
429
- end
430
-
431
- # The draw_polyline method is used to draw a series of connected line segments
432
- # from pt1 to pt2 to pt3, and so on.
433
- #
434
- # This method is usually invoked within the draw method of a tool.
435
- #
436
- # @example
437
- # point12 = Geom::Point3d.new 0,0,0
438
- # point13 = Geom::Point3d.new 10,10,10
439
- # point14 = Geom::Point3d.new 20,20,20
440
- # point15 = Geom::Point3d.new 30,30,30
441
- # status = view.draw_polyline point12, point13, point14, point15
442
- #
443
- # @overload draw_polyline(points, ...)
444
- #
445
- # @param [Array<Geom::Point3d>] points An even number of Point3d objects.
446
- # @return [Sketchup::View]
447
- #
448
- # @overload draw_polyline(points)
449
- #
450
- # @param [Array<Geom::Point3d>] points An array of Point3d objects.
451
- # @return [Sketchup::View]
452
- #
453
- # @version SketchUp 6.0
454
- def draw_polyline(*args)
455
- end
456
-
457
- # This method is used to draw text on the screen and is usually invoked within
458
- # the draw method of a tool.
459
- #
460
- # The {TextVerticalAlignCenter} option will align the text to the center of the
461
- # height of the first line, not the whole boundingbox of the text. To align
462
- # around the full bounds of the text, use {#text_bounds} to compute the
463
- # desired alignment.
464
- #
465
- # The vertical alignment can vary between fonts and platforms. It's recommended
466
- # to test different fonts and find one that fits well across both platforms
467
- # for your purposes.
468
- #
469
- # <b>Example of different vertical alignment and text bounds:</b>
470
- #
471
- # rdoc-image:../images/view-draw-text-with-bounds.png
472
- #
473
- # @bug Prior to SU2022.0, on macOS, the vertical text alignment for some fonts
474
- # could appear to be offset from their expected positions. As of SU2022.0 the
475
- # vertical alignment should be more accurate and consistent.
476
- #
477
- # @example
478
- # class ExampleTool
479
- # def draw(view)
480
- # # This works in all SketchUp versions and draws the text using the
481
- # # default font, size and color (i.e. the model edge color).
482
- # point = Geom::Point3d.new(200, 100, 0)
483
- # view.draw_text(point, "This is a test")
484
- #
485
- # # This works in SketchUp 2016 and up.
486
- # options = {
487
- # :font => "Arial",
488
- # :size => 20,
489
- # :bold => true,
490
- # :align => TextAlignRight
491
- # }
492
- # point = Geom::Point3d.new(200, 200, 0)
493
- # view.draw_text(point, "This is another\ntest", options)
494
- #
495
- # # You can also use Ruby 2.0's named arguments:
496
- # point = Geom::Point3d.new(200, 200, 0)
497
- # view.draw_text(point, "Hello world!", color: "Red")
498
- # end
499
- # end
500
- #
501
- # @example Cross Platform Font Size
502
- # class ExampleTool
503
- # IS_WIN = Sketchup.platform == :platform_win
504
- #
505
- # def draw(view)
506
- # draw_text(view, [100, 200, 0], "Hello World", size: 20)
507
- # end
508
- #
509
- # private
510
- #
511
- # # This will ensure text is drawn with consistent size across platforms,
512
- # # using pixels as size units.
513
- # def draw_text(view, position, text, **options)
514
- # native_options = options.dup
515
- # if IS_WIN && options.key?(:size)
516
- # native_options[:size] = pixels_to_points(options[:size])
517
- # end
518
- # view.draw_text(position, text, **native_options)
519
- # end
520
- #
521
- # def pixels_to_points(pixels)
522
- # ((pixels.to_f / 96.0) * 72.0).round
523
- # end
524
- # end
525
- #
526
- # @note Under Windows the font name must be less than 32 characters - due to
527
- # system limitations.
528
- #
529
- # @note As of SU2017 this will automatically scale the font-size by the same
530
- # factor as {UI.scale_factor}.
531
- #
532
- # @note The font size is platform dependent. On Windows the method expects
533
- # points, where on Mac it's pixels. See "Cross Platform Font Size" example
534
- # for details.
535
- #
536
- # @overload draw_text(point, text)
537
- #
538
- # @param [Geom::Point3d] point A Point3d object representing a 2D coordinate
539
- # in view space.
540
- # @param [String] text The text string to draw.
541
- #
542
- # @overload draw_text(point, text, options = {})
543
- #
544
- # @version SketchUp 2016
545
- # @param [Geom::Point3d] point A Point3d object representing a 2D coordinate
546
- # in view space.
547
- # @param [String] text The text string to draw.
548
- # @param [Hash] options The text can be customized by providing a hash or
549
- # named arguments of options.
550
- # @option options [String] :font The name of the font to use. If it does not
551
- # exist on the system, a default font will be used instead.
552
- # @option options [Integer] :size The size of the font in points
553
- # @option options [Boolean] :bold Controls the Bold property of the font.
554
- # @option options [Boolean] :italic Controls the Italic property of the font.
555
- # @option options [Sketchup::Color] :color The color to draw the text with.
556
- # @option options [Integer] :align The text alignment, one of the following
557
- # constants: {TextAlignLeft}, {TextAlignCenter} or {TextAlignRight}.
558
- # @option options [Integer] :vertical_align <b>Added SketchUp 2020.0.</b>
559
- # The vertical text alignment, one of the following constants:
560
- # {TextVerticalAlignBoundsTop}, {TextVerticalAlignBaseline},
561
- # {TextVerticalAlignCapHeight} or {TextVerticalAlignCenter}. Note that
562
- # some fonts on Mac might not align as expected due to the system
563
- # reporting incorrect font metrics.
564
- #
565
- # @return [Sketchup::View]
566
- #
567
- # @version SketchUp 6.0
568
- def draw_text(*args)
569
- end
570
-
571
- # The drawing_color method is used to set the color that is used for drawing
572
- # to the view.
573
- #
574
- # This method is usually invoked within the draw method of a tool.
575
- #
576
- # @example
577
- # view = view.drawing_color = color
578
- #
579
- # @param [Sketchup::Color, String] color
580
- # A Color object.
581
- #
582
- # @return [Sketchup::View]
583
- #
584
- # @version SketchUp 6.0
585
- def drawing_color=(color)
586
- end
587
-
588
- # The dynamic= method allows you to degrade visual quality while improving
589
- # performance when a model is large and view refresh time is slow. For
590
- # example, if you were using a Ruby script to animate the camera through
591
- # a large scene, you may want to set dynamic to true during that time.
592
- #
593
- # See also camera.rb which is part of the film and stage ruby
594
- # scripts.
595
- #
596
- # @deprecated This method is no longer doing anything.
597
- #
598
- # @example
599
- # view.dynamic = true
600
- #
601
- # @param [Boolean] value
602
- #
603
- # @return [Boolean]
604
- #
605
- # @version SketchUp 6.0
606
- def dynamic=(value)
607
- end
608
-
609
- # The field_of_view method is used get the view's field of view setting, in
610
- # degrees.
611
- #
612
- # @example
613
- # fov = Sketchup.active_model.active_view.field_of_view
614
- #
615
- # @return [Float] the field of view
616
- #
617
- # @version SketchUp 6.0
618
- def field_of_view
619
- end
620
-
621
- # The field_of_view= method is used set the view's field of view setting,
622
- # in degrees.
623
- #
624
- # @example
625
- # my_view = Sketchup.active_model.active_view
626
- # my_view.field_of_view = 45
627
- # my_view.invalidate
628
- #
629
- # @param [Numeric] fov
630
- # the field of view
631
- #
632
- # @return [Numeric]
633
- #
634
- # @version SketchUp 6.0
635
- def field_of_view=(fov)
636
- end
637
-
638
- # The guess_target method is used to guess at what the user is looking at when
639
- # you have a perspective view.
640
- #
641
- # This method is useful when writing a viewing tool. See also camera.rb which
642
- # is part of the film and stage ruby scripts.
643
- #
644
- # @example
645
- # target = view.guess_target
646
- #
647
- # @return [Geom::Point3d] a Point3d object representing the point in the
648
- # model that the user is likely interested in.
649
- #
650
- # @version SketchUp 6.0
651
- def guess_target(*args)
652
- end
653
-
654
- # The inference_locked? method is used to determine if inference locking is on
655
- # for the view.
656
- #
657
- # @example
658
- # model = Sketchup.active_model
659
- # view = model.active_view
660
- # status = view.inference_locked
661
- #
662
- # @return [Boolean]
663
- #
664
- # @version SketchUp 6.0
665
- def inference_locked?
666
- end
667
-
668
- # The inputpoint method is used to retrieve an input point.
669
- #
670
- # This will normally be used inside one of the mouse event handling methods in
671
- # a tool. Usually, it is preferable to create the InputPoint first and then
672
- # use the pick method on it.
673
- #
674
- # @example
675
- # inputpoint = view.inputpoint x, y, inputpoint1
676
- #
677
- # @param [Numeric] x
678
- # A x value.
679
- #
680
- # @param [Numeric] y
681
- # A y value.
682
- #
683
- # @param [Sketchup::InputPoint] inputpoint1
684
- # An InputPoint object.
685
- #
686
- # @return [Sketchup::InputPoint]
687
- #
688
- # @version SketchUp 6.0
689
- def inputpoint(x, y, inputpoint1)
690
- end
691
-
692
- # The invalidate method is used mark the view as in need of a redraw.
693
- #
694
- # @example
695
- # model = Sketchup.active_model
696
- # view = model.active_view
697
- # invalidated_view = view.invalidate
698
- #
699
- # @note This is the preferred method to update the viewport. Use this before
700
- # trying to use {#refresh}.
701
- #
702
- # @return [Sketchup::View] the invalidated View object
703
- #
704
- # @version SketchUp 6.0
705
- def invalidate
706
- end
707
-
708
- # The last_refresh_time method is used to retrieve the time for the last full
709
- # view refresh.
710
- #
711
- # @example
712
- # time = view.last_refresh_time
713
- #
714
- # @return [Float] time in milliseconds
715
- #
716
- # @version SketchUp 6.0
717
- def last_refresh_time(*args)
718
- end
719
-
720
- # The line_stipple= method is used to set the line pattern to use for drawing.
721
- # The stipple pattern is given as a string.
722
- # Valid strings are:
723
- # "." (Dotted Line),
724
- # "-" (Short Dashes Line),
725
- # "_" (Long Dashes Line),
726
- # "-.-" (Dash Dot Dash Line),
727
- # "" (Solid Line).
728
- #
729
- # This method is usually invoked within the draw method of a tool.
730
- #
731
- # @example
732
- # point8 = Geom::Point3d.new 0,0,0
733
- # point9 = Geom::Point3d.new 100,100,100
734
- # view.line_stipple = "-.-"
735
- # view = view.draw_lines point8, point9
736
- #
737
- # @param [String] pattern
738
- # A string stipple pattern, such as "-.-"
739
- #
740
- # @return [Sketchup::View] the View object
741
- #
742
- # @version SketchUp 6.0
743
- def line_stipple=(pattern)
744
- end
745
-
746
- # The line_width= method is used to set the line width to use for drawing. The
747
- # value is a Double indicating the desired width in pixels.
748
- #
749
- # This method is usually invoked within the draw method of a tool.
750
- #
751
- # @example
752
- # view.line_width = width
753
- #
754
- # @note As of SU2017 this will automatically scale the line width by the same
755
- # factor as {UI.scale_factor}.
756
- #
757
- # @param [Integer] width
758
- # The width in pixels.
759
- #
760
- # @return [Integer]
761
- #
762
- # @version SketchUp 6.0
763
- def line_width=(width)
764
- end
765
-
766
- # Loads a texture to be drawn with {#draw} or {#draw2d}.
767
- #
768
- # @example
769
- # module Example
770
- # class MyTool
771
- # def activate
772
- # view = Sketchup.active_model.active_view
773
- # image_rep = view.model.materials.current.texture.image_rep
774
- # @texture_id = view.load_texture(image_rep)
775
- # end
776
- #
777
- # def deactivate(view)
778
- # view.release_texture(@texture_id)
779
- # end
780
- #
781
- # def draw(view)
782
- # points = [ [0, 0, 0], [9, 0, 0], [9, 9, 0], [0, 9, 0] ]
783
- # uvs = [ [0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0] ]
784
- # view.draw(GL_QUADS, points, texture: @texture_id, uvs: uvs)
785
- # end
786
- # end
787
- # end
788
- # Sketchup.active_model.select_tool(Example::MyTool.new)
789
- #
790
- # @note To conserve resources on the user's machine, textures can be loaded
791
- # only when there is a Ruby tool on the tool stack. Make sure to release the
792
- # texture when it's no longer needed. Any textures not already released
793
- # when the last Ruby tool on the tool stack is removed will be automatically
794
- # released by SketchUp.
795
- #
796
- # @note Avoid loading and releasing textures within the {Sketchup::Tool#draw}
797
- # event as that is not efficient.
798
- #
799
- # @param [Sketchup::ImageRep] image_rep
800
- #
801
- # @raise [ArgumentError] if the provided {Sketchup::ImageRep} is not valid.
802
- #
803
- # @raise [RuntimeError] if a Ruby tool was not on the tool stack.
804
- #
805
- # @return [Integer] A resource ID referring to the image loaded.
806
- #
807
- # @see #release_texture
808
- #
809
- # @see #draw
810
- #
811
- # @version SketchUp 2020.0
812
- def load_texture(image_rep)
813
- end
814
-
815
- # The {#lock_inference} method is used to lock or unlock an inference.
816
- #
817
- # This method will typically be called from inside a tool class when the user
818
- # presses the shift key or arrow keys.
819
- #
820
- # With no arguments it unlocks all inferences. With one argument it locks
821
- # inference based on that passed {Sketchup::InputPoint}'s entities, e.g. along
822
- # a {Sketchup::Edge}'s line or a {Sketchup::Face}'s plane. With two arguments,
823
- # it locks inference along an axis.
824
- #
825
- # @example
826
- # view = view.lock_inference
827
- # view = view.lock_inference(inputpoint)
828
- # view = view.lock_inference(inputpoint1, inputpoint2)
829
- #
830
- # @overload lock_inference
831
- #
832
- #
833
- # @overload lock_inference(inputpoint)
834
- #
835
- # @param [Sketchup::InputPoint] inputpoint
836
- #
837
- # @overload lock_inference(inputpoint, inputpoint2)
838
- #
839
- # @param [Sketchup::InputPoint] inputpoint
840
- # @param [Sketchup::InputPoint] inputpoint2
841
- # @example
842
- # # Lock inference to X axis.
843
- # # The points can be anywhere; only the vector between them affects
844
- # # the result.
845
- # view.lock_inference(
846
- # Sketchup::InputPoint.new(ORIGIN),
847
- # Sketchup::InputPoint.new(Geom::Point3d.new(1, 0, 0))
848
- # )
849
- #
850
- # @return [Sketchup::View] a View object
851
- #
852
- # @version SketchUp 6.0
853
- def lock_inference(*args)
854
- end
855
-
856
- # The model method is used to retrieve the model for the current view.
857
- #
858
- # @example
859
- # model = view.model
860
- #
861
- # @return [Sketchup::Model] the model for this view
862
- #
863
- # @version SketchUp 6.0
864
- def model
865
- end
866
-
867
- # The pick_helper method is used to retrieve a pick helper for the view. See
868
- # the PickHelper class for information on pick helpers.
869
- #
870
- # This call returns an initialized PickHelper.
871
- #
872
- # @example
873
- # model = Sketchup.active_model
874
- # view = model.active_view
875
- # ph = view.pick_helper
876
- #
877
- # @overload pick_helper
878
- #
879
- # @return [Sketchup::PickHelper] a PickHelper object
880
- #
881
- # @overload pick_helper(x, y, aperture = 0)
882
- #
883
- # @param [Integer] x
884
- # @param [Integer] y
885
- # @param [Integer] aperture
886
- # @return [Sketchup::PickHelper] a PickHelper object
887
- #
888
- # @version SketchUp 6.0
889
- def pick_helper(*args)
890
- end
891
-
892
- # The pickray method is used to retrieve a ray passing through a given screen
893
- # position in the viewing direction.
894
- #
895
- # @example
896
- # ray = view.pickray x, y
897
- #
898
- # @overload pickray(screen_point)
899
- #
900
- # @param [Array(Integer, Integer)] screen_point
901
- # @return [Array(Geom::Point3d, Geom::Vector3d)] a ray
902
- #
903
- # @overload pickray(x, y)
904
- #
905
- # @param [Integer] x
906
- # @param [Integer] y
907
- # @return [Array(Geom::Point3d, Geom::Vector3d)] a ray
908
- #
909
- # @version SketchUp 6.0
910
- def pickray(*args)
911
- end
912
-
913
- # The pixels_to_model method is used to compute a model size from a pixel size
914
- # at a given point.
915
- #
916
- # This method is useful for deciding how big to draw something based on a
917
- # desired size in pixels.
918
- #
919
- # @example
920
- # size = view.pixels_to_model(pixels, point)
921
- #
922
- # @note As of SU2017 this will automatically scale the pixel-size by the same
923
- # factor as {UI.scale_factor}.
924
- #
925
- # @param [Numeric] pixels
926
- # The pixel size.
927
- #
928
- # @param [Geom::Point3d] point
929
- # A Point3d object where the size will be calculated from.
930
- #
931
- # @return [Float] the model size
932
- #
933
- # @version SketchUp 6.0
934
- def pixels_to_model(pixels, point)
935
- end
936
-
937
- # The refresh method is used to immediately force a redraw of the view.
938
- #
939
- # @example
940
- # model = Sketchup.active_model
941
- # view = model.active_view
942
- # refreshed_view = view.refresh
943
- #
944
- # @note This method might impact performance and if used incorrectly cause
945
- # instability or crashes. Don't use this unless you have verified that
946
- # you cannot use {#invalidate} instead.
947
- #
948
- # @return [Sketchup::View] the refreshed View object
949
- #
950
- # @version SketchUp 7.1
951
- def refresh
952
- end
953
-
954
- # Releases a texture loaded via {#load_texture}, freeing up it's memory.
955
- # It's good practice to do so whenever there is no longer any need for the
956
- # resource.
957
- #
958
- # For example, when your tool deactivates you probably want to release your
959
- # resources as you don't know if your tool will be used again.
960
- #
961
- # @example
962
- # module Example
963
- # class MyTool
964
- # def activate
965
- # view = Sketchup.active_model.active_view
966
- # image_rep = view.model.materials.current.texture.image_rep
967
- # @texture_id = view.load_texture(image_rep)
968
- # end
969
- #
970
- # def deactivate(view)
971
- # view.release_texture(@texture_id)
972
- # end
973
- #
974
- # def draw(view)
975
- # points = [ [0, 0, 0], [9, 0, 0], [9, 9, 0], [0, 9, 0] ]
976
- # uvs = [ [0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0] ]
977
- # view.draw(GL_QUADS, points, texture: @texture_id, uvs: uvs)
978
- # end
979
- # end
980
- # end
981
- # Sketchup.active_model.select_tool(Example::MyTool.new)
982
- #
983
- # @param [Integer] texture_id
984
- #
985
- # @return [Boolean] +true+ if texture was released. +false+ otherwise.
986
- #
987
- # @see #load_texture
988
- def release_texture(texture_id)
989
- end
990
-
991
- # The remove_observer method is used to remove an observer from the current
992
- # object.
993
- #
994
- # @example
995
- # view = Sketchup.active_model.active_view
996
- # status = view.remove_observer observer
997
- #
998
- # @param [Object] observer
999
- # An observer.
1000
- #
1001
- # @return [Boolean] true if successful, false if unsuccessful.
1002
- #
1003
- # @version SketchUp 6.0
1004
- def remove_observer(observer)
1005
- end
1006
-
1007
- # The screen_coords method is used to retrieve the screen coordinates of the
1008
- # given point on the screen.
1009
- #
1010
- # The x and y values returned correspond to the x and y screen coordinates.
1011
- # Ignore the z values. If the referenced point is not in the current
1012
- # viewport, the x and/or y value may be negative.
1013
- #
1014
- # @example
1015
- # point = view.screen_coords(ORIGIN)
1016
- #
1017
- # @param [Geom::Point3d] point3d
1018
- # A Point3d object.
1019
- #
1020
- # @return [Geom::Point3d] A Point3d containing the screen position
1021
- #
1022
- # @version SketchUp 6.0
1023
- def screen_coords(point3d)
1024
- end
1025
-
1026
- # Set the drawing color for the view based on the direction of a line that you
1027
- # want to draw. These colors will match the axes colors in the SketchUp model
1028
- # (typically blue for straight up and down, etc.)
1029
- #
1030
- # This method is usually invoked within the draw method of a tool.
1031
- #
1032
- # @example
1033
- # view = view.set_color_from_line point1, point2
1034
- #
1035
- # @param [Geom::Point3d] point1
1036
- # Point3d object representing first point in the line.
1037
- #
1038
- # @param [Geom::Point3d] point2
1039
- # Point3d object representing the second point in the line.
1040
- #
1041
- # @return [Sketchup::View] a View object
1042
- #
1043
- # @version SketchUp 6.0
1044
- def set_color_from_line(point1, point2)
1045
- end
1046
-
1047
- # The show_frame method is used to show a frame of an Animation object in the
1048
- # current view.
1049
- #
1050
- # You can supply an optional delay in seconds to wait before showing the next
1051
- # frame. This can be useful to control the speed at which the animation runs.
1052
- #
1053
- # @example
1054
- # status = view.show_frame delay
1055
- #
1056
- # @param [Numeric] delay
1057
- # An optional delay in seconds.
1058
- #
1059
- # @return [Sketchup::View]
1060
- #
1061
- # @version SketchUp 6.0
1062
- def show_frame(delay)
1063
- end
1064
-
1065
- # This method is used to compute the bounds of the text when
1066
- # using {#draw_text}. The bounds are not a tight fit around the top and bottom
1067
- # as they include varying amount of line spacing depending on the font used.
1068
- #
1069
- # The {TextVerticalAlignCenter} option will align the text to the center of the
1070
- # height of the first line, not the whole boundingbox of the text.
1071
- #
1072
- # <b>Example of different vertical alignment and text bounds:</b>
1073
- #
1074
- # rdoc-image:../images/view-draw-text-with-bounds.png
1075
- #
1076
- # @example
1077
- # class ExampleTool
1078
- # TEXT_OPTIONS = {
1079
- # :font => "Arial",
1080
- # :size => 20,
1081
- # :bold => true,
1082
- # :align => TextAlignRight,
1083
- # :align => TextVerticalAlignBaseline
1084
- # }
1085
- #
1086
- # # Since `draw` is called frequently it can be useful to pre-compute and
1087
- # # cache values used by `draw`.
1088
- # def activate
1089
- # @text = "Hello SketchUp"
1090
- # @position = Geom::Point3d.new(200, 200, 0)
1091
- #
1092
- # # Compute text bounds
1093
- # view = Sketchup.active_model.active_view
1094
- # bounds = view.text_bounds(@position, @text, TEXT_OPTIONS)
1095
- #
1096
- # # Compute polygon for the text bounds
1097
- # x1, y1 = bounds.upper_left.to_a
1098
- # x2, y2 = bounds.lower_right.to_a
1099
- # @points = [
1100
- # Geom::Point3d.new(x1, y1),
1101
- # Geom::Point3d.new(x1, y2),
1102
- # Geom::Point3d.new(x2, y2),
1103
- # Geom::Point3d.new(x2, y1),
1104
- # ]
1105
- # end
1106
- #
1107
- # def draw(view)
1108
- # # Draw text bounds
1109
- # view.drawing_color = Sketchup::Color.new(255, 0, 0, 64)
1110
- # view.draw2d(GL_QUADS, @points)
1111
- #
1112
- # # Draw text
1113
- # view.draw_text(@position, @text, TEXT_OPTIONS)
1114
- # end
1115
- # end
1116
- #
1117
- # @note Under Windows the font name must be less than 32 characters - due to
1118
- # system limitations.
1119
- #
1120
- # @option options [String] :font The name of the font to use. If it does not
1121
- # exist on the system, a default font will be used instead.
1122
- #
1123
- # @option options [Integer] :size The size of the font in points
1124
- #
1125
- # @option options [Boolean] :bold Controls the Bold property of the font.
1126
- #
1127
- # @option options [Boolean] :italic Controls the Italic property of the font.
1128
- #
1129
- # @option options [Integer] :align The text alignment, one of the following
1130
- # constants: {TextAlignLeft}, {TextAlignCenter} or {TextAlignRight}.
1131
- #
1132
- # @option options [Integer] :vertical_align The vertical text alignment
1133
- # one of the following constants:
1134
- # {TextVerticalAlignBoundsTop}, {TextVerticalAlignBaseline},
1135
- # {TextVerticalAlignCapHeight} or {TextVerticalAlignCenter}.
1136
- #
1137
- # @param [Geom::Point3d] point
1138
- # A Point3d object representing a 2D coordinate
1139
- # in view space.
1140
- #
1141
- # @param [String] text
1142
- # The text string to draw.
1143
- #
1144
- # @param [Hash] options
1145
- # The text can be customized by providing a hash or
1146
- # named arguments of options.
1147
- #
1148
- # @return [Geom::Bounds2d]
1149
- #
1150
- # @see #draw_text
1151
- #
1152
- # @version SketchUp 2020.0
1153
- def text_bounds(point, text, options = {})
1154
- end
1155
-
1156
- # Set a tooltip to display in the view. This is useful for displaying tooltips
1157
- # in a tool that you write in Ruby.
1158
- #
1159
- # @example
1160
- # tooltip = view.tooltip = string
1161
- #
1162
- # @param [String] string
1163
- # The string tooltip.
1164
- #
1165
- # @return [String] the new tooltip string
1166
- #
1167
- # @version SketchUp 6.0
1168
- def tooltip=(string)
1169
- end
1170
-
1171
- # The vpheight method is used to retrieve the height of the viewport for the
1172
- # view.
1173
- #
1174
- # @example
1175
- # model = Sketchup.active_model
1176
- # view = model.active_view
1177
- # height = view.vpheight
1178
- #
1179
- # @return [Integer] the height of the viewport in physical pixels.
1180
- #
1181
- # @version SketchUp 6.0
1182
- def vpheight
1183
- end
1184
-
1185
- # The vpwidth method is used to retrieve the width of the viewport for the
1186
- # view.
1187
- #
1188
- # @example
1189
- # width = view.vpwidth
1190
- #
1191
- # @return [Integer] the width of the viewport in physical pixels.
1192
- #
1193
- # @version SketchUp 6.0
1194
- def vpwidth
1195
- end
1196
-
1197
- # The {#write_image} method is used to write the current view to an image file.
1198
- #
1199
- # Supported file types are `.png`, `.jpg`, `.jpeg`, `gif`, `.bmp`, `.tif`.
1200
- # For other file formats available from the GUI in File > Export > 2D
1201
- # Graphics, .e.g `.pdf`, use {Sketchup::Model#export}.
1202
- #
1203
- # compression = 1.0)
1204
- # @note Prefer the overload with option hash instead of this variant. This
1205
- # overload is not updated with new options.
1206
- #
1207
- # @example
1208
- # filename = File.join(Sketchup.temp_dir, 'example.png')
1209
- # antialias = false
1210
- # compression = 0.9
1211
- # model = Sketchup.active_model
1212
- # view = model.active_view
1213
- # view.write_image(filename, 640, 480, antialias, compression)
1214
- #
1215
- # @param [String] filename
1216
- # The filename for the saved image
1217
- # @param [Integer] width
1218
- # Width in pixels, defaults to the current viewport width {#vpwidth}.
1219
- # @param [Integer] height
1220
- # Height in pixels, defaults to the current viewport height {#vpheight}.
1221
- # @param [Boolean] antialias
1222
- # @param [Float] compression
1223
- # Compression factor for JPEG images, between +0.0+ and +1.0+.
1224
- #
1225
- # @overload write_image(filename, width = view.vpwidth, height = view.vpheight, antialias = false,
1226
- #
1227
- #
1228
- # @overload write_image(options)
1229
- #
1230
- # @example
1231
- # options = {
1232
- # :filename => File.join(Sketchup.temp_dir, 'example.png'),
1233
- # :width => 640,
1234
- # :height => 480,
1235
- # :antialias => false,
1236
- # :compression => 0.9,
1237
- # :transparent => true
1238
- # }
1239
- # model = Sketchup.active_model
1240
- # view = model.active_view
1241
- # view.write_image(options)
1242
- #
1243
- # @version SketchUp 7
1244
- # @param [Hash] options
1245
- # @option options [String] filename The filename for the saved image.
1246
- # @option options [Integer] width (#vpwidth) Width in pixels (max +16000+).
1247
- # @option options [Integer] height (#vpheight) Height in pixels (max +16000+).
1248
- # @option options [Float] scale_factor (1.0) Scaling factor for
1249
- # elements that are viewport dependent, such as text heights, arrow heads,
1250
- # line widths, stipple patterns, etc. (Added in SketchUp 2019.2)
1251
- # @option options [Boolean] antialias (false)
1252
- # @option options [Float] compression (1.0) Compression factor for JPEG,
1253
- # images between +0.0+ and +1.0+.
1254
- # @option options [Boolean] transparent (false) Added in SketchUp 8.
1255
- #
1256
- # @overload write_image(options)
1257
- #
1258
- # It is possible to dump the framebuffer to file by setting +:source+ to
1259
- # +:framebuffer+. When saving the framebuffer only the following options are
1260
- # valid.
1261
- #
1262
- # @example
1263
- # options = {
1264
- # :filename => File.join(Sketchup.temp_dir, 'example.png'),
1265
- # :source => :framebuffer,
1266
- # :compression => 0.9,
1267
- # }
1268
- # model = Sketchup.active_model
1269
- # view = model.active_view
1270
- # view.write_image(options)
1271
- #
1272
- # @version SketchUp 7
1273
- # @param [Hash] options
1274
- # @option options [String] filename The filename for the saved image.
1275
- # @option options [Boolean] source (:image) Set to +:framebuffer+ to dump the
1276
- # current framebuffer.
1277
- # @option options [Float] compression (1.0) Compression factor for JPEG,
1278
- # images between +0.0+ and +1.0+.
1279
- #
1280
- # @return [Boolean]
1281
- #
1282
- # @version SketchUp 6.0
1283
- def write_image(*args)
1284
- end
1285
-
1286
- # The zoom method is used to zoom in or out by some zoom factor.
1287
- #
1288
- # @example
1289
- # view = view.zoom factor
1290
- # view = view.zoom selection
1291
- # view = view.zoom entity
1292
- # view = view.zoom array_of_entities
1293
- #
1294
- # @param [Numeric, Sketchup::Selection, Sketchup::Entity, Array<Sketchup::Entity>] zoom_or_ents
1295
- # A Float zoom factor from 1.0 or larger or an Array or
1296
- # collection of entities to "zoom extents" around.
1297
- #
1298
- # @return [Sketchup::View] the zoomed View object
1299
- #
1300
- # @version SketchUp 6.0
1301
- def zoom(zoom_or_ents)
1302
- end
1303
-
1304
- # The zoom_extents method is used to zoom to the extents about the entire
1305
- # model, as if the user has selected the zoom extents command from the menu.
1306
- #
1307
- # @example
1308
- # view = Sketchup.active_model.active_view
1309
- # new_view = view.zoom_extents
1310
- #
1311
- # @return [Sketchup::View] the zoomed View object
1312
- #
1313
- # @version SketchUp 6.0
1314
- def zoom_extents
1315
- end
1316
-
1317
- end
1
+ # Copyright:: Copyright 2023 Trimble Inc.
2
+ # License:: The MIT License (MIT)
3
+
4
+ # This class contains methods to manipulate the current point of view of the
5
+ # model. The drawing methods here (draw_line, draw_polyline, etc) are meant to
6
+ # be invoked within a tool's Tool.draw method. Calling them outside Tool.draw
7
+ # will have no effect.
8
+ #
9
+ # You access the View by calling the Model.active_view method.
10
+ #
11
+ # @example
12
+ # view = Sketchup.active_model.active_view
13
+ #
14
+ # @version SketchUp 6.0
15
+ class Sketchup::View
16
+
17
+ # Instance Methods
18
+
19
+ # The add_observer method is used to add an observer to the current object.
20
+ #
21
+ # @example
22
+ # view = Sketchup.active_model.active_view
23
+ # status = view.add_observer observer
24
+ #
25
+ # @param [Object] observer
26
+ # An observer.
27
+ #
28
+ # @return [Boolean] true if successful, false if unsuccessful.
29
+ #
30
+ # @version SketchUp 6.0
31
+ def add_observer(observer)
32
+ end
33
+
34
+ # The {#animation=} method is used to set an animation that is displayed for a
35
+ # view. See {Sketchup::Animation} for details on how to create an animation object.
36
+ #
37
+ # @example
38
+ # animation = ViewSpinner.new
39
+ # model = Sketchup.active_model
40
+ # view = model.active_view
41
+ # anim = view.animation = animation
42
+ #
43
+ # @param [#nextFrame] animation
44
+ #
45
+ # @version SketchUp 6.0
46
+ def animation=(animation)
47
+ end
48
+
49
+ # The average_refresh_time is used to set the average time used to refresh the
50
+ # current model in the view. This can be used to estimate the frame rate for
51
+ # an animation.
52
+ #
53
+ # @example
54
+ # model = Sketchup.active_model
55
+ # view = model.active_view
56
+ # time = view.average_refresh_time
57
+ #
58
+ # @return [Float] the time in seconds
59
+ #
60
+ # @version SketchUp 6.0
61
+ def average_refresh_time
62
+ end
63
+
64
+ # The camera method is used to retrieve the camera for the view.
65
+ #
66
+ # @example
67
+ # camera = view.camera
68
+ #
69
+ # @return [Sketchup::Camera] a Camera object
70
+ #
71
+ # @version SketchUp 6.0
72
+ def camera
73
+ end
74
+
75
+ # The {#camera=} method is used to set the camera for the view. If a transition
76
+ # time is given, then it will animate the transition from the current camera
77
+ # to the new one.
78
+ #
79
+ # @example
80
+ # camera = Sketchup::Camera.new([5, 5, 9], [5, 10, 0], Z_AXIS)
81
+ # view = Sketchup.active_model.active_view
82
+ # view.camera = camera
83
+ #
84
+ # @overload camera=(camera)
85
+ #
86
+ # @param [Sketchup::Camera] camera The new camera object.
87
+ #
88
+ # @overload camera=(camera_and_transition)
89
+ #
90
+ # @param [Array(Sketchup::Camera, Float)] camera_and_transition
91
+ # The second item in the array represents the transition time from the
92
+ # existing camera to the new one.
93
+ #
94
+ # @version SketchUp 6.0
95
+ def camera=(arg)
96
+ end
97
+
98
+ # The center method is used to retrieve the coordinates of the center of the
99
+ # view in pixels. It is returned as an array of 2 values for x and y.
100
+ #
101
+ # @example
102
+ # model = Sketchup.active_model
103
+ # view = model.active_view
104
+ # c = view.center
105
+ #
106
+ # @return [Geom::Point3d] the center of the view
107
+ #
108
+ # @version SketchUp 6.0
109
+ def center
110
+ end
111
+
112
+ # The corner method is used to retrieve the coordinates of one of the corners
113
+ # of the view. The argument is an index between 0 and 3 that identifies which
114
+ # corner you want. This method returns an array with two integers which are
115
+ # the coordinates of the corner of the view in the view space. If the view
116
+ # uses a Camera with a fixed aspect ratio, then the corners are the corners of
117
+ # the viewing are of the camera which might be different than the actual
118
+ # corners of the view itself.
119
+ #
120
+ # The index numbers are as follows:
121
+ # - 0: top left,
122
+ # - 1: top right,
123
+ # - 2: bottom left,
124
+ # - 3: bottom right.
125
+ #
126
+ # @example
127
+ # point = view.corner index
128
+ #
129
+ # @param [Integer] index
130
+ # A value between (or including) 0 and 3 identifying the
131
+ # corner whose coordinate you want to retrieve.
132
+ #
133
+ # @return [Array(Integer, Integer)] a 2d array [w,h] representing the screen point
134
+ #
135
+ # @version SketchUp 6.0
136
+ def corner(index)
137
+ end
138
+
139
+ # The {#draw} method is used to do basic drawing. This method can only be
140
+ # called from within the {Tool#draw} method of a tool that you implement in
141
+ # Ruby.
142
+ #
143
+ # The following constants are all OpenGL terms and have been externalized to
144
+ # Ruby. Here is a summary of their meanings:
145
+ #
146
+ # [GL_POINTS]
147
+ # Treats each vertex as a single point. Vertex n defines point n. N
148
+ # points are drawn.
149
+ #
150
+ # [GL_LINES]
151
+ # Treats each pair of vertices as
152
+ # an independent line segment. Vertices 2n-1 and 2n define line n. N/2 lines
153
+ # are drawn.
154
+ #
155
+ # [GL_LINE_STRIP]
156
+ # Draws a connected group of line
157
+ # segments from the first vertex to the last. Vertices n and n+1 define
158
+ # line n. N-1 lines are drawn.
159
+ #
160
+ # [GL_LINE_LOOP]
161
+ # Draws a connected group of line segments from the first vertex to the last,
162
+ # then back to the first. Vertices n and n+1 define line n. The last line,
163
+ # however, is defined by vertices N and 1. N lines are drawn.
164
+ #
165
+ # [GL_TRIANGLES]
166
+ # Treats each triplet of vertices as an independent
167
+ # triangle. Vertices 3n-2, 3n-1, and 3n define triangle n. N/3 triangles are
168
+ # drawn.
169
+ #
170
+ # [GL_TRIANGLE_STRIP]
171
+ # Draws a connected group of triangles. One triangle is defined for each
172
+ # vertex presented after the first two vertices. For odd n, vertices n, n+1,
173
+ # and n+2 define triangle n. For even n, vertices n+1, n, and n+2 define
174
+ # triangle n. N-2 triangles are drawn.
175
+ #
176
+ # [GL_TRIANGLE_FAN]
177
+ # Draws a connected group of triangles.
178
+ # One triangle is defined for each vertex presented after the first two
179
+ # vertices. Vertices 1, n+1, and n+2 define triangle n. N-2 triangles are
180
+ # drawn.
181
+ #
182
+ # [GL_QUADS]
183
+ # Treats each group of four vertices as an
184
+ # independent quadrilateral. Vertices 4n-3, 4n-2, 4n-1, and 4n define
185
+ # quadrilateral n. N/4 quadrilaterals are drawn.
186
+ #
187
+ # [GL_QUAD_STRIP]
188
+ # Draws a connected group of quadrilaterals. One quadrilateral is
189
+ # defined for each pair of vertices presented after the first pair.
190
+ # Vertices 2n-1, 2n, 2n+2, and 2n+1 define quadrilateral n. N/2-1
191
+ # quadrilaterals are drawn. Note that the order in which vertices are used to
192
+ # construct a quadrilateral from strip data is different from that used with
193
+ # independent data.
194
+ #
195
+ # [GL_POLYGON]
196
+ # Draws a single, convex polygon. Vertices 1
197
+ # through N define this polygon.
198
+ #
199
+ # @example
200
+ # points = [
201
+ # Geom::Point3d.new(0, 0, 0),
202
+ # Geom::Point3d.new(9, 0, 0),
203
+ # Geom::Point3d.new(9, 9, 0),
204
+ # Geom::Point3d.new(0, 9, 0)
205
+ # ]
206
+ # view.draw(GL_LINE_LOOP, points)
207
+ #
208
+ # @note If you draw outside the model bounds you need to implement
209
+ # {Tool#getExtents} which returns a bounding box large enough to include the
210
+ # points you draw. Otherwise your drawing will be clipped.
211
+ #
212
+ # @overload draw(openglenum, points)
213
+ #
214
+ # @param [Integer] openglenum
215
+ # The item you are going to draw, one of the constants
216
+ # from the comments, such as +GL_LINES+.
217
+ # @param [Array<Geom::Point3d>] points
218
+ #
219
+ # @overload draw(openglenum, *points)
220
+ #
221
+ # @param [Integer] openglenum
222
+ # The item you are going to draw, one of the constants
223
+ # from the comments, such as +GL_LINES+.
224
+ # @param [Array<Geom::Point3d>] points
225
+ #
226
+ # @overload draw(openglenum, points, **options)
227
+ #
228
+ # @version SketchUp 2020.0
229
+ # @param [Integer] openglenum
230
+ # The item you are going to draw, one of the constants
231
+ # from the comments, such as +GL_LINES+.
232
+ # @param [Array<Geom::Point3d>] points
233
+ # @param [Hash] options
234
+ # @option options [Array<Geom::Vector3d>] :normals
235
+ # Without normals the polygons will be rendered with flat shading. No
236
+ # light will affect it. By providing an array of vertex normals lighting
237
+ # is turned on and will use the model's current light. Note that the number
238
+ # of normals must match the number of points provided.
239
+ # @option options [Integer] :texture
240
+ # A texture id provided by {#load_texture}.
241
+ # @option options [Array<Geom::Vector3d>] :uvs
242
+ # Set of UV (Not UVQ) coordinates matching the number of points provided.
243
+ # This must be used along with the +:texture+ option.
244
+ #
245
+ # @overload draw(openglenum, *points, **options)
246
+ #
247
+ # @version SketchUp 2020.0
248
+ # @param [Integer] openglenum
249
+ # The item you are going to draw, one of the constants
250
+ # from the comments, such as +GL_LINES+.
251
+ # @param [Array<Geom::Point3d>] points
252
+ # @param [Hash] options
253
+ # @option options [Array<Geom::Vector3d>] :normals ([])
254
+ # Without normals the polygons will be rendered with flat shading. No
255
+ # light will affect it. By providing an array of vertex normals lighting
256
+ # is turned on and will use the model's current light. Note that the number
257
+ # of normals must match the number of points provided.
258
+ # @option options [Integer] :texture
259
+ # A texture id provided by {#load_texture}.
260
+ # @option options [Array<Geom::Vector3d>] :uvs
261
+ # Set of UV (Not UVQ) coordinates matching the number of points provided.
262
+ # This must be used along with the +:texture+ option.
263
+ #
264
+ # @return [Sketchup::View]
265
+ #
266
+ # @see Tool#getExtents
267
+ #
268
+ # @version SketchUp 6.0
269
+ def draw(*args)
270
+ end
271
+
272
+ # The {#draw2d} method is used to draw in screen space (using 2D screen
273
+ # coordinates) instead of 3D space.
274
+ #
275
+ # The second parameter is an {Array} of {Geom::Point3d} objects (or several
276
+ # individual {Geom::Point3d} objects). These {Geom::Point3d} objects are in
277
+ # screen space, not 3D space.
278
+ # The X value corresponds to the number of pixels from the left edge of the
279
+ # drawing area. The Y value corresponds to the number of pixels down from
280
+ # the top of the drawing area. The Z value is not used.
281
+ #
282
+ # @example
283
+ # points = [
284
+ # Geom::Point3d.new(0, 0, 0),
285
+ # Geom::Point3d.new(8, 0, 0),
286
+ # Geom::Point3d.new(8, 4, 0),
287
+ # Geom::Point3d.new(0, 4, 0)
288
+ # ]
289
+ # view.draw2d(GL_LINE_STRIP, points)
290
+ #
291
+ # @overload draw2d(openglenum, points)
292
+ #
293
+ # @param [Integer] openglenum
294
+ # The item you are going to draw, one of the constants
295
+ # from the comments, such as +GL_LINES+.
296
+ # @param [Array<Geom::Point3d>] points
297
+ #
298
+ # @overload draw2d(openglenum, *points)
299
+ #
300
+ # @param [Integer] openglenum
301
+ # The item you are going to draw, one of the constants
302
+ # from the comments, such as +GL_LINES+.
303
+ # @param [Array<Geom::Point3d>] points
304
+ #
305
+ # @overload draw2d(openglenum, points, **options)
306
+ #
307
+ # @version SketchUp 2020.0
308
+ # @param [Integer] openglenum
309
+ # The item you are going to draw, one of the constants
310
+ # from the comments, such as +GL_LINES+.
311
+ # @param [Array<Geom::Point3d>] points
312
+ # @param [Hash] options
313
+ # @option options [Integer] :texture
314
+ # A texture id provided by {#load_texture}.
315
+ # @option options [Array<Geom::Vector3d>] :uvs
316
+ # Set of UV (Not UVQ) coordinates matching the number of points provided.
317
+ # This must be used along with the +:texture+ option.
318
+ #
319
+ # @overload draw2d(openglenum, *points, **options)
320
+ #
321
+ # @version SketchUp 2020.0
322
+ # @param [Integer] openglenum
323
+ # The item you are going to draw, one of the constants
324
+ # from the comments, such as +GL_LINES+.
325
+ # @param [Array<Geom::Point3d>] points
326
+ # @param [Hash] options
327
+ # @option options [Integer] :texture
328
+ # A texture id provided by {#load_texture}.
329
+ # @option options [Array<Geom::Vector3d>] :uvs
330
+ # Set of UV (Not UVQ) coordinates matching the number of points provided.
331
+ # This must be used along with the +:texture+ option.
332
+ #
333
+ # @return [Sketchup::View]
334
+ #
335
+ # @see #draw
336
+ #
337
+ # @see UI.scale_factor
338
+ #
339
+ # @version SketchUp 6.0
340
+ def draw2d(*args)
341
+ end
342
+
343
+ # The draw_lines method is used to draw disconnected lines.
344
+ #
345
+ # You must have an even number of points. This method is usually invoked
346
+ # within the draw method of a tool.
347
+ #
348
+ # @example
349
+ # point4 = Geom::Point3d.new 0,0,0
350
+ # point5 = Geom::Point3d.new 100,100,100
351
+ # # returns a view
352
+ # status = view.drawing_color="red"
353
+ # status = view.draw_lines point4, point5
354
+ #
355
+ # @overload draw_lines(points, ...)
356
+ #
357
+ # @param [Array<Geom::Point3d>] points
358
+ # An even number of Point3d objects.
359
+ # @return [Sketchup::View]
360
+ #
361
+ # @overload draw_lines(points)
362
+ #
363
+ # @param [Array<Geom::Point3d>] points An array of Point3d objects.
364
+ # @return [Sketchup::View]
365
+ #
366
+ # @version SketchUp 6.0
367
+ def draw_line(*args)
368
+ end
369
+
370
+ # The draw_lines method is used to draw disconnected lines.
371
+ #
372
+ # You must have an even number of points. This method is usually invoked
373
+ # within the draw method of a tool.
374
+ #
375
+ # @example
376
+ # point4 = Geom::Point3d.new 0,0,0
377
+ # point5 = Geom::Point3d.new 100,100,100
378
+ # # returns a view
379
+ # status = view.drawing_color="red"
380
+ # status = view.draw_lines point4, point5
381
+ #
382
+ # @overload draw_lines(points, ...)
383
+ #
384
+ # @param [Array<Geom::Point3d>] points
385
+ # An even number of Point3d objects.
386
+ # @return [Sketchup::View]
387
+ #
388
+ # @overload draw_lines(points)
389
+ #
390
+ # @param [Array<Geom::Point3d>] points An array of Point3d objects.
391
+ # @return [Sketchup::View]
392
+ #
393
+ # @version SketchUp 6.0
394
+ def draw_lines(*args)
395
+ end
396
+
397
+ # This method is used to draw points.
398
+ #
399
+ # This method is usually invoked within the draw method of a tool.
400
+ #
401
+ # @example
402
+ # point3 = Geom::Point3d.new 0,0,0
403
+ # # returns a view
404
+ # status = view.draw_points(point3, 10, 1, "red")
405
+ #
406
+ # @param [Array<Geom::Point3d>] points
407
+ #
408
+ # @param [Integer] size
409
+ # Size of the point in pixels.
410
+ #
411
+ # @param [Integer] style
412
+ # 1 = open square, 2 = filled square, 3 = "+", 4 = "X", 5 = "*",
413
+ # 6 = open triangle, 7 = filled triangle.
414
+ #
415
+ # @param [Sketchup::Color] color
416
+ #
417
+ # @return [Sketchup::View] a View object
418
+ #
419
+ # @version SketchUp 6.0
420
+ def draw_points(points, size = 6, style = 3, color = 'black')
421
+ end
422
+
423
+ # The draw_polyline method is used to draw a series of connected line segments
424
+ # from pt1 to pt2 to pt3, and so on.
425
+ #
426
+ # This method is usually invoked within the draw method of a tool.
427
+ #
428
+ # @example
429
+ # point12 = Geom::Point3d.new 0,0,0
430
+ # point13 = Geom::Point3d.new 10,10,10
431
+ # point14 = Geom::Point3d.new 20,20,20
432
+ # point15 = Geom::Point3d.new 30,30,30
433
+ # status = view.draw_polyline point12, point13, point14, point15
434
+ #
435
+ # @overload draw_polyline(points, ...)
436
+ #
437
+ # @param [Array<Geom::Point3d>] points An even number of Point3d objects.
438
+ # @return [Sketchup::View]
439
+ #
440
+ # @overload draw_polyline(points)
441
+ #
442
+ # @param [Array<Geom::Point3d>] points An array of Point3d objects.
443
+ # @return [Sketchup::View]
444
+ #
445
+ # @version SketchUp 6.0
446
+ def draw_polyline(*args)
447
+ end
448
+
449
+ # This method is used to draw text on the screen and is usually invoked within
450
+ # the draw method of a tool.
451
+ #
452
+ # The {TextVerticalAlignCenter} option will align the text to the center of the
453
+ # height of the first line, not the whole boundingbox of the text. To align
454
+ # around the full bounds of the text, use {#text_bounds} to compute the
455
+ # desired alignment.
456
+ #
457
+ # The vertical alignment can vary between fonts and platforms. It's recommended
458
+ # to test different fonts and find one that fits well across both platforms
459
+ # for your purposes.
460
+ #
461
+ # <b>Example of different vertical alignment and text bounds:</b>
462
+ #
463
+ # rdoc-image:../images/view-draw-text-with-bounds.png
464
+ #
465
+ # @bug Prior to SU2022.0, on macOS, the vertical text alignment for some fonts
466
+ # could appear to be offset from their expected positions. As of SU2022.0 the
467
+ # vertical alignment should be more accurate and consistent.
468
+ #
469
+ # @example
470
+ # class ExampleTool
471
+ # def draw(view)
472
+ # # This works in all SketchUp versions and draws the text using the
473
+ # # default font, size and color (i.e. the model edge color).
474
+ # point = Geom::Point3d.new(200, 100, 0)
475
+ # view.draw_text(point, "This is a test")
476
+ #
477
+ # # This works in SketchUp 2016 and up.
478
+ # options = {
479
+ # :font => "Arial",
480
+ # :size => 20,
481
+ # :bold => true,
482
+ # :align => TextAlignRight
483
+ # }
484
+ # point = Geom::Point3d.new(200, 200, 0)
485
+ # view.draw_text(point, "This is another\ntest", options)
486
+ #
487
+ # # You can also use Ruby 2.0's named arguments:
488
+ # point = Geom::Point3d.new(200, 200, 0)
489
+ # view.draw_text(point, "Hello world!", color: "Red")
490
+ # end
491
+ # end
492
+ #
493
+ # @example Cross Platform Font Size
494
+ # class ExampleTool
495
+ # IS_WIN = Sketchup.platform == :platform_win
496
+ #
497
+ # def draw(view)
498
+ # draw_text(view, [100, 200, 0], "Hello World", size: 20)
499
+ # end
500
+ #
501
+ # private
502
+ #
503
+ # # This will ensure text is drawn with consistent size across platforms,
504
+ # # using pixels as size units.
505
+ # def draw_text(view, position, text, **options)
506
+ # native_options = options.dup
507
+ # if IS_WIN && options.key?(:size)
508
+ # native_options[:size] = pixels_to_points(options[:size])
509
+ # end
510
+ # view.draw_text(position, text, **native_options)
511
+ # end
512
+ #
513
+ # def pixels_to_points(pixels)
514
+ # ((pixels.to_f / 96.0) * 72.0).round
515
+ # end
516
+ # end
517
+ #
518
+ # @note Under Windows the font name must be less than 32 characters - due to
519
+ # system limitations.
520
+ #
521
+ # @note As of SU2017 this will automatically scale the font-size by the same
522
+ # factor as {UI.scale_factor}.
523
+ #
524
+ # @note The font size is platform dependent. On Windows the method expects
525
+ # points, where on Mac it's pixels. See "Cross Platform Font Size" example
526
+ # for details.
527
+ #
528
+ # @overload draw_text(point, text)
529
+ #
530
+ # @param [Geom::Point3d] point A Point3d object representing a 2D coordinate
531
+ # in view space.
532
+ # @param [String] text The text string to draw.
533
+ #
534
+ # @overload draw_text(point, text, options = {})
535
+ #
536
+ # @version SketchUp 2016
537
+ # @param [Geom::Point3d] point A Point3d object representing a 2D coordinate
538
+ # in view space.
539
+ # @param [String] text The text string to draw.
540
+ # @param [Hash] options The text can be customized by providing a hash or
541
+ # named arguments of options.
542
+ # @option options [String] :font The name of the font to use. If it does not
543
+ # exist on the system, a default font will be used instead.
544
+ # @option options [Integer] :size The size of the font in points
545
+ # @option options [Boolean] :bold Controls the Bold property of the font.
546
+ # @option options [Boolean] :italic Controls the Italic property of the font.
547
+ # @option options [Sketchup::Color] :color The color to draw the text with.
548
+ # @option options [Integer] :align The text alignment, one of the following
549
+ # constants: {TextAlignLeft}, {TextAlignCenter} or {TextAlignRight}.
550
+ # @option options [Integer] :vertical_align <b>Added SketchUp 2020.0.</b>
551
+ # The vertical text alignment, one of the following constants:
552
+ # {TextVerticalAlignBoundsTop}, {TextVerticalAlignBaseline},
553
+ # {TextVerticalAlignCapHeight} or {TextVerticalAlignCenter}. Note that
554
+ # some fonts on Mac might not align as expected due to the system
555
+ # reporting incorrect font metrics.
556
+ #
557
+ # @return [Sketchup::View]
558
+ #
559
+ # @version SketchUp 6.0
560
+ def draw_text(*args)
561
+ end
562
+
563
+ # The drawing_color method is used to set the color that is used for drawing
564
+ # to the view.
565
+ #
566
+ # This method is usually invoked within the draw method of a tool.
567
+ #
568
+ # @example
569
+ # view = view.drawing_color = color
570
+ #
571
+ # @param [Sketchup::Color, String] color
572
+ # A Color object.
573
+ #
574
+ # @return [Sketchup::View]
575
+ #
576
+ # @version SketchUp 6.0
577
+ def drawing_color=(color)
578
+ end
579
+
580
+ # The dynamic= method allows you to degrade visual quality while improving
581
+ # performance when a model is large and view refresh time is slow. For
582
+ # example, if you were using a Ruby script to animate the camera through
583
+ # a large scene, you may want to set dynamic to true during that time.
584
+ #
585
+ # See also camera.rb which is part of the film and stage ruby
586
+ # scripts.
587
+ #
588
+ # @deprecated This method is no longer doing anything.
589
+ #
590
+ # @example
591
+ # view.dynamic = true
592
+ #
593
+ # @param [Boolean] value
594
+ #
595
+ # @return [Boolean]
596
+ #
597
+ # @version SketchUp 6.0
598
+ def dynamic=(value)
599
+ end
600
+
601
+ # The field_of_view method is used get the view's field of view setting, in
602
+ # degrees.
603
+ #
604
+ # @example
605
+ # fov = Sketchup.active_model.active_view.field_of_view
606
+ #
607
+ # @return [Float] the field of view
608
+ #
609
+ # @version SketchUp 6.0
610
+ def field_of_view
611
+ end
612
+
613
+ # The field_of_view= method is used set the view's field of view setting,
614
+ # in degrees.
615
+ #
616
+ # @example
617
+ # my_view = Sketchup.active_model.active_view
618
+ # my_view.field_of_view = 45
619
+ # my_view.invalidate
620
+ #
621
+ # @param [Numeric] fov
622
+ # the field of view
623
+ #
624
+ # @return [Numeric]
625
+ #
626
+ # @version SketchUp 6.0
627
+ def field_of_view=(fov)
628
+ end
629
+
630
+ # The guess_target method is used to guess at what the user is looking at when
631
+ # you have a perspective view.
632
+ #
633
+ # This method is useful when writing a viewing tool. See also camera.rb which
634
+ # is part of the film and stage ruby scripts.
635
+ #
636
+ # @example
637
+ # target = view.guess_target
638
+ #
639
+ # @return [Geom::Point3d] a Point3d object representing the point in the
640
+ # model that the user is likely interested in.
641
+ #
642
+ # @version SketchUp 6.0
643
+ def guess_target(*args)
644
+ end
645
+
646
+ # The inference_locked? method is used to determine if inference locking is on
647
+ # for the view.
648
+ #
649
+ # @example
650
+ # model = Sketchup.active_model
651
+ # view = model.active_view
652
+ # status = view.inference_locked
653
+ #
654
+ # @return [Boolean]
655
+ #
656
+ # @version SketchUp 6.0
657
+ def inference_locked?
658
+ end
659
+
660
+ # The inputpoint method is used to retrieve an input point.
661
+ #
662
+ # This will normally be used inside one of the mouse event handling methods in
663
+ # a tool. Usually, it is preferable to create the InputPoint first and then
664
+ # use the pick method on it.
665
+ #
666
+ # @example
667
+ # inputpoint = view.inputpoint x, y, inputpoint1
668
+ #
669
+ # @param [Numeric] x
670
+ # A x value.
671
+ #
672
+ # @param [Numeric] y
673
+ # A y value.
674
+ #
675
+ # @param [Sketchup::InputPoint] inputpoint1
676
+ # An InputPoint object.
677
+ #
678
+ # @return [Sketchup::InputPoint]
679
+ #
680
+ # @version SketchUp 6.0
681
+ def inputpoint(x, y, inputpoint1)
682
+ end
683
+
684
+ # The invalidate method is used mark the view as in need of a redraw.
685
+ #
686
+ # @example
687
+ # model = Sketchup.active_model
688
+ # view = model.active_view
689
+ # invalidated_view = view.invalidate
690
+ #
691
+ # @note This is the preferred method to update the viewport. Use this before
692
+ # trying to use {#refresh}.
693
+ #
694
+ # @return [Sketchup::View] the invalidated View object
695
+ #
696
+ # @version SketchUp 6.0
697
+ def invalidate
698
+ end
699
+
700
+ # The last_refresh_time method is used to retrieve the time for the last full
701
+ # view refresh.
702
+ #
703
+ # @example
704
+ # time = view.last_refresh_time
705
+ #
706
+ # @return [Float] time in milliseconds
707
+ #
708
+ # @version SketchUp 6.0
709
+ def last_refresh_time(*args)
710
+ end
711
+
712
+ # The line_stipple= method is used to set the line pattern to use for drawing.
713
+ # The stipple pattern is given as a string.
714
+ # Valid strings are:
715
+ # "." (Dotted Line),
716
+ # "-" (Short Dashes Line),
717
+ # "_" (Long Dashes Line),
718
+ # "-.-" (Dash Dot Dash Line),
719
+ # "" (Solid Line).
720
+ #
721
+ # This method is usually invoked within the draw method of a tool.
722
+ #
723
+ # @example
724
+ # point8 = Geom::Point3d.new 0,0,0
725
+ # point9 = Geom::Point3d.new 100,100,100
726
+ # view.line_stipple = "-.-"
727
+ # view = view.draw_lines point8, point9
728
+ #
729
+ # @param [String] pattern
730
+ # A string stipple pattern, such as "-.-"
731
+ #
732
+ # @return [Sketchup::View] the View object
733
+ #
734
+ # @version SketchUp 6.0
735
+ def line_stipple=(pattern)
736
+ end
737
+
738
+ # The line_width= method is used to set the line width to use for drawing. The
739
+ # value is a Double indicating the desired width in pixels.
740
+ #
741
+ # This method is usually invoked within the draw method of a tool.
742
+ #
743
+ # @example
744
+ # view.line_width = width
745
+ #
746
+ # @note As of SU2017 this will automatically scale the line width by the same
747
+ # factor as {UI.scale_factor}.
748
+ #
749
+ # @param [Integer] width
750
+ # The width in pixels.
751
+ #
752
+ # @return [Integer]
753
+ #
754
+ # @version SketchUp 6.0
755
+ def line_width=(width)
756
+ end
757
+
758
+ # Loads a texture to be drawn with {#draw} or {#draw2d}.
759
+ #
760
+ # @example
761
+ # module Example
762
+ # class MyTool
763
+ # def activate
764
+ # view = Sketchup.active_model.active_view
765
+ # image_rep = view.model.materials.current.texture.image_rep
766
+ # @texture_id = view.load_texture(image_rep)
767
+ # end
768
+ #
769
+ # def deactivate(view)
770
+ # view.release_texture(@texture_id)
771
+ # end
772
+ #
773
+ # def draw(view)
774
+ # points = [ [0, 0, 0], [9, 0, 0], [9, 9, 0], [0, 9, 0] ]
775
+ # uvs = [ [0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0] ]
776
+ # view.draw(GL_QUADS, points, texture: @texture_id, uvs: uvs)
777
+ # end
778
+ # end
779
+ # end
780
+ # Sketchup.active_model.select_tool(Example::MyTool.new)
781
+ #
782
+ # @note Avoid loading and releasing textures within the {Sketchup::Tool#draw}
783
+ # event as that is not efficient.
784
+ #
785
+ # @note SketchUp 2020.0-2022.0: To conserve resources on the user's machine,
786
+ # textures can be loaded only when there is a Ruby tool on the tool stack.
787
+ # Make sure to release the texture when it's no longer needed. Any textures
788
+ # not already released when the last Ruby tool on the tool stack is removed
789
+ # will be automatically released by SketchUp. As of SketchUp 2023.0 this
790
+ # automatic cleanup was removed to allow Overlays to draw textures.
791
+ #
792
+ # @param [Sketchup::ImageRep] image_rep
793
+ #
794
+ # @raise [ArgumentError] if the provided {Sketchup::ImageRep} is not valid.
795
+ #
796
+ # @raise [RuntimeError] if a Ruby tool was not on the tool stack.
797
+ # (Applies to SketchUp 2020.0-2022.0).
798
+ #
799
+ # @return [Integer] A resource ID referring to the image loaded.
800
+ #
801
+ # @see #release_texture
802
+ #
803
+ # @see #draw
804
+ #
805
+ # @version SketchUp 2020.0
806
+ def load_texture(image_rep)
807
+ end
808
+
809
+ # The {#lock_inference} method is used to lock or unlock an inference.
810
+ #
811
+ # This method will typically be called from inside a tool class when the user
812
+ # presses the shift key or arrow keys.
813
+ #
814
+ # With no arguments it unlocks all inferences. With one argument it locks
815
+ # inference based on that passed {Sketchup::InputPoint}'s entities, e.g. along
816
+ # a {Sketchup::Edge}'s line or a {Sketchup::Face}'s plane. With two arguments,
817
+ # it locks inference along an axis.
818
+ #
819
+ # @example
820
+ # view = view.lock_inference
821
+ # view = view.lock_inference(inputpoint)
822
+ # view = view.lock_inference(inputpoint1, inputpoint2)
823
+ #
824
+ # @overload lock_inference
825
+ #
826
+ #
827
+ # @overload lock_inference(inputpoint)
828
+ #
829
+ # @param [Sketchup::InputPoint] inputpoint
830
+ #
831
+ # @overload lock_inference(inputpoint, inputpoint2)
832
+ #
833
+ # @param [Sketchup::InputPoint] inputpoint
834
+ # @param [Sketchup::InputPoint] inputpoint2
835
+ # @example
836
+ # # Lock inference to X axis.
837
+ # # The points can be anywhere; only the vector between them affects
838
+ # # the result.
839
+ # view.lock_inference(
840
+ # Sketchup::InputPoint.new(ORIGIN),
841
+ # Sketchup::InputPoint.new(Geom::Point3d.new(1, 0, 0))
842
+ # )
843
+ #
844
+ # @return [Sketchup::View] a View object
845
+ #
846
+ # @version SketchUp 6.0
847
+ def lock_inference(*args)
848
+ end
849
+
850
+ # The model method is used to retrieve the model for the current view.
851
+ #
852
+ # @example
853
+ # model = view.model
854
+ #
855
+ # @return [Sketchup::Model] the model for this view
856
+ #
857
+ # @version SketchUp 6.0
858
+ def model
859
+ end
860
+
861
+ # The pick_helper method is used to retrieve a pick helper for the view. See
862
+ # the PickHelper class for information on pick helpers.
863
+ #
864
+ # This call returns an initialized PickHelper.
865
+ #
866
+ # @example
867
+ # model = Sketchup.active_model
868
+ # view = model.active_view
869
+ # ph = view.pick_helper
870
+ #
871
+ # @overload pick_helper
872
+ #
873
+ # @return [Sketchup::PickHelper] a PickHelper object
874
+ #
875
+ # @overload pick_helper(x, y, aperture = 0)
876
+ #
877
+ # @param [Integer] x
878
+ # @param [Integer] y
879
+ # @param [Integer] aperture
880
+ # @return [Sketchup::PickHelper] a PickHelper object
881
+ #
882
+ # @version SketchUp 6.0
883
+ def pick_helper(*args)
884
+ end
885
+
886
+ # The pickray method is used to retrieve a ray passing through a given screen
887
+ # position in the viewing direction.
888
+ #
889
+ # @example
890
+ # ray = view.pickray x, y
891
+ #
892
+ # @overload pickray(screen_point)
893
+ #
894
+ # @param [Array(Integer, Integer)] screen_point
895
+ # @return [Array(Geom::Point3d, Geom::Vector3d)] a ray
896
+ #
897
+ # @overload pickray(x, y)
898
+ #
899
+ # @param [Integer] x
900
+ # @param [Integer] y
901
+ # @return [Array(Geom::Point3d, Geom::Vector3d)] a ray
902
+ #
903
+ # @version SketchUp 6.0
904
+ def pickray(*args)
905
+ end
906
+
907
+ # The pixels_to_model method is used to compute a model size from a pixel size
908
+ # at a given point.
909
+ #
910
+ # This method is useful for deciding how big to draw something based on a
911
+ # desired size in pixels.
912
+ #
913
+ # @example
914
+ # size = view.pixels_to_model(pixels, point)
915
+ #
916
+ # @note As of SU2017 this will automatically scale the pixel-size by the same
917
+ # factor as {UI.scale_factor}.
918
+ #
919
+ # @param [Numeric] pixels
920
+ # The pixel size.
921
+ #
922
+ # @param [Geom::Point3d] point
923
+ # A Point3d object where the size will be calculated from.
924
+ #
925
+ # @return [Float] the model size
926
+ #
927
+ # @version SketchUp 6.0
928
+ def pixels_to_model(pixels, point)
929
+ end
930
+
931
+ # The refresh method is used to immediately force a redraw of the view.
932
+ #
933
+ # @example
934
+ # model = Sketchup.active_model
935
+ # view = model.active_view
936
+ # refreshed_view = view.refresh
937
+ #
938
+ # @note This method might impact performance and if used incorrectly cause
939
+ # instability or crashes. Don't use this unless you have verified that
940
+ # you cannot use {#invalidate} instead.
941
+ #
942
+ # @return [Sketchup::View] the refreshed View object
943
+ #
944
+ # @version SketchUp 7.1
945
+ def refresh
946
+ end
947
+
948
+ # Releases a texture loaded via {#load_texture}, freeing up it's memory.
949
+ # It's good practice to do so whenever there is no longer any need for the
950
+ # resource.
951
+ #
952
+ # For example, when your tool deactivates you probably want to release your
953
+ # resources as you don't know if your tool will be used again.
954
+ #
955
+ # @example
956
+ # module Example
957
+ # class MyTool
958
+ # def activate
959
+ # view = Sketchup.active_model.active_view
960
+ # image_rep = view.model.materials.current.texture.image_rep
961
+ # @texture_id = view.load_texture(image_rep)
962
+ # end
963
+ #
964
+ # def deactivate(view)
965
+ # view.release_texture(@texture_id)
966
+ # end
967
+ #
968
+ # def draw(view)
969
+ # points = [ [0, 0, 0], [9, 0, 0], [9, 9, 0], [0, 9, 0] ]
970
+ # uvs = [ [0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0] ]
971
+ # view.draw(GL_QUADS, points, texture: @texture_id, uvs: uvs)
972
+ # end
973
+ # end
974
+ # end
975
+ # Sketchup.active_model.select_tool(Example::MyTool.new)
976
+ #
977
+ # @param [Integer] texture_id
978
+ #
979
+ # @return [Boolean] +true+ if texture was released. +false+ otherwise.
980
+ #
981
+ # @see #load_texture
982
+ def release_texture(texture_id)
983
+ end
984
+
985
+ # The remove_observer method is used to remove an observer from the current
986
+ # object.
987
+ #
988
+ # @example
989
+ # view = Sketchup.active_model.active_view
990
+ # status = view.remove_observer observer
991
+ #
992
+ # @param [Object] observer
993
+ # An observer.
994
+ #
995
+ # @return [Boolean] true if successful, false if unsuccessful.
996
+ #
997
+ # @version SketchUp 6.0
998
+ def remove_observer(observer)
999
+ end
1000
+
1001
+ # The screen_coords method is used to retrieve the screen coordinates of the
1002
+ # given point on the screen.
1003
+ #
1004
+ # The x and y values returned correspond to the x and y screen coordinates.
1005
+ # Ignore the z values. If the referenced point is not in the current
1006
+ # viewport, the x and/or y value may be negative.
1007
+ #
1008
+ # @example
1009
+ # point = view.screen_coords(ORIGIN)
1010
+ #
1011
+ # @param [Geom::Point3d] point3d
1012
+ # A Point3d object.
1013
+ #
1014
+ # @return [Geom::Point3d] A Point3d containing the screen position
1015
+ #
1016
+ # @version SketchUp 6.0
1017
+ def screen_coords(point3d)
1018
+ end
1019
+
1020
+ # Set the drawing color for the view based on the direction of a line that you
1021
+ # want to draw. These colors will match the axes colors in the SketchUp model
1022
+ # (typically blue for straight up and down, etc.)
1023
+ #
1024
+ # This method is usually invoked within the draw method of a tool.
1025
+ #
1026
+ # @example
1027
+ # view = view.set_color_from_line point1, point2
1028
+ #
1029
+ # @param [Geom::Point3d] point1
1030
+ # Point3d object representing first point in the line.
1031
+ #
1032
+ # @param [Geom::Point3d] point2
1033
+ # Point3d object representing the second point in the line.
1034
+ #
1035
+ # @return [Sketchup::View] a View object
1036
+ #
1037
+ # @version SketchUp 6.0
1038
+ def set_color_from_line(point1, point2)
1039
+ end
1040
+
1041
+ # The show_frame method is used to show a frame of an Animation object in the
1042
+ # current view.
1043
+ #
1044
+ # You can supply an optional delay in seconds to wait before showing the next
1045
+ # frame. This can be useful to control the speed at which the animation runs.
1046
+ #
1047
+ # @example
1048
+ # status = view.show_frame delay
1049
+ #
1050
+ # @param [Numeric] delay
1051
+ # An optional delay in seconds.
1052
+ #
1053
+ # @return [Sketchup::View]
1054
+ #
1055
+ # @version SketchUp 6.0
1056
+ def show_frame(delay)
1057
+ end
1058
+
1059
+ # This method is used to compute the bounds of the text when
1060
+ # using {#draw_text}. The bounds are not a tight fit around the top and bottom
1061
+ # as they include varying amount of line spacing depending on the font used.
1062
+ #
1063
+ # The {TextVerticalAlignCenter} option will align the text to the center of the
1064
+ # height of the first line, not the whole boundingbox of the text.
1065
+ #
1066
+ # <b>Example of different vertical alignment and text bounds:</b>
1067
+ #
1068
+ # rdoc-image:../images/view-draw-text-with-bounds.png
1069
+ #
1070
+ # @example
1071
+ # class ExampleTool
1072
+ # TEXT_OPTIONS = {
1073
+ # :font => "Arial",
1074
+ # :size => 20,
1075
+ # :bold => true,
1076
+ # :align => TextAlignRight,
1077
+ # :align => TextVerticalAlignBaseline
1078
+ # }
1079
+ #
1080
+ # # Since `draw` is called frequently it can be useful to pre-compute and
1081
+ # # cache values used by `draw`.
1082
+ # def activate
1083
+ # @text = "Hello SketchUp"
1084
+ # @position = Geom::Point3d.new(200, 200, 0)
1085
+ #
1086
+ # # Compute text bounds
1087
+ # view = Sketchup.active_model.active_view
1088
+ # bounds = view.text_bounds(@position, @text, TEXT_OPTIONS)
1089
+ #
1090
+ # # Compute polygon for the text bounds
1091
+ # x1, y1 = bounds.upper_left.to_a
1092
+ # x2, y2 = bounds.lower_right.to_a
1093
+ # @points = [
1094
+ # Geom::Point3d.new(x1, y1),
1095
+ # Geom::Point3d.new(x1, y2),
1096
+ # Geom::Point3d.new(x2, y2),
1097
+ # Geom::Point3d.new(x2, y1),
1098
+ # ]
1099
+ # end
1100
+ #
1101
+ # def draw(view)
1102
+ # # Draw text bounds
1103
+ # view.drawing_color = Sketchup::Color.new(255, 0, 0, 64)
1104
+ # view.draw2d(GL_QUADS, @points)
1105
+ #
1106
+ # # Draw text
1107
+ # view.draw_text(@position, @text, TEXT_OPTIONS)
1108
+ # end
1109
+ # end
1110
+ #
1111
+ # @note Under Windows the font name must be less than 32 characters - due to
1112
+ # system limitations.
1113
+ #
1114
+ # @option options [String] :font The name of the font to use. If it does not
1115
+ # exist on the system, a default font will be used instead.
1116
+ #
1117
+ # @option options [Integer] :size The size of the font in points
1118
+ #
1119
+ # @option options [Boolean] :bold Controls the Bold property of the font.
1120
+ #
1121
+ # @option options [Boolean] :italic Controls the Italic property of the font.
1122
+ #
1123
+ # @option options [Integer] :align The text alignment, one of the following
1124
+ # constants: {TextAlignLeft}, {TextAlignCenter} or {TextAlignRight}.
1125
+ #
1126
+ # @option options [Integer] :vertical_align The vertical text alignment
1127
+ # one of the following constants:
1128
+ # {TextVerticalAlignBoundsTop}, {TextVerticalAlignBaseline},
1129
+ # {TextVerticalAlignCapHeight} or {TextVerticalAlignCenter}.
1130
+ #
1131
+ # @param [Geom::Point3d] point
1132
+ # A Point3d object representing a 2D coordinate
1133
+ # in view space.
1134
+ #
1135
+ # @param [String] text
1136
+ # The text string to draw.
1137
+ #
1138
+ # @param [Hash] options
1139
+ # The text can be customized by providing a hash or
1140
+ # named arguments of options.
1141
+ #
1142
+ # @return [Geom::Bounds2d]
1143
+ #
1144
+ # @see #draw_text
1145
+ #
1146
+ # @version SketchUp 2020.0
1147
+ def text_bounds(point, text, options = {})
1148
+ end
1149
+
1150
+ # Set a tooltip to display in the view. This is useful for displaying tooltips
1151
+ # in a tool that you write in Ruby.
1152
+ #
1153
+ # @example
1154
+ # tooltip = view.tooltip = string
1155
+ #
1156
+ # @param [String] string
1157
+ # The string tooltip.
1158
+ #
1159
+ # @return [String] the new tooltip string
1160
+ #
1161
+ # @version SketchUp 6.0
1162
+ def tooltip=(string)
1163
+ end
1164
+
1165
+ # The vpheight method is used to retrieve the height of the viewport for the
1166
+ # view.
1167
+ #
1168
+ # @example
1169
+ # model = Sketchup.active_model
1170
+ # view = model.active_view
1171
+ # height = view.vpheight
1172
+ #
1173
+ # @return [Integer] the height of the viewport in physical pixels.
1174
+ #
1175
+ # @version SketchUp 6.0
1176
+ def vpheight
1177
+ end
1178
+
1179
+ # The vpwidth method is used to retrieve the width of the viewport for the
1180
+ # view.
1181
+ #
1182
+ # @example
1183
+ # width = view.vpwidth
1184
+ #
1185
+ # @return [Integer] the width of the viewport in physical pixels.
1186
+ #
1187
+ # @version SketchUp 6.0
1188
+ def vpwidth
1189
+ end
1190
+
1191
+ # The {#write_image} method is used to write the current view to an image file.
1192
+ #
1193
+ # Supported file types are `.png`, `.jpg`, `.jpeg`, `gif`, `.bmp`, `.tif`.
1194
+ # For other file formats available from the GUI in File > Export > 2D
1195
+ # Graphics, .e.g `.pdf`, use {Sketchup::Model#export}.
1196
+ #
1197
+ # compression = 1.0)
1198
+ # @note Prefer the overload with option hash instead of this variant. This
1199
+ # overload is not updated with new options.
1200
+ #
1201
+ # @example
1202
+ # filename = File.join(Sketchup.temp_dir, 'example.png')
1203
+ # antialias = false
1204
+ # compression = 0.9
1205
+ # model = Sketchup.active_model
1206
+ # view = model.active_view
1207
+ # view.write_image(filename, 640, 480, antialias, compression)
1208
+ #
1209
+ # @param [String] filename
1210
+ # The filename for the saved image
1211
+ # @param [Integer] width
1212
+ # Width in pixels, defaults to the current viewport width {#vpwidth}.
1213
+ # @param [Integer] height
1214
+ # Height in pixels, defaults to the current viewport height {#vpheight}.
1215
+ # @param [Boolean] antialias
1216
+ # @param [Float] compression
1217
+ # Compression factor for JPEG images, between +0.0+ and +1.0+.
1218
+ #
1219
+ # @overload write_image(filename, width = view.vpwidth, height = view.vpheight, antialias = false,
1220
+ #
1221
+ #
1222
+ # @overload write_image(options)
1223
+ #
1224
+ # @example
1225
+ # options = {
1226
+ # :filename => File.join(Sketchup.temp_dir, 'example.png'),
1227
+ # :width => 640,
1228
+ # :height => 480,
1229
+ # :antialias => false,
1230
+ # :compression => 0.9,
1231
+ # :transparent => true
1232
+ # }
1233
+ # model = Sketchup.active_model
1234
+ # view = model.active_view
1235
+ # view.write_image(options)
1236
+ #
1237
+ # @version SketchUp 7
1238
+ # @param [Hash] options
1239
+ # @option options [String] filename The filename for the saved image.
1240
+ # @option options [Integer] width (#vpwidth) Width in pixels (max +16000+).
1241
+ # @option options [Integer] height (#vpheight) Height in pixels (max +16000+).
1242
+ # @option options [Float] scale_factor (1.0) Scaling factor for
1243
+ # elements that are viewport dependent, such as text heights, arrow heads,
1244
+ # line widths, stipple patterns, etc. (Added in SketchUp 2019.2)
1245
+ # @option options [Boolean] antialias (false)
1246
+ # @option options [Float] compression (1.0) Compression factor for JPEG,
1247
+ # images between +0.0+ and +1.0+.
1248
+ # @option options [Boolean] transparent (false) Added in SketchUp 8.
1249
+ #
1250
+ # @overload write_image(options)
1251
+ #
1252
+ # It is possible to dump the framebuffer to file by setting +:source+ to
1253
+ # +:framebuffer+. When saving the framebuffer only the following options are
1254
+ # valid.
1255
+ #
1256
+ # @example
1257
+ # options = {
1258
+ # :filename => File.join(Sketchup.temp_dir, 'example.png'),
1259
+ # :source => :framebuffer,
1260
+ # :compression => 0.9,
1261
+ # }
1262
+ # model = Sketchup.active_model
1263
+ # view = model.active_view
1264
+ # view.write_image(options)
1265
+ #
1266
+ # @version SketchUp 7
1267
+ # @param [Hash] options
1268
+ # @option options [String] filename The filename for the saved image.
1269
+ # @option options [Boolean] source (:image) Set to +:framebuffer+ to dump the
1270
+ # current framebuffer.
1271
+ # @option options [Float] compression (1.0) Compression factor for JPEG,
1272
+ # images between +0.0+ and +1.0+.
1273
+ #
1274
+ # @return [Boolean]
1275
+ #
1276
+ # @version SketchUp 6.0
1277
+ def write_image(*args)
1278
+ end
1279
+
1280
+ # The zoom method is used to zoom in or out by some zoom factor.
1281
+ #
1282
+ # @example
1283
+ # view = view.zoom factor
1284
+ # view = view.zoom selection
1285
+ # view = view.zoom entity
1286
+ # view = view.zoom array_of_entities
1287
+ #
1288
+ # @param [Numeric, Sketchup::Selection, Sketchup::Entity, Array<Sketchup::Entity>] zoom_or_ents
1289
+ # A Float zoom factor from 1.0 or larger or an Array or
1290
+ # collection of entities to "zoom extents" around.
1291
+ #
1292
+ # @return [Sketchup::View] the zoomed View object
1293
+ #
1294
+ # @version SketchUp 6.0
1295
+ def zoom(zoom_or_ents)
1296
+ end
1297
+
1298
+ # The zoom_extents method is used to zoom to the extents about the entire
1299
+ # model, as if the user has selected the zoom extents command from the menu.
1300
+ #
1301
+ # @example
1302
+ # view = Sketchup.active_model.active_view
1303
+ # new_view = view.zoom_extents
1304
+ #
1305
+ # @return [Sketchup::View] the zoomed View object
1306
+ #
1307
+ # @version SketchUp 6.0
1308
+ def zoom_extents
1309
+ end
1310
+
1311
+ end