@sapui5/sap.ui.vk 1.120.12 → 1.120.13

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 (164) hide show
  1. package/package.json +1 -1
  2. package/src/sap/ui/vk/.library +1 -1
  3. package/src/sap/ui/vk/AnimationPlayback.js +1 -1
  4. package/src/sap/ui/vk/AnimationPlayer.js +1 -1
  5. package/src/sap/ui/vk/AnimationSequence.js +1 -1
  6. package/src/sap/ui/vk/AnimationTimeSlider.js +1 -1
  7. package/src/sap/ui/vk/AnimationTrack.js +1 -1
  8. package/src/sap/ui/vk/Annotation.js +1 -1
  9. package/src/sap/ui/vk/BaseNodeProxy.js +1 -1
  10. package/src/sap/ui/vk/Camera.js +1 -1
  11. package/src/sap/ui/vk/ContentConnector.js +1 -1
  12. package/src/sap/ui/vk/ContentManager.js +1 -1
  13. package/src/sap/ui/vk/ContentResource.js +1 -1
  14. package/src/sap/ui/vk/Core.js +1 -1
  15. package/src/sap/ui/vk/DownloadManager.js +1 -1
  16. package/src/sap/ui/vk/DrawerToolbar.js +1 -1
  17. package/src/sap/ui/vk/DvlException.js +1 -1
  18. package/src/sap/ui/vk/FlexibleControl.js +1 -1
  19. package/src/sap/ui/vk/FlexibleControlLayoutData.js +1 -1
  20. package/src/sap/ui/vk/Highlight.js +1 -1
  21. package/src/sap/ui/vk/ImageContentManager.js +1 -1
  22. package/src/sap/ui/vk/JointUtils.js +1 -1
  23. package/src/sap/ui/vk/LayerProxy.js +1 -1
  24. package/src/sap/ui/vk/Loco.js +1 -1
  25. package/src/sap/ui/vk/Material.js +1 -1
  26. package/src/sap/ui/vk/NativeViewport.js +1 -1
  27. package/src/sap/ui/vk/NodeHierarchy.js +1 -1
  28. package/src/sap/ui/vk/NodeProxy.js +1 -1
  29. package/src/sap/ui/vk/NodeUtils.js +1 -1
  30. package/src/sap/ui/vk/Notifications.js +1 -1
  31. package/src/sap/ui/vk/OrthographicCamera.js +1 -1
  32. package/src/sap/ui/vk/PerspectiveCamera.js +1 -1
  33. package/src/sap/ui/vk/ProgressIndicator.js +1 -1
  34. package/src/sap/ui/vk/RedlineCollaboration.js +1 -1
  35. package/src/sap/ui/vk/RedlineConversation.js +1 -1
  36. package/src/sap/ui/vk/RedlineDesign.js +1 -1
  37. package/src/sap/ui/vk/RedlineElement.js +1 -1
  38. package/src/sap/ui/vk/RedlineElementComment.js +1 -1
  39. package/src/sap/ui/vk/RedlineElementEllipse.js +1 -1
  40. package/src/sap/ui/vk/RedlineElementFreehand.js +1 -1
  41. package/src/sap/ui/vk/RedlineElementLine.js +1 -1
  42. package/src/sap/ui/vk/RedlineElementRectangle.js +1 -1
  43. package/src/sap/ui/vk/RedlineElementText.js +1 -1
  44. package/src/sap/ui/vk/RedlineSurface.js +1 -1
  45. package/src/sap/ui/vk/SafeArea.js +1 -1
  46. package/src/sap/ui/vk/Scene.js +1 -1
  47. package/src/sap/ui/vk/SceneTree.js +1 -1
  48. package/src/sap/ui/vk/StepNavigation.js +1 -1
  49. package/src/sap/ui/vk/Texture.js +1 -1
  50. package/src/sap/ui/vk/ToggleMenuButton.js +1 -1
  51. package/src/sap/ui/vk/ToggleMenuItem.js +1 -1
  52. package/src/sap/ui/vk/Toolbar.js +1 -1
  53. package/src/sap/ui/vk/View.js +1 -1
  54. package/src/sap/ui/vk/ViewGallery.js +1 -1
  55. package/src/sap/ui/vk/ViewGalleryThumbnail.js +1 -1
  56. package/src/sap/ui/vk/ViewGroup.js +1 -1
  57. package/src/sap/ui/vk/ViewManager.js +1 -1
  58. package/src/sap/ui/vk/ViewStateManager.js +1 -1
  59. package/src/sap/ui/vk/ViewStateManagerBase.js +1 -1
  60. package/src/sap/ui/vk/Viewer.js +1 -1
  61. package/src/sap/ui/vk/Viewport.js +28 -1
  62. package/src/sap/ui/vk/ViewportBase.js +16 -1
  63. package/src/sap/ui/vk/dvl/BaseNodeProxy.js +1 -1
  64. package/src/sap/ui/vk/dvl/ContentManager.js +1 -1
  65. package/src/sap/ui/vk/dvl/GraphicsCore.js +1 -1
  66. package/src/sap/ui/vk/dvl/LayerProxy.js +1 -1
  67. package/src/sap/ui/vk/dvl/NodeHierarchy.js +1 -1
  68. package/src/sap/ui/vk/dvl/NodeProxy.js +1 -1
  69. package/src/sap/ui/vk/dvl/Scene.js +1 -1
  70. package/src/sap/ui/vk/dvl/ViewStateManager.js +1 -1
  71. package/src/sap/ui/vk/dvl/Viewport.js +1 -1
  72. package/src/sap/ui/vk/i18n/messagebundle_es.properties +1 -1
  73. package/src/sap/ui/vk/i18n/messagebundle_iw.properties +1 -1
  74. package/src/sap/ui/vk/library.js +2 -2
  75. package/src/sap/ui/vk/matai/MataiLoaderWorker.js +29 -7
  76. package/src/sap/ui/vk/measurements/Angle.js +1 -1
  77. package/src/sap/ui/vk/measurements/Area.js +1 -1
  78. package/src/sap/ui/vk/measurements/Distance.js +1 -1
  79. package/src/sap/ui/vk/measurements/Edge.js +1 -1
  80. package/src/sap/ui/vk/measurements/Face.js +1 -1
  81. package/src/sap/ui/vk/measurements/Feature.js +1 -1
  82. package/src/sap/ui/vk/measurements/Vertex.js +1 -1
  83. package/src/sap/ui/vk/svg/BaseNodeProxy.js +1 -1
  84. package/src/sap/ui/vk/svg/ContentDeliveryService.js +1 -1
  85. package/src/sap/ui/vk/svg/ContentManager.js +1 -1
  86. package/src/sap/ui/vk/svg/Element.js +133 -24
  87. package/src/sap/ui/vk/svg/Ellipse.js +4 -0
  88. package/src/sap/ui/vk/svg/NodeHierarchy.js +49 -1
  89. package/src/sap/ui/vk/svg/NodeProxy.js +1 -1
  90. package/src/sap/ui/vk/svg/OrthographicCamera.js +1 -1
  91. package/src/sap/ui/vk/svg/Scene.js +1 -1
  92. package/src/sap/ui/vk/svg/SceneBuilder.js +48 -5
  93. package/src/sap/ui/vk/svg/Text.js +82 -30
  94. package/src/sap/ui/vk/svg/ViewStateManager.js +1 -1
  95. package/src/sap/ui/vk/svg/Viewport.js +138 -20
  96. package/src/sap/ui/vk/svg/ViewportRenderer.js +90 -5
  97. package/src/sap/ui/vk/threejs/AnimationHelper.js +1 -1
  98. package/src/sap/ui/vk/threejs/BaseNodeProxy.js +1 -1
  99. package/src/sap/ui/vk/threejs/Billboard.js +2 -2
  100. package/src/sap/ui/vk/threejs/Callout.js +1 -1
  101. package/src/sap/ui/vk/threejs/ContentDeliveryService.js +1 -1
  102. package/src/sap/ui/vk/threejs/ContentManager.js +1 -1
  103. package/src/sap/ui/vk/threejs/DetailView.js +1 -1
  104. package/src/sap/ui/vk/threejs/HighlightPlayer.js +2 -2
  105. package/src/sap/ui/vk/threejs/Material.js +1 -1
  106. package/src/sap/ui/vk/threejs/NodeHierarchy.js +1 -1
  107. package/src/sap/ui/vk/threejs/NodeProxy.js +1 -1
  108. package/src/sap/ui/vk/threejs/NodesTransitionHelper.js +1 -1
  109. package/src/sap/ui/vk/threejs/OrthographicCamera.js +1 -1
  110. package/src/sap/ui/vk/threejs/PerspectiveCamera.js +1 -1
  111. package/src/sap/ui/vk/threejs/PointCloudGroup.js +1 -1
  112. package/src/sap/ui/vk/threejs/Scene.js +1 -1
  113. package/src/sap/ui/vk/threejs/SceneBuilder.js +2 -2
  114. package/src/sap/ui/vk/threejs/Texture.js +1 -1
  115. package/src/sap/ui/vk/threejs/Thrustline.js +1 -1
  116. package/src/sap/ui/vk/threejs/ViewStateManager.js +1 -1
  117. package/src/sap/ui/vk/threejs/Viewport.js +1 -1
  118. package/src/sap/ui/vk/threejs/v2/ViewStateManager.js +1 -1
  119. package/src/sap/ui/vk/tools/AnchorPointTool.js +1 -1
  120. package/src/sap/ui/vk/tools/AnchorPointToolGizmo.js +1 -1
  121. package/src/sap/ui/vk/tools/AxisAngleRotationTool.js +1 -1
  122. package/src/sap/ui/vk/tools/AxisAngleRotationToolGizmo.js +1 -1
  123. package/src/sap/ui/vk/tools/CreateEllipseTool.js +1 -1
  124. package/src/sap/ui/vk/tools/CreateEllipseToolGizmo.js +1 -1
  125. package/src/sap/ui/vk/tools/CreateParametricGizmo.js +1 -1
  126. package/src/sap/ui/vk/tools/CreatePathTool.js +1 -1
  127. package/src/sap/ui/vk/tools/CreatePathToolGizmo.js +1 -1
  128. package/src/sap/ui/vk/tools/CreateRectangleTool.js +1 -1
  129. package/src/sap/ui/vk/tools/CreateRectangleToolGizmo.js +1 -1
  130. package/src/sap/ui/vk/tools/CreateTextTool.js +1 -1
  131. package/src/sap/ui/vk/tools/CreateTextToolGizmo.js +1 -1
  132. package/src/sap/ui/vk/tools/CrossSectionTool.js +1 -1
  133. package/src/sap/ui/vk/tools/CrossSectionToolGizmo.js +1 -1
  134. package/src/sap/ui/vk/tools/DuplicateSvgElementTool.js +1 -1
  135. package/src/sap/ui/vk/tools/DuplicateSvgElementToolGizmo.js +1 -1
  136. package/src/sap/ui/vk/tools/ExplodeTool.js +1 -1
  137. package/src/sap/ui/vk/tools/ExplodeToolGizmo.js +1 -1
  138. package/src/sap/ui/vk/tools/Gizmo.js +1 -1
  139. package/src/sap/ui/vk/tools/HitTestTool.js +1 -1
  140. package/src/sap/ui/vk/tools/MoveTool.js +1 -1
  141. package/src/sap/ui/vk/tools/MoveToolGizmo.js +1 -1
  142. package/src/sap/ui/vk/tools/PointCloudSelectionTool.js +1 -1
  143. package/src/sap/ui/vk/tools/PointCloudSelectionToolGizmo.js +1 -1
  144. package/src/sap/ui/vk/tools/RectSelectTool.js +1 -1
  145. package/src/sap/ui/vk/tools/RedlineTool.js +1 -1
  146. package/src/sap/ui/vk/tools/RedlineToolGizmo.js +1 -1
  147. package/src/sap/ui/vk/tools/RotateOrbitTool.js +1 -1
  148. package/src/sap/ui/vk/tools/RotateTool.js +1 -1
  149. package/src/sap/ui/vk/tools/RotateToolGizmo.js +1 -1
  150. package/src/sap/ui/vk/tools/RotateTurntableTool.js +1 -1
  151. package/src/sap/ui/vk/tools/ScaleTool.js +1 -1
  152. package/src/sap/ui/vk/tools/ScaleToolGizmo.js +1 -1
  153. package/src/sap/ui/vk/tools/SceneOrientationTool.js +1 -1
  154. package/src/sap/ui/vk/tools/SceneOrientationToolGizmo.js +1 -1
  155. package/src/sap/ui/vk/tools/Tool.js +1 -1
  156. package/src/sap/ui/vk/tools/TooltipTool.js +1 -1
  157. package/src/sap/ui/vk/tools/TooltipToolGizmo.js +1 -1
  158. package/src/sap/ui/vk/tools/TransformSvgElementTool.js +1 -1
  159. package/src/sap/ui/vk/tools/TransformSvgElementToolGizmo.js +3 -3
  160. package/src/sap/ui/vk/tools/TransformSvgElementToolHandler.js +1 -1
  161. package/src/sap/ui/vk/ve/dvl.js +7 -7
  162. package/src/sap/ui/vk/ve/dvl.wasm +0 -0
  163. package/src/sap/ui/vk/ve/matai.js +2 -2
  164. package/src/sap/ui/vk/ve/matai.wasm +0 -0
