@itwin/core-frontend 5.0.0-dev.32 → 5.0.0-dev.34
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.
- package/lib/cjs/AccuDraw.js +1 -1
- package/lib/cjs/AccuDraw.js.map +1 -1
- package/lib/cjs/ApproximateTerrainHeights.js +1 -1
- package/lib/cjs/ApproximateTerrainHeights.js.map +1 -1
- package/lib/cjs/BackgroundMapGeometry.js +5 -5
- package/lib/cjs/BackgroundMapGeometry.js.map +1 -1
- package/lib/cjs/DrawingViewState.js +9 -9
- package/lib/cjs/DrawingViewState.js.map +1 -1
- package/lib/cjs/GraphicalEditingScope.js +4 -4
- package/lib/cjs/GraphicalEditingScope.js.map +1 -1
- package/lib/cjs/IModelApp.js +61 -63
- package/lib/cjs/IModelApp.js.map +1 -1
- package/lib/cjs/IModelConnection.js +10 -10
- package/lib/cjs/IModelConnection.js.map +1 -1
- package/lib/cjs/IModelRoutingContext.js +1 -1
- package/lib/cjs/IModelRoutingContext.js.map +1 -1
- package/lib/cjs/IpcApp.js +2 -2
- package/lib/cjs/IpcApp.js.map +1 -1
- package/lib/cjs/LocalhostIpcApp.js +1 -1
- package/lib/cjs/LocalhostIpcApp.js.map +1 -1
- package/lib/cjs/NativeApp.js +15 -17
- package/lib/cjs/NativeApp.js.map +1 -1
- package/lib/cjs/NativeAppLogger.js +1 -1
- package/lib/cjs/NativeAppLogger.js.map +1 -1
- package/lib/cjs/NoRenderApp.js +1 -1
- package/lib/cjs/NoRenderApp.js.map +1 -1
- package/lib/cjs/SelectionSet.js +148 -156
- package/lib/cjs/SelectionSet.js.map +1 -1
- package/lib/cjs/Sprites.js +1 -1
- package/lib/cjs/Sprites.js.map +1 -1
- package/lib/cjs/ViewCreator2d.js +3 -3
- package/lib/cjs/ViewCreator2d.js.map +1 -1
- package/lib/cjs/ViewGlobalLocation.js +5 -5
- package/lib/cjs/ViewGlobalLocation.js.map +1 -1
- package/lib/cjs/ViewState.js +2 -2
- package/lib/cjs/ViewState.js.map +1 -1
- package/lib/cjs/ViewingSpace.js +9 -9
- package/lib/cjs/ViewingSpace.js.map +1 -1
- package/lib/cjs/Viewport.js +41 -41
- package/lib/cjs/Viewport.js.map +1 -1
- package/lib/cjs/common/internal/render/DisplayParams.js +1 -1
- package/lib/cjs/common/internal/render/DisplayParams.js.map +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.js +1 -1
- package/lib/cjs/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
- package/lib/cjs/internal/render/PrimitiveBuilder.js +1 -1
- package/lib/cjs/internal/render/PrimitiveBuilder.js.map +1 -1
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.js +1 -1
- package/lib/cjs/internal/render/RenderInstancesParamsImpl.js.map +1 -1
- package/lib/cjs/render/MockRender.js +3 -3
- package/lib/cjs/render/MockRender.js.map +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/cjs/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/cjs/render/webgl/BatchState.js +1 -1
- package/lib/cjs/render/webgl/BatchState.js.map +1 -1
- package/lib/cjs/render/webgl/ColorInfo.js +2 -2
- package/lib/cjs/render/webgl/ColorInfo.js.map +1 -1
- package/lib/cjs/render/webgl/Diagnostics.js +4 -4
- package/lib/cjs/render/webgl/Diagnostics.js.map +1 -1
- package/lib/cjs/render/webgl/DrawCommand.js +4 -4
- package/lib/cjs/render/webgl/DrawCommand.js.map +1 -1
- package/lib/cjs/render/webgl/IModelFrameLifecycle.js +4 -4
- package/lib/cjs/render/webgl/IModelFrameLifecycle.js.map +1 -1
- package/lib/cjs/render/webgl/InstancedGeometry.js +3 -3
- package/lib/cjs/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/cjs/render/webgl/Material.js +4 -4
- package/lib/cjs/render/webgl/Material.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js +1 -1
- package/lib/cjs/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.js +1 -1
- package/lib/cjs/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/cjs/render/webgl/RenderState.js +1 -1
- package/lib/cjs/render/webgl/RenderState.js.map +1 -1
- package/lib/cjs/render/webgl/Target.js +1 -1
- package/lib/cjs/render/webgl/Target.js.map +1 -1
- package/lib/cjs/render/webgl/Technique.js +39 -39
- package/lib/cjs/render/webgl/Technique.js.map +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js +1 -1
- package/lib/cjs/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/cjs/render/webgl/Texture.js +3 -3
- package/lib/cjs/render/webgl/Texture.js.map +1 -1
- package/lib/cjs/tile/CesiumAssetProvider.js +1 -1
- package/lib/cjs/tile/CesiumAssetProvider.js.map +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.js +1 -1
- package/lib/cjs/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js +1 -1
- package/lib/cjs/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/cjs/tile/map/CesiumTerrainProvider.js +6 -6
- package/lib/cjs/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/cjs/tile/map/ImageryTileTree.js +2 -2
- package/lib/cjs/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapLayerImageryFormats.js +7 -7
- package/lib/cjs/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/cjs/tile/map/MapTile.js +8 -8
- package/lib/cjs/tile/map/MapTile.js.map +1 -1
- package/lib/cjs/tile/map/MapTileAvailability.js +1 -1
- package/lib/cjs/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/cjs/tile/map/MapTileTree.js +9 -9
- package/lib/cjs/tile/map/MapTileTree.js.map +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js +1 -1
- package/lib/cjs/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/cjs/tile/map/WmsCapabilities.js +2 -2
- package/lib/cjs/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.js +1 -1
- package/lib/cjs/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/cjs/tools/AccuDrawTool.js +21 -21
- package/lib/cjs/tools/AccuDrawTool.js.map +1 -1
- package/lib/cjs/tools/ClipViewTool.js +32 -32
- package/lib/cjs/tools/ClipViewTool.js.map +1 -1
- package/lib/cjs/tools/EditManipulator.js +2 -2
- package/lib/cjs/tools/EditManipulator.js.map +1 -1
- package/lib/cjs/tools/IdleTool.js +2 -2
- package/lib/cjs/tools/IdleTool.js.map +1 -1
- package/lib/cjs/tools/MeasureTool.js +34 -34
- package/lib/cjs/tools/MeasureTool.js.map +1 -1
- package/lib/cjs/tools/SelectTool.js +5 -5
- package/lib/cjs/tools/SelectTool.js.map +1 -1
- package/lib/cjs/tools/Tool.js +10 -10
- package/lib/cjs/tools/Tool.js.map +1 -1
- package/lib/cjs/tools/ToolAdmin.js +19 -19
- package/lib/cjs/tools/ToolAdmin.js.map +1 -1
- package/lib/cjs/tools/ToolAssistance.js +19 -19
- package/lib/cjs/tools/ToolAssistance.js.map +1 -1
- package/lib/cjs/tools/ToolSettings.js +63 -63
- package/lib/cjs/tools/ToolSettings.js.map +1 -1
- package/lib/cjs/tools/ViewTool.js +37 -37
- package/lib/cjs/tools/ViewTool.js.map +1 -1
- package/lib/esm/AccuDraw.js +1 -1
- package/lib/esm/AccuDraw.js.map +1 -1
- package/lib/esm/ApproximateTerrainHeights.js +1 -1
- package/lib/esm/ApproximateTerrainHeights.js.map +1 -1
- package/lib/esm/BackgroundMapGeometry.js +5 -5
- package/lib/esm/BackgroundMapGeometry.js.map +1 -1
- package/lib/esm/DrawingViewState.js +9 -9
- package/lib/esm/DrawingViewState.js.map +1 -1
- package/lib/esm/GraphicalEditingScope.js +4 -4
- package/lib/esm/GraphicalEditingScope.js.map +1 -1
- package/lib/esm/IModelApp.js +61 -63
- package/lib/esm/IModelApp.js.map +1 -1
- package/lib/esm/IModelConnection.js +10 -10
- package/lib/esm/IModelConnection.js.map +1 -1
- package/lib/esm/IModelRoutingContext.js +1 -1
- package/lib/esm/IModelRoutingContext.js.map +1 -1
- package/lib/esm/IpcApp.js +2 -2
- package/lib/esm/IpcApp.js.map +1 -1
- package/lib/esm/LocalhostIpcApp.js +1 -1
- package/lib/esm/LocalhostIpcApp.js.map +1 -1
- package/lib/esm/NativeApp.js +15 -17
- package/lib/esm/NativeApp.js.map +1 -1
- package/lib/esm/NativeAppLogger.js +1 -1
- package/lib/esm/NativeAppLogger.js.map +1 -1
- package/lib/esm/NoRenderApp.js +1 -1
- package/lib/esm/NoRenderApp.js.map +1 -1
- package/lib/esm/SelectionSet.js +148 -156
- package/lib/esm/SelectionSet.js.map +1 -1
- package/lib/esm/Sprites.js +1 -1
- package/lib/esm/Sprites.js.map +1 -1
- package/lib/esm/ViewCreator2d.js +3 -3
- package/lib/esm/ViewCreator2d.js.map +1 -1
- package/lib/esm/ViewGlobalLocation.js +5 -5
- package/lib/esm/ViewGlobalLocation.js.map +1 -1
- package/lib/esm/ViewState.js +2 -2
- package/lib/esm/ViewState.js.map +1 -1
- package/lib/esm/ViewingSpace.js +9 -9
- package/lib/esm/ViewingSpace.js.map +1 -1
- package/lib/esm/Viewport.js +41 -41
- package/lib/esm/Viewport.js.map +1 -1
- package/lib/esm/common/internal/render/DisplayParams.js +1 -1
- package/lib/esm/common/internal/render/DisplayParams.js.map +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionBuilderImpl.js.map +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.js +1 -1
- package/lib/esm/common/internal/render/GraphicDescriptionContextImpl.js.map +1 -1
- package/lib/esm/internal/render/PrimitiveBuilder.js +1 -1
- package/lib/esm/internal/render/PrimitiveBuilder.js.map +1 -1
- package/lib/esm/internal/render/RenderInstancesParamsImpl.js +1 -1
- package/lib/esm/internal/render/RenderInstancesParamsImpl.js.map +1 -1
- package/lib/esm/render/MockRender.js +3 -3
- package/lib/esm/render/MockRender.js.map +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.js +1 -1
- package/lib/esm/render/webgl/BackgroundMapDrape.js.map +1 -1
- package/lib/esm/render/webgl/BatchState.js +1 -1
- package/lib/esm/render/webgl/BatchState.js.map +1 -1
- package/lib/esm/render/webgl/ColorInfo.js +2 -2
- package/lib/esm/render/webgl/ColorInfo.js.map +1 -1
- package/lib/esm/render/webgl/Diagnostics.js +4 -4
- package/lib/esm/render/webgl/Diagnostics.js.map +1 -1
- package/lib/esm/render/webgl/DrawCommand.js +4 -4
- package/lib/esm/render/webgl/DrawCommand.js.map +1 -1
- package/lib/esm/render/webgl/IModelFrameLifecycle.js +4 -4
- package/lib/esm/render/webgl/IModelFrameLifecycle.js.map +1 -1
- package/lib/esm/render/webgl/InstancedGeometry.js +3 -3
- package/lib/esm/render/webgl/InstancedGeometry.js.map +1 -1
- package/lib/esm/render/webgl/Material.js +4 -4
- package/lib/esm/render/webgl/Material.js.map +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js +1 -1
- package/lib/esm/render/webgl/PlanarClassifier.js.map +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.js +1 -1
- package/lib/esm/render/webgl/PlanarTextureProjection.js.map +1 -1
- package/lib/esm/render/webgl/RenderState.js +1 -1
- package/lib/esm/render/webgl/RenderState.js.map +1 -1
- package/lib/esm/render/webgl/Target.js +1 -1
- package/lib/esm/render/webgl/Target.js.map +1 -1
- package/lib/esm/render/webgl/Technique.js +39 -39
- package/lib/esm/render/webgl/Technique.js.map +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.js +1 -1
- package/lib/esm/render/webgl/TechniqueFlags.js.map +1 -1
- package/lib/esm/render/webgl/Texture.js +3 -3
- package/lib/esm/render/webgl/Texture.js.map +1 -1
- package/lib/esm/tile/CesiumAssetProvider.js +1 -1
- package/lib/esm/tile/CesiumAssetProvider.js.map +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.js +1 -1
- package/lib/esm/tile/map/ArcGISTileMap.js.map +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js +1 -1
- package/lib/esm/tile/map/ArcGisUtilities.js.map +1 -1
- package/lib/esm/tile/map/CesiumTerrainProvider.js +6 -6
- package/lib/esm/tile/map/CesiumTerrainProvider.js.map +1 -1
- package/lib/esm/tile/map/ImageryTileTree.js +2 -2
- package/lib/esm/tile/map/ImageryTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapLayerImageryFormats.js +7 -7
- package/lib/esm/tile/map/MapLayerImageryFormats.js.map +1 -1
- package/lib/esm/tile/map/MapTile.js +8 -8
- package/lib/esm/tile/map/MapTile.js.map +1 -1
- package/lib/esm/tile/map/MapTileAvailability.js +1 -1
- package/lib/esm/tile/map/MapTileAvailability.js.map +1 -1
- package/lib/esm/tile/map/MapTileTree.js +9 -9
- package/lib/esm/tile/map/MapTileTree.js.map +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js +1 -1
- package/lib/esm/tile/map/MapTilingScheme.js.map +1 -1
- package/lib/esm/tile/map/WmsCapabilities.js +2 -2
- package/lib/esm/tile/map/WmsCapabilities.js.map +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.js +1 -1
- package/lib/esm/tile/map/WmtsCapabilities.js.map +1 -1
- package/lib/esm/tools/AccuDrawTool.js +21 -21
- package/lib/esm/tools/AccuDrawTool.js.map +1 -1
- package/lib/esm/tools/ClipViewTool.js +32 -32
- package/lib/esm/tools/ClipViewTool.js.map +1 -1
- package/lib/esm/tools/EditManipulator.js +2 -2
- package/lib/esm/tools/EditManipulator.js.map +1 -1
- package/lib/esm/tools/IdleTool.js +2 -2
- package/lib/esm/tools/IdleTool.js.map +1 -1
- package/lib/esm/tools/MeasureTool.js +34 -34
- package/lib/esm/tools/MeasureTool.js.map +1 -1
- package/lib/esm/tools/SelectTool.js +5 -5
- package/lib/esm/tools/SelectTool.js.map +1 -1
- package/lib/esm/tools/Tool.js +10 -10
- package/lib/esm/tools/Tool.js.map +1 -1
- package/lib/esm/tools/ToolAdmin.js +19 -19
- package/lib/esm/tools/ToolAdmin.js.map +1 -1
- package/lib/esm/tools/ToolAssistance.js +19 -19
- package/lib/esm/tools/ToolAssistance.js.map +1 -1
- package/lib/esm/tools/ToolSettings.js +63 -63
- package/lib/esm/tools/ToolSettings.js.map +1 -1
- package/lib/esm/tools/ViewTool.js +37 -37
- package/lib/esm/tools/ViewTool.js.map +1 -1
- package/lib/public/scripts/parse-imdl-worker.js +1 -1
- package/lib/workers/webpack/parse-imdl-worker.js +1 -1
- package/package.json +18 -18
|
@@ -20,6 +20,7 @@ function compareTextureMappings(lhs, rhs) {
|
|
|
20
20
|
* @internal
|
|
21
21
|
*/
|
|
22
22
|
class DisplayParams {
|
|
23
|
+
static { this.minTransparency = 15; } // Threshold below which we consider a color fully opaque
|
|
23
24
|
constructor(type, lineColor, fillColor, width = 0, linePixels = core_common_1.LinePixels.Solid, fillFlags = core_common_1.FillFlags.None, material, gradient, ignoreLighting = false, textureMapping) {
|
|
24
25
|
this.type = DisplayParams.Type.Mesh;
|
|
25
26
|
this.type = type;
|
|
@@ -155,7 +156,6 @@ class DisplayParams {
|
|
|
155
156
|
}
|
|
156
157
|
}
|
|
157
158
|
exports.DisplayParams = DisplayParams;
|
|
158
|
-
DisplayParams.minTransparency = 15; // Threshold below which we consider a color fully opaque
|
|
159
159
|
/** @internal */
|
|
160
160
|
(function (DisplayParams) {
|
|
161
161
|
let Type;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisplayParams.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/DisplayParams.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { assert, compareBooleans, compareNumbers, comparePossiblyUndefined } from \"@itwin/core-bentley\";\nimport { ColorDef, FillFlags, Gradient, GraphicParams, LinePixels, RenderMaterial, RenderTexture, TextureMapping } from \"@itwin/core-common\";\n\nfunction compareMaterials(lhs?: RenderMaterial, rhs?: RenderMaterial): number {\n return comparePossiblyUndefined((lh, rh) => lh.compare(rh), lhs, rhs);\n}\n\nfunction compareTextureMappings(lhs?: TextureMapping, rhs?: TextureMapping): number {\n return comparePossiblyUndefined((lh, rh) => lh.compare(rh), lhs, rhs);\n}\n\n/** This class is used to determine if things can be batched together for display.\n * @internal\n */\nexport class DisplayParams {\n public static readonly minTransparency: number = 15; // Threshold below which we consider a color fully opaque\n public readonly type: DisplayParams.Type = DisplayParams.Type.Mesh;\n public readonly material?: RenderMaterial; // meshes only\n public readonly gradient?: Gradient.Symb;\n private readonly _textureMapping?: TextureMapping; // only if material is undefined - e.g. glyphs, gradients\n public readonly lineColor: ColorDef; // all types of geometry (edge color for meshes)\n public readonly fillColor: ColorDef; // meshes only\n public readonly width: number; // linear and mesh (edges)\n public readonly linePixels: LinePixels; // linear and mesh (edges)\n public readonly fillFlags: FillFlags; // meshes only\n public readonly ignoreLighting: boolean; // always true for text and linear geometry; true for meshes only if normals not desired\n\n public constructor(type: DisplayParams.Type, lineColor: ColorDef, fillColor: ColorDef, width: number = 0, linePixels: LinePixels = LinePixels.Solid,\n fillFlags: FillFlags = FillFlags.None, material?: RenderMaterial, gradient?: Gradient.Symb, ignoreLighting: boolean = false, textureMapping?: TextureMapping) {\n this.type = type;\n this.material = material;\n this.gradient = gradient;\n this.lineColor = DisplayParams.adjustTransparency(lineColor);\n this.fillColor = DisplayParams.adjustTransparency(fillColor);\n this.width = width;\n this.linePixels = linePixels;\n this.fillFlags = fillFlags;\n this.ignoreLighting = ignoreLighting;\n this._textureMapping = textureMapping;\n\n assert(undefined === material || undefined === textureMapping);\n }\n\n /** Creates a DisplayParams object for a particular type (mesh, linear, text) based on the specified GraphicParams. */\n public static createForType(type: DisplayParams.Type, gf: GraphicParams, resolveGradient?: (grad: Gradient.Symb) => RenderTexture | undefined, ignoreLighting = false): DisplayParams {\n const lineColor = DisplayParams.adjustTransparency(gf.lineColor);\n switch (type) {\n case DisplayParams.Type.Mesh: {\n let gradientMapping: TextureMapping | undefined;\n if (undefined !== gf.gradient && undefined !== resolveGradient) {\n const gradientTexture = resolveGradient(gf.gradient);\n if (undefined !== gradientTexture)\n gradientMapping = new TextureMapping(gradientTexture, new TextureMapping.Params());\n }\n return new DisplayParams(type, lineColor, DisplayParams.adjustTransparency(gf.fillColor), gf.rasterWidth, gf.linePixels, gf.fillFlags, gf.material, gf.gradient, ignoreLighting, gradientMapping);\n }\n case DisplayParams.Type.Linear:\n return new DisplayParams(type, lineColor, lineColor, gf.rasterWidth, gf.linePixels);\n default: // DisplayParams.Type.Text\n return new DisplayParams(type, lineColor, lineColor, 0, LinePixels.Solid, FillFlags.Always, undefined, undefined, true);\n }\n }\n\n /** Creates a DisplayParams object that describes mesh geometry based on the specified GraphicParams. */\n public static createForMesh(gf: GraphicParams, ignoreLighting: boolean, resolveGradient?: (grad: Gradient.Symb) => RenderTexture | undefined): DisplayParams {\n return DisplayParams.createForType(DisplayParams.Type.Mesh, gf, resolveGradient, ignoreLighting);\n }\n\n /** Creates a DisplayParams object that describes linear geometry based on the specified GraphicParams. */\n public static createForLinear(gf: GraphicParams): DisplayParams {\n return DisplayParams.createForType(DisplayParams.Type.Linear, gf);\n }\n\n /** Creates a DisplayParams object that describes text geometry based on the specified GraphicParams. */\n public static createForText(gf: GraphicParams): DisplayParams {\n return DisplayParams.createForType(DisplayParams.Type.Text, gf);\n }\n\n public get regionEdgeType(): DisplayParams.RegionEdgeType {\n if (this.hasBlankingFill)\n return DisplayParams.RegionEdgeType.None;\n\n if (this.gradient !== undefined && undefined !== this.gradient.flags) {\n // Even if the gradient is not outlined, produce an outline to be displayed as the region's edges when fill ViewFlag is off.\n const gradFlags: Gradient.Flags = this.gradient.flags;\n if (0 !== (gradFlags & Gradient.Flags.Outline) || FillFlags.None === (this.fillFlags & FillFlags.Always))\n return DisplayParams.RegionEdgeType.Outline;\n return DisplayParams.RegionEdgeType.None;\n }\n return (!this.fillColor.equals(this.lineColor)) ? DisplayParams.RegionEdgeType.Outline : DisplayParams.RegionEdgeType.Default;\n }\n\n public get wantRegionOutline(): boolean {\n return DisplayParams.RegionEdgeType.Outline === this.regionEdgeType;\n }\n\n public get hasBlankingFill(): boolean { return FillFlags.Blanking === (this.fillFlags & FillFlags.Blanking); }\n public get hasFillTransparency(): boolean { return 255 !== this.fillColor.getAlpha(); }\n public get hasLineTransparency(): boolean { return 255 !== this.lineColor.getAlpha(); }\n public get textureMapping(): TextureMapping | undefined { return undefined !== this.material ? this.material.textureMapping : this._textureMapping; }\n public get isTextured(): boolean { return undefined !== this.textureMapping; }\n\n /** Determines if the properties of this DisplayParams object are equal to those of another DisplayParams object. */\n public equals(rhs: DisplayParams, purpose: DisplayParams.ComparePurpose = DisplayParams.ComparePurpose.Strict): boolean {\n if (DisplayParams.ComparePurpose.Merge === purpose)\n return 0 === this.compareForMerge(rhs);\n else if (rhs === this)\n return true;\n\n if (this.type !== rhs.type)\n return false;\n if (this.ignoreLighting !== rhs.ignoreLighting)\n return false;\n if (this.width !== rhs.width)\n return false;\n if (this.linePixels !== rhs.linePixels)\n return false;\n if (this.fillFlags !== rhs.fillFlags)\n return false;\n if (this.wantRegionOutline !== rhs.wantRegionOutline)\n return false;\n if (this.material !== rhs.material)\n return false;\n if (this.textureMapping !== rhs.textureMapping)\n return false;\n\n if (!this.fillColor.equals(rhs.fillColor))\n return false;\n if (!this.lineColor.equals(rhs.lineColor))\n return false;\n\n return true;\n }\n\n public compareForMerge(rhs: DisplayParams): number {\n if (rhs === this)\n return 0;\n\n let diff = compareNumbers(this.type, rhs.type);\n if (0 === diff) {\n diff = compareBooleans(this.ignoreLighting, rhs.ignoreLighting);\n if (0 === diff) {\n diff = compareNumbers(this.width, rhs.width);\n if (0 === diff) {\n diff = compareNumbers(this.linePixels, rhs.linePixels);\n if (0 === diff) {\n diff = compareNumbers(this.fillFlags, rhs.fillFlags);\n if (0 === diff) {\n diff = compareBooleans(this.wantRegionOutline, rhs.wantRegionOutline);\n if (0 === diff) {\n diff = compareBooleans(this.hasFillTransparency, rhs.hasFillTransparency);\n if (0 === diff) {\n diff = compareBooleans(this.hasLineTransparency, rhs.hasLineTransparency);\n if (0 === diff) {\n diff = compareMaterials(this.material, rhs.material);\n if (0 === diff && undefined === this.material && this.isTextured) {\n diff = compareTextureMappings(this.textureMapping, rhs.textureMapping);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return diff;\n }\n\n /**\n * Given a ColorDef object, check its transparency and if it falls below the minimum, mark the color as fully opaque.\n * @return The original reference to the color provided, which has possibly been modified.\n */\n public static adjustTransparency(color: ColorDef): ColorDef {\n return (color.colors.t < DisplayParams.minTransparency) ? color.withTransparency(0) : color;\n }\n}\n\n/** @internal */\nexport namespace DisplayParams {\n export enum Type {\n Mesh,\n Linear,\n Text,\n }\n\n export enum RegionEdgeType {\n None,\n Default,\n Outline,\n }\n\n export enum ComparePurpose {\n Merge, // considers colors equivalent if both have or both lack transparency\n Strict, // compares all members\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"DisplayParams.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/DisplayParams.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAEH,sDAAwG;AACxG,oDAA6I;AAE7I,SAAS,gBAAgB,CAAC,GAAoB,EAAE,GAAoB;IAClE,OAAO,IAAA,uCAAwB,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxE,CAAC;AAED,SAAS,sBAAsB,CAAC,GAAoB,EAAE,GAAoB;IACxE,OAAO,IAAA,uCAAwB,EAAC,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC,EAAE,CAAC,OAAO,CAAC,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC;AACxE,CAAC;AAED;;GAEG;AACH,MAAa,aAAa;aACD,oBAAe,GAAW,EAAE,AAAb,CAAc,GAAE,yDAAyD;IAY/G,YAAmB,IAAwB,EAAE,SAAmB,EAAE,SAAmB,EAAE,QAAgB,CAAC,EAAE,aAAyB,wBAAU,CAAC,KAAK,EACjJ,YAAuB,uBAAS,CAAC,IAAI,EAAE,QAAyB,EAAE,QAAwB,EAAE,iBAA0B,KAAK,EAAE,cAA+B;QAZ9I,SAAI,GAAuB,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC;QAajE,IAAI,CAAC,IAAI,GAAG,IAAI,CAAC;QACjB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,QAAQ,GAAG,QAAQ,CAAC;QACzB,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,SAAS,GAAG,aAAa,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC;QAC7D,IAAI,CAAC,KAAK,GAAG,KAAK,CAAC;QACnB,IAAI,CAAC,UAAU,GAAG,UAAU,CAAC;QAC7B,IAAI,CAAC,SAAS,GAAG,SAAS,CAAC;QAC3B,IAAI,CAAC,cAAc,GAAG,cAAc,CAAC;QACrC,IAAI,CAAC,eAAe,GAAG,cAAc,CAAC;QAEtC,IAAA,qBAAM,EAAC,SAAS,KAAK,QAAQ,IAAI,SAAS,KAAK,cAAc,CAAC,CAAC;IACjE,CAAC;IAED,sHAAsH;IAC/G,MAAM,CAAC,aAAa,CAAC,IAAwB,EAAE,EAAiB,EAAE,eAAoE,EAAE,cAAc,GAAG,KAAK;QACnK,MAAM,SAAS,GAAG,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC,SAAS,CAAC,CAAC;QACjE,QAAQ,IAAI,EAAE,CAAC;YACb,KAAK,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC7B,IAAI,eAA2C,CAAC;gBAChD,IAAI,SAAS,KAAK,EAAE,CAAC,QAAQ,IAAI,SAAS,KAAK,eAAe,EAAE,CAAC;oBAC/D,MAAM,eAAe,GAAG,eAAe,CAAC,EAAE,CAAC,QAAQ,CAAC,CAAC;oBACrD,IAAI,SAAS,KAAK,eAAe;wBAC/B,eAAe,GAAG,IAAI,4BAAc,CAAC,eAAe,EAAE,IAAI,4BAAc,CAAC,MAAM,EAAE,CAAC,CAAC;gBACvF,CAAC;gBACD,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,kBAAkB,CAAC,EAAE,CAAC,SAAS,CAAC,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,UAAU,EAAE,EAAE,CAAC,SAAS,EAAE,EAAE,CAAC,QAAQ,EAAE,EAAE,CAAC,QAAQ,EAAE,cAAc,EAAE,eAAe,CAAC,CAAC;YACpM,CAAC;YACD,KAAK,aAAa,CAAC,IAAI,CAAC,MAAM;gBAC5B,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,EAAE,CAAC,WAAW,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC;YACtF,SAAS,0BAA0B;gBACjC,OAAO,IAAI,aAAa,CAAC,IAAI,EAAE,SAAS,EAAE,SAAS,EAAE,CAAC,EAAE,wBAAU,CAAC,KAAK,EAAE,uBAAS,CAAC,MAAM,EAAE,SAAS,EAAE,SAAS,EAAE,IAAI,CAAC,CAAC;QAC5H,CAAC;IACH,CAAC;IAED,wGAAwG;IACjG,MAAM,CAAC,aAAa,CAAC,EAAiB,EAAE,cAAuB,EAAE,eAAoE;QAC1I,OAAO,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,eAAe,EAAE,cAAc,CAAC,CAAC;IACnG,CAAC;IAED,0GAA0G;IACnG,MAAM,CAAC,eAAe,CAAC,EAAiB;QAC7C,OAAO,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACpE,CAAC;IAED,wGAAwG;IACjG,MAAM,CAAC,aAAa,CAAC,EAAiB;QAC3C,OAAO,aAAa,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,EAAE,EAAE,CAAC,CAAC;IAClE,CAAC;IAED,IAAW,cAAc;QACvB,IAAI,IAAI,CAAC,eAAe;YACtB,OAAO,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC;QAE3C,IAAI,IAAI,CAAC,QAAQ,KAAK,SAAS,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,KAAK,EAAE,CAAC;YACrE,4HAA4H;YAC5H,MAAM,SAAS,GAAmB,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC;YACtD,IAAI,CAAC,KAAK,CAAC,SAAS,GAAG,sBAAQ,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,uBAAS,CAAC,IAAI,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,uBAAS,CAAC,MAAM,CAAC;gBACtG,OAAO,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC;YAC9C,OAAO,aAAa,CAAC,cAAc,CAAC,IAAI,CAAC;QAC3C,CAAC;QACD,OAAO,CAAC,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC,CAAC,CAAC,aAAa,CAAC,cAAc,CAAC,OAAO,CAAC;IAChI,CAAC;IAED,IAAW,iBAAiB;QAC1B,OAAO,aAAa,CAAC,cAAc,CAAC,OAAO,KAAK,IAAI,CAAC,cAAc,CAAC;IACtE,CAAC;IAED,IAAW,eAAe,KAAc,OAAO,uBAAS,CAAC,QAAQ,KAAK,CAAC,IAAI,CAAC,SAAS,GAAG,uBAAS,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC;IAC9G,IAAW,mBAAmB,KAAc,OAAO,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvF,IAAW,mBAAmB,KAAc,OAAO,GAAG,KAAK,IAAI,CAAC,SAAS,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC;IACvF,IAAW,cAAc,KAAiC,OAAO,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,cAAc,CAAC,CAAC,CAAC,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC;IACrJ,IAAW,UAAU,KAAc,OAAO,SAAS,KAAK,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC;IAE9E,qHAAqH;IAC9G,MAAM,CAAC,GAAkB,EAAE,UAAwC,aAAa,CAAC,cAAc,CAAC,MAAM;QAC3G,IAAI,aAAa,CAAC,cAAc,CAAC,KAAK,KAAK,OAAO;YAChD,OAAO,CAAC,KAAK,IAAI,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;aACpC,IAAI,GAAG,KAAK,IAAI;YACnB,OAAO,IAAI,CAAC;QAEd,IAAI,IAAI,CAAC,IAAI,KAAK,GAAG,CAAC,IAAI;YACxB,OAAO,KAAK,CAAC;QACf,IAAI,IAAI,CAAC,cAAc,KAAK,GAAG,CAAC,cAAc;YAC5C,OAAO,KAAK,CAAC;QACf,IAAI,IAAI,CAAC,KAAK,KAAK,GAAG,CAAC,KAAK;YAC1B,OAAO,KAAK,CAAC;QACf,IAAI,IAAI,CAAC,UAAU,KAAK,GAAG,CAAC,UAAU;YACpC,OAAO,KAAK,CAAC;QACf,IAAI,IAAI,CAAC,SAAS,KAAK,GAAG,CAAC,SAAS;YAClC,OAAO,KAAK,CAAC;QACf,IAAI,IAAI,CAAC,iBAAiB,KAAK,GAAG,CAAC,iBAAiB;YAClD,OAAO,KAAK,CAAC;QACf,IAAI,IAAI,CAAC,QAAQ,KAAK,GAAG,CAAC,QAAQ;YAChC,OAAO,KAAK,CAAC;QACf,IAAI,IAAI,CAAC,cAAc,KAAK,GAAG,CAAC,cAAc;YAC5C,OAAO,KAAK,CAAC;QAEf,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YACvC,OAAO,KAAK,CAAC;QACf,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,GAAG,CAAC,SAAS,CAAC;YACvC,OAAO,KAAK,CAAC;QAEf,OAAO,IAAI,CAAC;IACd,CAAC;IAEM,eAAe,CAAC,GAAkB;QACvC,IAAI,GAAG,KAAK,IAAI;YACd,OAAO,CAAC,CAAC;QAEX,IAAI,IAAI,GAAG,IAAA,6BAAc,EAAC,IAAI,CAAC,IAAI,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC;QAC/C,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;YACf,IAAI,GAAG,IAAA,8BAAe,EAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;YAChE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gBACf,IAAI,GAAG,IAAA,6BAAc,EAAC,IAAI,CAAC,KAAK,EAAE,GAAG,CAAC,KAAK,CAAC,CAAC;gBAC7C,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oBACf,IAAI,GAAG,IAAA,6BAAc,EAAC,IAAI,CAAC,UAAU,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;oBACvD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;wBACf,IAAI,GAAG,IAAA,6BAAc,EAAC,IAAI,CAAC,SAAS,EAAE,GAAG,CAAC,SAAS,CAAC,CAAC;wBACrD,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;4BACf,IAAI,GAAG,IAAA,8BAAe,EAAC,IAAI,CAAC,iBAAiB,EAAE,GAAG,CAAC,iBAAiB,CAAC,CAAC;4BACtE,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;gCACf,IAAI,GAAG,IAAA,8BAAe,EAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;gCAC1E,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;oCACf,IAAI,GAAG,IAAA,8BAAe,EAAC,IAAI,CAAC,mBAAmB,EAAE,GAAG,CAAC,mBAAmB,CAAC,CAAC;oCAC1E,IAAI,CAAC,KAAK,IAAI,EAAE,CAAC;wCACf,IAAI,GAAG,gBAAgB,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,QAAQ,CAAC,CAAC;wCACrD,IAAI,CAAC,KAAK,IAAI,IAAI,SAAS,KAAK,IAAI,CAAC,QAAQ,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;4CACjE,IAAI,GAAG,sBAAsB,CAAC,IAAI,CAAC,cAAc,EAAE,GAAG,CAAC,cAAc,CAAC,CAAC;wCACzE,CAAC;oCACH,CAAC;gCACH,CAAC;4BACH,CAAC;wBACH,CAAC;oBACH,CAAC;gBACH,CAAC;YACH,CAAC;QACH,CAAC;QAED,OAAO,IAAI,CAAC;IACd,CAAC;IAED;;;OAGG;IACI,MAAM,CAAC,kBAAkB,CAAC,KAAe;QAC9C,OAAO,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,aAAa,CAAC,eAAe,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9F,CAAC;;AAlKH,sCAmKC;AAED,gBAAgB;AAChB,WAAiB,aAAa;IAC5B,IAAY,IAIX;IAJD,WAAY,IAAI;QACd,+BAAI,CAAA;QACJ,mCAAM,CAAA;QACN,+BAAI,CAAA;IACN,CAAC,EAJW,IAAI,GAAJ,kBAAI,KAAJ,kBAAI,QAIf;IAED,IAAY,cAIX;IAJD,WAAY,cAAc;QACxB,mDAAI,CAAA;QACJ,yDAAO,CAAA;QACP,yDAAO,CAAA;IACT,CAAC,EAJW,cAAc,GAAd,4BAAc,KAAd,4BAAc,QAIzB;IAED,IAAY,cAGX;IAHD,WAAY,cAAc;QACxB,qDAAK,CAAA;QACL,uDAAM,CAAA;IACR,CAAC,EAHW,cAAc,GAAd,4BAAc,KAAd,4BAAc,QAGzB;AACH,CAAC,EAjBgB,aAAa,6BAAb,aAAa,QAiB7B","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { assert, compareBooleans, compareNumbers, comparePossiblyUndefined } from \"@itwin/core-bentley\";\nimport { ColorDef, FillFlags, Gradient, GraphicParams, LinePixels, RenderMaterial, RenderTexture, TextureMapping } from \"@itwin/core-common\";\n\nfunction compareMaterials(lhs?: RenderMaterial, rhs?: RenderMaterial): number {\n return comparePossiblyUndefined((lh, rh) => lh.compare(rh), lhs, rhs);\n}\n\nfunction compareTextureMappings(lhs?: TextureMapping, rhs?: TextureMapping): number {\n return comparePossiblyUndefined((lh, rh) => lh.compare(rh), lhs, rhs);\n}\n\n/** This class is used to determine if things can be batched together for display.\n * @internal\n */\nexport class DisplayParams {\n public static readonly minTransparency: number = 15; // Threshold below which we consider a color fully opaque\n public readonly type: DisplayParams.Type = DisplayParams.Type.Mesh;\n public readonly material?: RenderMaterial; // meshes only\n public readonly gradient?: Gradient.Symb;\n private readonly _textureMapping?: TextureMapping; // only if material is undefined - e.g. glyphs, gradients\n public readonly lineColor: ColorDef; // all types of geometry (edge color for meshes)\n public readonly fillColor: ColorDef; // meshes only\n public readonly width: number; // linear and mesh (edges)\n public readonly linePixels: LinePixels; // linear and mesh (edges)\n public readonly fillFlags: FillFlags; // meshes only\n public readonly ignoreLighting: boolean; // always true for text and linear geometry; true for meshes only if normals not desired\n\n public constructor(type: DisplayParams.Type, lineColor: ColorDef, fillColor: ColorDef, width: number = 0, linePixels: LinePixels = LinePixels.Solid,\n fillFlags: FillFlags = FillFlags.None, material?: RenderMaterial, gradient?: Gradient.Symb, ignoreLighting: boolean = false, textureMapping?: TextureMapping) {\n this.type = type;\n this.material = material;\n this.gradient = gradient;\n this.lineColor = DisplayParams.adjustTransparency(lineColor);\n this.fillColor = DisplayParams.adjustTransparency(fillColor);\n this.width = width;\n this.linePixels = linePixels;\n this.fillFlags = fillFlags;\n this.ignoreLighting = ignoreLighting;\n this._textureMapping = textureMapping;\n\n assert(undefined === material || undefined === textureMapping);\n }\n\n /** Creates a DisplayParams object for a particular type (mesh, linear, text) based on the specified GraphicParams. */\n public static createForType(type: DisplayParams.Type, gf: GraphicParams, resolveGradient?: (grad: Gradient.Symb) => RenderTexture | undefined, ignoreLighting = false): DisplayParams {\n const lineColor = DisplayParams.adjustTransparency(gf.lineColor);\n switch (type) {\n case DisplayParams.Type.Mesh: {\n let gradientMapping: TextureMapping | undefined;\n if (undefined !== gf.gradient && undefined !== resolveGradient) {\n const gradientTexture = resolveGradient(gf.gradient);\n if (undefined !== gradientTexture)\n gradientMapping = new TextureMapping(gradientTexture, new TextureMapping.Params());\n }\n return new DisplayParams(type, lineColor, DisplayParams.adjustTransparency(gf.fillColor), gf.rasterWidth, gf.linePixels, gf.fillFlags, gf.material, gf.gradient, ignoreLighting, gradientMapping);\n }\n case DisplayParams.Type.Linear:\n return new DisplayParams(type, lineColor, lineColor, gf.rasterWidth, gf.linePixels);\n default: // DisplayParams.Type.Text\n return new DisplayParams(type, lineColor, lineColor, 0, LinePixels.Solid, FillFlags.Always, undefined, undefined, true);\n }\n }\n\n /** Creates a DisplayParams object that describes mesh geometry based on the specified GraphicParams. */\n public static createForMesh(gf: GraphicParams, ignoreLighting: boolean, resolveGradient?: (grad: Gradient.Symb) => RenderTexture | undefined): DisplayParams {\n return DisplayParams.createForType(DisplayParams.Type.Mesh, gf, resolveGradient, ignoreLighting);\n }\n\n /** Creates a DisplayParams object that describes linear geometry based on the specified GraphicParams. */\n public static createForLinear(gf: GraphicParams): DisplayParams {\n return DisplayParams.createForType(DisplayParams.Type.Linear, gf);\n }\n\n /** Creates a DisplayParams object that describes text geometry based on the specified GraphicParams. */\n public static createForText(gf: GraphicParams): DisplayParams {\n return DisplayParams.createForType(DisplayParams.Type.Text, gf);\n }\n\n public get regionEdgeType(): DisplayParams.RegionEdgeType {\n if (this.hasBlankingFill)\n return DisplayParams.RegionEdgeType.None;\n\n if (this.gradient !== undefined && undefined !== this.gradient.flags) {\n // Even if the gradient is not outlined, produce an outline to be displayed as the region's edges when fill ViewFlag is off.\n const gradFlags: Gradient.Flags = this.gradient.flags;\n if (0 !== (gradFlags & Gradient.Flags.Outline) || FillFlags.None === (this.fillFlags & FillFlags.Always))\n return DisplayParams.RegionEdgeType.Outline;\n return DisplayParams.RegionEdgeType.None;\n }\n return (!this.fillColor.equals(this.lineColor)) ? DisplayParams.RegionEdgeType.Outline : DisplayParams.RegionEdgeType.Default;\n }\n\n public get wantRegionOutline(): boolean {\n return DisplayParams.RegionEdgeType.Outline === this.regionEdgeType;\n }\n\n public get hasBlankingFill(): boolean { return FillFlags.Blanking === (this.fillFlags & FillFlags.Blanking); }\n public get hasFillTransparency(): boolean { return 255 !== this.fillColor.getAlpha(); }\n public get hasLineTransparency(): boolean { return 255 !== this.lineColor.getAlpha(); }\n public get textureMapping(): TextureMapping | undefined { return undefined !== this.material ? this.material.textureMapping : this._textureMapping; }\n public get isTextured(): boolean { return undefined !== this.textureMapping; }\n\n /** Determines if the properties of this DisplayParams object are equal to those of another DisplayParams object. */\n public equals(rhs: DisplayParams, purpose: DisplayParams.ComparePurpose = DisplayParams.ComparePurpose.Strict): boolean {\n if (DisplayParams.ComparePurpose.Merge === purpose)\n return 0 === this.compareForMerge(rhs);\n else if (rhs === this)\n return true;\n\n if (this.type !== rhs.type)\n return false;\n if (this.ignoreLighting !== rhs.ignoreLighting)\n return false;\n if (this.width !== rhs.width)\n return false;\n if (this.linePixels !== rhs.linePixels)\n return false;\n if (this.fillFlags !== rhs.fillFlags)\n return false;\n if (this.wantRegionOutline !== rhs.wantRegionOutline)\n return false;\n if (this.material !== rhs.material)\n return false;\n if (this.textureMapping !== rhs.textureMapping)\n return false;\n\n if (!this.fillColor.equals(rhs.fillColor))\n return false;\n if (!this.lineColor.equals(rhs.lineColor))\n return false;\n\n return true;\n }\n\n public compareForMerge(rhs: DisplayParams): number {\n if (rhs === this)\n return 0;\n\n let diff = compareNumbers(this.type, rhs.type);\n if (0 === diff) {\n diff = compareBooleans(this.ignoreLighting, rhs.ignoreLighting);\n if (0 === diff) {\n diff = compareNumbers(this.width, rhs.width);\n if (0 === diff) {\n diff = compareNumbers(this.linePixels, rhs.linePixels);\n if (0 === diff) {\n diff = compareNumbers(this.fillFlags, rhs.fillFlags);\n if (0 === diff) {\n diff = compareBooleans(this.wantRegionOutline, rhs.wantRegionOutline);\n if (0 === diff) {\n diff = compareBooleans(this.hasFillTransparency, rhs.hasFillTransparency);\n if (0 === diff) {\n diff = compareBooleans(this.hasLineTransparency, rhs.hasLineTransparency);\n if (0 === diff) {\n diff = compareMaterials(this.material, rhs.material);\n if (0 === diff && undefined === this.material && this.isTextured) {\n diff = compareTextureMappings(this.textureMapping, rhs.textureMapping);\n }\n }\n }\n }\n }\n }\n }\n }\n }\n\n return diff;\n }\n\n /**\n * Given a ColorDef object, check its transparency and if it falls below the minimum, mark the color as fully opaque.\n * @return The original reference to the color provided, which has possibly been modified.\n */\n public static adjustTransparency(color: ColorDef): ColorDef {\n return (color.colors.t < DisplayParams.minTransparency) ? color.withTransparency(0) : color;\n }\n}\n\n/** @internal */\nexport namespace DisplayParams {\n export enum Type {\n Mesh,\n Linear,\n Text,\n }\n\n export enum RegionEdgeType {\n None,\n Default,\n Outline,\n }\n\n export enum ComparePurpose {\n Merge, // considers colors equivalent if both have or both lack transparency\n Strict, // compares all members\n }\n}\n"]}
|
|
@@ -24,6 +24,7 @@ const ParseImdlDocument_1 = require("../../imdl/ParseImdlDocument");
|
|
|
24
24
|
const Symbols_1 = require("../Symbols");
|
|
25
25
|
const GraphicDescriptionContextImpl_1 = require("./GraphicDescriptionContextImpl");
|
|
26
26
|
class GraphicDescriptionBuilderImpl extends GraphicAssembler_1.GraphicAssembler {
|
|
27
|
+
static { _a = Symbols_1._implementationProhibited; }
|
|
27
28
|
constructor(options) {
|
|
28
29
|
const type = options.type;
|
|
29
30
|
const placement = options.placement ?? core_geometry_1.Transform.createIdentity();
|
|
@@ -211,7 +212,6 @@ class GraphicDescriptionBuilderImpl extends GraphicAssembler_1.GraphicAssembler
|
|
|
211
212
|
}
|
|
212
213
|
}
|
|
213
214
|
exports.GraphicDescriptionBuilderImpl = GraphicDescriptionBuilderImpl;
|
|
214
|
-
_a = Symbols_1._implementationProhibited;
|
|
215
215
|
function convertVertexTable(src) {
|
|
216
216
|
return {
|
|
217
217
|
...src,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphicDescriptionBuilderImpl.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/GraphicDescriptionBuilderImpl.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { Point3d, Range3d, Range3dProps, Transform, XYAndZ } from \"@itwin/core-geometry\";\nimport { addPrimitiveTransferables, ImdlModel } from \"../../imdl/ImdlModel\";\nimport {\n ComputeGraphicDescriptionChordToleranceArgs, GraphicDescription, GraphicDescriptionBuilder, GraphicDescriptionBuilderOptions,\n} from \"../../render/GraphicDescriptionBuilder\";\nimport { GraphicType } from \"../../render/GraphicType\";\nimport { GraphicAssembler } from \"../../render/GraphicAssembler\";\nimport { Gradient, PackedFeatureTable, QPoint3dList } from \"@itwin/core-common\";\nimport { BatchOptions } from \"../../render/BatchOptions\";\nimport { assert, Id64String, TransientIdSequence } from \"@itwin/core-bentley\";\nimport { Mesh } from \"./MeshPrimitives\";\nimport { createPointStringParams } from \"./PointStringParams\";\nimport { VertexTable } from \"./VertexTable\";\nimport { createPolylineParams } from \"./PolylineParams\";\nimport { createMeshParams } from \"./VertexTableBuilder\";\nimport { edgeParamsToImdl } from \"../../imdl/ParseImdlDocument\";\nimport { _accumulator, _implementationProhibited } from \"../Symbols\";\nimport { WorkerGraphicDescriptionContextImpl, WorkerMaterial, WorkerTexture } from \"./GraphicDescriptionContextImpl\";\nimport { GraphicDescriptionContext } from \"../../render/GraphicDescriptionContext\";\nimport { MeshArgs } from \"../../../render/MeshArgs\";\nimport { PolylineArgs } from \"../../../render/PolylineArgs\";\n\nexport type BatchDescription = Omit<BatchOptions, \"tileId\"> & {\n featureTable: ImdlModel.FeatureTable;\n range: Range3dProps;\n isVolumeClassifier?: boolean;\n modelId: Id64String;\n};\n\nexport interface GraphicDescriptionImpl extends GraphicDescription {\n type: GraphicType;\n primitives: ImdlModel.Primitive[];\n translation?: XYAndZ;\n batch?: BatchDescription;\n /** Initialized the first time createGraphicFromDescription remaps the description in-place using a GraphicDescriptionContext.\n * Subsequently attempting to remap using same context should be a no-op.\n * Attempting to remap using a different context is an error.\n */\n remapContext?: GraphicDescriptionContext;\n}\n\nexport class GraphicDescriptionBuilderImpl extends GraphicAssembler implements GraphicDescriptionBuilder {\n public readonly [_implementationProhibited] = undefined;\n private readonly _computeChordTolerance: (args: ComputeGraphicDescriptionChordToleranceArgs) => number;\n private readonly _context: WorkerGraphicDescriptionContextImpl;\n private readonly _viewIndependentOrigin?: Point3d;\n\n public constructor(options: GraphicDescriptionBuilderOptions) {\n const type = options.type;\n const placement = options.placement ?? Transform.createIdentity();\n const wantEdges = options.generateEdges ?? type === GraphicType.Scene;\n const wantNormals = wantEdges || type === GraphicType.Scene;\n const preserveOrder = type === GraphicType.ViewOverlay || type === GraphicType.WorldOverlay || type === GraphicType.ViewBackground;\n\n super({\n ...options,\n [_implementationProhibited]: undefined,\n type,\n placement,\n wantEdges,\n wantNormals,\n preserveOrder,\n });\n\n this._computeChordTolerance = options.computeChordTolerance;\n this._viewIndependentOrigin = options.viewIndependentOrigin?.clone();\n\n this._context = options.context as WorkerGraphicDescriptionContextImpl;\n if (!(this._context.transientIds instanceof TransientIdSequence)) {\n throw new Error(\"Invalid WorkerGraphicDescriptionContext\");\n }\n }\n\n public finish(): GraphicDescriptionImpl {\n const description: GraphicDescriptionImpl = {\n [_implementationProhibited]: undefined,\n type: this.type,\n primitives: [],\n };\n\n if (this[_accumulator].isEmpty) {\n return description;\n }\n\n const tolerance = this._computeChordTolerance({ builder: this, computeRange: () => this[_accumulator].geometries.computeRange() });\n const meshes = this[_accumulator].toMeshes(this, tolerance, this.pickable);\n if (meshes.length === 0) {\n return description;\n }\n\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\n // it in the transform instead.\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\n // Apply the inverse translation to put them back into model space.\n let transformOrigin: Point3d | undefined;\n let meshesRangeOffset = false;\n\n for (const mesh of meshes) {\n const verts = mesh.points;\n if (!transformOrigin) {\n // This is the first mesh we've processed.\n if (verts instanceof QPoint3dList) {\n transformOrigin = verts.params.origin.clone();\n verts.params.origin.setZero();\n } else {\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\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.\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.\n // This will become the range in local coordinates of the batch, if we are creating a batch.\n transformOrigin = verts.range.center;\n if (!meshesRangeOffset) {\n meshes.range?.low.subtractInPlace(transformOrigin);\n meshes.range?.high.subtractInPlace(transformOrigin);\n meshesRangeOffset = true;\n }\n }\n } else {\n if (verts instanceof QPoint3dList) {\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\n verts.params.origin.setZero();\n } else {\n assert(verts.range.center.isAlmostZero);\n }\n }\n\n const primitive = this.createPrimitive(mesh);\n if (primitive) {\n const origin = this._viewIndependentOrigin;\n if (origin) {\n primitive.modifier = {\n type: \"viewIndependentOrigin\",\n origin: { x: origin.x, y: origin.y, z: origin.z },\n };\n }\n\n description.primitives.push(primitive);\n }\n }\n\n this[_accumulator].clear();\n if (transformOrigin) {\n description.translation = { x: transformOrigin.x, y: transformOrigin.y, z: transformOrigin.z };\n }\n\n const featureTable = this.pickable && meshes.features?.anyDefined ? meshes.features : undefined;\n if (featureTable) {\n assert(undefined !== this.pickable);\n const features = PackedFeatureTable.pack(featureTable);\n const range = meshes.range ?? new Range3d();\n description.batch = {\n ...this.pickable,\n range: range.toJSON(),\n modelId: this.pickable.modelId ?? this.pickable.id,\n featureTable: {\n multiModel: false,\n data: features.data,\n numFeatures: features.numFeatures,\n animationNodeIds: features.animationNodeIds,\n },\n };\n }\n\n return description;\n }\n\n private createPrimitive(mesh: Mesh): ImdlModel.Primitive | undefined {\n const meshArgs = mesh.toMeshArgs();\n if (meshArgs) {\n return this.createMeshPrimitive(meshArgs);\n }\n\n const polylineArgs = mesh.toPolylineArgs();\n if (!polylineArgs) {\n return undefined;\n }\n\n return polylineArgs.flags.isDisjoint ? this.createPointStringPrimitive(polylineArgs) : this.createPolylinePrimitive(polylineArgs);\n }\n\n private createMeshPrimitive(args: MeshArgs): ImdlModel.Primitive | undefined {\n const params = createMeshParams(args, this._context.constraints.maxTextureSize, true);\n\n let material;\n const mat = params.surface.material;\n if (mat) {\n assert(mat.isAtlas === false && mat.material instanceof WorkerMaterial);\n material = mat.material.toImdl();\n }\n\n let textureMapping;\n const tex = params.surface.textureMapping;\n if (tex) {\n assert(tex.texture instanceof WorkerTexture);\n textureMapping = { alwaysDisplayed: false, texture: tex.texture.index.toString(10) };\n }\n\n return {\n type: \"mesh\",\n params: {\n ...params,\n vertices: convertVertexTable(params.vertices),\n auxChannels: params.auxChannels?.toJSON(),\n edges: params.edges ? edgeParamsToImdl(params.edges) : undefined,\n surface: {\n ...params.surface,\n indices: params.surface.indices.data,\n material,\n textureMapping,\n },\n },\n };\n }\n\n private createPolylinePrimitive(args: PolylineArgs): ImdlModel.Primitive | undefined {\n const params = createPolylineParams(args, this._context.constraints.maxTextureSize);\n if (!params) {\n return undefined;\n }\n\n return {\n type: \"polyline\",\n params: {\n ...params,\n vertices: convertVertexTable(params.vertices),\n polyline: {\n indices: params.polyline.indices.data,\n prevIndices: params.polyline.prevIndices.data,\n nextIndicesAndParams: params.polyline.nextIndicesAndParams,\n },\n },\n };\n }\n\n private createPointStringPrimitive(args: PolylineArgs): ImdlModel.Primitive | undefined {\n const params = createPointStringParams(args, this._context.constraints.maxTextureSize);\n if (!params) {\n return undefined;\n }\n\n return {\n type: \"point\",\n params: {\n indices: params.indices.data,\n vertices: convertVertexTable(params.vertices),\n weight: params.weight,\n },\n };\n }\n\n protected override resolveGradient(gradient: Gradient.Symb) {\n return this._context.createGradientTexture(gradient);\n }\n}\n\nfunction convertVertexTable(src: VertexTable): ImdlModel.VertexTable {\n return {\n ...src,\n qparams: src.qparams.toJSON(),\n uvParams: src.uvParams?.toJSON(),\n uniformColor: src.uniformColor?.toJSON(),\n };\n}\n\nexport function isGraphicDescription(description: GraphicDescription): description is GraphicDescriptionImpl {\n const descr = description as GraphicDescriptionImpl;\n return \"object\" === typeof descr && Array.isArray(descr.primitives) && \"number\" === typeof descr.type;\n}\n\nexport function collectGraphicDescriptionTransferables(xfers: Set<Transferable>, description: GraphicDescription): void {\n if (!isGraphicDescription(description)) {\n throw new Error(\"Invalid GraphicDescription\");\n }\n\n for (const primitive of description.primitives) {\n addPrimitiveTransferables(xfers, primitive);\n }\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"GraphicDescriptionBuilderImpl.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/GraphicDescriptionBuilderImpl.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;AA0QH,oDAGC;AAED,wFAQC;AArRD,wDAAyF;AACzF,oDAA4E;AAI5E,0DAAuD;AACvD,oEAAiE;AACjE,oDAAgF;AAEhF,sDAA8E;AAE9E,2DAA8D;AAE9D,qDAAwD;AACxD,6DAAwD;AACxD,oEAAgE;AAChE,wCAAqE;AACrE,mFAAqH;AAwBrH,MAAa,6BAA8B,SAAQ,mCAAgB;kBAChD,mCAAyB;IAK1C,YAAmB,OAAyC;QAC1D,MAAM,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC;QAC1B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,yBAAS,CAAC,cAAc,EAAE,CAAC;QAClE,MAAM,SAAS,GAAG,OAAO,CAAC,aAAa,IAAI,IAAI,KAAK,yBAAW,CAAC,KAAK,CAAC;QACtE,MAAM,WAAW,GAAG,SAAS,IAAI,IAAI,KAAK,yBAAW,CAAC,KAAK,CAAC;QAC5D,MAAM,aAAa,GAAG,IAAI,KAAK,yBAAW,CAAC,WAAW,IAAI,IAAI,KAAK,yBAAW,CAAC,YAAY,IAAI,IAAI,KAAK,yBAAW,CAAC,cAAc,CAAC;QAEnI,KAAK,CAAC;YACJ,GAAG,OAAO;YACV,CAAC,mCAAyB,CAAC,EAAE,SAAS;YACtC,IAAI;YACJ,SAAS;YACT,SAAS;YACT,WAAW;YACX,aAAa;SACd,CAAC,CAAC;QApBW,QAA2B,GAAG,SAAS,CAAC;QAsBtD,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,CAAC;QAC5D,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,EAAE,KAAK,EAAE,CAAC;QAErE,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC,OAA8C,CAAC;QACvE,IAAI,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,YAAY,YAAY,kCAAmB,CAAC,EAAE,CAAC;YACjE,MAAM,IAAI,KAAK,CAAC,yCAAyC,CAAC,CAAC;QAC7D,CAAC;IACH,CAAC;IAEM,MAAM;QACX,MAAM,WAAW,GAA2B;YAC1C,CAAC,mCAAyB,CAAC,EAAE,SAAS;YACtC,IAAI,EAAE,IAAI,CAAC,IAAI;YACf,UAAU,EAAE,EAAE;SACf,CAAC;QAEF,IAAI,IAAI,CAAC,sBAAY,CAAC,CAAC,OAAO,EAAE,CAAC;YAC/B,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,sBAAsB,CAAC,EAAE,OAAO,EAAE,IAAI,EAAE,YAAY,EAAE,GAAG,EAAE,CAAC,IAAI,CAAC,sBAAY,CAAC,CAAC,UAAU,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;QACnI,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAY,CAAC,CAAC,QAAQ,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC3E,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,OAAO,WAAW,CAAC;QACrB,CAAC;QAED,uIAAuI;QACvI,wIAAwI;QACxI,+BAA+B;QAC/B,4HAA4H;QAC5H,mEAAmE;QACnE,IAAI,eAAoC,CAAC;QACzC,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAE9B,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,eAAe,EAAE,CAAC;gBACrB,0CAA0C;gBAC1C,IAAI,KAAK,YAAY,0BAAY,EAAE,CAAC;oBAClC,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC9C,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,6HAA6H;oBAC7H,2IAA2I;oBAC3I,6IAA6I;oBAC7I,4FAA4F;oBAC5F,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;oBACrC,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACvB,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;wBACnD,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;wBACpD,iBAAiB,GAAG,IAAI,CAAC;oBAC3B,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,KAAK,YAAY,0BAAY,EAAE,CAAC;oBAClC,IAAA,qBAAM,EAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC3D,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,IAAA,qBAAM,EAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;YAED,MAAM,SAAS,GAAG,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YAC7C,IAAI,SAAS,EAAE,CAAC;gBACd,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAsB,CAAC;gBAC3C,IAAI,MAAM,EAAE,CAAC;oBACX,SAAS,CAAC,QAAQ,GAAG;wBACnB,IAAI,EAAE,uBAAuB;wBAC7B,MAAM,EAAE,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE,CAAC,EAAE,MAAM,CAAC,CAAC,EAAE;qBAClD,CAAC;gBACJ,CAAC;gBAED,WAAW,CAAC,UAAU,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YACzC,CAAC;QACH,CAAC;QAED,IAAI,CAAC,sBAAY,CAAC,CAAC,KAAK,EAAE,CAAC;QAC3B,IAAI,eAAe,EAAE,CAAC;YACpB,WAAW,CAAC,WAAW,GAAG,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC,EAAE,eAAe,CAAC,CAAC,EAAE,CAAC;QACjG,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,QAAQ,IAAI,MAAM,CAAC,QAAQ,EAAE,UAAU,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,CAAC,SAAS,CAAC;QAChG,IAAI,YAAY,EAAE,CAAC;YACjB,IAAA,qBAAM,EAAC,SAAS,KAAK,IAAI,CAAC,QAAQ,CAAC,CAAC;YACpC,MAAM,QAAQ,GAAG,gCAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YACvD,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,IAAI,IAAI,uBAAO,EAAE,CAAC;YAC5C,WAAW,CAAC,KAAK,GAAG;gBAClB,GAAG,IAAI,CAAC,QAAQ;gBAChB,KAAK,EAAE,KAAK,CAAC,MAAM,EAAE;gBACrB,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,OAAO,IAAI,IAAI,CAAC,QAAQ,CAAC,EAAE;gBAClD,YAAY,EAAE;oBACZ,UAAU,EAAE,KAAK;oBACjB,IAAI,EAAE,QAAQ,CAAC,IAAI;oBACnB,WAAW,EAAE,QAAQ,CAAC,WAAW;oBACjC,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;iBAC5C;aACF,CAAC;QACJ,CAAC;QAED,OAAO,WAAW,CAAC;IACrB,CAAC;IAEO,eAAe,CAAC,IAAU;QAChC,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,EAAE,CAAC;QACnC,IAAI,QAAQ,EAAE,CAAC;YACb,OAAO,IAAI,CAAC,mBAAmB,CAAC,QAAQ,CAAC,CAAC;QAC5C,CAAC;QAED,MAAM,YAAY,GAAG,IAAI,CAAC,cAAc,EAAE,CAAC;QAC3C,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO,YAAY,CAAC,KAAK,CAAC,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,0BAA0B,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,uBAAuB,CAAC,YAAY,CAAC,CAAC;IACpI,CAAC;IAEO,mBAAmB,CAAC,IAAc;QACxC,MAAM,MAAM,GAAG,IAAA,qCAAgB,EAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;QAEtF,IAAI,QAAQ,CAAC;QACb,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,QAAQ,CAAC;QACpC,IAAI,GAAG,EAAE,CAAC;YACR,IAAA,qBAAM,EAAC,GAAG,CAAC,OAAO,KAAK,KAAK,IAAI,GAAG,CAAC,QAAQ,YAAY,8CAAc,CAAC,CAAC;YACxE,QAAQ,GAAG,GAAG,CAAC,QAAQ,CAAC,MAAM,EAAE,CAAC;QACnC,CAAC;QAED,IAAI,cAAc,CAAC;QACnB,MAAM,GAAG,GAAG,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC;QAC1C,IAAI,GAAG,EAAE,CAAC;YACR,IAAA,qBAAM,EAAC,GAAG,CAAC,OAAO,YAAY,6CAAa,CAAC,CAAC;YAC7C,cAAc,GAAG,EAAE,eAAe,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC,EAAE,CAAC;QACvF,CAAC;QAED,OAAO;YACL,IAAI,EAAE,MAAM;YACZ,MAAM,EAAE;gBACN,GAAG,MAAM;gBACT,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC7C,WAAW,EAAE,MAAM,CAAC,WAAW,EAAE,MAAM,EAAE;gBACzC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,IAAA,oCAAgB,EAAC,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,SAAS;gBAChE,OAAO,EAAE;oBACP,GAAG,MAAM,CAAC,OAAO;oBACjB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI;oBACpC,QAAQ;oBACR,cAAc;iBACf;aACF;SACF,CAAC;IACJ,CAAC;IAEO,uBAAuB,CAAC,IAAkB;QAChD,MAAM,MAAM,GAAG,IAAA,qCAAoB,EAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACpF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,UAAU;YAChB,MAAM,EAAE;gBACN,GAAG,MAAM;gBACT,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC7C,QAAQ,EAAE;oBACR,OAAO,EAAE,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI;oBACrC,WAAW,EAAE,MAAM,CAAC,QAAQ,CAAC,WAAW,CAAC,IAAI;oBAC7C,oBAAoB,EAAE,MAAM,CAAC,QAAQ,CAAC,oBAAoB;iBAC3D;aACF;SACF,CAAC;IACJ,CAAC;IAEO,0BAA0B,CAAC,IAAkB;QACnD,MAAM,MAAM,GAAG,IAAA,2CAAuB,EAAC,IAAI,EAAE,IAAI,CAAC,QAAQ,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC;QACvF,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO,SAAS,CAAC;QACnB,CAAC;QAED,OAAO;YACL,IAAI,EAAE,OAAO;YACb,MAAM,EAAE;gBACN,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,IAAI;gBAC5B,QAAQ,EAAE,kBAAkB,CAAC,MAAM,CAAC,QAAQ,CAAC;gBAC7C,MAAM,EAAE,MAAM,CAAC,MAAM;aACtB;SACF,CAAC;IACJ,CAAC;IAEkB,eAAe,CAAC,QAAuB;QACxD,OAAO,IAAI,CAAC,QAAQ,CAAC,qBAAqB,CAAC,QAAQ,CAAC,CAAC;IACvD,CAAC;CACF;AApND,sEAoNC;AAED,SAAS,kBAAkB,CAAC,GAAgB;IAC1C,OAAO;QACL,GAAG,GAAG;QACN,OAAO,EAAE,GAAG,CAAC,OAAO,CAAC,MAAM,EAAE;QAC7B,QAAQ,EAAE,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE;QAChC,YAAY,EAAE,GAAG,CAAC,YAAY,EAAE,MAAM,EAAE;KACzC,CAAC;AACJ,CAAC;AAED,SAAgB,oBAAoB,CAAC,WAA+B;IAClE,MAAM,KAAK,GAAG,WAAqC,CAAC;IACpD,OAAO,QAAQ,KAAK,OAAO,KAAK,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,QAAQ,KAAK,OAAO,KAAK,CAAC,IAAI,CAAC;AACxG,CAAC;AAED,SAAgB,sCAAsC,CAAC,KAAwB,EAAE,WAA+B;IAC9G,IAAI,CAAC,oBAAoB,CAAC,WAAW,CAAC,EAAE,CAAC;QACvC,MAAM,IAAI,KAAK,CAAC,4BAA4B,CAAC,CAAC;IAChD,CAAC;IAED,KAAK,MAAM,SAAS,IAAI,WAAW,CAAC,UAAU,EAAE,CAAC;QAC/C,IAAA,qCAAyB,EAAC,KAAK,EAAE,SAAS,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { Point3d, Range3d, Range3dProps, Transform, XYAndZ } from \"@itwin/core-geometry\";\nimport { addPrimitiveTransferables, ImdlModel } from \"../../imdl/ImdlModel\";\nimport {\n ComputeGraphicDescriptionChordToleranceArgs, GraphicDescription, GraphicDescriptionBuilder, GraphicDescriptionBuilderOptions,\n} from \"../../render/GraphicDescriptionBuilder\";\nimport { GraphicType } from \"../../render/GraphicType\";\nimport { GraphicAssembler } from \"../../render/GraphicAssembler\";\nimport { Gradient, PackedFeatureTable, QPoint3dList } from \"@itwin/core-common\";\nimport { BatchOptions } from \"../../render/BatchOptions\";\nimport { assert, Id64String, TransientIdSequence } from \"@itwin/core-bentley\";\nimport { Mesh } from \"./MeshPrimitives\";\nimport { createPointStringParams } from \"./PointStringParams\";\nimport { VertexTable } from \"./VertexTable\";\nimport { createPolylineParams } from \"./PolylineParams\";\nimport { createMeshParams } from \"./VertexTableBuilder\";\nimport { edgeParamsToImdl } from \"../../imdl/ParseImdlDocument\";\nimport { _accumulator, _implementationProhibited } from \"../Symbols\";\nimport { WorkerGraphicDescriptionContextImpl, WorkerMaterial, WorkerTexture } from \"./GraphicDescriptionContextImpl\";\nimport { GraphicDescriptionContext } from \"../../render/GraphicDescriptionContext\";\nimport { MeshArgs } from \"../../../render/MeshArgs\";\nimport { PolylineArgs } from \"../../../render/PolylineArgs\";\n\nexport type BatchDescription = Omit<BatchOptions, \"tileId\"> & {\n featureTable: ImdlModel.FeatureTable;\n range: Range3dProps;\n isVolumeClassifier?: boolean;\n modelId: Id64String;\n};\n\nexport interface GraphicDescriptionImpl extends GraphicDescription {\n type: GraphicType;\n primitives: ImdlModel.Primitive[];\n translation?: XYAndZ;\n batch?: BatchDescription;\n /** Initialized the first time createGraphicFromDescription remaps the description in-place using a GraphicDescriptionContext.\n * Subsequently attempting to remap using same context should be a no-op.\n * Attempting to remap using a different context is an error.\n */\n remapContext?: GraphicDescriptionContext;\n}\n\nexport class GraphicDescriptionBuilderImpl extends GraphicAssembler implements GraphicDescriptionBuilder {\n public readonly [_implementationProhibited] = undefined;\n private readonly _computeChordTolerance: (args: ComputeGraphicDescriptionChordToleranceArgs) => number;\n private readonly _context: WorkerGraphicDescriptionContextImpl;\n private readonly _viewIndependentOrigin?: Point3d;\n\n public constructor(options: GraphicDescriptionBuilderOptions) {\n const type = options.type;\n const placement = options.placement ?? Transform.createIdentity();\n const wantEdges = options.generateEdges ?? type === GraphicType.Scene;\n const wantNormals = wantEdges || type === GraphicType.Scene;\n const preserveOrder = type === GraphicType.ViewOverlay || type === GraphicType.WorldOverlay || type === GraphicType.ViewBackground;\n\n super({\n ...options,\n [_implementationProhibited]: undefined,\n type,\n placement,\n wantEdges,\n wantNormals,\n preserveOrder,\n });\n\n this._computeChordTolerance = options.computeChordTolerance;\n this._viewIndependentOrigin = options.viewIndependentOrigin?.clone();\n\n this._context = options.context as WorkerGraphicDescriptionContextImpl;\n if (!(this._context.transientIds instanceof TransientIdSequence)) {\n throw new Error(\"Invalid WorkerGraphicDescriptionContext\");\n }\n }\n\n public finish(): GraphicDescriptionImpl {\n const description: GraphicDescriptionImpl = {\n [_implementationProhibited]: undefined,\n type: this.type,\n primitives: [],\n };\n\n if (this[_accumulator].isEmpty) {\n return description;\n }\n\n const tolerance = this._computeChordTolerance({ builder: this, computeRange: () => this[_accumulator].geometries.computeRange() });\n const meshes = this[_accumulator].toMeshes(this, tolerance, this.pickable);\n if (meshes.length === 0) {\n return description;\n }\n\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\n // it in the transform instead.\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\n // Apply the inverse translation to put them back into model space.\n let transformOrigin: Point3d | undefined;\n let meshesRangeOffset = false;\n\n for (const mesh of meshes) {\n const verts = mesh.points;\n if (!transformOrigin) {\n // This is the first mesh we've processed.\n if (verts instanceof QPoint3dList) {\n transformOrigin = verts.params.origin.clone();\n verts.params.origin.setZero();\n } else {\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\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.\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.\n // This will become the range in local coordinates of the batch, if we are creating a batch.\n transformOrigin = verts.range.center;\n if (!meshesRangeOffset) {\n meshes.range?.low.subtractInPlace(transformOrigin);\n meshes.range?.high.subtractInPlace(transformOrigin);\n meshesRangeOffset = true;\n }\n }\n } else {\n if (verts instanceof QPoint3dList) {\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\n verts.params.origin.setZero();\n } else {\n assert(verts.range.center.isAlmostZero);\n }\n }\n\n const primitive = this.createPrimitive(mesh);\n if (primitive) {\n const origin = this._viewIndependentOrigin;\n if (origin) {\n primitive.modifier = {\n type: \"viewIndependentOrigin\",\n origin: { x: origin.x, y: origin.y, z: origin.z },\n };\n }\n\n description.primitives.push(primitive);\n }\n }\n\n this[_accumulator].clear();\n if (transformOrigin) {\n description.translation = { x: transformOrigin.x, y: transformOrigin.y, z: transformOrigin.z };\n }\n\n const featureTable = this.pickable && meshes.features?.anyDefined ? meshes.features : undefined;\n if (featureTable) {\n assert(undefined !== this.pickable);\n const features = PackedFeatureTable.pack(featureTable);\n const range = meshes.range ?? new Range3d();\n description.batch = {\n ...this.pickable,\n range: range.toJSON(),\n modelId: this.pickable.modelId ?? this.pickable.id,\n featureTable: {\n multiModel: false,\n data: features.data,\n numFeatures: features.numFeatures,\n animationNodeIds: features.animationNodeIds,\n },\n };\n }\n\n return description;\n }\n\n private createPrimitive(mesh: Mesh): ImdlModel.Primitive | undefined {\n const meshArgs = mesh.toMeshArgs();\n if (meshArgs) {\n return this.createMeshPrimitive(meshArgs);\n }\n\n const polylineArgs = mesh.toPolylineArgs();\n if (!polylineArgs) {\n return undefined;\n }\n\n return polylineArgs.flags.isDisjoint ? this.createPointStringPrimitive(polylineArgs) : this.createPolylinePrimitive(polylineArgs);\n }\n\n private createMeshPrimitive(args: MeshArgs): ImdlModel.Primitive | undefined {\n const params = createMeshParams(args, this._context.constraints.maxTextureSize, true);\n\n let material;\n const mat = params.surface.material;\n if (mat) {\n assert(mat.isAtlas === false && mat.material instanceof WorkerMaterial);\n material = mat.material.toImdl();\n }\n\n let textureMapping;\n const tex = params.surface.textureMapping;\n if (tex) {\n assert(tex.texture instanceof WorkerTexture);\n textureMapping = { alwaysDisplayed: false, texture: tex.texture.index.toString(10) };\n }\n\n return {\n type: \"mesh\",\n params: {\n ...params,\n vertices: convertVertexTable(params.vertices),\n auxChannels: params.auxChannels?.toJSON(),\n edges: params.edges ? edgeParamsToImdl(params.edges) : undefined,\n surface: {\n ...params.surface,\n indices: params.surface.indices.data,\n material,\n textureMapping,\n },\n },\n };\n }\n\n private createPolylinePrimitive(args: PolylineArgs): ImdlModel.Primitive | undefined {\n const params = createPolylineParams(args, this._context.constraints.maxTextureSize);\n if (!params) {\n return undefined;\n }\n\n return {\n type: \"polyline\",\n params: {\n ...params,\n vertices: convertVertexTable(params.vertices),\n polyline: {\n indices: params.polyline.indices.data,\n prevIndices: params.polyline.prevIndices.data,\n nextIndicesAndParams: params.polyline.nextIndicesAndParams,\n },\n },\n };\n }\n\n private createPointStringPrimitive(args: PolylineArgs): ImdlModel.Primitive | undefined {\n const params = createPointStringParams(args, this._context.constraints.maxTextureSize);\n if (!params) {\n return undefined;\n }\n\n return {\n type: \"point\",\n params: {\n indices: params.indices.data,\n vertices: convertVertexTable(params.vertices),\n weight: params.weight,\n },\n };\n }\n\n protected override resolveGradient(gradient: Gradient.Symb) {\n return this._context.createGradientTexture(gradient);\n }\n}\n\nfunction convertVertexTable(src: VertexTable): ImdlModel.VertexTable {\n return {\n ...src,\n qparams: src.qparams.toJSON(),\n uvParams: src.uvParams?.toJSON(),\n uniformColor: src.uniformColor?.toJSON(),\n };\n}\n\nexport function isGraphicDescription(description: GraphicDescription): description is GraphicDescriptionImpl {\n const descr = description as GraphicDescriptionImpl;\n return \"object\" === typeof descr && Array.isArray(descr.primitives) && \"number\" === typeof descr.type;\n}\n\nexport function collectGraphicDescriptionTransferables(xfers: Set<Transferable>, description: GraphicDescription): void {\n if (!isGraphicDescription(description)) {\n throw new Error(\"Invalid GraphicDescription\");\n }\n\n for (const primitive of description.primitives) {\n addPrimitiveTransferables(xfers, primitive);\n }\n}\n\n"]}
|
|
@@ -102,6 +102,7 @@ class WorkerMaterial extends core_common_1.RenderMaterial {
|
|
|
102
102
|
}
|
|
103
103
|
exports.WorkerMaterial = WorkerMaterial;
|
|
104
104
|
class WorkerGraphicDescriptionContextImpl {
|
|
105
|
+
static { _a = Symbols_1._implementationProhibited; }
|
|
105
106
|
constructor(props) {
|
|
106
107
|
this[_a] = undefined;
|
|
107
108
|
this.textures = [];
|
|
@@ -142,5 +143,4 @@ class WorkerGraphicDescriptionContextImpl {
|
|
|
142
143
|
}
|
|
143
144
|
}
|
|
144
145
|
exports.WorkerGraphicDescriptionContextImpl = WorkerGraphicDescriptionContextImpl;
|
|
145
|
-
_a = Symbols_1._implementationProhibited;
|
|
146
146
|
//# sourceMappingURL=GraphicDescriptionContextImpl.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"GraphicDescriptionContextImpl.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/GraphicDescriptionContextImpl.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { TransientIdSequence, TransientIdSequenceProps } from \"@itwin/core-bentley\";\nimport { _implementationProhibited } from \"../Symbols\";\nimport { GraphicDescriptionContextProps, WorkerGraphicDescriptionContext, WorkerGraphicDescriptionContextProps, WorkerTextureParams } from \"../../render/GraphicDescriptionContext\";\nimport { MaterialParams } from \"../../render/MaterialParams\";\nimport { ColorDef, ColorDefProps, Gradient, ImageBufferFormat, ImageSource, ImageSourceFormat, RenderMaterial, RenderTexture, RgbColor, RgbColorProps, TextureMapping, TextureTransparency } from \"@itwin/core-common\";\nimport { ImdlModel } from \"../../imdl/ImdlModel\";\n\n/** As part of a [[WorkerGraphicDescriptionContext]], describes constraints imposed by the [[RenderSystem]] that a [[GraphicDescriptionBuilder]] needs to know about\n * when creating a [[GraphicDescription]].\n */\nexport interface GraphicDescriptionConstraints {\n /** @internal */\n readonly [_implementationProhibited]: unknown;\n /** The maximum dimension (width or height) permitted for a single WebGL texture. */\n readonly maxTextureSize: number;\n}\n\nexport interface WorkerGraphicDescriptionContextPropsImpl extends WorkerGraphicDescriptionContextProps {\n readonly constraints: GraphicDescriptionConstraints;\n readonly transientIds: TransientIdSequenceProps;\n}\n\nexport interface GraphicDescriptionContextPropsImpl extends GraphicDescriptionContextProps {\n readonly transientIds: TransientIdSequenceProps;\n readonly textures: WorkerTextureProps[];\n /** This is set to true the first time we use RenderSystem.createGraphicDescriptionContext on it.\n * That prevents us from remapping transient Ids to different transient Ids, recreating duplicate textures+materials, etc if\n * somebody tries to resolve the same props more than once.\n * We will throw if somebody tries to re-resolve a GraphicDescriptionContextPropsImpl.\n */\n resolved?: boolean;\n}\n\nexport interface TextureUrlProps {\n url: string;\n transparency?: TextureTransparency;\n gradient?: never;\n imageBuffer?: never;\n imageSource?: never;\n width?: never;\n format?: never;\n}\n\nexport interface TextureImageBufferProps {\n imageBuffer: Uint8Array;\n format: ImageBufferFormat;\n transparency?: TextureTransparency;\n width: number;\n gradient?: never;\n imageSource?: never;\n url?: never;\n}\n\nexport interface TextureImageSourceProps {\n imageSource: Uint8Array | string;\n format: ImageSourceFormat;\n transparency?: TextureTransparency;\n width?: never;\n url?: never;\n imageBuffer?: never;\n gradient?: never;\n}\n\nexport interface TextureGradientSource {\n gradient: Gradient.Symb;\n transparency?: never;\n format?: never;\n imageBuffer?: never;\n imageSource?: never;\n url?: never;\n width?: never;\n}\n\nexport type TextureGradientSourceProps = Omit<TextureGradientSource, \"gradient\"> & { gradient: Gradient.SymbProps };\nexport type TextureSource = TextureUrlProps | TextureImageBufferProps | TextureImageSourceProps | TextureGradientSource;\nexport type TextureSourceProps = TextureUrlProps | TextureImageBufferProps | TextureImageSourceProps | TextureGradientSourceProps;\n\nexport interface WorkerTextureProps {\n type: RenderTexture.Type;\n transparency?: TextureTransparency;\n source: TextureSourceProps;\n}\n\nexport class WorkerTexture extends RenderTexture {\n public readonly index: number;\n public readonly source: TextureSource;\n\n public constructor(index: number, params: WorkerTextureParams | Gradient.Symb) {\n let type = RenderTexture.Type.Normal;\n if (!(params instanceof Gradient.Symb) && undefined !== params.type) {\n type = params.type;\n }\n\n super(type);\n\n this.index = index;\n if (params instanceof Gradient.Symb) {\n this.source = { gradient: params };\n } else {\n const transparency = params.transparency;\n if (params.source instanceof URL) {\n this.source = { transparency, url: params.source.toString() };\n } else if (params.source instanceof ImageSource) {\n this.source = { transparency, imageSource: params.source.data, format: params.source.format };\n } else {\n this.source = { transparency, imageBuffer: params.source.data, format: params.source.format, width: params.source.width };\n }\n }\n }\n\n public override dispose() { }\n public override get bytesUsed() { return 0; } // doesn't matter, nobody's calling this.\n\n public toProps(xfer: Set<Transferable>): WorkerTextureProps {\n const source = this.source.gradient ? { ...this.source, gradient: this.source.gradient.toJSON() } : this.source;\n const buffer = source.imageBuffer ?? source.imageSource;\n if (buffer instanceof Uint8Array) {\n xfer.add(buffer.buffer);\n }\n\n return {\n type: this.type,\n source,\n };\n }\n}\n\nfunction materialColorToImdl(color: ColorDef | RgbColorProps | undefined): ColorDefProps | undefined {\n if (!(color instanceof ColorDef)) {\n color = RgbColor.fromJSON(color).toColorDef();\n }\n\n return color?.toJSON();\n}\n\nexport class WorkerMaterial extends RenderMaterial {\n public readonly params: MaterialParams;\n\n public constructor(params: MaterialParams) {\n let textureMapping;\n if (params.textureMapping) {\n textureMapping = new TextureMapping(params.textureMapping.texture, new TextureMapping.Params({\n textureMat2x3: params.textureMapping.transform,\n mapMode: params.textureMapping.mode,\n textureWeight: params.textureMapping.weight,\n worldMapping: params.textureMapping.worldMapping,\n useConstantLod: params.textureMapping.useConstantLod,\n constantLodProps: params.textureMapping.constantLodProps,\n }));\n textureMapping.normalMapParams = params.textureMapping.normalMapParams;\n }\n\n super({ textureMapping });\n\n this.params = params;\n }\n\n public toImdl(): ImdlModel.SurfaceMaterial {\n let diffuse;\n if (this.params.diffuse) {\n diffuse = {\n weight: this.params.diffuse.weight,\n color: materialColorToImdl(this.params.diffuse.color),\n };\n }\n\n let specular;\n if (this.params.specular) {\n specular = {\n weight: this.params.specular.weight,\n exponent: this.params.specular.exponent,\n color: materialColorToImdl(this.params.specular.color),\n };\n }\n\n return {\n isAtlas: false,\n material: {\n alpha: this.params.alpha,\n diffuse,\n specular,\n },\n };\n }\n}\n\nexport class WorkerGraphicDescriptionContextImpl implements WorkerGraphicDescriptionContext {\n public readonly [_implementationProhibited] = undefined;\n public readonly constraints: GraphicDescriptionConstraints;\n public readonly transientIds: TransientIdSequence;\n public readonly textures: WorkerTexture[] = [];\n public readonly materials: WorkerMaterial[] = [];\n\n public constructor(props: WorkerGraphicDescriptionContextProps) {\n const propsImpl = props as WorkerGraphicDescriptionContextPropsImpl;\n if (typeof propsImpl.transientIds !== \"object\" || typeof propsImpl.constraints !== \"object\") {\n throw new Error(\"Invalid WorkerGraphicDescriptionContextProps\");\n }\n\n this.constraints = propsImpl.constraints;\n this.transientIds = TransientIdSequence.fromJSON(propsImpl.transientIds);\n }\n\n public createMaterial(params: MaterialParams): RenderMaterial {\n const material = new WorkerMaterial(params);\n this.materials.push(material);\n return material;\n }\n\n public createTexture(params: WorkerTextureParams): RenderTexture {\n const texture = new WorkerTexture(this.textures.length, params);\n this.textures.push(texture);\n return texture;\n }\n\n public createGradientTexture(gradient: Gradient.Symb): RenderTexture {\n const existing = this.textures.find((tx) => tx.source.gradient && tx.source.gradient.equals(gradient));\n if (existing) {\n return existing;\n }\n\n const texture = new WorkerTexture(this.textures.length, gradient);\n this.textures.push(texture);\n return texture;\n }\n\n public toProps(transferables: Set<Transferable>): GraphicDescriptionContextPropsImpl {\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.\n return {\n [_implementationProhibited]: undefined,\n transientIds: this.transientIds.toJSON(),\n textures: this.textures.map((tx) => tx.toProps(transferables)),\n };\n }\n}\n\n"]}
|
|
1
|
+
{"version":3,"file":"GraphicDescriptionContextImpl.js","sourceRoot":"","sources":["../../../../../src/common/internal/render/GraphicDescriptionContextImpl.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { TransientIdSequence, TransientIdSequenceProps } from \"@itwin/core-bentley\";\nimport { _implementationProhibited } from \"../Symbols\";\nimport { GraphicDescriptionContextProps, WorkerGraphicDescriptionContext, WorkerGraphicDescriptionContextProps, WorkerTextureParams } from \"../../render/GraphicDescriptionContext\";\nimport { MaterialParams } from \"../../render/MaterialParams\";\nimport { ColorDef, ColorDefProps, Gradient, ImageBufferFormat, ImageSource, ImageSourceFormat, RenderMaterial, RenderTexture, RgbColor, RgbColorProps, TextureMapping, TextureTransparency } from \"@itwin/core-common\";\nimport { ImdlModel } from \"../../imdl/ImdlModel\";\n\n/** As part of a [[WorkerGraphicDescriptionContext]], describes constraints imposed by the [[RenderSystem]] that a [[GraphicDescriptionBuilder]] needs to know about\n * when creating a [[GraphicDescription]].\n */\nexport interface GraphicDescriptionConstraints {\n /** @internal */\n readonly [_implementationProhibited]: unknown;\n /** The maximum dimension (width or height) permitted for a single WebGL texture. */\n readonly maxTextureSize: number;\n}\n\nexport interface WorkerGraphicDescriptionContextPropsImpl extends WorkerGraphicDescriptionContextProps {\n readonly constraints: GraphicDescriptionConstraints;\n readonly transientIds: TransientIdSequenceProps;\n}\n\nexport interface GraphicDescriptionContextPropsImpl extends GraphicDescriptionContextProps {\n readonly transientIds: TransientIdSequenceProps;\n readonly textures: WorkerTextureProps[];\n /** This is set to true the first time we use RenderSystem.createGraphicDescriptionContext on it.\n * That prevents us from remapping transient Ids to different transient Ids, recreating duplicate textures+materials, etc if\n * somebody tries to resolve the same props more than once.\n * We will throw if somebody tries to re-resolve a GraphicDescriptionContextPropsImpl.\n */\n resolved?: boolean;\n}\n\nexport interface TextureUrlProps {\n url: string;\n transparency?: TextureTransparency;\n gradient?: never;\n imageBuffer?: never;\n imageSource?: never;\n width?: never;\n format?: never;\n}\n\nexport interface TextureImageBufferProps {\n imageBuffer: Uint8Array;\n format: ImageBufferFormat;\n transparency?: TextureTransparency;\n width: number;\n gradient?: never;\n imageSource?: never;\n url?: never;\n}\n\nexport interface TextureImageSourceProps {\n imageSource: Uint8Array | string;\n format: ImageSourceFormat;\n transparency?: TextureTransparency;\n width?: never;\n url?: never;\n imageBuffer?: never;\n gradient?: never;\n}\n\nexport interface TextureGradientSource {\n gradient: Gradient.Symb;\n transparency?: never;\n format?: never;\n imageBuffer?: never;\n imageSource?: never;\n url?: never;\n width?: never;\n}\n\nexport type TextureGradientSourceProps = Omit<TextureGradientSource, \"gradient\"> & { gradient: Gradient.SymbProps };\nexport type TextureSource = TextureUrlProps | TextureImageBufferProps | TextureImageSourceProps | TextureGradientSource;\nexport type TextureSourceProps = TextureUrlProps | TextureImageBufferProps | TextureImageSourceProps | TextureGradientSourceProps;\n\nexport interface WorkerTextureProps {\n type: RenderTexture.Type;\n transparency?: TextureTransparency;\n source: TextureSourceProps;\n}\n\nexport class WorkerTexture extends RenderTexture {\n public readonly index: number;\n public readonly source: TextureSource;\n\n public constructor(index: number, params: WorkerTextureParams | Gradient.Symb) {\n let type = RenderTexture.Type.Normal;\n if (!(params instanceof Gradient.Symb) && undefined !== params.type) {\n type = params.type;\n }\n\n super(type);\n\n this.index = index;\n if (params instanceof Gradient.Symb) {\n this.source = { gradient: params };\n } else {\n const transparency = params.transparency;\n if (params.source instanceof URL) {\n this.source = { transparency, url: params.source.toString() };\n } else if (params.source instanceof ImageSource) {\n this.source = { transparency, imageSource: params.source.data, format: params.source.format };\n } else {\n this.source = { transparency, imageBuffer: params.source.data, format: params.source.format, width: params.source.width };\n }\n }\n }\n\n public override dispose() { }\n public override get bytesUsed() { return 0; } // doesn't matter, nobody's calling this.\n\n public toProps(xfer: Set<Transferable>): WorkerTextureProps {\n const source = this.source.gradient ? { ...this.source, gradient: this.source.gradient.toJSON() } : this.source;\n const buffer = source.imageBuffer ?? source.imageSource;\n if (buffer instanceof Uint8Array) {\n xfer.add(buffer.buffer);\n }\n\n return {\n type: this.type,\n source,\n };\n }\n}\n\nfunction materialColorToImdl(color: ColorDef | RgbColorProps | undefined): ColorDefProps | undefined {\n if (!(color instanceof ColorDef)) {\n color = RgbColor.fromJSON(color).toColorDef();\n }\n\n return color?.toJSON();\n}\n\nexport class WorkerMaterial extends RenderMaterial {\n public readonly params: MaterialParams;\n\n public constructor(params: MaterialParams) {\n let textureMapping;\n if (params.textureMapping) {\n textureMapping = new TextureMapping(params.textureMapping.texture, new TextureMapping.Params({\n textureMat2x3: params.textureMapping.transform,\n mapMode: params.textureMapping.mode,\n textureWeight: params.textureMapping.weight,\n worldMapping: params.textureMapping.worldMapping,\n useConstantLod: params.textureMapping.useConstantLod,\n constantLodProps: params.textureMapping.constantLodProps,\n }));\n textureMapping.normalMapParams = params.textureMapping.normalMapParams;\n }\n\n super({ textureMapping });\n\n this.params = params;\n }\n\n public toImdl(): ImdlModel.SurfaceMaterial {\n let diffuse;\n if (this.params.diffuse) {\n diffuse = {\n weight: this.params.diffuse.weight,\n color: materialColorToImdl(this.params.diffuse.color),\n };\n }\n\n let specular;\n if (this.params.specular) {\n specular = {\n weight: this.params.specular.weight,\n exponent: this.params.specular.exponent,\n color: materialColorToImdl(this.params.specular.color),\n };\n }\n\n return {\n isAtlas: false,\n material: {\n alpha: this.params.alpha,\n diffuse,\n specular,\n },\n };\n }\n}\n\nexport class WorkerGraphicDescriptionContextImpl implements WorkerGraphicDescriptionContext {\n public readonly [_implementationProhibited] = undefined;\n public readonly constraints: GraphicDescriptionConstraints;\n public readonly transientIds: TransientIdSequence;\n public readonly textures: WorkerTexture[] = [];\n public readonly materials: WorkerMaterial[] = [];\n\n public constructor(props: WorkerGraphicDescriptionContextProps) {\n const propsImpl = props as WorkerGraphicDescriptionContextPropsImpl;\n if (typeof propsImpl.transientIds !== \"object\" || typeof propsImpl.constraints !== \"object\") {\n throw new Error(\"Invalid WorkerGraphicDescriptionContextProps\");\n }\n\n this.constraints = propsImpl.constraints;\n this.transientIds = TransientIdSequence.fromJSON(propsImpl.transientIds);\n }\n\n public createMaterial(params: MaterialParams): RenderMaterial {\n const material = new WorkerMaterial(params);\n this.materials.push(material);\n return material;\n }\n\n public createTexture(params: WorkerTextureParams): RenderTexture {\n const texture = new WorkerTexture(this.textures.length, params);\n this.textures.push(texture);\n return texture;\n }\n\n public createGradientTexture(gradient: Gradient.Symb): RenderTexture {\n const existing = this.textures.find((tx) => tx.source.gradient && tx.source.gradient.equals(gradient));\n if (existing) {\n return existing;\n }\n\n const texture = new WorkerTexture(this.textures.length, gradient);\n this.textures.push(texture);\n return texture;\n }\n\n public toProps(transferables: Set<Transferable>): GraphicDescriptionContextPropsImpl {\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.\n return {\n [_implementationProhibited]: undefined,\n transientIds: this.transientIds.toJSON(),\n textures: this.textures.map((tx) => tx.toProps(transferables)),\n };\n }\n}\n\n"]}
|
|
@@ -18,6 +18,7 @@ const Symbols_1 = require("../../common/internal/Symbols");
|
|
|
18
18
|
const GraphicTemplate_1 = require("../../render/GraphicTemplate");
|
|
19
19
|
/** @internal */
|
|
20
20
|
class PrimitiveBuilder extends GraphicBuilder_1.GraphicBuilder {
|
|
21
|
+
static { _a = Symbols_1._implementationProhibited; }
|
|
21
22
|
constructor(system, options) {
|
|
22
23
|
super(options);
|
|
23
24
|
this[_a] = undefined;
|
|
@@ -183,5 +184,4 @@ class PrimitiveBuilder extends GraphicBuilder_1.GraphicBuilder {
|
|
|
183
184
|
}
|
|
184
185
|
}
|
|
185
186
|
exports.PrimitiveBuilder = PrimitiveBuilder;
|
|
186
|
-
_a = Symbols_1._implementationProhibited;
|
|
187
187
|
//# sourceMappingURL=PrimitiveBuilder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"PrimitiveBuilder.js","sourceRoot":"","sources":["../../../../src/internal/render/PrimitiveBuilder.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;;AAEH,wDAAmE;AACnE,oDAA+F;AAC/F,gEAAyH;AAMzH,8DAA2D;AAC3D,sDAA6C;AAC7C,2DAAwF;AACxF,kEAA4G;AAG5G,gBAAgB;AAChB,MAAa,gBAAiB,SAAQ,+BAAc;IAOlD,YAAmB,MAAoB,EAAE,OAAoE;QAC3G,KAAK,CAAC,OAAO,CAAC,CAAC;QAPD,QAA2B,GAAG,SAAS,CAAC;QAEjD,eAAU,GAAoB,EAAE,CAAC;QAMtC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;QACxB,IAAI,CAAC,sBAAsB,GAAG,OAAO,CAAC,qBAAqB,EAAE,KAAK,EAAE,CAAC;IACvE,CAAC;IAEe,MAAM;QACpB,MAAM,QAAQ,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAAE,QAAQ,EAAE,CAAC,CAAC;QACpE,OAAO,OAAO,IAAI,IAAI,CAAC,MAAM,CAAC,iBAAiB,CAAC,EAAE,CAAC,CAAC;IACtD,CAAC;IAEe,cAAc;QAC5B,OAAO,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,CAAC;IAC/B,CAAC;IAEO,UAAU,CAAC,SAAkB;QACnC,MAAM,KAAK,GAAG,IAAI,CAAC,sBAAY,CAAC,CAAC;QACjC,MAAM,SAAS,GAAG,IAAI,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAC/C,MAAM,MAAM,GAAG,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,SAAS,EAAE,IAAI,CAAC,QAAQ,EAAE,SAAS,CAAC,CAAC;QAC9E,KAAK,CAAC,KAAK,EAAE,CAAC;QAEd,OAAO,MAAM,IAAI,IAAA,uCAAqB,EAAC,EAAE,KAAK,EAAE,EAAE,EAAE,SAAS,EAAE,CAAC,CAAC;IACnE,CAAC;IAEM,gBAAgB,CAAC,KAA0B;QAChD,OAAO,IAAI,CAAC,sBAAsB,CAAC;YACjC,OAAO,EAAE,IAAI;YACb,YAAY,EAAE,GAAG,EAAE,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,EAAE;SACpD,CAAC,CAAC;IACL,CAAC;IAEkB,eAAe,CAAC,QAAuB;QACxD,OAAO,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;IAC/D,CAAC;IAED;;;OAGG;IACI,iBAAiB,CAAC,QAAyB,EAAE,OAAwB,EAAE,SAAiB,EAAE,QAAwE;QACvK,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAY,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM;YACrB,OAAO,SAAS,CAAC;QAEnB,uIAAuI;QACvI,wIAAwI;QACxI,+BAA+B;QAC/B,EAAE;QACF,4HAA4H;QAC5H,mEAAmE;QACnE,MAAM,MAAM,GAAG,IAAI,6BAAa,CAAC,IAAI,CAAC,CAAC;QACvC,IAAI,eAAoC,CAAC;QACzC,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAE9B,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1B,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBACnB,IAAI,KAAK,YAAY,0BAAY,EAAE,CAAC;oBAClC,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC9C,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;oBACrC,6HAA6H;oBAC7H,2IAA2I;oBAC3I,6IAA6I;oBAC7I,8IAA8I;oBAC9I,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACvB,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;wBACnD,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;wBACpD,iBAAiB,GAAG,IAAI,CAAC;oBAC3B,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAA,qBAAM,EAAC,SAAS,KAAK,eAAe,CAAC,CAAC;gBACtC,IAAI,KAAK,YAAY,0BAAY,EAAE,CAAC;oBAClC,IAAA,qBAAM,EAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC3D,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,IAAA,qBAAM,EAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;YAED,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,kBAAkB,CAAC,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YAClF,IAAI,OAAO;gBACT,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;QACxB,CAAC;QAED,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;YACpB,IAAA,qBAAM,EAAC,SAAS,KAAK,eAAe,CAAC,CAAC;YACtC,MAAM,SAAS,GAAG,yBAAS,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;YAC/D,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAAC;YAC3D,IAAI,iBAAiB,EAAE,CAAC,CAAC,qDAAqD;gBAC5E,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;gBAC9C,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAEO,cAAc,CAAC,OAAwB,EAAE,SAAiB,EAAE,QAAwE,EAAE,SAAkB;QAC9J,MAAM,MAAM,GAAG,IAAI,CAAC,sBAAY,CAAC,CAAC,QAAQ,CAAC,OAAO,EAAE,SAAS,EAAE,QAAQ,CAAC,CAAC;QACzE,IAAI,CAAC,KAAK,MAAM,CAAC,MAAM;YACrB,OAAO,SAAS,CAAC;QAEnB,uIAAuI;QACvI,wIAAwI;QACxI,+BAA+B;QAC/B,EAAE;QACF,4HAA4H;QAC5H,mEAAmE;QACnE,IAAI,eAAoC,CAAC;QACzC,IAAI,iBAAiB,GAAG,KAAK,CAAC;QAC9B,MAAM,QAAQ,GAAqB,EAAE,CAAC;QAEtC,KAAK,MAAM,IAAI,IAAI,MAAM,EAAE,CAAC;YAC1B,MAAM,KAAK,GAAG,IAAI,CAAC,MAAM,CAAC;YAC1B,IAAI,CAAC,eAAe,EAAC,CAAC;gBACpB,IAAI,KAAK,YAAY,0BAAY,EAAE,CAAC;oBAClC,eAAe,GAAG,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;oBAC9C,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,eAAe,GAAG,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC;oBACrC,6HAA6H;oBAC7H,2IAA2I;oBAC3I,6IAA6I;oBAC7I,8IAA8I;oBAC9I,IAAI,CAAC,iBAAiB,EAAE,CAAC;wBACvB,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;wBACnD,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,eAAe,CAAC,eAAe,CAAC,CAAC;wBACpD,iBAAiB,GAAG,IAAI,CAAC;oBAC3B,CAAC;gBACH,CAAC;YACH,CAAC;iBAAM,CAAC;gBACN,IAAI,KAAK,YAAY,0BAAY,EAAE,CAAC;oBAClC,IAAA,qBAAM,EAAC,eAAe,CAAC,aAAa,CAAC,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC;oBAC3D,KAAK,CAAC,MAAM,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;gBAChC,CAAC;qBAAM,CAAC;oBACN,IAAA,qBAAM,EAAC,KAAK,CAAC,KAAK,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;gBAC1C,CAAC;YACH,CAAC;YAED,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,sBAAsB,CAAC,IAAI,EAAE,IAAI,CAAC,sBAAsB,CAAC,CAAC;YACnF,IAAI,IAAI,EAAE,CAAC;gBACT,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YACtB,CAAC;QACH,CAAC;QAED,IAAI,SAAS,CAAC;QACd,IAAI,eAAe,EAAE,CAAC;YACpB,SAAS,GAAG,yBAAS,CAAC,iBAAiB,CAAC,eAAe,CAAC,CAAC;YACzD,IAAI,iBAAiB,EAAE,CAAC,CAAC,qDAAqD;gBAC5E,MAAM,CAAC,KAAK,EAAE,GAAG,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;gBAC9C,MAAM,CAAC,KAAK,EAAE,IAAI,CAAC,UAAU,CAAC,eAAe,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,IAAI,KAAuC,CAAC;QAC5C,IAAI,MAAM,CAAC,QAAQ,EAAE,UAAU,EAAE,CAAC;YAChC,KAAK,GAAG;gBACN,YAAY,EAAE,gCAAkB,CAAC,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC;gBACtD,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,IAAI,uBAAO,EAAE;gBACpC,OAAO,EAAE,IAAI,CAAC,QAAQ,CAAC,QAAQ;aAChC,CAAC;QACJ,CAAC;QAED,OAAO,IAAA,uCAAqB,EAAC;YAC3B,KAAK;YACL,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,SAAS,EAAE,CAAC;YAChC,SAAS;SACV,CAAC,CAAC;IACL,CAAC;CACF;AArLD,4CAqLC;KApLkB,mCAAyB","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { Gradient, PackedFeatureTable, QPoint3dList, RenderTexture } from \"@itwin/core-common\";\nimport { CustomGraphicBuilderOptions, GraphicBuilder, ViewportGraphicBuilderOptions } from \"../../render/GraphicBuilder\";\nimport { RenderGraphic } from \"../../render/RenderGraphic\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport { GeometryOptions } from \"../../common/internal/render/Primitives\";\nimport { GeometryAccumulator } from \"../../common/internal/render/GeometryAccumulator\";\nimport { MeshList } from \"../../common/internal/render/MeshPrimitives\";\nimport { GraphicBranch } from \"../../render/GraphicBranch\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { _accumulator, _implementationProhibited } from \"../../common/internal/Symbols\";\nimport { createGraphicTemplate, GraphicTemplate, GraphicTemplateBatch } from \"../../render/GraphicTemplate\";\nimport { RenderGeometry } from \"./RenderGeometry\";\n\n/** @internal */\nexport class PrimitiveBuilder extends GraphicBuilder {\n public readonly [_implementationProhibited] = undefined;\n public readonly system: RenderSystem;\n public primitives: RenderGraphic[] = [];\n private readonly _options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions;\n private readonly _viewIndependentOrigin?: Point3d;\n\n public constructor(system: RenderSystem, options: ViewportGraphicBuilderOptions | CustomGraphicBuilderOptions) {\n super(options);\n this.system = system;\n this._options = options;\n this._viewIndependentOrigin = options.viewIndependentOrigin?.clone();\n }\n\n public override finish(): RenderGraphic {\n const template = this.toTemplate(false);\n const graphic = this.system.createGraphicFromTemplate({ template });\n return graphic ?? this.system.createGraphicList([]);\n }\n\n public override finishTemplate(): GraphicTemplate {\n return this.toTemplate(true);\n }\n\n private toTemplate(noDispose: boolean): GraphicTemplate {\n const accum = this[_accumulator];\n const tolerance = this.computeTolerance(accum);\n const result = this.saveToTemplate(this, tolerance, this.pickable, noDispose);\n accum.clear();\n\n return result ?? createGraphicTemplate({ nodes: [], noDispose });\n }\n\n public computeTolerance(accum: GeometryAccumulator): number {\n return this._computeChordTolerance({\n graphic: this,\n computeRange: () => accum.geometries.computeRange(),\n });\n }\n\n protected override resolveGradient(gradient: Gradient.Symb): RenderTexture | undefined {\n return this.system.getGradientTexture(gradient, this.iModel);\n }\n\n /**\n * Populate a list of Graphic objects from the accumulated Geometry objects.\n * removed ViewContext\n */\n public saveToGraphicList(graphics: RenderGraphic[], options: GeometryOptions, tolerance: number, pickable: { isVolumeClassifier?: boolean, modelId?: string } | undefined): MeshList | undefined {\n const meshes = this[_accumulator].toMeshes(options, tolerance, pickable);\n if (0 === meshes.length)\n return undefined;\n\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\n // it in the transform instead.\n //\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\n // Apply the inverse translation to put them back into model space.\n const branch = new GraphicBranch(true);\n let transformOrigin: Point3d | undefined;\n let meshesRangeOffset = false;\n\n for (const mesh of meshes) {\n const verts = mesh.points;\n if (branch.isEmpty) {\n if (verts instanceof QPoint3dList) {\n transformOrigin = verts.params.origin.clone();\n verts.params.origin.setZero();\n } else {\n transformOrigin = verts.range.center;\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\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.\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.\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.\n if (!meshesRangeOffset) {\n meshes.range?.low.subtractInPlace(transformOrigin);\n meshes.range?.high.subtractInPlace(transformOrigin);\n meshesRangeOffset = true;\n }\n }\n } else {\n assert(undefined !== transformOrigin);\n if (verts instanceof QPoint3dList) {\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\n verts.params.origin.setZero();\n } else {\n assert(verts.range.center.isAlmostZero);\n }\n }\n\n const graphic = this.system.createMeshGraphics(mesh, this._viewIndependentOrigin);\n if (graphic)\n branch.add(graphic);\n }\n\n if (!branch.isEmpty) {\n assert(undefined !== transformOrigin);\n const transform = Transform.createTranslation(transformOrigin);\n graphics.push(this.system.createBranch(branch, transform));\n if (meshesRangeOffset) { // restore the meshes range that we modified earlier.\n meshes.range?.low.addInPlace(transformOrigin);\n meshes.range?.high.addInPlace(transformOrigin);\n }\n }\n\n return meshes;\n }\n\n private saveToTemplate(options: GeometryOptions, tolerance: number, pickable: { isVolumeClassifier?: boolean, modelId?: string } | undefined, noDispose: boolean): GraphicTemplate | undefined {\n const meshes = this[_accumulator].toMeshes(options, tolerance, pickable);\n if (0 === meshes.length)\n return undefined;\n\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\n // it in the transform instead.\n //\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\n // Apply the inverse translation to put them back into model space.\n let transformOrigin: Point3d | undefined;\n let meshesRangeOffset = false;\n const geometry: RenderGeometry[] = [];\n\n for (const mesh of meshes) {\n const verts = mesh.points;\n if (!transformOrigin){\n if (verts instanceof QPoint3dList) {\n transformOrigin = verts.params.origin.clone();\n verts.params.origin.setZero();\n } else {\n transformOrigin = verts.range.center;\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\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.\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.\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.\n if (!meshesRangeOffset) {\n meshes.range?.low.subtractInPlace(transformOrigin);\n meshes.range?.high.subtractInPlace(transformOrigin);\n meshesRangeOffset = true;\n }\n }\n } else {\n if (verts instanceof QPoint3dList) {\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\n verts.params.origin.setZero();\n } else {\n assert(verts.range.center.isAlmostZero);\n }\n }\n\n const geom = this.system.createGeometryFromMesh(mesh, this._viewIndependentOrigin);\n if (geom) {\n geometry.push(geom);\n }\n }\n\n let transform;\n if (transformOrigin) {\n transform = Transform.createTranslation(transformOrigin);\n if (meshesRangeOffset) { // restore the meshes range that we modified earlier.\n meshes.range?.low.addInPlace(transformOrigin);\n meshes.range?.high.addInPlace(transformOrigin);\n }\n }\n\n let batch: GraphicTemplateBatch | undefined;\n if (meshes.features?.anyDefined) {\n batch = {\n featureTable: PackedFeatureTable.pack(meshes.features),\n range: meshes.range ?? new Range3d(),\n options: this._options.pickable,\n };\n }\n\n return createGraphicTemplate({\n batch,\n nodes: [{ geometry, transform }],\n noDispose,\n });\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"PrimitiveBuilder.js","sourceRoot":"","sources":["../../../../src/internal/render/PrimitiveBuilder.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { Point3d, Range3d, Transform } from \"@itwin/core-geometry\";\nimport { Gradient, PackedFeatureTable, QPoint3dList, RenderTexture } from \"@itwin/core-common\";\nimport { CustomGraphicBuilderOptions, GraphicBuilder, ViewportGraphicBuilderOptions } from \"../../render/GraphicBuilder\";\nimport { RenderGraphic } from \"../../render/RenderGraphic\";\nimport { RenderSystem } from \"../../render/RenderSystem\";\nimport { GeometryOptions } from \"../../common/internal/render/Primitives\";\nimport { GeometryAccumulator } from \"../../common/internal/render/GeometryAccumulator\";\nimport { MeshList } from \"../../common/internal/render/MeshPrimitives\";\nimport { GraphicBranch } from \"../../render/GraphicBranch\";\nimport { assert } from \"@itwin/core-bentley\";\nimport { _accumulator, _implementationProhibited } from \"../../common/internal/Symbols\";\nimport { createGraphicTemplate, GraphicTemplate, GraphicTemplateBatch } from \"../../render/GraphicTemplate\";\nimport { RenderGeometry } from \"./RenderGeometry\";\n\n/** @internal */\nexport class PrimitiveBuilder extends GraphicBuilder {\n public readonly [_implementationProhibited] = undefined;\n public readonly system: RenderSystem;\n public primitives: RenderGraphic[] = [];\n private readonly _options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions;\n private readonly _viewIndependentOrigin?: Point3d;\n\n public constructor(system: RenderSystem, options: ViewportGraphicBuilderOptions | CustomGraphicBuilderOptions) {\n super(options);\n this.system = system;\n this._options = options;\n this._viewIndependentOrigin = options.viewIndependentOrigin?.clone();\n }\n\n public override finish(): RenderGraphic {\n const template = this.toTemplate(false);\n const graphic = this.system.createGraphicFromTemplate({ template });\n return graphic ?? this.system.createGraphicList([]);\n }\n\n public override finishTemplate(): GraphicTemplate {\n return this.toTemplate(true);\n }\n\n private toTemplate(noDispose: boolean): GraphicTemplate {\n const accum = this[_accumulator];\n const tolerance = this.computeTolerance(accum);\n const result = this.saveToTemplate(this, tolerance, this.pickable, noDispose);\n accum.clear();\n\n return result ?? createGraphicTemplate({ nodes: [], noDispose });\n }\n\n public computeTolerance(accum: GeometryAccumulator): number {\n return this._computeChordTolerance({\n graphic: this,\n computeRange: () => accum.geometries.computeRange(),\n });\n }\n\n protected override resolveGradient(gradient: Gradient.Symb): RenderTexture | undefined {\n return this.system.getGradientTexture(gradient, this.iModel);\n }\n\n /**\n * Populate a list of Graphic objects from the accumulated Geometry objects.\n * removed ViewContext\n */\n public saveToGraphicList(graphics: RenderGraphic[], options: GeometryOptions, tolerance: number, pickable: { isVolumeClassifier?: boolean, modelId?: string } | undefined): MeshList | undefined {\n const meshes = this[_accumulator].toMeshes(options, tolerance, pickable);\n if (0 === meshes.length)\n return undefined;\n\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\n // it in the transform instead.\n //\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\n // Apply the inverse translation to put them back into model space.\n const branch = new GraphicBranch(true);\n let transformOrigin: Point3d | undefined;\n let meshesRangeOffset = false;\n\n for (const mesh of meshes) {\n const verts = mesh.points;\n if (branch.isEmpty) {\n if (verts instanceof QPoint3dList) {\n transformOrigin = verts.params.origin.clone();\n verts.params.origin.setZero();\n } else {\n transformOrigin = verts.range.center;\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\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.\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.\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.\n if (!meshesRangeOffset) {\n meshes.range?.low.subtractInPlace(transformOrigin);\n meshes.range?.high.subtractInPlace(transformOrigin);\n meshesRangeOffset = true;\n }\n }\n } else {\n assert(undefined !== transformOrigin);\n if (verts instanceof QPoint3dList) {\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\n verts.params.origin.setZero();\n } else {\n assert(verts.range.center.isAlmostZero);\n }\n }\n\n const graphic = this.system.createMeshGraphics(mesh, this._viewIndependentOrigin);\n if (graphic)\n branch.add(graphic);\n }\n\n if (!branch.isEmpty) {\n assert(undefined !== transformOrigin);\n const transform = Transform.createTranslation(transformOrigin);\n graphics.push(this.system.createBranch(branch, transform));\n if (meshesRangeOffset) { // restore the meshes range that we modified earlier.\n meshes.range?.low.addInPlace(transformOrigin);\n meshes.range?.high.addInPlace(transformOrigin);\n }\n }\n\n return meshes;\n }\n\n private saveToTemplate(options: GeometryOptions, tolerance: number, pickable: { isVolumeClassifier?: boolean, modelId?: string } | undefined, noDispose: boolean): GraphicTemplate | undefined {\n const meshes = this[_accumulator].toMeshes(options, tolerance, pickable);\n if (0 === meshes.length)\n return undefined;\n\n // If the meshes contain quantized positions, they are all quantized to the same range. If that range is small relative to the distance\n // from the origin, quantization errors can produce display artifacts. Remove the translation from the quantization parameters and apply\n // it in the transform instead.\n //\n // If the positions are not quantized, they have already been transformed to be relative to the center of the meshes' range.\n // Apply the inverse translation to put them back into model space.\n let transformOrigin: Point3d | undefined;\n let meshesRangeOffset = false;\n const geometry: RenderGeometry[] = [];\n\n for (const mesh of meshes) {\n const verts = mesh.points;\n if (!transformOrigin){\n if (verts instanceof QPoint3dList) {\n transformOrigin = verts.params.origin.clone();\n verts.params.origin.setZero();\n } else {\n transformOrigin = verts.range.center;\n // In this case we need to modify the qOrigin of the graphic that will get created later since we have translated the origin.\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.\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.\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.\n if (!meshesRangeOffset) {\n meshes.range?.low.subtractInPlace(transformOrigin);\n meshes.range?.high.subtractInPlace(transformOrigin);\n meshesRangeOffset = true;\n }\n }\n } else {\n if (verts instanceof QPoint3dList) {\n assert(transformOrigin.isAlmostEqual(verts.params.origin));\n verts.params.origin.setZero();\n } else {\n assert(verts.range.center.isAlmostZero);\n }\n }\n\n const geom = this.system.createGeometryFromMesh(mesh, this._viewIndependentOrigin);\n if (geom) {\n geometry.push(geom);\n }\n }\n\n let transform;\n if (transformOrigin) {\n transform = Transform.createTranslation(transformOrigin);\n if (meshesRangeOffset) { // restore the meshes range that we modified earlier.\n meshes.range?.low.addInPlace(transformOrigin);\n meshes.range?.high.addInPlace(transformOrigin);\n }\n }\n\n let batch: GraphicTemplateBatch | undefined;\n if (meshes.features?.anyDefined) {\n batch = {\n featureTable: PackedFeatureTable.pack(meshes.features),\n range: meshes.range ?? new Range3d(),\n options: this._options.pickable,\n };\n }\n\n return createGraphicTemplate({\n batch,\n nodes: [{ geometry, transform }],\n noDispose,\n });\n }\n}\n"]}
|
|
@@ -15,6 +15,7 @@ const InstancedGraphicParams_1 = require("../../common/render/InstancedGraphicPa
|
|
|
15
15
|
const InstancedGraphicPropsBuilder_1 = require("../../common/internal/render/InstancedGraphicPropsBuilder");
|
|
16
16
|
const core_common_1 = require("@itwin/core-common");
|
|
17
17
|
class Builder {
|
|
18
|
+
static { _a = Symbols_1._implementationProhibited; }
|
|
18
19
|
constructor(modelId) {
|
|
19
20
|
this[_a] = undefined;
|
|
20
21
|
this._instances = new InstancedGraphicPropsBuilder_1.InstancedGraphicPropsBuilder();
|
|
@@ -52,7 +53,6 @@ class Builder {
|
|
|
52
53
|
return result;
|
|
53
54
|
}
|
|
54
55
|
}
|
|
55
|
-
_a = Symbols_1._implementationProhibited;
|
|
56
56
|
function createRenderInstancesParamsBuilder(args) {
|
|
57
57
|
return new Builder(args.modelId);
|
|
58
58
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderInstancesParamsImpl.js","sourceRoot":"","sources":["../../../../src/internal/render/RenderInstancesParamsImpl.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAyEH,gFAEC;AAED,8FASC;AAnFD,2DAA0E;AAC1E,uFAAmF;AAEnF,4GAAyG;AACzG,oDAAsE;AAkBtE,MAAM,OAAO;
|
|
1
|
+
{"version":3,"file":"RenderInstancesParamsImpl.js","sourceRoot":"","sources":["../../../../src/internal/render/RenderInstancesParamsImpl.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAyEH,gFAEC;AAED,8FASC;AAnFD,2DAA0E;AAC1E,uFAAmF;AAEnF,4GAAyG;AACzG,oDAAsE;AAkBtE,MAAM,OAAO;kBACM,mCAAyB;IAK1C,YAAmB,OAAoB;QALvB,QAA2B,GAAG,SAAS,CAAC;QACvC,eAAU,GAAG,IAAI,2DAA4B,EAAE,CAAC;QAEzD,sBAAiB,GAAG,KAAK,CAAC;QAGhC,IAAI,CAAC,QAAQ,GAAG,OAAO,CAAC;IAC1B,CAAC;IAEM,GAAG,CAAC,QAAkB;QAC3B,IAAI,CAAC,UAAU,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAE9B,IAAI,SAAS,KAAK,QAAQ,CAAC,OAAO,EAAE,CAAC;YACnC,IAAI,CAAC,iBAAiB,GAAG,IAAI,CAAC;QAChC,CAAC;IACH,CAAC;IAEM,MAAM;QACX,MAAM,YAAY,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC;QAC5C,IAAI,YAAY,KAAK,CAAC,EAAE,CAAC;YACvB,MAAM,IAAI,KAAK,CAAC,sBAAsB,CAAC,CAAC;QAC1C,CAAC;QAED,IAAI,YAAY,CAAC;QACjB,IAAI,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAC3B,YAAY,GAAG,IAAI,0BAAY,CAAC,YAAY,EAAE,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/D,CAAC;QAED,MAAM,SAAS,GAAG,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC;QACvD,MAAM,MAAM,GAA8B;YACxC,CAAC,mCAAyB,CAAC,EAAE,uBAAuB;YACpD,SAAS;SACV,CAAC;QAEF,IAAI,YAAY,EAAE,CAAC;YACjB,MAAM,WAAW,GAAG,gCAAkB,CAAC,IAAI,CAAC,YAAY,CAAC,CAAC;YAC1D,MAAM,CAAC,QAAQ,GAAG;gBAChB,IAAI,EAAE,WAAW,CAAC,IAAI;gBACtB,OAAO,EAAE,WAAW,CAAC,YAAY;gBACjC,KAAK,EAAE,WAAW,CAAC,WAAW;aAC/B,CAAC;QACJ,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;CACF;AAED,SAAgB,kCAAkC,CAAC,IAA4C;IAC7F,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;AACnC,CAAC;AAED,SAAgB,yCAAyC,CAAC,KAAwB,EAAE,QAA+B;IACjH,MAAM,MAAM,GAAG,QAAqC,CAAC;IACrD,IAAI,MAAM,CAAC,SAAS,EAAE,CAAC;QACrB,8CAAqB,CAAC,oBAAoB,CAAC,KAAK,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;IACtE,CAAC;IAED,IAAI,MAAM,CAAC,QAAQ,EAAE,CAAC;QACpB,KAAK,CAAC,GAAG,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;AACH,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module Rendering\n */\n\nimport { Id64String } from \"@itwin/core-bentley\";\nimport { _implementationProhibited } from \"../../common/internal/Symbols\";\nimport { InstancedGraphicProps } from \"../../common/render/InstancedGraphicParams\";\nimport { CreateRenderInstancesParamsBuilderArgs, Instance, RenderInstancesParams, RenderInstancesParamsBuilder } from \"../../common/render/RenderInstancesParams\";\nimport { InstancedGraphicPropsBuilder } from \"../../common/internal/render/InstancedGraphicPropsBuilder\";\nimport { FeatureTable, PackedFeatureTable } from \"@itwin/core-common\";\n\n/** Intermediate representation of `RenderInstances[_batch]`. */\nexport interface InstancedFeaturesParams {\n modelId: Id64String;\n data: Uint32Array;\n count: number;\n}\n\n/** This exists so that [[RenderInstancesParams]] can be an opaque type that can be copied between Workers.\n * (`Symbol`s are dropped during structured cloning).\n */\nexport interface RenderInstancesParamsImpl extends RenderInstancesParams {\n [_implementationProhibited]: \"renderInstancesParams\";\n instances: InstancedGraphicProps;\n features?: InstancedFeaturesParams;\n}\n\nclass Builder implements RenderInstancesParamsBuilder {\n public readonly [_implementationProhibited] = undefined;\n private readonly _instances = new InstancedGraphicPropsBuilder();\n private readonly _modelId?: Id64String;\n private _containsFeatures = false;\n\n public constructor(modelId?: Id64String) {\n this._modelId = modelId;\n }\n\n public add(instance: Instance): void {\n this._instances.add(instance);\n\n if (undefined !== instance.feature) {\n this._containsFeatures = true;\n }\n }\n\n public finish(): RenderInstancesParams {\n const numInstances = this._instances.length;\n if (numInstances === 0) {\n throw new Error(\"No instances defined\");\n }\n\n let featureTable;\n if (this._containsFeatures) {\n featureTable = new FeatureTable(numInstances, this._modelId);\n }\n\n const instances = this._instances.finish(featureTable);\n const result: RenderInstancesParamsImpl = {\n [_implementationProhibited]: \"renderInstancesParams\",\n instances,\n };\n\n if (featureTable) {\n const packedTable = PackedFeatureTable.pack(featureTable);\n result.features = {\n data: packedTable.data,\n modelId: packedTable.batchModelId,\n count: packedTable.numFeatures,\n };\n }\n\n return result;\n }\n}\n\nexport function createRenderInstancesParamsBuilder(args: CreateRenderInstancesParamsBuilderArgs): RenderInstancesParamsBuilder {\n return new Builder(args.modelId);\n}\n\nexport function collectRenderInstancesParamsTransferables(xfers: Set<Transferable>, inParams: RenderInstancesParams): void {\n const params = inParams as RenderInstancesParamsImpl;\n if (params.instances) {\n InstancedGraphicProps.collectTransferables(xfers, params.instances);\n }\n\n if (params.features) {\n xfers.add(params.features.data.buffer);\n }\n}\n"]}
|
|
@@ -35,6 +35,7 @@ var MockRender;
|
|
|
35
35
|
var _a, _b;
|
|
36
36
|
/** @internal */
|
|
37
37
|
class Target extends RenderTarget_1.RenderTarget {
|
|
38
|
+
static { _a = Symbols_1._implementationProhibited; }
|
|
38
39
|
constructor(_system) {
|
|
39
40
|
super();
|
|
40
41
|
this._system = _system;
|
|
@@ -54,7 +55,6 @@ var MockRender;
|
|
|
54
55
|
get screenSpaceEffects() { return []; }
|
|
55
56
|
set screenSpaceEffects(_effects) { }
|
|
56
57
|
}
|
|
57
|
-
_a = Symbols_1._implementationProhibited;
|
|
58
58
|
MockRender.Target = Target;
|
|
59
59
|
/** @internal */
|
|
60
60
|
class OnScreenTarget extends Target {
|
|
@@ -142,10 +142,10 @@ var MockRender;
|
|
|
142
142
|
constructor() {
|
|
143
143
|
this[_b] = "renderAreaPattern";
|
|
144
144
|
}
|
|
145
|
+
static { _b = Symbols_1._implementationProhibited; }
|
|
145
146
|
dispose() { }
|
|
146
147
|
collectStatistics() { }
|
|
147
148
|
}
|
|
148
|
-
_b = Symbols_1._implementationProhibited;
|
|
149
149
|
MockRender.AreaPattern = AreaPattern;
|
|
150
150
|
class System extends RenderSystem_1.RenderSystem {
|
|
151
151
|
get isValid() { return true; }
|
|
@@ -187,6 +187,7 @@ var MockRender;
|
|
|
187
187
|
MockRender.System = System;
|
|
188
188
|
/** An implementation of IModelApp which uses a MockRender.System by default. */
|
|
189
189
|
class App {
|
|
190
|
+
static { this.systemFactory = () => App.createDefaultRenderSystem(); }
|
|
190
191
|
static async startup(opts) {
|
|
191
192
|
opts = opts ? opts : {};
|
|
192
193
|
opts.renderSys = this.systemFactory();
|
|
@@ -199,7 +200,6 @@ var MockRender;
|
|
|
199
200
|
}
|
|
200
201
|
static createDefaultRenderSystem() { return new System(); }
|
|
201
202
|
}
|
|
202
|
-
App.systemFactory = () => App.createDefaultRenderSystem();
|
|
203
203
|
MockRender.App = App;
|
|
204
204
|
})(MockRender || (exports.MockRender = MockRender = {}));
|
|
205
205
|
//# sourceMappingURL=MockRender.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"MockRender.js","sourceRoot":"","sources":["../../../src/render/MockRender.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Utils\n */\n\nimport { dispose } from \"@itwin/core-bentley\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport { ElementAlignedBox3d, EmptyLocalization, RenderFeatureTable } from \"@itwin/core-common\";\nimport { IModelApp, IModelAppOptions } from \"../IModelApp\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { MeshParams } from \"../common/internal/render/MeshParams\";\nimport { PointStringParams } from \"../common/internal/render/PointStringParams\";\nimport { PolylineParams } from \"../common/internal/render/PolylineParams\";\nimport { ViewRect } from \"../common/ViewRect\";\nimport { Decorations } from \"./Decorations\";\nimport { GraphicBranch, GraphicBranchOptions } from \"./GraphicBranch\";\nimport { CustomGraphicBuilderOptions, GraphicBuilder, ViewportGraphicBuilderOptions } from \"./GraphicBuilder\";\nimport { Pixel } from \"./Pixel\";\nimport { PrimitiveBuilder } from \"../internal/render/PrimitiveBuilder\";\nimport { PointCloudArgs } from \"../common/internal/render/PointCloudPrimitive\";\nimport { GraphicList, RenderGraphic } from \"./RenderGraphic\";\nimport { RenderMemory } from \"./RenderMemory\";\nimport { RenderPlan } from \"./RenderPlan\";\nimport { RenderAreaPattern, RenderSystem } from \"./RenderSystem\";\nimport { RenderTarget } from \"./RenderTarget\";\nimport { Scene } from \"./Scene\";\nimport { _implementationProhibited } from \"../common/internal/Symbols\";\nimport { RenderGeometry } from \"../internal/render/RenderGeometry\";\n\n/** Contains extensible mock implementations of the various components of a RenderSystem, intended for use in tests.\n * Use these for tests instead of the default RenderSystem wherever possible because:\n * (1) Electron has a bug on Windows in which it fails to obtain a WebGLRenderingContext when running inside a VM (e.g., during CI job); and\n * (2) To decouple the logic which uses aspects of the RenderSystem from the full implementation.\n * Any and all of these types can be extended for the purposes of specific tests.\n * To use this:\n * (1) If overriding anything in the implementation supplied herein, pass a SystemFactory function to MockRender.App.systemFactory.\n * (2) Call MockRender.App.startup() instead of IModelApp.startup() before tests begin.\n * (3) Likewise call MockRender.App.shutdown() when finished. This resets the SystemFactory to its default.\n * @note The APIs within this namespace are intended *strictly* for use with unit tests.\n * @internal\n */\nexport namespace MockRender {\n /** @internal */\n export abstract class Target extends RenderTarget {\n protected override readonly [_implementationProhibited] = undefined;\n\n protected constructor(private readonly _system: RenderSystem) { super(); }\n\n public get renderSystem(): RenderSystem { return this._system; }\n public get wantInvertBlackBackground() { return false; }\n public get analysisFraction() { return 0; }\n public set analysisFraction(_fraction: number) { }\n public changeScene(_scene: Scene) { }\n public changeDynamics(_dynamics?: GraphicList) { }\n public changeDecorations(_decs: Decorations) { }\n public changeRenderPlan(_plan: RenderPlan) { }\n public drawFrame(_sceneTime?: number) { }\n public updateViewRect() { return false; }\n public readPixels(_rect: ViewRect, _selector: Pixel.Selector, receiver: Pixel.Receiver, _excludeNonLocatable: boolean) { receiver(undefined); }\n public get screenSpaceEffects(): Iterable<string> { return []; }\n public set screenSpaceEffects(_effects: Iterable<string>) { }\n }\n\n /** @internal */\n export class OnScreenTarget extends Target {\n public constructor(system: RenderSystem, private readonly _canvas: HTMLCanvasElement) { super(system); }\n\n public get viewRect() { return new ViewRect(0, 0, this._canvas.clientWidth, this._canvas.clientHeight); }\n public setViewRect(_rect: ViewRect, _temp: boolean) { }\n }\n\n /** @internal */\n export class OffScreenTarget extends Target {\n public constructor(system: RenderSystem, private readonly _viewRect: ViewRect) { super(system); }\n\n public get viewRect() { return this._viewRect; }\n public setViewRect(rect: ViewRect, _temp: boolean) { this._viewRect.setFrom(rect); }\n }\n\n /** @internal */\n export class Builder extends PrimitiveBuilder {\n public constructor(system: System, options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions) {\n super(system, options);\n }\n }\n\n export class Graphic extends RenderGraphic {\n public constructor() { super(); }\n\n public dispose() { }\n public collectStatistics(_stats: RenderMemory.Statistics): void { }\n public unionRange() { }\n }\n\n export class List extends Graphic {\n public constructor(public readonly graphics: RenderGraphic[]) { super(); }\n\n public override dispose() {\n for (const graphic of this.graphics)\n dispose(graphic);\n\n this.graphics.length = 0;\n }\n }\n\n export class Branch extends Graphic {\n public constructor(public readonly branch: GraphicBranch, public readonly transform: Transform, public readonly options?: GraphicBranchOptions) { super(); }\n\n public override dispose() { this.branch.dispose(); }\n }\n\n export class Batch extends Graphic {\n public constructor(public readonly graphic: RenderGraphic, public readonly featureTable: RenderFeatureTable, public readonly range: ElementAlignedBox3d) { super(); }\n\n public override dispose() {\n dispose(this.graphic);\n }\n }\n\n /** @internal */\n export class Geometry implements RenderGeometry {\n public noDispose = false;\n public readonly isInstanceable = true;\n public isDisposed = false;\n public constructor(public readonly renderGeometryType: \"mesh\" | \"polyline\" | \"point-string\") {\n\n }\n public dispose(): void { this.isDisposed = true; }\n public collectStatistics(): void { }\n public computeRange() { return new Range3d(); }\n }\n\n /** @internal */\n export class AreaPattern implements RenderAreaPattern {\n public readonly [_implementationProhibited] = \"renderAreaPattern\";\n public dispose(): void { }\n public collectStatistics(): void { }\n }\n\n export class System extends RenderSystem {\n public get isValid() { return true; }\n public dispose(): void { }\n public override get maxTextureSize() { return 4096; }\n\n public constructor() { super(); }\n\n /** @internal */\n public override doIdleWork(): boolean { return false; }\n\n /** @internal */\n public override createTarget(canvas: HTMLCanvasElement): OnScreenTarget { return new OnScreenTarget(this, canvas); }\n /** @internal */\n public override createOffscreenTarget(rect: ViewRect): RenderTarget { return new OffScreenTarget(this, rect); }\n\n public override createGraphic(options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions): GraphicBuilder {\n return new Builder(this, options);\n }\n\n public override createGraphicList(primitives: RenderGraphic[]) { return new List(primitives); }\n public override createGraphicBranch(branch: GraphicBranch, transform: Transform, options?: GraphicBranchOptions) { return new Branch(branch, transform, options); }\n public override createBatch(graphic: RenderGraphic, features: RenderFeatureTable, range: ElementAlignedBox3d) { return new Batch(graphic, features, range); }\n\n /** @internal */\n public override createMesh(_params: MeshParams) { return new Graphic(); }\n /** @internal */\n public override createPolyline(_params: PolylineParams) { return new Graphic(); }\n /** @internal */\n public override createPointString(_params: PointStringParams) { return new Graphic(); }\n /** @internal */\n public override createPointCloud(_args: PointCloudArgs, _imodel: IModelConnection) { return new Graphic(); }\n public override createRenderGraphic() { return new Graphic(); }\n\n /** @internal */\n public override createMeshGeometry() { return new Geometry(\"mesh\"); }\n /** @internal */\n public override createPolylineGeometry() { return new Geometry(\"polyline\"); }\n /** @internal */\n public override createPointStringGeometry() { return new Geometry(\"point-string\"); }\n /** @internal */\n public override createAreaPattern() { return new AreaPattern(); }\n /** @internal */\n public override createGraphicFromTemplate() { return new Graphic(); }\n }\n\n export type SystemFactory = () => RenderSystem;\n\n /** An implementation of IModelApp which uses a MockRender.System by default. */\n export class App {\n public static systemFactory: SystemFactory = () => App.createDefaultRenderSystem();\n\n public static async startup(opts?: IModelAppOptions): Promise<void> {\n opts = opts ? opts : {};\n opts.renderSys = this.systemFactory();\n opts.localization = opts.localization ?? new EmptyLocalization();\n await IModelApp.startup(opts);\n }\n\n public static async shutdown(): Promise<void> {\n this.systemFactory = () => App.createDefaultRenderSystem();\n await IModelApp.shutdown();\n }\n\n protected static createDefaultRenderSystem() { return new System(); }\n }\n}\n"]}
|
|
1
|
+
{"version":3,"file":"MockRender.js","sourceRoot":"","sources":["../../../src/render/MockRender.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n\n/** @packageDocumentation\n * @module Utils\n */\n\nimport { dispose } from \"@itwin/core-bentley\";\nimport { Range3d, Transform } from \"@itwin/core-geometry\";\nimport { ElementAlignedBox3d, EmptyLocalization, RenderFeatureTable } from \"@itwin/core-common\";\nimport { IModelApp, IModelAppOptions } from \"../IModelApp\";\nimport { IModelConnection } from \"../IModelConnection\";\nimport { MeshParams } from \"../common/internal/render/MeshParams\";\nimport { PointStringParams } from \"../common/internal/render/PointStringParams\";\nimport { PolylineParams } from \"../common/internal/render/PolylineParams\";\nimport { ViewRect } from \"../common/ViewRect\";\nimport { Decorations } from \"./Decorations\";\nimport { GraphicBranch, GraphicBranchOptions } from \"./GraphicBranch\";\nimport { CustomGraphicBuilderOptions, GraphicBuilder, ViewportGraphicBuilderOptions } from \"./GraphicBuilder\";\nimport { Pixel } from \"./Pixel\";\nimport { PrimitiveBuilder } from \"../internal/render/PrimitiveBuilder\";\nimport { PointCloudArgs } from \"../common/internal/render/PointCloudPrimitive\";\nimport { GraphicList, RenderGraphic } from \"./RenderGraphic\";\nimport { RenderMemory } from \"./RenderMemory\";\nimport { RenderPlan } from \"./RenderPlan\";\nimport { RenderAreaPattern, RenderSystem } from \"./RenderSystem\";\nimport { RenderTarget } from \"./RenderTarget\";\nimport { Scene } from \"./Scene\";\nimport { _implementationProhibited } from \"../common/internal/Symbols\";\nimport { RenderGeometry } from \"../internal/render/RenderGeometry\";\n\n/** Contains extensible mock implementations of the various components of a RenderSystem, intended for use in tests.\n * Use these for tests instead of the default RenderSystem wherever possible because:\n * (1) Electron has a bug on Windows in which it fails to obtain a WebGLRenderingContext when running inside a VM (e.g., during CI job); and\n * (2) To decouple the logic which uses aspects of the RenderSystem from the full implementation.\n * Any and all of these types can be extended for the purposes of specific tests.\n * To use this:\n * (1) If overriding anything in the implementation supplied herein, pass a SystemFactory function to MockRender.App.systemFactory.\n * (2) Call MockRender.App.startup() instead of IModelApp.startup() before tests begin.\n * (3) Likewise call MockRender.App.shutdown() when finished. This resets the SystemFactory to its default.\n * @note The APIs within this namespace are intended *strictly* for use with unit tests.\n * @internal\n */\nexport namespace MockRender {\n /** @internal */\n export abstract class Target extends RenderTarget {\n protected override readonly [_implementationProhibited] = undefined;\n\n protected constructor(private readonly _system: RenderSystem) { super(); }\n\n public get renderSystem(): RenderSystem { return this._system; }\n public get wantInvertBlackBackground() { return false; }\n public get analysisFraction() { return 0; }\n public set analysisFraction(_fraction: number) { }\n public changeScene(_scene: Scene) { }\n public changeDynamics(_dynamics?: GraphicList) { }\n public changeDecorations(_decs: Decorations) { }\n public changeRenderPlan(_plan: RenderPlan) { }\n public drawFrame(_sceneTime?: number) { }\n public updateViewRect() { return false; }\n public readPixels(_rect: ViewRect, _selector: Pixel.Selector, receiver: Pixel.Receiver, _excludeNonLocatable: boolean) { receiver(undefined); }\n public get screenSpaceEffects(): Iterable<string> { return []; }\n public set screenSpaceEffects(_effects: Iterable<string>) { }\n }\n\n /** @internal */\n export class OnScreenTarget extends Target {\n public constructor(system: RenderSystem, private readonly _canvas: HTMLCanvasElement) { super(system); }\n\n public get viewRect() { return new ViewRect(0, 0, this._canvas.clientWidth, this._canvas.clientHeight); }\n public setViewRect(_rect: ViewRect, _temp: boolean) { }\n }\n\n /** @internal */\n export class OffScreenTarget extends Target {\n public constructor(system: RenderSystem, private readonly _viewRect: ViewRect) { super(system); }\n\n public get viewRect() { return this._viewRect; }\n public setViewRect(rect: ViewRect, _temp: boolean) { this._viewRect.setFrom(rect); }\n }\n\n /** @internal */\n export class Builder extends PrimitiveBuilder {\n public constructor(system: System, options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions) {\n super(system, options);\n }\n }\n\n export class Graphic extends RenderGraphic {\n public constructor() { super(); }\n\n public dispose() { }\n public collectStatistics(_stats: RenderMemory.Statistics): void { }\n public unionRange() { }\n }\n\n export class List extends Graphic {\n public constructor(public readonly graphics: RenderGraphic[]) { super(); }\n\n public override dispose() {\n for (const graphic of this.graphics)\n dispose(graphic);\n\n this.graphics.length = 0;\n }\n }\n\n export class Branch extends Graphic {\n public constructor(public readonly branch: GraphicBranch, public readonly transform: Transform, public readonly options?: GraphicBranchOptions) { super(); }\n\n public override dispose() { this.branch.dispose(); }\n }\n\n export class Batch extends Graphic {\n public constructor(public readonly graphic: RenderGraphic, public readonly featureTable: RenderFeatureTable, public readonly range: ElementAlignedBox3d) { super(); }\n\n public override dispose() {\n dispose(this.graphic);\n }\n }\n\n /** @internal */\n export class Geometry implements RenderGeometry {\n public noDispose = false;\n public readonly isInstanceable = true;\n public isDisposed = false;\n public constructor(public readonly renderGeometryType: \"mesh\" | \"polyline\" | \"point-string\") {\n\n }\n public dispose(): void { this.isDisposed = true; }\n public collectStatistics(): void { }\n public computeRange() { return new Range3d(); }\n }\n\n /** @internal */\n export class AreaPattern implements RenderAreaPattern {\n public readonly [_implementationProhibited] = \"renderAreaPattern\";\n public dispose(): void { }\n public collectStatistics(): void { }\n }\n\n export class System extends RenderSystem {\n public get isValid() { return true; }\n public dispose(): void { }\n public override get maxTextureSize() { return 4096; }\n\n public constructor() { super(); }\n\n /** @internal */\n public override doIdleWork(): boolean { return false; }\n\n /** @internal */\n public override createTarget(canvas: HTMLCanvasElement): OnScreenTarget { return new OnScreenTarget(this, canvas); }\n /** @internal */\n public override createOffscreenTarget(rect: ViewRect): RenderTarget { return new OffScreenTarget(this, rect); }\n\n public override createGraphic(options: CustomGraphicBuilderOptions | ViewportGraphicBuilderOptions): GraphicBuilder {\n return new Builder(this, options);\n }\n\n public override createGraphicList(primitives: RenderGraphic[]) { return new List(primitives); }\n public override createGraphicBranch(branch: GraphicBranch, transform: Transform, options?: GraphicBranchOptions) { return new Branch(branch, transform, options); }\n public override createBatch(graphic: RenderGraphic, features: RenderFeatureTable, range: ElementAlignedBox3d) { return new Batch(graphic, features, range); }\n\n /** @internal */\n public override createMesh(_params: MeshParams) { return new Graphic(); }\n /** @internal */\n public override createPolyline(_params: PolylineParams) { return new Graphic(); }\n /** @internal */\n public override createPointString(_params: PointStringParams) { return new Graphic(); }\n /** @internal */\n public override createPointCloud(_args: PointCloudArgs, _imodel: IModelConnection) { return new Graphic(); }\n public override createRenderGraphic() { return new Graphic(); }\n\n /** @internal */\n public override createMeshGeometry() { return new Geometry(\"mesh\"); }\n /** @internal */\n public override createPolylineGeometry() { return new Geometry(\"polyline\"); }\n /** @internal */\n public override createPointStringGeometry() { return new Geometry(\"point-string\"); }\n /** @internal */\n public override createAreaPattern() { return new AreaPattern(); }\n /** @internal */\n public override createGraphicFromTemplate() { return new Graphic(); }\n }\n\n export type SystemFactory = () => RenderSystem;\n\n /** An implementation of IModelApp which uses a MockRender.System by default. */\n export class App {\n public static systemFactory: SystemFactory = () => App.createDefaultRenderSystem();\n\n public static async startup(opts?: IModelAppOptions): Promise<void> {\n opts = opts ? opts : {};\n opts.renderSys = this.systemFactory();\n opts.localization = opts.localization ?? new EmptyLocalization();\n await IModelApp.startup(opts);\n }\n\n public static async shutdown(): Promise<void> {\n this.systemFactory = () => App.createDefaultRenderSystem();\n await IModelApp.shutdown();\n }\n\n protected static createDefaultRenderSystem() { return new System(); }\n }\n}\n"]}
|
|
@@ -24,6 +24,7 @@ const Texture_1 = require("./Texture");
|
|
|
24
24
|
const TextureDrape_1 = require("./TextureDrape");
|
|
25
25
|
/** @internal */
|
|
26
26
|
class BackgroundMapDrape extends TextureDrape_1.TextureDrape {
|
|
27
|
+
static { this._postProjectionMatrix = core_geometry_1.Matrix4d.createRowValues(0, 1, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 1); }
|
|
27
28
|
constructor(drapedTree, mapTree) {
|
|
28
29
|
super();
|
|
29
30
|
this._graphics = [];
|
|
@@ -140,5 +141,4 @@ class BackgroundMapDrape extends TextureDrape_1.TextureDrape {
|
|
|
140
141
|
}
|
|
141
142
|
}
|
|
142
143
|
exports.BackgroundMapDrape = BackgroundMapDrape;
|
|
143
|
-
BackgroundMapDrape._postProjectionMatrix = core_geometry_1.Matrix4d.createRowValues(0, 1, 0, 0, 0, 0, -1, 0, 1, 0, 0, 0, 0, 0, 0, 1);
|
|
144
144
|
//# sourceMappingURL=BackgroundMapDrape.js.map
|