sketchup-api-stubs 0.7.7 → 0.7.9

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