@@ -39,7 +39,7 @@ sap.ui.define([
39
39
  * @param {object} [mSettings] Initial settings for the new Viewport control.
40
40
  * @public
41
41
  * @author SAP SE
42
- * @version 1.120.12
42
+ * @version 1.120.13
43
43
  * @extends sap.ui.vk.ViewportBase
44
44
  * @alias sap.ui.vk.Viewport
45
45
  * @since 1.50.0
@@ -290,6 +290,33 @@ sap.ui.define([
290
290
  return basePrototype.getHotspotColor.call(this);
291
291
  };
292
292
 
293
+ Viewport.prototype.setHotspotCustomTextOutlineWidth = function(value) {
294
+ this._implementation?.setHotspotCustomTextOutlineWidth(value);
295
+ return this;
296
+ };
297
+
298
+ Viewport.prototype.getHotspotCustomTextOutlineWidth = function() {
299
+ return this._implementation?.getHotspotCustomTextOutlineWidth() ?? basePrototype.getHotspotCustomTextOutlineWidth.call(this);
300
+ };
301
+
302
+ Viewport.prototype.setHotspotCustomTextOutlineColor = function(value) {
303
+ this._implementation?.setHotspotCustomTextOutlineColor(value);
304
+ return this;
305
+ };
306
+
307
+ Viewport.prototype.getHotspotCustomTextOutlineColor = function() {
308
+ return this._implementation?.getHotspotCustomTextOutlineColor() ?? basePrototype.getHotspotCustomTextOutlineColor.call(this);
309
+ };
310
+
311
+ Viewport.prototype.setHotspotCustomTextHaloWidth = function(value) {
312
+ this._implementation?.setHotspotCustomTextHaloWidth(value);
313
+ return this;
314
+ };
315
+
316
+ Viewport.prototype.getHotspotCustomTextHaloWidth = function() {
317
+ return this._implementation?.getHotspotCustomTextHaloWidth() ?? basePrototype.getHotspotCustomTextHaloWidth.call(this);
318
+ };
319
+
293
320
  Viewport.prototype.setKeepOutputSize = function(value) {
294
321
  if (this._implementation && this._implementation.setKeepOutputSize) {
295
322
  this._implementation.setKeepOutputSize(value);
@@ -42,7 +42,7 @@ sap.ui.define([
42
42
  * @public
43
43
  * @abstract
44
44
  * @author SAP SE
45
- * @version 1.120.12
45
+ * @version 1.120.13
46
46
  * @extends sap.ui.core.Control
47
47
  * @alias sap.ui.vk.ViewportBase
48
48
  * @since 1.50.0
@@ -174,6 +174,21 @@ sap.ui.define([
174
174
  defaultValue: "rgba(89, 0, 0, 0.73)"
175
175
  },
176
176
 
177
+ hotspotCustomTextOutlineWidth: {
178
+ type: "float",
179
+ defaultValue: 1
180
+ },
181
+
182
+ hotspotCustomTextOutlineColor: {
183
+ type: "sap.ui.core.CSSColor",
184
+ defaultValue: "white"
185
+ },
186
+
187
+ hotspotCustomTextHaloWidth: {
188
+ type: "float",
189
+ defaultValue: 10
190
+ },
191
+
177
192
  /*
178
193
  * Enables or disables output size
179
194
  */
@@ -37,7 +37,7 @@ sap.ui.define([
37
37
  *
38
38
  * @public
39
39
  * @author SAP SE
40
- * @version 1.120.12
40
+ * @version 1.120.13
41
41
  * @extends sap.ui.vk.BaseNodeProxy
42
42
  * @implements sap.ui.base.Poolable
43
43
  * @deprecated Since version 1.72.0.
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  * @param {object} [mSettings] Initial settings for the new ContentManager object.
26
26
  * @public
27
27
  * @author SAP SE
28
- * @version 1.120.12
28
+ * @version 1.120.13
29
29
  * @extends sap.ui.vk.ContentManager
30
30
  * @alias sap.ui.vk.dvl.ContentManager
31
31
  * @deprecated Since version 1.72.0.
@@ -279,7 +279,7 @@ sap.ui.define([
279
279
  * @param {object} webGLContextAttributes The WebGL context attributes. See {@link https://www.khronos.org/registry/webgl/specs/latest/1.0/#5.2 WebGL context attributes}.
280
280
  * @public
281
281
  * @author SAP SE
282
- * @version 1.120.12
282
+ * @version 1.120.13
283
283
  * @extends sap.ui.base.EventProvider
284
284
  * @alias sap.ui.vk.dvl.GraphicsCore
285
285
  * @deprecated Since version 1.72.0.
@@ -31,7 +31,7 @@ sap.ui.define([
31
31
  *
32
32
  * @public
33
33
  * @author SAP SE
34
- * @version 1.120.12
34
+ * @version 1.120.13
35
35
  * @extends sap.ui.vk.LayerProxy
36
36
  * @deprecated Since version 1.72.0.
37
37
  * @alias sap.ui.vk.dvl.LayerProxy
@@ -71,7 +71,7 @@ sap.ui.define([
71
71
  *
72
72
  * @public
73
73
  * @author SAP SE
74
- * @version 1.120.12
74
+ * @version 1.120.13
75
75
  * @extends sap.ui.vk.NodeHierarchy
76
76
  * @alias sap.ui.vk.dvl.NodeHierarchy
77
77
  * @deprecated Since version 1.72.0.
@@ -36,7 +36,7 @@ sap.ui.define([
36
36
  *
37
37
  * @public
38
38
  * @author SAP SE
39
- * @version 1.120.12
39
+ * @version 1.120.13
40
40
  * @extends sap.ui.vk.NodeProxy
41
41
  * @alias sap.ui.vk.dvl.NodeProxy
42
42
  * @deprecated Since version 1.72.0.
@@ -30,7 +30,7 @@ sap.ui.define([
30
30
  *
31
31
  * @public
32
32
  * @author SAP SE
33
- * @version 1.120.12
33
+ * @version 1.120.13
34
34
  * @extends sap.ui.vk.Scene
35
35
  * @alias sap.ui.vk.dvl.Scene
36
36
  * @deprecated Since version 1.72.0.
@@ -41,7 +41,7 @@ sap.ui.define([
41
41
  * @param {object} [mSettings] Initial settings for the new ViewStateManager object.
42
42
  * @public
43
43
  * @author SAP SE
44
- * @version 1.120.12
44
+ * @version 1.120.13
45
45
  * @extends sap.ui.vk.ViewStateManagerBase
46
46
  * @alias sap.ui.vk.dvl.ViewStateManager
47
47
  * @deprecated Since version 1.72.0.
@@ -115,7 +115,7 @@ sap.ui.define([
115
115
  * @param {object} [mSettings] Initial settings for the new Viewport control.
116
116
  * @public
117
117
  * @author SAP SE
118
- * @version 1.120.12
118
+ * @version 1.120.13
119
119
  * @extends sap.ui.vk.ViewportBase
120
120
  * @alias sap.ui.vk.dvl.Viewport
121
121
  * @deprecated Since version 1.72.0.
@@ -269,7 +269,7 @@ IMAGECONTENTMANAGER_CANNOT_LOAD_IMAGE_HIERARCHY=No se puede cargar una jerarqu\u
269
269
  IMAGECONTENTMANAGER_UNSUPPORTED_IMAGE_TYPE=Tipo de imagen no admitido.
270
270
  IMAGECONTENTMANAGER_IMAGE_LOAD_FAILED=No se ha podido cargar la imagen.
271
271
 
272
- LOADER_FILENOTFOUND=No se puede encontrar el archivo o el usuario no tiene permiso para cargarlo.
272
+ LOADER_FILENOTFOUND=No se ha encontrado el archivo o el usuario no tiene permiso para cargarlo.
273
273
  LOADER_WRONGFILEFORMAT=No se ha podido cargar el recurso de contenido. Es posible que la versi\u00F3n de modelo est\u00E9 obsoleta y que ya no se admita o que un fichero binario sea err\u00F3neo.
274
274
  LOADER_WRONGPASSWORD=El archivo est\u00E1 protegido por contrase\u00F1a pero no se ha proporcionado la contrase\u00F1a.
275
275
  LOADER_ERRORREADINGFILE=Error al leer archivo. El contenido del archivo puede estar da\u00F1ado.
@@ -230,7 +230,7 @@ SCENE_CONTEXT_FINISHED_TEXTURES=\u05DE\u05E8\u05E7\u05DE\u05D9\u05DD \u05D4\u05D
230
230
  SCENE_CONTEXT_LOADING_TEXTURES=\u05D8\u05D5\u05E2\u05DF \u05DE\u05E8\u05E7\u05DE\u05D9\u05DD
231
231
  SCENE_CONTEXT_LOADING_MODEL_VIEWS=\u05D8\u05D5\u05E2\u05DF \u05EA\u05E6\u05D5\u05D2\u05D5\u05EA \u05DE\u05D5\u05D3\u05DC\u05D9\u05DD
232
232
 
233
- OVERLAY_MSG_EVENTHANDLERFAILED_SUMMARY=\u05DE\u05D8\u05E2\u05E4\u05DC \u05D1\u05D0\u05D9\u05E8\u05D5\u05E2 \u05E0\u05DB\u05E9\u05DC.
233
+ OVERLAY_MSG_EVENTHANDLERFAILED_SUMMARY=\u05DE\u05D8\u05E4\u05DC \u05D1\u05D0\u05D9\u05E8\u05D5\u05E2 \u05E0\u05DB\u05E9\u05DC.
234
234
  OVERLAY_MSG_EVENTHANDLERFAILED_UNSUPPORTEDEVENTTYPE_CAUSE=\u05E1\u05D5\u05D2 \u05D0\u05D9\u05E8\u05D5\u05E2 \u05E9\u05D0\u05D9\u05E0\u05D5 \u05E0\u05EA\u05DE\u05DA \u05D1\u05E9\u05D9\u05DE\u05D5\u05E9.
235
235
  OVERLAY_MSG_EVENTHANDLERFAILED_UNSUPPORTEDEVENTTYPE_CHECKEVENTTYPE_RESOLUTION=\u05D5\u05D3\u05D0 \u05E9\u05E1\u05D5\u05D2 \u05D0\u05D9\u05E8\u05D5\u05E2 \u05E0\u05EA\u05DE\u05DA \u05E0\u05DE\u05E6\u05D0 \u05D1\u05E9\u05D9\u05DE\u05D5\u05E9.
236
236
 
@@ -63,7 +63,7 @@ sap.ui.define([
63
63
  * @namespace
64
64
  * @name sap.ui.vk
65
65
  * @author SAP SE
66
- * @version 1.120.12
66
+ * @version 1.120.13
67
67
  * @public
68
68
  */
69
69
 
@@ -149,7 +149,7 @@ sap.ui.define([
149
149
  "sap.ui.vk.tools.PoiManipulationTool"
150
150
  ],
151
151
  noLibraryCSS: false,
152
- version: "1.120.12",
152
+ version: "1.120.13",
153
153
  designtime: "sap/ui/vk/designtime/library.designtime"
154
154
  });
155
155
 
@@ -94,6 +94,34 @@
94
94
  return result;
95
95
  }
96
96
 
97
+ const CONTENT_TYPES = [
98
+ undefined, // 0
99
+ "GEOMETRY", // 1
100
+ "PMI", // 2
101
+ "DRAWING", // 3
102
+ "SOLID", // 4
103
+ "ANNOTATION", // 5
104
+ "THRUSTLINE", // 6
105
+ "ANIMATION", // 7
106
+ "VIEWPORT_GROUP", // 8
107
+ "LIST", // 9
108
+ "LIST_ITEM", // 10
109
+ "DETAIL_VIEWS", // 11
110
+ "MEASUREMENT", // 12
111
+ "CAMERA", // 13
112
+ "LAYER", // 14
113
+ "MODEL_VIEW", // 15
114
+ "SECTION_PLANE", // 16
115
+ "PARAMETRIC", // 17
116
+ "HOTSPOT", // 18
117
+ "PLAYBACK", // 19
118
+ "REFERENCE", // 20
119
+ "BACKGROUND", // 21
120
+ "SYMBOL", // 22
121
+ "POINT_CLOUD_GROUP", // 23
122
+ "SVG" // 24
123
+ ];
124
+
97
125
  SceneBuilderProxy.prototype.createNode = function(info) {
98
126
  const transferable = [info.transform.buffer];
99
127
  if (info.objectTransform) {
@@ -108,13 +136,7 @@
108
136
  }
109
137
  info.sid = info.nodeRef;
110
138
 
111
- if (info.contentType === 2) {
112
- info.contentType = "PMI";
113
- } else if (info.contentType === 18) {
114
- info.contentType = "Hotspot";
115
- } else {
116
- info.contentType = undefined;
117
- }
139
+ info.contentType = CONTENT_TYPES[info.contentType];
118
140
 
119
141
  if (info.veids) {
120
142
  info.veids = parseVEIDs(info.veids);
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  * @param {object} [settings] A JSON-like object.
26
26
  * @private
27
27
  * @author SAP SE
28
- * @version 1.120.12
28
+ * @version 1.120.13
29
29
  * @alias sap.ui.vk.measurement.Angle
30
30
  * @since 1.101.0
31
31
  */
@@ -25,7 +25,7 @@ sap.ui.define([
25
25
  * @param {object} [settings] A JSON-like object.
26
26
  * @private
27
27
  * @author SAP SE
28
- * @version 1.120.12
28
+ * @version 1.120.13
29
29
  * @alias sap.ui.vk.measurement.Area
30
30
  * @since 1.101.0
31
31
  */
@@ -23,7 +23,7 @@ sap.ui.define([
23
23
  * @param {object} [settings] A JSON-like object.
24
24
  * @private
25
25
  * @author SAP SE
26
- * @version 1.120.12
26
+ * @version 1.120.13
27
27
  * @alias sap.ui.vk.measurement.Distance
28
28
  * @since 1.101.0
29
29
  */
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @param {float[]} [settings.edge] World coordinates of the edge ends in form <code>[x1, y1, z1, x2, y2, z2]</code>.
29
29
  * @private
30
30
  * @author SAP SE
31
- * @version 1.120.12
31
+ * @version 1.120.13
32
32
  * @alias sap.ui.vk.measurement.Edge
33
33
  * @since 1.101.0
34
34
  */
@@ -44,7 +44,7 @@ sap.ui.define([
44
44
  * where <code>e</code> is the number of edges in the list.
45
45
  * @private
46
46
  * @author SAP SE
47
- * @version 1.120.12
47
+ * @version 1.120.13
48
48
  * @alias sap.ui.vk.measurement.Face
49
49
  * @since 1.101.0
50
50
  */
@@ -27,7 +27,7 @@ sap.ui.define([
27
27
  * @abstract
28
28
  * @private
29
29
  * @author SAP SE
30
- * @version 1.120.12
30
+ * @version 1.120.13
31
31
  * @alias sap.ui.vk.measurement.Feature
32
32
  * @since 1.101.0
33
33
  */
@@ -28,7 +28,7 @@ sap.ui.define([
28
28
  * @param {float[]} [settings.vertex] World coordinates of the vertex in form <code>[x, y, z]</code>.
29
29
  * @private
30
30
  * @author SAP SE
31
- * @version 1.120.12
31
+ * @version 1.120.13
32
32
  * @alias sap.ui.vk.measurement.Vertex
33
33
  * @since 1.101.0
34
34
  */
@@ -35,7 +35,7 @@ sap.ui.define([
35
35
  *
36
36
  * @public
37
37
  * @author SAP SE
38
- * @version 1.120.12
38
+ * @version 1.120.13
39
39
  * @extends sap.ui.vk.BaseNodeProxy
40
40
  * @implements sap.ui.base.Poolable
41
41
  * @alias sap.ui.vk.svg.BaseNodeProxy
@@ -29,7 +29,7 @@ sap.ui.define([
29
29
  * @class Provides a class to communicate with content delivery service.
30
30
  * @private
31
31
  * @author SAP SE
32
- * @version 1.120.12
32
+ * @version 1.120.13
33
33
  * @extends sap.ui.base.ManagedObject
34
34
  * @alias sap.ui.vk.svg.ContentDeliveryService
35
35
  */
@@ -45,7 +45,7 @@ sap.ui.define([
45
45
  * @param {object} [mSettings] Initial settings for the new ContentManager object.
46
46
  * @protected
47
47
  * @author SAP SE
48
- * @version 1.120.12
48
+ * @version 1.120.13
49
49
  * @extends sap.ui.vk.ContentManager
50
50
  * @alias sap.ui.vk.svg.ContentManager
51
51
  * @since 1.80.0
@@ -11,12 +11,14 @@ sap.ui.define([
11
11
  "../cssColorToColor",
12
12
  "../NodeContentType",
13
13
  "sap/base/assert",
14
+ "sap/base/Log",
14
15
  "sap/base/util/uid"
15
16
  ], function(
16
17
  abgrToColor,
17
18
  cssColorToColor,
18
19
  NodeContentType,
19
20
  assert,
21
+ Log,
20
22
  uid
21
23
  ) {
22
24
  "use strict";
@@ -136,6 +138,11 @@ sap.ui.define([
136
138
  this.stroke = convertColor(material.lineColor, 1);
137
139
  this.strokeWidth = material.lineWidth !== undefined ? material.lineWidth : 1;
138
140
  this.strokeDashArray = (material.lineStyle && material.lineStyle.dashPattern) || [];
141
+ this.coordinateSpace = material.lineStyle?.widthCoordinateSpace ?? unknownCoordinateSpace;
142
+ if (material.lineStyle?.endCapStyle) {
143
+ this.linecap = "round";
144
+ this.linejoin = "round";
145
+ }
139
146
  }
140
147
  }
141
148
 
@@ -274,6 +281,19 @@ sap.ui.define([
274
281
 
275
282
  node.userData.skipIt = true;
276
283
 
284
+ if (hotspotNode && node._isGeometryNode()) {
285
+ Object.defineProperty(node, "filter", {
286
+ get: function() {
287
+ return hotspotNode.getHotspotEffectDef().name;
288
+ },
289
+ configurable: true
290
+ });
291
+ }
292
+
293
+ if (node.hasOwnProperty("opacity")) {
294
+ delete node.opacity;
295
+ }
296
+
277
297
  if (node._isGeometryNode()) {
278
298
  node.fill = node.stroke = new Float32Array([1, 1, 1, 1]);
279
299
  node._updateColor();
@@ -289,6 +309,13 @@ sap.ui.define([
289
309
  return; // ignore this hotspot node because it has a hotspot ancestor
290
310
  }
291
311
 
312
+ Object.defineProperty(this, "opacity", {
313
+ get: function() {
314
+ return this.highlightColor || this.customHotspotColor || this.hotspotColor ? 1 : 0;
315
+ },
316
+ configurable: true
317
+ });
318
+
292
319
  this._updateHotspotDescendants(this);
293
320
 
294
321
  if (this.domRef !== null) {
@@ -362,8 +389,17 @@ sap.ui.define([
362
389
  var domRef = this.domRef;
363
390
  if (domRef !== null) {
364
391
  if (this.nodeContentType === NodeContentType.Hotspot && !this._hasHostpotAncestor()) {
365
- domRef.setAttribute("filter", "url(#" + this.getHotspotEffectDef().name + ")");
366
- domRef.setAttribute("opacity", this._getHotspotOpacity());
392
+ if (this.customText) {
393
+ this.customText.filter = this.getHotspotEffectDef().name + "-custom-text";
394
+ this.customText.domRef?.setAttribute("filter", `url(#${this.customText.filter})`);
395
+ }
396
+ this.traverse((node) => {
397
+ const filter = node.filter;
398
+ if (filter) {
399
+ node.domRef?.setAttribute("filter", `url(#${filter})`);
400
+ }
401
+ });
402
+ domRef.setAttribute("opacity", this.opacity);
367
403
  } else {
368
404
  var setAttributeFunc = domRef.setAttribute.bind(domRef);
369
405
  if (this.highlightColor || this.tintColor) {
@@ -397,10 +433,6 @@ sap.ui.define([
397
433
  }
398
434
  };
399
435
 
400
- Element.prototype._getHotspotOpacity = function() {
401
- return this.highlightColor || this.customHotspotColor || this.hotspotColor ? 1 : 0;
402
- };
403
-
404
436
  Element._hotspotEffectName = function(color) {
405
437
  return "hotspot-effect-" + rgbaToCSS(color.red, color.green, color.blue, color.alpha);
406
438
  };
@@ -440,7 +472,7 @@ sap.ui.define([
440
472
  };
441
473
 
442
474
  Element.prototype.setTintColor = function(mask, tintColor) {
443
- assert(this.nodeContentType !== NodeContentType.Hotspot && "setTintColor() method is not for hotspots, use setHotspotColor() method");
475
+ assert(this.nodeContentType !== NodeContentType.Hotspot, "setTintColor() method is not for hotspots, use setHotspotColor() method");
444
476
  this.tintColor = tintColor;
445
477
  this._updateColor(mask);
446
478
  };
@@ -456,7 +488,7 @@ sap.ui.define([
456
488
  };
457
489
 
458
490
  Element.prototype.setCustomHotspotColor = function(mask, color) {
459
- assert(this.nodeContentType === NodeContentType.Hotspot && "setCustomHotspotColor() method is only for hotspots");
491
+ assert(this.nodeContentType === NodeContentType.Hotspot, "setCustomHotspotColor() method is only for hotspots");
460
492
  this.customHotspotColor = color;
461
493
  this._updateColor(mask);
462
494
  };
@@ -466,7 +498,7 @@ sap.ui.define([
466
498
  };
467
499
 
468
500
  Element.prototype.setOpacity = function(opacity) {
469
- assert(this.nodeContentType !== NodeContentType.Hotspot && "setOpacity() method is not for hotspots");
501
+ assert(this.nodeContentType !== NodeContentType.Hotspot, "setOpacity() method is not for hotspots");
470
502
 
471
503
  if (this._isGeometryNode()) {
472
504
  return;
@@ -502,6 +534,68 @@ sap.ui.define([
502
534
  }
503
535
  }
504
536
  }
537
+ this._updateCustomText();
538
+ };
539
+
540
+ /**
541
+ * Attaches a custom text to this element.
542
+ * @param {object} [options] The custom text options. If not specified, the existing custom text will be removed.
543
+ * @param {string} [options.text] The text to display, it's mutually exclusive with "htmlText" option.
544
+ * Line breaks are not supported, use "htmlText" option for multi-line text.
545
+ * @param {string} [options.htmlText] The HTML text to display, it's mutually exclusive with "text" option.
546
+ * Line breaks are supported using paragraphs: <p>Line 1</p><p>Line 2</p>.
547
+ * htmlText example:
548
+ * <p>Line <strong>1</strong></p>
549
+ * <p>Line <em>2</em></p>
550
+ * <p>Line <span style="font-size: 24pt;color: blue;font-family: 'courier new';">3</span></p>
551
+ * @param {number} [options.size] The font size of the text in scene coordinate units. If not specified then the size will be
552
+ * automatically determined based on the median text size in the scene or computed from the bounding box of the scene, but better
553
+ * to specify it explicitly to avoid unexpected results.
554
+ * @param {string} [options.fontFamily] The font family of the text. Default is "Arial".
555
+ * @param {string} [options.fontStyle] The font style of the text (normal | italic | oblique). Default is undefined ("normal").
556
+ * @param {string} [options.fontWeight] The font weight of the text (normal | bold | bolder | lighter | <number>). Default is undefined ("normal").
557
+ * @param {string} [options.textDecoration] The text decoration of the text (none | underline | line-through, etc). Default is undefined ("none").
558
+ * @param {string} [options.fill] The fill color of the text in CSS format. Default is "black".
559
+ * @param {number[]} [options.pivot] The pivot point of the custom text, relative to the text bounding box.
560
+ * The pivot point is used together with the anchor point to position the text.
561
+ * Default is [0.5, 0.5] (middle of the custom text). [0, 0] is top-left, [1, 1] is bottom-right.
562
+ * @param {number[]} [options.anchor] The anchor point of the text, relative to the bounding box of the node to which
563
+ * the custom text is attached.
564
+ * Default is [0.5, 0.5] (center of node). [0, 0] is top-left, [1, 1] is bottom-right.
565
+ * @returns {sap.ui.vk.svg.Element} Returns <code>this</code> to allow method chaining.
566
+ * @public
567
+ * @experimental
568
+ * @since 1.120.0
569
+ */
570
+ Element.prototype.setCustomText = function(options) {
571
+ Log.warning("You need to import 'sap.ui.vk.svg.Text' module to call method setCustomText().");
572
+ return this;
573
+ };
574
+
575
+ Element.prototype._updateCustomText = function() {
576
+ if (this.customText) {
577
+ const bbox = this._getBBox(null, true);
578
+ const textBBox = this.customText.domRef?.getBBox();
579
+ if (bbox && textBBox) {
580
+ // calculate the matrix of the custom text element based on the bounding box of the element
581
+ const matrix = this._matrixWorld();
582
+ const pivot = this.customText.pivot ?? [0.5, 0.5]; // default pivot is center of the bonding box
583
+ const x = bbox.x + bbox.width * pivot[0];
584
+ const y = bbox.y + bbox.height * (matrix[3] < 0 ? 1 - pivot[1] : pivot[1]);
585
+ matrix[4] = matrix[5] = 0;
586
+ const p = Element._transformPoint(x, y, matrix);
587
+ const anchor = this.customText.anchor;
588
+ if (anchor) {
589
+ p.x -= textBBox.x + textBBox.width * anchor[0];
590
+ p.y -= textBBox.y + textBBox.height * anchor[1];
591
+ }
592
+ const invMatrix = Element._invertMatrix(matrix);
593
+ const p2 = Element._transformPoint(p.x, p.y, invMatrix);
594
+ invMatrix[4] = p2.x;
595
+ invMatrix[5] = p2.y;
596
+ this.customText.setMatrix(invMatrix);
597
+ }
598
+ }
505
599
  };
506
600
 
507
601
  Element._multiplyMatrices = function(a, b) {
@@ -650,10 +744,10 @@ sap.ui.define([
650
744
  }
651
745
 
652
746
  // This method returns aligned bounding box if the matrix is passed, or oriented bounding box if no matrix is passed
653
- Element.prototype._getBBox = function(matrix) {
747
+ Element.prototype._getBBox = function(matrix, childrenOnly) {
654
748
  if (this.domRef) {
655
749
  var bbox;
656
- if (!this.parent || this.domRef !== this.parent.domRef) {
750
+ if (!childrenOnly && this.domRef !== this.parent?.domRef) {
657
751
  bbox = this.domRef.getBBox();
658
752
  if (matrix && bbox) {// transform bounding box to parent coordinate system
659
753
  bbox = transformBBox(bbox, matrix);
@@ -687,7 +781,8 @@ sap.ui.define([
687
781
  isIdentityMatrix(element.matrix) &&
688
782
  element.opacity === undefined &&
689
783
  (element.nodeContentType !== NodeContentType.Hotspot || element._hasHostpotAncestor()) && // not a hotspot
690
- element.vMask === 1;
784
+ element.vMask === 1 &&
785
+ element.customText == null;
691
786
  }
692
787
 
693
788
  Element.prototype._getSceneTreeElement = function() {
@@ -777,13 +872,14 @@ sap.ui.define([
777
872
  Element.prototype._setBaseAttributes = function(setAttributeFunc, mask) {
778
873
  setAttributeFunc("id", this.uid);
779
874
 
780
- if (this.nodeContentType === NodeContentType.Hotspot) {
781
- if (!this._hasHostpotAncestor()) {
782
- setAttributeFunc("filter", "url(#" + this.getHotspotEffectDef().name + ")");
783
- setAttributeFunc("opacity", this._getHotspotOpacity());
784
- }
785
- } else if (this.opacity !== undefined) {
786
- setAttributeFunc("opacity", this.opacity);
875
+ const filter = this.filter; // filter can be defined as a getter for hotspots
876
+ if (filter != null) {
877
+ setAttributeFunc("filter", `url(#${filter})`);
878
+ }
879
+
880
+ const opacity = this.opacity; // opacity can be defined as a getter for hotspots
881
+ if (opacity != null) {
882
+ setAttributeFunc("opacity", opacity);
787
883
  }
788
884
  if (!isIdentityMatrix(this.matrix)) {
789
885
  setAttributeFunc("transform", "matrix(" + this.matrix.join(",") + ")");
@@ -824,8 +920,11 @@ sap.ui.define([
824
920
  if (this.strokeDashArray.length > 0) {
825
921
  setAttributeFunc("stroke-dasharray", this.strokeDashArray.join(" "));
826
922
  }
827
- if (this.lineCap != null) {
828
- setAttributeFunc("stroke-linecap", this.lineCap);
923
+ if (this.linecap != null) {
924
+ setAttributeFunc("stroke-linecap", this.linecap);
925
+ }
926
+ if (this.linejoin != null) {
927
+ setAttributeFunc("stroke-linejoin", this.linejoin);
829
928
  }
830
929
  if (!this.coordinateSpace || this.coordinateSpace === unknownCoordinateSpace) {
831
930
  setAttributeFunc("vector-effect", "non-scaling-stroke");
@@ -888,6 +987,8 @@ sap.ui.define([
888
987
  element.render(rm, mask);
889
988
  });
890
989
 
990
+ this.customText?.render(rm, mask);
991
+
891
992
  if (!skipIt) {
892
993
  rm.close(tagName);
893
994
  }
@@ -979,6 +1080,11 @@ sap.ui.define([
979
1080
  }
980
1081
  child._setDomRef(childDomRef);
981
1082
  }
1083
+
1084
+ if (this.customText) {
1085
+ this.customText.domRef = document.getElementById(this.customText.uid);
1086
+ this._updateCustomText();
1087
+ }
982
1088
  };
983
1089
 
984
1090
  Element.prototype.getElementByProperty = function(name, value) {
@@ -986,14 +1092,17 @@ sap.ui.define([
986
1092
  return this;
987
1093
  }
988
1094
 
989
- var children = this.children;
990
- for (var i = 0, l = children.length; i < l; i++) {
991
- var element = children[i].getElementByProperty(name, value);
1095
+ for (let child of this.children) {
1096
+ const element = child.getElementByProperty(name, value);
992
1097
  if (element !== null) {
993
1098
  return element;
994
1099
  }
995
1100
  }
996
1101
 
1102
+ if (this.customText && this.customText[name] === value) {
1103
+ return this.customText;
1104
+ }
1105
+
997
1106
  return null;
998
1107
  };
999
1108
 
@@ -59,6 +59,10 @@ sap.ui.define([
59
59
  parametric.major = this.rx;
60
60
  parametric.minor = this.ry;
61
61
  }
62
+ if (this.cx || this.cy) {
63
+ parametric.cx = this.cx;
64
+ parametric.cy = this.cy;
65
+ }
62
66
  return parametric;
63
67
  };
64
68