sketchup-api-stubs 0.7.9 → 0.7.10

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 -151
  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 -509
  11. data/lib/sketchup-api-stubs/stubs/Geom/Transformation.rb +476 -476
  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 -747
  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 +569 -517
  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 +356 -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 +459 -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 -82
  43. data/lib/sketchup-api-stubs/stubs/Layout/SketchUpModel.rb +714 -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 +226 -209
  55. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionaries.rb +150 -150
  56. data/lib/sketchup-api-stubs/stubs/Sketchup/AttributeDictionary.rb +281 -281
  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 -121
  62. data/lib/sketchup-api-stubs/stubs/Sketchup/Color.rb +294 -294
  63. data/lib/sketchup-api-stubs/stubs/Sketchup/ComponentDefinition.rb +659 -659
  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 -449
  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 -406
  77. data/lib/sketchup-api-stubs/stubs/Sketchup/Edge.rb +397 -397
  78. data/lib/sketchup-api-stubs/stubs/Sketchup/EdgeUse.rb +211 -211
  79. data/lib/sketchup-api-stubs/stubs/Sketchup/Entities.rb +1242 -1239
  80. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesBuilder.rb +261 -261
  81. data/lib/sketchup-api-stubs/stubs/Sketchup/EntitiesObserver.rb +127 -127
  82. data/lib/sketchup-api-stubs/stubs/Sketchup/Entity.rb +519 -545
  83. data/lib/sketchup-api-stubs/stubs/Sketchup/EntityObserver.rb +60 -60
  84. data/lib/sketchup-api-stubs/stubs/Sketchup/ExtensionsManager.rb +125 -125
  85. data/lib/sketchup-api-stubs/stubs/Sketchup/Face.rb +937 -937
  86. data/lib/sketchup-api-stubs/stubs/Sketchup/FrameChangeObserver.rb +102 -102
  87. data/lib/sketchup-api-stubs/stubs/Sketchup/Group.rb +750 -750
  88. data/lib/sketchup-api-stubs/stubs/Sketchup/Http/Request.rb +282 -282
  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 -406
  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 -114
  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 -317
  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 +1656 -1652
  111. data/lib/sketchup-api-stubs/stubs/Sketchup/ModelObserver.rb +357 -357
  112. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsManager.rb +130 -130
  113. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProvider.rb +271 -271
  114. data/lib/sketchup-api-stubs/stubs/Sketchup/OptionsProviderObserver.rb +58 -58
  115. data/lib/sketchup-api-stubs/stubs/Sketchup/Overlay.rb +490 -490
  116. data/lib/sketchup-api-stubs/stubs/Sketchup/OverlaysManager.rb +116 -116
  117. data/lib/sketchup-api-stubs/stubs/Sketchup/Page.rb +797 -797
  118. data/lib/sketchup-api-stubs/stubs/Sketchup/Pages.rb +361 -361
  119. data/lib/sketchup-api-stubs/stubs/Sketchup/PagesObserver.rb +77 -77
  120. data/lib/sketchup-api-stubs/stubs/Sketchup/PickHelper.rb +480 -478
  121. data/lib/sketchup-api-stubs/stubs/Sketchup/RegionalSettings.rb +43 -43
  122. data/lib/sketchup-api-stubs/stubs/Sketchup/RenderingOptions.rb +373 -361
  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 -458
  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 -255
  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 -834
  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 +1329 -1311
  142. data/lib/sketchup-api-stubs/stubs/Sketchup/ViewObserver.rb +45 -45
  143. data/lib/sketchup-api-stubs/stubs/Sketchup.rb +1394 -1377
  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 +387 -389
  147. data/lib/sketchup-api-stubs/stubs/UI/HtmlDialog.rb +505 -494
  148. data/lib/sketchup-api-stubs/stubs/UI/Notification.rb +269 -269
  149. data/lib/sketchup-api-stubs/stubs/UI/Toolbar.rb +241 -241
  150. data/lib/sketchup-api-stubs/stubs/UI/WebDialog.rb +633 -635
  151. data/lib/sketchup-api-stubs/stubs/UI.rb +728 -683
  152. data/lib/sketchup-api-stubs/stubs/_top_level.rb +303 -303
  153. data/lib/sketchup-api-stubs.rb +1 -1
  154. metadata +3 -3
