x_ite 8.6.4 → 8.6.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 (50) hide show
  1. package/dist/assets/components/Annotation.js +13 -13
  2. package/dist/assets/components/Annotation.min.js +1 -1
  3. package/dist/assets/components/CADGeometry.js +13 -13
  4. package/dist/assets/components/CADGeometry.min.js +1 -1
  5. package/dist/assets/components/CubeMapTexturing.js +25 -25
  6. package/dist/assets/components/CubeMapTexturing.min.js +1 -1
  7. package/dist/assets/components/DIS.js +13 -13
  8. package/dist/assets/components/DIS.min.js +1 -1
  9. package/dist/assets/components/EventUtilities.js +9 -9
  10. package/dist/assets/components/EventUtilities.min.js +1 -1
  11. package/dist/assets/components/Geometry2D.js +19 -19
  12. package/dist/assets/components/Geometry2D.min.js +1 -1
  13. package/dist/assets/components/Geospatial.js +33 -33
  14. package/dist/assets/components/Geospatial.min.js +1 -1
  15. package/dist/assets/components/HAnim.js +18 -18
  16. package/dist/assets/components/HAnim.min.js +1 -1
  17. package/dist/assets/components/KeyDeviceSensor.js +8 -8
  18. package/dist/assets/components/KeyDeviceSensor.min.js +1 -1
  19. package/dist/assets/components/Layout.js +27 -27
  20. package/dist/assets/components/Layout.min.js +1 -1
  21. package/dist/assets/components/NURBS.js +24 -24
  22. package/dist/assets/components/NURBS.min.js +1 -1
  23. package/dist/assets/components/ParticleSystems.js +23 -23
  24. package/dist/assets/components/ParticleSystems.min.js +1 -1
  25. package/dist/assets/components/Picking.js +19 -19
  26. package/dist/assets/components/Picking.min.js +1 -1
  27. package/dist/assets/components/RigidBodyPhysics.js +18 -18
  28. package/dist/assets/components/RigidBodyPhysics.min.js +1 -1
  29. package/dist/assets/components/Scripting.js +28 -28
  30. package/dist/assets/components/Scripting.min.js +1 -1
  31. package/dist/assets/components/Text.js +24 -24
  32. package/dist/assets/components/Text.min.js +1 -1
  33. package/dist/assets/components/TextureProjector.js +14 -14
  34. package/dist/assets/components/TextureProjector.min.js +1 -1
  35. package/dist/assets/components/Texturing3D.js +30 -30
  36. package/dist/assets/components/Texturing3D.min.js +1 -1
  37. package/dist/assets/components/VolumeRendering.js +19 -19
  38. package/dist/assets/components/VolumeRendering.min.js +1 -1
  39. package/dist/assets/components/X_ITE.js +9 -9
  40. package/dist/assets/components/X_ITE.min.js +1 -1
  41. package/dist/x_ite.css +1 -1
  42. package/dist/x_ite.js +800 -654
  43. package/dist/x_ite.min.js +1 -1
  44. package/dist/x_ite.zip +0 -0
  45. package/docs/_config.yml +2 -2
  46. package/package.json +1 -1
  47. package/src/standard/Math/Numbers/Matrix4.js +7 -0
  48. package/src/x_ite/Browser/VERSION.js +1 -1
  49. package/src/x_ite/Parser/SVGParser.js +403 -264
  50. package/src/x_ite/Parser/X3DParser.js +2 -2
