@itwin/frontend-devtools 3.7.0-dev.2 → 3.7.0-dev.5

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 (371) hide show
  1. package/CHANGELOG.md +11 -1
  2. package/lib/cjs/ClipboardUtilities.d.ts +8 -8
  3. package/lib/cjs/ClipboardUtilities.js +26 -26
  4. package/lib/cjs/ClipboardUtilities.js.map +1 -1
  5. package/lib/cjs/FrontEndDevTools.d.ts +19 -19
  6. package/lib/cjs/FrontEndDevTools.js +221 -221
  7. package/lib/cjs/FrontEndDevTools.js.map +1 -1
  8. package/lib/cjs/effects/Convolution.d.ts +68 -68
  9. package/lib/cjs/effects/Convolution.js +165 -165
  10. package/lib/cjs/effects/Convolution.js.map +1 -1
  11. package/lib/cjs/effects/EffectTools.d.ts +33 -33
  12. package/lib/cjs/effects/EffectTools.js +68 -68
  13. package/lib/cjs/effects/EffectTools.js.map +1 -1
  14. package/lib/cjs/effects/Explosion.d.ts +12 -12
  15. package/lib/cjs/effects/Explosion.js +168 -168
  16. package/lib/cjs/effects/Explosion.js.map +1 -1
  17. package/lib/cjs/effects/FlipImage.d.ts +30 -30
  18. package/lib/cjs/effects/FlipImage.js +99 -99
  19. package/lib/cjs/effects/FlipImage.js.map +1 -1
  20. package/lib/cjs/effects/LensDistortion.d.ts +34 -34
  21. package/lib/cjs/effects/LensDistortion.js +109 -109
  22. package/lib/cjs/effects/LensDistortion.js.map +1 -1
  23. package/lib/cjs/effects/Random.d.ts +24 -24
  24. package/lib/cjs/effects/Random.js +49 -49
  25. package/lib/cjs/effects/Random.js.map +1 -1
  26. package/lib/cjs/effects/Saturation.d.ts +30 -30
  27. package/lib/cjs/effects/Saturation.js +85 -85
  28. package/lib/cjs/effects/Saturation.js.map +1 -1
  29. package/lib/cjs/effects/Snow.d.ts +76 -76
  30. package/lib/cjs/effects/Snow.js +187 -187
  31. package/lib/cjs/effects/Snow.js.map +1 -1
  32. package/lib/cjs/effects/Vignette.d.ts +39 -39
  33. package/lib/cjs/effects/Vignette.js +108 -108
  34. package/lib/cjs/effects/Vignette.js.map +1 -1
  35. package/lib/cjs/frontend-devtools.d.ts +82 -82
  36. package/lib/cjs/frontend-devtools.js +98 -98
  37. package/lib/cjs/frontend-devtools.js.map +1 -1
  38. package/lib/cjs/tools/AnimationIntervalTool.d.ts +15 -15
  39. package/lib/cjs/tools/AnimationIntervalTool.js +30 -30
  40. package/lib/cjs/tools/AnimationIntervalTool.js.map +1 -1
  41. package/lib/cjs/tools/ChangeUnitsTool.d.ts +15 -15
  42. package/lib/cjs/tools/ChangeUnitsTool.js +41 -41
  43. package/lib/cjs/tools/ChangeUnitsTool.js.map +1 -1
  44. package/lib/cjs/tools/ClipTools.d.ts +67 -67
  45. package/lib/cjs/tools/ClipTools.js +164 -164
  46. package/lib/cjs/tools/ClipTools.js.map +1 -1
  47. package/lib/cjs/tools/DisplayStyleTools.d.ts +145 -145
  48. package/lib/cjs/tools/DisplayStyleTools.js +370 -370
  49. package/lib/cjs/tools/DisplayStyleTools.js.map +1 -1
  50. package/lib/cjs/tools/EmphasizeElementsTool.d.ts +60 -60
  51. package/lib/cjs/tools/EmphasizeElementsTool.js +154 -154
  52. package/lib/cjs/tools/EmphasizeElementsTool.js.map +1 -1
  53. package/lib/cjs/tools/FrustumDecoration.d.ts +57 -57
  54. package/lib/cjs/tools/FrustumDecoration.js +374 -374
  55. package/lib/cjs/tools/FrustumDecoration.js.map +1 -1
  56. package/lib/cjs/tools/InspectElementTool.d.ts +42 -42
  57. package/lib/cjs/tools/InspectElementTool.js +198 -198
  58. package/lib/cjs/tools/InspectElementTool.js.map +1 -1
  59. package/lib/cjs/tools/MapLayerTool.d.ts +264 -264
  60. package/lib/cjs/tools/MapLayerTool.js +507 -507
  61. package/lib/cjs/tools/MapLayerTool.js.map +1 -1
  62. package/lib/cjs/tools/MeasureTileLoadTime.d.ts +12 -12
  63. package/lib/cjs/tools/MeasureTileLoadTime.js +63 -63
  64. package/lib/cjs/tools/MeasureTileLoadTime.js.map +1 -1
  65. package/lib/cjs/tools/ModelAppearanceTools.d.ts +86 -86
  66. package/lib/cjs/tools/ModelAppearanceTools.js +183 -183
  67. package/lib/cjs/tools/ModelAppearanceTools.js.map +1 -1
  68. package/lib/cjs/tools/PlanProjectionTools.d.ts +40 -40
  69. package/lib/cjs/tools/PlanProjectionTools.js +149 -149
  70. package/lib/cjs/tools/PlanProjectionTools.js.map +1 -1
  71. package/lib/cjs/tools/PlanarMaskTools.d.ts +182 -182
  72. package/lib/cjs/tools/PlanarMaskTools.js +393 -393
  73. package/lib/cjs/tools/PlanarMaskTools.js.map +1 -1
  74. package/lib/cjs/tools/ProjectExtents.d.ts +41 -41
  75. package/lib/cjs/tools/ProjectExtents.js +110 -110
  76. package/lib/cjs/tools/ProjectExtents.js.map +1 -1
  77. package/lib/cjs/tools/RealityModelTools.d.ts +116 -116
  78. package/lib/cjs/tools/RealityModelTools.js +281 -281
  79. package/lib/cjs/tools/RealityModelTools.js.map +1 -1
  80. package/lib/cjs/tools/RealityTransitionTool.d.ts +25 -25
  81. package/lib/cjs/tools/RealityTransitionTool.js +116 -116
  82. package/lib/cjs/tools/RealityTransitionTool.js.map +1 -1
  83. package/lib/cjs/tools/RenderSystemTools.d.ts +38 -38
  84. package/lib/cjs/tools/RenderSystemTools.js +70 -70
  85. package/lib/cjs/tools/RenderSystemTools.js.map +1 -1
  86. package/lib/cjs/tools/RenderTargetTools.d.ts +107 -107
  87. package/lib/cjs/tools/RenderTargetTools.js +174 -174
  88. package/lib/cjs/tools/RenderTargetTools.js.map +1 -1
  89. package/lib/cjs/tools/ReportWebGLCompatibilityTool.d.ts +11 -11
  90. package/lib/cjs/tools/ReportWebGLCompatibilityTool.js +30 -30
  91. package/lib/cjs/tools/ReportWebGLCompatibilityTool.js.map +1 -1
  92. package/lib/cjs/tools/SavedViews.d.ts +46 -46
  93. package/lib/cjs/tools/SavedViews.js +136 -136
  94. package/lib/cjs/tools/SavedViews.js.map +1 -1
  95. package/lib/cjs/tools/ScheduleScriptTools.d.ts +37 -37
  96. package/lib/cjs/tools/ScheduleScriptTools.js +159 -159
  97. package/lib/cjs/tools/ScheduleScriptTools.js.map +1 -1
  98. package/lib/cjs/tools/SelectionTools.d.ts +28 -28
  99. package/lib/cjs/tools/SelectionTools.js +87 -87
  100. package/lib/cjs/tools/SelectionTools.js.map +1 -1
  101. package/lib/cjs/tools/SetGpuMemoryLimitTool.d.ts +15 -15
  102. package/lib/cjs/tools/SetGpuMemoryLimitTool.js +33 -33
  103. package/lib/cjs/tools/SetGpuMemoryLimitTool.js.map +1 -1
  104. package/lib/cjs/tools/SourceAspectIdTools.d.ts +40 -40
  105. package/lib/cjs/tools/SourceAspectIdTools.d.ts.map +1 -1
  106. package/lib/cjs/tools/SourceAspectIdTools.js +87 -86
  107. package/lib/cjs/tools/SourceAspectIdTools.js.map +1 -1
  108. package/lib/cjs/tools/TileRequestDecoration.d.ts +12 -12
  109. package/lib/cjs/tools/TileRequestDecoration.js +83 -83
  110. package/lib/cjs/tools/TileRequestDecoration.js.map +1 -1
  111. package/lib/cjs/tools/TileTreeBoundsDecoration.d.ts +11 -11
  112. package/lib/cjs/tools/TileTreeBoundsDecoration.js +74 -74
  113. package/lib/cjs/tools/TileTreeBoundsDecoration.js.map +1 -1
  114. package/lib/cjs/tools/ToolTipProvider.d.ts +15 -15
  115. package/lib/cjs/tools/ToolTipProvider.js +66 -66
  116. package/lib/cjs/tools/ToolTipProvider.js.map +1 -1
  117. package/lib/cjs/tools/ViewportTools.d.ts +218 -218
  118. package/lib/cjs/tools/ViewportTools.js +516 -516
  119. package/lib/cjs/tools/ViewportTools.js.map +1 -1
  120. package/lib/cjs/tools/parseArgs.d.ts +23 -23
  121. package/lib/cjs/tools/parseArgs.js +51 -51
  122. package/lib/cjs/tools/parseArgs.js.map +1 -1
  123. package/lib/cjs/tools/parseBoolean.d.ts +8 -8
  124. package/lib/cjs/tools/parseBoolean.js +26 -26
  125. package/lib/cjs/tools/parseBoolean.js.map +1 -1
  126. package/lib/cjs/tools/parseToggle.d.ts +8 -8
  127. package/lib/cjs/tools/parseToggle.js +25 -25
  128. package/lib/cjs/tools/parseToggle.js.map +1 -1
  129. package/lib/cjs/ui/Button.d.ts +29 -29
  130. package/lib/cjs/ui/Button.js +26 -26
  131. package/lib/cjs/ui/Button.js.map +1 -1
  132. package/lib/cjs/ui/CheckBox.d.ts +23 -23
  133. package/lib/cjs/ui/CheckBox.js +27 -27
  134. package/lib/cjs/ui/CheckBox.js.map +1 -1
  135. package/lib/cjs/ui/ColorInput.d.ts +27 -27
  136. package/lib/cjs/ui/ColorInput.js +53 -53
  137. package/lib/cjs/ui/ColorInput.js.map +1 -1
  138. package/lib/cjs/ui/ComboBox.d.ts +28 -28
  139. package/lib/cjs/ui/ComboBox.js +42 -42
  140. package/lib/cjs/ui/ComboBox.js.map +1 -1
  141. package/lib/cjs/ui/DataList.d.ts +27 -27
  142. package/lib/cjs/ui/DataList.js +39 -39
  143. package/lib/cjs/ui/DataList.js.map +1 -1
  144. package/lib/cjs/ui/NestedMenu.d.ts +19 -19
  145. package/lib/cjs/ui/NestedMenu.js +46 -46
  146. package/lib/cjs/ui/NestedMenu.js.map +1 -1
  147. package/lib/cjs/ui/NumericInput.d.ts +35 -35
  148. package/lib/cjs/ui/NumericInput.js +61 -61
  149. package/lib/cjs/ui/NumericInput.js.map +1 -1
  150. package/lib/cjs/ui/RadioBox.d.ts +29 -29
  151. package/lib/cjs/ui/RadioBox.js +76 -76
  152. package/lib/cjs/ui/RadioBox.js.map +1 -1
  153. package/lib/cjs/ui/Slider.d.ts +28 -28
  154. package/lib/cjs/ui/Slider.js +42 -42
  155. package/lib/cjs/ui/Slider.js.map +1 -1
  156. package/lib/cjs/ui/TextBox.d.ts +32 -32
  157. package/lib/cjs/ui/TextBox.js +56 -56
  158. package/lib/cjs/ui/TextBox.js.map +1 -1
  159. package/lib/cjs/widgets/DiagnosticsPanel.d.ts +37 -37
  160. package/lib/cjs/widgets/DiagnosticsPanel.js +81 -81
  161. package/lib/cjs/widgets/DiagnosticsPanel.js.map +1 -1
  162. package/lib/cjs/widgets/FpsTracker.d.ts +19 -19
  163. package/lib/cjs/widgets/FpsTracker.js +56 -56
  164. package/lib/cjs/widgets/FpsTracker.js.map +1 -1
  165. package/lib/cjs/widgets/GpuProfiler.d.ts +16 -16
  166. package/lib/cjs/widgets/GpuProfiler.js +192 -192
  167. package/lib/cjs/widgets/GpuProfiler.js.map +1 -1
  168. package/lib/cjs/widgets/KeyinField.d.ts +61 -61
  169. package/lib/cjs/widgets/KeyinField.js +187 -187
  170. package/lib/cjs/widgets/KeyinField.js.map +1 -1
  171. package/lib/cjs/widgets/MemoryTracker.d.ts +27 -27
  172. package/lib/cjs/widgets/MemoryTracker.js +243 -243
  173. package/lib/cjs/widgets/MemoryTracker.js.map +1 -1
  174. package/lib/cjs/widgets/RenderCommandBreakdown.d.ts +15 -15
  175. package/lib/cjs/widgets/RenderCommandBreakdown.js +68 -68
  176. package/lib/cjs/widgets/RenderCommandBreakdown.js.map +1 -1
  177. package/lib/cjs/widgets/TileMemoryBreakdown.d.ts +30 -30
  178. package/lib/cjs/widgets/TileMemoryBreakdown.js +204 -204
  179. package/lib/cjs/widgets/TileMemoryBreakdown.js.map +1 -1
  180. package/lib/cjs/widgets/TileStatisticsTracker.d.ts +21 -21
  181. package/lib/cjs/widgets/TileStatisticsTracker.js +142 -142
  182. package/lib/cjs/widgets/TileStatisticsTracker.js.map +1 -1
  183. package/lib/cjs/widgets/ToolSettingsTracker.d.ts +9 -9
  184. package/lib/cjs/widgets/ToolSettingsTracker.js +211 -211
  185. package/lib/cjs/widgets/ToolSettingsTracker.js.map +1 -1
  186. package/lib/esm/ClipboardUtilities.d.ts +8 -8
  187. package/lib/esm/ClipboardUtilities.js +22 -22
  188. package/lib/esm/ClipboardUtilities.js.map +1 -1
  189. package/lib/esm/FrontEndDevTools.d.ts +19 -19
  190. package/lib/esm/FrontEndDevTools.js +217 -217
  191. package/lib/esm/FrontEndDevTools.js.map +1 -1
  192. package/lib/esm/effects/Convolution.d.ts +68 -68
  193. package/lib/esm/effects/Convolution.js +155 -155
  194. package/lib/esm/effects/Convolution.js.map +1 -1
  195. package/lib/esm/effects/EffectTools.d.ts +33 -33
  196. package/lib/esm/effects/EffectTools.js +62 -62
  197. package/lib/esm/effects/EffectTools.js.map +1 -1
  198. package/lib/esm/effects/Explosion.d.ts +12 -12
  199. package/lib/esm/effects/Explosion.js +164 -164
  200. package/lib/esm/effects/Explosion.js.map +1 -1
  201. package/lib/esm/effects/FlipImage.d.ts +30 -30
  202. package/lib/esm/effects/FlipImage.js +94 -94
  203. package/lib/esm/effects/FlipImage.js.map +1 -1
  204. package/lib/esm/effects/LensDistortion.d.ts +34 -34
  205. package/lib/esm/effects/LensDistortion.js +104 -104
  206. package/lib/esm/effects/LensDistortion.js.map +1 -1
  207. package/lib/esm/effects/Random.d.ts +24 -24
  208. package/lib/esm/effects/Random.js +41 -41
  209. package/lib/esm/effects/Random.js.map +1 -1
  210. package/lib/esm/effects/Saturation.d.ts +30 -30
  211. package/lib/esm/effects/Saturation.js +80 -80
  212. package/lib/esm/effects/Saturation.js.map +1 -1
  213. package/lib/esm/effects/Snow.d.ts +76 -76
  214. package/lib/esm/effects/Snow.js +182 -182
  215. package/lib/esm/effects/Snow.js.map +1 -1
  216. package/lib/esm/effects/Vignette.d.ts +39 -39
  217. package/lib/esm/effects/Vignette.js +103 -103
  218. package/lib/esm/effects/Vignette.js.map +1 -1
  219. package/lib/esm/frontend-devtools.d.ts +82 -82
  220. package/lib/esm/frontend-devtools.js +86 -86
  221. package/lib/esm/frontend-devtools.js.map +1 -1
  222. package/lib/esm/tools/AnimationIntervalTool.d.ts +15 -15
  223. package/lib/esm/tools/AnimationIntervalTool.js +26 -26
  224. package/lib/esm/tools/AnimationIntervalTool.js.map +1 -1
  225. package/lib/esm/tools/ChangeUnitsTool.d.ts +15 -15
  226. package/lib/esm/tools/ChangeUnitsTool.js +37 -37
  227. package/lib/esm/tools/ChangeUnitsTool.js.map +1 -1
  228. package/lib/esm/tools/ClipTools.d.ts +67 -67
  229. package/lib/esm/tools/ClipTools.js +158 -158
  230. package/lib/esm/tools/ClipTools.js.map +1 -1
  231. package/lib/esm/tools/DisplayStyleTools.d.ts +145 -145
  232. package/lib/esm/tools/DisplayStyleTools.js +356 -356
  233. package/lib/esm/tools/DisplayStyleTools.js.map +1 -1
  234. package/lib/esm/tools/EmphasizeElementsTool.d.ts +60 -60
  235. package/lib/esm/tools/EmphasizeElementsTool.js +145 -145
  236. package/lib/esm/tools/EmphasizeElementsTool.js.map +1 -1
  237. package/lib/esm/tools/FrustumDecoration.d.ts +57 -57
  238. package/lib/esm/tools/FrustumDecoration.js +367 -367
  239. package/lib/esm/tools/FrustumDecoration.js.map +1 -1
  240. package/lib/esm/tools/InspectElementTool.d.ts +42 -42
  241. package/lib/esm/tools/InspectElementTool.js +194 -194
  242. package/lib/esm/tools/InspectElementTool.js.map +1 -1
  243. package/lib/esm/tools/MapLayerTool.d.ts +264 -264
  244. package/lib/esm/tools/MapLayerTool.js +485 -485
  245. package/lib/esm/tools/MapLayerTool.js.map +1 -1
  246. package/lib/esm/tools/MeasureTileLoadTime.d.ts +12 -12
  247. package/lib/esm/tools/MeasureTileLoadTime.js +59 -59
  248. package/lib/esm/tools/MeasureTileLoadTime.js.map +1 -1
  249. package/lib/esm/tools/ModelAppearanceTools.d.ts +86 -86
  250. package/lib/esm/tools/ModelAppearanceTools.js +172 -172
  251. package/lib/esm/tools/ModelAppearanceTools.js.map +1 -1
  252. package/lib/esm/tools/PlanProjectionTools.d.ts +40 -40
  253. package/lib/esm/tools/PlanProjectionTools.js +143 -143
  254. package/lib/esm/tools/PlanProjectionTools.js.map +1 -1
  255. package/lib/esm/tools/PlanarMaskTools.d.ts +182 -182
  256. package/lib/esm/tools/PlanarMaskTools.js +377 -377
  257. package/lib/esm/tools/PlanarMaskTools.js.map +1 -1
  258. package/lib/esm/tools/ProjectExtents.d.ts +41 -41
  259. package/lib/esm/tools/ProjectExtents.js +104 -104
  260. package/lib/esm/tools/ProjectExtents.js.map +1 -1
  261. package/lib/esm/tools/RealityModelTools.d.ts +116 -116
  262. package/lib/esm/tools/RealityModelTools.js +268 -268
  263. package/lib/esm/tools/RealityModelTools.js.map +1 -1
  264. package/lib/esm/tools/RealityTransitionTool.d.ts +25 -25
  265. package/lib/esm/tools/RealityTransitionTool.js +112 -112
  266. package/lib/esm/tools/RealityTransitionTool.js.map +1 -1
  267. package/lib/esm/tools/RenderSystemTools.d.ts +38 -38
  268. package/lib/esm/tools/RenderSystemTools.js +63 -63
  269. package/lib/esm/tools/RenderSystemTools.js.map +1 -1
  270. package/lib/esm/tools/RenderTargetTools.d.ts +107 -107
  271. package/lib/esm/tools/RenderTargetTools.js +159 -159
  272. package/lib/esm/tools/RenderTargetTools.js.map +1 -1
  273. package/lib/esm/tools/ReportWebGLCompatibilityTool.d.ts +11 -11
  274. package/lib/esm/tools/ReportWebGLCompatibilityTool.js +26 -26
  275. package/lib/esm/tools/ReportWebGLCompatibilityTool.js.map +1 -1
  276. package/lib/esm/tools/SavedViews.d.ts +46 -46
  277. package/lib/esm/tools/SavedViews.js +128 -128
  278. package/lib/esm/tools/SavedViews.js.map +1 -1
  279. package/lib/esm/tools/ScheduleScriptTools.d.ts +37 -37
  280. package/lib/esm/tools/ScheduleScriptTools.js +153 -153
  281. package/lib/esm/tools/ScheduleScriptTools.js.map +1 -1
  282. package/lib/esm/tools/SelectionTools.d.ts +28 -28
  283. package/lib/esm/tools/SelectionTools.js +82 -82
  284. package/lib/esm/tools/SelectionTools.js.map +1 -1
  285. package/lib/esm/tools/SetGpuMemoryLimitTool.d.ts +15 -15
  286. package/lib/esm/tools/SetGpuMemoryLimitTool.js +29 -29
  287. package/lib/esm/tools/SetGpuMemoryLimitTool.js.map +1 -1
  288. package/lib/esm/tools/SourceAspectIdTools.d.ts +40 -40
  289. package/lib/esm/tools/SourceAspectIdTools.d.ts.map +1 -1
  290. package/lib/esm/tools/SourceAspectIdTools.js +81 -80
  291. package/lib/esm/tools/SourceAspectIdTools.js.map +1 -1
  292. package/lib/esm/tools/TileRequestDecoration.d.ts +12 -12
  293. package/lib/esm/tools/TileRequestDecoration.js +79 -79
  294. package/lib/esm/tools/TileRequestDecoration.js.map +1 -1
  295. package/lib/esm/tools/TileTreeBoundsDecoration.d.ts +11 -11
  296. package/lib/esm/tools/TileTreeBoundsDecoration.js +70 -70
  297. package/lib/esm/tools/TileTreeBoundsDecoration.js.map +1 -1
  298. package/lib/esm/tools/ToolTipProvider.d.ts +15 -15
  299. package/lib/esm/tools/ToolTipProvider.js +62 -62
  300. package/lib/esm/tools/ToolTipProvider.js.map +1 -1
  301. package/lib/esm/tools/ViewportTools.d.ts +218 -218
  302. package/lib/esm/tools/ViewportTools.js +492 -492
  303. package/lib/esm/tools/ViewportTools.js.map +1 -1
  304. package/lib/esm/tools/parseArgs.d.ts +23 -23
  305. package/lib/esm/tools/parseArgs.js +47 -47
  306. package/lib/esm/tools/parseArgs.js.map +1 -1
  307. package/lib/esm/tools/parseBoolean.d.ts +8 -8
  308. package/lib/esm/tools/parseBoolean.js +22 -22
  309. package/lib/esm/tools/parseBoolean.js.map +1 -1
  310. package/lib/esm/tools/parseToggle.d.ts +8 -8
  311. package/lib/esm/tools/parseToggle.js +21 -21
  312. package/lib/esm/tools/parseToggle.js.map +1 -1
  313. package/lib/esm/ui/Button.d.ts +29 -29
  314. package/lib/esm/ui/Button.js +22 -22
  315. package/lib/esm/ui/Button.js.map +1 -1
  316. package/lib/esm/ui/CheckBox.d.ts +23 -23
  317. package/lib/esm/ui/CheckBox.js +23 -23
  318. package/lib/esm/ui/CheckBox.js.map +1 -1
  319. package/lib/esm/ui/ColorInput.d.ts +27 -27
  320. package/lib/esm/ui/ColorInput.js +48 -48
  321. package/lib/esm/ui/ColorInput.js.map +1 -1
  322. package/lib/esm/ui/ComboBox.d.ts +28 -28
  323. package/lib/esm/ui/ComboBox.js +38 -38
  324. package/lib/esm/ui/ComboBox.js.map +1 -1
  325. package/lib/esm/ui/DataList.d.ts +27 -27
  326. package/lib/esm/ui/DataList.js +34 -34
  327. package/lib/esm/ui/DataList.js.map +1 -1
  328. package/lib/esm/ui/NestedMenu.d.ts +19 -19
  329. package/lib/esm/ui/NestedMenu.js +42 -42
  330. package/lib/esm/ui/NestedMenu.js.map +1 -1
  331. package/lib/esm/ui/NumericInput.d.ts +35 -35
  332. package/lib/esm/ui/NumericInput.js +56 -56
  333. package/lib/esm/ui/NumericInput.js.map +1 -1
  334. package/lib/esm/ui/RadioBox.d.ts +29 -29
  335. package/lib/esm/ui/RadioBox.js +72 -72
  336. package/lib/esm/ui/RadioBox.js.map +1 -1
  337. package/lib/esm/ui/Slider.d.ts +28 -28
  338. package/lib/esm/ui/Slider.js +38 -38
  339. package/lib/esm/ui/Slider.js.map +1 -1
  340. package/lib/esm/ui/TextBox.d.ts +32 -32
  341. package/lib/esm/ui/TextBox.js +52 -52
  342. package/lib/esm/ui/TextBox.js.map +1 -1
  343. package/lib/esm/widgets/DiagnosticsPanel.d.ts +37 -37
  344. package/lib/esm/widgets/DiagnosticsPanel.js +77 -77
  345. package/lib/esm/widgets/DiagnosticsPanel.js.map +1 -1
  346. package/lib/esm/widgets/FpsTracker.d.ts +19 -19
  347. package/lib/esm/widgets/FpsTracker.js +52 -52
  348. package/lib/esm/widgets/FpsTracker.js.map +1 -1
  349. package/lib/esm/widgets/GpuProfiler.d.ts +16 -16
  350. package/lib/esm/widgets/GpuProfiler.js +188 -188
  351. package/lib/esm/widgets/GpuProfiler.js.map +1 -1
  352. package/lib/esm/widgets/KeyinField.d.ts +61 -61
  353. package/lib/esm/widgets/KeyinField.js +183 -183
  354. package/lib/esm/widgets/KeyinField.js.map +1 -1
  355. package/lib/esm/widgets/MemoryTracker.d.ts +27 -27
  356. package/lib/esm/widgets/MemoryTracker.js +238 -238
  357. package/lib/esm/widgets/MemoryTracker.js.map +1 -1
  358. package/lib/esm/widgets/RenderCommandBreakdown.d.ts +15 -15
  359. package/lib/esm/widgets/RenderCommandBreakdown.js +64 -64
  360. package/lib/esm/widgets/RenderCommandBreakdown.js.map +1 -1
  361. package/lib/esm/widgets/TileMemoryBreakdown.d.ts +30 -30
  362. package/lib/esm/widgets/TileMemoryBreakdown.js +200 -200
  363. package/lib/esm/widgets/TileMemoryBreakdown.js.map +1 -1
  364. package/lib/esm/widgets/TileStatisticsTracker.d.ts +21 -21
  365. package/lib/esm/widgets/TileStatisticsTracker.js +138 -138
  366. package/lib/esm/widgets/TileStatisticsTracker.js.map +1 -1
  367. package/lib/esm/widgets/ToolSettingsTracker.d.ts +9 -9
  368. package/lib/esm/widgets/ToolSettingsTracker.js +207 -207
  369. package/lib/esm/widgets/ToolSettingsTracker.js.map +1 -1
  370. package/lib/public/locales/en/FrontendDevTools.json +484 -484
  371. package/package.json +7 -7