@@ -1,1311 +1,1329 @@
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
1
+ # Copyright:: Copyright 2024 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 {#graphics_engine} method is used query the type of the graphics engine that's currently
631
+ # used by this view.
632
+ #
633
+ # @example
634
+ # engine = Sketchup.active_model.active_view.graphics_engine
635
+ # if engine == :graphics_engine_classic
636
+ # puts 'Classic graphics engine'
637
+ # elsif engine == :graphics_engine_2024
638
+ # puts 'New graphics engine'
639
+ # end
640
+ #
641
+ # @return [Symbol] Type of the graphics engine.
642
+ # +:graphics_engine_classic+ or +:graphics_engine_2024+
643
+ #
644
+ # @version SketchUp 2024.0
645
+ def graphics_engine
646
+ end
647
+
648
+ # The guess_target method is used to guess at what the user is looking at when
649
+ # you have a perspective view.
650
+ #
651
+ # This method is useful when writing a viewing tool. See also camera.rb which
652
+ # is part of the film and stage ruby scripts.
653
+ #
654
+ # @example
655
+ # target = view.guess_target
656
+ #
657
+ # @return [Geom::Point3d] a Point3d object representing the point in the
658
+ # model that the user is likely interested in.
659
+ #
660
+ # @version SketchUp 6.0
661
+ def guess_target(*args)
662
+ end
663
+
664
+ # The inference_locked? method is used to determine if inference locking is on
665
+ # for the view.
666
+ #
667
+ # @example
668
+ # model = Sketchup.active_model
669
+ # view = model.active_view
670
+ # status = view.inference_locked
671
+ #
672
+ # @return [Boolean]
673
+ #
674
+ # @version SketchUp 6.0
675
+ def inference_locked?
676
+ end
677
+
678
+ # The inputpoint method is used to retrieve an input point.
679
+ #
680
+ # This will normally be used inside one of the mouse event handling methods in
681
+ # a tool. Usually, it is preferable to create the InputPoint first and then
682
+ # use the pick method on it.
683
+ #
684
+ # @example
685
+ # inputpoint = view.inputpoint x, y, inputpoint1
686
+ #
687
+ # @param [Numeric] x
688
+ # A x value.
689
+ #
690
+ # @param [Numeric] y
691
+ # A y value.
692
+ #
693
+ # @param [Sketchup::InputPoint] inputpoint1
694
+ # An InputPoint object.
695
+ #
696
+ # @return [Sketchup::InputPoint]
697
+ #
698
+ # @version SketchUp 6.0
699
+ def inputpoint(x, y, inputpoint1)
700
+ end
701
+
702
+ # The invalidate method is used mark the view as in need of a redraw.
703
+ #
704
+ # @example
705
+ # model = Sketchup.active_model
706
+ # view = model.active_view
707
+ # invalidated_view = view.invalidate
708
+ #
709
+ # @note This is the preferred method to update the viewport. Use this before
710
+ # trying to use {#refresh}.
711
+ #
712
+ # @return [Sketchup::View] the invalidated View object
713
+ #
714
+ # @version SketchUp 6.0
715
+ def invalidate
716
+ end
717
+
718
+ # The last_refresh_time method is used to retrieve the time for the last full
719
+ # view refresh.
720
+ #
721
+ # @example
722
+ # time = view.last_refresh_time
723
+ #
724
+ # @return [Float] time in milliseconds
725
+ #
726
+ # @version SketchUp 6.0
727
+ def last_refresh_time(*args)
728
+ end
729
+
730
+ # The line_stipple= method is used to set the line pattern to use for drawing.
731
+ # The stipple pattern is given as a string.
732
+ # Valid strings are:
733
+ # "." (Dotted Line),
734
+ # "-" (Short Dashes Line),
735
+ # "_" (Long Dashes Line),
736
+ # "-.-" (Dash Dot Dash Line),
737
+ # "" (Solid Line).
738
+ #
739
+ # This method is usually invoked within the draw method of a tool.
740
+ #
741
+ # @example
742
+ # point8 = Geom::Point3d.new 0,0,0
743
+ # point9 = Geom::Point3d.new 100,100,100
744
+ # view.line_stipple = "-.-"
745
+ # view = view.draw_lines point8, point9
746
+ #
747
+ # @param [String] pattern
748
+ # A string stipple pattern, such as "-.-"
749
+ #
750
+ # @return [Sketchup::View] the View object
751
+ #
752
+ # @version SketchUp 6.0
753
+ def line_stipple=(pattern)
754
+ end
755
+
756
+ # The line_width= method is used to set the line width to use for drawing. The
757
+ # value is a Double indicating the desired width in pixels.
758
+ #
759
+ # This method is usually invoked within the draw method of a tool.
760
+ #
761
+ # @example
762
+ # view.line_width = width
763
+ #
764
+ # @note As of SU2017 this will automatically scale the line width by the same
765
+ # factor as {UI.scale_factor}.
766
+ #
767
+ # @param [Integer] width
768
+ # The width in pixels.
769
+ #
770
+ # @return [Integer]
771
+ #
772
+ # @version SketchUp 6.0
773
+ def line_width=(width)
774
+ end
775
+
776
+ # Loads a texture to be drawn with {#draw} or {#draw2d}.
777
+ #
778
+ # @example
779
+ # module Example
780
+ # class MyTool
781
+ # def activate
782
+ # view = Sketchup.active_model.active_view
783
+ # image_rep = view.model.materials.current.texture.image_rep
784
+ # @texture_id = view.load_texture(image_rep)
785
+ # end
786
+ #
787
+ # def deactivate(view)
788
+ # view.release_texture(@texture_id)
789
+ # end
790
+ #
791
+ # def draw(view)
792
+ # points = [ [0, 0, 0], [9, 0, 0], [9, 9, 0], [0, 9, 0] ]
793
+ # uvs = [ [0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0] ]
794
+ # view.draw(GL_QUADS, points, texture: @texture_id, uvs: uvs)
795
+ # end
796
+ # end
797
+ # end
798
+ # Sketchup.active_model.select_tool(Example::MyTool.new)
799
+ #
800
+ # @note Avoid loading and releasing textures within the {Sketchup::Tool#draw}
801
+ # event as that is not efficient.
802
+ #
803
+ # @note SketchUp 2020.0-2022.0: To conserve resources on the user's machine,
804
+ # textures can be loaded only when there is a Ruby tool on the tool stack.
805
+ # Make sure to release the texture when it's no longer needed. Any textures
806
+ # not already released when the last Ruby tool on the tool stack is removed
807
+ # will be automatically released by SketchUp. As of SketchUp 2023.0 this
808
+ # automatic cleanup was removed to allow Overlays to draw textures.
809
+ #
810
+ # @param [Sketchup::ImageRep] image_rep
811
+ #
812
+ # @raise [ArgumentError] if the provided {Sketchup::ImageRep} is not valid.
813
+ #
814
+ # @raise [RuntimeError] if a Ruby tool was not on the tool stack.
815
+ # (Applies to SketchUp 2020.0-2022.0).
816
+ #
817
+ # @return [Integer] A resource ID referring to the image loaded.
818
+ #
819
+ # @see #release_texture
820
+ #
821
+ # @see #draw
822
+ #
823
+ # @version SketchUp 2020.0
824
+ def load_texture(image_rep)
825
+ end
826
+
827
+ # The {#lock_inference} method is used to lock or unlock an inference.
828
+ #
829
+ # This method will typically be called from inside a tool class when the user
830
+ # presses the shift key or arrow keys.
831
+ #
832
+ # With no arguments it unlocks all inferences. With one argument it locks
833
+ # inference based on that passed {Sketchup::InputPoint}'s entities, e.g. along
834
+ # a {Sketchup::Edge}'s line or a {Sketchup::Face}'s plane. With two arguments,
835
+ # it locks inference along an axis.
836
+ #
837
+ # @example
838
+ # view = view.lock_inference
839
+ # view = view.lock_inference(inputpoint)
840
+ # view = view.lock_inference(inputpoint1, inputpoint2)
841
+ #
842
+ # @overload lock_inference
843
+ #
844
+ #
845
+ # @overload lock_inference(inputpoint)
846
+ #
847
+ # @param [Sketchup::InputPoint] inputpoint
848
+ #
849
+ # @overload lock_inference(inputpoint, inputpoint2)
850
+ #
851
+ # @param [Sketchup::InputPoint] inputpoint
852
+ # @param [Sketchup::InputPoint] inputpoint2
853
+ # @example
854
+ # # Lock inference to X axis.
855
+ # # The points can be anywhere; only the vector between them affects
856
+ # # the result.
857
+ # view.lock_inference(
858
+ # Sketchup::InputPoint.new(ORIGIN),
859
+ # Sketchup::InputPoint.new(Geom::Point3d.new(1, 0, 0))
860
+ # )
861
+ #
862
+ # @return [Sketchup::View] a View object
863
+ #
864
+ # @version SketchUp 6.0
865
+ def lock_inference(*args)
866
+ end
867
+
868
+ # The model method is used to retrieve the model for the current view.
869
+ #
870
+ # @example
871
+ # model = view.model
872
+ #
873
+ # @return [Sketchup::Model] the model for this view
874
+ #
875
+ # @version SketchUp 6.0
876
+ def model
877
+ end
878
+
879
+ # The pick_helper method is used to retrieve a pick helper for the view. See
880
+ # the PickHelper class for information on pick helpers.
881
+ #
882
+ # This call returns an initialized PickHelper.
883
+ #
884
+ # @example
885
+ # model = Sketchup.active_model
886
+ # view = model.active_view
887
+ # ph = view.pick_helper
888
+ #
889
+ # @overload pick_helper
890
+ #
891
+ # @return [Sketchup::PickHelper] a PickHelper object
892
+ #
893
+ # @overload pick_helper(x, y, aperture = 0)
894
+ #
895
+ # @param [Integer] x
896
+ # @param [Integer] y
897
+ # @param [Integer] aperture
898
+ # @return [Sketchup::PickHelper] a PickHelper object
899
+ #
900
+ # @version SketchUp 6.0
901
+ def pick_helper(*args)
902
+ end
903
+
904
+ # The pickray method is used to retrieve a ray passing through a given screen
905
+ # position in the viewing direction.
906
+ #
907
+ # @example
908
+ # ray = view.pickray x, y
909
+ #
910
+ # @overload pickray(screen_point)
911
+ #
912
+ # @param [Array(Integer, Integer)] screen_point
913
+ # @return [Array(Geom::Point3d, Geom::Vector3d)] a ray
914
+ #
915
+ # @overload pickray(x, y)
916
+ #
917
+ # @param [Integer] x
918
+ # @param [Integer] y
919
+ # @return [Array(Geom::Point3d, Geom::Vector3d)] a ray
920
+ #
921
+ # @version SketchUp 6.0
922
+ def pickray(*args)
923
+ end
924
+
925
+ # The pixels_to_model method is used to compute a model size from a pixel size
926
+ # at a given point.
927
+ #
928
+ # This method is useful for deciding how big to draw something based on a
929
+ # desired size in pixels.
930
+ #
931
+ # @example
932
+ # size = view.pixels_to_model(pixels, point)
933
+ #
934
+ # @note As of SU2017 this will automatically scale the pixel-size by the same
935
+ # factor as {UI.scale_factor}.
936
+ #
937
+ # @param [Numeric] pixels
938
+ # The pixel size.
939
+ #
940
+ # @param [Geom::Point3d] point
941
+ # A Point3d object where the size will be calculated from.
942
+ #
943
+ # @return [Float] the model size
944
+ #
945
+ # @version SketchUp 6.0
946
+ def pixels_to_model(pixels, point)
947
+ end
948
+
949
+ # The refresh method is used to immediately force a redraw of the view.
950
+ #
951
+ # @example
952
+ # model = Sketchup.active_model
953
+ # view = model.active_view
954
+ # refreshed_view = view.refresh
955
+ #
956
+ # @note This method might impact performance and if used incorrectly cause
957
+ # instability or crashes. Don't use this unless you have verified that
958
+ # you cannot use {#invalidate} instead.
959
+ #
960
+ # @return [Sketchup::View] the refreshed View object
961
+ #
962
+ # @version SketchUp 7.1
963
+ def refresh
964
+ end
965
+
966
+ # Releases a texture loaded via {#load_texture}, freeing up it's memory.
967
+ # It's good practice to do so whenever there is no longer any need for the
968
+ # resource.
969
+ #
970
+ # For example, when your tool deactivates you probably want to release your
971
+ # resources as you don't know if your tool will be used again.
972
+ #
973
+ # @example
974
+ # module Example
975
+ # class MyTool
976
+ # def activate
977
+ # view = Sketchup.active_model.active_view
978
+ # image_rep = view.model.materials.current.texture.image_rep
979
+ # @texture_id = view.load_texture(image_rep)
980
+ # end
981
+ #
982
+ # def deactivate(view)
983
+ # view.release_texture(@texture_id)
984
+ # end
985
+ #
986
+ # def draw(view)
987
+ # points = [ [0, 0, 0], [9, 0, 0], [9, 9, 0], [0, 9, 0] ]
988
+ # uvs = [ [0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0] ]
989
+ # view.draw(GL_QUADS, points, texture: @texture_id, uvs: uvs)
990
+ # end
991
+ # end
992
+ # end
993
+ # Sketchup.active_model.select_tool(Example::MyTool.new)
994
+ #
995
+ # @param [Integer] texture_id
996
+ #
997
+ # @return [Boolean] +true+ if texture was released. +false+ otherwise.
998
+ #
999
+ # @see #load_texture
1000
+ def release_texture(texture_id)
1001
+ end
1002
+
1003
+ # The remove_observer method is used to remove an observer from the current
1004
+ # object.
1005
+ #
1006
+ # @example
1007
+ # view = Sketchup.active_model.active_view
1008
+ # status = view.remove_observer observer
1009
+ #
1010
+ # @param [Object] observer
1011
+ # An observer.
1012
+ #
1013
+ # @return [Boolean] true if successful, false if unsuccessful.
1014
+ #
1015
+ # @version SketchUp 6.0
1016
+ def remove_observer(observer)
1017
+ end
1018
+
1019
+ # The screen_coords method is used to retrieve the screen coordinates of the
1020
+ # given point on the screen.
1021
+ #
1022
+ # The x and y values returned correspond to the x and y screen coordinates.
1023
+ # Ignore the z values. If the referenced point is not in the current
1024
+ # viewport, the x and/or y value may be negative.
1025
+ #
1026
+ # @example
1027
+ # point = view.screen_coords(ORIGIN)
1028
+ #
1029
+ # @param [Geom::Point3d] point3d
1030
+ # A Point3d object.
1031
+ #
1032
+ # @return [Geom::Point3d] A Point3d containing the screen position
1033
+ #
1034
+ # @version SketchUp 6.0
1035
+ def screen_coords(point3d)
1036
+ end
1037
+
1038
+ # Set the drawing color for the view based on the direction of a line that you
1039
+ # want to draw. These colors will match the axes colors in the SketchUp model
1040
+ # (typically blue for straight up and down, etc.)
1041
+ #
1042
+ # This method is usually invoked within the draw method of a tool.
1043
+ #
1044
+ # @example
1045
+ # view = view.set_color_from_line point1, point2
1046
+ #
1047
+ # @param [Geom::Point3d] point1
1048
+ # Point3d object representing first point in the line.
1049
+ #
1050
+ # @param [Geom::Point3d] point2
1051
+ # Point3d object representing the second point in the line.
1052
+ #
1053
+ # @return [Sketchup::View] a View object
1054
+ #
1055
+ # @version SketchUp 6.0
1056
+ def set_color_from_line(point1, point2)
1057
+ end
1058
+
1059
+ # The show_frame method is used to show a frame of an Animation object in the
1060
+ # current view.
1061
+ #
1062
+ # You can supply an optional delay in seconds to wait before showing the next
1063
+ # frame. This can be useful to control the speed at which the animation runs.
1064
+ #
1065
+ # @example
1066
+ # status = view.show_frame delay
1067
+ #
1068
+ # @param [Numeric] delay
1069
+ # An optional delay in seconds.
1070
+ #
1071
+ # @return [Sketchup::View]
1072
+ #
1073
+ # @version SketchUp 6.0
1074
+ def show_frame(delay)
1075
+ end
1076
+
1077
+ # This method is used to compute the bounds of the text when
1078
+ # using {#draw_text}. The bounds are not a tight fit around the top and bottom
1079
+ # as they include varying amount of line spacing depending on the font used.
1080
+ #
1081
+ # The {TextVerticalAlignCenter} option will align the text to the center of the
1082
+ # height of the first line, not the whole boundingbox of the text.
1083
+ #
1084
+ # <b>Example of different vertical alignment and text bounds:</b>
1085
+ #
1086
+ # rdoc-image:../images/view-draw-text-with-bounds.png
1087
+ #
1088
+ # @example
1089
+ # class ExampleTool
1090
+ # TEXT_OPTIONS = {
1091
+ # :font => "Arial",
1092
+ # :size => 20,
1093
+ # :bold => true,
1094
+ # :align => TextAlignRight,
1095
+ # :align => TextVerticalAlignBaseline
1096
+ # }
1097
+ #
1098
+ # # Since `draw` is called frequently it can be useful to pre-compute and
1099
+ # # cache values used by `draw`.
1100
+ # def activate
1101
+ # @text = "Hello SketchUp"
1102
+ # @position = Geom::Point3d.new(200, 200, 0)
1103
+ #
1104
+ # # Compute text bounds
1105
+ # view = Sketchup.active_model.active_view
1106
+ # bounds = view.text_bounds(@position, @text, TEXT_OPTIONS)
1107
+ #
1108
+ # # Compute polygon for the text bounds
1109
+ # x1, y1 = bounds.upper_left.to_a
1110
+ # x2, y2 = bounds.lower_right.to_a
1111
+ # @points = [
1112
+ # Geom::Point3d.new(x1, y1),
1113
+ # Geom::Point3d.new(x1, y2),
1114
+ # Geom::Point3d.new(x2, y2),
1115
+ # Geom::Point3d.new(x2, y1),
1116
+ # ]
1117
+ # end
1118
+ #
1119
+ # def draw(view)
1120
+ # # Draw text bounds
1121
+ # view.drawing_color = Sketchup::Color.new(255, 0, 0, 64)
1122
+ # view.draw2d(GL_QUADS, @points)
1123
+ #
1124
+ # # Draw text
1125
+ # view.draw_text(@position, @text, TEXT_OPTIONS)
1126
+ # end
1127
+ # end
1128
+ #
1129
+ # @note Under Windows the font name must be less than 32 characters - due to
1130
+ # system limitations.
1131
+ #
1132
+ # @option options [String] :font The name of the font to use. If it does not
1133
+ # exist on the system, a default font will be used instead.
1134
+ #
1135
+ # @option options [Integer] :size The size of the font in points
1136
+ #
1137
+ # @option options [Boolean] :bold Controls the Bold property of the font.
1138
+ #
1139
+ # @option options [Boolean] :italic Controls the Italic property of the font.
1140
+ #
1141
+ # @option options [Integer] :align The text alignment, one of the following
1142
+ # constants: {TextAlignLeft}, {TextAlignCenter} or {TextAlignRight}.
1143
+ #
1144
+ # @option options [Integer] :vertical_align The vertical text alignment
1145
+ # one of the following constants:
1146
+ # {TextVerticalAlignBoundsTop}, {TextVerticalAlignBaseline},
1147
+ # {TextVerticalAlignCapHeight} or {TextVerticalAlignCenter}.
1148
+ #
1149
+ # @param [Geom::Point3d] point
1150
+ # A Point3d object representing a 2D coordinate
1151
+ # in view space.
1152
+ #
1153
+ # @param [String] text
1154
+ # The text string to draw.
1155
+ #
1156
+ # @param [Hash] options
1157
+ # The text can be customized by providing a hash or
1158
+ # named arguments of options.
1159
+ #
1160
+ # @return [Geom::Bounds2d]
1161
+ #
1162
+ # @see #draw_text
1163
+ #
1164
+ # @version SketchUp 2020.0
1165
+ def text_bounds(point, text, options = {})
1166
+ end
1167
+
1168
+ # Set a tooltip to display in the view. This is useful for displaying tooltips
1169
+ # in a tool that you write in Ruby.
1170
+ #
1171
+ # @example
1172
+ # tooltip = view.tooltip = string
1173
+ #
1174
+ # @param [String] string
1175
+ # The string tooltip.
1176
+ #
1177
+ # @return [String] the new tooltip string
1178
+ #
1179
+ # @version SketchUp 6.0
1180
+ def tooltip=(string)
1181
+ end
1182
+
1183
+ # The vpheight method is used to retrieve the height of the viewport for the
1184
+ # view.
1185
+ #
1186
+ # @example
1187
+ # model = Sketchup.active_model
1188
+ # view = model.active_view
1189
+ # height = view.vpheight
1190
+ #
1191
+ # @return [Integer] the height of the viewport in physical pixels.
1192
+ #
1193
+ # @version SketchUp 6.0
1194
+ def vpheight
1195
+ end
1196
+
1197
+ # The vpwidth method is used to retrieve the width of the viewport for the
1198
+ # view.
1199
+ #
1200
+ # @example
1201
+ # width = view.vpwidth
1202
+ #
1203
+ # @return [Integer] the width of the viewport in physical pixels.
1204
+ #
1205
+ # @version SketchUp 6.0
1206
+ def vpwidth
1207
+ end
1208
+
1209
+ # The {#write_image} method is used to write the current view to an image file.
1210
+ #
1211
+ # Supported file types are `.png`, `.jpg`, `.jpeg`, `gif`, `.bmp`, `.tif`.
1212
+ # For other file formats available from the GUI in File > Export > 2D
1213
+ # Graphics, .e.g `.pdf`, use {Sketchup::Model#export}.
1214
+ #
1215
+ # compression = 1.0)
1216
+ # @note Prefer the overload with option hash instead of this variant. This
1217
+ # overload is not updated with new options.
1218
+ #
1219
+ # @example
1220
+ # filename = File.join(Sketchup.temp_dir, 'example.png')
1221
+ # antialias = false
1222
+ # compression = 0.9
1223
+ # model = Sketchup.active_model
1224
+ # view = model.active_view
1225
+ # view.write_image(filename, 640, 480, antialias, compression)
1226
+ #
1227
+ # @param [String] filename
1228
+ # The filename for the saved image
1229
+ # @param [Integer] width
1230
+ # Width in pixels, defaults to the current viewport width {#vpwidth}.
1231
+ # @param [Integer] height
1232
+ # Height in pixels, defaults to the current viewport height {#vpheight}.
1233
+ # @param [Boolean] antialias
1234
+ # @param [Float] compression
1235
+ # Compression factor for JPEG images, between +0.0+ and +1.0+.
1236
+ #
1237
+ # @overload write_image(filename, width = view.vpwidth, height = view.vpheight, antialias = false,
1238
+ #
1239
+ #
1240
+ # @overload write_image(options)
1241
+ #
1242
+ # @example
1243
+ # options = {
1244
+ # :filename => File.join(Sketchup.temp_dir, 'example.png'),
1245
+ # :width => 640,
1246
+ # :height => 480,
1247
+ # :antialias => false,
1248
+ # :compression => 0.9,
1249
+ # :transparent => true
1250
+ # }
1251
+ # model = Sketchup.active_model
1252
+ # view = model.active_view
1253
+ # view.write_image(options)
1254
+ #
1255
+ # @version SketchUp 7
1256
+ # @param [Hash] options
1257
+ # @option options [String] filename The filename for the saved image.
1258
+ # @option options [Integer] width (#vpwidth) Width in pixels (max +16000+).
1259
+ # @option options [Integer] height (#vpheight) Height in pixels (max +16000+).
1260
+ # @option options [Float] scale_factor (1.0) Scaling factor for
1261
+ # elements that are viewport dependent, such as text heights, arrow heads,
1262
+ # line widths, stipple patterns, etc. (Added in SketchUp 2019.2)
1263
+ # @option options [Boolean] antialias (false)
1264
+ # @option options [Float] compression (1.0) Compression factor for JPEG,
1265
+ # images between +0.0+ and +1.0+.
1266
+ # @option options [Boolean] transparent (false) Added in SketchUp 8.
1267
+ #
1268
+ # @overload write_image(options)
1269
+ #
1270
+ # It is possible to dump the framebuffer to file by setting +:source+ to
1271
+ # +:framebuffer+. When saving the framebuffer only the following options are
1272
+ # valid.
1273
+ #
1274
+ # @example
1275
+ # options = {
1276
+ # :filename => File.join(Sketchup.temp_dir, 'example.png'),
1277
+ # :source => :framebuffer,
1278
+ # :compression => 0.9,
1279
+ # }
1280
+ # model = Sketchup.active_model
1281
+ # view = model.active_view
1282
+ # view.write_image(options)
1283
+ #
1284
+ # @version SketchUp 7
1285
+ # @param [Hash] options
1286
+ # @option options [String] filename The filename for the saved image.
1287
+ # @option options [Boolean] source (:image) Set to +:framebuffer+ to dump the
1288
+ # current framebuffer.
1289
+ # @option options [Float] compression (1.0) Compression factor for JPEG,
1290
+ # images between +0.0+ and +1.0+.
1291
+ #
1292
+ # @return [Boolean]
1293
+ #
1294
+ # @version SketchUp 6.0
1295
+ def write_image(*args)
1296
+ end
1297
+
1298
+ # The zoom method is used to zoom in or out by some zoom factor.
1299
+ #
1300
+ # @example
1301
+ # view = view.zoom factor
1302
+ # view = view.zoom selection
1303
+ # view = view.zoom entity
1304
+ # view = view.zoom array_of_entities
1305
+ #
1306
+ # @param [Numeric, Sketchup::Selection, Sketchup::Entity, Array<Sketchup::Entity>] zoom_or_ents
1307
+ # A Float zoom factor from 1.0 or larger or an Array or
1308
+ # collection of entities to "zoom extents" around.
1309
+ #
1310
+ # @return [Sketchup::View] the zoomed View object
1311
+ #
1312
+ # @version SketchUp 6.0
1313
+ def zoom(zoom_or_ents)
1314
+ end
1315
+
1316
+ # The zoom_extents method is used to zoom to the extents about the entire
1317
+ # model, as if the user has selected the zoom extents command from the menu.
1318
+ #
1319
+ # @example
1320
+ # view = Sketchup.active_model.active_view
1321
+ # new_view = view.zoom_extents
1322
+ #
1323
+ # @return [Sketchup::View] the zoomed View object
1324
+ #
1325
+ # @version SketchUp 6.0
1326
+ def zoom_extents
1327
+ end
1328
+
1329
+ end