package/dist/x_ite.js CHANGED
@@ -1,4 +1,4 @@
1
- /* X_ITE v8.6.4 */(function webpackUniversalModuleDefinition(root, factory) {
1
+ /* X_ITE v8.6.5 */(function webpackUniversalModuleDefinition(root, factory) {
2
2
  if(typeof exports === 'object' && typeof module === 'object')
3
3
  module.exports = factory();
4
4
  else if(typeof define === 'function' && define.amd)
@@ -11,11 +11,11 @@
11
11
  return /******/ (() => { // webpackBootstrap
12
12
  /******/ var __webpack_modules__ = ({
13
13
 
14
- /***/ 599:
14
+ /***/ 151:
15
15
  /***/ (function(module, exports, __webpack_require__) {
16
16
 
17
17
  "use strict";
18
- /* provided dependency */ var jQuery = __webpack_require__(769);
18
+ /* provided dependency */ var jQuery = __webpack_require__(908);
19
19
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;
20
20
 
21
21
  /**
@@ -387,10 +387,10 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_RESULT__;
387
387
 
388
388
  /***/ }),
389
389
 
390
- /***/ 392:
390
+ /***/ 80:
391
391
  /***/ ((__unused_webpack_module, __unused_webpack_exports, __webpack_require__) => {
392
392
 
393
- /* provided dependency */ var jQuery = __webpack_require__(769);
393
+ /* provided dependency */ var jQuery = __webpack_require__(908);
394
394
  /**
395
395
  * @preserve jquery.fullscreen 1.1.5
396
396
  * https://github.com/code-lts/jquery-fullscreen-plugin
@@ -586,7 +586,7 @@ installFullScreenHandlers();
586
586
 
587
587
  /***/ }),
588
588
 
589
- /***/ 616:
589
+ /***/ 172:
590
590
  /***/ ((module, exports, __webpack_require__) => {
591
591
 
592
592
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -600,7 +600,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
600
600
  (function (factory) {
601
601
  if ( true ) {
602
602
  // AMD. Register as an anonymous module.
603
- !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(769)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
603
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [__webpack_require__(908)], __WEBPACK_AMD_DEFINE_FACTORY__ = (factory),
604
604
  __WEBPACK_AMD_DEFINE_RESULT__ = (typeof __WEBPACK_AMD_DEFINE_FACTORY__ === 'function' ?
605
605
  (__WEBPACK_AMD_DEFINE_FACTORY__.apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__)) : __WEBPACK_AMD_DEFINE_FACTORY__),
606
606
  __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
@@ -811,7 +811,7 @@ var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_
811
811
 
812
812
  /***/ }),
813
813
 
814
- /***/ 769:
814
+ /***/ 908:
815
815
  /***/ (function(module, exports) {
816
816
 
817
817
  var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
@@ -11812,7 +11812,7 @@ return jQuery;
11812
11812
 
11813
11813
  /***/ }),
11814
11814
 
11815
- /***/ 863:
11815
+ /***/ 323:
11816
11816
  /***/ ((module) => {
11817
11817
 
11818
11818
  /**
@@ -16591,7 +16591,7 @@ if (true) {
16591
16591
 
16592
16592
  /***/ }),
16593
16593
 
16594
- /***/ 765:
16594
+ /***/ 862:
16595
16595
  /***/ (function(__unused_webpack_module, exports) {
16596
16596
 
16597
16597
 
@@ -19836,7 +19836,7 @@ if (true) {
19836
19836
 
19837
19837
  /***/ }),
19838
19838
 
19839
- /***/ 328:
19839
+ /***/ 732:
19840
19840
  /***/ (function(module, exports) {
19841
19841
 
19842
19842
  var __WEBPACK_AMD_DEFINE_FACTORY__, __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*
@@ -29879,6 +29879,13 @@ Object .assign (Matrix4_Matrix4,
29879
29879
  return Object .create (this .prototype) .setQuaternion (quaternion);
29880
29880
  },
29881
29881
  Matrix3: function (matrix)
29882
+ {
29883
+ return new Matrix4_Matrix4 (matrix [0], matrix [1], 0, 0,
29884
+ matrix [3], matrix [4], 0, 0,
29885
+ 0, 0, 1, 0,
29886
+ matrix [6], matrix [7], 0, 1);
29887
+ },
29888
+ SubMatrix: function (matrix)
29882
29889
  {
29883
29890
  return new Matrix4_Matrix4 (matrix [0], matrix [1], matrix [2], 0,
29884
29891
  matrix [3], matrix [4], matrix [5], 0,
@@ -34905,7 +34912,7 @@ x_ite_Namespace.set ("x_ite/Base/X3DBaseNode", X3DBaseNode_default_);
34905
34912
  *
34906
34913
  ******************************************************************************/
34907
34914
 
34908
- const VERSION_default_ = "8.6.4";
34915
+ const VERSION_default_ = "8.6.5";
34909
34916
  ;
34910
34917
 
34911
34918
  x_ite_Namespace.set ("x_ite/Browser/VERSION", VERSION_default_);
@@ -35807,7 +35814,7 @@ const gettext_default_ = gettext;
35807
35814
  x_ite_Namespace.set ("locale/gettext", gettext_default_);
35808
35815
  /* harmony default export */ const locale_gettext = (gettext_default_);
35809
35816
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/BrowserTimings.js
35810
- /* provided dependency */ var $ = __webpack_require__(769);
35817
+ /* provided dependency */ var $ = __webpack_require__(908);
35811
35818
  /*******************************************************************************
35812
35819
  *
35813
35820
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -36765,7 +36772,7 @@ const RenderingProperties_default_ = RenderingProperties;
36765
36772
  x_ite_Namespace.set ("x_ite/Browser/Core/RenderingProperties", RenderingProperties_default_);
36766
36773
  /* harmony default export */ const Core_RenderingProperties = (RenderingProperties_default_);
36767
36774
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/Notification.js
36768
- /* provided dependency */ var Notification_$ = __webpack_require__(769);
36775
+ /* provided dependency */ var Notification_$ = __webpack_require__(908);
36769
36776
  /*******************************************************************************
36770
36777
  *
36771
36778
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -36887,8 +36894,8 @@ const Notification_default_ = Notification;
36887
36894
  x_ite_Namespace.set ("x_ite/Browser/Core/Notification", Notification_default_);
36888
36895
  /* harmony default export */ const Core_Notification = (Notification_default_);
36889
36896
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/ContextMenu.js
36890
- /* provided dependency */ var jquery_fullscreen = __webpack_require__(392);
36891
- /* provided dependency */ var ContextMenu_$ = __webpack_require__(769);
36897
+ /* provided dependency */ var jquery_fullscreen = __webpack_require__(80);
36898
+ /* provided dependency */ var ContextMenu_$ = __webpack_require__(908);
36892
36899
  /*******************************************************************************
36893
36900
  *
36894
36901
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -41890,7 +41897,7 @@ const X3DUrlObject_default_ = X3DUrlObject;
41890
41897
  x_ite_Namespace.set ("x_ite/Components/Networking/X3DUrlObject", X3DUrlObject_default_);
41891
41898
  /* harmony default export */ const Networking_X3DUrlObject = (X3DUrlObject_default_);
41892
41899
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/X3DParser.js
41893
- /* provided dependency */ var X3DParser_$ = __webpack_require__(769);
41900
+ /* provided dependency */ var X3DParser_$ = __webpack_require__(908);
41894
41901
  /*******************************************************************************
41895
41902
  *
41896
41903
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -42032,10 +42039,10 @@ X3DParser .prototype = {
42032
42039
  {
42033
42040
  return this .scene .fromUnit (category, value);
42034
42041
  },
42035
- convertColor: function (value)
42042
+ convertColor: function (value, defaultColor = "white")
42036
42043
  {
42037
42044
  const
42038
- wrap = X3DParser_$("<div></div>") .hide () .css ("color", "black") .appendTo (X3DParser_$("body")),
42045
+ wrap = X3DParser_$("<div></div>") .hide () .css ("color", defaultColor) .appendTo (X3DParser_$("body")),
42039
42046
  div = X3DParser_$("<div></div>").css ("color", value) .appendTo (wrap),
42040
42047
  rgb = window .getComputedStyle (div [0]) .color,
42041
42048
  values = rgb .replace (/^rgba?\(|\)$/g, "") .split (/[\s,]+/) .map (s => parseFloat (s));
@@ -45067,7 +45074,7 @@ const VRMLParser_default_ = VRMLParser;
45067
45074
  x_ite_Namespace.set ("x_ite/Parser/VRMLParser", VRMLParser_default_);
45068
45075
  /* harmony default export */ const Parser_VRMLParser = (VRMLParser_default_);
45069
45076
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/XMLParser.js
45070
- /* provided dependency */ var XMLParser_$ = __webpack_require__(769);
45077
+ /* provided dependency */ var XMLParser_$ = __webpack_require__(908);
45071
45078
  /*******************************************************************************
45072
45079
  *
45073
45080
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -46953,7 +46960,7 @@ const X3DOptimizer_default_ = X3DOptimizer;
46953
46960
  x_ite_Namespace.set ("x_ite/Parser/X3DOptimizer", X3DOptimizer_default_);
46954
46961
  /* harmony default export */ const Parser_X3DOptimizer = (X3DOptimizer_default_);
46955
46962
  ;// CONCATENATED MODULE: ./src/standard/Math/Geometry/Triangle3.js
46956
- /* provided dependency */ var libtess = __webpack_require__(863);
46963
+ /* provided dependency */ var libtess = __webpack_require__(323);
46957
46964
  /*******************************************************************************
46958
46965
  *
46959
46966
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -47863,7 +47870,7 @@ const Box3_default_ = Box3;
47863
47870
  x_ite_Namespace.set ("standard/Math/Geometry/Box3", Box3_default_);
47864
47871
  /* harmony default export */ const Geometry_Box3 = (Box3_default_);
47865
47872
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GLTF2Parser.js
47866
- /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(769);
47873
+ /* provided dependency */ var GLTF2Parser_$ = __webpack_require__(908);
47867
47874
  /*******************************************************************************
47868
47875
  *
47869
47876
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -50090,7 +50097,7 @@ const GLTF2Parser_default_ = GLTF2Parser;
50090
50097
  x_ite_Namespace.set ("x_ite/Parser/GLTF2Parser", GLTF2Parser_default_);
50091
50098
  /* harmony default export */ const Parser_GLTF2Parser = (GLTF2Parser_default_);
50092
50099
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GLB2Parser.js
50093
- /* provided dependency */ var GLB2Parser_$ = __webpack_require__(769);
50100
+ /* provided dependency */ var GLB2Parser_$ = __webpack_require__(908);
50094
50101
  /*******************************************************************************
50095
50102
  *
50096
50103
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -50243,7 +50250,7 @@ const GLB2Parser_default_ = GLB2Parser;
50243
50250
  x_ite_Namespace.set ("x_ite/Parser/GLB2Parser", GLB2Parser_default_);
50244
50251
  /* harmony default export */ const Parser_GLB2Parser = (GLB2Parser_default_);
50245
50252
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/OBJParser.js
50246
- /* provided dependency */ var OBJParser_$ = __webpack_require__(769);
50253
+ /* provided dependency */ var OBJParser_$ = __webpack_require__(908);
50247
50254
  /*******************************************************************************
50248
50255
  *
50249
50256
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -51873,6 +51880,220 @@ const STLBParser_default_ = STLBParser;
51873
51880
 
51874
51881
  x_ite_Namespace.set ("x_ite/Parser/STLBParser", STLBParser_default_);
51875
51882
  /* harmony default export */ const Parser_STLBParser = (STLBParser_default_);
51883
+ ;// CONCATENATED MODULE: ./src/standard/Math/Numbers/Complex.js
51884
+ /*******************************************************************************
51885
+ *
51886
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
51887
+ *
51888
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
51889
+ *
51890
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
51891
+ *
51892
+ * The copyright notice above does not evidence any actual of intended
51893
+ * publication of such source code, and is an unpublished work by create3000.
51894
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
51895
+ * create3000.
51896
+ *
51897
+ * No permission is granted to copy, distribute, or create derivative works from
51898
+ * the contents of this software, in whole or in part, without the prior written
51899
+ * permission of create3000.
51900
+ *
51901
+ * NON-MILITARY USE ONLY
51902
+ *
51903
+ * All create3000 software are effectively free software with a non-military use
51904
+ * restriction. It is free. Well commented source is provided. You may reuse the
51905
+ * source in any way you please with the exception anything that uses it must be
51906
+ * marked to indicate is contains 'non-military use only' components.
51907
+ *
51908
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
51909
+ *
51910
+ * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
51911
+ *
51912
+ * This file is part of the X_ITE Project.
51913
+ *
51914
+ * X_ITE is free software: you can redistribute it and/or modify it under the
51915
+ * terms of the GNU General Public License version 3 only, as published by the
51916
+ * Free Software Foundation.
51917
+ *
51918
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
51919
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
51920
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
51921
+ * details (a copy is included in the LICENSE file that accompanied this code).
51922
+ *
51923
+ * You should have received a copy of the GNU General Public License version 3
51924
+ * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
51925
+ * copy of the GPLv3 License.
51926
+ *
51927
+ * For Silvio, Joy and Adi.
51928
+ *
51929
+ ******************************************************************************/
51930
+
51931
+ function Complex (real, imag)
51932
+ {
51933
+ this .real = real;
51934
+ this .imag = imag;
51935
+ }
51936
+
51937
+ Complex .prototype =
51938
+ {
51939
+ constructor: Complex,
51940
+ [Symbol .iterator]: function* ()
51941
+ {
51942
+ yield this .real;
51943
+ yield this .imag;
51944
+ },
51945
+ copy: function ()
51946
+ {
51947
+ const copy = Object .create (Complex .prototype);
51948
+ copy .real = this .real;
51949
+ copy .imag = this .imag;
51950
+ return copy;
51951
+ },
51952
+ assign: function (complex)
51953
+ {
51954
+ this .real = complex .real;
51955
+ this .imag = complex .imag;
51956
+ return this;
51957
+ },
51958
+ equals: function (complex)
51959
+ {
51960
+ return this .real === complex .real &&
51961
+ this .imag === complex .imag;
51962
+ },
51963
+ setPolar: function (magnitude, angle)
51964
+ {
51965
+ this .real = magnitude * Math .cos (angle);
51966
+ this .imag = magnitude * Math .sin (angle);
51967
+ return this;
51968
+ },
51969
+ conjugate: function ()
51970
+ {
51971
+ this .imag = -this .imag;
51972
+ return this;
51973
+ },
51974
+ negate: function ()
51975
+ {
51976
+ this .real = -this .real;
51977
+ this .imag = -this .imag;
51978
+ return this;
51979
+ },
51980
+ inverse: function ()
51981
+ {
51982
+ const d = this .real * this .real + this .imag * this .imag;
51983
+
51984
+ this .real /= d;
51985
+ this .imag /= -d;
51986
+ return this;
51987
+ },
51988
+ add: function (value)
51989
+ {
51990
+ this .real += value .real;
51991
+ this .imag += value .imag;
51992
+ return this;
51993
+ },
51994
+ subtract: function (value)
51995
+ {
51996
+ this .real -= value .real;
51997
+ this .imag -= value .imag;
51998
+ return this;
51999
+ },
52000
+ multiply: function (value)
52001
+ {
52002
+ this .real *= value;
52003
+ this .imag *= value;
52004
+ return this;
52005
+ },
52006
+ multComp: function (value)
52007
+ {
52008
+ const
52009
+ { real: ar, imag: ai } = this,
52010
+ { real: br, imag: bi } = value;
52011
+
52012
+ this .real = ar * br - ai * bi;
52013
+ this .imag = ar * bi + ai * br;
52014
+ return this;
52015
+ },
52016
+ //divide: function (value)
52017
+ //{
52018
+ // return this;
52019
+ //},
52020
+ divComp: function (value)
52021
+ {
52022
+ const
52023
+ { real: ar, imag: ai } = this,
52024
+ { real: br, imag: bi } = value,
52025
+ d = br * br + bi * bi;
52026
+
52027
+ this .real = (ar * br + ai * bi) / d;
52028
+ this .imag = (ai * br - ar * bi) / d;
52029
+ return this;
52030
+ },
52031
+ toString: function ()
52032
+ {
52033
+ if (this .imag)
52034
+ return this .real + " " + this .imag + "i";
52035
+
52036
+ return String (this .real);
52037
+ },
52038
+ };
52039
+
52040
+ Object .defineProperty (Complex .prototype, "magnitude",
52041
+ {
52042
+ get: function ()
52043
+ {
52044
+ if (this .real)
52045
+ {
52046
+ if (this .imag)
52047
+ return Math .hypot (this .real, this .imag);
52048
+
52049
+ return Math .abs (this .real);
52050
+ }
52051
+
52052
+ return Math .abs (this .imag);
52053
+ },
52054
+ set: function (magnitude)
52055
+ {
52056
+ this .setPolar (magnitude, this .angle);
52057
+ },
52058
+ enumerable: false,
52059
+ configurable: false
52060
+ });
52061
+
52062
+ Object .defineProperty (Complex .prototype, "angle",
52063
+ {
52064
+ get: function ()
52065
+ {
52066
+ return Math .atan2 (this .imag, this .real);
52067
+ },
52068
+ set: function (angle)
52069
+ {
52070
+ this .setPolar (this .magnitude, angle);
52071
+ },
52072
+ enumerable: false,
52073
+ configurable: false
52074
+ });
52075
+
52076
+ Object .assign (Complex,
52077
+ {
52078
+ Polar: function (magnitude, angle)
52079
+ {
52080
+ return Object .create (Complex .prototype) .setPolar (magnitude, angle);
52081
+ },
52082
+ multiply: function (lhs, rhs)
52083
+ {
52084
+ return lhs .copy () .multiply (rhs);
52085
+ },
52086
+ multComp: function (lhs, rhs)
52087
+ {
52088
+ return lhs .copy () .multComp (rhs);
52089
+ },
52090
+ });
52091
+
52092
+ const Complex_default_ = Complex;
52093
+ ;
52094
+
52095
+ x_ite_Namespace.set ("standard/Math/Numbers/Complex", Complex_default_);
52096
+ /* harmony default export */ const Numbers_Complex = (Complex_default_);
51876
52097
  ;// CONCATENATED MODULE: ./src/standard/Math/Geometry/Box2.js
51877
52098
  /*******************************************************************************
51878
52099
  *
@@ -52350,9 +52571,128 @@ const Bezier_default_ = Bezier;
52350
52571
 
52351
52572
  x_ite_Namespace.set ("standard/Math/Algorithms/Bezier", Bezier_default_);
52352
52573
  /* harmony default export */ const Algorithms_Bezier = (Bezier_default_);
52574
+ ;// CONCATENATED MODULE: ./src/standard/Math/Utility/MatrixStack.js
52575
+ /*******************************************************************************
52576
+ *
52577
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
52578
+ *
52579
+ * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
52580
+ *
52581
+ * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
52582
+ *
52583
+ * The copyright notice above does not evidence any actual of intended
52584
+ * publication of such source code, and is an unpublished work by create3000.
52585
+ * This material contains CONFIDENTIAL INFORMATION that is the property of
52586
+ * create3000.
52587
+ *
52588
+ * No permission is granted to copy, distribute, or create derivative works from
52589
+ * the contents of this software, in whole or in part, without the prior written
52590
+ * permission of create3000.
52591
+ *
52592
+ * NON-MILITARY USE ONLY
52593
+ *
52594
+ * All create3000 software are effectively free software with a non-military use
52595
+ * restriction. It is free. Well commented source is provided. You may reuse the
52596
+ * source in any way you please with the exception anything that uses it must be
52597
+ * marked to indicate is contains 'non-military use only' components.
52598
+ *
52599
+ * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
52600
+ *
52601
+ * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
52602
+ *
52603
+ * This file is part of the X_ITE Project.
52604
+ *
52605
+ * X_ITE is free software: you can redistribute it and/or modify it under the
52606
+ * terms of the GNU General Public License version 3 only, as published by the
52607
+ * Free Software Foundation.
52608
+ *
52609
+ * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
52610
+ * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
52611
+ * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
52612
+ * details (a copy is included in the LICENSE file that accompanied this code).
52613
+ *
52614
+ * You should have received a copy of the GNU General Public License version 3
52615
+ * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
52616
+ * copy of the GPLv3 License.
52617
+ *
52618
+ * For Silvio, Joy and Adi.
52619
+ *
52620
+ ******************************************************************************/
52621
+
52622
+ function MatrixStack (Type)
52623
+ {
52624
+ return Object .assign ([ new Type () ],
52625
+ {
52626
+ top: 0,
52627
+ set: function (matrix)
52628
+ {
52629
+ this [this .top] .assign (matrix);
52630
+ },
52631
+ get: function ()
52632
+ {
52633
+ return this [this .top];
52634
+ },
52635
+ push: function ()
52636
+ {
52637
+ const top = ++ this .top;
52638
+
52639
+ if (top < this .length)
52640
+ this [top] .assign (this [top - 1]);
52641
+ else
52642
+ this [top] = this [top - 1] .copy ();
52643
+ },
52644
+ pushMatrix: function (matrix)
52645
+ {
52646
+ const top = ++ this .top;
52647
+
52648
+ if (top < this .length)
52649
+ this [top] .assign (matrix);
52650
+ else
52651
+ this [top] = matrix .copy ();
52652
+ },
52653
+ pop: function ()
52654
+ {
52655
+ -- this .top;
52656
+ },
52657
+ clear: function ()
52658
+ {
52659
+ this .top = 0;
52660
+ },
52661
+ size: function ()
52662
+ {
52663
+ return this .top + 1;
52664
+ },
52665
+ identity: function ()
52666
+ {
52667
+ this [this .top] .identity ();
52668
+ },
52669
+ multLeft: function (matrix)
52670
+ {
52671
+ this [this .top] .multLeft (matrix);
52672
+ },
52673
+ translate: function (vector)
52674
+ {
52675
+ this [this .top] .translate (vector);
52676
+ },
52677
+ rotate: function (rotation)
52678
+ {
52679
+ this [this .top] .rotate (rotation);
52680
+ },
52681
+ scale: function (vector)
52682
+ {
52683
+ this [this .top] .scale (vector);
52684
+ },
52685
+ });
52686
+ }
52687
+
52688
+ const MatrixStack_default_ = MatrixStack;
52689
+ ;
52690
+
52691
+ x_ite_Namespace.set ("standard/Math/Utility/MatrixStack", MatrixStack_default_);
52692
+ /* harmony default export */ const Utility_MatrixStack = (MatrixStack_default_);
52353
52693
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/SVGParser.js
52354
- /* provided dependency */ var SVGParser_$ = __webpack_require__(769);
52355
- /* provided dependency */ var SVGParser_libtess = __webpack_require__(863);
52694
+ /* provided dependency */ var SVGParser_$ = __webpack_require__(908);
52695
+ /* provided dependency */ var SVGParser_libtess = __webpack_require__(323);
52356
52696
  /*******************************************************************************
52357
52697
  *
52358
52698
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -52415,6 +52755,8 @@ x_ite_Namespace.set ("standard/Math/Algorithms/Bezier", Bezier_default_);
52415
52755
 
52416
52756
 
52417
52757
 
52758
+
52759
+
52418
52760
  /*
52419
52761
  * Grammar
52420
52762
  */
@@ -52428,7 +52770,7 @@ const SVGParser_Grammar = Parser_Expressions ({
52428
52770
  closeParenthesis: /\)/gy,
52429
52771
 
52430
52772
  // Units
52431
- length: /(em|ex|px|in|cm|mm|pt|pc)/gy,
52773
+ length: /(em|ex|px|in|cm|mm|pt|pc|%)/gy,
52432
52774
  percent: /%/gy,
52433
52775
 
52434
52776
  // Values
@@ -52451,16 +52793,14 @@ const SVGParser_Grammar = Parser_Expressions ({
52451
52793
  */
52452
52794
 
52453
52795
  const
52454
- MM = 0.001, // One mm in meters.
52455
- CM = 0.01, // One cm in meters.
52456
- INCH = 0.0254, // One inch in meters.
52457
- POINT = INCH / 72, // One point in meters.
52458
- PICA = INCH / 6, // One pica in meters.
52459
- PIXEL = INCH / 90, // One pixel in meters.
52460
- EM = 16, // One em in pixels,
52461
- BEZIER_STEPS = 10, // Subdivisions of a span.
52462
- CIRCLE_STEPS = 64, // Subdivisions of a circle, used for arc.
52463
- GRADIENT_SIZE = 256; // In pixels.
52796
+ MM = 0.001, // One mm in meters.
52797
+ CM = 0.01, // One cm in meters.
52798
+ INCH = 0.0254, // One inch in meters.
52799
+ POINT = INCH / 72, // One point in meters.
52800
+ PICA = INCH / 6, // One pica in meters.
52801
+ PIXEL = INCH / 90, // One pixel in meters.
52802
+ EM = 16, // One em in pixels.
52803
+ SPREAD = 16; // Spread factor, Integer.
52464
52804
 
52465
52805
  /*
52466
52806
  * Parser
@@ -52479,17 +52819,17 @@ function SVGParser (scene)
52479
52819
 
52480
52820
  // Options
52481
52821
 
52482
- this .solid = false; // Are 2D primitives solid.
52822
+ this .solid = false; // Are 2D primitives solid?
52483
52823
 
52484
52824
  // Globals
52485
52825
 
52486
- this .nodes = new Map ();
52487
- this .tessy = this .createTesselator ();
52488
- this .canvas = document .createElement ("canvas");
52489
- this .context = this .canvas .getContext ("2d");
52490
-
52491
- this .canvas .width = GRADIENT_SIZE;
52492
- this .canvas .height = GRADIENT_SIZE;
52826
+ this .viewBox = new Numbers_Vector4 (0, 0, 100, 100);
52827
+ this .modelMatrix = new Utility_MatrixStack (Numbers_Matrix4);
52828
+ this .nodes = new Map ();
52829
+ this .lineProperties = new Map ();
52830
+ this .tessy = this .createTesselator ();
52831
+ this .canvas = document .createElement ("canvas");
52832
+ this .context = this .canvas .getContext ("2d");
52493
52833
 
52494
52834
  this .styles = [{
52495
52835
  display: "inline",
@@ -52508,6 +52848,42 @@ function SVGParser (scene)
52508
52848
  stopOpacity: 1,
52509
52849
  vectorEffect: "none",
52510
52850
  }];
52851
+
52852
+ // Constants
52853
+
52854
+ const browser = scene .getBrowser ()
52855
+
52856
+ switch (browser .getBrowserOption ("PrimitiveQuality"))
52857
+ {
52858
+ case "LOW":
52859
+ this .BEZIER_STEPS = 6; // Subdivisions of a span.
52860
+ this .CIRCLE_STEPS = 20; // Subdivisions of a circle, used for arc and rounded rect.
52861
+ break;
52862
+ case "HIGH":
52863
+ this .BEZIER_STEPS = 10; // Subdivisions of a span.
52864
+ this .CIRCLE_STEPS = 64; // Subdivisions of a circle, used for arc and rounded rect.
52865
+ break;
52866
+ default:
52867
+ this .BEZIER_STEPS = 8; // Subdivisions of a span.
52868
+ this .CIRCLE_STEPS = 32; // Subdivisions of a circle, used for arc and rounded rect.
52869
+ break;
52870
+ }
52871
+
52872
+ switch (browser .getBrowserOption ("TextureQuality"))
52873
+ {
52874
+ case "LOW":
52875
+ this .GRADIENT_SIZE = 128; // In pixels.
52876
+ break;
52877
+ case "HIGH":
52878
+ this .GRADIENT_SIZE = 512; // In pixels.
52879
+ break;
52880
+ default:
52881
+ this .GRADIENT_SIZE = 256; // In pixels.
52882
+ break;
52883
+ }
52884
+
52885
+ this .canvas .width = this .GRADIENT_SIZE;
52886
+ this .canvas .height = this .GRADIENT_SIZE;
52511
52887
  }
52512
52888
 
52513
52889
  SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototype),
@@ -52616,16 +52992,16 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
52616
52992
  // Get attributes of svg element.
52617
52993
 
52618
52994
  const
52619
- defaultWidth = this .lengthAttribute (xmlElement .getAttribute ("width"), 300),
52620
- defaultHeight = this .lengthAttribute (xmlElement .getAttribute ("height"), 150),
52621
- defaultViewBox = new Numbers_Vector4 (0, 0, defaultWidth, defaultHeight),
52995
+ defaultWidth = this .lengthAttribute (xmlElement .getAttribute ("width"), 300, "width"),
52996
+ defaultHeight = this .lengthAttribute (xmlElement .getAttribute ("height"), 150, "height"),
52997
+ defaultViewBox = this .viewBox .set (0, 0, defaultWidth, defaultHeight),
52622
52998
  viewBox = this .viewBoxAttribute (xmlElement .getAttribute ("viewBox"), defaultViewBox),
52623
- width = this .lengthAttribute (xmlElement .getAttribute ("width"), viewBox [2]),
52624
- height = this .lengthAttribute (xmlElement .getAttribute ("height"), viewBox [3]);
52999
+ width = this .lengthAttribute (xmlElement .getAttribute ("width"), viewBox [2], "width"),
53000
+ height = this .lengthAttribute (xmlElement .getAttribute ("height"), viewBox [3], "height");
52625
53001
 
52626
53002
  if (true) // default
52627
53003
  {
52628
- // preserveAspectRatio="xMidYMid meet"
53004
+ // preserveAspectRatio = "xMidYMid meet"
52629
53005
 
52630
53006
  const
52631
53007
  r = width / height,
@@ -52744,10 +53120,10 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
52744
53120
  // Create Transform node.
52745
53121
 
52746
53122
  const
52747
- x = this .lengthAttribute (xmlElement .getAttribute ("x"), 0),
52748
- y = this .lengthAttribute (xmlElement .getAttribute ("y"), 0),
52749
- width = this .lengthAttribute (xmlElement .getAttribute ("width"), 0),
52750
- height = this .lengthAttribute (xmlElement .getAttribute ("height"), 0);
53123
+ x = this .lengthAttribute (xmlElement .getAttribute ("x"), 0, "width"),
53124
+ y = this .lengthAttribute (xmlElement .getAttribute ("y"), 0, "height"),
53125
+ width = this .lengthAttribute (xmlElement .getAttribute ("width"), 0, "width"),
53126
+ height = this .lengthAttribute (xmlElement .getAttribute ("height"), 0, "height");
52751
53127
 
52752
53128
  const transformNode = this .createTransform (xmlElement, new Numbers_Vector2 (x, y));
52753
53129
 
@@ -52755,8 +53131,9 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
52755
53131
 
52756
53132
  this .element (usedElement);
52757
53133
 
52758
- this .styles .pop ();
52759
- this .groupNodes .pop ();
53134
+ this .groupNodes .pop ();
53135
+ this .modelMatrix .pop ();
53136
+ this .styles .pop ();
52760
53137
 
52761
53138
  // Add node.
52762
53139
 
@@ -52779,8 +53156,9 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
52779
53156
 
52780
53157
  this .elements (xmlElement);
52781
53158
 
52782
- this .styles .pop ();
52783
- this .groupNodes .pop ();
53159
+ this .groupNodes .pop ();
53160
+ this .modelMatrix .pop ();
53161
+ this .styles .pop ();
52784
53162
 
52785
53163
  // Add node.
52786
53164
 
@@ -52809,8 +53187,9 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
52809
53187
 
52810
53188
  this .elements (xmlElement);
52811
53189
 
52812
- this .styles .pop ();
52813
- this .groupNodes .pop ();
53190
+ this .groupNodes .pop ();
53191
+ this .modelMatrix .pop ();
53192
+ this .styles .pop ();
52814
53193
 
52815
53194
  // Add node.
52816
53195
 
@@ -52851,75 +53230,119 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
52851
53230
 
52852
53231
  this .elements (xmlElement);
52853
53232
 
52854
- this .groupNodes .pop ();
52855
- this .styles .pop ();
53233
+ this .groupNodes .pop ();
53234
+ this .modelMatrix .pop ();
53235
+ this .styles .pop ();
52856
53236
 
52857
53237
  this .groupNodes .at (-1) .children .push (transformNode);
52858
53238
  },
52859
53239
  rectElement: function (xmlElement)
52860
53240
  {
52861
- // Determine style.
52862
-
52863
- if (!this .styleAttributes (xmlElement))
52864
- return;
52865
-
52866
53241
  // Create Transform node.
52867
53242
 
52868
53243
  const
52869
- x = this .lengthAttribute (xmlElement .getAttribute ("x"), 0),
52870
- y = this .lengthAttribute (xmlElement .getAttribute ("y"), 0),
52871
- width = this .lengthAttribute (xmlElement .getAttribute ("width"), 0),
52872
- height = this .lengthAttribute (xmlElement .getAttribute ("height"), 0);
53244
+ x = this .lengthAttribute (xmlElement .getAttribute ("x"), 0, "width"),
53245
+ y = this .lengthAttribute (xmlElement .getAttribute ("y"), 0, "height"),
53246
+ width = this .lengthAttribute (xmlElement .getAttribute ("width"), 0, "width"),
53247
+ height = this .lengthAttribute (xmlElement .getAttribute ("height"), 0, "height");
52873
53248
 
52874
- const
52875
- scene = this .getExecutionContext (),
52876
- size = new Numbers_Vector2 (width, height),
52877
- center = new Numbers_Vector2 (x + width / 2, y + height / 2),
52878
- bbox = new Geometry_Box2 (size, center),
52879
- transformNode = this .createTransform (xmlElement, center);
53249
+ let
53250
+ rx = Math .max (0, this .lengthAttribute (xmlElement .getAttribute ("rx"), 0, "width")),
53251
+ ry = Math .max (0, this .lengthAttribute (xmlElement .getAttribute ("ry"), 0, "height"));
52880
53252
 
52881
- this .groupNodes .push (transformNode);
53253
+ if (rx === 0 && ry === 0)
53254
+ {
53255
+ // Determine style.
52882
53256
 
52883
- // Create nodes.
53257
+ if (!this .styleAttributes (xmlElement))
53258
+ return;
53259
+
53260
+ // Create Transform node.
52884
53261
 
52885
- if (this .style .fillType !== "none")
52886
- {
52887
53262
  const
52888
- shapeNode = scene .createNode ("Shape"),
52889
- rectangleNode = scene .createNode ("Rectangle2D");
53263
+ scene = this .getExecutionContext (),
53264
+ size = new Numbers_Vector2 (width, height),
53265
+ center = new Numbers_Vector2 (x + width / 2, y + height / 2),
53266
+ bbox = new Geometry_Box2 (size, center),
53267
+ transformNode = this .createTransform (xmlElement, center);
52890
53268
 
52891
- shapeNode .appearance = this .createFillAppearance (bbox);
52892
- shapeNode .geometry = rectangleNode;
52893
- rectangleNode .solid = this .solid;
52894
- rectangleNode .size = size;
53269
+ this .groupNodes .push (transformNode);
52895
53270
 
52896
- transformNode .children .push (shapeNode);
52897
- }
53271
+ // Create nodes.
52898
53272
 
52899
- if (this .style .strokeType !== "none")
53273
+ if (this .style .fillType !== "none")
53274
+ {
53275
+ const
53276
+ shapeNode = scene .createNode ("Shape"),
53277
+ rectangleNode = scene .createNode ("Rectangle2D");
53278
+
53279
+ shapeNode .appearance = this .createFillAppearance (bbox);
53280
+ shapeNode .geometry = rectangleNode;
53281
+ rectangleNode .solid = this .solid;
53282
+ rectangleNode .size = size;
53283
+
53284
+ transformNode .children .push (shapeNode);
53285
+ }
53286
+
53287
+ if (this .style .strokeType !== "none")
53288
+ {
53289
+ const
53290
+ shapeNode = scene .createNode ("Shape"),
53291
+ polylineNode = scene .createNode ("Polyline2D"),
53292
+ width1_2 = width / 2,
53293
+ height1_2 = height / 2;
53294
+
53295
+ shapeNode .appearance = this .createStrokeAppearance ();
53296
+ shapeNode .geometry = polylineNode;
53297
+
53298
+ polylineNode .lineSegments = [ width1_2, height1_2,
53299
+ -width1_2, height1_2,
53300
+ -width1_2, -height1_2,
53301
+ width1_2, -height1_2,
53302
+ width1_2, height1_2];
53303
+
53304
+ transformNode .children .push (shapeNode);
53305
+ }
53306
+
53307
+ this .groupNodes .pop ();
53308
+ this .modelMatrix .pop ();
53309
+ this .styles .pop ();
53310
+
53311
+ this .groupNodes .at (-1) .children .push (transformNode);
53312
+ }
53313
+ else
52900
53314
  {
53315
+ // Create points.
53316
+
53317
+ if (rx && !ry) ry = rx;
53318
+ if (ry && !rx) rx = ry;
53319
+
53320
+ rx = Math .min (rx, width / 2);
53321
+ ry = Math .min (ry, height / 2);
53322
+
52901
53323
  const
52902
- shapeNode = scene .createNode ("Shape"),
52903
- polylineNode = scene .createNode ("Polyline2D"),
52904
- width1_2 = width / 2,
52905
- height1_2 = height / 2;
53324
+ xOffsets = [x + width - rx, x + rx , x + rx, x + width - rx],
53325
+ yOffsets = [y + height - ry, y + height - ry, y + ry, y + ry],
53326
+ points = Object .assign ([ ], { index: 0, closed: true });
52906
53327
 
52907
- shapeNode .appearance = this .createStrokeAppearance ();
52908
- shapeNode .geometry = polylineNode;
53328
+ for (let c = 0; c < 4; ++ c)
53329
+ {
53330
+ const s = c * Math .PI / 2;
52909
53331
 
52910
- polylineNode .lineSegments = [ width1_2, height1_2,
52911
- -width1_2, height1_2,
52912
- -width1_2, -height1_2,
52913
- width1_2, -height1_2,
52914
- width1_2, height1_2];
53332
+ for (let i = 0, N = this .CIRCLE_STEPS / 4; i < N; ++ i)
53333
+ {
53334
+ const p = Numbers_Complex.Polar (1, s + Math .PI / 2 * i / (N - 1));
52915
53335
 
52916
- transformNode .children .push (shapeNode);
52917
- }
53336
+ points .push (new Numbers_Vector3 (xOffsets [c] + p .real * rx, yOffsets [c] + p .imag * ry, 0));
53337
+ }
53338
+ }
52918
53339
 
52919
- this .groupNodes .pop ();
52920
- this .styles .pop ();
53340
+ points .pop ();
52921
53341
 
52922
- this .groupNodes .at (-1) .children .push (transformNode);
53342
+ // Create nodes.
53343
+
53344
+ this .pathLikeElement (xmlElement, [points]);
53345
+ }
52923
53346
  },
52924
53347
  circleElement: function (xmlElement)
52925
53348
  {
@@ -52931,8 +53354,8 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
52931
53354
  // Create Transform node.
52932
53355
 
52933
53356
  const
52934
- cx = this .lengthAttribute (xmlElement .getAttribute ("cx"), 0),
52935
- cy = this .lengthAttribute (xmlElement .getAttribute ("cy"), 0),
53357
+ cx = this .lengthAttribute (xmlElement .getAttribute ("cx"), 0, "width"),
53358
+ cy = this .lengthAttribute (xmlElement .getAttribute ("cy"), 0, "height"),
52936
53359
  r = this .lengthAttribute (xmlElement .getAttribute ("r"), 0);
52937
53360
 
52938
53361
  const
@@ -52971,8 +53394,9 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
52971
53394
  transformNode .children .push (shapeNode);
52972
53395
  }
52973
53396
 
52974
- this .groupNodes .pop ();
52975
- this .styles .pop ();
53397
+ this .groupNodes .pop ();
53398
+ this .modelMatrix .pop ();
53399
+ this .styles .pop ();
52976
53400
 
52977
53401
  this .groupNodes .at (-1) .children .push (transformNode);
52978
53402
  },
@@ -52986,10 +53410,10 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
52986
53410
  // Create Transform node.
52987
53411
 
52988
53412
  const
52989
- cx = this .lengthAttribute (xmlElement .getAttribute ("cx"), 0),
52990
- cy = this .lengthAttribute (xmlElement .getAttribute ("cy"), 0),
52991
- rx = this .lengthAttribute (xmlElement .getAttribute ("rx"), 0),
52992
- ry = this .lengthAttribute (xmlElement .getAttribute ("ry"), 0);
53413
+ cx = this .lengthAttribute (xmlElement .getAttribute ("cx"), 0, "width"),
53414
+ cy = this .lengthAttribute (xmlElement .getAttribute ("cy"), 0, "height"),
53415
+ rx = this .lengthAttribute (xmlElement .getAttribute ("rx"), 0, "width"),
53416
+ ry = this .lengthAttribute (xmlElement .getAttribute ("ry"), 0, "height");
52993
53417
 
52994
53418
  const
52995
53419
  scene = this .getExecutionContext (),
@@ -53028,8 +53452,9 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53028
53452
  transformNode .children .push (shapeNode);
53029
53453
  }
53030
53454
 
53031
- this .groupNodes .pop ();
53032
- this .styles .pop ();
53455
+ this .groupNodes .pop ();
53456
+ this .modelMatrix .pop ();
53457
+ this .styles .pop ();
53033
53458
 
53034
53459
  this .groupNodes .at (-1) .children .push (transformNode);
53035
53460
  },
@@ -53039,13 +53464,18 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53039
53464
  },
53040
53465
  imageElement: function (xmlElement)
53041
53466
  {
53467
+ // Determine style.
53468
+
53469
+ if (!this .styleAttributes (xmlElement))
53470
+ return;
53471
+
53042
53472
  // Create Transform node.
53043
53473
 
53044
53474
  const
53045
- x = this .lengthAttribute (xmlElement .getAttribute ("x"), 0),
53046
- y = this .lengthAttribute (xmlElement .getAttribute ("y"), 0),
53047
- width = this .lengthAttribute (xmlElement .getAttribute ("width"), 0),
53048
- height = this .lengthAttribute (xmlElement .getAttribute ("height"), 0),
53475
+ x = this .lengthAttribute (xmlElement .getAttribute ("x"), 0, "width"),
53476
+ y = this .lengthAttribute (xmlElement .getAttribute ("y"), 0, "height"),
53477
+ width = this .lengthAttribute (xmlElement .getAttribute ("width"), 0, "width"),
53478
+ height = this .lengthAttribute (xmlElement .getAttribute ("height"), 0, "height"),
53049
53479
  href = xmlElement .getAttribute ("xlink:href");
53050
53480
 
53051
53481
  const
@@ -53072,74 +53502,37 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53072
53502
 
53073
53503
  transformNode .children .push (shapeNode);
53074
53504
 
53075
- this .groupNodes .pop ();
53505
+ this .groupNodes .pop ();
53506
+ this .modelMatrix .pop ();
53507
+ this .styles .pop ();
53508
+
53076
53509
  this .groupNodes .at (-1) .children .push (transformNode);
53077
53510
  },
53078
- polylineElement: function (xmlElement, closed = false)
53511
+ polylineElement: function (xmlElement)
53079
53512
  {
53513
+ // Get points.
53514
+
53080
53515
  const points = Object .assign ([ ], { index: 0 });
53081
53516
 
53082
53517
  if (!this .pointsAttribute (xmlElement .getAttribute ("points"), points))
53083
53518
  return;
53084
53519
 
53085
- // Determine style.
53086
-
53087
- if (!this .styleAttributes (xmlElement))
53088
- return;
53089
-
53090
- // Create Transform node.
53091
-
53092
- const
53093
- scene = this .getExecutionContext (),
53094
- transformNode = this .createTransform (xmlElement),
53095
- bbox = new Geometry_Box2 (Numbers_Vector2.min (... points), Numbers_Vector2.max (... points), true);
53096
-
53097
- this .groupNodes .push (transformNode);
53098
-
53099
53520
  // Create nodes.
53100
53521
 
53101
- const coordinateNode = scene .createNode ("Coordinate");
53102
-
53103
- coordinateNode .point .push (... points);
53104
-
53105
- if (this .style .fillType !== "none")
53106
- {
53107
- const
53108
- shapeNode = scene .createNode ("Shape"),
53109
- geometryNode = scene .createNode ("IndexedTriangleSet");
53110
-
53111
- shapeNode .appearance = this .createFillAppearance (bbox);
53112
- shapeNode .geometry = geometryNode;
53113
- geometryNode .solid = this .solid;
53114
- geometryNode .index = this .triangulatePolygon ([points], coordinateNode);
53115
- geometryNode .texCoord = this .createTextureCoordinate (coordinateNode, bbox);
53116
- geometryNode .coord = coordinateNode;
53117
-
53118
- transformNode .children .push (shapeNode);
53119
- }
53120
-
53121
- if (this .style .strokeType !== "none")
53122
- {
53123
- const
53124
- shapeNode = scene .createNode ("Shape"),
53125
- geometryNode = scene .createNode ("IndexedLineSet");
53522
+ this .pathLikeElement (xmlElement, [points]);
53523
+ },
53524
+ polygonElement: function (xmlElement)
53525
+ {
53526
+ // Get points.
53126
53527
 
53127
- shapeNode .appearance = this .createStrokeAppearance ();
53128
- shapeNode .geometry = geometryNode;
53129
- geometryNode .coordIndex = [... points .keys (), ... (closed ? [points [0]] : [ ]), -1];
53130
- geometryNode .coord = coordinateNode;
53528
+ const points = Object .assign ([ ], { index: 0, closed: true });
53131
53529
 
53132
- transformNode .children .push (shapeNode);
53133
- }
53530
+ if (!this .pointsAttribute (xmlElement .getAttribute ("points"), points))
53531
+ return;
53134
53532
 
53135
- this .groupNodes .pop ();
53136
- this .styles .pop ();
53533
+ // Create nodes.
53137
53534
 
53138
- this .groupNodes .at (-1) .children .push (transformNode);
53139
- },
53140
- polygonElement: function (xmlElement)
53141
- {
53142
- this .polylineElement (xmlElement, true);
53535
+ this .pathLikeElement (xmlElement, [points]);
53143
53536
  },
53144
53537
  pathElement: function (xmlElement)
53145
53538
  {
@@ -53150,6 +53543,12 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53150
53543
  if (!this .dAttribute (xmlElement .getAttribute ("d"), contours))
53151
53544
  return;
53152
53545
 
53546
+ // Create nodes.
53547
+
53548
+ this .pathLikeElement (xmlElement, contours);
53549
+ },
53550
+ pathLikeElement: function (xmlElement, contours)
53551
+ {
53153
53552
  // Determine style.
53154
53553
 
53155
53554
  if (!this .styleAttributes (xmlElement))
@@ -53196,41 +53595,43 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53196
53595
  shapeNode = scene .createNode ("Shape"),
53197
53596
  geometryNode = scene .createNode ("IndexedLineSet");
53198
53597
 
53199
- shapeNode .appearance = this .createStrokeAppearance ();
53200
- shapeNode .geometry = geometryNode;
53201
- geometryNode .coord = coordinateNode;
53598
+ shapeNode .appearance = this .createStrokeAppearance ();
53599
+ shapeNode .geometry = geometryNode;
53600
+ geometryNode .coord = coordinateNode;
53601
+
53602
+ // Create contour indices.
53603
+
53604
+ const indices = geometryNode .coordIndex;
53202
53605
 
53203
53606
  for (const points of contours)
53204
53607
  {
53205
53608
  for (const i of points .keys ())
53206
- geometryNode .coordIndex .push (points .index + i);
53609
+ indices .push (points .index + i);
53207
53610
 
53208
53611
  if (points .closed)
53209
- geometryNode .coordIndex .push (points .index);
53612
+ indices .push (points .index);
53210
53613
 
53211
- geometryNode .coordIndex .push (-1);
53614
+ indices .push (-1);
53212
53615
  }
53213
53616
 
53214
53617
  transformNode .children .push (shapeNode);
53215
53618
  }
53216
53619
 
53217
- this .groupNodes .pop ();
53218
- this .styles .pop ();
53620
+ this .groupNodes .pop ();
53621
+ this .modelMatrix .pop ();
53622
+ this .styles .pop ();
53219
53623
 
53220
53624
  this .groupNodes .at (-1) .children .push (transformNode);
53221
53625
  },
53222
- linearGradientElementURL: function (xmlElement, bbox)
53626
+ linearGradientElementUrl: function (xmlElement, bbox)
53223
53627
  {
53224
53628
  const
53225
- g = this .linearGradientElement (xmlElement, { stops: [ ] }),
53629
+ g = this .linearGradientElement (xmlElement, bbox, { stops: [ ] }),
53226
53630
  gradient = this .context .createLinearGradient (g .x1, g .y1, g .x2, g .y2);
53227
53631
 
53228
- for (const [o, c, a] of g .stops)
53229
- gradient .addColorStop (o, `rgba(${c .r * 255},${c .g * 255},${c .b * 255},${a})`);
53230
-
53231
53632
  return this .drawGradient (gradient, g, bbox);
53232
53633
  },
53233
- linearGradientElement: function (xmlElement, gradient)
53634
+ linearGradientElement: function (xmlElement, bbox, gradient)
53234
53635
  {
53235
53636
  if (xmlElement .nodeName !== "linearGradient")
53236
53637
  return;
@@ -53240,17 +53641,29 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53240
53641
  const refElement = this .hrefAttribute (xmlElement .getAttribute ("xlink:href"));
53241
53642
 
53242
53643
  if (refElement)
53243
- this .gradientElement (refElement, gradient);
53644
+ this .gradientElement (refElement, bbox, gradient);
53244
53645
 
53245
53646
  // Attributes
53246
53647
 
53247
- gradient .x1 = this .lengthAttribute (xmlElement .getAttribute ("x1"), gradient .x1 || 0);
53248
- gradient .y1 = this .lengthAttribute (xmlElement .getAttribute ("y1"), gradient .y1 || 0);
53249
- gradient .x2 = this .lengthAttribute (xmlElement .getAttribute ("x2"), gradient .x2 || 1);
53250
- gradient .y2 = this .lengthAttribute (xmlElement .getAttribute ("y2"), gradient .y2 || 0);
53648
+ gradient .x1 = this .lengthAttribute (xmlElement .getAttribute ("x1"), gradient .x1 || 0, "width");
53649
+ gradient .y1 = this .lengthAttribute (xmlElement .getAttribute ("y1"), gradient .y1 || 0, "height");
53650
+ gradient .x2 = this .lengthAttribute (xmlElement .getAttribute ("x2"), gradient .x2 || 1, "width");
53651
+ gradient .y2 = this .lengthAttribute (xmlElement .getAttribute ("y2"), gradient .y2 || 0, "height");
53251
53652
  gradient .units = xmlElement .getAttribute ("gradientUnits") || "objectBoundingBox";
53252
53653
  gradient .transform = this .transformAttribute (xmlElement .getAttribute ("gradientTransform"));
53253
53654
 
53655
+ // Spread matrix
53656
+
53657
+ const
53658
+ s = new Numbers_Matrix3 (),
53659
+ c = new Numbers_Vector2 (gradient .x1, gradient .y1);
53660
+
53661
+ s .translate (c);
53662
+ s .scale (new Numbers_Vector2 (SPREAD, SPREAD));
53663
+ s .translate (c .negate ());
53664
+
53665
+ gradient .spreadMatrix = s;
53666
+
53254
53667
  // Stops
53255
53668
 
53256
53669
  for (const childNode of xmlElement .childNodes)
@@ -53258,38 +53671,47 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53258
53671
 
53259
53672
  return gradient;
53260
53673
  },
53261
- radialGradientElementURL: function (xmlElement, bbox)
53674
+ radialGradientElementUrl: function (xmlElement, bbox)
53262
53675
  {
53263
53676
  const
53264
- g = this .radialGradientElement (xmlElement, { stops: [ ] }),
53677
+ g = this .radialGradientElement (xmlElement, bbox, { stops: [ ] }),
53265
53678
  gradient = this .context .createRadialGradient (g .fx, g .fy, g. fr, g .cx, g .cy, g .r);
53266
53679
 
53267
- for (const [o, c, a] of g .stops)
53268
- gradient .addColorStop (o, `rgba(${c .r * 255},${c .g * 255},${c .b * 255},${a})`);
53269
-
53270
53680
  return this .drawGradient (gradient, g, bbox);
53271
53681
  },
53272
- radialGradientElement: function (xmlElement, gradient)
53682
+ radialGradientElement: function (xmlElement, bbox, gradient)
53273
53683
  {
53274
53684
  // Attribute xlink:href
53275
53685
 
53276
53686
  const refElement = this .hrefAttribute (xmlElement .getAttribute ("xlink:href"));
53277
53687
 
53278
53688
  if (refElement)
53279
- this .gradientElement (refElement, gradient);
53689
+ this .gradientElement (refElement, bbox, gradient);
53280
53690
 
53281
53691
  // Attributes
53282
53692
 
53283
- gradient .cx = this .lengthAttribute (xmlElement .getAttribute ("cx"), gradient .cx || 0.5),
53284
- gradient .cy = this .lengthAttribute (xmlElement .getAttribute ("cy"), gradient .cy || 0.5),
53693
+ gradient .cx = this .lengthAttribute (xmlElement .getAttribute ("cx"), gradient .cx || 0.5, "width"),
53694
+ gradient .cy = this .lengthAttribute (xmlElement .getAttribute ("cy"), gradient .cy || 0.5, "height"),
53285
53695
  gradient .r = this .lengthAttribute (xmlElement .getAttribute ("r"), gradient .r || 0.5),
53286
- gradient .fx = this .lengthAttribute (xmlElement .getAttribute ("fx"), gradient .fx || gradient .cx),
53287
- gradient .fy = this .lengthAttribute (xmlElement .getAttribute ("fy"), gradient .fy || gradient .cy),
53696
+ gradient .fx = this .lengthAttribute (xmlElement .getAttribute ("fx"), gradient .fx || gradient .cx, "width"),
53697
+ gradient .fy = this .lengthAttribute (xmlElement .getAttribute ("fy"), gradient .fy || gradient .cy, "height"),
53288
53698
  gradient .fr = this .lengthAttribute (xmlElement .getAttribute ("fr"), gradient .fr || 0),
53289
53699
  gradient .units = xmlElement .getAttribute ("gradientUnits") || "objectBoundingBox";
53290
53700
  gradient .spreadMethod = xmlElement .getAttribute ("spreadMethod");
53291
53701
  gradient .transform = this .transformAttribute (xmlElement .getAttribute ("gradientTransform"));
53292
53702
 
53703
+ // Spread matrix
53704
+
53705
+ const
53706
+ s = new Numbers_Matrix3 (),
53707
+ c = new Numbers_Vector2 (gradient .fx, gradient .fy);
53708
+
53709
+ s .translate (c);
53710
+ s .scale (new Numbers_Vector2 (SPREAD, SPREAD));
53711
+ s .translate (c .negate ());
53712
+
53713
+ gradient .spreadMatrix = s;
53714
+
53293
53715
  // Stops
53294
53716
 
53295
53717
  for (const childNode of xmlElement .childNodes)
@@ -53297,7 +53719,7 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53297
53719
 
53298
53720
  return gradient;
53299
53721
  },
53300
- gradientElement: function (xmlElement, gradient)
53722
+ gradientElement: function (xmlElement, bbox, gradient)
53301
53723
  {
53302
53724
  if (!xmlElement)
53303
53725
  return;
@@ -53305,9 +53727,9 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53305
53727
  switch (xmlElement .nodeName)
53306
53728
  {
53307
53729
  case "linearGradient":
53308
- return this .linearGradientElement (xmlElement, gradient);
53730
+ return this .linearGradientElement (xmlElement, bbox, gradient);
53309
53731
  case "radialGradient":
53310
- return this .radialGradientElement (xmlElement, gradient);
53732
+ return this .radialGradientElement (xmlElement, bbox, gradient);
53311
53733
  }
53312
53734
  },
53313
53735
  gradientChild: function (xmlElement, gradient)
@@ -53322,6 +53744,9 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53322
53744
 
53323
53745
  const offset = this .percentAttribute (xmlElement .getAttribute ("offset"), 0);
53324
53746
 
53747
+ if (offset < 0 || offset > 1)
53748
+ return;
53749
+
53325
53750
  const { stopColor, stopOpacity } = this .style;
53326
53751
 
53327
53752
  gradient .stops .push ([offset, stopColor, stopOpacity]);
@@ -53330,9 +53755,54 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53330
53755
  },
53331
53756
  drawGradient: function (gradient, g, bbox)
53332
53757
  {
53758
+ // Add color stops.
53759
+
53760
+ const spreadMatrix = new Numbers_Matrix3 ();
53761
+
53762
+ switch (g .spreadMethod)
53763
+ {
53764
+ default: // pad
53765
+ {
53766
+ for (const [o, c, a] of g .stops)
53767
+ gradient .addColorStop (o, this .css (c, a));
53768
+
53769
+ break;
53770
+ }
53771
+ case "repeat":
53772
+ {
53773
+ spreadMatrix .assign (g .spreadMatrix);
53774
+
53775
+ for (let i = 0; i < SPREAD; ++ i)
53776
+ {
53777
+ const s = i / SPREAD;
53778
+
53779
+ for (const [o, c, a] of g .stops)
53780
+ gradient .addColorStop (s + o / SPREAD, this .css (c, a));
53781
+ }
53782
+
53783
+ break;
53784
+ }
53785
+ case "reflect":
53786
+ {
53787
+ spreadMatrix .assign (g .spreadMatrix);
53788
+
53789
+ for (let i = 0; i < SPREAD; ++ i)
53790
+ {
53791
+ const s = i / SPREAD;
53792
+
53793
+ for (const [o, c, a] of g .stops)
53794
+ gradient .addColorStop (s + (i % 2 ? 1 - o : o) / SPREAD, this .css (c, a));
53795
+ }
53796
+
53797
+ break;
53798
+ }
53799
+ }
53800
+
53801
+ // Create Matrix.
53802
+
53333
53803
  const m = new Numbers_Matrix3 ();
53334
53804
 
53335
- m .scale (new Numbers_Vector2 (GRADIENT_SIZE / 2, GRADIENT_SIZE / 2));
53805
+ m .scale (new Numbers_Vector2 (this .GRADIENT_SIZE / 2, this .GRADIENT_SIZE / 2));
53336
53806
  m .translate (Numbers_Vector2.One);
53337
53807
  m .scale (new Numbers_Vector2 (1, -1));
53338
53808
 
@@ -53342,6 +53812,7 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53342
53812
  m .multLeft (new Numbers_Matrix3 (2, 0, 0, 0, 2, 0, -1, -1, 1));
53343
53813
 
53344
53814
  m .multLeft (g .transform);
53815
+ m .multLeft (spreadMatrix);
53345
53816
 
53346
53817
  // Paint.
53347
53818
 
@@ -53349,8 +53820,8 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53349
53820
 
53350
53821
  cx .fillStyle = gradient;
53351
53822
  cx .save ();
53352
- cx .clearRect (0, 0, GRADIENT_SIZE, GRADIENT_SIZE);
53353
- cx .rect (0, 0, GRADIENT_SIZE, GRADIENT_SIZE);
53823
+ cx .clearRect (0, 0, this .GRADIENT_SIZE, this .GRADIENT_SIZE);
53824
+ cx .rect (0, 0, this .GRADIENT_SIZE, this .GRADIENT_SIZE);
53354
53825
  cx .transform (m [0], m [1], m [3], m [4], m [6], m [7]);
53355
53826
  cx .fill ();
53356
53827
  cx .restore ();
@@ -53358,6 +53829,10 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53358
53829
  // Use PNG because image can have alpha channel.
53359
53830
  return this .canvas .toDataURL ("image/png");
53360
53831
  },
53832
+ patternUrl: function (xmlElement)
53833
+ {
53834
+ //console .debug ("pattern");
53835
+ },
53361
53836
  idAttribute: function (attribute, node)
53362
53837
  {
53363
53838
  if (attribute === null)
@@ -53412,7 +53887,7 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53412
53887
 
53413
53888
  return this .document .getElementById (hash);
53414
53889
  },
53415
- lengthAttribute: function (attribute, defaultValue)
53890
+ lengthAttribute: function (attribute, defaultValue, percent)
53416
53891
  {
53417
53892
  // Returns length in pixel.
53418
53893
 
@@ -53455,6 +53930,23 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53455
53930
  case "pc":
53456
53931
  value *= PICA / PIXEL;
53457
53932
  break;
53933
+ case "%":
53934
+ {
53935
+ switch (percent)
53936
+ {
53937
+ case "width":
53938
+ value *= this .viewBox [2] / 100;
53939
+ break;
53940
+ case "height":
53941
+ value *= this .viewBox [3] / 100;
53942
+ break;
53943
+ default:
53944
+ value *= Math .hypot (this .viewBox [2], this .viewBox [3]) / 100;
53945
+ break;
53946
+ }
53947
+
53948
+ break;
53949
+ }
53458
53950
  }
53459
53951
  }
53460
53952
 
@@ -53720,7 +54212,7 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53720
54212
  y += ay;
53721
54213
  }
53722
54214
 
53723
- Algorithms_Bezier.quadric (ax, ay, 0, x1, y1, 0, x, y, 0, BEZIER_STEPS, points);
54215
+ Algorithms_Bezier.quadric (ax, ay, 0, x1, y1, 0, x, y, 0, this .BEZIER_STEPS, points);
53724
54216
 
53725
54217
  ax = x;
53726
54218
  ay = y;
@@ -53781,7 +54273,7 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53781
54273
  }
53782
54274
  }
53783
54275
 
53784
- Algorithms_Bezier.quadric (ax, ay, 0, x1, y1, 0, x, y, 0, BEZIER_STEPS, points);
54276
+ Algorithms_Bezier.quadric (ax, ay, 0, x1, y1, 0, x, y, 0, this .BEZIER_STEPS, points);
53785
54277
 
53786
54278
  ax = x;
53787
54279
  ay = y;
@@ -53847,7 +54339,7 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53847
54339
  y += ay;
53848
54340
  }
53849
54341
 
53850
- Algorithms_Bezier.cubic (ax, ay, 0, x1, y1, 0, x2, y2, 0, x, y, 0, BEZIER_STEPS, points);
54342
+ Algorithms_Bezier.cubic (ax, ay, 0, x1, y1, 0, x2, y2, 0, x, y, 0, this .BEZIER_STEPS, points);
53851
54343
 
53852
54344
  ax = x;
53853
54345
  ay = y;
@@ -53924,7 +54416,7 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53924
54416
  }
53925
54417
  }
53926
54418
 
53927
- Algorithms_Bezier.cubic (ax, ay, 0, x1, y1, 0, x2, y2, 0, x, y, 0, BEZIER_STEPS, points);
54419
+ Algorithms_Bezier.cubic (ax, ay, 0, x1, y1, 0, x2, y2, 0, x, y, 0, this .BEZIER_STEPS, points);
53928
54420
 
53929
54421
  ax = x;
53930
54422
  ay = y;
@@ -53996,7 +54488,7 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
53996
54488
  y += ay;
53997
54489
  }
53998
54490
 
53999
- Algorithms_Bezier.arc (ax, ay, rx, ry, xAxisRotation, largeArcFlag, sweepFlag, x, y, CIRCLE_STEPS, points);
54491
+ Algorithms_Bezier.arc (ax, ay, rx, ry, xAxisRotation, largeArcFlag, sweepFlag, x, y, this .CIRCLE_STEPS, points);
54000
54492
 
54001
54493
  ax = x;
54002
54494
  ay = y;
@@ -54278,45 +54770,24 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
54278
54770
 
54279
54771
  return matrix;
54280
54772
  },
54281
- styleAttributes: (function ()
54282
- {
54283
- const Styles = [
54284
- "display",
54285
- "fill",
54286
- "fill-opacity",
54287
- "fill-rule",
54288
- "stroke",
54289
- "stroke-opacity",
54290
- "stroke-width",
54291
- "opacity",
54292
- "stop-color",
54293
- "stop-opacity",
54294
- "vector-effect",
54295
- ];
54296
-
54297
- return function (xmlElement)
54298
- {
54299
- const style = Object .assign ({ }, this .styles [0]);
54300
-
54301
- if (this .style .display === "none")
54302
- return false;
54773
+ styleAttributes: function (xmlElement)
54774
+ {
54775
+ const style = Object .assign ({ }, this .styles [0]);
54303
54776
 
54304
- this .styles .push (style);
54777
+ if (this .style .display === "none")
54778
+ return false;
54305
54779
 
54306
- for (const style of Styles)
54307
- {
54308
- const attribute = xmlElement .getAttribute (style);
54780
+ this .styles .push (style);
54309
54781
 
54310
- this .parseStyle (style, attribute ?? "default");
54311
- }
54782
+ for (const attribute of xmlElement .attributes)
54783
+ this .parseStyle (attribute .name, attribute .value)
54312
54784
 
54313
- // Style attribute has higher precedence.
54785
+ // Style attribute has higher precedence.
54314
54786
 
54315
- this .styleAttribute (xmlElement .getAttribute ("style"));
54787
+ this .styleAttribute (xmlElement .getAttribute ("style"));
54316
54788
 
54317
- return true;
54318
- };
54319
- })(),
54789
+ return true;
54790
+ },
54320
54791
  styleAttribute: function (attribute)
54321
54792
  {
54322
54793
  if (attribute === null)
@@ -54408,13 +54879,13 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
54408
54879
 
54409
54880
  if (value === "none")
54410
54881
  {
54411
- this .style .fillType ="none";
54882
+ this .style .fillType = "none";
54412
54883
  return;
54413
54884
  }
54414
54885
 
54415
54886
  if (!value .match (/^(?:inherit|unset|default)$/))
54416
54887
  {
54417
- if (this .colorValue ())
54888
+ if (this .colorValue (this .styles .at (-1) .fillColor))
54418
54889
  {
54419
54890
  this .style .fillType = "COLOR";
54420
54891
  this .style .fillColor = this .value .copy ();
@@ -54467,13 +54938,13 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
54467
54938
 
54468
54939
  if (value === "none")
54469
54940
  {
54470
- this .style .strokeType ="none";
54941
+ this .style .strokeType = "none";
54471
54942
  return;
54472
54943
  }
54473
54944
 
54474
54945
  if (!value .match (/^(?:inherit|unset|default)$/))
54475
54946
  {
54476
- if (this .colorValue ())
54947
+ if (this .colorValue (this .styles .at (-1) .strokeColor))
54477
54948
  {
54478
54949
  this .style .strokeType = "COLOR";
54479
54950
  this .style .strokeColor = this .value .copy ();
@@ -54509,7 +54980,7 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
54509
54980
  {
54510
54981
  if (this .double ())
54511
54982
  {
54512
- this .style .strokeWidth = this .lengthAttribute (this .value);
54983
+ this .style .strokeWidth = this .lengthAttribute (this .value, 1);
54513
54984
  return;
54514
54985
  }
54515
54986
 
@@ -54539,7 +55010,7 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
54539
55010
  },
54540
55011
  stopColorStyle: function (value)
54541
55012
  {
54542
- if (this .colorValue ())
55013
+ if (this .colorValue (Numbers_Color4.Black))
54543
55014
  {
54544
55015
  this .style .stopColor = this .value .copy ();
54545
55016
  return;
@@ -54625,12 +55096,14 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
54625
55096
  {
54626
55097
  const color = new Numbers_Color4 (0, 0, 0, 0);
54627
55098
 
54628
- return function ()
55099
+ return function (c)
54629
55100
  {
54630
55101
  if (!SVGParser_Grammar .color .parse (this))
54631
55102
  return false;
54632
55103
 
54633
- this .value = color .set (... this .convertColor (this .result [1]));
55104
+ const defaultColor = this .css (c);
55105
+
55106
+ this .value = color .set (... this .convertColor (this .result [1], defaultColor));
54634
55107
 
54635
55108
  return true;
54636
55109
  };
@@ -54639,13 +55112,20 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
54639
55112
  {
54640
55113
  return SVGParser_Grammar .url .parse (this);
54641
55114
  },
55115
+ css: function (c, a = c .a)
55116
+ {
55117
+ return `rgba(${c .r * 255},${c .g * 255},${c .b * 255},${a})`;
55118
+ },
54642
55119
  createTransform: function (xmlElement, t = Numbers_Vector2.Zero, s = Numbers_Vector2.One)
54643
55120
  {
54644
55121
  // Determine matrix.
54645
55122
 
54646
55123
  const
54647
- scene = this .getExecutionContext (),
54648
- m = this .transformAttribute (xmlElement .getAttribute ("transform"));
55124
+ scene = this .getExecutionContext (),
55125
+ m = this .transformAttribute (xmlElement .getAttribute ("transform"));
55126
+
55127
+ this .modelMatrix .push ();
55128
+ this .modelMatrix .multLeft (Numbers_Matrix4.Matrix3 (m));
54649
55129
 
54650
55130
  m .translate (t);
54651
55131
  m .scale (s);
@@ -54654,7 +55134,7 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
54654
55134
 
54655
55135
  const
54656
55136
  transformNode = scene .createNode ("Transform"),
54657
- matrix = new Numbers_Matrix4 (m [0], m [1], 0, 0, m [3], m [4], 0, 0, 0, 0, 1, 0, m [6], m [7], 0, 1),
55137
+ matrix = Numbers_Matrix4.Matrix3 (m),
54658
55138
  translation = new Numbers_Vector3 (0, 0, 0),
54659
55139
  rotation = new Numbers_Rotation4 (),
54660
55140
  scale = new Numbers_Vector3 (1, 1, 1),
@@ -54733,10 +55213,13 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
54733
55213
  switch (xmlElement .nodeName)
54734
55214
  {
54735
55215
  case "linearGradient":
54736
- return this .linearGradientElementURL (xmlElement, bbox);
55216
+ return this .linearGradientElementUrl (xmlElement, bbox);
54737
55217
 
54738
55218
  case "radialGradient":
54739
- return this .radialGradientElementURL (xmlElement, bbox);
55219
+ return this .radialGradientElementUrl (xmlElement, bbox);
55220
+
55221
+ case "pattern":
55222
+ return this .patternUrl (xmlElement);
54740
55223
  }
54741
55224
  },
54742
55225
  createStrokeAppearance: function ()
@@ -54755,23 +55238,39 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
54755
55238
  : this .getStokeWidth ();
54756
55239
 
54757
55240
  if (strokeWidth > 1)
54758
- {
54759
- const lineProperties = scene .createNode ("LineProperties");
54760
-
54761
- appearanceNode .lineProperties = lineProperties;
54762
- lineProperties .linewidthScaleFactor = strokeWidth;
54763
- }
55241
+ appearanceNode .lineProperties = this .getLineProperties (strokeWidth);
54764
55242
 
54765
55243
  return appearanceNode;
54766
55244
  },
54767
55245
  getStokeWidth: function ()
54768
55246
  {
54769
55247
  const
54770
- modelMatrix = this .getModelMatrix (),
55248
+ modelMatrix = this .modelMatrix .get (),
54771
55249
  strokeWidth = modelMatrix .multDirMatrix (new Numbers_Vector3 (this .style .strokeWidth, this .style .strokeWidth, 0));
54772
55250
 
54773
55251
  return (strokeWidth .x + strokeWidth .y) / 2;
54774
55252
  },
55253
+ getLineProperties: function (strokeWidth)
55254
+ {
55255
+ const lineProperties = this .lineProperties .get (strokeWidth);
55256
+
55257
+ if (lineProperties)
55258
+ {
55259
+ return lineProperties;
55260
+ }
55261
+ else
55262
+ {
55263
+ const
55264
+ scene = this .getExecutionContext (),
55265
+ lineProperties = scene .createNode ("LineProperties");
55266
+
55267
+ lineProperties .linewidthScaleFactor = strokeWidth;
55268
+
55269
+ this .lineProperties .set (strokeWidth, lineProperties);
55270
+
55271
+ return lineProperties;
55272
+ }
55273
+ },
54775
55274
  createTextureProperties: function ()
54776
55275
  {
54777
55276
  const
@@ -54800,26 +55299,6 @@ SVGParser .prototype = Object .assign (Object .create (Parser_X3DParser.prototyp
54800
55299
 
54801
55300
  return texCoordNode;
54802
55301
  },
54803
- getModelMatrix: function ()
54804
- {
54805
- const modelMatrix = new Numbers_Matrix4 ();
54806
-
54807
- for (let i = 1; i < this .groupNodes .length; ++ i)
54808
- {
54809
- const
54810
- node = this .groupNodes [i],
54811
- matrix = new Numbers_Matrix4 ();
54812
-
54813
- matrix .set (node .translation .getValue (),
54814
- node .rotation .getValue (),
54815
- node .scale .getValue (),
54816
- node .scaleOrientation .getValue ());
54817
-
54818
- modelMatrix .multLeft (matrix);
54819
- }
54820
-
54821
- return modelMatrix;
54822
- },
54823
55302
  createTesselator: function ()
54824
55303
  {
54825
55304
  // Function called for each vertex of tessellator output.
@@ -54889,7 +55368,7 @@ const SVGParser_default_ = SVGParser;
54889
55368
  x_ite_Namespace.set ("x_ite/Parser/SVGParser", SVGParser_default_);
54890
55369
  /* harmony default export */ const Parser_SVGParser = (SVGParser_default_);
54891
55370
  ;// CONCATENATED MODULE: ./src/x_ite/Parser/GoldenGate.js
54892
- /* provided dependency */ var GoldenGate_$ = __webpack_require__(769);
55371
+ /* provided dependency */ var GoldenGate_$ = __webpack_require__(908);
54893
55372
  /*******************************************************************************
54894
55373
  *
54895
55374
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -56431,125 +56910,6 @@ const Line3_default_ = Line3;
56431
56910
 
56432
56911
  x_ite_Namespace.set ("standard/Math/Geometry/Line3", Line3_default_);
56433
56912
  /* harmony default export */ const Geometry_Line3 = (Line3_default_);
56434
- ;// CONCATENATED MODULE: ./src/standard/Math/Utility/MatrixStack.js
56435
- /*******************************************************************************
56436
- *
56437
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
56438
- *
56439
- * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
56440
- *
56441
- * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
56442
- *
56443
- * The copyright notice above does not evidence any actual of intended
56444
- * publication of such source code, and is an unpublished work by create3000.
56445
- * This material contains CONFIDENTIAL INFORMATION that is the property of
56446
- * create3000.
56447
- *
56448
- * No permission is granted to copy, distribute, or create derivative works from
56449
- * the contents of this software, in whole or in part, without the prior written
56450
- * permission of create3000.
56451
- *
56452
- * NON-MILITARY USE ONLY
56453
- *
56454
- * All create3000 software are effectively free software with a non-military use
56455
- * restriction. It is free. Well commented source is provided. You may reuse the
56456
- * source in any way you please with the exception anything that uses it must be
56457
- * marked to indicate is contains 'non-military use only' components.
56458
- *
56459
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
56460
- *
56461
- * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
56462
- *
56463
- * This file is part of the X_ITE Project.
56464
- *
56465
- * X_ITE is free software: you can redistribute it and/or modify it under the
56466
- * terms of the GNU General Public License version 3 only, as published by the
56467
- * Free Software Foundation.
56468
- *
56469
- * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
56470
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
56471
- * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
56472
- * details (a copy is included in the LICENSE file that accompanied this code).
56473
- *
56474
- * You should have received a copy of the GNU General Public License version 3
56475
- * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
56476
- * copy of the GPLv3 License.
56477
- *
56478
- * For Silvio, Joy and Adi.
56479
- *
56480
- ******************************************************************************/
56481
-
56482
- function MatrixStack (Type)
56483
- {
56484
- return Object .assign ([ new Type () ],
56485
- {
56486
- top: 0,
56487
- set: function (matrix)
56488
- {
56489
- this [this .top] .assign (matrix);
56490
- },
56491
- get: function ()
56492
- {
56493
- return this [this .top];
56494
- },
56495
- push: function ()
56496
- {
56497
- const top = ++ this .top;
56498
-
56499
- if (top < this .length)
56500
- this [top] .assign (this [top - 1]);
56501
- else
56502
- this [top] = this [top - 1] .copy ();
56503
- },
56504
- pushMatrix: function (matrix)
56505
- {
56506
- const top = ++ this .top;
56507
-
56508
- if (top < this .length)
56509
- this [top] .assign (matrix);
56510
- else
56511
- this [top] = matrix .copy ();
56512
- },
56513
- pop: function ()
56514
- {
56515
- -- this .top;
56516
- },
56517
- clear: function ()
56518
- {
56519
- this .top = 0;
56520
- },
56521
- size: function ()
56522
- {
56523
- return this .top + 1;
56524
- },
56525
- identity: function ()
56526
- {
56527
- this [this .top] .identity ();
56528
- },
56529
- multLeft: function (matrix)
56530
- {
56531
- this [this .top] .multLeft (matrix);
56532
- },
56533
- translate: function (vector)
56534
- {
56535
- this [this .top] .translate (vector);
56536
- },
56537
- rotate: function (rotation)
56538
- {
56539
- this [this .top] .rotate (rotation);
56540
- },
56541
- scale: function (vector)
56542
- {
56543
- this [this .top] .scale (vector);
56544
- },
56545
- });
56546
- }
56547
-
56548
- const MatrixStack_default_ = MatrixStack;
56549
- ;
56550
-
56551
- x_ite_Namespace.set ("standard/Math/Utility/MatrixStack", MatrixStack_default_);
56552
- /* harmony default export */ const Utility_MatrixStack = (MatrixStack_default_);
56553
56913
  ;// CONCATENATED MODULE: ./src/x_ite/Rendering/X3DRenderObject.js
56554
56914
  /*******************************************************************************
56555
56915
  *
@@ -60348,220 +60708,6 @@ const GeometryContext_default_ = GeometryContext;
60348
60708
 
60349
60709
  x_ite_Namespace.set ("x_ite/Browser/Rendering/GeometryContext", GeometryContext_default_);
60350
60710
  /* harmony default export */ const Rendering_GeometryContext = (GeometryContext_default_);
60351
- ;// CONCATENATED MODULE: ./src/standard/Math/Numbers/Complex.js
60352
- /*******************************************************************************
60353
- *
60354
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
60355
- *
60356
- * Copyright create3000, Scheffelstraße 31a, Leipzig, Germany 2011 - 2022.
60357
- *
60358
- * All rights reserved. Holger Seelig <holger.seelig@yahoo.de>.
60359
- *
60360
- * The copyright notice above does not evidence any actual of intended
60361
- * publication of such source code, and is an unpublished work by create3000.
60362
- * This material contains CONFIDENTIAL INFORMATION that is the property of
60363
- * create3000.
60364
- *
60365
- * No permission is granted to copy, distribute, or create derivative works from
60366
- * the contents of this software, in whole or in part, without the prior written
60367
- * permission of create3000.
60368
- *
60369
- * NON-MILITARY USE ONLY
60370
- *
60371
- * All create3000 software are effectively free software with a non-military use
60372
- * restriction. It is free. Well commented source is provided. You may reuse the
60373
- * source in any way you please with the exception anything that uses it must be
60374
- * marked to indicate is contains 'non-military use only' components.
60375
- *
60376
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
60377
- *
60378
- * Copyright 2011 - 2022, Holger Seelig <holger.seelig@yahoo.de>.
60379
- *
60380
- * This file is part of the X_ITE Project.
60381
- *
60382
- * X_ITE is free software: you can redistribute it and/or modify it under the
60383
- * terms of the GNU General Public License version 3 only, as published by the
60384
- * Free Software Foundation.
60385
- *
60386
- * X_ITE is distributed in the hope that it will be useful, but WITHOUT ANY
60387
- * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
60388
- * A PARTICULAR PURPOSE. See the GNU General Public License version 3 for more
60389
- * details (a copy is included in the LICENSE file that accompanied this code).
60390
- *
60391
- * You should have received a copy of the GNU General Public License version 3
60392
- * along with X_ITE. If not, see <https://www.gnu.org/licenses/gpl.html> for a
60393
- * copy of the GPLv3 License.
60394
- *
60395
- * For Silvio, Joy and Adi.
60396
- *
60397
- ******************************************************************************/
60398
-
60399
- function Complex (real, imag)
60400
- {
60401
- this .real = real;
60402
- this .imag = imag;
60403
- }
60404
-
60405
- Complex .prototype =
60406
- {
60407
- constructor: Complex,
60408
- [Symbol .iterator]: function* ()
60409
- {
60410
- yield this .real;
60411
- yield this .imag;
60412
- },
60413
- copy: function ()
60414
- {
60415
- const copy = Object .create (Complex .prototype);
60416
- copy .real = this .real;
60417
- copy .imag = this .imag;
60418
- return copy;
60419
- },
60420
- assign: function (complex)
60421
- {
60422
- this .real = complex .real;
60423
- this .imag = complex .imag;
60424
- return this;
60425
- },
60426
- equals: function (complex)
60427
- {
60428
- return this .real === complex .real &&
60429
- this .imag === complex .imag;
60430
- },
60431
- setPolar: function (magnitude, angle)
60432
- {
60433
- this .real = magnitude * Math .cos (angle);
60434
- this .imag = magnitude * Math .sin (angle);
60435
- return this;
60436
- },
60437
- conjugate: function ()
60438
- {
60439
- this .imag = -this .imag;
60440
- return this;
60441
- },
60442
- negate: function ()
60443
- {
60444
- this .real = -this .real;
60445
- this .imag = -this .imag;
60446
- return this;
60447
- },
60448
- inverse: function ()
60449
- {
60450
- const d = this .real * this .real + this .imag * this .imag;
60451
-
60452
- this .real /= d;
60453
- this .imag /= -d;
60454
- return this;
60455
- },
60456
- add: function (value)
60457
- {
60458
- this .real += value .real;
60459
- this .imag += value .imag;
60460
- return this;
60461
- },
60462
- subtract: function (value)
60463
- {
60464
- this .real -= value .real;
60465
- this .imag -= value .imag;
60466
- return this;
60467
- },
60468
- multiply: function (value)
60469
- {
60470
- this .real *= value;
60471
- this .imag *= value;
60472
- return this;
60473
- },
60474
- multComp: function (value)
60475
- {
60476
- const
60477
- { real: ar, imag: ai } = this,
60478
- { real: br, imag: bi } = value;
60479
-
60480
- this .real = ar * br - ai * bi;
60481
- this .imag = ar * bi + ai * br;
60482
- return this;
60483
- },
60484
- //divide: function (value)
60485
- //{
60486
- // return this;
60487
- //},
60488
- divComp: function (value)
60489
- {
60490
- const
60491
- { real: ar, imag: ai } = this,
60492
- { real: br, imag: bi } = value,
60493
- d = br * br + bi * bi;
60494
-
60495
- this .real = (ar * br + ai * bi) / d;
60496
- this .imag = (ai * br - ar * bi) / d;
60497
- return this;
60498
- },
60499
- toString: function ()
60500
- {
60501
- if (this .imag)
60502
- return this .real + " " + this .imag + "i";
60503
-
60504
- return String (this .real);
60505
- },
60506
- };
60507
-
60508
- Object .defineProperty (Complex .prototype, "magnitude",
60509
- {
60510
- get: function ()
60511
- {
60512
- if (this .real)
60513
- {
60514
- if (this .imag)
60515
- return Math .hypot (this .real, this .imag);
60516
-
60517
- return Math .abs (this .real);
60518
- }
60519
-
60520
- return Math .abs (this .imag);
60521
- },
60522
- set: function (magnitude)
60523
- {
60524
- this .setPolar (magnitude, this .angle);
60525
- },
60526
- enumerable: false,
60527
- configurable: false
60528
- });
60529
-
60530
- Object .defineProperty (Complex .prototype, "angle",
60531
- {
60532
- get: function ()
60533
- {
60534
- return Math .atan2 (this .imag, this .real);
60535
- },
60536
- set: function (angle)
60537
- {
60538
- this .setPolar (this .magnitude, angle);
60539
- },
60540
- enumerable: false,
60541
- configurable: false
60542
- });
60543
-
60544
- Object .assign (Complex,
60545
- {
60546
- Polar: function (magnitude, angle)
60547
- {
60548
- return Object .create (Complex .prototype) .setPolar (magnitude, angle);
60549
- },
60550
- multiply: function (lhs, rhs)
60551
- {
60552
- return lhs .copy () .multiply (rhs);
60553
- },
60554
- multComp: function (lhs, rhs)
60555
- {
60556
- return lhs .copy () .multComp (rhs);
60557
- },
60558
- });
60559
-
60560
- const Complex_default_ = Complex;
60561
- ;
60562
-
60563
- x_ite_Namespace.set ("standard/Math/Numbers/Complex", Complex_default_);
60564
- /* harmony default export */ const Numbers_Complex = (Complex_default_);
60565
60711
  ;// CONCATENATED MODULE: ./src/standard/Utility/BitSet.js
60566
60712
  /*******************************************************************************
60567
60713
  *
@@ -61884,7 +62030,7 @@ const X3DTexture2DNode_default_ = X3DTexture2DNode;
61884
62030
  x_ite_Namespace.set ("x_ite/Components/Texturing/X3DTexture2DNode", X3DTexture2DNode_default_);
61885
62031
  /* harmony default export */ const Texturing_X3DTexture2DNode = (X3DTexture2DNode_default_);
61886
62032
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/ImageTexture.js
61887
- /* provided dependency */ var ImageTexture_$ = __webpack_require__(769);
62033
+ /* provided dependency */ var ImageTexture_$ = __webpack_require__(908);
61888
62034
  /*******************************************************************************
61889
62035
  *
61890
62036
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -66138,7 +66284,7 @@ const X3DWorld_default_ = X3DWorld;
66138
66284
  x_ite_Namespace.set ("x_ite/Execution/X3DWorld", X3DWorld_default_);
66139
66285
  /* harmony default export */ const Execution_X3DWorld = (X3DWorld_default_);
66140
66286
  ;// CONCATENATED MODULE: ./src/x_ite/InputOutput/FileLoader.js
66141
- /* provided dependency */ var FileLoader_$ = __webpack_require__(769);
66287
+ /* provided dependency */ var FileLoader_$ = __webpack_require__(908);
66142
66288
  /*******************************************************************************
66143
66289
  *
66144
66290
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -68495,7 +68641,7 @@ const URLs_default_ = URLs;
68495
68641
  x_ite_Namespace.set ("x_ite/Browser/Networking/URLs", URLs_default_);
68496
68642
  /* harmony default export */ const Networking_URLs = (URLs_default_);
68497
68643
  ;// CONCATENATED MODULE: ./src/x_ite/Configuration/ComponentInfo.js
68498
- /* provided dependency */ var ComponentInfo_$ = __webpack_require__(769);
68644
+ /* provided dependency */ var ComponentInfo_$ = __webpack_require__(908);
68499
68645
  /*******************************************************************************
68500
68646
  *
68501
68647
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -70461,7 +70607,7 @@ const DataStorage_default_ = DataStorage;
70461
70607
  x_ite_Namespace.set ("standard/Utility/DataStorage", DataStorage_default_);
70462
70608
  /* harmony default export */ const Utility_DataStorage = (DataStorage_default_);
70463
70609
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Core/X3DCoreContext.js
70464
- /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(769);
70610
+ /* provided dependency */ var X3DCoreContext_$ = __webpack_require__(908);
70465
70611
  /*******************************************************************************
70466
70612
  *
70467
70613
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -76951,8 +77097,8 @@ const OrientationChaser_default_ = OrientationChaser;
76951
77097
  x_ite_Namespace.set ("x_ite/Components/Followers/OrientationChaser", OrientationChaser_default_);
76952
77098
  /* harmony default export */ const Followers_OrientationChaser = (OrientationChaser_default_);
76953
77099
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/ExamineViewer.js
76954
- /* provided dependency */ var jquery_mousewheel = __webpack_require__(616);
76955
- /* provided dependency */ var ExamineViewer_$ = __webpack_require__(769);
77100
+ /* provided dependency */ var jquery_mousewheel = __webpack_require__(172);
77101
+ /* provided dependency */ var ExamineViewer_$ = __webpack_require__(908);
76956
77102
  /*******************************************************************************
76957
77103
  *
76958
77104
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -77816,8 +77962,8 @@ const ExamineViewer_default_ = ExamineViewer;
77816
77962
  x_ite_Namespace.set ("x_ite/Browser/Navigation/ExamineViewer", ExamineViewer_default_);
77817
77963
  /* harmony default export */ const Navigation_ExamineViewer = (ExamineViewer_default_);
77818
77964
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/X3DFlyViewer.js
77819
- /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(616);
77820
- /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(769);
77965
+ /* provided dependency */ var X3DFlyViewer_jquery_mousewheel = __webpack_require__(172);
77966
+ /* provided dependency */ var X3DFlyViewer_$ = __webpack_require__(908);
77821
77967
  /*******************************************************************************
77822
77968
  *
77823
77969
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -78767,8 +78913,8 @@ const FlyViewer_default_ = FlyViewer;
78767
78913
  x_ite_Namespace.set ("x_ite/Browser/Navigation/FlyViewer", FlyViewer_default_);
78768
78914
  /* harmony default export */ const Navigation_FlyViewer = (FlyViewer_default_);
78769
78915
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/PlaneViewer.js
78770
- /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(616);
78771
- /* provided dependency */ var PlaneViewer_$ = __webpack_require__(769);
78916
+ /* provided dependency */ var PlaneViewer_jquery_mousewheel = __webpack_require__(172);
78917
+ /* provided dependency */ var PlaneViewer_$ = __webpack_require__(908);
78772
78918
  /*******************************************************************************
78773
78919
  *
78774
78920
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -79077,8 +79223,8 @@ const NoneViewer_default_ = NoneViewer;
79077
79223
  x_ite_Namespace.set ("x_ite/Browser/Navigation/NoneViewer", NoneViewer_default_);
79078
79224
  /* harmony default export */ const Navigation_NoneViewer = (NoneViewer_default_);
79079
79225
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Navigation/LookAtViewer.js
79080
- /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(616);
79081
- /* provided dependency */ var LookAtViewer_$ = __webpack_require__(769);
79226
+ /* provided dependency */ var LookAtViewer_jquery_mousewheel = __webpack_require__(172);
79227
+ /* provided dependency */ var LookAtViewer_$ = __webpack_require__(908);
79082
79228
  /*******************************************************************************
79083
79229
  *
79084
79230
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -80681,8 +80827,8 @@ const X3DPickingContext_default_ = X3DPickingContext;
80681
80827
  x_ite_Namespace.set ("x_ite/Browser/Picking/X3DPickingContext", X3DPickingContext_default_);
80682
80828
  /* harmony default export */ const Picking_X3DPickingContext = (X3DPickingContext_default_);
80683
80829
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/PointingDeviceSensor/PointingDevice.js
80684
- /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(616);
80685
- /* provided dependency */ var PointingDevice_$ = __webpack_require__(769);
80830
+ /* provided dependency */ var PointingDevice_jquery_mousewheel = __webpack_require__(172);
80831
+ /* provided dependency */ var PointingDevice_$ = __webpack_require__(908);
80686
80832
  /*******************************************************************************
80687
80833
  *
80688
80834
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -81704,8 +81850,8 @@ const MultiSampleFrameBuffer_default_ = MultiSampleFrameBuffer;
81704
81850
  x_ite_Namespace.set ("x_ite/Rendering/MultiSampleFrameBuffer", MultiSampleFrameBuffer_default_);
81705
81851
  /* harmony default export */ const Rendering_MultiSampleFrameBuffer = (MultiSampleFrameBuffer_default_);
81706
81852
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/Rendering/X3DRenderingContext.js
81707
- /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(769);
81708
- /* provided dependency */ var ResizeSensor = __webpack_require__(599);
81853
+ /* provided dependency */ var X3DRenderingContext_$ = __webpack_require__(908);
81854
+ /* provided dependency */ var ResizeSensor = __webpack_require__(151);
81709
81855
  /*******************************************************************************
81710
81856
  *
81711
81857
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -90231,7 +90377,7 @@ const ShaderCompiler_default_ = ShaderCompiler;
90231
90377
  x_ite_Namespace.set ("x_ite/Browser/Shaders/ShaderCompiler", ShaderCompiler_default_);
90232
90378
  /* harmony default export */ const Shaders_ShaderCompiler = (ShaderCompiler_default_);
90233
90379
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Shaders/ShaderPart.js
90234
- /* provided dependency */ var ShaderPart_$ = __webpack_require__(769);
90380
+ /* provided dependency */ var ShaderPart_$ = __webpack_require__(908);
90235
90381
  /*******************************************************************************
90236
90382
  *
90237
90383
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -112112,7 +112258,7 @@ const X3DSoundSourceNode_default_ = X3DSoundSourceNode;
112112
112258
  x_ite_Namespace.set ("x_ite/Components/Sound/X3DSoundSourceNode", X3DSoundSourceNode_default_);
112113
112259
  /* harmony default export */ const Sound_X3DSoundSourceNode = (X3DSoundSourceNode_default_);
112114
112260
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Sound/AudioClip.js
112115
- /* provided dependency */ var AudioClip_$ = __webpack_require__(769);
112261
+ /* provided dependency */ var AudioClip_$ = __webpack_require__(908);
112116
112262
  /*******************************************************************************
112117
112263
  *
112118
112264
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -114927,8 +115073,8 @@ const GIFMedia_default_ = GifMedia;
114927
115073
  x_ite_Namespace.set ("x_ite/Browser/Texturing/GIFMedia", GIFMedia_default_);
114928
115074
  /* harmony default export */ const GIFMedia = (GIFMedia_default_);
114929
115075
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/MovieTexture.js
114930
- /* provided dependency */ var MovieTexture_$ = __webpack_require__(769);
114931
- /* provided dependency */ var SuperGif = __webpack_require__(328);
115076
+ /* provided dependency */ var MovieTexture_$ = __webpack_require__(908);
115077
+ /* provided dependency */ var SuperGif = __webpack_require__(732);
114932
115078
  /*******************************************************************************
114933
115079
  *
114934
115080
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -115886,7 +116032,7 @@ const MultiTextureTransform_default_ = MultiTextureTransform;
115886
116032
  x_ite_Namespace.set ("x_ite/Components/Texturing/MultiTextureTransform", MultiTextureTransform_default_);
115887
116033
  /* harmony default export */ const Texturing_MultiTextureTransform = (MultiTextureTransform_default_);
115888
116034
  ;// CONCATENATED MODULE: ./src/x_ite/Components/Texturing/PixelTexture.js
115889
- /* provided dependency */ var PixelTexture_$ = __webpack_require__(769);
116035
+ /* provided dependency */ var PixelTexture_$ = __webpack_require__(908);
115890
116036
  /*******************************************************************************
115891
116037
  *
115892
116038
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -116589,7 +116735,7 @@ const Components_default_ = Components;
116589
116735
  x_ite_Namespace.set ("x_ite/Components", Components_default_);
116590
116736
  /* harmony default export */ const x_ite_Components = ((/* unused pure expression or super */ null && (Components_default_)));
116591
116737
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/DOMIntegration.js
116592
- /* provided dependency */ var DOMIntegration_$ = __webpack_require__(769);
116738
+ /* provided dependency */ var DOMIntegration_$ = __webpack_require__(908);
116593
116739
  /*******************************************************************************
116594
116740
  * MIT License
116595
116741
  *
@@ -117826,7 +117972,7 @@ const SupportedProfiles_default_ = SupportedProfiles;
117826
117972
  x_ite_Namespace.set ("x_ite/Configuration/SupportedProfiles", SupportedProfiles_default_);
117827
117973
  /* harmony default export */ const Configuration_SupportedProfiles = (SupportedProfiles_default_);
117828
117974
  ;// CONCATENATED MODULE: ./src/x_ite/Browser/X3DBrowser.js
117829
- /* provided dependency */ var X3DBrowser_$ = __webpack_require__(769);
117975
+ /* provided dependency */ var X3DBrowser_$ = __webpack_require__(908);
117830
117976
  /*******************************************************************************
117831
117977
  *
117832
117978
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -118764,7 +118910,7 @@ const X3DBrowser_default_ = X3DBrowser;
118764
118910
  x_ite_Namespace.set ("x_ite/Browser/X3DBrowser", X3DBrowser_default_);
118765
118911
  /* harmony default export */ const Browser_X3DBrowser = (X3DBrowser_default_);
118766
118912
  ;// CONCATENATED MODULE: ./src/x_ite/Fallback.js
118767
- /* provided dependency */ var Fallback_$ = __webpack_require__(769);
118913
+ /* provided dependency */ var Fallback_$ = __webpack_require__(908);
118768
118914
  /*******************************************************************************
118769
118915
  *
118770
118916
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -118943,8 +119089,8 @@ const MicroTime_default_ = undefined;
118943
119089
  x_ite_Namespace.set ("standard/Time/MicroTime", MicroTime_default_);
118944
119090
  /* harmony default export */ const MicroTime = ((/* unused pure expression or super */ null && (MicroTime_default_)));
118945
119091
  ;// CONCATENATED MODULE: ./src/lib/jquery.js
118946
- /* provided dependency */ var jquery_$ = __webpack_require__(769);
118947
- /* provided dependency */ var pako = __webpack_require__(765);
119092
+ /* provided dependency */ var jquery_$ = __webpack_require__(908);
119093
+ /* provided dependency */ var pako = __webpack_require__(862);
118948
119094
  jquery_$.decodeText = function (input)
118949
119095
  {
118950
119096
  if (typeof input === "string")
@@ -118971,14 +119117,14 @@ const jquery_default_ = jquery_$;
118971
119117
  x_ite_Namespace.set ("lib/jquery", jquery_default_);
118972
119118
  /* harmony default export */ const jquery = ((/* unused pure expression or super */ null && (jquery_default_)));
118973
119119
  ;// CONCATENATED MODULE: ./src/lib/libtess.js
118974
- /* provided dependency */ var libtess_libtess = __webpack_require__(863);
119120
+ /* provided dependency */ var libtess_libtess = __webpack_require__(323);
118975
119121
  const libtess_default_ = libtess_libtess;
118976
119122
  ;
118977
119123
 
118978
119124
  x_ite_Namespace.set ("lib/libtess", libtess_default_);
118979
119125
  /* harmony default export */ const lib_libtess = ((/* unused pure expression or super */ null && (libtess_default_)));
118980
119126
  ;// CONCATENATED MODULE: ./src/x_ite/X3D.js
118981
- /* provided dependency */ var X3D_$ = __webpack_require__(769);
119127
+ /* provided dependency */ var X3D_$ = __webpack_require__(908);
118982
119128
  /*******************************************************************************
118983
119129
  *
118984
119130
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -119234,7 +119380,7 @@ const X3D_default_ = X3D;
119234
119380
  x_ite_Namespace.set ("x_ite/X3D", X3D_default_);
119235
119381
  /* harmony default export */ const x_ite_X3D = (X3D_default_);
119236
119382
  ;// CONCATENATED MODULE: ./src/x_ite/X3DCanvas.js
119237
- /* provided dependency */ var X3DCanvas_$ = __webpack_require__(769);
119383
+ /* provided dependency */ var X3DCanvas_$ = __webpack_require__(908);
119238
119384
  /*******************************************************************************
119239
119385
  *
119240
119386
  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
@@ -119494,7 +119640,7 @@ x_ite_Namespace.set ("shim", shim_default_);
119494
119640
 
119495
119641
  // Assign X3D to global namespace.
119496
119642
 
119497
- window [Symbol .for ("X_ITE.X3D-8.6.4")] = x_ite_X3D;
119643
+ window [Symbol .for ("X_ITE.X3D-8.6.5")] = x_ite_X3D;
119498
119644
 
119499
119645
  x_ite_X3DCanvas.define ();
119500
119646