@@ -1 +1 @@
1
- {"version":3,"file":"Explosion.js","sourceRoot":"","sources":["../../../src/effects/Explosion.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Effects\n */\n\nimport { Id64String } from \"@itwin/core-bentley\";\nimport { Point3d, Range1d, Vector3d } from \"@itwin/core-geometry\";\nimport { RenderTexture, TextureTransparency } from \"@itwin/core-common\";\nimport {\n DecorateContext, GraphicType, HitDetail, imageElementFromUrl, IModelApp, IModelConnection, ParticleCollectionBuilder, ParticleProps, Tool,\n} from \"@itwin/core-frontend\";\nimport { randomFloat, randomFloatInRange, randomIntegerInRange, randomPositionInRange } from \"./Random\";\n\n/** Represents one particle in the system. */\nclass Particle implements ParticleProps {\n /** Current position in the particle system's local coordinate space. */\n public readonly position: Point3d;\n /** Current velocity in meters per second. */\n public readonly velocity: Vector3d;\n /** Current age in seconds, incremented each frame. */\n public age = 0;\n /** Maximum age in seconds. When `this.age` exceeds `this.lifetime`, the particle expires. */\n public readonly lifetime: number;\n /** Particle size in meters. */\n public size: number;\n /** Particle transparency in [0..255]. */\n public transparency = 0;\n\n public get x() { return this.position.x; }\n public get y() { return this.position.y; }\n public get z() { return this.position.z; }\n\n public constructor(position: Point3d, velocity: Vector3d, lifetime: number, size: number) {\n this.position = position;\n this.velocity = velocity;\n this.lifetime = lifetime;\n this.size = size;\n }\n\n public get isExpired() { return this.age >= this.lifetime; }\n}\n\n/** Emits particles in a sphere with its center at the origin.\n * Each particle is emitted from the center of the sphere with random velocity toward the surface of the sphere.\n */\nclass ParticleEmitter {\n /** Range from which each particle's initial speed in meters per second will be selected. */\n public readonly speedRange = Range1d.createXX(1, 2);\n /** Range from which each particle's lifetime in seconds will be selected. */\n public readonly lifetimeRange = Range1d.createXX(5, 10);\n /** Range from which each particle's size in meters will be selected. */\n public readonly sizeRange = Range1d.createXX(0.2, 1.0);\n /** Range from which the number of particles emitted will be selected. */\n public numParticlesRange = Range1d.createXX(1600, 2200);\n\n /** Emit an explosion of particles from the center of the sphere. */\n public emit(): Particle[] {\n const particles = [];\n const numParticles = randomIntegerInRange(this.numParticlesRange);\n for (let i = 0; i < numParticles; i++) {\n const velocity = new Vector3d(randomFloat(-1.0, 1.0), randomFloat(-1.0, 1.0), randomFloat(-1.0, 1.0));\n velocity.normalizeInPlace();\n velocity.scaleInPlace(randomFloatInRange(this.speedRange));\n\n const lifetime = randomFloatInRange(this.lifetimeRange);\n const size = randomFloatInRange(this.sizeRange);\n particles.push(new Particle(new Point3d(0, 0, 0), velocity, lifetime, size));\n }\n\n return particles;\n }\n}\n\nclass ParticleSystem {\n private readonly _origin: Point3d;\n private readonly _pickableId: Id64String;\n private readonly _emitter = new ParticleEmitter();\n private _numEmissions: number;\n private readonly _texture: RenderTexture;\n private _lastUpdateTime: number;\n private _particles: Particle[] = [];\n private readonly _scratchVector3d = new Vector3d();\n private _dispose?: VoidFunction;\n /** Acceleration in Z applied to particles, in meters per second squared. */\n public gravity = -3;\n\n public static numEmissionsRange = Range1d.createXX(1, 5);\n\n public constructor(texture: RenderTexture, iModel: IModelConnection, numEmissions: number) {\n this._texture = texture;\n this._pickableId = iModel.transientIds.getNext();\n this._numEmissions = numEmissions;\n this._lastUpdateTime = Date.now();\n\n this._origin = randomPositionInRange(iModel.projectExtents);\n\n this._dispose = iModel.onClose.addListener(() => this.dispose());\n }\n\n public dispose(): void {\n if (this._dispose) {\n this._dispose();\n this._dispose = undefined;\n }\n\n IModelApp.viewManager.dropDecorator(this);\n this._texture.dispose();\n }\n\n public update(): void {\n const now = Date.now();\n let deltaMillis = now - this._lastUpdateTime;\n deltaMillis = Math.min(100, deltaMillis);\n this._lastUpdateTime = now;\n\n let numParticles = this._particles.length;\n if (numParticles === 0) {\n this._numEmissions--;\n if (this._numEmissions < 0)\n this.dispose();\n else\n this._particles = this._emitter.emit();\n\n return;\n }\n\n const elapsedSeconds = deltaMillis / 1000;\n for (let i = 0; i < numParticles; i++) {\n const particle = this._particles[i];\n this.updateParticle(particle, elapsedSeconds);\n if (particle.isExpired) {\n this._particles[i] = this._particles[numParticles - 1];\n --i;\n --numParticles;\n }\n }\n\n this._particles.length = numParticles;\n }\n\n private updateParticle(particle: Particle, elapsedSeconds: number): void {\n const velocity = particle.velocity.clone(this._scratchVector3d);\n velocity.scale(elapsedSeconds, velocity);\n velocity.z += elapsedSeconds * this.gravity;\n particle.position.addInPlace(velocity);\n particle.transparency = 255 * (particle.age / particle.lifetime);\n\n particle.age += elapsedSeconds;\n }\n\n public decorate(context: DecorateContext): void {\n if (!context.viewport.view.isSpatialView())\n return;\n\n this.update();\n\n const builder = ParticleCollectionBuilder.create({\n viewport: context.viewport,\n texture: this._texture,\n size: (this._emitter.sizeRange.high - this._emitter.sizeRange.low) / 2,\n transparency: 0,\n origin: this._origin,\n pickableId: this._pickableId,\n });\n\n for (const particle of this._particles)\n builder.addParticle(particle);\n\n const graphic = builder.finish();\n if (graphic) {\n context.addDecoration(GraphicType.WorldDecoration, graphic);\n context.viewport.onRender.addOnce((vp) => vp.invalidateDecorations());\n }\n }\n\n public testDecorationHit(id: Id64String): boolean {\n return id === this._pickableId;\n }\n\n public async getDecorationToolTip(_hit: HitDetail): Promise<HTMLElement | string> {\n return \"Explosion effect\";\n }\n\n public static async addDecorator(iModel: IModelConnection): Promise<void> {\n // Note: The decorator takes ownership of the texture, and disposes of it when the decorator is disposed.\n const image = await imageElementFromUrl(`${IModelApp.publicPath}sprites/particle_explosion.png`);\n const texture = IModelApp.renderSystem.createTexture({\n ownership: \"external\",\n image: { source: image, transparency: TextureTransparency.Mixed },\n });\n if (texture)\n IModelApp.viewManager.addDecorator(new ParticleSystem(texture, iModel, randomIntegerInRange(this.numEmissionsRange)));\n }\n}\n\n/** This tool applies an explosion particle effect used for testing [ParticleCollectionBuilder]($frontend).\n * @beta\n */\nexport class ExplosionEffect extends Tool {\n public static override toolId = \"ExplosionEffect\";\n\n /** This method runs the tool, applying an explosion particle effect. */\n public override async run(): Promise<boolean> {\n const vp = IModelApp.viewManager.selectedView;\n if (vp)\n await ParticleSystem.addDecorator(vp.iModel);\n\n return true;\n }\n}\n"]}
1
+ {"version":3,"file":"Explosion.js","sourceRoot":"","sources":["../../../src/effects/Explosion.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Effects\r\n */\r\n\r\nimport { Id64String } from \"@itwin/core-bentley\";\r\nimport { Point3d, Range1d, Vector3d } from \"@itwin/core-geometry\";\r\nimport { RenderTexture, TextureTransparency } from \"@itwin/core-common\";\r\nimport {\r\n DecorateContext, GraphicType, HitDetail, imageElementFromUrl, IModelApp, IModelConnection, ParticleCollectionBuilder, ParticleProps, Tool,\r\n} from \"@itwin/core-frontend\";\r\nimport { randomFloat, randomFloatInRange, randomIntegerInRange, randomPositionInRange } from \"./Random\";\r\n\r\n/** Represents one particle in the system. */\r\nclass Particle implements ParticleProps {\r\n /** Current position in the particle system's local coordinate space. */\r\n public readonly position: Point3d;\r\n /** Current velocity in meters per second. */\r\n public readonly velocity: Vector3d;\r\n /** Current age in seconds, incremented each frame. */\r\n public age = 0;\r\n /** Maximum age in seconds. When `this.age` exceeds `this.lifetime`, the particle expires. */\r\n public readonly lifetime: number;\r\n /** Particle size in meters. */\r\n public size: number;\r\n /** Particle transparency in [0..255]. */\r\n public transparency = 0;\r\n\r\n public get x() { return this.position.x; }\r\n public get y() { return this.position.y; }\r\n public get z() { return this.position.z; }\r\n\r\n public constructor(position: Point3d, velocity: Vector3d, lifetime: number, size: number) {\r\n this.position = position;\r\n this.velocity = velocity;\r\n this.lifetime = lifetime;\r\n this.size = size;\r\n }\r\n\r\n public get isExpired() { return this.age >= this.lifetime; }\r\n}\r\n\r\n/** Emits particles in a sphere with its center at the origin.\r\n * Each particle is emitted from the center of the sphere with random velocity toward the surface of the sphere.\r\n */\r\nclass ParticleEmitter {\r\n /** Range from which each particle's initial speed in meters per second will be selected. */\r\n public readonly speedRange = Range1d.createXX(1, 2);\r\n /** Range from which each particle's lifetime in seconds will be selected. */\r\n public readonly lifetimeRange = Range1d.createXX(5, 10);\r\n /** Range from which each particle's size in meters will be selected. */\r\n public readonly sizeRange = Range1d.createXX(0.2, 1.0);\r\n /** Range from which the number of particles emitted will be selected. */\r\n public numParticlesRange = Range1d.createXX(1600, 2200);\r\n\r\n /** Emit an explosion of particles from the center of the sphere. */\r\n public emit(): Particle[] {\r\n const particles = [];\r\n const numParticles = randomIntegerInRange(this.numParticlesRange);\r\n for (let i = 0; i < numParticles; i++) {\r\n const velocity = new Vector3d(randomFloat(-1.0, 1.0), randomFloat(-1.0, 1.0), randomFloat(-1.0, 1.0));\r\n velocity.normalizeInPlace();\r\n velocity.scaleInPlace(randomFloatInRange(this.speedRange));\r\n\r\n const lifetime = randomFloatInRange(this.lifetimeRange);\r\n const size = randomFloatInRange(this.sizeRange);\r\n particles.push(new Particle(new Point3d(0, 0, 0), velocity, lifetime, size));\r\n }\r\n\r\n return particles;\r\n }\r\n}\r\n\r\nclass ParticleSystem {\r\n private readonly _origin: Point3d;\r\n private readonly _pickableId: Id64String;\r\n private readonly _emitter = new ParticleEmitter();\r\n private _numEmissions: number;\r\n private readonly _texture: RenderTexture;\r\n private _lastUpdateTime: number;\r\n private _particles: Particle[] = [];\r\n private readonly _scratchVector3d = new Vector3d();\r\n private _dispose?: VoidFunction;\r\n /** Acceleration in Z applied to particles, in meters per second squared. */\r\n public gravity = -3;\r\n\r\n public static numEmissionsRange = Range1d.createXX(1, 5);\r\n\r\n public constructor(texture: RenderTexture, iModel: IModelConnection, numEmissions: number) {\r\n this._texture = texture;\r\n this._pickableId = iModel.transientIds.getNext();\r\n this._numEmissions = numEmissions;\r\n this._lastUpdateTime = Date.now();\r\n\r\n this._origin = randomPositionInRange(iModel.projectExtents);\r\n\r\n this._dispose = iModel.onClose.addListener(() => this.dispose());\r\n }\r\n\r\n public dispose(): void {\r\n if (this._dispose) {\r\n this._dispose();\r\n this._dispose = undefined;\r\n }\r\n\r\n IModelApp.viewManager.dropDecorator(this);\r\n this._texture.dispose();\r\n }\r\n\r\n public update(): void {\r\n const now = Date.now();\r\n let deltaMillis = now - this._lastUpdateTime;\r\n deltaMillis = Math.min(100, deltaMillis);\r\n this._lastUpdateTime = now;\r\n\r\n let numParticles = this._particles.length;\r\n if (numParticles === 0) {\r\n this._numEmissions--;\r\n if (this._numEmissions < 0)\r\n this.dispose();\r\n else\r\n this._particles = this._emitter.emit();\r\n\r\n return;\r\n }\r\n\r\n const elapsedSeconds = deltaMillis / 1000;\r\n for (let i = 0; i < numParticles; i++) {\r\n const particle = this._particles[i];\r\n this.updateParticle(particle, elapsedSeconds);\r\n if (particle.isExpired) {\r\n this._particles[i] = this._particles[numParticles - 1];\r\n --i;\r\n --numParticles;\r\n }\r\n }\r\n\r\n this._particles.length = numParticles;\r\n }\r\n\r\n private updateParticle(particle: Particle, elapsedSeconds: number): void {\r\n const velocity = particle.velocity.clone(this._scratchVector3d);\r\n velocity.scale(elapsedSeconds, velocity);\r\n velocity.z += elapsedSeconds * this.gravity;\r\n particle.position.addInPlace(velocity);\r\n particle.transparency = 255 * (particle.age / particle.lifetime);\r\n\r\n particle.age += elapsedSeconds;\r\n }\r\n\r\n public decorate(context: DecorateContext): void {\r\n if (!context.viewport.view.isSpatialView())\r\n return;\r\n\r\n this.update();\r\n\r\n const builder = ParticleCollectionBuilder.create({\r\n viewport: context.viewport,\r\n texture: this._texture,\r\n size: (this._emitter.sizeRange.high - this._emitter.sizeRange.low) / 2,\r\n transparency: 0,\r\n origin: this._origin,\r\n pickableId: this._pickableId,\r\n });\r\n\r\n for (const particle of this._particles)\r\n builder.addParticle(particle);\r\n\r\n const graphic = builder.finish();\r\n if (graphic) {\r\n context.addDecoration(GraphicType.WorldDecoration, graphic);\r\n context.viewport.onRender.addOnce((vp) => vp.invalidateDecorations());\r\n }\r\n }\r\n\r\n public testDecorationHit(id: Id64String): boolean {\r\n return id === this._pickableId;\r\n }\r\n\r\n public async getDecorationToolTip(_hit: HitDetail): Promise<HTMLElement | string> {\r\n return \"Explosion effect\";\r\n }\r\n\r\n public static async addDecorator(iModel: IModelConnection): Promise<void> {\r\n // Note: The decorator takes ownership of the texture, and disposes of it when the decorator is disposed.\r\n const image = await imageElementFromUrl(`${IModelApp.publicPath}sprites/particle_explosion.png`);\r\n const texture = IModelApp.renderSystem.createTexture({\r\n ownership: \"external\",\r\n image: { source: image, transparency: TextureTransparency.Mixed },\r\n });\r\n if (texture)\r\n IModelApp.viewManager.addDecorator(new ParticleSystem(texture, iModel, randomIntegerInRange(this.numEmissionsRange)));\r\n }\r\n}\r\n\r\n/** This tool applies an explosion particle effect used for testing [ParticleCollectionBuilder]($frontend).\r\n * @beta\r\n */\r\nexport class ExplosionEffect extends Tool {\r\n public static override toolId = \"ExplosionEffect\";\r\n\r\n /** This method runs the tool, applying an explosion particle effect. */\r\n public override async run(): Promise<boolean> {\r\n const vp = IModelApp.viewManager.selectedView;\r\n if (vp)\r\n await ParticleSystem.addDecorator(vp.iModel);\r\n\r\n return true;\r\n }\r\n}\r\n"]}
@@ -1,31 +1,31 @@
1
- /** @packageDocumentation
2
- * @module Effects
3
- */
4
- import { ScreenSpaceEffectBuilder, Tool } from "@itwin/core-frontend";
5
- import { AddEffectTool } from "./EffectTools";
6
- /** An extremely simple and mostly useless effect intended to demonstrate the basics of creating a screen-space effect.
7
- * It flips the Viewport's image on the x and/or y axis, and/or inverts the color of each pixel.
8
- * @beta
9
- */
10
- export declare class FlipImageEffect extends AddEffectTool {
11
- static toolId: string;
12
- protected get effectName(): string;
13
- protected get textureCoordFromPosition(): boolean;
14
- protected get source(): {
15
- vertex: string;
16
- fragment: string;
17
- sampleSourcePixel: string;
18
- };
19
- protected defineEffect(builder: ScreenSpaceEffectBuilder): void;
20
- }
21
- /** Configure the [[FlipImageEffect]].
22
- * @beta
23
- */
24
- export declare class FlipImageConfig extends Tool {
25
- static toolId: string;
26
- static get minArgs(): number;
27
- static get maxArgs(): number;
28
- run(horizontal?: boolean, vertical?: boolean, color?: boolean): Promise<boolean>;
29
- parseAndRun(...input: string[]): Promise<boolean>;
30
- }
1
+ /** @packageDocumentation
2
+ * @module Effects
3
+ */
4
+ import { ScreenSpaceEffectBuilder, Tool } from "@itwin/core-frontend";
5
+ import { AddEffectTool } from "./EffectTools";
6
+ /** An extremely simple and mostly useless effect intended to demonstrate the basics of creating a screen-space effect.
7
+ * It flips the Viewport's image on the x and/or y axis, and/or inverts the color of each pixel.
8
+ * @beta
9
+ */
10
+ export declare class FlipImageEffect extends AddEffectTool {
11
+ static toolId: string;
12
+ protected get effectName(): string;
13
+ protected get textureCoordFromPosition(): boolean;
14
+ protected get source(): {
15
+ vertex: string;
16
+ fragment: string;
17
+ sampleSourcePixel: string;
18
+ };
19
+ protected defineEffect(builder: ScreenSpaceEffectBuilder): void;
20
+ }
21
+ /** Configure the [[FlipImageEffect]].
22
+ * @beta
23
+ */
24
+ export declare class FlipImageConfig extends Tool {
25
+ static toolId: string;
26
+ static get minArgs(): number;
27
+ static get maxArgs(): number;
28
+ run(horizontal?: boolean, vertical?: boolean, color?: boolean): Promise<boolean>;
29
+ parseAndRun(...input: string[]): Promise<boolean>;
30
+ }
31
31
  //# sourceMappingURL=FlipImage.d.ts.map
