@itwin/core-frontend 4.8.0-dev.36 → 4.8.0-dev.38

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 (92) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/AccuDraw.d.ts.map +1 -1
  3. package/lib/cjs/AccuDraw.js +1 -1
  4. package/lib/cjs/AccuDraw.js.map +1 -1
  5. package/lib/cjs/common/internal/Symbols.d.ts +2 -1
  6. package/lib/cjs/common/internal/Symbols.d.ts.map +1 -1
  7. package/lib/cjs/common/internal/Symbols.js +3 -2
  8. package/lib/cjs/common/internal/Symbols.js.map +1 -1
  9. package/lib/cjs/common/internal/render/DisplayParams.d.ts.map +1 -1
  10. package/lib/cjs/common/internal/render/DisplayParams.js +3 -6
  11. package/lib/cjs/common/internal/render/DisplayParams.js.map +1 -1
  12. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.d.ts +6 -24
  13. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.d.ts.map +1 -1
  14. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js +29 -47
  15. package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
  16. package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.d.ts +104 -0
  17. package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.d.ts.map +1 -0
  18. package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.js +146 -0
  19. package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -0
  20. package/lib/cjs/common/render/GraphicDescriptionBuilder.d.ts +3 -68
  21. package/lib/cjs/common/render/GraphicDescriptionBuilder.d.ts.map +1 -1
  22. package/lib/cjs/common/render/GraphicDescriptionBuilder.js +1 -10
  23. package/lib/cjs/common/render/GraphicDescriptionBuilder.js.map +1 -1
  24. package/lib/cjs/common/render/GraphicDescriptionContext.d.ts +85 -0
  25. package/lib/cjs/common/render/GraphicDescriptionContext.d.ts.map +1 -0
  26. package/lib/cjs/common/render/GraphicDescriptionContext.js +22 -0
  27. package/lib/cjs/common/render/GraphicDescriptionContext.js.map +1 -0
  28. package/lib/cjs/common.d.ts +1 -0
  29. package/lib/cjs/common.d.ts.map +1 -1
  30. package/lib/cjs/common.js +1 -0
  31. package/lib/cjs/common.js.map +1 -1
  32. package/lib/cjs/render/RenderSystem.d.ts +2 -1
  33. package/lib/cjs/render/RenderSystem.d.ts.map +1 -1
  34. package/lib/cjs/render/RenderSystem.js +40 -1
  35. package/lib/cjs/render/RenderSystem.js.map +1 -1
  36. package/lib/cjs/render/webgl/Material.d.ts +4 -0
  37. package/lib/cjs/render/webgl/Material.d.ts.map +1 -1
  38. package/lib/cjs/render/webgl/Material.js +5 -0
  39. package/lib/cjs/render/webgl/Material.js.map +1 -1
  40. package/lib/cjs/tile/DynamicIModelTile.js +1 -0
  41. package/lib/cjs/tile/DynamicIModelTile.js.map +1 -1
  42. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts +2 -1
  43. package/lib/cjs/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  44. package/lib/cjs/tile/ImdlGraphicsCreator.js +2 -1
  45. package/lib/cjs/tile/ImdlGraphicsCreator.js.map +1 -1
  46. package/lib/esm/AccuDraw.d.ts.map +1 -1
  47. package/lib/esm/AccuDraw.js +1 -1
  48. package/lib/esm/AccuDraw.js.map +1 -1
  49. package/lib/esm/common/internal/Symbols.d.ts +2 -1
  50. package/lib/esm/common/internal/Symbols.d.ts.map +1 -1
  51. package/lib/esm/common/internal/Symbols.js +2 -1
  52. package/lib/esm/common/internal/Symbols.js.map +1 -1
  53. package/lib/esm/common/internal/render/DisplayParams.d.ts.map +1 -1
  54. package/lib/esm/common/internal/render/DisplayParams.js +4 -7
  55. package/lib/esm/common/internal/render/DisplayParams.js.map +1 -1
  56. package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.d.ts +6 -24
  57. package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.d.ts.map +1 -1
  58. package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js +28 -45
  59. package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
  60. package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.d.ts +104 -0
  61. package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.d.ts.map +1 -0
  62. package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.js +140 -0
  63. package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -0
  64. package/lib/esm/common/render/GraphicDescriptionBuilder.d.ts +3 -68
  65. package/lib/esm/common/render/GraphicDescriptionBuilder.d.ts.map +1 -1
  66. package/lib/esm/common/render/GraphicDescriptionBuilder.js +1 -10
  67. package/lib/esm/common/render/GraphicDescriptionBuilder.js.map +1 -1
  68. package/lib/esm/common/render/GraphicDescriptionContext.d.ts +85 -0
  69. package/lib/esm/common/render/GraphicDescriptionContext.d.ts.map +1 -0
  70. package/lib/esm/common/render/GraphicDescriptionContext.js +19 -0
  71. package/lib/esm/common/render/GraphicDescriptionContext.js.map +1 -0
  72. package/lib/esm/common.d.ts +1 -0
  73. package/lib/esm/common.d.ts.map +1 -1
  74. package/lib/esm/common.js +1 -0
  75. package/lib/esm/common.js.map +1 -1
  76. package/lib/esm/render/RenderSystem.d.ts +2 -1
  77. package/lib/esm/render/RenderSystem.d.ts.map +1 -1
  78. package/lib/esm/render/RenderSystem.js +43 -4
  79. package/lib/esm/render/RenderSystem.js.map +1 -1
  80. package/lib/esm/render/webgl/Material.d.ts +4 -0
  81. package/lib/esm/render/webgl/Material.d.ts.map +1 -1
  82. package/lib/esm/render/webgl/Material.js +5 -0
  83. package/lib/esm/render/webgl/Material.js.map +1 -1
  84. package/lib/esm/tile/DynamicIModelTile.js +1 -0
  85. package/lib/esm/tile/DynamicIModelTile.js.map +1 -1
  86. package/lib/esm/tile/ImdlGraphicsCreator.d.ts +2 -1
  87. package/lib/esm/tile/ImdlGraphicsCreator.d.ts.map +1 -1
  88. package/lib/esm/tile/ImdlGraphicsCreator.js +2 -1
  89. package/lib/esm/tile/ImdlGraphicsCreator.js.map +1 -1
  90. package/lib/public/scripts/parse-imdl-worker.js +1 -1
  91. package/lib/workers/webpack/parse-imdl-worker.js +1 -1
  92. package/package.json +18 -18
@@ -2,8 +2,9 @@
2
2
  * @module Utils
3
3
  */
4
4
  export declare const _implementationProhibited: unique symbol;
5
+ export declare const _accumulator: unique symbol;
5
6
  /** @internal */
6
7
  export declare const _callIpcChannel: unique symbol;
7
8
  export declare const _requestSnap: unique symbol;
8
- export declare const _accumulator: unique symbol;
9
+ export declare const _textures: unique symbol;
9
10
  //# sourceMappingURL=Symbols.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Symbols.d.ts","sourceRoot":"","sources":["../../../../src/common/internal/Symbols.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,eAAO,MAAM,yBAAyB,eAAmG,CAAC;AAM1I,gBAAgB;AAChB,eAAO,MAAM,eAAe,eAAoC,CAAC;AACjE,eAAO,MAAM,YAAY,eAAiC,CAAC;AAC3D,eAAO,MAAM,YAAY,eAAiC,CAAC"}