@@ -1,100 +1,100 @@
1
- "use strict";
2
- /*---------------------------------------------------------------------------------------------
3
- * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
- * See LICENSE.md in the project root for license terms and full copyright notice.
5
- *--------------------------------------------------------------------------------------------*/
6
- /** @packageDocumentation
7
- * @module Effects
8
- */
9
- Object.defineProperty(exports, "__esModule", { value: true });
10
- exports.FlipImageConfig = exports.FlipImageEffect = void 0;
11
- const core_frontend_1 = require("@itwin/core-frontend");
12
- const parseArgs_1 = require("../tools/parseArgs");
13
- const EffectTools_1 = require("./EffectTools");
14
- let flipHorizontal = false;
15
- let flipVertical = false;
16
- let flipColor = false;
17
- /** An extremely simple and mostly useless effect intended to demonstrate the basics of creating a screen-space effect.
18
- * It flips the Viewport's image on the x and/or y axis, and/or inverts the color of each pixel.
19
- * @beta
20
- */
21
- class FlipImageEffect extends EffectTools_1.AddEffectTool {
22
- get effectName() { return "flip"; }
23
- get textureCoordFromPosition() { return true; }
24
- get source() {
25
- return {
26
- // Compute texture coordinate for use in fragment shader.
27
- vertex: `
28
- void effectMain(vec4 pos) {
29
- vec2 uv = textureCoordFromPosition(pos);
30
- if (u_flipHorizontal)
31
- uv.x = 1.0 - uv.x;
32
-
33
- if (u_flipVertical)
34
- uv.y = 1.0 - uv.y;
35
-
36
- v_uv = uv;
37
- }`,
38
- // Sample the original image to flip on x and/or y axis, then invert its color.
39
- fragment: `
40
- vec4 effectMain() {
41
- vec4 color = sampleSourcePixel();
42
- if (u_flipColor) {
43
- color.r = 1.0 - color.r;
44
- color.g = 1.0 - color.g;
45
- color.b = 1.0 - color.b;
46
- }
47
-
48
- return color;
49
- }`,
50
- // Because we're moving pixels around, we must tell the render system where the source pixel was originally located - otherwise
51
- // element locate will not work correctly.
52
- sampleSourcePixel: "return TEXTURE(u_diffuse, v_uv);",
53
- };
54
- }
55
- defineEffect(builder) {
56
- // Don't bother applying the effect if nothing is to be flipped.
57
- builder.shouldApply = (_context) => flipHorizontal || flipVertical || flipColor;
58
- // Define the varying for the texture coordinate.
59
- builder.addVarying("v_uv", core_frontend_1.VaryingType.Vec2);
60
- // Hook up the uniforms.
61
- builder.addUniform({
62
- name: "u_flipHorizontal",
63
- type: core_frontend_1.UniformType.Bool,
64
- bind: (uniform, _context) => uniform.setUniform1i(flipHorizontal ? 1 : 0),
65
- });
66
- builder.addUniform({
67
- name: "u_flipVertical",
68
- type: core_frontend_1.UniformType.Bool,
69
- bind: (uniform, _context) => uniform.setUniform1i(flipVertical ? 1 : 0),
70
- });
71
- builder.addUniform({
72
- name: "u_flipColor",
73
- type: core_frontend_1.UniformType.Bool,
74
- bind: (uniform, _context) => uniform.setUniform1i(flipColor ? 1 : 0),
75
- });
76
- }
77
- }
78
- exports.FlipImageEffect = FlipImageEffect;
79
- FlipImageEffect.toolId = "FlipImageEffect";
80
- /** Configure the [[FlipImageEffect]].
81
- * @beta
82
- */
83
- class FlipImageConfig extends core_frontend_1.Tool {
84
- static get minArgs() { return 0; }
85
- static get maxArgs() { return 3; }
86
- async run(horizontal, vertical, color) {
87
- flipHorizontal = !!horizontal;
88
- flipVertical = !!vertical;
89
- flipColor = !!color;
90
- (0, EffectTools_1.refreshViewportsForEffect)("fdt flip");
91
- return true;
92
- }
93
- async parseAndRun(...input) {
94
- const args = (0, parseArgs_1.parseArgs)(input);
95
- return this.run(args.getBoolean("h"), args.getBoolean("v"), args.getBoolean("c"));
96
- }
97
- }
98
- exports.FlipImageConfig = FlipImageConfig;
99
- FlipImageConfig.toolId = "FlipImageConfig";
1
+ "use strict";
2
+ /*---------------------------------------------------------------------------------------------
3
+ * Copyright (c) Bentley Systems, Incorporated. All rights reserved.
4
+ * See LICENSE.md in the project root for license terms and full copyright notice.
5
+ *--------------------------------------------------------------------------------------------*/
6
+ /** @packageDocumentation
7
+ * @module Effects
8
+ */
9
+ Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.FlipImageConfig = exports.FlipImageEffect = void 0;
11
+ const core_frontend_1 = require("@itwin/core-frontend");
12
+ const parseArgs_1 = require("../tools/parseArgs");
13
+ const EffectTools_1 = require("./EffectTools");
14
+ let flipHorizontal = false;
15
+ let flipVertical = false;
16
+ let flipColor = false;
17
+ /** An extremely simple and mostly useless effect intended to demonstrate the basics of creating a screen-space effect.
18
+ * It flips the Viewport's image on the x and/or y axis, and/or inverts the color of each pixel.
19
+ * @beta
20
+ */
21
+ class FlipImageEffect extends EffectTools_1.AddEffectTool {
22
+ get effectName() { return "flip"; }
23
+ get textureCoordFromPosition() { return true; }
24
+ get source() {
25
+ return {
26
+ // Compute texture coordinate for use in fragment shader.
27
+ vertex: `
28
+ void effectMain(vec4 pos) {
29
+ vec2 uv = textureCoordFromPosition(pos);
30
+ if (u_flipHorizontal)
31
+ uv.x = 1.0 - uv.x;
32
+
33
+ if (u_flipVertical)
34
+ uv.y = 1.0 - uv.y;
35
+
36
+ v_uv = uv;
37
+ }`,
38
+ // Sample the original image to flip on x and/or y axis, then invert its color.
39
+ fragment: `
40
+ vec4 effectMain() {
41
+ vec4 color = sampleSourcePixel();
42
+ if (u_flipColor) {
43
+ color.r = 1.0 - color.r;
44
+ color.g = 1.0 - color.g;
45
+ color.b = 1.0 - color.b;
46
+ }
47
+
48
+ return color;
49
+ }`,
50
+ // Because we're moving pixels around, we must tell the render system where the source pixel was originally located - otherwise
51
+ // element locate will not work correctly.
52
+ sampleSourcePixel: "return TEXTURE(u_diffuse, v_uv);",
53
+ };
54
+ }
55
+ defineEffect(builder) {
56
+ // Don't bother applying the effect if nothing is to be flipped.
57
+ builder.shouldApply = (_context) => flipHorizontal || flipVertical || flipColor;
58
+ // Define the varying for the texture coordinate.
59
+ builder.addVarying("v_uv", core_frontend_1.VaryingType.Vec2);
60
+ // Hook up the uniforms.
61
+ builder.addUniform({
62
+ name: "u_flipHorizontal",
63
+ type: core_frontend_1.UniformType.Bool,
64
+ bind: (uniform, _context) => uniform.setUniform1i(flipHorizontal ? 1 : 0),
65
+ });
66
+ builder.addUniform({
67
+ name: "u_flipVertical",
68
+ type: core_frontend_1.UniformType.Bool,
69
+ bind: (uniform, _context) => uniform.setUniform1i(flipVertical ? 1 : 0),
70
+ });
71
+ builder.addUniform({
72
+ name: "u_flipColor",
73
+ type: core_frontend_1.UniformType.Bool,
74
+ bind: (uniform, _context) => uniform.setUniform1i(flipColor ? 1 : 0),
75
+ });
76
+ }
77
+ }
78
+ exports.FlipImageEffect = FlipImageEffect;
79
+ FlipImageEffect.toolId = "FlipImageEffect";
80
+ /** Configure the [[FlipImageEffect]].
81
+ * @beta
82
+ */
83
+ class FlipImageConfig extends core_frontend_1.Tool {
84
+ static get minArgs() { return 0; }
85
+ static get maxArgs() { return 3; }
86
+ async run(horizontal, vertical, color) {
87
+ flipHorizontal = !!horizontal;
88
+ flipVertical = !!vertical;
89
+ flipColor = !!color;
90
+ (0, EffectTools_1.refreshViewportsForEffect)("fdt flip");
91
+ return true;
92
+ }
93
+ async parseAndRun(...input) {
94
+ const args = (0, parseArgs_1.parseArgs)(input);
95
+ return this.run(args.getBoolean("h"), args.getBoolean("v"), args.getBoolean("c"));
96
+ }
97
+ }
98
+ exports.FlipImageConfig = FlipImageConfig;
99
+ FlipImageConfig.toolId = "FlipImageConfig";
100
100
  //# sourceMappingURL=FlipImage.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"FlipImage.js","sourceRoot":"","sources":["../../../src/effects/FlipImage.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Effects\n */\n\nimport { ScreenSpaceEffectBuilder, Tool, UniformType, VaryingType } from \"@itwin/core-frontend\";\nimport { parseArgs } from \"../tools/parseArgs\";\nimport { AddEffectTool, refreshViewportsForEffect } from \"./EffectTools\";\n\nlet flipHorizontal = false;\nlet flipVertical = false;\nlet flipColor = false;\n\n/** An extremely simple and mostly useless effect intended to demonstrate the basics of creating a screen-space effect.\n * It flips the Viewport's image on the x and/or y axis, and/or inverts the color of each pixel.\n * @beta\n */\nexport class FlipImageEffect extends AddEffectTool {\n public static override toolId = \"FlipImageEffect\";\n\n protected get effectName() { return \"flip\"; }\n protected get textureCoordFromPosition() { return true; }\n\n protected get source() {\n return {\n // Compute texture coordinate for use in fragment shader.\n vertex: `\n void effectMain(vec4 pos) {\n vec2 uv = textureCoordFromPosition(pos);\n if (u_flipHorizontal)\n uv.x = 1.0 - uv.x;\n\n if (u_flipVertical)\n uv.y = 1.0 - uv.y;\n\n v_uv = uv;\n }`,\n // Sample the original image to flip on x and/or y axis, then invert its color.\n fragment: `\n vec4 effectMain() {\n vec4 color = sampleSourcePixel();\n if (u_flipColor) {\n color.r = 1.0 - color.r;\n color.g = 1.0 - color.g;\n color.b = 1.0 - color.b;\n }\n\n return color;\n }`,\n // Because we're moving pixels around, we must tell the render system where the source pixel was originally located - otherwise\n // element locate will not work correctly.\n sampleSourcePixel: \"return TEXTURE(u_diffuse, v_uv);\",\n };\n }\n\n protected defineEffect(builder: ScreenSpaceEffectBuilder): void {\n // Don't bother applying the effect if nothing is to be flipped.\n builder.shouldApply = (_context) => flipHorizontal || flipVertical || flipColor;\n\n // Define the varying for the texture coordinate.\n builder.addVarying(\"v_uv\", VaryingType.Vec2);\n\n // Hook up the uniforms.\n builder.addUniform({\n name: \"u_flipHorizontal\",\n type: UniformType.Bool,\n bind: (uniform, _context) => uniform.setUniform1i(flipHorizontal ? 1 : 0),\n });\n builder.addUniform({\n name: \"u_flipVertical\",\n type: UniformType.Bool,\n bind: (uniform, _context) => uniform.setUniform1i(flipVertical ? 1 : 0),\n });\n builder.addUniform({\n name: \"u_flipColor\",\n type: UniformType.Bool,\n bind: (uniform, _context) => uniform.setUniform1i(flipColor ? 1 : 0),\n });\n }\n}\n\n/** Configure the [[FlipImageEffect]].\n * @beta\n */\nexport class FlipImageConfig extends Tool {\n public static override toolId = \"FlipImageConfig\";\n public static override get minArgs() { return 0; }\n public static override get maxArgs() { return 3; }\n\n public override async run(horizontal?: boolean, vertical?: boolean, color?: boolean): Promise<boolean> {\n flipHorizontal = !!horizontal;\n flipVertical = !!vertical;\n flipColor = !!color;\n\n refreshViewportsForEffect(\"fdt flip\");\n return true;\n }\n\n public override async parseAndRun(...input: string[]): Promise<boolean> {\n const args = parseArgs(input);\n return this.run(args.getBoolean(\"h\"), args.getBoolean(\"v\"), args.getBoolean(\"c\"));\n }\n}\n"]}
1
+ {"version":3,"file":"FlipImage.js","sourceRoot":"","sources":["../../../src/effects/FlipImage.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Effects\r\n */\r\n\r\nimport { ScreenSpaceEffectBuilder, Tool, UniformType, VaryingType } from \"@itwin/core-frontend\";\r\nimport { parseArgs } from \"../tools/parseArgs\";\r\nimport { AddEffectTool, refreshViewportsForEffect } from \"./EffectTools\";\r\n\r\nlet flipHorizontal = false;\r\nlet flipVertical = false;\r\nlet flipColor = false;\r\n\r\n/** An extremely simple and mostly useless effect intended to demonstrate the basics of creating a screen-space effect.\r\n * It flips the Viewport's image on the x and/or y axis, and/or inverts the color of each pixel.\r\n * @beta\r\n */\r\nexport class FlipImageEffect extends AddEffectTool {\r\n public static override toolId = \"FlipImageEffect\";\r\n\r\n protected get effectName() { return \"flip\"; }\r\n protected get textureCoordFromPosition() { return true; }\r\n\r\n protected get source() {\r\n return {\r\n // Compute texture coordinate for use in fragment shader.\r\n vertex: `\r\n void effectMain(vec4 pos) {\r\n vec2 uv = textureCoordFromPosition(pos);\r\n if (u_flipHorizontal)\r\n uv.x = 1.0 - uv.x;\r\n\r\n if (u_flipVertical)\r\n uv.y = 1.0 - uv.y;\r\n\r\n v_uv = uv;\r\n }`,\r\n // Sample the original image to flip on x and/or y axis, then invert its color.\r\n fragment: `\r\n vec4 effectMain() {\r\n vec4 color = sampleSourcePixel();\r\n if (u_flipColor) {\r\n color.r = 1.0 - color.r;\r\n color.g = 1.0 - color.g;\r\n color.b = 1.0 - color.b;\r\n }\r\n\r\n return color;\r\n }`,\r\n // Because we're moving pixels around, we must tell the render system where the source pixel was originally located - otherwise\r\n // element locate will not work correctly.\r\n sampleSourcePixel: \"return TEXTURE(u_diffuse, v_uv);\",\r\n };\r\n }\r\n\r\n protected defineEffect(builder: ScreenSpaceEffectBuilder): void {\r\n // Don't bother applying the effect if nothing is to be flipped.\r\n builder.shouldApply = (_context) => flipHorizontal || flipVertical || flipColor;\r\n\r\n // Define the varying for the texture coordinate.\r\n builder.addVarying(\"v_uv\", VaryingType.Vec2);\r\n\r\n // Hook up the uniforms.\r\n builder.addUniform({\r\n name: \"u_flipHorizontal\",\r\n type: UniformType.Bool,\r\n bind: (uniform, _context) => uniform.setUniform1i(flipHorizontal ? 1 : 0),\r\n });\r\n builder.addUniform({\r\n name: \"u_flipVertical\",\r\n type: UniformType.Bool,\r\n bind: (uniform, _context) => uniform.setUniform1i(flipVertical ? 1 : 0),\r\n });\r\n builder.addUniform({\r\n name: \"u_flipColor\",\r\n type: UniformType.Bool,\r\n bind: (uniform, _context) => uniform.setUniform1i(flipColor ? 1 : 0),\r\n });\r\n }\r\n}\r\n\r\n/** Configure the [[FlipImageEffect]].\r\n * @beta\r\n */\r\nexport class FlipImageConfig extends Tool {\r\n public static override toolId = \"FlipImageConfig\";\r\n public static override get minArgs() { return 0; }\r\n public static override get maxArgs() { return 3; }\r\n\r\n public override async run(horizontal?: boolean, vertical?: boolean, color?: boolean): Promise<boolean> {\r\n flipHorizontal = !!horizontal;\r\n flipVertical = !!vertical;\r\n flipColor = !!color;\r\n\r\n refreshViewportsForEffect(\"fdt flip\");\r\n return true;\r\n }\r\n\r\n public override async parseAndRun(...input: string[]): Promise<boolean> {\r\n const args = parseArgs(input);\r\n return this.run(args.getBoolean(\"h\"), args.getBoolean(\"v\"), args.getBoolean(\"c\"));\r\n }\r\n}\r\n"]}
@@ -1,35 +1,35 @@
1
- /** @packageDocumentation
2
- * @module Effects
3
- */
4
- import { ScreenSpaceEffectBuilder, Tool } from "@itwin/core-frontend";
5
- import { AddEffectTool } from "./EffectTools";
6
- /** Adds a screen-space effect to the selected [[Viewport]] to simulate the lens distortion produced by real-world cameras with very wide fields of view.
7
- * Based on https://www.decarpentier.nl/lens-distortion
8
- * The effect is improved considerably by enabling anti-aliasing (e.g., via [RenderSystem.Options.antialiasSamples]($frontend) at startup, or using the `fdt aasamples` key-in`).
9
- * @note Because this effect applies a non-linear transform to each pixel, operations like snapping to geometry will not work properly. Element locate will work however - @see [ScreenSpaceEffectSource.sampleSourcePixel]($frontend).
10
- * @beta
11
- */
12
- export declare class LensDistortionEffect extends AddEffectTool {
13
- static toolId: string;
14
- protected get effectName(): string;
15
- protected get textureCoordFromPosition(): boolean;
16
- protected get source(): {
17
- vertex: string;
18
- fragment: string;
19
- sampleSourcePixel: string;
20
- };
21
- protected defineEffect(builder: ScreenSpaceEffectBuilder): void;
22
- }
23
- /** Configures the [[LensDistortionEffect]].
24
- * @beta
25
- */
26
- export declare class LensDistortionConfig extends Tool {
27
- static toolId: string;
28
- static get minArgs(): number;
29
- static get maxArgs(): number;
30
- static strength: number;
31
- static cylindricalRatio: number;
32
- run(strength?: number, ratio?: number): Promise<boolean>;
33
- parseAndRun(...input: string[]): Promise<boolean>;
34
- }
1
+ /** @packageDocumentation
2
+ * @module Effects
3
+ */
4
+ import { ScreenSpaceEffectBuilder, Tool } from "@itwin/core-frontend";
5
+ import { AddEffectTool } from "./EffectTools";
6
+ /** Adds a screen-space effect to the selected [[Viewport]] to simulate the lens distortion produced by real-world cameras with very wide fields of view.
7
+ * Based on https://www.decarpentier.nl/lens-distortion
8
+ * The effect is improved considerably by enabling anti-aliasing (e.g., via [RenderSystem.Options.antialiasSamples]($frontend) at startup, or using the `fdt aasamples` key-in`).
9
+ * @note Because this effect applies a non-linear transform to each pixel, operations like snapping to geometry will not work properly. Element locate will work however - @see [ScreenSpaceEffectSource.sampleSourcePixel]($frontend).
10
+ * @beta
11
+ */
12
+ export declare class LensDistortionEffect extends AddEffectTool {
13
+ static toolId: string;
14
+ protected get effectName(): string;
15
+ protected get textureCoordFromPosition(): boolean;
16
+ protected get source(): {
17
+ vertex: string;
18
+ fragment: string;
19
+ sampleSourcePixel: string;
20
+ };
21
+ protected defineEffect(builder: ScreenSpaceEffectBuilder): void;
22
+ }
23
+ /** Configures the [[LensDistortionEffect]].
24
+ * @beta
25
+ */
26
+ export declare class LensDistortionConfig extends Tool {
27
+ static toolId: string;
28
+ static get minArgs(): number;
29
+ static get maxArgs(): number;
30
+ static strength: number;
31
+ static cylindricalRatio: number;
32
+ run(strength?: number, ratio?: number): Promise<boolean>;
33
+ parseAndRun(...input: string[]): Promise<boolean>;
34
+ }
35
35
  //# sourceMappingURL=LensDistortion.d.ts.map