1
+ {"version":3,"file":"Symbols.d.ts","sourceRoot":"","sources":["../../../../src/common/internal/Symbols.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,eAAO,MAAM,yBAAyB,eAAmG,CAAC;AAM1I,eAAO,MAAM,YAAY,eAAiC,CAAC;AAC3D,gBAAgB;AAChB,eAAO,MAAM,eAAe,eAAoC,CAAC;AACjE,eAAO,MAAM,YAAY,eAAiC,CAAC;AAC3D,eAAO,MAAM,SAAS,eAA8B,CAAC"}
@@ -7,13 +7,14 @@
7
7
  * @module Utils
8
8
  */
9
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
- exports._accumulator = exports._requestSnap = exports._callIpcChannel = exports._implementationProhibited = void 0;
10
+ exports._textures = exports._requestSnap = exports._callIpcChannel = exports._accumulator = exports._implementationProhibited = void 0;
11
11
  exports._implementationProhibited = Symbol.for("Implementations of this interface can only be obtained from the containing package");
12
12
  function sym(name) {
13
13
  return `${name}_core-frontend_INTERNAL_ONLY_DO_NOT_USE`;
14
14
  }
15
+ exports._accumulator = Symbol.for(sym("accumulator"));
15
16
  /** @internal */
16
17
  exports._callIpcChannel = Symbol.for(sym("callIpcChannel"));
17
18
  exports._requestSnap = Symbol.for(sym("requestSnap"));
18
- exports._accumulator = Symbol.for(sym("accumulator"));
19
+ exports._textures = Symbol.for(sym("textures"));
19
20
  //# sourceMappingURL=Symbols.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Symbols.js","sourceRoot":"","sources":["../../../../src/common/internal/Symbols.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEU,QAAA,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;AAE1I,SAAS,GAAG,CAAC,IAAY;IACvB,OAAO,GAAG,IAAI,yCAAyC,CAAC;AAC1D,CAAC;AAED,gBAAgB;AACH,QAAA,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACpD,QAAA,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;AAC9C,QAAA,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Utils\r\n */\r\n\r\nexport const _implementationProhibited = Symbol.for(\"Implementations of this interface can only be obtained from the containing package\");\r\n\r\nfunction sym(name: string): string {\r\n return `${name}_core-frontend_INTERNAL_ONLY_DO_NOT_USE`;\r\n}\r\n\r\n/** @internal */\r\nexport const _callIpcChannel = Symbol.for(sym(\"callIpcChannel\"));\r\nexport const _requestSnap = Symbol.for(sym(\"requestSnap\"));\r\nexport const _accumulator = Symbol.for(sym(\"accumulator\"));\r\n"]}
1
+ {"version":3,"file":"Symbols.js","sourceRoot":"","sources":["../../../../src/common/internal/Symbols.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEU,QAAA,yBAAyB,GAAG,MAAM,CAAC,GAAG,CAAC,oFAAoF,CAAC,CAAC;AAE1I,SAAS,GAAG,CAAC,IAAY;IACvB,OAAO,GAAG,IAAI,yCAAyC,CAAC;AAC1D,CAAC;AAEY,QAAA,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;AAC3D,gBAAgB;AACH,QAAA,eAAe,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,gBAAgB,CAAC,CAAC,CAAC;AACpD,QAAA,YAAY,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,aAAa,CAAC,CAAC,CAAC;AAC9C,QAAA,SAAS,GAAG,MAAM,CAAC,GAAG,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Utils\r\n */\r\n\r\nexport const _implementationProhibited = Symbol.for(\"Implementations of this interface can only be obtained from the containing package\");\r\n\r\nfunction sym(name: string): string {\r\n return `${name}_core-frontend_INTERNAL_ONLY_DO_NOT_USE`;\r\n}\r\n\r\nexport const _accumulator = Symbol.for(sym(\"accumulator\"));\r\n/** @internal */\r\nexport const _callIpcChannel = Symbol.for(sym(\"callIpcChannel\"));\r\nexport const _requestSnap = Symbol.for(sym(\"requestSnap\"));\r\nexport const _textures = Symbol.for(sym(\"textures\"));\r\n"]}
@@ -1 +1 @@
1
- {"version":3,"file":"DisplayParams.d.ts","sourceRoot":"","sources":["../../../../../src/common/internal/render/DisplayParams.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAa7I;;GAEG;AACH,qBAAa,aAAa;IACxB,gBAAuB,eAAe,EAAE,MAAM,CAAM;IACpD,SAAgB,IAAI,EAAE,aAAa,CAAC,IAAI,CAA2B;IACnE,SAAgB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1C,SAAgB,QAAQ,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC;IACzC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAiB;IAClD,SAAgB,SAAS,EAAE,QAAQ,CAAC;IACpC,SAAgB,SAAS,EAAE,QAAQ,CAAC;IACpC,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,UAAU,EAAE,UAAU,CAAC;IACvC,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,SAAgB,cAAc,EAAE,OAAO,CAAC;gBAErB,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,GAAE,MAAU,EAAE,UAAU,GAAE,UAA6B,EACjJ,SAAS,GAAE,SAA0B,EAAE,QAAQ,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAE,OAAe,EAAE,cAAc,CAAC,EAAE,cAAc;IAe9J,sHAAsH;WACxG,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,aAAa,EAAE,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,aAAa,GAAG,SAAS,EAAE,cAAc,UAAQ,GAAG,aAAa;IAmBrL,wGAAwG;WAC1F,aAAa,CAAC,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,aAAa,GAAG,SAAS,GAAG,aAAa;IAI5J,0GAA0G;WAC5F,eAAe,CAAC,EAAE,EAAE,aAAa,GAAG,aAAa;IAI/D,wGAAwG;WAC1F,aAAa,CAAC,EAAE,EAAE,aAAa,GAAG,aAAa;IAI7D,IAAW,cAAc,IAAI,aAAa,CAAC,cAAc,CAYxD;IAED,IAAW,iBAAiB,IAAI,OAAO,CAEtC;IAED,IAAW,eAAe,IAAI,OAAO,CAAyE;IAC9G,IAAW,mBAAmB,IAAI,OAAO,CAA8C;IACvF,IAAW,mBAAmB,IAAI,OAAO,CAA8C;IACvF,IAAW,cAAc,IAAI,cAAc,GAAG,SAAS,CAA8F;IACrJ,IAAW,UAAU,IAAI,OAAO,CAA8C;IAE9E,qHAAqH;IAC9G,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,GAAE,aAAa,CAAC,cAAoD,GAAG,OAAO;IA+BhH,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM;IAoClD;;;OAGG;WACW,kBAAkB,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ;CAG5D;AAED,gBAAgB;AAChB,yBAAiB,aAAa,CAAC;IAC7B,KAAY,IAAI;QACd,IAAI,IAAA;QACJ,MAAM,IAAA;QACN,IAAI,IAAA;KACL;IAED,KAAY,cAAc;QACxB,IAAI,IAAA;QACJ,OAAO,IAAA;QACP,OAAO,IAAA;KACR;IAED,KAAY,cAAc;QACxB,KAAK,IAAA,CAAG,qEAAqE;QAC7E,MAAM,IAAA;KACP;CACF"}
1
+ {"version":3,"file":"DisplayParams.d.ts","sourceRoot":"","sources":["../../../../../src/common/internal/render/DisplayParams.ts"],"names":[],"mappings":"AAIA;;GAEG;AAGH,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,aAAa,EAAE,UAAU,EAAE,cAAc,EAAE,aAAa,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAU7I;;GAEG;AACH,qBAAa,aAAa;IACxB,gBAAuB,eAAe,EAAE,MAAM,CAAM;IACpD,SAAgB,IAAI,EAAE,aAAa,CAAC,IAAI,CAA2B;IACnE,SAAgB,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1C,SAAgB,QAAQ,CAAC,EAAE,QAAQ,CAAC,IAAI,CAAC;IACzC,OAAO,CAAC,QAAQ,CAAC,eAAe,CAAC,CAAiB;IAClD,SAAgB,SAAS,EAAE,QAAQ,CAAC;IACpC,SAAgB,SAAS,EAAE,QAAQ,CAAC;IACpC,SAAgB,KAAK,EAAE,MAAM,CAAC;IAC9B,SAAgB,UAAU,EAAE,UAAU,CAAC;IACvC,SAAgB,SAAS,EAAE,SAAS,CAAC;IACrC,SAAgB,cAAc,EAAE,OAAO,CAAC;gBAErB,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,QAAQ,EAAE,SAAS,EAAE,QAAQ,EAAE,KAAK,GAAE,MAAU,EAAE,UAAU,GAAE,UAA6B,EACjJ,SAAS,GAAE,SAA0B,EAAE,QAAQ,CAAC,EAAE,cAAc,EAAE,QAAQ,CAAC,EAAE,QAAQ,CAAC,IAAI,EAAE,cAAc,GAAE,OAAe,EAAE,cAAc,CAAC,EAAE,cAAc;IAe9J,sHAAsH;WACxG,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,IAAI,EAAE,EAAE,EAAE,aAAa,EAAE,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,aAAa,GAAG,SAAS,EAAE,cAAc,UAAQ,GAAG,aAAa;IAmBrL,wGAAwG;WAC1F,aAAa,CAAC,EAAE,EAAE,aAAa,EAAE,cAAc,EAAE,OAAO,EAAE,eAAe,CAAC,EAAE,CAAC,IAAI,EAAE,QAAQ,CAAC,IAAI,KAAK,aAAa,GAAG,SAAS,GAAG,aAAa;IAI5J,0GAA0G;WAC5F,eAAe,CAAC,EAAE,EAAE,aAAa,GAAG,aAAa;IAI/D,wGAAwG;WAC1F,aAAa,CAAC,EAAE,EAAE,aAAa,GAAG,aAAa;IAI7D,IAAW,cAAc,IAAI,aAAa,CAAC,cAAc,CAYxD;IAED,IAAW,iBAAiB,IAAI,OAAO,CAEtC;IAED,IAAW,eAAe,IAAI,OAAO,CAAyE;IAC9G,IAAW,mBAAmB,IAAI,OAAO,CAA8C;IACvF,IAAW,mBAAmB,IAAI,OAAO,CAA8C;IACvF,IAAW,cAAc,IAAI,cAAc,GAAG,SAAS,CAA8F;IACrJ,IAAW,UAAU,IAAI,OAAO,CAA8C;IAE9E,qHAAqH;IAC9G,MAAM,CAAC,GAAG,EAAE,aAAa,EAAE,OAAO,GAAE,aAAa,CAAC,cAAoD,GAAG,OAAO;IA+BhH,eAAe,CAAC,GAAG,EAAE,aAAa,GAAG,MAAM;IAoClD;;;OAGG;WACW,kBAAkB,CAAC,KAAK,EAAE,QAAQ,GAAG,QAAQ;CAG5D;AAED,gBAAgB;AAChB,yBAAiB,aAAa,CAAC;IAC7B,KAAY,IAAI;QACd,IAAI,IAAA;QACJ,MAAM,IAAA;QACN,IAAI,IAAA;KACL;IAED,KAAY,cAAc;QACxB,IAAI,IAAA;QACJ,OAAO,IAAA;QACP,OAAO,IAAA;KACR;IAED,KAAY,cAAc;QACxB,KAAK,IAAA,CAAG,qEAAqE;QAC7E,MAAM,IAAA;KACP;CACF"}
@@ -11,13 +11,10 @@ exports.DisplayParams = void 0;
11
11
  const core_bentley_1 = require("@itwin/core-bentley");
12
12
  const core_common_1 = require("@itwin/core-common");
13
13
  function compareMaterials(lhs, rhs) {
14
- return (0, core_bentley_1.comparePossiblyUndefined)((lhMat, rhMat) => lhMat === rhMat ? 0 : (0, core_bentley_1.compareStringsOrUndefined)(lhMat.key, rhMat.key), lhs, rhs);
14
+ return (0, core_bentley_1.comparePossiblyUndefined)((lh, rh) => lh.compare(rh), lhs, rhs);
15
15
  }
16
- function compareTextureMappings(_lhs, _rhs) {
17
- // ###TODO we don't have a way of ordering the textures from the pattern/normal map(s) - not all textures have keys defined.
18
- // For now this will only work if the GraphicBuilder uses a single material for all geometry.
19
- // return comparePossiblyUndefined((lhTex: TextureMapping, rhTex: TextureMapping) => lhTex === rhTex ? 0 : compareStringsOrUndefined(lhTex.texture.key, rhTex.texture.key), lhs, rhs);
20
- return 0;
16
+ function compareTextureMappings(lhs, rhs) {
17
+ return (0, core_bentley_1.comparePossiblyUndefined)((lh, rh) => lh.compare(rh), lhs, rhs);
21
18
  }
22
19
  /** This class is used to determine if things can be batched together for display.
23
20
  * @internal
@@ -1 +1 @@
1
- {"version":3,"file":"DisplayParams.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/DisplayParams.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { assert, compareBooleans, compareNumbers, comparePossiblyUndefined, compareStringsOrUndefined } from \"@itwin/core-bentley\";\r\nimport { ColorDef, FillFlags, Gradient, GraphicParams, LinePixels, RenderMaterial, RenderTexture, TextureMapping } from \"@itwin/core-common\";\r\n\r\nfunction compareMaterials(lhs?: RenderMaterial, rhs?: RenderMaterial): number {\r\n return comparePossiblyUndefined((lhMat: RenderMaterial, rhMat: RenderMaterial) => lhMat === rhMat ? 0 : compareStringsOrUndefined(lhMat.key, rhMat.key), lhs, rhs);\r\n}\r\n\r\nfunction compareTextureMappings(_lhs?: TextureMapping, _rhs?: TextureMapping): number {\r\n // ###TODO we don't have a way of ordering the textures from the pattern/normal map(s) - not all textures have keys defined.\r\n // For now this will only work if the GraphicBuilder uses a single material for all geometry.\r\n // return comparePossiblyUndefined((lhTex: TextureMapping, rhTex: TextureMapping) => lhTex === rhTex ? 0 : compareStringsOrUndefined(lhTex.texture.key, rhTex.texture.key), lhs, rhs);\r\n return 0;\r\n}\r\n\r\n/** This class is used to determine if things can be batched together for display.\r\n * @internal\r\n */\r\nexport class DisplayParams {\r\n public static readonly minTransparency: number = 15; // Threshold below which we consider a color fully opaque\r\n public readonly type: DisplayParams.Type = DisplayParams.Type.Mesh;\r\n public readonly material?: RenderMaterial; // meshes only\r\n public readonly gradient?: Gradient.Symb;\r\n private readonly _textureMapping?: TextureMapping; // only if material is undefined - e.g. glyphs, gradients\r\n public readonly lineColor: ColorDef; // all types of geometry (edge color for meshes)\r\n public readonly fillColor: ColorDef; // meshes only\r\n public readonly width: number; // linear and mesh (edges)\r\n public readonly linePixels: LinePixels; // linear and mesh (edges)\r\n public readonly fillFlags: FillFlags; // meshes only\r\n public readonly ignoreLighting: boolean; // always true for text and linear geometry; true for meshes only if normals not desired\r\n\r\n public constructor(type: DisplayParams.Type, lineColor: ColorDef, fillColor: ColorDef, width: number = 0, linePixels: LinePixels = LinePixels.Solid,\r\n fillFlags: FillFlags = FillFlags.None, material?: RenderMaterial, gradient?: Gradient.Symb, ignoreLighting: boolean = false, textureMapping?: TextureMapping) {\r\n this.type = type;\r\n this.material = material;\r\n this.gradient = gradient;\r\n this.lineColor = DisplayParams.adjustTransparency(lineColor);\r\n this.fillColor = DisplayParams.adjustTransparency(fillColor);\r\n this.width = width;\r\n this.linePixels = linePixels;\r\n this.fillFlags = fillFlags;\r\n this.ignoreLighting = ignoreLighting;\r\n this._textureMapping = textureMapping;\r\n\r\n assert(undefined === material || undefined === textureMapping);\r\n }\r\n\r\n /** Creates a DisplayParams object for a particular type (mesh, linear, text) based on the specified GraphicParams. */\r\n public static createForType(type: DisplayParams.Type, gf: GraphicParams, resolveGradient?: (grad: Gradient.Symb) => RenderTexture | undefined, ignoreLighting = false): DisplayParams {\r\n const lineColor = DisplayParams.adjustTransparency(gf.lineColor);\r\n switch (type) {\r\n case DisplayParams.Type.Mesh: {\r\n let gradientMapping: TextureMapping | undefined;\r\n if (undefined !== gf.gradient && undefined !== resolveGradient) {\r\n const gradientTexture = resolveGradient(gf.gradient);\r\n if (undefined !== gradientTexture)\r\n gradientMapping = new TextureMapping(gradientTexture, new TextureMapping.Params());\r\n }\r\n return new DisplayParams(type, lineColor, DisplayParams.adjustTransparency(gf.fillColor), gf.rasterWidth, gf.linePixels, gf.fillFlags, gf.material, gf.gradient, ignoreLighting, gradientMapping);\r\n }\r\n case DisplayParams.Type.Linear:\r\n return new DisplayParams(type, lineColor, lineColor, gf.rasterWidth, gf.linePixels);\r\n default: // DisplayParams.Type.Text\r\n return new DisplayParams(type, lineColor, lineColor, 0, LinePixels.Solid, FillFlags.Always, undefined, undefined, true);\r\n }\r\n }\r\n\r\n /** Creates a DisplayParams object that describes mesh geometry based on the specified GraphicParams. */\r\n public static createForMesh(gf: GraphicParams, ignoreLighting: boolean, resolveGradient?: (grad: Gradient.Symb) => RenderTexture | undefined): DisplayParams {\r\n return DisplayParams.createForType(DisplayParams.Type.Mesh, gf, resolveGradient, ignoreLighting);\r\n }\r\n\r\n /** Creates a DisplayParams object that describes linear geometry based on the specified GraphicParams. */\r\n public static createForLinear(gf: GraphicParams): DisplayParams {\r\n return DisplayParams.createForType(DisplayParams.Type.Linear, gf);\r\n }\r\n\r\n /** Creates a DisplayParams object that describes text geometry based on the specified GraphicParams. */\r\n public static createForText(gf: GraphicParams): DisplayParams {\r\n return DisplayParams.createForType(DisplayParams.Type.Text, gf);\r\n }\r\n\r\n public get regionEdgeType(): DisplayParams.RegionEdgeType {\r\n if (this.hasBlankingFill)\r\n return DisplayParams.RegionEdgeType.None;\r\n\r\n if (this.gradient !== undefined && undefined !== this.gradient.flags) {\r\n // Even if the gradient is not outlined, produce an outline to be displayed as the region's edges when fill ViewFlag is off.\r\n const gradFlags: Gradient.Flags = this.gradient.flags;\r\n if (0 !== (gradFlags & Gradient.Flags.Outline) || FillFlags.None === (this.fillFlags & FillFlags.Always))\r\n return DisplayParams.RegionEdgeType.Outline;\r\n return DisplayParams.RegionEdgeType.None;\r\n }\r\n return (!this.fillColor.equals(this.lineColor)) ? DisplayParams.RegionEdgeType.Outline : DisplayParams.RegionEdgeType.Default;\r\n }\r\n\r\n public get wantRegionOutline(): boolean {\r\n return DisplayParams.RegionEdgeType.Outline === this.regionEdgeType;\r\n }\r\n\r\n public get hasBlankingFill(): boolean { return FillFlags.Blanking === (this.fillFlags & FillFlags.Blanking); }\r\n public get hasFillTransparency(): boolean { return 255 !== this.fillColor.getAlpha(); }\r\n public get hasLineTransparency(): boolean { return 255 !== this.lineColor.getAlpha(); }\r\n public get textureMapping(): TextureMapping | undefined { return undefined !== this.material ? this.material.textureMapping : this._textureMapping; }\r\n public get isTextured(): boolean { return undefined !== this.textureMapping; }\r\n\r\n /** Determines if the properties of this DisplayParams object are equal to those of another DisplayParams object. */\r\n public equals(rhs: DisplayParams, purpose: DisplayParams.ComparePurpose = DisplayParams.ComparePurpose.Strict): boolean {\r\n if (DisplayParams.ComparePurpose.Merge === purpose)\r\n return 0 === this.compareForMerge(rhs);\r\n else if (rhs === this)\r\n return true;\r\n\r\n if (this.type !== rhs.type)\r\n return false;\r\n if (this.ignoreLighting !== rhs.ignoreLighting)\r\n return false;\r\n if (this.width !== rhs.width)\r\n return false;\r\n if (this.linePixels !== rhs.linePixels)\r\n return false;\r\n if (this.fillFlags !== rhs.fillFlags)\r\n return false;\r\n if (this.wantRegionOutline !== rhs.wantRegionOutline)\r\n return false;\r\n if (this.material !== rhs.material)\r\n return false;\r\n if (this.textureMapping !== rhs.textureMapping)\r\n return false;\r\n\r\n if (!this.fillColor.equals(rhs.fillColor))\r\n return false;\r\n if (!this.lineColor.equals(rhs.lineColor))\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n public compareForMerge(rhs: DisplayParams): number {\r\n if (rhs === this)\r\n return 0;\r\n\r\n let diff = compareNumbers(this.type, rhs.type);\r\n if (0 === diff) {\r\n diff = compareBooleans(this.ignoreLighting, rhs.ignoreLighting);\r\n if (0 === diff) {\r\n diff = compareNumbers(this.width, rhs.width);\r\n if (0 === diff) {\r\n diff = compareNumbers(this.linePixels, rhs.linePixels);\r\n if (0 === diff) {\r\n diff = compareNumbers(this.fillFlags, rhs.fillFlags);\r\n if (0 === diff) {\r\n diff = compareBooleans(this.wantRegionOutline, rhs.wantRegionOutline);\r\n if (0 === diff) {\r\n diff = compareBooleans(this.hasFillTransparency, rhs.hasFillTransparency);\r\n if (0 === diff) {\r\n diff = compareBooleans(this.hasLineTransparency, rhs.hasLineTransparency);\r\n if (0 === diff) {\r\n diff = compareMaterials(this.material, rhs.material);\r\n if (0 === diff && undefined === this.material && this.isTextured) {\r\n diff = compareTextureMappings(this.textureMapping, rhs.textureMapping);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return diff;\r\n }\r\n\r\n /**\r\n * Given a ColorDef object, check its transparency and if it falls below the minimum, mark the color as fully opaque.\r\n * @return The original reference to the color provided, which has possibly been modified.\r\n */\r\n public static adjustTransparency(color: ColorDef): ColorDef {\r\n return (color.colors.t < DisplayParams.minTransparency) ? color.withTransparency(0) : color;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport namespace DisplayParams { // eslint-disable-line no-redeclare\r\n export enum Type {\r\n Mesh,\r\n Linear,\r\n Text,\r\n }\r\n\r\n export enum RegionEdgeType {\r\n None,\r\n Default,\r\n Outline,\r\n }\r\n\r\n export enum ComparePurpose {\r\n Merge, // considers colors equivalent if both have or both lack transparency\r\n Strict, // compares all members\r\n }\r\n}\r\n"]}
1
+ {"version":3,"file":"DisplayParams.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/DisplayParams.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { assert, compareBooleans, compareNumbers, comparePossiblyUndefined } from \"@itwin/core-bentley\";\r\nimport { ColorDef, FillFlags, Gradient, GraphicParams, LinePixels, RenderMaterial, RenderTexture, TextureMapping } from \"@itwin/core-common\";\r\n\r\nfunction compareMaterials(lhs?: RenderMaterial, rhs?: RenderMaterial): number {\r\n return comparePossiblyUndefined((lh, rh) => lh.compare(rh), lhs, rhs);\r\n}\r\n\r\nfunction compareTextureMappings(lhs?: TextureMapping, rhs?: TextureMapping): number {\r\n return comparePossiblyUndefined((lh, rh) => lh.compare(rh), lhs, rhs);\r\n}\r\n\r\n/** This class is used to determine if things can be batched together for display.\r\n * @internal\r\n */\r\nexport class DisplayParams {\r\n public static readonly minTransparency: number = 15; // Threshold below which we consider a color fully opaque\r\n public readonly type: DisplayParams.Type = DisplayParams.Type.Mesh;\r\n public readonly material?: RenderMaterial; // meshes only\r\n public readonly gradient?: Gradient.Symb;\r\n private readonly _textureMapping?: TextureMapping; // only if material is undefined - e.g. glyphs, gradients\r\n public readonly lineColor: ColorDef; // all types of geometry (edge color for meshes)\r\n public readonly fillColor: ColorDef; // meshes only\r\n public readonly width: number; // linear and mesh (edges)\r\n public readonly linePixels: LinePixels; // linear and mesh (edges)\r\n public readonly fillFlags: FillFlags; // meshes only\r\n public readonly ignoreLighting: boolean; // always true for text and linear geometry; true for meshes only if normals not desired\r\n\r\n public constructor(type: DisplayParams.Type, lineColor: ColorDef, fillColor: ColorDef, width: number = 0, linePixels: LinePixels = LinePixels.Solid,\r\n fillFlags: FillFlags = FillFlags.None, material?: RenderMaterial, gradient?: Gradient.Symb, ignoreLighting: boolean = false, textureMapping?: TextureMapping) {\r\n this.type = type;\r\n this.material = material;\r\n this.gradient = gradient;\r\n this.lineColor = DisplayParams.adjustTransparency(lineColor);\r\n this.fillColor = DisplayParams.adjustTransparency(fillColor);\r\n this.width = width;\r\n this.linePixels = linePixels;\r\n this.fillFlags = fillFlags;\r\n this.ignoreLighting = ignoreLighting;\r\n this._textureMapping = textureMapping;\r\n\r\n assert(undefined === material || undefined === textureMapping);\r\n }\r\n\r\n /** Creates a DisplayParams object for a particular type (mesh, linear, text) based on the specified GraphicParams. */\r\n public static createForType(type: DisplayParams.Type, gf: GraphicParams, resolveGradient?: (grad: Gradient.Symb) => RenderTexture | undefined, ignoreLighting = false): DisplayParams {\r\n const lineColor = DisplayParams.adjustTransparency(gf.lineColor);\r\n switch (type) {\r\n case DisplayParams.Type.Mesh: {\r\n let gradientMapping: TextureMapping | undefined;\r\n if (undefined !== gf.gradient && undefined !== resolveGradient) {\r\n const gradientTexture = resolveGradient(gf.gradient);\r\n if (undefined !== gradientTexture)\r\n gradientMapping = new TextureMapping(gradientTexture, new TextureMapping.Params());\r\n }\r\n return new DisplayParams(type, lineColor, DisplayParams.adjustTransparency(gf.fillColor), gf.rasterWidth, gf.linePixels, gf.fillFlags, gf.material, gf.gradient, ignoreLighting, gradientMapping);\r\n }\r\n case DisplayParams.Type.Linear:\r\n return new DisplayParams(type, lineColor, lineColor, gf.rasterWidth, gf.linePixels);\r\n default: // DisplayParams.Type.Text\r\n return new DisplayParams(type, lineColor, lineColor, 0, LinePixels.Solid, FillFlags.Always, undefined, undefined, true);\r\n }\r\n }\r\n\r\n /** Creates a DisplayParams object that describes mesh geometry based on the specified GraphicParams. */\r\n public static createForMesh(gf: GraphicParams, ignoreLighting: boolean, resolveGradient?: (grad: Gradient.Symb) => RenderTexture | undefined): DisplayParams {\r\n return DisplayParams.createForType(DisplayParams.Type.Mesh, gf, resolveGradient, ignoreLighting);\r\n }\r\n\r\n /** Creates a DisplayParams object that describes linear geometry based on the specified GraphicParams. */\r\n public static createForLinear(gf: GraphicParams): DisplayParams {\r\n return DisplayParams.createForType(DisplayParams.Type.Linear, gf);\r\n }\r\n\r\n /** Creates a DisplayParams object that describes text geometry based on the specified GraphicParams. */\r\n public static createForText(gf: GraphicParams): DisplayParams {\r\n return DisplayParams.createForType(DisplayParams.Type.Text, gf);\r\n }\r\n\r\n public get regionEdgeType(): DisplayParams.RegionEdgeType {\r\n if (this.hasBlankingFill)\r\n return DisplayParams.RegionEdgeType.None;\r\n\r\n if (this.gradient !== undefined && undefined !== this.gradient.flags) {\r\n // Even if the gradient is not outlined, produce an outline to be displayed as the region's edges when fill ViewFlag is off.\r\n const gradFlags: Gradient.Flags = this.gradient.flags;\r\n if (0 !== (gradFlags & Gradient.Flags.Outline) || FillFlags.None === (this.fillFlags & FillFlags.Always))\r\n return DisplayParams.RegionEdgeType.Outline;\r\n return DisplayParams.RegionEdgeType.None;\r\n }\r\n return (!this.fillColor.equals(this.lineColor)) ? DisplayParams.RegionEdgeType.Outline : DisplayParams.RegionEdgeType.Default;\r\n }\r\n\r\n public get wantRegionOutline(): boolean {\r\n return DisplayParams.RegionEdgeType.Outline === this.regionEdgeType;\r\n }\r\n\r\n public get hasBlankingFill(): boolean { return FillFlags.Blanking === (this.fillFlags & FillFlags.Blanking); }\r\n public get hasFillTransparency(): boolean { return 255 !== this.fillColor.getAlpha(); }\r\n public get hasLineTransparency(): boolean { return 255 !== this.lineColor.getAlpha(); }\r\n public get textureMapping(): TextureMapping | undefined { return undefined !== this.material ? this.material.textureMapping : this._textureMapping; }\r\n public get isTextured(): boolean { return undefined !== this.textureMapping; }\r\n\r\n /** Determines if the properties of this DisplayParams object are equal to those of another DisplayParams object. */\r\n public equals(rhs: DisplayParams, purpose: DisplayParams.ComparePurpose = DisplayParams.ComparePurpose.Strict): boolean {\r\n if (DisplayParams.ComparePurpose.Merge === purpose)\r\n return 0 === this.compareForMerge(rhs);\r\n else if (rhs === this)\r\n return true;\r\n\r\n if (this.type !== rhs.type)\r\n return false;\r\n if (this.ignoreLighting !== rhs.ignoreLighting)\r\n return false;\r\n if (this.width !== rhs.width)\r\n return false;\r\n if (this.linePixels !== rhs.linePixels)\r\n return false;\r\n if (this.fillFlags !== rhs.fillFlags)\r\n return false;\r\n if (this.wantRegionOutline !== rhs.wantRegionOutline)\r\n return false;\r\n if (this.material !== rhs.material)\r\n return false;\r\n if (this.textureMapping !== rhs.textureMapping)\r\n return false;\r\n\r\n if (!this.fillColor.equals(rhs.fillColor))\r\n return false;\r\n if (!this.lineColor.equals(rhs.lineColor))\r\n return false;\r\n\r\n return true;\r\n }\r\n\r\n public compareForMerge(rhs: DisplayParams): number {\r\n if (rhs === this)\r\n return 0;\r\n\r\n let diff = compareNumbers(this.type, rhs.type);\r\n if (0 === diff) {\r\n diff = compareBooleans(this.ignoreLighting, rhs.ignoreLighting);\r\n if (0 === diff) {\r\n diff = compareNumbers(this.width, rhs.width);\r\n if (0 === diff) {\r\n diff = compareNumbers(this.linePixels, rhs.linePixels);\r\n if (0 === diff) {\r\n diff = compareNumbers(this.fillFlags, rhs.fillFlags);\r\n if (0 === diff) {\r\n diff = compareBooleans(this.wantRegionOutline, rhs.wantRegionOutline);\r\n if (0 === diff) {\r\n diff = compareBooleans(this.hasFillTransparency, rhs.hasFillTransparency);\r\n if (0 === diff) {\r\n diff = compareBooleans(this.hasLineTransparency, rhs.hasLineTransparency);\r\n if (0 === diff) {\r\n diff = compareMaterials(this.material, rhs.material);\r\n if (0 === diff && undefined === this.material && this.isTextured) {\r\n diff = compareTextureMappings(this.textureMapping, rhs.textureMapping);\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n }\r\n\r\n return diff;\r\n }\r\n\r\n /**\r\n * Given a ColorDef object, check its transparency and if it falls below the minimum, mark the color as fully opaque.\r\n * @return The original reference to the color provided, which has possibly been modified.\r\n */\r\n public static adjustTransparency(color: ColorDef): ColorDef {\r\n return (color.colors.t < DisplayParams.minTransparency) ? color.withTransparency(0) : color;\r\n }\r\n}\r\n\r\n/** @internal */\r\nexport namespace DisplayParams { // eslint-disable-line no-redeclare\r\n export enum Type {\r\n Mesh,\r\n Linear,\r\n Text,\r\n }\r\n\r\n export enum RegionEdgeType {\r\n None,\r\n Default,\r\n Outline,\r\n }\r\n\r\n export enum ComparePurpose {\r\n Merge, // considers colors equivalent if both have or both lack transparency\r\n Strict, // compares all members\r\n }\r\n}\r\n"]}
@@ -3,12 +3,14 @@
3
3
  */
4
4
  import { Range3dProps, XYAndZ } from "@itwin/core-geometry";
5
5
  import { ImdlModel } from "../../imdl/ImdlModel";
6
- import { GraphicDescription, GraphicDescriptionBuilder, GraphicDescriptionBuilderOptions, GraphicDescriptionConstraints, GraphicDescriptionContext, GraphicDescriptionContextProps, WorkerGraphicDescriptionContext, WorkerGraphicDescriptionContextProps } from "../../render/GraphicDescriptionBuilder";
6
+ import { GraphicDescription, GraphicDescriptionBuilder, GraphicDescriptionBuilderOptions } from "../../render/GraphicDescriptionBuilder";
7
7
  import { GraphicType } from "../../render/GraphicType";
8
8
  import { GraphicAssembler } from "../../render/GraphicAssembler";
9
+ import { Gradient } from "@itwin/core-common";
9
10
  import { BatchOptions } from "../../render/BatchOptions";
10
- import { Id64String, TransientIdSequence, TransientIdSequenceProps } from "@itwin/core-bentley";
11
+ import { Id64String } from "@itwin/core-bentley";
11
12
  import { _implementationProhibited } from "../Symbols";
13
+ import { GraphicDescriptionContext } from "../../render/GraphicDescriptionContext";
12
14
  export type BatchDescription = Omit<BatchOptions, "tileId"> & {
13
15
  featureTable: ImdlModel.FeatureTable;
14
16
  range: Range3dProps;
@@ -26,30 +28,10 @@ export interface GraphicDescriptionImpl extends GraphicDescription {
26
28
  */
27
29
  remapContext?: GraphicDescriptionContext;
28
30
  }
29
- export interface WorkerGraphicDescriptionContextPropsImpl extends WorkerGraphicDescriptionContextProps {
30
- readonly constraints: GraphicDescriptionConstraints;
31
- readonly transientIds: TransientIdSequenceProps;
32
- }
33
- export interface GraphicDescriptionContextPropsImpl extends GraphicDescriptionContextProps {
34
- readonly transientIds: TransientIdSequenceProps;
35
- /** This is set to true the first time we use RenderSystem.createGraphicDescriptionContext on it.
36
- * That prevents us from remapping transient Ids to different transient Ids, recreating duplicate textures+materials, etc if
37
- * somebody tries to resolve the same props more than once.
38
- * We will throw if somebody tries to re-resolve a GraphicDescriptionContextPropsImpl.
39
- */
40
- resolved?: boolean;
41
- }
42
- export declare class WorkerGraphicDescriptionContextImpl implements WorkerGraphicDescriptionContext {
43
- readonly [_implementationProhibited]: undefined;
44
- readonly constraints: GraphicDescriptionConstraints;
45
- readonly transientIds: TransientIdSequence;
46
- constructor(props: WorkerGraphicDescriptionContextProps);
47
- toProps(_transferables: Set<Transferable>): GraphicDescriptionContextPropsImpl;
48
- }
49
31
  export declare class GraphicDescriptionBuilderImpl extends GraphicAssembler implements GraphicDescriptionBuilder {
50
32
  readonly [_implementationProhibited]: undefined;
51
33
  private readonly _computeChordTolerance;
52
- private readonly _constraints;
34
+ private readonly _context;
53
35
  private readonly _viewIndependentOrigin?;
54
36
  constructor(options: GraphicDescriptionBuilderOptions);
55
37
  finish(): GraphicDescriptionImpl;
@@ -57,7 +39,7 @@ export declare class GraphicDescriptionBuilderImpl extends GraphicAssembler impl
57
39
  private createMeshPrimitive;
58
40
  private createPolylinePrimitive;
59
41
  private createPointStringPrimitive;
60
- protected resolveGradient(): undefined;
42
+ protected resolveGradient(gradient: Gradient.Symb): import("@itwin/core-common").RenderTexture;
61
43
  }
62
44
  export declare function isGraphicDescription(description: GraphicDescription): description is GraphicDescriptionImpl;
63
45
  export declare function collectGraphicDescriptionTransferables(xfers: Set<Transferable>, description: GraphicDescription): void;
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicDescriptionBuilderImpl.d.ts","sourceRoot":"","sources":["../../../../../src/common/internal/render/GraphicDescriptionBuilderImpl.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAoB,YAAY,EAAa,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAA6B,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EACwC,kBAAkB,EAAE,yBAAyB,EAAE,gCAAgC,EAAE,6BAA6B,EAAE,yBAAyB,EAAE,8BAA8B,EACtN,+BAA+B,EAAE,oCAAoC,EACtE,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AAEjE,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAU,UAAU,EAAE,mBAAmB,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAOxG,OAAO,EAAgB,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAErE,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG;IAC5D,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC;IACrC,KAAK,EAAE,YAAY,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAChE,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;;OAGG;IACH,YAAY,CAAC,EAAE,yBAAyB,CAAC;CAC1C;AAED,MAAM,WAAW,wCAAyC,SAAQ,oCAAoC;IACpG,QAAQ,CAAC,WAAW,EAAE,6BAA6B,CAAC;IACpD,QAAQ,CAAC,YAAY,EAAE,wBAAwB,CAAC;CACjD;AAED,MAAM,WAAW,kCAAmC,SAAQ,8BAA8B;IACxF,QAAQ,CAAC,YAAY,EAAE,wBAAwB,CAAC;IAChD;;;;OAIG;IACH,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,mCAAoC,YAAW,+BAA+B;IACzF,SAAgB,CAAC,yBAAyB,CAAC,YAAa;IACxD,SAAgB,WAAW,EAAE,6BAA6B,CAAC;IAC3D,SAAgB,YAAY,EAAE,mBAAmB,CAAC;gBAE/B,KAAK,EAAE,oCAAoC;IAUvD,OAAO,CAAC,cAAc,EAAE,GAAG,CAAC,YAAY,CAAC,GAAG,kCAAkC;CAOtF;AAED,qBAAa,6BAA8B,SAAQ,gBAAiB,YAAW,yBAAyB;IACtG,SAAgB,CAAC,yBAAyB,CAAC,YAAa;IACxD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAgE;IACvG,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAgC;IAC7D,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAU;gBAE/B,OAAO,EAAE,gCAAgC;IAsBrD,MAAM,IAAI,sBAAsB;IA+GvC,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,mBAAmB;IAqB3B,OAAO,CAAC,uBAAuB;IAoB/B,OAAO,CAAC,0BAA0B;cAgBf,eAAe;CAInC;AAWD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,kBAAkB,GAAG,WAAW,IAAI,sBAAsB,CAgB3G;AAED,wBAAgB,sCAAsC,CAAC,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAQtH"}
1
+ {"version":3,"file":"GraphicDescriptionBuilderImpl.d.ts","sourceRoot":"","sources":["../../../../../src/common/internal/render/GraphicDescriptionBuilderImpl.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH,OAAO,EAAoB,YAAY,EAAa,MAAM,EAAE,MAAM,sBAAsB,CAAC;AACzF,OAAO,EAA6B,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EACwC,kBAAkB,EAAE,yBAAyB,EAAE,gCAAgC,EAC7H,MAAM,wCAAwC,CAAC;AAChD,OAAO,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACvD,OAAO,EAAE,gBAAgB,EAAE,MAAM,+BAA+B,CAAC;AACjE,OAAO,EAAE,QAAQ,EAAoC,MAAM,oBAAoB,CAAC;AAChF,OAAO,EAAE,YAAY,EAAE,MAAM,2BAA2B,CAAC;AACzD,OAAO,EAAU,UAAU,EAAuB,MAAM,qBAAqB,CAAC;AAO9E,OAAO,EAAgB,yBAAyB,EAAE,MAAM,YAAY,CAAC;AAErE,OAAO,EAAE,yBAAyB,EAAE,MAAM,wCAAwC,CAAC;AAEnF,MAAM,MAAM,gBAAgB,GAAG,IAAI,CAAC,YAAY,EAAE,QAAQ,CAAC,GAAG;IAC5D,YAAY,EAAE,SAAS,CAAC,YAAY,CAAC;IACrC,KAAK,EAAE,YAAY,CAAC;IACpB,kBAAkB,CAAC,EAAE,OAAO,CAAC;IAC7B,OAAO,EAAE,UAAU,CAAC;CACrB,CAAC;AAEF,MAAM,WAAW,sBAAuB,SAAQ,kBAAkB;IAChE,IAAI,EAAE,WAAW,CAAC;IAClB,UAAU,EAAE,SAAS,CAAC,SAAS,EAAE,CAAC;IAClC,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,gBAAgB,CAAC;IACzB;;;OAGG;IACH,YAAY,CAAC,EAAE,yBAAyB,CAAC;CAC1C;AAED,qBAAa,6BAA8B,SAAQ,gBAAiB,YAAW,yBAAyB;IACtG,SAAgB,CAAC,yBAAyB,CAAC,YAAa;IACxD,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAgE;IACvG,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAsC;IAC/D,OAAO,CAAC,QAAQ,CAAC,sBAAsB,CAAC,CAAU;gBAE/B,OAAO,EAAE,gCAAgC;IA0BrD,MAAM,IAAI,sBAAsB;IA+GvC,OAAO,CAAC,eAAe;IAcvB,OAAO,CAAC,mBAAmB;IAkC3B,OAAO,CAAC,uBAAuB;IAoB/B,OAAO,CAAC,0BAA0B;cAgBf,eAAe,CAAC,QAAQ,EAAE,QAAQ,CAAC,IAAI;CAG3D;AAWD,wBAAgB,oBAAoB,CAAC,WAAW,EAAE,kBAAkB,GAAG,WAAW,IAAI,sBAAsB,CAG3G;AAED,wBAAgB,sCAAsC,CAAC,KAAK,EAAE,GAAG,CAAC,YAAY,CAAC,EAAE,WAAW,EAAE,kBAAkB,GAAG,IAAI,CAQtH"}
@@ -6,9 +6,9 @@
6
6
  /** @packageDocumentation
7
7
  * @module Rendering
8
8
  */
9
- var _a, _b;
9
+ var _a;
10
10
  Object.defineProperty(exports, "__esModule", { value: true });
11
- exports.collectGraphicDescriptionTransferables = exports.isGraphicDescription = exports.GraphicDescriptionBuilderImpl = exports.WorkerGraphicDescriptionContextImpl = void 0;
11
+ exports.collectGraphicDescriptionTransferables = exports.isGraphicDescription = exports.GraphicDescriptionBuilderImpl = void 0;
12
12
  const core_geometry_1 = require("@itwin/core-geometry");
13
13
  const ImdlModel_1 = require("../../imdl/ImdlModel");
14
14
  const GraphicType_1 = require("../../render/GraphicType");
@@ -20,26 +20,7 @@ const PolylineParams_1 = require("./PolylineParams");
20
20
  const VertexTableBuilder_1 = require("./VertexTableBuilder");
21
21
  const ParseImdlDocument_1 = require("../../imdl/ParseImdlDocument");
22
22
  const Symbols_1 = require("../Symbols");
23
- class WorkerGraphicDescriptionContextImpl {
24
- constructor(props) {
25
- this[_a] = undefined;
26
- const propsImpl = props;
27
- if (typeof propsImpl.transientIds !== "object" || typeof propsImpl.constraints !== "object") {
28
- throw new Error("Invalid WorkerGraphicDescriptionContextProps");
29
- }
30
- this.constraints = propsImpl.constraints;
31
- this.transientIds = core_bentley_1.TransientIdSequence.fromJSON(propsImpl.transientIds);
32
- }
33
- toProps(_transferables) {
34
- // We don't yet have any transferable objects. In the future we expect to support transferring texture image data for textures created on the worker thread.
35
- return {
36
- [Symbols_1._implementationProhibited]: undefined,
37
- transientIds: this.transientIds.toJSON(),
38
- };
39
- }
40
- }
41
- exports.WorkerGraphicDescriptionContextImpl = WorkerGraphicDescriptionContextImpl;
42
- _a = Symbols_1._implementationProhibited;
23
+ const GraphicDescriptionContextImpl_1 = require("./GraphicDescriptionContextImpl");
43
24
  class GraphicDescriptionBuilderImpl extends GraphicAssembler_1.GraphicAssembler {
44
25
  constructor(options) {
45
26
  const type = options.type;
@@ -56,10 +37,13 @@ class GraphicDescriptionBuilderImpl extends GraphicAssembler_1.GraphicAssembler
56
37
  wantNormals,
57
38
  preserveOrder,
58
39
  });
59
- this[_b] = undefined;
40
+ this[_a] = undefined;
60
41
  this._computeChordTolerance = options.computeChordTolerance;
61
- this._constraints = options.constraints;
62
42
  this._viewIndependentOrigin = options.viewIndependentOrigin?.clone();
43
+ this._context = options.context;
44
+ if (!(this._context.transientIds instanceof core_bentley_1.TransientIdSequence)) {
45
+ throw new Error("Invalid WorkerGraphicDescriptionContext");
46
+ }
63
47
  }
64
48
  finish() {
65
49
  const description = {
@@ -176,7 +160,19 @@ class GraphicDescriptionBuilderImpl extends GraphicAssembler_1.GraphicAssembler
176
160
  return polylineArgs.flags.isDisjoint ? this.createPointStringPrimitive(polylineArgs) : this.createPolylinePrimitive(polylineArgs);
177
161
  }
178
162
  createMeshPrimitive(args) {
179
- const params = (0, VertexTableBuilder_1.createMeshParams)(args, this._constraints.maxTextureSize, true);
163
+ const params = (0, VertexTableBuilder_1.createMeshParams)(args, this._context.constraints.maxTextureSize, true);
164
+ let material;
165
+ const mat = params.surface.material;
166
+ if (mat) {
167
+ (0, core_bentley_1.assert)(mat.isAtlas === false && mat.material instanceof GraphicDescriptionContextImpl_1.WorkerMaterial);
168
+ material = mat.material.toImdl();
169
+ }
170
+ let textureMapping;
171
+ const tex = params.surface.textureMapping;
172
+ if (tex) {
173
+ (0, core_bentley_1.assert)(tex.texture instanceof GraphicDescriptionContextImpl_1.WorkerTexture);
174
+ textureMapping = { alwaysDisplayed: false, texture: tex.texture.index.toString(10) };
175
+ }
180
176
  return {
181
177
  type: "mesh",
182
178
  params: {
@@ -187,15 +183,14 @@ class GraphicDescriptionBuilderImpl extends GraphicAssembler_1.GraphicAssembler
187
183
  surface: {
188
184
  ...params.surface,
189
185
  indices: params.surface.indices.data,
190
- // ###TODO support materials and textures.
191
- material: undefined,
192
- textureMapping: undefined,
186
+ material,
187
+ textureMapping,
193
188
  },
194
189
  },
195
190
  };
196
191
  }
197
192
  createPolylinePrimitive(args) {
198
- const params = (0, PolylineParams_1.createPolylineParams)(args, this._constraints.maxTextureSize);
193
+ const params = (0, PolylineParams_1.createPolylineParams)(args, this._context.constraints.maxTextureSize);
199
194
  if (!params) {
200
195
  return undefined;
201
196
  }
@@ -213,7 +208,7 @@ class GraphicDescriptionBuilderImpl extends GraphicAssembler_1.GraphicAssembler
213
208
  };
214
209
  }
215
210
  createPointStringPrimitive(args) {
216
- const params = (0, PointStringParams_1.createPointStringParams)(args, this._constraints.maxTextureSize);
211
+ const params = (0, PointStringParams_1.createPointStringParams)(args, this._context.constraints.maxTextureSize);
217
212
  if (!params) {
218
213
  return undefined;
219
214
  }
@@ -226,13 +221,12 @@ class GraphicDescriptionBuilderImpl extends GraphicAssembler_1.GraphicAssembler
226
221
  },
227
222
  };
228
223
  }
229
- resolveGradient() {
230
- // ###TODO support textures and materials.
231
- return undefined;
224
+ resolveGradient(gradient) {
225
+ return this._context.createGradientTexture(gradient);
232
226
  }
233
227
  }
234
228
  exports.GraphicDescriptionBuilderImpl = GraphicDescriptionBuilderImpl;
235
- _b = Symbols_1._implementationProhibited;
229
+ _a = Symbols_1._implementationProhibited;
236
230
  function convertVertexTable(src) {
237
231
  return {
238
232
  ...src,
@@ -243,19 +237,7 @@ function convertVertexTable(src) {
243
237
  }
244
238
  function isGraphicDescription(description) {
245
239
  const descr = description;
246
- if ("object" !== typeof descr || !Array.isArray(descr.primitives)) {
247
- return false;
248
- }
249
- switch (descr.type) {
250
- case GraphicType_1.GraphicType.ViewBackground:
251
- case GraphicType_1.GraphicType.Scene:
252
- case GraphicType_1.GraphicType.WorldDecoration:
253
- case GraphicType_1.GraphicType.WorldOverlay:
254
- case GraphicType_1.GraphicType.ViewOverlay:
255
- return true;
256
- default:
257
- return false;
258
- }
240
+ return "object" === typeof descr && Array.isArray(descr.primitives) && "number" === typeof descr.type;
259
241
  }
260
242
  exports.isGraphicDescription = isGraphicDescription;
261
243
  function collectGraphicDescriptionTransferables(xfers, description) {
@@ -1 +1 @@
1
- {"version":3,"file":"GraphicDescriptionBuilderImpl.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/GraphicDescriptionBuilderImpl.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { Point3d, Range3d, Range3dProps, Transform, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { addPrimitiveTransferables, ImdlModel } from \"../../imdl/ImdlModel\";\r\nimport {\r\n ComputeGraphicDescriptionChordToleranceArgs, GraphicDescription, GraphicDescriptionBuilder, GraphicDescriptionBuilderOptions, GraphicDescriptionConstraints, GraphicDescriptionContext, GraphicDescriptionContextProps,\r\n WorkerGraphicDescriptionContext, WorkerGraphicDescriptionContextProps,\r\n} from \"../../render/GraphicDescriptionBuilder\";\r\nimport { GraphicType } from \"../../render/GraphicType\";\r\nimport { GraphicAssembler } from \"../../render/GraphicAssembler\";\r\nimport { PackedFeatureTable, QPoint3dList } from \"@itwin/core-common\";\r\nimport { BatchOptions } from \"../../render/BatchOptions\";\r\nimport { assert, Id64String, TransientIdSequence, TransientIdSequenceProps } from \"@itwin/core-bentley\";\r\nimport { Mesh, MeshArgs, PolylineArgs } from \"./MeshPrimitives\";\r\nimport { createPointStringParams } from \"./PointStringParams\";\r\nimport { VertexTable } from \"./VertexTable\";\r\nimport { createPolylineParams } from \"./PolylineParams\";\r\nimport { createMeshParams } from \"./VertexTableBuilder\";\r\nimport { edgeParamsToImdl } from \"../../imdl/ParseImdlDocument\";\r\nimport { _accumulator, _implementationProhibited } from \"../Symbols\";\r\n\r\nexport type BatchDescription = Omit<BatchOptions, \"tileId\"> & {\r\n featureTable: ImdlModel.FeatureTable;\r\n range: Range3dProps;\r\n isVolumeClassifier?: boolean;\r\n modelId: Id64String;\r\n};\r\n\r\nexport interface GraphicDescriptionImpl extends GraphicDescription {\r\n type: GraphicType;\r\n primitives: ImdlModel.Primitive[];\r\n translation?: XYAndZ;\r\n batch?: BatchDescription;\r\n /** Initialized the first time createGraphicFromDescription remaps the description in-place using a GraphicDescriptionContext.\r\n * Subsequently attempting to remap using same context should be a no-op.\r\n * Attempting to remap using a different context is an error.\r\n */\r\n remapContext?: GraphicDescriptionContext;\r\n}\r\n\r\nexport interface WorkerGraphicDescriptionContextPropsImpl extends WorkerGraphicDescriptionContextProps {\r\n readonly constraints: GraphicDescriptionConstraints;\r\n readonly transientIds: TransientIdSequenceProps;\r\n}\r\n\r\nexport interface GraphicDescriptionContextPropsImpl extends GraphicDescriptionContextProps {\r\n readonly transientIds: TransientIdSequenceProps;\r\n /** This is set to true the first time we use RenderSystem.createGraphicDescriptionContext on it.\r\n * That prevents us from remapping transient Ids to different transient Ids, recreating duplicate textures+materials, etc if\r\n * somebody tries to resolve the same props more than once.\r\n * We will throw if somebody tries to re-resolve a GraphicDescriptionContextPropsImpl.\r\n */\r\n resolved?: boolean;\r\n}\r\n\r\nexport class WorkerGraphicDescriptionContextImpl implements WorkerGraphicDescriptionContext {\r\n public readonly [_implementationProhibited] = undefined;\r\n public readonly constraints: GraphicDescriptionConstraints;\r\n public readonly transientIds: TransientIdSequence;\r\n\r\n public constructor(props: WorkerGraphicDescriptionContextProps) {\r\n const propsImpl = props as WorkerGraphicDescriptionContextPropsImpl;\r\n if (typeof propsImpl.transientIds !== \"object\" || typeof propsImpl.constraints !== \"object\") {\r\n throw new Error(\"Invalid WorkerGraphicDescriptionContextProps\");\r\n }\r\n\r\n this.constraints = propsImpl.constraints;\r\n this.transientIds = TransientIdSequence.fromJSON(propsImpl.transientIds);\r\n }\r\n\r\n public toProps(_transferables: Set<Transferable>): GraphicDescriptionContextPropsImpl {\r\n // We don't yet have any transferable objects. In the future we expect to support transferring texture image data for textures created on the worker thread.\r\n return {\r\n [_implementationProhibited]: undefined,\r\n transientIds: this.transientIds.toJSON(),\r\n };\r\n }\r\n}\r\n\r\nexport class GraphicDescriptionBuilderImpl extends GraphicAssembler implements GraphicDescriptionBuilder {\r\n public readonly [_implementationProhibited] = undefined;\r\n private readonly _computeChordTolerance: (args: ComputeGraphicDescriptionChordToleranceArgs) => number;\r\n private readonly _constraints: GraphicDescriptionConstraints;\r\n private readonly _viewIndependentOrigin?: Point3d;\r\n\r\n public constructor(options: GraphicDescriptionBuilderOptions) {\r\n const type = options.type;\r\n const placement = options.placement ?? Transform.createIdentity();\r\n const wantEdges = options.generateEdges ?? type === GraphicType.Scene;\r\n const wantNormals = wantEdges || type === GraphicType.Scene;\r\n const preserveOrder = type === GraphicType.ViewOverlay || type === GraphicType.WorldOverlay || type === GraphicType.ViewBackground;\r\n\r\n super({\r\n ...options,\r\n [_implementationProhibited]: undefined,\r\n type,\r\n placement,\r\n wantEdges,\r\n wantNormals,\r\n preserveOrder,\r\n });\r\n\r\n this._computeChordTolerance = options.computeChordTolerance;\r\n this._constraints = options.constraints;\r\n this._viewIndependentOrigin = options.viewIndependentOrigin?.clone();\r\n }\r\n\r\n public finish(): GraphicDescriptionImpl {\r\n const description: GraphicDescriptionImpl = {\r\n [_implementationProhibited]: undefined,\r\n type: this.type,\r\n primitives: [],\r\n };\r\n\r\n if (this[_accumulator].isEmpty) {\r\n return description;\r\n }\r\n\r\n const tolerance = this._computeChordTolerance({ builder: this, computeRange: () => this[_accumulator].geometries.computeRange() });\r\n const meshes = this[_accumulator].toMeshes(this, tolerance, this.pickable);\r\n if (meshes.length === 0) {\r\n return description;\r\n }\r\n\r\n const featureTable = this.pickable && meshes.features?.anyDefined ? meshes.features : undefined;\r\n if (featureTable) {\r\n assert(undefined !== this.pickable);\r\n const features = PackedFeatureTable.pack(featureTable);\r\n const range = meshes.range ?? new Range3d();\r\n description.batch = {\r\n ...this.pickable,\r\n range: range.toJSON(),\r\n modelId: this.pickable.modelId ?? this.pickable.id,\r\n featureTable: {\r\n multiModel: false,\r\n data: features.data,\r\n numFeatures: features.numFeatures,\r\n animationNodeIds: features.animationNodeIds,\r\n },\r\n };\r\n }\r\n\r\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\r\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\r\n // it in the transform instead.\r\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\r\n // Apply the inverse translation to put them back into model space.\r\n let transformOrigin: Point3d | undefined;\r\n let meshesRangeOffset = false;\r\n\r\n for (const mesh of meshes) {\r\n const verts = mesh.points;\r\n if (!transformOrigin) {\r\n // This is the first mesh we've processed.\r\n if (verts instanceof QPoint3dList) {\r\n transformOrigin = verts.params.origin.clone();\r\n verts.params.origin.setZero();\r\n } else {\r\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\r\n // We can't modify it directly, but if we temporarily modify the range of the mesh used to create it the qOrigin will get created properly.\r\n // Range is shared (not cloned) by all meshes and the mesh list itself, so modifying the range of the meshlist will modify it for all meshes.\r\n // We will then later add this offset back to the range once all of the graphics have been created because it is needed unmodified for locate.\r\n transformOrigin = verts.range.center;\r\n if (!meshesRangeOffset) {\r\n meshes.range?.low.subtractInPlace(transformOrigin);\r\n meshes.range?.high.subtractInPlace(transformOrigin);\r\n meshesRangeOffset = true;\r\n }\r\n }\r\n } else {\r\n if (verts instanceof QPoint3dList) {\r\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\r\n verts.params.origin.setZero();\r\n } else {\r\n assert(verts.range.center.isAlmostZero);\r\n }\r\n }\r\n\r\n const primitive = this.createPrimitive(mesh);\r\n if (primitive) {\r\n const origin = this._viewIndependentOrigin;\r\n if (origin) {\r\n primitive.modifier = {\r\n type: \"viewIndependentOrigin\",\r\n origin: { x: origin.x, y: origin.y, z: origin.z },\r\n };\r\n /* ###TODO } else if (this._instances) {\r\n primitive.modifier = {\r\n ...this._instances,\r\n type: \"instances\",\r\n transformCenter: { x: this._instances.transformCenter.x, y: this._instances.transformCenter.y, z: this._instances.transformCenter.z },\r\n range: this._instances.range ? {\r\n low: { x: this._instances.range.low.x, y: this._instances.range.low.y, z: this._instances.range.low.z },\r\n high: { x: this._instances.range.high.x, y: this._instances.range.high.y, z: this._instances.range.high.z },\r\n } : undefined,\r\n };\r\n */\r\n }\r\n\r\n description.primitives.push(primitive);\r\n }\r\n }\r\n\r\n // Restore the meshes range if we modified it above.\r\n if (meshesRangeOffset) {\r\n assert(undefined !== transformOrigin);\r\n meshes.range?.low.addInPlace(transformOrigin);\r\n meshes.range?.high.addInPlace(transformOrigin);\r\n }\r\n\r\n this[_accumulator].clear();\r\n if (transformOrigin) {\r\n description.translation = { x: transformOrigin.x, y: transformOrigin.y, z: transformOrigin.z };\r\n }\r\n\r\n return description;\r\n }\r\n\r\n private createPrimitive(mesh: Mesh): ImdlModel.Primitive | undefined {\r\n const meshArgs = mesh.toMeshArgs();\r\n if (meshArgs) {\r\n return this.createMeshPrimitive(meshArgs);\r\n }\r\n\r\n const polylineArgs = mesh.toPolylineArgs();\r\n if (!polylineArgs) {\r\n return undefined;\r\n }\r\n\r\n return polylineArgs.flags.isDisjoint ? this.createPointStringPrimitive(polylineArgs) : this.createPolylinePrimitive(polylineArgs);\r\n }\r\n\r\n private createMeshPrimitive(args: MeshArgs): ImdlModel.Primitive | undefined {\r\n const params = createMeshParams(args, this._constraints.maxTextureSize, true);\r\n\r\n return {\r\n type: \"mesh\",\r\n params: {\r\n ...params,\r\n vertices: convertVertexTable(params.vertices),\r\n auxChannels: params.auxChannels?.toJSON(),\r\n edges: params.edges ? edgeParamsToImdl(params.edges) : undefined,\r\n surface: {\r\n ...params.surface,\r\n indices: params.surface.indices.data,\r\n // ###TODO support materials and textures.\r\n material: undefined,\r\n textureMapping: undefined,\r\n },\r\n },\r\n };\r\n }\r\n\r\n private createPolylinePrimitive(args: PolylineArgs): ImdlModel.Primitive | undefined {\r\n const params = createPolylineParams(args, this._constraints.maxTextureSize);\r\n if (!params) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n type: \"polyline\",\r\n params: {\r\n ...params,\r\n vertices: convertVertexTable(params.vertices),\r\n polyline: {\r\n indices: params.polyline.indices.data,\r\n prevIndices: params.polyline.prevIndices.data,\r\n nextIndicesAndParams: params.polyline.nextIndicesAndParams,\r\n },\r\n },\r\n };\r\n }\r\n\r\n private createPointStringPrimitive(args: PolylineArgs): ImdlModel.Primitive | undefined {\r\n const params = createPointStringParams(args, this._constraints.maxTextureSize);\r\n if (!params) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n type: \"point\",\r\n params: {\r\n indices: params.indices.data,\r\n vertices: convertVertexTable(params.vertices),\r\n weight: params.weight,\r\n },\r\n };\r\n }\r\n\r\n protected override resolveGradient() {\r\n // ###TODO support textures and materials.\r\n return undefined;\r\n }\r\n}\r\n\r\nfunction convertVertexTable(src: VertexTable): ImdlModel.VertexTable {\r\n return {\r\n ...src,\r\n qparams: src.qparams.toJSON(),\r\n uvParams: src.uvParams?.toJSON(),\r\n uniformColor: src.uniformColor?.toJSON(),\r\n };\r\n}\r\n\r\nexport function isGraphicDescription(description: GraphicDescription): description is GraphicDescriptionImpl {\r\n const descr = description as any;\r\n if (\"object\" !== typeof descr || !Array.isArray(descr.primitives)) {\r\n return false;\r\n }\r\n\r\n switch (descr.type) {\r\n case GraphicType.ViewBackground:\r\n case GraphicType.Scene:\r\n case GraphicType.WorldDecoration:\r\n case GraphicType.WorldOverlay:\r\n case GraphicType.ViewOverlay:\r\n return true;\r\n default:\r\n return false;\r\n }\r\n}\r\n\r\nexport function collectGraphicDescriptionTransferables(xfers: Set<Transferable>, description: GraphicDescription): void {\r\n if (!isGraphicDescription(description)) {\r\n throw new Error(\"Invalid GraphicDescription\");\r\n }\r\n\r\n for (const primitive of description.primitives) {\r\n addPrimitiveTransferables(xfers, primitive);\r\n }\r\n}\r\n\r\n"]}
1
+ {"version":3,"file":"GraphicDescriptionBuilderImpl.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/GraphicDescriptionBuilderImpl.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Rendering\r\n */\r\n\r\nimport { Point3d, Range3d, Range3dProps, Transform, XYAndZ } from \"@itwin/core-geometry\";\r\nimport { addPrimitiveTransferables, ImdlModel } from \"../../imdl/ImdlModel\";\r\nimport {\r\n ComputeGraphicDescriptionChordToleranceArgs, GraphicDescription, GraphicDescriptionBuilder, GraphicDescriptionBuilderOptions,\r\n} from \"../../render/GraphicDescriptionBuilder\";\r\nimport { GraphicType } from \"../../render/GraphicType\";\r\nimport { GraphicAssembler } from \"../../render/GraphicAssembler\";\r\nimport { Gradient, PackedFeatureTable, QPoint3dList } from \"@itwin/core-common\";\r\nimport { BatchOptions } from \"../../render/BatchOptions\";\r\nimport { assert, Id64String, TransientIdSequence } from \"@itwin/core-bentley\";\r\nimport { Mesh, MeshArgs, PolylineArgs } from \"./MeshPrimitives\";\r\nimport { createPointStringParams } from \"./PointStringParams\";\r\nimport { VertexTable } from \"./VertexTable\";\r\nimport { createPolylineParams } from \"./PolylineParams\";\r\nimport { createMeshParams } from \"./VertexTableBuilder\";\r\nimport { edgeParamsToImdl } from \"../../imdl/ParseImdlDocument\";\r\nimport { _accumulator, _implementationProhibited } from \"../Symbols\";\r\nimport { WorkerGraphicDescriptionContextImpl, WorkerMaterial, WorkerTexture } from \"./GraphicDescriptionContextImpl\";\r\nimport { GraphicDescriptionContext } from \"../../render/GraphicDescriptionContext\";\r\n\r\nexport type BatchDescription = Omit<BatchOptions, \"tileId\"> & {\r\n featureTable: ImdlModel.FeatureTable;\r\n range: Range3dProps;\r\n isVolumeClassifier?: boolean;\r\n modelId: Id64String;\r\n};\r\n\r\nexport interface GraphicDescriptionImpl extends GraphicDescription {\r\n type: GraphicType;\r\n primitives: ImdlModel.Primitive[];\r\n translation?: XYAndZ;\r\n batch?: BatchDescription;\r\n /** Initialized the first time createGraphicFromDescription remaps the description in-place using a GraphicDescriptionContext.\r\n * Subsequently attempting to remap using same context should be a no-op.\r\n * Attempting to remap using a different context is an error.\r\n */\r\n remapContext?: GraphicDescriptionContext;\r\n}\r\n\r\nexport class GraphicDescriptionBuilderImpl extends GraphicAssembler implements GraphicDescriptionBuilder {\r\n public readonly [_implementationProhibited] = undefined;\r\n private readonly _computeChordTolerance: (args: ComputeGraphicDescriptionChordToleranceArgs) => number;\r\n private readonly _context: WorkerGraphicDescriptionContextImpl;\r\n private readonly _viewIndependentOrigin?: Point3d;\r\n\r\n public constructor(options: GraphicDescriptionBuilderOptions) {\r\n const type = options.type;\r\n const placement = options.placement ?? Transform.createIdentity();\r\n const wantEdges = options.generateEdges ?? type === GraphicType.Scene;\r\n const wantNormals = wantEdges || type === GraphicType.Scene;\r\n const preserveOrder = type === GraphicType.ViewOverlay || type === GraphicType.WorldOverlay || type === GraphicType.ViewBackground;\r\n\r\n super({\r\n ...options,\r\n [_implementationProhibited]: undefined,\r\n type,\r\n placement,\r\n wantEdges,\r\n wantNormals,\r\n preserveOrder,\r\n });\r\n\r\n this._computeChordTolerance = options.computeChordTolerance;\r\n this._viewIndependentOrigin = options.viewIndependentOrigin?.clone();\r\n\r\n this._context = options.context as WorkerGraphicDescriptionContextImpl;\r\n if (!(this._context.transientIds instanceof TransientIdSequence)) {\r\n throw new Error(\"Invalid WorkerGraphicDescriptionContext\");\r\n }\r\n }\r\n\r\n public finish(): GraphicDescriptionImpl {\r\n const description: GraphicDescriptionImpl = {\r\n [_implementationProhibited]: undefined,\r\n type: this.type,\r\n primitives: [],\r\n };\r\n\r\n if (this[_accumulator].isEmpty) {\r\n return description;\r\n }\r\n\r\n const tolerance = this._computeChordTolerance({ builder: this, computeRange: () => this[_accumulator].geometries.computeRange() });\r\n const meshes = this[_accumulator].toMeshes(this, tolerance, this.pickable);\r\n if (meshes.length === 0) {\r\n return description;\r\n }\r\n\r\n const featureTable = this.pickable && meshes.features?.anyDefined ? meshes.features : undefined;\r\n if (featureTable) {\r\n assert(undefined !== this.pickable);\r\n const features = PackedFeatureTable.pack(featureTable);\r\n const range = meshes.range ?? new Range3d();\r\n description.batch = {\r\n ...this.pickable,\r\n range: range.toJSON(),\r\n modelId: this.pickable.modelId ?? this.pickable.id,\r\n featureTable: {\r\n multiModel: false,\r\n data: features.data,\r\n numFeatures: features.numFeatures,\r\n animationNodeIds: features.animationNodeIds,\r\n },\r\n };\r\n }\r\n\r\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\r\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\r\n // it in the transform instead.\r\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\r\n // Apply the inverse translation to put them back into model space.\r\n let transformOrigin: Point3d | undefined;\r\n let meshesRangeOffset = false;\r\n\r\n for (const mesh of meshes) {\r\n const verts = mesh.points;\r\n if (!transformOrigin) {\r\n // This is the first mesh we've processed.\r\n if (verts instanceof QPoint3dList) {\r\n transformOrigin = verts.params.origin.clone();\r\n verts.params.origin.setZero();\r\n } else {\r\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\r\n // We can't modify it directly, but if we temporarily modify the range of the mesh used to create it the qOrigin will get created properly.\r\n // Range is shared (not cloned) by all meshes and the mesh list itself, so modifying the range of the meshlist will modify it for all meshes.\r\n // We will then later add this offset back to the range once all of the graphics have been created because it is needed unmodified for locate.\r\n transformOrigin = verts.range.center;\r\n if (!meshesRangeOffset) {\r\n meshes.range?.low.subtractInPlace(transformOrigin);\r\n meshes.range?.high.subtractInPlace(transformOrigin);\r\n meshesRangeOffset = true;\r\n }\r\n }\r\n } else {\r\n if (verts instanceof QPoint3dList) {\r\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\r\n verts.params.origin.setZero();\r\n } else {\r\n assert(verts.range.center.isAlmostZero);\r\n }\r\n }\r\n\r\n const primitive = this.createPrimitive(mesh);\r\n if (primitive) {\r\n const origin = this._viewIndependentOrigin;\r\n if (origin) {\r\n primitive.modifier = {\r\n type: \"viewIndependentOrigin\",\r\n origin: { x: origin.x, y: origin.y, z: origin.z },\r\n };\r\n /* ###TODO } else if (this._instances) {\r\n primitive.modifier = {\r\n ...this._instances,\r\n type: \"instances\",\r\n transformCenter: { x: this._instances.transformCenter.x, y: this._instances.transformCenter.y, z: this._instances.transformCenter.z },\r\n range: this._instances.range ? {\r\n low: { x: this._instances.range.low.x, y: this._instances.range.low.y, z: this._instances.range.low.z },\r\n high: { x: this._instances.range.high.x, y: this._instances.range.high.y, z: this._instances.range.high.z },\r\n } : undefined,\r\n };\r\n */\r\n }\r\n\r\n description.primitives.push(primitive);\r\n }\r\n }\r\n\r\n // Restore the meshes range if we modified it above.\r\n if (meshesRangeOffset) {\r\n assert(undefined !== transformOrigin);\r\n meshes.range?.low.addInPlace(transformOrigin);\r\n meshes.range?.high.addInPlace(transformOrigin);\r\n }\r\n\r\n this[_accumulator].clear();\r\n if (transformOrigin) {\r\n description.translation = { x: transformOrigin.x, y: transformOrigin.y, z: transformOrigin.z };\r\n }\r\n\r\n return description;\r\n }\r\n\r\n private createPrimitive(mesh: Mesh): ImdlModel.Primitive | undefined {\r\n const meshArgs = mesh.toMeshArgs();\r\n if (meshArgs) {\r\n return this.createMeshPrimitive(meshArgs);\r\n }\r\n\r\n const polylineArgs = mesh.toPolylineArgs();\r\n if (!polylineArgs) {\r\n return undefined;\r\n }\r\n\r\n return polylineArgs.flags.isDisjoint ? this.createPointStringPrimitive(polylineArgs) : this.createPolylinePrimitive(polylineArgs);\r\n }\r\n\r\n private createMeshPrimitive(args: MeshArgs): ImdlModel.Primitive | undefined {\r\n const params = createMeshParams(args, this._context.constraints.maxTextureSize, true);\r\n\r\n let material;\r\n const mat = params.surface.material;\r\n if (mat) {\r\n assert(mat.isAtlas === false && mat.material instanceof WorkerMaterial);\r\n material = mat.material.toImdl();\r\n }\r\n\r\n let textureMapping;\r\n const tex = params.surface.textureMapping;\r\n if (tex) {\r\n assert(tex.texture instanceof WorkerTexture);\r\n textureMapping = { alwaysDisplayed: false, texture: tex.texture.index.toString(10) };\r\n }\r\n\r\n return {\r\n type: \"mesh\",\r\n params: {\r\n ...params,\r\n vertices: convertVertexTable(params.vertices),\r\n auxChannels: params.auxChannels?.toJSON(),\r\n edges: params.edges ? edgeParamsToImdl(params.edges) : undefined,\r\n surface: {\r\n ...params.surface,\r\n indices: params.surface.indices.data,\r\n material,\r\n textureMapping,\r\n },\r\n },\r\n };\r\n }\r\n\r\n private createPolylinePrimitive(args: PolylineArgs): ImdlModel.Primitive | undefined {\r\n const params = createPolylineParams(args, this._context.constraints.maxTextureSize);\r\n if (!params) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n type: \"polyline\",\r\n params: {\r\n ...params,\r\n vertices: convertVertexTable(params.vertices),\r\n polyline: {\r\n indices: params.polyline.indices.data,\r\n prevIndices: params.polyline.prevIndices.data,\r\n nextIndicesAndParams: params.polyline.nextIndicesAndParams,\r\n },\r\n },\r\n };\r\n }\r\n\r\n private createPointStringPrimitive(args: PolylineArgs): ImdlModel.Primitive | undefined {\r\n const params = createPointStringParams(args, this._context.constraints.maxTextureSize);\r\n if (!params) {\r\n return undefined;\r\n }\r\n\r\n return {\r\n type: \"point\",\r\n params: {\r\n indices: params.indices.data,\r\n vertices: convertVertexTable(params.vertices),\r\n weight: params.weight,\r\n },\r\n };\r\n }\r\n\r\n protected override resolveGradient(gradient: Gradient.Symb) {\r\n return this._context.createGradientTexture(gradient);\r\n }\r\n}\r\n\r\nfunction convertVertexTable(src: VertexTable): ImdlModel.VertexTable {\r\n return {\r\n ...src,\r\n qparams: src.qparams.toJSON(),\r\n uvParams: src.uvParams?.toJSON(),\r\n uniformColor: src.uniformColor?.toJSON(),\r\n };\r\n}\r\n\r\nexport function isGraphicDescription(description: GraphicDescription): description is GraphicDescriptionImpl {\r\n const descr = description as GraphicDescriptionImpl;\r\n return \"object\" === typeof descr && Array.isArray(descr.primitives) && \"number\" === typeof descr.type;\r\n}\r\n\r\nexport function collectGraphicDescriptionTransferables(xfers: Set<Transferable>, description: GraphicDescription): void {\r\n if (!isGraphicDescription(description)) {\r\n throw new Error(\"Invalid GraphicDescription\");\r\n }\r\n\r\n for (const primitive of description.primitives) {\r\n addPrimitiveTransferables(xfers, primitive);\r\n }\r\n}\r\n\r\n"]}
@@ -0,0 +1,104 @@
1
+ /** @packageDocumentation
2
+ * @module Rendering
3
+ */
4
+ import { TransientIdSequence, TransientIdSequenceProps } from "@itwin/core-bentley";
5
+ import { _implementationProhibited } from "../Symbols";
6
+ import { GraphicDescriptionContextProps, WorkerGraphicDescriptionContext, WorkerGraphicDescriptionContextProps, WorkerTextureParams } from "../../render/GraphicDescriptionContext";
7
+ import { MaterialParams } from "../../render/MaterialParams";
8
+ import { Gradient, ImageBufferFormat, ImageSourceFormat, RenderMaterial, RenderTexture, TextureTransparency } from "@itwin/core-common";
9
+ import { ImdlModel } from "../../imdl/ImdlModel";
10
+ /** As part of a [[WorkerGraphicDescriptionContext]], describes constraints imposed by the [[RenderSystem]] that a [[GraphicDescriptionBuilder]] needs to know about
11
+ * when creating a [[GraphicDescription]].
12
+ */
13
+ export interface GraphicDescriptionConstraints {
14
+ /** @internal */
15
+ readonly [_implementationProhibited]: unknown;
16
+ /** The maximum dimension (width or height) permitted for a single WebGL texture. */
17
+ readonly maxTextureSize: number;
18
+ }
19
+ export interface WorkerGraphicDescriptionContextPropsImpl extends WorkerGraphicDescriptionContextProps {
20
+ readonly constraints: GraphicDescriptionConstraints;
21
+ readonly transientIds: TransientIdSequenceProps;
22
+ }
23
+ export interface GraphicDescriptionContextPropsImpl extends GraphicDescriptionContextProps {
24
+ readonly transientIds: TransientIdSequenceProps;
25
+ readonly textures: WorkerTextureProps[];
26
+ /** This is set to true the first time we use RenderSystem.createGraphicDescriptionContext on it.
27
+ * That prevents us from remapping transient Ids to different transient Ids, recreating duplicate textures+materials, etc if
28
+ * somebody tries to resolve the same props more than once.
29
+ * We will throw if somebody tries to re-resolve a GraphicDescriptionContextPropsImpl.
30
+ */
31
+ resolved?: boolean;
32
+ }
33
+ export interface TextureUrlProps {
34
+ url: string;
35
+ transparency?: TextureTransparency;
36
+ gradient?: never;
37
+ imageBuffer?: never;
38
+ imageSource?: never;
39
+ width?: never;
40
+ format?: never;
41
+ }
42
+ export interface TextureImageBufferProps {
43
+ imageBuffer: Uint8Array;
44
+ format: ImageBufferFormat;
45
+ transparency?: TextureTransparency;
46
+ width: number;
47
+ gradient?: never;
48
+ imageSource?: never;
49
+ url?: never;
50
+ }
51
+ export interface TextureImageSourceProps {
52
+ imageSource: Uint8Array | string;
53
+ format: ImageSourceFormat;
54
+ transparency?: TextureTransparency;
55
+ width?: never;
56
+ url?: never;
57
+ imageBuffer?: never;
58
+ gradient?: never;
59
+ }
60
+ export interface TextureGradientSource {
61
+ gradient: Gradient.Symb;
62
+ transparency?: never;
63
+ format?: never;
64
+ imageBuffer?: never;
65
+ imageSource?: never;
66
+ url?: never;
67
+ width?: never;
68
+ }
69
+ export type TextureGradientSourceProps = Omit<TextureGradientSource, "gradient"> & {
70
+ gradient: Gradient.SymbProps;
71
+ };
72
+ export type TextureSource = TextureUrlProps | TextureImageBufferProps | TextureImageSourceProps | TextureGradientSource;
73
+ export type TextureSourceProps = TextureUrlProps | TextureImageBufferProps | TextureImageSourceProps | TextureGradientSourceProps;
74
+ export interface WorkerTextureProps {
75
+ type: RenderTexture.Type;
76
+ transparency?: TextureTransparency;
77
+ source: TextureSourceProps;
78
+ }
79
+ export declare class WorkerTexture extends RenderTexture {
80
+ readonly index: number;
81
+ readonly source: TextureSource;
82
+ constructor(index: number, params: WorkerTextureParams | Gradient.Symb);
83
+ dispose(): void;
84
+ get bytesUsed(): number;
85
+ toProps(xfer: Set<Transferable>): WorkerTextureProps;
86
+ }
87
+ export declare class WorkerMaterial extends RenderMaterial {
88
+ readonly params: MaterialParams;
89
+ constructor(params: MaterialParams);
90
+ toImdl(): ImdlModel.SurfaceMaterial;
91
+ }
92
+ export declare class WorkerGraphicDescriptionContextImpl implements WorkerGraphicDescriptionContext {
93
+ readonly [_implementationProhibited]: undefined;
94
+ readonly constraints: GraphicDescriptionConstraints;
95
+ readonly transientIds: TransientIdSequence;
96
+ readonly textures: WorkerTexture[];
97
+ readonly materials: WorkerMaterial[];
98
+ constructor(props: WorkerGraphicDescriptionContextProps);
99
+ createMaterial(params: MaterialParams): RenderMaterial;
100
+ createTexture(params: WorkerTextureParams): RenderTexture;
101
+ createGradientTexture(gradient: Gradient.Symb): RenderTexture;
102
+ toProps(transferables: Set<Transferable>): GraphicDescriptionContextPropsImpl;
103
+ }
104
+ //# sourceMappingURL=GraphicDescriptionContextImpl.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"GraphicDescriptionContextImpl.d.ts","sourceRoot":"","sources":["../../../../../src/common/internal/render/GraphicDescriptionContextImpl.ts"],"names":[],"mappings":"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"}