@itwin/core-common 4.4.0-dev.8 → 4.5.0-dev.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (48) hide show
  1. package/CHANGELOG.md +6 -1
  2. package/lib/cjs/FeatureTable.d.ts +7 -0
  3. package/lib/cjs/FeatureTable.d.ts.map +1 -1
  4. package/lib/cjs/FeatureTable.js +9 -0
  5. package/lib/cjs/FeatureTable.js.map +1 -1
  6. package/lib/cjs/MaterialProps.d.ts +18 -0
  7. package/lib/cjs/MaterialProps.d.ts.map +1 -1
  8. package/lib/cjs/MaterialProps.js.map +1 -1
  9. package/lib/cjs/PlanProjectionSettings.d.ts +2 -0
  10. package/lib/cjs/PlanProjectionSettings.d.ts.map +1 -1
  11. package/lib/cjs/PlanProjectionSettings.js +6 -0
  12. package/lib/cjs/PlanProjectionSettings.js.map +1 -1
  13. package/lib/cjs/geometry/ElementGeometry.d.ts +5 -3
  14. package/lib/cjs/geometry/ElementGeometry.d.ts.map +1 -1
  15. package/lib/cjs/geometry/ElementGeometry.js +37 -1
  16. package/lib/cjs/geometry/ElementGeometry.js.map +1 -1
  17. package/lib/cjs/geometry/TextString.d.ts +10 -1
  18. package/lib/cjs/geometry/TextString.d.ts.map +1 -1
  19. package/lib/cjs/geometry/TextString.js.map +1 -1
  20. package/lib/cjs/rpc/core/RpcInvocation.js +1 -1
  21. package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
  22. package/lib/cjs/tile/IModelTileIO.d.ts +2 -2
  23. package/lib/cjs/tile/IModelTileIO.js +2 -2
  24. package/lib/cjs/tile/IModelTileIO.js.map +1 -1
  25. package/lib/esm/FeatureTable.d.ts +7 -0
  26. package/lib/esm/FeatureTable.d.ts.map +1 -1
  27. package/lib/esm/FeatureTable.js +9 -0
  28. package/lib/esm/FeatureTable.js.map +1 -1
  29. package/lib/esm/MaterialProps.d.ts +18 -0
  30. package/lib/esm/MaterialProps.d.ts.map +1 -1
  31. package/lib/esm/MaterialProps.js.map +1 -1
  32. package/lib/esm/PlanProjectionSettings.d.ts +2 -0
  33. package/lib/esm/PlanProjectionSettings.d.ts.map +1 -1
  34. package/lib/esm/PlanProjectionSettings.js +6 -0
  35. package/lib/esm/PlanProjectionSettings.js.map +1 -1
  36. package/lib/esm/geometry/ElementGeometry.d.ts +5 -3
  37. package/lib/esm/geometry/ElementGeometry.d.ts.map +1 -1
  38. package/lib/esm/geometry/ElementGeometry.js +38 -2
  39. package/lib/esm/geometry/ElementGeometry.js.map +1 -1
  40. package/lib/esm/geometry/TextString.d.ts +10 -1
  41. package/lib/esm/geometry/TextString.d.ts.map +1 -1
  42. package/lib/esm/geometry/TextString.js.map +1 -1
  43. package/lib/esm/rpc/core/RpcInvocation.js +1 -1
  44. package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
  45. package/lib/esm/tile/IModelTileIO.d.ts +2 -2
  46. package/lib/esm/tile/IModelTileIO.js +2 -2
  47. package/lib/esm/tile/IModelTileIO.js.map +1 -1
  48. package/package.json +8 -7
package/CHANGELOG.md CHANGED
@@ -1,6 +1,11 @@
1
1
  # Change Log - @itwin/core-common
2
2
 
3
- This log was last generated on Thu, 14 Dec 2023 20:24:02 GMT and should not be manually modified.
3
+ This log was last generated on Wed, 03 Jan 2024 19:29:41 GMT and should not be manually modified.
4
+
5
+ ## 4.3.3
6
+ Wed, 03 Jan 2024 19:28:38 GMT
7
+
8
+ _Version update only_
4
9
 
5
10
  ## 4.3.2
6
11
  Thu, 14 Dec 2023 20:23:02 GMT
@@ -173,6 +173,11 @@ export interface RenderFeatureTable {
173
173
  populateAnimationNodeIds(computeNodeId: ComputeNodeId, maxNodeId: number): void;
174
174
  /** @alpha */
175
175
  getAnimationNodeId(featureIndex: number): number;
176
+ /** Get the Id of the model associated with the feature at the specified index.
177
+ * The caller is responsible for validating that `featureIndex` is less than [[numFeatures]].
178
+ * This is more efficient than [[getFeature]] for callers who are only interested in the model Id.
179
+ */
180
+ getModelIdPair(featureIndex: number, out: Id64.Uint32Pair): Id64.Uint32Pair;
176
181
  }
177
182
  /**
178
183
  * An immutable, packed representation of a [[FeatureTable]]. The features are packed into a single array of 32-bit integer values,
@@ -207,6 +212,7 @@ export declare class PackedFeatureTable implements RenderFeatureTable {
207
212
  getAnimationNodeId(featureIndex: number): number;
208
213
  /** @internal */
209
214
  getPackedFeature(featureIndex: number, result: PackedFeature): PackedFeature;
215
+ getModelIdPair(_featureIndex: number, out: Id64.Uint32Pair): Id64.Uint32Pair;
210
216
  /** Returns the element ID of the Feature associated with the specified index, or undefined if the index is out of range. */
211
217
  findElementId(featureIndex: number): Id64String | undefined;
212
218
  /** Return true if this table contains exactly 1 feature. */
@@ -269,6 +275,7 @@ export declare class MultiModelPackedFeatureTable implements RenderFeatureTable
269
275
  getFeature(featureIndex: number, result: ModelFeature): ModelFeature;
270
276
  findFeature(featureIndex: number, result: ModelFeature): ModelFeature | undefined;
271
277
  getElementIdPair(featureIndex: number, out: Id64.Uint32Pair): Id64.Uint32Pair;
278
+ getModelIdPair(featureIndex: number, out: Id64.Uint32Pair): Id64.Uint32Pair;
272
279
  findElementId(featureIndex: number): Id64String | undefined;
273
280
  iterator(output: PackedFeatureWithIndex): Iterator<PackedFeatureWithIndex>;
274
281
  iterable(output: PackedFeatureWithIndex): Iterable<PackedFeatureWithIndex>;
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureTable.d.ts","sourceRoot":"","sources":["../../src/FeatureTable.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"FeatureTable.d.ts","sourceRoot":"","sources":["../../src/FeatureTable.ts"],"names":[],"mappings":"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"}
@@ -307,6 +307,11 @@ class PackedFeatureTable {
307
307
  result.modelId.upper = this.batchModelIdPair.upper;
308
308
  return result;
309
309
  }
310
+ getModelIdPair(_featureIndex, out) {
311
+ out.lower = this.batchModelIdPair.lower;
312
+ out.upper = this.batchModelIdPair.upper;
313
+ return out;
314
+ }
310
315
  /** Returns the element ID of the Feature associated with the specified index, or undefined if the index is out of range. */
311
316
  findElementId(featureIndex) {
312
317
  if (featureIndex >= this.numFeatures)
@@ -462,6 +467,10 @@ class MultiModelPackedFeatureTable {
462
467
  getElementIdPair(featureIndex, out) {
463
468
  return this._features.getElementIdPair(featureIndex, out);
464
469
  }
470
+ getModelIdPair(featureIndex, out) {
471
+ this._models.getModelIdPair(featureIndex, out);
472
+ return out;
473
+ }
465
474
  findElementId(featureIndex) {
466
475
  return this._features.findElementId(featureIndex);
467
476
  }
@@ -1 +1 @@
1
- {"version":3,"file":"FeatureTable.js","sourceRoot":"","sources":["../../src/FeatureTable.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 {\n assert, compareNumbers, compareStrings, Id64, Id64String, IndexedValue, IndexMap, UintArray,\n} from \"@itwin/core-bentley\";\nimport { GeometryClass } from \"./GeometryParams\";\n\n/** Describes a discrete entity within a batched [RenderGraphic]($frontend) that can be\n * grouped with other such entities in a [[FeatureTable]].\n * Features roughly correlate to elements: a [Tile]($frontend)'s graphics combines geometry from every\n * [GeometricElement]($backend) that intersects the tile's volume, so each element produces at least one feature.\n * However, an element's geometry stream can contain geometry belonging to multiple different combinations of [SubCategory]($backend) and\n * [[GeometryClass]], so an individual element may produce more than one feature.\n * @see [[FeatureOverrides]] for customizing the appearance of individual features.\n * @public\n */\nexport class Feature {\n public readonly elementId: Id64String;\n public readonly subCategoryId: Id64String;\n public readonly geometryClass: GeometryClass;\n\n public constructor(elementId: Id64String = Id64.invalid, subCategoryId: Id64String = Id64.invalid, geometryClass: GeometryClass = GeometryClass.Primary) {\n this.elementId = elementId;\n this.subCategoryId = subCategoryId;\n this.geometryClass = geometryClass;\n }\n\n public get isDefined(): boolean { return !Id64.isInvalid(this.elementId) || !Id64.isInvalid(this.subCategoryId) || this.geometryClass !== GeometryClass.Primary; }\n public get isUndefined(): boolean { return !this.isDefined; }\n\n /** Returns true if this feature is equivalent to the supplied feature. */\n public equals(other: Feature): boolean { return 0 === this.compare(other); }\n\n /** Performs ordinal comparison of this feature with another.\n * @param rhs The feature to compare with.\n * @returns zero if the features are equivalent, a negative value if this feature compares as \"less than\" `rhs`, or a positive value if this feature compares \"greater than\" `rhs`.\n */\n public compare(rhs: Feature): number {\n if (this === rhs)\n return 0;\n\n let cmp = compareNumbers(this.geometryClass, rhs.geometryClass);\n if (0 === cmp) {\n cmp = compareStrings(this.elementId, rhs.elementId);\n if (0 === cmp) {\n cmp = compareStrings(this.subCategoryId, rhs.subCategoryId);\n }\n }\n\n return cmp;\n }\n}\n\n/** A [[Feature]] with a modelId identifying the model containing the feature, obtained from a [[RenderFeatureTable]].\n * @public\n */\nexport interface ModelFeature {\n modelId: Id64String;\n elementId: Id64String;\n subCategoryId: Id64String;\n geometryClass: GeometryClass;\n}\n\n/** @public */\nexport namespace ModelFeature {\n /** Create a ModelFeature of [[GeometryClass.Primary]] with all invalid Ids.\n * This is primarily useful for creating a `result` argument for [[RenderFeatureTable.findFeature]] and [[RenderFeatureTable.getFeature]].\n */\n export function create(): ModelFeature {\n return {\n modelId: Id64.invalid,\n elementId: Id64.invalid,\n subCategoryId: Id64.invalid,\n geometryClass: GeometryClass.Primary,\n };\n }\n\n /** Returns `true` if any of `feature`'s properties differ from the defaults (invalid Ids and [[GeometryClass.Primary]]). */\n export function isDefined(feature: ModelFeature): boolean {\n return !Id64.isInvalid(feature.modelId) || !Id64.isInvalid(feature.elementId) || !Id64.isInvalid(feature.subCategoryId) || feature.geometryClass !== GeometryClass.Primary;\n }\n\n /** @alpha */\n export function unpack(packed: PackedFeature, result: ModelFeature, unpackedModelId?: Id64String): ModelFeature {\n result.modelId = unpackedModelId ?? Id64.fromUint32PairObject(packed.modelId);\n result.elementId = Id64.fromUint32PairObject(packed.elementId);\n result.subCategoryId = Id64.fromUint32PairObject(packed.subCategoryId);\n result.geometryClass = packed.geometryClass;\n return result;\n }\n}\n\n/** Represents a [[Feature]] within a [[RenderFeatureTable]]. This representation is optimized for use on the GPU.\n * @public\n */\nexport interface PackedFeature {\n modelId: Id64.Uint32Pair;\n elementId: Id64.Uint32Pair;\n subCategoryId: Id64.Uint32Pair;\n geometryClass: GeometryClass;\n /** @alpha */\n animationNodeId: number;\n}\n\n/** Represents a [[PackedFeature]] obtained from a [[RenderFeatureTable]], including the index of that feature within the table.\n * @public\n */\nexport interface PackedFeatureWithIndex extends PackedFeature {\n index: number;\n}\n\n/** @public */\nexport namespace PackedFeature {\n /** Create a PackedFeature of [[GeometryClass.Primary]] with all invalid Ids.\n * This is primarily useful for creating a `result` argument for [[RenderFeatureTable.getPackedFeature]].\n */\n export function create(): PackedFeature {\n const pair = { upper: 0, lower: 0 };\n return {\n modelId: { ...pair },\n elementId: { ...pair },\n subCategoryId: { ...pair },\n geometryClass: GeometryClass.Primary,\n animationNodeId: 0,\n };\n }\n\n /** Create a PackedFeatureWithIndex of [[GeometryClass.Primary]] with all invalid Ids and an index of zero.\n * This is primarily useful for creating a reusable `output` argument for [[RenderFeatureTable.iterable]].\n */\n export function createWithIndex(): PackedFeatureWithIndex {\n const result = create() as PackedFeatureWithIndex;\n result.index = 0;\n return result;\n }\n}\n\n/** Describes the type of a 'batch' of graphics representing multiple [[Feature]]s.\n * The most commonly-encountered batches are Tiles, which can be of either Primary or\n * Classifier type.\n * @public\n * @extensions\n */\nexport enum BatchType {\n /** This batch contains graphics derived from a model's visible geometry. */\n Primary,\n /**\n * This batch contains color volumes which are used to classify a model's visible geometry.\n * The graphics themselves are not rendered to the screen; instead they are rendered to the stencil buffer\n * to resymbolize the primary geometry.\n */\n VolumeClassifier,\n /**\n * This batch contains planar graphics which are used to classify a model's visible geometry.\n * The graphics themselves are not rendered to the screen; instead they are rendered to a texture buffer\n * to resymbolize the primary geometry.\n */\n PlanarClassifier,\n}\n\n/** Defines a look-up table for [[Feature]]s within a batched [RenderGraphic]($frontend). Consecutive 32-bit\n * indices are assigned to each unique Feature. Primitives within the RenderGraphic can\n * use per-vertex indices to specify the distribution of Features within the primitive. The appearance of individual\n * features can be customized using [[FeatureOverrides]]. Typically a [Tile]($frontend) will contain a feature table\n * identifying the elements whose geometry appears within that tile.\n * @see [[FeatureOverrides]] for customizing the appearance of individual features.\n * @public\n */\nexport class FeatureTable extends IndexMap<Feature> {\n public readonly modelId: Id64String;\n public readonly type: BatchType;\n\n /** Construct an empty FeatureTable. */\n public constructor(maxFeatures: number, modelId: Id64String = Id64.invalid, type: BatchType = BatchType.Primary) {\n super((lhs, rhs) => lhs.compare(rhs), maxFeatures);\n this.modelId = modelId;\n this.type = type;\n }\n\n /** Returns the maximum number of [[Feature]]s this FeatureTable can contain. */\n public get maxFeatures(): number { return this._maximumSize; }\n /** @internal */\n public get anyDefined(): boolean { return this.length > 1 || (1 === this.length && this._array[0].value.isDefined); }\n /** Returns true if this FeatureTable contains exactly one [[Feature]]. */\n public get isUniform(): boolean { return 1 === this.length; }\n /** If this FeatureTable contains exactly one [[Feature]], returns that Feature; otherwise returns undefined. */\n public get uniform(): Feature | undefined { return 1 === this.length ? this._array[0].value : undefined; }\n /** Returns true if this FeatureTable is associated with [[BatchType.VolumeClassifier]] geometry. */\n public get isVolumeClassifier(): boolean { return BatchType.VolumeClassifier === this.type; }\n /** Returns true if this FeatureTable is associated with [[BatchType.PlanarClassifier]] geometry. */\n public get isPlanarClassifier(): boolean { return BatchType.PlanarClassifier === this.type; }\n\n /** Returns the Feature corresponding to the specified index, or undefined if the index is not present. */\n public findFeature(index: number): Feature | undefined {\n for (const entry of this._array)\n if (entry.index === index)\n return entry.value;\n\n return undefined;\n }\n\n /** @internal */\n public insertWithIndex(feature: Feature, index: number): void {\n const bound = this.lowerBound(feature);\n assert(!bound.equal);\n assert(!this.isFull);\n const entry = new IndexedValue<Feature>(feature, index);\n this._array.splice(bound.index, 0, entry);\n }\n\n /** @internal */\n public getArray(): Array<IndexedValue<Feature>> { return this._array; }\n\n /** Convert this feature table to a representation that can be supplied to [RenderSystem.createBatch]($frontend). */\n public pack(): RenderFeatureTable {\n return PackedFeatureTable.pack(this);\n }\n}\n\n/** @alpha */\nexport type ComputeNodeId = (feature: PackedFeatureWithIndex) => number;\n\n/** Representation of a [[FeatureTable]] suitable for use with [RenderSystem.createBatch]($frontend).\n * The [[Feature]]s are represented as [[PackedFeature]]s. The feature table may contain features from multiple [Model]($backend)s.\n * @see [[FeatureTable.pack]] to produce a RenderFeatureTable.\n * @public\n */\nexport interface RenderFeatureTable {\n /** The \"model Id\" of the tile tree containing the tile from which this feature table originated.\n * It may be a transient Id if, for example, the tile tree represents a reality model or represents the geometry of multiple\n * persistent models batched together.\n */\n readonly batchModelId: Id64String;\n /** A split representation of [[batchModelId]], to avoid having to constantly having to parse the string. */\n readonly batchModelIdPair: Id64.Uint32Pair;\n /** The number of features in the table; equivalently, one more than the largest feature index. */\n readonly numFeatures: number;\n /** The number of bytes consumed by the feature table, strictly for diagnostic purposes. */\n readonly byteLength: number;\n readonly type: BatchType;\n /** @alpha */\n animationNodeIds?: UintArray;\n\n /** Get the feature at the specified index. The caller is responsible for validating featureIndex less than numFeatures. */\n getFeature(featureIndex: number, result: ModelFeature): ModelFeature;\n\n /** Find the feature at the specified index. Returns undefined if featureIndex >= [[numFeatures]]. */\n findFeature(featureIndex: number, result: ModelFeature): ModelFeature | undefined;\n\n /** Find the Id of the element associated with the feature at the specified index. */\n findElementId(featureIndex: number): Id64String | undefined;\n\n /** Get the Id of the element associated with the feature at the specified index as a pair of 32-bit integers.\n * The caller is responsible for validating that `featureIndex` is less than [[numFeatures]].\n */\n getElementIdPair(featureIndex: number, out: Id64.Uint32Pair): Id64.Uint32Pair;\n\n /** Get the feature at the specified index. The caller is responsible for validating featureIndex less than numFeatures. */\n getPackedFeature(featureIndex: number, result: PackedFeature): PackedFeature;\n\n /** Get an object that provides ordered iteration over all features.\n * @note The `output` object is reused (mutated in place) as the current value on each iteration.\n */\n iterable(output: PackedFeatureWithIndex): Iterable<PackedFeatureWithIndex>;\n\n /** @alpha */\n populateAnimationNodeIds(computeNodeId: ComputeNodeId, maxNodeId: number): void;\n\n /** @alpha */\n getAnimationNodeId(featureIndex: number): number;\n}\n\nconst scratchPackedFeature = PackedFeature.create();\n\nfunction populateAnimationNodeIds(table: RenderFeatureTable, computeNodeId: ComputeNodeId, maxNodeId: number): UintArray | undefined {\n assert(maxNodeId > 0);\n\n let nodeIds;\n const outputFeature = PackedFeature.createWithIndex();\n for (const feature of table.iterable(outputFeature)) {\n const nodeId = computeNodeId(feature);\n assert(nodeId <= maxNodeId);\n if (0 !== nodeId) {\n if (!nodeIds) {\n const size = table.numFeatures;\n nodeIds = maxNodeId < 0x100 ? new Uint8Array(size) : (maxNodeId < 0x10000 ? new Uint16Array(size) : new Uint32Array(size));\n }\n\n nodeIds[feature.index] = nodeId;\n }\n }\n\n return nodeIds;\n}\n\n/**\n * An immutable, packed representation of a [[FeatureTable]]. The features are packed into a single array of 32-bit integer values,\n * wherein each feature occupies 3 32-bit integers.\n * @internal\n */\nexport class PackedFeatureTable implements RenderFeatureTable {\n private readonly _data: Uint32Array;\n public readonly batchModelId: Id64String;\n public readonly batchModelIdPair: Id64.Uint32Pair;\n public readonly numFeatures: number;\n public readonly anyDefined: boolean;\n public readonly type: BatchType;\n public animationNodeIds?: UintArray;\n\n public get byteLength(): number { return this._data.byteLength; }\n\n /** Construct a PackedFeatureTable from the packed binary data.\n * This is used internally when deserializing Tiles in iMdl format.\n * @internal\n */\n public constructor(data: Uint32Array, modelId: Id64String, numFeatures: number, type: BatchType, animationNodeIds?: UintArray) {\n this._data = data;\n this.batchModelId = modelId;\n this.batchModelIdPair = Id64.getUint32Pair(modelId);\n this.numFeatures = numFeatures;\n this.type = type;\n this.animationNodeIds = animationNodeIds;\n\n switch (this.numFeatures) {\n case 0:\n this.anyDefined = false;\n break;\n case 1:\n this.anyDefined = ModelFeature.isDefined(this.getFeature(0, ModelFeature.create()));\n break;\n default:\n this.anyDefined = true;\n break;\n }\n\n assert(this._data.length >= this._subCategoriesOffset);\n assert(undefined === this.animationNodeIds || this.animationNodeIds.length === this.numFeatures);\n }\n\n /** Create a packed feature table from a [[FeatureTable]]. */\n public static pack(featureTable: FeatureTable): PackedFeatureTable {\n // We must determine how many subcategories we have ahead of time to compute the size of the Uint32Array, as\n // the array cannot be resized after it is created.\n // We are not too worried about this as FeatureTables created on the front-end will contain few if any features; those obtained from the\n // back-end arrive within tiles already in the packed format.\n const subcategories = new Map<string, number>();\n for (const iv of featureTable.getArray()) {\n const found = subcategories.get(iv.value.subCategoryId.toString());\n if (undefined === found)\n subcategories.set(iv.value.subCategoryId, subcategories.size);\n }\n\n // We need 3 32-bit integers per feature, plus 2 32-bit integers per subcategory.\n const subCategoriesOffset = 3 * featureTable.length;\n const nUint32s = subCategoriesOffset + 2 * subcategories.size;\n const uint32s = new Uint32Array(nUint32s);\n\n for (const iv of featureTable.getArray()) {\n const feature = iv.value;\n const index = iv.index * 3;\n\n let subCategoryIndex = subcategories.get(feature.subCategoryId)!;\n assert(undefined !== subCategoryIndex); // we inserted it above...\n subCategoryIndex |= (feature.geometryClass << 24);\n\n uint32s[index + 0] = Id64.getLowerUint32(feature.elementId);\n uint32s[index + 1] = Id64.getUpperUint32(feature.elementId);\n uint32s[index + 2] = subCategoryIndex;\n }\n\n subcategories.forEach((index: number, id: string, _map) => {\n const index32 = subCategoriesOffset + 2 * index;\n uint32s[index32 + 0] = Id64.getLowerUint32(id);\n uint32s[index32 + 1] = Id64.getUpperUint32(id);\n });\n\n return new PackedFeatureTable(uint32s, featureTable.modelId, featureTable.length, featureTable.type);\n }\n\n /** Retrieve the Feature associated with the specified index. */\n public getFeature(featureIndex: number, result: ModelFeature): ModelFeature {\n const packed = this.getPackedFeature(featureIndex, scratchPackedFeature);\n return ModelFeature.unpack(packed, result, this.batchModelId);\n }\n\n /** Returns the Feature associated with the specified index, or undefined if the index is out of range. */\n public findFeature(featureIndex: number, result: ModelFeature): ModelFeature | undefined {\n return featureIndex < this.numFeatures ? this.getFeature(featureIndex, result) : undefined;\n }\n\n /** @internal */\n public getElementIdPair(featureIndex: number, out?: Id64.Uint32Pair): Id64.Uint32Pair {\n out = out ?? { lower: 0, upper: 0 };\n assert(featureIndex < this.numFeatures);\n const offset = 3 * featureIndex;\n out.lower = this._data[offset];\n out.upper = this._data[offset + 1];\n return out;\n }\n\n /** @internal */\n public getSubCategoryIdPair(featureIndex: number): Id64.Uint32Pair {\n const index = 3 * featureIndex;\n let subCatIndex = this._data[index + 2];\n subCatIndex = (subCatIndex & 0x00ffffff) >>> 0;\n subCatIndex = subCatIndex * 2 + this._subCategoriesOffset;\n return { lower: this._data[subCatIndex], upper: this._data[subCatIndex + 1] };\n }\n\n /** @internal */\n public getAnimationNodeId(featureIndex: number): number {\n return undefined !== this.animationNodeIds && featureIndex < this.numFeatures ? this.animationNodeIds[featureIndex] : 0;\n }\n\n /** @internal */\n public getPackedFeature(featureIndex: number, result: PackedFeature): PackedFeature {\n assert(featureIndex < this.numFeatures);\n\n const index32 = 3 * featureIndex;\n result.elementId.lower = this._data[index32];\n result.elementId.upper = this._data[index32 + 1];\n\n const subCatIndexAndClass = this._data[index32 + 2];\n result.geometryClass = (subCatIndexAndClass >>> 24) & 0xff;\n\n let subCatIndex = (subCatIndexAndClass & 0x00ffffff) >>> 0;\n subCatIndex = subCatIndex * 2 + this._subCategoriesOffset;\n result.subCategoryId.lower = this._data[subCatIndex];\n result.subCategoryId.upper = this._data[subCatIndex + 1];\n\n result.animationNodeId = this.getAnimationNodeId(featureIndex);\n result.modelId.lower = this.batchModelIdPair.lower;\n result.modelId.upper = this.batchModelIdPair.upper;\n\n return result;\n }\n\n /** Returns the element ID of the Feature associated with the specified index, or undefined if the index is out of range. */\n public findElementId(featureIndex: number): Id64String | undefined {\n if (featureIndex >= this.numFeatures)\n return undefined;\n else\n return this.readId(3 * featureIndex);\n }\n\n /** Return true if this table contains exactly 1 feature. */\n public get isUniform(): boolean { return 1 === this.numFeatures; }\n\n /** If this table contains exactly 1 feature, return it. */\n public getUniform(result: ModelFeature): ModelFeature | undefined {\n return this.isUniform ? this.getFeature(0, result) : undefined;\n }\n\n public get isVolumeClassifier(): boolean { return BatchType.VolumeClassifier === this.type; }\n public get isPlanarClassifier(): boolean { return BatchType.VolumeClassifier === this.type; }\n public get isClassifier(): boolean { return this.isVolumeClassifier || this.isPlanarClassifier; }\n\n /** Unpack the features into a [[FeatureTable]]. */\n public unpack(): FeatureTable {\n const table = new FeatureTable(this.numFeatures, this.batchModelId);\n const feature = ModelFeature.create();\n for (let i = 0; i < this.numFeatures; i++) {\n this.getFeature(i, feature);\n table.insertWithIndex(new Feature(feature.elementId, feature.subCategoryId, feature.geometryClass), i);\n }\n\n return table;\n }\n\n public populateAnimationNodeIds(computeNodeId: ComputeNodeId, maxNodeId: number): void {\n assert(undefined === this.animationNodeIds);\n this.animationNodeIds = populateAnimationNodeIds(this, computeNodeId, maxNodeId);\n }\n\n public * iterator(output: PackedFeatureWithIndex): Iterator<PackedFeatureWithIndex> {\n for (let i = 0; i < this.numFeatures; i++) {\n this.getPackedFeature(i, output);\n output.index = i;\n yield output;\n }\n }\n\n public iterable(output: PackedFeatureWithIndex): Iterable<PackedFeatureWithIndex> {\n return {\n [Symbol.iterator]: () => this.iterator(output),\n };\n }\n\n private get _subCategoriesOffset(): number { return this.numFeatures * 3; }\n\n private readId(offset32: number): Id64String {\n return Id64.fromUint32Pair(this._data[offset32], this._data[offset32 + 1]);\n }\n}\n\ninterface PackedFeatureModelEntry {\n lastFeatureIndex: number;\n idLower: number;\n idUpper: number;\n}\n\nconst scratchPackedFeatureModelEntry = { lastFeatureIndex: -1, idLower: -1, idUpper: -1 };\n\n/** A table of model Ids associated with a [[MultiModelPackedFeatureTable]].\n * The feature indices in the packed feature table are grouped together by model, such that the first N features belong to model 1, the next M features to model 2, and so on.\n * The model table itself consists of one entry per model, where each entry looks like:\n * indexOfLastFeatureInModel: u32\n * modelId: u64\n * The modelId associated with a feature can therefore be derived by finding the entry in the model table with the highest indexOfLastFeatureInModel no greater than the feature index.\n * This lookup can be optimized using binary search.\n * Moreover, while iterating the feature table in sequence, the model table can be iterated in parallel so that no per-feature lookup of model Id is required.\n * @internal\n */\nexport class PackedFeatureModelTable {\n private readonly _data: Uint32Array;\n\n public constructor(data: Uint32Array) {\n this._data = data;\n assert(this._data.length % 3 === 0);\n }\n\n /** The number of models in the table. */\n public get length(): number {\n return this._data.length / 3;\n }\n\n public get byteLength(): number {\n return this._data.byteLength;\n }\n\n private getLastFeatureIndex(modelIndex: number): number {\n return this._data[modelIndex * 3];\n }\n\n public getEntry(modelIndex: number, result: PackedFeatureModelEntry): PackedFeatureModelEntry {\n if (modelIndex >= this.length) {\n result.idLower = result.idUpper = 0;\n result.lastFeatureIndex = Number.MAX_SAFE_INTEGER;\n return result;\n }\n\n const index = modelIndex * 3;\n result.lastFeatureIndex = this._data[index + 0];\n result.idLower = this._data[index + 1];\n result.idUpper = this._data[index + 2];\n return result;\n }\n\n /** Get the Id of the model associated with the specified feature, or an invalid Id if the feature is not associated with any model. */\n public getModelIdPair(featureIndex: number, result?: Id64.Uint32Pair): Id64.Uint32Pair {\n if (!result)\n result = { lower: 0, upper: 0 };\n else\n result.lower = result.upper = 0;\n\n let first = 0;\n const last = this.length;\n let count = last;\n while (count > 0) {\n const step = Math.floor(count / 2);\n const mid = first + step;\n const lastFeatureIndex = this.getLastFeatureIndex(mid);\n if (featureIndex > lastFeatureIndex) {\n first = mid + 1;\n count -= step + 1;\n } else {\n count = step;\n }\n }\n\n if (first < last) {\n result.lower = this._data[first * 3 + 1];\n result.upper = this._data[first * 3 + 2];\n }\n\n return result;\n }\n}\n\n/** A PackedFeatureTable with a PackedFeatureModelTable appended to it, capable of storing features belonging to more than one model.\n * @internal\n */\nexport class MultiModelPackedFeatureTable implements RenderFeatureTable {\n private readonly _features: PackedFeatureTable;\n private readonly _models: PackedFeatureModelTable;\n\n public constructor(features: PackedFeatureTable, models: PackedFeatureModelTable) {\n this._features = features;\n this._models = models;\n }\n\n public static create(data: Uint32Array, batchModelId: Id64String, numFeatures: number, type: BatchType, numSubCategories: number): MultiModelPackedFeatureTable {\n const modelTableOffset = 3 * numFeatures + 2 * numSubCategories;\n const featureData = data.subarray(0, modelTableOffset);\n const features = new PackedFeatureTable(featureData, batchModelId, numFeatures, type);\n\n const modelData = data.subarray(modelTableOffset);\n const models = new PackedFeatureModelTable(modelData);\n\n return new MultiModelPackedFeatureTable(features, models);\n }\n\n public get batchModelId() { return this._features.batchModelId; }\n public get batchModelIdPair() { return this._features.batchModelIdPair; }\n public get numFeatures() { return this._features.numFeatures; }\n public get type() { return this._features.type; }\n public get animationNodeIds(): UintArray | undefined { return this._features.animationNodeIds; }\n public set animationNodeIds(ids: UintArray | undefined) { this._features.animationNodeIds = ids; }\n\n public get byteLength() {\n return this._features.byteLength + this._models.byteLength;\n }\n\n public getPackedFeature(featureIndex: number, result: PackedFeature): PackedFeature {\n this._features.getPackedFeature(featureIndex, result);\n this._models.getModelIdPair(featureIndex, result.modelId);\n return result;\n }\n\n public getFeature(featureIndex: number, result: ModelFeature): ModelFeature {\n const packed = this.getPackedFeature(featureIndex, scratchPackedFeature);\n return ModelFeature.unpack(packed, result);\n }\n\n public findFeature(featureIndex: number, result: ModelFeature): ModelFeature | undefined {\n return featureIndex < this.numFeatures ? this.getFeature(featureIndex, result) : undefined;\n }\n\n public getElementIdPair(featureIndex: number, out: Id64.Uint32Pair): Id64.Uint32Pair {\n return this._features.getElementIdPair(featureIndex, out);\n }\n\n public findElementId(featureIndex: number): Id64String | undefined {\n return this._features.findElementId(featureIndex);\n }\n\n public * iterator(output: PackedFeatureWithIndex): Iterator<PackedFeatureWithIndex> {\n // Rather than perform a binary search on the model table to find each feature's model Id, traverse the model table in parallel with the feature table.\n let modelIndex = 0;\n const modelEntry = this._models.getEntry(modelIndex, scratchPackedFeatureModelEntry);\n\n for (let featureIndex = 0; featureIndex < this.numFeatures; featureIndex++) {\n if (featureIndex > modelEntry.lastFeatureIndex)\n this._models.getEntry(++modelIndex, modelEntry);\n\n this._features.getPackedFeature(featureIndex, output);\n output.modelId.lower = modelEntry.idLower;\n output.modelId.upper = modelEntry.idUpper;\n output.index = featureIndex;\n yield output;\n }\n }\n\n public iterable(output: PackedFeatureWithIndex): Iterable<PackedFeatureWithIndex> {\n return {\n [Symbol.iterator]: () => this.iterator(output),\n };\n }\n\n public getAnimationNodeId(featureIndex: number): number {\n return this._features.getAnimationNodeId(featureIndex);\n }\n\n public populateAnimationNodeIds(computeNodeId: ComputeNodeId, maxNodeId: number): void {\n this._features.animationNodeIds = populateAnimationNodeIds(this, computeNodeId, maxNodeId);\n }\n}\n"]}
1
+ {"version":3,"file":"FeatureTable.js","sourceRoot":"","sources":["../../src/FeatureTable.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 {\n assert, compareNumbers, compareStrings, Id64, Id64String, IndexedValue, IndexMap, UintArray,\n} from \"@itwin/core-bentley\";\nimport { GeometryClass } from \"./GeometryParams\";\n\n/** Describes a discrete entity within a batched [RenderGraphic]($frontend) that can be\n * grouped with other such entities in a [[FeatureTable]].\n * Features roughly correlate to elements: a [Tile]($frontend)'s graphics combines geometry from every\n * [GeometricElement]($backend) that intersects the tile's volume, so each element produces at least one feature.\n * However, an element's geometry stream can contain geometry belonging to multiple different combinations of [SubCategory]($backend) and\n * [[GeometryClass]], so an individual element may produce more than one feature.\n * @see [[FeatureOverrides]] for customizing the appearance of individual features.\n * @public\n */\nexport class Feature {\n public readonly elementId: Id64String;\n public readonly subCategoryId: Id64String;\n public readonly geometryClass: GeometryClass;\n\n public constructor(elementId: Id64String = Id64.invalid, subCategoryId: Id64String = Id64.invalid, geometryClass: GeometryClass = GeometryClass.Primary) {\n this.elementId = elementId;\n this.subCategoryId = subCategoryId;\n this.geometryClass = geometryClass;\n }\n\n public get isDefined(): boolean { return !Id64.isInvalid(this.elementId) || !Id64.isInvalid(this.subCategoryId) || this.geometryClass !== GeometryClass.Primary; }\n public get isUndefined(): boolean { return !this.isDefined; }\n\n /** Returns true if this feature is equivalent to the supplied feature. */\n public equals(other: Feature): boolean { return 0 === this.compare(other); }\n\n /** Performs ordinal comparison of this feature with another.\n * @param rhs The feature to compare with.\n * @returns zero if the features are equivalent, a negative value if this feature compares as \"less than\" `rhs`, or a positive value if this feature compares \"greater than\" `rhs`.\n */\n public compare(rhs: Feature): number {\n if (this === rhs)\n return 0;\n\n let cmp = compareNumbers(this.geometryClass, rhs.geometryClass);\n if (0 === cmp) {\n cmp = compareStrings(this.elementId, rhs.elementId);\n if (0 === cmp) {\n cmp = compareStrings(this.subCategoryId, rhs.subCategoryId);\n }\n }\n\n return cmp;\n }\n}\n\n/** A [[Feature]] with a modelId identifying the model containing the feature, obtained from a [[RenderFeatureTable]].\n * @public\n */\nexport interface ModelFeature {\n modelId: Id64String;\n elementId: Id64String;\n subCategoryId: Id64String;\n geometryClass: GeometryClass;\n}\n\n/** @public */\nexport namespace ModelFeature {\n /** Create a ModelFeature of [[GeometryClass.Primary]] with all invalid Ids.\n * This is primarily useful for creating a `result` argument for [[RenderFeatureTable.findFeature]] and [[RenderFeatureTable.getFeature]].\n */\n export function create(): ModelFeature {\n return {\n modelId: Id64.invalid,\n elementId: Id64.invalid,\n subCategoryId: Id64.invalid,\n geometryClass: GeometryClass.Primary,\n };\n }\n\n /** Returns `true` if any of `feature`'s properties differ from the defaults (invalid Ids and [[GeometryClass.Primary]]). */\n export function isDefined(feature: ModelFeature): boolean {\n return !Id64.isInvalid(feature.modelId) || !Id64.isInvalid(feature.elementId) || !Id64.isInvalid(feature.subCategoryId) || feature.geometryClass !== GeometryClass.Primary;\n }\n\n /** @alpha */\n export function unpack(packed: PackedFeature, result: ModelFeature, unpackedModelId?: Id64String): ModelFeature {\n result.modelId = unpackedModelId ?? Id64.fromUint32PairObject(packed.modelId);\n result.elementId = Id64.fromUint32PairObject(packed.elementId);\n result.subCategoryId = Id64.fromUint32PairObject(packed.subCategoryId);\n result.geometryClass = packed.geometryClass;\n return result;\n }\n}\n\n/** Represents a [[Feature]] within a [[RenderFeatureTable]]. This representation is optimized for use on the GPU.\n * @public\n */\nexport interface PackedFeature {\n modelId: Id64.Uint32Pair;\n elementId: Id64.Uint32Pair;\n subCategoryId: Id64.Uint32Pair;\n geometryClass: GeometryClass;\n /** @alpha */\n animationNodeId: number;\n}\n\n/** Represents a [[PackedFeature]] obtained from a [[RenderFeatureTable]], including the index of that feature within the table.\n * @public\n */\nexport interface PackedFeatureWithIndex extends PackedFeature {\n index: number;\n}\n\n/** @public */\nexport namespace PackedFeature {\n /** Create a PackedFeature of [[GeometryClass.Primary]] with all invalid Ids.\n * This is primarily useful for creating a `result` argument for [[RenderFeatureTable.getPackedFeature]].\n */\n export function create(): PackedFeature {\n const pair = { upper: 0, lower: 0 };\n return {\n modelId: { ...pair },\n elementId: { ...pair },\n subCategoryId: { ...pair },\n geometryClass: GeometryClass.Primary,\n animationNodeId: 0,\n };\n }\n\n /** Create a PackedFeatureWithIndex of [[GeometryClass.Primary]] with all invalid Ids and an index of zero.\n * This is primarily useful for creating a reusable `output` argument for [[RenderFeatureTable.iterable]].\n */\n export function createWithIndex(): PackedFeatureWithIndex {\n const result = create() as PackedFeatureWithIndex;\n result.index = 0;\n return result;\n }\n}\n\n/** Describes the type of a 'batch' of graphics representing multiple [[Feature]]s.\n * The most commonly-encountered batches are Tiles, which can be of either Primary or\n * Classifier type.\n * @public\n * @extensions\n */\nexport enum BatchType {\n /** This batch contains graphics derived from a model's visible geometry. */\n Primary,\n /**\n * This batch contains color volumes which are used to classify a model's visible geometry.\n * The graphics themselves are not rendered to the screen; instead they are rendered to the stencil buffer\n * to resymbolize the primary geometry.\n */\n VolumeClassifier,\n /**\n * This batch contains planar graphics which are used to classify a model's visible geometry.\n * The graphics themselves are not rendered to the screen; instead they are rendered to a texture buffer\n * to resymbolize the primary geometry.\n */\n PlanarClassifier,\n}\n\n/** Defines a look-up table for [[Feature]]s within a batched [RenderGraphic]($frontend). Consecutive 32-bit\n * indices are assigned to each unique Feature. Primitives within the RenderGraphic can\n * use per-vertex indices to specify the distribution of Features within the primitive. The appearance of individual\n * features can be customized using [[FeatureOverrides]]. Typically a [Tile]($frontend) will contain a feature table\n * identifying the elements whose geometry appears within that tile.\n * @see [[FeatureOverrides]] for customizing the appearance of individual features.\n * @public\n */\nexport class FeatureTable extends IndexMap<Feature> {\n public readonly modelId: Id64String;\n public readonly type: BatchType;\n\n /** Construct an empty FeatureTable. */\n public constructor(maxFeatures: number, modelId: Id64String = Id64.invalid, type: BatchType = BatchType.Primary) {\n super((lhs, rhs) => lhs.compare(rhs), maxFeatures);\n this.modelId = modelId;\n this.type = type;\n }\n\n /** Returns the maximum number of [[Feature]]s this FeatureTable can contain. */\n public get maxFeatures(): number { return this._maximumSize; }\n /** @internal */\n public get anyDefined(): boolean { return this.length > 1 || (1 === this.length && this._array[0].value.isDefined); }\n /** Returns true if this FeatureTable contains exactly one [[Feature]]. */\n public get isUniform(): boolean { return 1 === this.length; }\n /** If this FeatureTable contains exactly one [[Feature]], returns that Feature; otherwise returns undefined. */\n public get uniform(): Feature | undefined { return 1 === this.length ? this._array[0].value : undefined; }\n /** Returns true if this FeatureTable is associated with [[BatchType.VolumeClassifier]] geometry. */\n public get isVolumeClassifier(): boolean { return BatchType.VolumeClassifier === this.type; }\n /** Returns true if this FeatureTable is associated with [[BatchType.PlanarClassifier]] geometry. */\n public get isPlanarClassifier(): boolean { return BatchType.PlanarClassifier === this.type; }\n\n /** Returns the Feature corresponding to the specified index, or undefined if the index is not present. */\n public findFeature(index: number): Feature | undefined {\n for (const entry of this._array)\n if (entry.index === index)\n return entry.value;\n\n return undefined;\n }\n\n /** @internal */\n public insertWithIndex(feature: Feature, index: number): void {\n const bound = this.lowerBound(feature);\n assert(!bound.equal);\n assert(!this.isFull);\n const entry = new IndexedValue<Feature>(feature, index);\n this._array.splice(bound.index, 0, entry);\n }\n\n /** @internal */\n public getArray(): Array<IndexedValue<Feature>> { return this._array; }\n\n /** Convert this feature table to a representation that can be supplied to [RenderSystem.createBatch]($frontend). */\n public pack(): RenderFeatureTable {\n return PackedFeatureTable.pack(this);\n }\n}\n\n/** @alpha */\nexport type ComputeNodeId = (feature: PackedFeatureWithIndex) => number;\n\n/** Representation of a [[FeatureTable]] suitable for use with [RenderSystem.createBatch]($frontend).\n * The [[Feature]]s are represented as [[PackedFeature]]s. The feature table may contain features from multiple [Model]($backend)s.\n * @see [[FeatureTable.pack]] to produce a RenderFeatureTable.\n * @public\n */\nexport interface RenderFeatureTable {\n /** The \"model Id\" of the tile tree containing the tile from which this feature table originated.\n * It may be a transient Id if, for example, the tile tree represents a reality model or represents the geometry of multiple\n * persistent models batched together.\n */\n readonly batchModelId: Id64String;\n /** A split representation of [[batchModelId]], to avoid having to constantly having to parse the string. */\n readonly batchModelIdPair: Id64.Uint32Pair;\n /** The number of features in the table; equivalently, one more than the largest feature index. */\n readonly numFeatures: number;\n /** The number of bytes consumed by the feature table, strictly for diagnostic purposes. */\n readonly byteLength: number;\n readonly type: BatchType;\n /** @alpha */\n animationNodeIds?: UintArray;\n\n /** Get the feature at the specified index. The caller is responsible for validating featureIndex less than numFeatures. */\n getFeature(featureIndex: number, result: ModelFeature): ModelFeature;\n\n /** Find the feature at the specified index. Returns undefined if featureIndex >= [[numFeatures]]. */\n findFeature(featureIndex: number, result: ModelFeature): ModelFeature | undefined;\n\n /** Find the Id of the element associated with the feature at the specified index. */\n findElementId(featureIndex: number): Id64String | undefined;\n\n /** Get the Id of the element associated with the feature at the specified index as a pair of 32-bit integers.\n * The caller is responsible for validating that `featureIndex` is less than [[numFeatures]].\n */\n getElementIdPair(featureIndex: number, out: Id64.Uint32Pair): Id64.Uint32Pair;\n\n /** Get the feature at the specified index. The caller is responsible for validating featureIndex less than numFeatures. */\n getPackedFeature(featureIndex: number, result: PackedFeature): PackedFeature;\n\n /** Get an object that provides ordered iteration over all features.\n * @note The `output` object is reused (mutated in place) as the current value on each iteration.\n */\n iterable(output: PackedFeatureWithIndex): Iterable<PackedFeatureWithIndex>;\n\n /** @alpha */\n populateAnimationNodeIds(computeNodeId: ComputeNodeId, maxNodeId: number): void;\n\n /** @alpha */\n getAnimationNodeId(featureIndex: number): number;\n\n /** Get the Id of the model associated with the feature at the specified index.\n * The caller is responsible for validating that `featureIndex` is less than [[numFeatures]].\n * This is more efficient than [[getFeature]] for callers who are only interested in the model Id.\n */\n getModelIdPair(featureIndex: number, out: Id64.Uint32Pair): Id64.Uint32Pair;\n}\n\nconst scratchPackedFeature = PackedFeature.create();\n\nfunction populateAnimationNodeIds(table: RenderFeatureTable, computeNodeId: ComputeNodeId, maxNodeId: number): UintArray | undefined {\n assert(maxNodeId > 0);\n\n let nodeIds;\n const outputFeature = PackedFeature.createWithIndex();\n for (const feature of table.iterable(outputFeature)) {\n const nodeId = computeNodeId(feature);\n assert(nodeId <= maxNodeId);\n if (0 !== nodeId) {\n if (!nodeIds) {\n const size = table.numFeatures;\n nodeIds = maxNodeId < 0x100 ? new Uint8Array(size) : (maxNodeId < 0x10000 ? new Uint16Array(size) : new Uint32Array(size));\n }\n\n nodeIds[feature.index] = nodeId;\n }\n }\n\n return nodeIds;\n}\n\n/**\n * An immutable, packed representation of a [[FeatureTable]]. The features are packed into a single array of 32-bit integer values,\n * wherein each feature occupies 3 32-bit integers.\n * @internal\n */\nexport class PackedFeatureTable implements RenderFeatureTable {\n private readonly _data: Uint32Array;\n public readonly batchModelId: Id64String;\n public readonly batchModelIdPair: Id64.Uint32Pair;\n public readonly numFeatures: number;\n public readonly anyDefined: boolean;\n public readonly type: BatchType;\n public animationNodeIds?: UintArray;\n\n public get byteLength(): number { return this._data.byteLength; }\n\n /** Construct a PackedFeatureTable from the packed binary data.\n * This is used internally when deserializing Tiles in iMdl format.\n * @internal\n */\n public constructor(data: Uint32Array, modelId: Id64String, numFeatures: number, type: BatchType, animationNodeIds?: UintArray) {\n this._data = data;\n this.batchModelId = modelId;\n this.batchModelIdPair = Id64.getUint32Pair(modelId);\n this.numFeatures = numFeatures;\n this.type = type;\n this.animationNodeIds = animationNodeIds;\n\n switch (this.numFeatures) {\n case 0:\n this.anyDefined = false;\n break;\n case 1:\n this.anyDefined = ModelFeature.isDefined(this.getFeature(0, ModelFeature.create()));\n break;\n default:\n this.anyDefined = true;\n break;\n }\n\n assert(this._data.length >= this._subCategoriesOffset);\n assert(undefined === this.animationNodeIds || this.animationNodeIds.length === this.numFeatures);\n }\n\n /** Create a packed feature table from a [[FeatureTable]]. */\n public static pack(featureTable: FeatureTable): PackedFeatureTable {\n // We must determine how many subcategories we have ahead of time to compute the size of the Uint32Array, as\n // the array cannot be resized after it is created.\n // We are not too worried about this as FeatureTables created on the front-end will contain few if any features; those obtained from the\n // back-end arrive within tiles already in the packed format.\n const subcategories = new Map<string, number>();\n for (const iv of featureTable.getArray()) {\n const found = subcategories.get(iv.value.subCategoryId.toString());\n if (undefined === found)\n subcategories.set(iv.value.subCategoryId, subcategories.size);\n }\n\n // We need 3 32-bit integers per feature, plus 2 32-bit integers per subcategory.\n const subCategoriesOffset = 3 * featureTable.length;\n const nUint32s = subCategoriesOffset + 2 * subcategories.size;\n const uint32s = new Uint32Array(nUint32s);\n\n for (const iv of featureTable.getArray()) {\n const feature = iv.value;\n const index = iv.index * 3;\n\n let subCategoryIndex = subcategories.get(feature.subCategoryId)!;\n assert(undefined !== subCategoryIndex); // we inserted it above...\n subCategoryIndex |= (feature.geometryClass << 24);\n\n uint32s[index + 0] = Id64.getLowerUint32(feature.elementId);\n uint32s[index + 1] = Id64.getUpperUint32(feature.elementId);\n uint32s[index + 2] = subCategoryIndex;\n }\n\n subcategories.forEach((index: number, id: string, _map) => {\n const index32 = subCategoriesOffset + 2 * index;\n uint32s[index32 + 0] = Id64.getLowerUint32(id);\n uint32s[index32 + 1] = Id64.getUpperUint32(id);\n });\n\n return new PackedFeatureTable(uint32s, featureTable.modelId, featureTable.length, featureTable.type);\n }\n\n /** Retrieve the Feature associated with the specified index. */\n public getFeature(featureIndex: number, result: ModelFeature): ModelFeature {\n const packed = this.getPackedFeature(featureIndex, scratchPackedFeature);\n return ModelFeature.unpack(packed, result, this.batchModelId);\n }\n\n /** Returns the Feature associated with the specified index, or undefined if the index is out of range. */\n public findFeature(featureIndex: number, result: ModelFeature): ModelFeature | undefined {\n return featureIndex < this.numFeatures ? this.getFeature(featureIndex, result) : undefined;\n }\n\n /** @internal */\n public getElementIdPair(featureIndex: number, out?: Id64.Uint32Pair): Id64.Uint32Pair {\n out = out ?? { lower: 0, upper: 0 };\n assert(featureIndex < this.numFeatures);\n const offset = 3 * featureIndex;\n out.lower = this._data[offset];\n out.upper = this._data[offset + 1];\n return out;\n }\n\n /** @internal */\n public getSubCategoryIdPair(featureIndex: number): Id64.Uint32Pair {\n const index = 3 * featureIndex;\n let subCatIndex = this._data[index + 2];\n subCatIndex = (subCatIndex & 0x00ffffff) >>> 0;\n subCatIndex = subCatIndex * 2 + this._subCategoriesOffset;\n return { lower: this._data[subCatIndex], upper: this._data[subCatIndex + 1] };\n }\n\n /** @internal */\n public getAnimationNodeId(featureIndex: number): number {\n return undefined !== this.animationNodeIds && featureIndex < this.numFeatures ? this.animationNodeIds[featureIndex] : 0;\n }\n\n /** @internal */\n public getPackedFeature(featureIndex: number, result: PackedFeature): PackedFeature {\n assert(featureIndex < this.numFeatures);\n\n const index32 = 3 * featureIndex;\n result.elementId.lower = this._data[index32];\n result.elementId.upper = this._data[index32 + 1];\n\n const subCatIndexAndClass = this._data[index32 + 2];\n result.geometryClass = (subCatIndexAndClass >>> 24) & 0xff;\n\n let subCatIndex = (subCatIndexAndClass & 0x00ffffff) >>> 0;\n subCatIndex = subCatIndex * 2 + this._subCategoriesOffset;\n result.subCategoryId.lower = this._data[subCatIndex];\n result.subCategoryId.upper = this._data[subCatIndex + 1];\n\n result.animationNodeId = this.getAnimationNodeId(featureIndex);\n result.modelId.lower = this.batchModelIdPair.lower;\n result.modelId.upper = this.batchModelIdPair.upper;\n\n return result;\n }\n\n public getModelIdPair(_featureIndex: number, out: Id64.Uint32Pair): Id64.Uint32Pair {\n out.lower = this.batchModelIdPair.lower;\n out.upper = this.batchModelIdPair.upper;\n return out;\n }\n\n /** Returns the element ID of the Feature associated with the specified index, or undefined if the index is out of range. */\n public findElementId(featureIndex: number): Id64String | undefined {\n if (featureIndex >= this.numFeatures)\n return undefined;\n else\n return this.readId(3 * featureIndex);\n }\n\n /** Return true if this table contains exactly 1 feature. */\n public get isUniform(): boolean { return 1 === this.numFeatures; }\n\n /** If this table contains exactly 1 feature, return it. */\n public getUniform(result: ModelFeature): ModelFeature | undefined {\n return this.isUniform ? this.getFeature(0, result) : undefined;\n }\n\n public get isVolumeClassifier(): boolean { return BatchType.VolumeClassifier === this.type; }\n public get isPlanarClassifier(): boolean { return BatchType.VolumeClassifier === this.type; }\n public get isClassifier(): boolean { return this.isVolumeClassifier || this.isPlanarClassifier; }\n\n /** Unpack the features into a [[FeatureTable]]. */\n public unpack(): FeatureTable {\n const table = new FeatureTable(this.numFeatures, this.batchModelId);\n const feature = ModelFeature.create();\n for (let i = 0; i < this.numFeatures; i++) {\n this.getFeature(i, feature);\n table.insertWithIndex(new Feature(feature.elementId, feature.subCategoryId, feature.geometryClass), i);\n }\n\n return table;\n }\n\n public populateAnimationNodeIds(computeNodeId: ComputeNodeId, maxNodeId: number): void {\n assert(undefined === this.animationNodeIds);\n this.animationNodeIds = populateAnimationNodeIds(this, computeNodeId, maxNodeId);\n }\n\n public * iterator(output: PackedFeatureWithIndex): Iterator<PackedFeatureWithIndex> {\n for (let i = 0; i < this.numFeatures; i++) {\n this.getPackedFeature(i, output);\n output.index = i;\n yield output;\n }\n }\n\n public iterable(output: PackedFeatureWithIndex): Iterable<PackedFeatureWithIndex> {\n return {\n [Symbol.iterator]: () => this.iterator(output),\n };\n }\n\n private get _subCategoriesOffset(): number { return this.numFeatures * 3; }\n\n private readId(offset32: number): Id64String {\n return Id64.fromUint32Pair(this._data[offset32], this._data[offset32 + 1]);\n }\n}\n\ninterface PackedFeatureModelEntry {\n lastFeatureIndex: number;\n idLower: number;\n idUpper: number;\n}\n\nconst scratchPackedFeatureModelEntry = { lastFeatureIndex: -1, idLower: -1, idUpper: -1 };\n\n/** A table of model Ids associated with a [[MultiModelPackedFeatureTable]].\n * The feature indices in the packed feature table are grouped together by model, such that the first N features belong to model 1, the next M features to model 2, and so on.\n * The model table itself consists of one entry per model, where each entry looks like:\n * indexOfLastFeatureInModel: u32\n * modelId: u64\n * The modelId associated with a feature can therefore be derived by finding the entry in the model table with the highest indexOfLastFeatureInModel no greater than the feature index.\n * This lookup can be optimized using binary search.\n * Moreover, while iterating the feature table in sequence, the model table can be iterated in parallel so that no per-feature lookup of model Id is required.\n * @internal\n */\nexport class PackedFeatureModelTable {\n private readonly _data: Uint32Array;\n\n public constructor(data: Uint32Array) {\n this._data = data;\n assert(this._data.length % 3 === 0);\n }\n\n /** The number of models in the table. */\n public get length(): number {\n return this._data.length / 3;\n }\n\n public get byteLength(): number {\n return this._data.byteLength;\n }\n\n private getLastFeatureIndex(modelIndex: number): number {\n return this._data[modelIndex * 3];\n }\n\n public getEntry(modelIndex: number, result: PackedFeatureModelEntry): PackedFeatureModelEntry {\n if (modelIndex >= this.length) {\n result.idLower = result.idUpper = 0;\n result.lastFeatureIndex = Number.MAX_SAFE_INTEGER;\n return result;\n }\n\n const index = modelIndex * 3;\n result.lastFeatureIndex = this._data[index + 0];\n result.idLower = this._data[index + 1];\n result.idUpper = this._data[index + 2];\n return result;\n }\n\n /** Get the Id of the model associated with the specified feature, or an invalid Id if the feature is not associated with any model. */\n public getModelIdPair(featureIndex: number, result?: Id64.Uint32Pair): Id64.Uint32Pair {\n if (!result)\n result = { lower: 0, upper: 0 };\n else\n result.lower = result.upper = 0;\n\n let first = 0;\n const last = this.length;\n let count = last;\n while (count > 0) {\n const step = Math.floor(count / 2);\n const mid = first + step;\n const lastFeatureIndex = this.getLastFeatureIndex(mid);\n if (featureIndex > lastFeatureIndex) {\n first = mid + 1;\n count -= step + 1;\n } else {\n count = step;\n }\n }\n\n if (first < last) {\n result.lower = this._data[first * 3 + 1];\n result.upper = this._data[first * 3 + 2];\n }\n\n return result;\n }\n}\n\n/** A PackedFeatureTable with a PackedFeatureModelTable appended to it, capable of storing features belonging to more than one model.\n * @internal\n */\nexport class MultiModelPackedFeatureTable implements RenderFeatureTable {\n private readonly _features: PackedFeatureTable;\n private readonly _models: PackedFeatureModelTable;\n\n public constructor(features: PackedFeatureTable, models: PackedFeatureModelTable) {\n this._features = features;\n this._models = models;\n }\n\n public static create(data: Uint32Array, batchModelId: Id64String, numFeatures: number, type: BatchType, numSubCategories: number): MultiModelPackedFeatureTable {\n const modelTableOffset = 3 * numFeatures + 2 * numSubCategories;\n const featureData = data.subarray(0, modelTableOffset);\n const features = new PackedFeatureTable(featureData, batchModelId, numFeatures, type);\n\n const modelData = data.subarray(modelTableOffset);\n const models = new PackedFeatureModelTable(modelData);\n\n return new MultiModelPackedFeatureTable(features, models);\n }\n\n public get batchModelId() { return this._features.batchModelId; }\n public get batchModelIdPair() { return this._features.batchModelIdPair; }\n public get numFeatures() { return this._features.numFeatures; }\n public get type() { return this._features.type; }\n public get animationNodeIds(): UintArray | undefined { return this._features.animationNodeIds; }\n public set animationNodeIds(ids: UintArray | undefined) { this._features.animationNodeIds = ids; }\n\n public get byteLength() {\n return this._features.byteLength + this._models.byteLength;\n }\n\n public getPackedFeature(featureIndex: number, result: PackedFeature): PackedFeature {\n this._features.getPackedFeature(featureIndex, result);\n this._models.getModelIdPair(featureIndex, result.modelId);\n return result;\n }\n\n public getFeature(featureIndex: number, result: ModelFeature): ModelFeature {\n const packed = this.getPackedFeature(featureIndex, scratchPackedFeature);\n return ModelFeature.unpack(packed, result);\n }\n\n public findFeature(featureIndex: number, result: ModelFeature): ModelFeature | undefined {\n return featureIndex < this.numFeatures ? this.getFeature(featureIndex, result) : undefined;\n }\n\n public getElementIdPair(featureIndex: number, out: Id64.Uint32Pair): Id64.Uint32Pair {\n return this._features.getElementIdPair(featureIndex, out);\n }\n\n public getModelIdPair(featureIndex: number, out: Id64.Uint32Pair): Id64.Uint32Pair {\n this._models.getModelIdPair(featureIndex, out);\n return out;\n }\n\n public findElementId(featureIndex: number): Id64String | undefined {\n return this._features.findElementId(featureIndex);\n }\n\n public * iterator(output: PackedFeatureWithIndex): Iterator<PackedFeatureWithIndex> {\n // Rather than perform a binary search on the model table to find each feature's model Id, traverse the model table in parallel with the feature table.\n let modelIndex = 0;\n const modelEntry = this._models.getEntry(modelIndex, scratchPackedFeatureModelEntry);\n\n for (let featureIndex = 0; featureIndex < this.numFeatures; featureIndex++) {\n if (featureIndex > modelEntry.lastFeatureIndex)\n this._models.getEntry(++modelIndex, modelEntry);\n\n this._features.getPackedFeature(featureIndex, output);\n output.modelId.lower = modelEntry.idLower;\n output.modelId.upper = modelEntry.idUpper;\n output.index = featureIndex;\n yield output;\n }\n }\n\n public iterable(output: PackedFeatureWithIndex): Iterable<PackedFeatureWithIndex> {\n return {\n [Symbol.iterator]: () => this.iterator(output),\n };\n }\n\n public getAnimationNodeId(featureIndex: number): number {\n return this._features.getAnimationNodeId(featureIndex);\n }\n\n public populateAnimationNodeIds(computeNodeId: ComputeNodeId, maxNodeId: number): void {\n this._features.animationNodeIds = populateAnimationNodeIds(this, computeNodeId, maxNodeId);\n }\n}\n"]}
@@ -98,6 +98,24 @@ export interface RenderMaterialAssetMapsProps {
98
98
  * present in the surface's geometry.
99
99
  */
100
100
  Normal?: NormalMapProps;
101
+ /** Maps an image describing detailed minor height variation of the surface geometry. */
102
+ Bump?: TextureMapProps;
103
+ /** Maps an image describing the diffuse color of the surface, replacing or mixing with the surface's own color. */
104
+ Diffuse?: TextureMapProps;
105
+ /** Maps an image describing the glossiness of the surface's finish */
106
+ Finish?: TextureMapProps;
107
+ /** Maps an image describing glowing parts of the surface */
108
+ GlowColor?: TextureMapProps;
109
+ /** Maps an image describing the reflectiveness of the surface */
110
+ Reflect?: TextureMapProps;
111
+ /** Maps an image describing the specular component of the surface */
112
+ Specular?: TextureMapProps;
113
+ /** Maps an image describing the translucency of the surface, how much light comes out the back of the surface */
114
+ TranslucencyColor?: TextureMapProps;
115
+ /** Maps an image describing the transparency of the surface, how visible objects behind this object are */
116
+ TransparentColor?: TextureMapProps;
117
+ /** Maps an image describing the displacement of the surface geometry */
118
+ Displacement?: TextureMapProps;
101
119
  }
102
120
  /** Describes the graphical properties of a [RenderMaterialElement]($backend) as part of a [[RenderMaterialProps]].
103
121
  * This representation is used to persist the material properties into the [IModelDb]($backend), but is unwieldy and verbose.
@@ -1 +1 @@
1
- {"version":3,"file":"MaterialProps.d.ts","sourceRoot":"","sources":["../../src/MaterialProps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"MaterialProps.d.ts","sourceRoot":"","sources":["../../src/MaterialProps.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"MaterialProps.js","sourceRoot":"","sources":["../../src/MaterialProps.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAqBH;;;GAGG;AACH,IAAY,eAOX;AAPD,WAAY,eAAe;IACzB,wCAAwC;IACxC,6DAAY,CAAA;IACZ,yDAAU,CAAA;IACV,mEAAe,CAAA;IACf,qDAAQ,CAAA;IACR,yDAAU,CAAA;AACZ,CAAC,EAPW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAO1B;AAwCD;;GAEG;AACH,IAAY,cASX;AATD,WAAY,cAAc;IACxB,wBAAwB;IACxB,mDAAQ,CAAA;IACR;;OAEG;IACH,yDAAgB,CAAA;IAChB,uFAAuF;IACvF,uEAAuB,CAAA;AACzB,CAAC,EATW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QASzB","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 { DefinitionElementProps } from \"./ElementProps\";\nimport { TextureMapping } from \"./TextureMapping\";\n\n/** Describes a color as an array of three numbers ranging from 0 to 1 where the first entry corresponds to the color's red component,\n * the second to green, and the third to blue.\n * @see usage in [[RenderMaterialAssetProps]].\n * @public\n * @extensions\n */\nexport type RgbFactorProps = number[];\n\n/** A 2d point specified as an array of 2 numbers [x, y].\n * @see usage in [[TextureMapProps]].\n * @public\n * @extensions\n */\nexport type Point2dProps = number[];\n\n/** Describes the units in which a [[TextureMapProps]]' scale is expressed.\n * @public\n * @extensions\n */\nexport enum TextureMapUnits {\n /** Indicates the scale has no units. */\n Relative = 0,\n Meters = 3,\n Millimeters = 4,\n Feet = 5,\n Inches = 6,\n}\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\n/** As part of a [[RenderMaterialAssetProps]], describes how to map a [[RenderTexture]]'s image to the triangles of a mesh to which the material is applied.\n * @see [[RenderMaterialAssetMapsProps]] for the supported types of texture mappings.\n * @public\n * @extensions\n */\nexport interface TextureMapProps {\n /** Angle in degrees to rotate texture when applying; defaults to 0.0 if undefined */\n pattern_angle?: number;\n /** If true, flip the pattern map in U; if undefined, defaults to false */\n pattern_u_flip?: boolean;\n /** If true, flip the pattern map in V; if undefined, defaults to false */\n pattern_flip?: boolean;\n /** X, Y scale to apply to the pattern map; if undefined, defaults to {0,0}, which is almost never useful. */\n pattern_scale?: Point2dProps;\n /** X, Y offset to apply to the pattern map; if undefined, defaults to {0,0} */\n pattern_offset?: Point2dProps;\n /** Units to use when applying the scaling; if undefined, defaults to [[TextureMapUnits.Relative]] */\n pattern_scalemode?: TextureMapUnits;\n /** Mapping mode to use for the texture application; if undefined, defaults to [[TextureMapping.Mode.Parametric]] */\n pattern_mapping?: TextureMapping.Mode;\n /** Weight at which to combine diffuse image and color; if undefined, defaults to 1.0 */\n pattern_weight?: number;\n /** If true, override the mapping mode with constant LOD mapping for the normal map, defaults to false. */\n pattern_useConstantLod?: boolean;\n /** The number of times the texture is repeated if pattern_useConstantLod is true. Increasing this will make the texture pattern appear smaller, decreasing it will make it larger. Defaults to 1.*/\n pattern_constantlod_repetitions?: number;\n /** An offset in world units used to shift the texture when pattern_useConstantLod is true. Defaults to (0, 0). */\n pattern_constantlod_offset?: Point2dProps;\n /** The minimum distance (from the eye to the surface) at which to clamp the texture size when pattern_useConstantLod is true. Defaults to 1. */\n pattern_constantlod_mindistanceclamp?: number;\n /** The maximum distance (from the eye to the surface) at which to clamp the texture size when pattern_useConstantLod is true. Defaults to 2^32. */\n pattern_constantlod_maxdistanceclamp?: number;\n /** The Id of the persistent [Texture]($backend) element defining the texture image. */\n TextureId: Id64String;\n}\n\n/** Flags applied to a [[NormalMapProps]]. The enum values can be combined using bitwise operators.\n * @public\n */\nexport enum NormalMapFlags {\n /** No special flags. */\n None = 0,\n /** Indicates that the Y component of each vector - stored in the texture's green channel - points upward along the positive Y axis and should\n * be negated. By default it points downward.\n */\n GreenUp = 1 << 0,\n /** If true, override the mapping mode with constant LOD mapping for the normal map. */\n UseConstantLod = 1 << 1,\n}\n\n/** Describes how to apply [normal mapping](https://en.wikipedia.org/wiki/Normal_mapping) to a surface material.\n * @see [[RenderMaterialAssetMapsProps.Normal]] to define a normal map for a [[RenderMaterialAssetProps]].\n * @public\n */\nexport interface NormalMapProps extends TextureMapProps {\n /** Flags controlling how the normal map is applied. Default: [[NormalMapFlags.None]]. */\n NormalFlags?: NormalMapFlags;\n}\n\n/** Describes different types of textures to be applied to a surface material to alter its appearance.\n * @note While technically both [[Pattern]] and [[Normal]] can define their own mapping parameters (`pattern_angle`, `pattern_mapping`, etc), in practice\n * if both maps are present they are expected to have identical mapping parameters, with the exception of `TextureId`.\n * @see [[RenderMaterialAssetProps.Map]] to define the texture maps for a material asset.\n * @public\n */\nexport interface RenderMaterialAssetMapsProps {\n /** Maps an image describing the diffuse color of the surface, replacing or mixing with the surface's own color. */\n Pattern?: TextureMapProps;\n /** Maps a [normal map](https://en.wikipedia.org/wiki/Normal_mapping) to the surface, simulating more complex surface details than are\n * present in the surface's geometry.\n */\n Normal?: NormalMapProps;\n}\n\n/** Describes the graphical properties of a [RenderMaterialElement]($backend) as part of a [[RenderMaterialProps]].\n * This representation is used to persist the material properties into the [IModelDb]($backend), but is unwieldy and verbose.\n * @see [RenderMaterialElementParams]($backend) for a somewhat more ergonomic representation.\n * @public\n * @extensions\n */\nexport interface RenderMaterialAssetProps {\n /** If true, this material has a fill/diffuse color; if undefined, defaults to false */\n HasBaseColor?: boolean;\n /** Surface color used for fill or diffuse illumination; if undefined, defaults to black */\n color?: RgbFactorProps;\n /** If true, this material has a specular color; if undefined, defaults to false */\n HasSpecularColor?: boolean;\n /** Surface color used for specular illumination; if undefined, defaults to black */\n specular_color?: RgbFactorProps;\n /** If true, this material has a specular exponent; if undefined, defaults to false */\n HasFinish?: boolean;\n /** Specular exponent (surface shininess); range is 0 to 128; if undefined, defaults to 13.5 */\n finish?: number;\n /** If true, this material has surface transparency; if undefined, defaults to false */\n HasTransmit?: boolean;\n /** Surface transparency; if undefined, defaults to 0.0 */\n transmit?: number;\n /** If true, this material has a value for diffuse reflectivity; if undefined, defaults to false */\n HasDiffuse?: boolean;\n /** Surface diffuse reflectivity; if undefined, defaults to 0.6 */\n diffuse?: number;\n /** If true, this material has a value for specular reflectivity; if undefined, defaults to false. If false, specular value is actually set to 0.0 */\n HasSpecular?: boolean;\n /** Surface specular reflectivity; if undefined, defaults to 0.4 */\n specular?: number;\n /** If true, this material has a value for environmental reflectivity; if undefined, defaults to false */\n HasReflect?: boolean;\n /** Surface environmental reflectivity; stored as fraction of specular in V8 material settings; if undefined defaults to 0.0 */\n reflect?: number;\n /** If true, this material has a surface reflectance color; if undefined, defaults to false. If false, reflectance color is actually set to specular color */\n HasReflectColor?: boolean;\n /** Surface reflectance color; if undefined, defaults to black */\n reflect_color?: RgbFactorProps;\n /** A scale by which to multiply the components of the normals read from [[Map.Normal]], if a normal map is defined.\n * Default: 1.0\n */\n pbr_normal?: number;\n /** An optional set of texture maps associated with this material. */\n Map?: RenderMaterialAssetMapsProps;\n}\n\n/** Properties that define a [RenderMaterialElement]($backend).\n * @see [[RenderMaterial]] for the representation used by the display system.\n * @public\n * @extensions\n */\nexport interface RenderMaterialProps extends DefinitionElementProps {\n /** The name of a palette that can be used to categorize multiple materials. */\n paletteName: string;\n /** An optional description of the material. */\n description?: string;\n jsonProperties?: {\n /** A container for various \"assets\" describing aspects of the material. */\n materialAssets?: {\n /** Properties of the material describing how it is displayed. */\n renderMaterial?: RenderMaterialAssetProps;\n };\n };\n}\n"]}
1
+ {"version":3,"file":"MaterialProps.js","sourceRoot":"","sources":["../../src/MaterialProps.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAqBH;;;GAGG;AACH,IAAY,eAOX;AAPD,WAAY,eAAe;IACzB,wCAAwC;IACxC,6DAAY,CAAA;IACZ,yDAAU,CAAA;IACV,mEAAe,CAAA;IACf,qDAAQ,CAAA;IACR,yDAAU,CAAA;AACZ,CAAC,EAPW,eAAe,GAAf,uBAAe,KAAf,uBAAe,QAO1B;AAwCD;;GAEG;AACH,IAAY,cASX;AATD,WAAY,cAAc;IACxB,wBAAwB;IACxB,mDAAQ,CAAA;IACR;;OAEG;IACH,yDAAgB,CAAA;IAChB,uFAAuF;IACvF,uEAAuB,CAAA;AACzB,CAAC,EATW,cAAc,GAAd,sBAAc,KAAd,sBAAc,QASzB","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 { DefinitionElementProps } from \"./ElementProps\";\nimport { TextureMapping } from \"./TextureMapping\";\n\n/** Describes a color as an array of three numbers ranging from 0 to 1 where the first entry corresponds to the color's red component,\n * the second to green, and the third to blue.\n * @see usage in [[RenderMaterialAssetProps]].\n * @public\n * @extensions\n */\nexport type RgbFactorProps = number[];\n\n/** A 2d point specified as an array of 2 numbers [x, y].\n * @see usage in [[TextureMapProps]].\n * @public\n * @extensions\n */\nexport type Point2dProps = number[];\n\n/** Describes the units in which a [[TextureMapProps]]' scale is expressed.\n * @public\n * @extensions\n */\nexport enum TextureMapUnits {\n /** Indicates the scale has no units. */\n Relative = 0,\n Meters = 3,\n Millimeters = 4,\n Feet = 5,\n Inches = 6,\n}\n\n/* eslint-disable @typescript-eslint/naming-convention */\n\n/** As part of a [[RenderMaterialAssetProps]], describes how to map a [[RenderTexture]]'s image to the triangles of a mesh to which the material is applied.\n * @see [[RenderMaterialAssetMapsProps]] for the supported types of texture mappings.\n * @public\n * @extensions\n */\nexport interface TextureMapProps {\n /** Angle in degrees to rotate texture when applying; defaults to 0.0 if undefined */\n pattern_angle?: number;\n /** If true, flip the pattern map in U; if undefined, defaults to false */\n pattern_u_flip?: boolean;\n /** If true, flip the pattern map in V; if undefined, defaults to false */\n pattern_flip?: boolean;\n /** X, Y scale to apply to the pattern map; if undefined, defaults to {0,0}, which is almost never useful. */\n pattern_scale?: Point2dProps;\n /** X, Y offset to apply to the pattern map; if undefined, defaults to {0,0} */\n pattern_offset?: Point2dProps;\n /** Units to use when applying the scaling; if undefined, defaults to [[TextureMapUnits.Relative]] */\n pattern_scalemode?: TextureMapUnits;\n /** Mapping mode to use for the texture application; if undefined, defaults to [[TextureMapping.Mode.Parametric]] */\n pattern_mapping?: TextureMapping.Mode;\n /** Weight at which to combine diffuse image and color; if undefined, defaults to 1.0 */\n pattern_weight?: number;\n /** If true, override the mapping mode with constant LOD mapping for the normal map, defaults to false. */\n pattern_useConstantLod?: boolean;\n /** The number of times the texture is repeated if pattern_useConstantLod is true. Increasing this will make the texture pattern appear smaller, decreasing it will make it larger. Defaults to 1.*/\n pattern_constantlod_repetitions?: number;\n /** An offset in world units used to shift the texture when pattern_useConstantLod is true. Defaults to (0, 0). */\n pattern_constantlod_offset?: Point2dProps;\n /** The minimum distance (from the eye to the surface) at which to clamp the texture size when pattern_useConstantLod is true. Defaults to 1. */\n pattern_constantlod_mindistanceclamp?: number;\n /** The maximum distance (from the eye to the surface) at which to clamp the texture size when pattern_useConstantLod is true. Defaults to 2^32. */\n pattern_constantlod_maxdistanceclamp?: number;\n /** The Id of the persistent [Texture]($backend) element defining the texture image. */\n TextureId: Id64String;\n}\n\n/** Flags applied to a [[NormalMapProps]]. The enum values can be combined using bitwise operators.\n * @public\n */\nexport enum NormalMapFlags {\n /** No special flags. */\n None = 0,\n /** Indicates that the Y component of each vector - stored in the texture's green channel - points upward along the positive Y axis and should\n * be negated. By default it points downward.\n */\n GreenUp = 1 << 0,\n /** If true, override the mapping mode with constant LOD mapping for the normal map. */\n UseConstantLod = 1 << 1,\n}\n\n/** Describes how to apply [normal mapping](https://en.wikipedia.org/wiki/Normal_mapping) to a surface material.\n * @see [[RenderMaterialAssetMapsProps.Normal]] to define a normal map for a [[RenderMaterialAssetProps]].\n * @public\n */\nexport interface NormalMapProps extends TextureMapProps {\n /** Flags controlling how the normal map is applied. Default: [[NormalMapFlags.None]]. */\n NormalFlags?: NormalMapFlags;\n}\n\n/** Describes different types of textures to be applied to a surface material to alter its appearance.\n * @note While technically both [[Pattern]] and [[Normal]] can define their own mapping parameters (`pattern_angle`, `pattern_mapping`, etc), in practice\n * if both maps are present they are expected to have identical mapping parameters, with the exception of `TextureId`.\n * @see [[RenderMaterialAssetProps.Map]] to define the texture maps for a material asset.\n * @public\n */\nexport interface RenderMaterialAssetMapsProps {\n /** Maps an image describing the diffuse color of the surface, replacing or mixing with the surface's own color. */\n Pattern?: TextureMapProps;\n /** Maps a [normal map](https://en.wikipedia.org/wiki/Normal_mapping) to the surface, simulating more complex surface details than are\n * present in the surface's geometry.\n */\n Normal?: NormalMapProps;\n /** Maps an image describing detailed minor height variation of the surface geometry. */\n Bump?: TextureMapProps;\n /** Maps an image describing the diffuse color of the surface, replacing or mixing with the surface's own color. */\n Diffuse?: TextureMapProps;\n /** Maps an image describing the glossiness of the surface's finish */\n Finish?: TextureMapProps;\n /** Maps an image describing glowing parts of the surface */\n GlowColor?: TextureMapProps;\n /** Maps an image describing the reflectiveness of the surface */\n Reflect?: TextureMapProps;\n /** Maps an image describing the specular component of the surface */\n Specular?: TextureMapProps;\n /** Maps an image describing the translucency of the surface, how much light comes out the back of the surface */\n TranslucencyColor?: TextureMapProps;\n /** Maps an image describing the transparency of the surface, how visible objects behind this object are */\n TransparentColor?: TextureMapProps;\n /** Maps an image describing the displacement of the surface geometry */\n Displacement?: TextureMapProps;\n}\n\n/** Describes the graphical properties of a [RenderMaterialElement]($backend) as part of a [[RenderMaterialProps]].\n * This representation is used to persist the material properties into the [IModelDb]($backend), but is unwieldy and verbose.\n * @see [RenderMaterialElementParams]($backend) for a somewhat more ergonomic representation.\n * @public\n * @extensions\n */\nexport interface RenderMaterialAssetProps {\n /** If true, this material has a fill/diffuse color; if undefined, defaults to false */\n HasBaseColor?: boolean;\n /** Surface color used for fill or diffuse illumination; if undefined, defaults to black */\n color?: RgbFactorProps;\n /** If true, this material has a specular color; if undefined, defaults to false */\n HasSpecularColor?: boolean;\n /** Surface color used for specular illumination; if undefined, defaults to black */\n specular_color?: RgbFactorProps;\n /** If true, this material has a specular exponent; if undefined, defaults to false */\n HasFinish?: boolean;\n /** Specular exponent (surface shininess); range is 0 to 128; if undefined, defaults to 13.5 */\n finish?: number;\n /** If true, this material has surface transparency; if undefined, defaults to false */\n HasTransmit?: boolean;\n /** Surface transparency; if undefined, defaults to 0.0 */\n transmit?: number;\n /** If true, this material has a value for diffuse reflectivity; if undefined, defaults to false */\n HasDiffuse?: boolean;\n /** Surface diffuse reflectivity; if undefined, defaults to 0.6 */\n diffuse?: number;\n /** If true, this material has a value for specular reflectivity; if undefined, defaults to false. If false, specular value is actually set to 0.0 */\n HasSpecular?: boolean;\n /** Surface specular reflectivity; if undefined, defaults to 0.4 */\n specular?: number;\n /** If true, this material has a value for environmental reflectivity; if undefined, defaults to false */\n HasReflect?: boolean;\n /** Surface environmental reflectivity; stored as fraction of specular in V8 material settings; if undefined defaults to 0.0 */\n reflect?: number;\n /** If true, this material has a surface reflectance color; if undefined, defaults to false. If false, reflectance color is actually set to specular color */\n HasReflectColor?: boolean;\n /** Surface reflectance color; if undefined, defaults to black */\n reflect_color?: RgbFactorProps;\n /** A scale by which to multiply the components of the normals read from [[Map.Normal]], if a normal map is defined.\n * Default: 1.0\n */\n pbr_normal?: number;\n /** An optional set of texture maps associated with this material. */\n Map?: RenderMaterialAssetMapsProps;\n}\n\n/** Properties that define a [RenderMaterialElement]($backend).\n * @see [[RenderMaterial]] for the representation used by the display system.\n * @public\n * @extensions\n */\nexport interface RenderMaterialProps extends DefinitionElementProps {\n /** The name of a palette that can be used to categorize multiple materials. */\n paletteName: string;\n /** An optional description of the material. */\n description?: string;\n jsonProperties?: {\n /** A container for various \"assets\" describing aspects of the material. */\n materialAssets?: {\n /** Properties of the material describing how it is displayed. */\n renderMaterial?: RenderMaterialAssetProps;\n };\n };\n}\n"]}
@@ -44,5 +44,7 @@ export declare class PlanProjectionSettings {
44
44
  * @returns A PlanProjectionSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.
45
45
  */
46
46
  clone(changedProps?: PlanProjectionSettingsProps): PlanProjectionSettings;
47
+ /** Return true if these settings are equivalent to the specified settings. */
48
+ equals(other: PlanProjectionSettings): boolean;
47
49
  }
48
50
  //# sourceMappingURL=PlanProjectionSettings.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanProjectionSettings.d.ts","sourceRoot":"","sources":["../../src/PlanProjectionSettings.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4JAA4J;IAC5J,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wJAAwJ;IACxJ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;GAMG;AACH,qBAAa,sBAAsB;IACjC,oDAAoD;IACpD,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnC,uDAAuD;IACvD,SAAgB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtC,kDAAkD;IAClD,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,iEAAiE;IACjE,SAAgB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAE1C,MAAM,IAAI,2BAA2B;WAS9B,QAAQ,CAAC,KAAK,EAAE,2BAA2B,GAAG,SAAS,GAAG,sBAAsB,GAAG,SAAS;IAU1G,gBAAgB;gBACG,KAAK,EAAE,2BAA2B;IAYrD;;;OAGG;IACI,KAAK,CAAC,YAAY,CAAC,EAAE,2BAA2B,GAAG,sBAAsB;CAmBjF"}
1
+ {"version":3,"file":"PlanProjectionSettings.d.ts","sourceRoot":"","sources":["../../src/PlanProjectionSettings.ts"],"names":[],"mappings":"AAIA;;GAEG;AAEH;;;GAGG;AACH,MAAM,WAAW,2BAA2B;IAC1C,+EAA+E;IAC/E,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,4JAA4J;IAC5J,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,wJAAwJ;IACxJ,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB;;;;OAIG;IACH,sBAAsB,CAAC,EAAE,OAAO,CAAC;CAClC;AAED;;;;;;GAMG;AACH,qBAAa,sBAAsB;IACjC,oDAAoD;IACpD,SAAgB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnC,uDAAuD;IACvD,SAAgB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtC,kDAAkD;IAClD,SAAgB,OAAO,EAAE,OAAO,CAAC;IACjC,iEAAiE;IACjE,SAAgB,sBAAsB,CAAC,EAAE,OAAO,CAAC;IAE1C,MAAM,IAAI,2BAA2B;WAS9B,QAAQ,CAAC,KAAK,EAAE,2BAA2B,GAAG,SAAS,GAAG,sBAAsB,GAAG,SAAS;IAU1G,gBAAgB;gBACG,KAAK,EAAE,2BAA2B;IAYrD;;;OAGG;IACI,KAAK,CAAC,YAAY,CAAC,EAAE,2BAA2B,GAAG,sBAAsB;IAoBhF,8EAA8E;IACvE,MAAM,CAAC,KAAK,EAAE,sBAAsB,GAAG,OAAO;CAMtD"}
@@ -59,6 +59,12 @@ class PlanProjectionSettings {
59
59
  props.enforceDisplayPriority = changedProps.enforceDisplayPriority;
60
60
  return new PlanProjectionSettings(props);
61
61
  }
62
+ /** Return true if these settings are equivalent to the specified settings. */
63
+ equals(other) {
64
+ if (this === other)
65
+ return true;
66
+ return this.elevation === other.elevation && this.transparency === other.transparency && this.overlay === other.overlay && this.enforceDisplayPriority === other.enforceDisplayPriority;
67
+ }
62
68
  }
63
69
  exports.PlanProjectionSettings = PlanProjectionSettings;
64
70
  //# sourceMappingURL=PlanProjectionSettings.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"PlanProjectionSettings.js","sourceRoot":"","sources":["../../src/PlanProjectionSettings.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAqBH;;;;;;GAMG;AACH,MAAa,sBAAsB;IAU1B,MAAM;QACX,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACjD,sBAAsB,EAAE,IAAI,KAAK,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SAChF,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,KAA8C;QACnE,IAAI,SAAS,KAAK,KAAK;YACrB,OAAO,SAAS,CAAC;QAEnB,IAAI,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,SAAS,KAAK,KAAK,CAAC,YAAY,IAAI,SAAS,KAAK,KAAK,CAAC,OAAO,IAAI,SAAS,KAAK,KAAK,CAAC,sBAAsB;YAChJ,OAAO,SAAS,CAAC;QAEnB,OAAO,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,gBAAgB;IAChB,YAAmB,KAAkC;QACnD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,sBAAsB,GAAG,IAAI,KAAK,KAAK,CAAC,sBAAsB,CAAC;QAEpE,IAAI,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACtC,IAAI,SAAS,KAAK,YAAY;YAC5B,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;QAExD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,YAA0C;QACrD,IAAI,SAAS,KAAK,YAAY;YAC5B,OAAO,IAAI,CAAC;QAEd,MAAM,KAAK,GAAgC,IAAI,CAAC,MAAM,EAAE,CAAC;QACzD,IAAI,SAAS,KAAK,YAAY,CAAC,SAAS;YACtC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;QAE3C,IAAI,SAAS,KAAK,YAAY,CAAC,YAAY;YACzC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;QAEjD,IAAI,SAAS,KAAK,YAAY,CAAC,OAAO;YACpC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;QAEvC,IAAI,SAAS,KAAK,YAAY,CAAC,sBAAsB;YACnD,KAAK,CAAC,sBAAsB,GAAG,YAAY,CAAC,sBAAsB,CAAC;QAErE,OAAO,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;CACF;AAjED,wDAiEC","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 DisplayStyles\n */\n\n/** Wire format describing [[PlanProjectionSettings]].\n * @public\n * @extensions\n */\nexport interface PlanProjectionSettingsProps {\n /** If defined, the absolute height in meters at which to display the model. */\n elevation?: number;\n /** If defined, specifies a uniform transparency applied to all of the geometry in the model, in the range 0.0 (fully opaque) to 1.0 (fully transparent). */\n transparency?: number;\n /** If defined and true, the model is displayed as an overlay in the view (without depth testing) so that it is always visible behind other geometry. */\n overlay?: boolean;\n /** If defined and true, subcategory display priority is used to specify the draw order of portions of the model. Geometry belonging to a subcategory with a higher priority\n * value is drawn on top of coincident geometry belonging to a subcategory with a lower priority value. The priorities can be modified at display time using\n * [FeatureSymbology.Overrides]($frontend). Note that subcategory \"layers\" cross model boundaries; that is, geometry belonging to the same subcategory in different models\n * are drawn as part of the same layer.\n */\n enforceDisplayPriority?: boolean;\n}\n\n/** Describes how to draw a plan projection model. A plan projection model is a [GeometricModel3d]($backend) whose geometry all lies in\n * a single XY plane, wherein the Z coordinate of the plane may be arbitrary or flexible. Multiple plan projection models can be combined into one view\n * and drawn as \"layers\" with relative priorities.\n * @see [[DisplayStyle3dSettings.setPlanProjectionSettings]] to define plan projection settings for a [DisplayStyle3dState]($frontend).\n * @see [GeometricModel3d.isPlanProjection]($backend).\n * @public\n */\nexport class PlanProjectionSettings {\n /** See [[PlanProjectionSettingsProps.elevation]] */\n public readonly elevation?: number;\n /** See [[PlanProjectionSettingsProps.transparency]] */\n public readonly transparency?: number;\n /** See [[PlanProjectionSettingsProps.overlay]] */\n public readonly overlay: boolean;\n /** See [[PlanProjectionSettingsProps.enforceDisplayPriority]] */\n public readonly enforceDisplayPriority?: boolean;\n\n public toJSON(): PlanProjectionSettingsProps {\n return {\n elevation: this.elevation,\n transparency: this.transparency,\n overlay: true === this.overlay ? true : undefined,\n enforceDisplayPriority: true === this.enforceDisplayPriority ? true : undefined,\n };\n }\n\n public static fromJSON(props: PlanProjectionSettingsProps | undefined): PlanProjectionSettings | undefined {\n if (undefined === props)\n return undefined;\n\n if (undefined === props.elevation && undefined === props.transparency && undefined === props.overlay && undefined === props.enforceDisplayPriority)\n return undefined;\n\n return new PlanProjectionSettings(props);\n }\n\n /** @internal */\n public constructor(props: PlanProjectionSettingsProps) {\n this.elevation = props.elevation;\n this.overlay = true === props.overlay;\n this.enforceDisplayPriority = true === props.enforceDisplayPriority;\n\n let transparency = props.transparency;\n if (undefined !== transparency)\n transparency = Math.max(0, Math.min(1, transparency));\n\n this.transparency = transparency;\n }\n\n /** Create a copy of this PlanProjectionSettings, optionally modifying some of its properties.\n * @param changedProps JSON representation of the properties to change.\n * @returns A PlanProjectionSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\n */\n public clone(changedProps?: PlanProjectionSettingsProps): PlanProjectionSettings {\n if (undefined === changedProps)\n return this;\n\n const props: PlanProjectionSettingsProps = this.toJSON();\n if (undefined !== changedProps.elevation)\n props.elevation = changedProps.elevation;\n\n if (undefined !== changedProps.transparency)\n props.transparency = changedProps.transparency;\n\n if (undefined !== changedProps.overlay)\n props.overlay = changedProps.overlay;\n\n if (undefined !== changedProps.enforceDisplayPriority)\n props.enforceDisplayPriority = changedProps.enforceDisplayPriority;\n\n return new PlanProjectionSettings(props);\n }\n}\n"]}
1
+ {"version":3,"file":"PlanProjectionSettings.js","sourceRoot":"","sources":["../../src/PlanProjectionSettings.ts"],"names":[],"mappings":";AAAA;;;+FAG+F;AAC/F;;GAEG;;;AAqBH;;;;;;GAMG;AACH,MAAa,sBAAsB;IAU1B,MAAM;QACX,OAAO;YACL,SAAS,EAAE,IAAI,CAAC,SAAS;YACzB,YAAY,EAAE,IAAI,CAAC,YAAY;YAC/B,OAAO,EAAE,IAAI,KAAK,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;YACjD,sBAAsB,EAAE,IAAI,KAAK,IAAI,CAAC,sBAAsB,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,SAAS;SAChF,CAAC;IACJ,CAAC;IAEM,MAAM,CAAC,QAAQ,CAAC,KAA8C;QACnE,IAAI,SAAS,KAAK,KAAK;YACrB,OAAO,SAAS,CAAC;QAEnB,IAAI,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,SAAS,KAAK,KAAK,CAAC,YAAY,IAAI,SAAS,KAAK,KAAK,CAAC,OAAO,IAAI,SAAS,KAAK,KAAK,CAAC,sBAAsB;YAChJ,OAAO,SAAS,CAAC;QAEnB,OAAO,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,gBAAgB;IAChB,YAAmB,KAAkC;QACnD,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC,SAAS,CAAC;QACjC,IAAI,CAAC,OAAO,GAAG,IAAI,KAAK,KAAK,CAAC,OAAO,CAAC;QACtC,IAAI,CAAC,sBAAsB,GAAG,IAAI,KAAK,KAAK,CAAC,sBAAsB,CAAC;QAEpE,IAAI,YAAY,GAAG,KAAK,CAAC,YAAY,CAAC;QACtC,IAAI,SAAS,KAAK,YAAY;YAC5B,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,YAAY,CAAC,CAAC,CAAC;QAExD,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;IAED;;;OAGG;IACI,KAAK,CAAC,YAA0C;QACrD,IAAI,SAAS,KAAK,YAAY;YAC5B,OAAO,IAAI,CAAC;QAEd,MAAM,KAAK,GAAgC,IAAI,CAAC,MAAM,EAAE,CAAC;QACzD,IAAI,SAAS,KAAK,YAAY,CAAC,SAAS;YACtC,KAAK,CAAC,SAAS,GAAG,YAAY,CAAC,SAAS,CAAC;QAE3C,IAAI,SAAS,KAAK,YAAY,CAAC,YAAY;YACzC,KAAK,CAAC,YAAY,GAAG,YAAY,CAAC,YAAY,CAAC;QAEjD,IAAI,SAAS,KAAK,YAAY,CAAC,OAAO;YACpC,KAAK,CAAC,OAAO,GAAG,YAAY,CAAC,OAAO,CAAC;QAEvC,IAAI,SAAS,KAAK,YAAY,CAAC,sBAAsB;YACnD,KAAK,CAAC,sBAAsB,GAAG,YAAY,CAAC,sBAAsB,CAAC;QAErE,OAAO,IAAI,sBAAsB,CAAC,KAAK,CAAC,CAAC;IAC3C,CAAC;IAED,8EAA8E;IACvE,MAAM,CAAC,KAA6B;QACzC,IAAI,IAAI,KAAK,KAAK;YAChB,OAAO,IAAI,CAAC;QAEd,OAAO,IAAI,CAAC,SAAS,KAAK,KAAK,CAAC,SAAS,IAAI,IAAI,CAAC,YAAY,KAAK,KAAK,CAAC,YAAY,IAAI,IAAI,CAAC,OAAO,KAAK,KAAK,CAAC,OAAO,IAAI,IAAI,CAAC,sBAAsB,KAAK,KAAK,CAAC,sBAAsB,CAAC;IAC1L,CAAC;CACF;AAzED,wDAyEC","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 DisplayStyles\n */\n\n/** Wire format describing [[PlanProjectionSettings]].\n * @public\n * @extensions\n */\nexport interface PlanProjectionSettingsProps {\n /** If defined, the absolute height in meters at which to display the model. */\n elevation?: number;\n /** If defined, specifies a uniform transparency applied to all of the geometry in the model, in the range 0.0 (fully opaque) to 1.0 (fully transparent). */\n transparency?: number;\n /** If defined and true, the model is displayed as an overlay in the view (without depth testing) so that it is always visible behind other geometry. */\n overlay?: boolean;\n /** If defined and true, subcategory display priority is used to specify the draw order of portions of the model. Geometry belonging to a subcategory with a higher priority\n * value is drawn on top of coincident geometry belonging to a subcategory with a lower priority value. The priorities can be modified at display time using\n * [FeatureSymbology.Overrides]($frontend). Note that subcategory \"layers\" cross model boundaries; that is, geometry belonging to the same subcategory in different models\n * are drawn as part of the same layer.\n */\n enforceDisplayPriority?: boolean;\n}\n\n/** Describes how to draw a plan projection model. A plan projection model is a [GeometricModel3d]($backend) whose geometry all lies in\n * a single XY plane, wherein the Z coordinate of the plane may be arbitrary or flexible. Multiple plan projection models can be combined into one view\n * and drawn as \"layers\" with relative priorities.\n * @see [[DisplayStyle3dSettings.setPlanProjectionSettings]] to define plan projection settings for a [DisplayStyle3dState]($frontend).\n * @see [GeometricModel3d.isPlanProjection]($backend).\n * @public\n */\nexport class PlanProjectionSettings {\n /** See [[PlanProjectionSettingsProps.elevation]] */\n public readonly elevation?: number;\n /** See [[PlanProjectionSettingsProps.transparency]] */\n public readonly transparency?: number;\n /** See [[PlanProjectionSettingsProps.overlay]] */\n public readonly overlay: boolean;\n /** See [[PlanProjectionSettingsProps.enforceDisplayPriority]] */\n public readonly enforceDisplayPriority?: boolean;\n\n public toJSON(): PlanProjectionSettingsProps {\n return {\n elevation: this.elevation,\n transparency: this.transparency,\n overlay: true === this.overlay ? true : undefined,\n enforceDisplayPriority: true === this.enforceDisplayPriority ? true : undefined,\n };\n }\n\n public static fromJSON(props: PlanProjectionSettingsProps | undefined): PlanProjectionSettings | undefined {\n if (undefined === props)\n return undefined;\n\n if (undefined === props.elevation && undefined === props.transparency && undefined === props.overlay && undefined === props.enforceDisplayPriority)\n return undefined;\n\n return new PlanProjectionSettings(props);\n }\n\n /** @internal */\n public constructor(props: PlanProjectionSettingsProps) {\n this.elevation = props.elevation;\n this.overlay = true === props.overlay;\n this.enforceDisplayPriority = true === props.enforceDisplayPriority;\n\n let transparency = props.transparency;\n if (undefined !== transparency)\n transparency = Math.max(0, Math.min(1, transparency));\n\n this.transparency = transparency;\n }\n\n /** Create a copy of this PlanProjectionSettings, optionally modifying some of its properties.\n * @param changedProps JSON representation of the properties to change.\n * @returns A PlanProjectionSettings with all of its properties set to match those of `this`, except those explicitly defined in `changedProps`.\n */\n public clone(changedProps?: PlanProjectionSettingsProps): PlanProjectionSettings {\n if (undefined === changedProps)\n return this;\n\n const props: PlanProjectionSettingsProps = this.toJSON();\n if (undefined !== changedProps.elevation)\n props.elevation = changedProps.elevation;\n\n if (undefined !== changedProps.transparency)\n props.transparency = changedProps.transparency;\n\n if (undefined !== changedProps.overlay)\n props.overlay = changedProps.overlay;\n\n if (undefined !== changedProps.enforceDisplayPriority)\n props.enforceDisplayPriority = changedProps.enforceDisplayPriority;\n\n return new PlanProjectionSettings(props);\n }\n\n /** Return true if these settings are equivalent to the specified settings. */\n public equals(other: PlanProjectionSettings): boolean {\n if (this === other)\n return true;\n\n return this.elevation === other.elevation && this.transparency === other.transparency && this.overlay === other.overlay && this.enforceDisplayPriority === other.enforceDisplayPriority;\n }\n}\n"]}
@@ -1,6 +1,6 @@
1
1
  import { Id64String } from "@itwin/core-bentley";
2
2
  import { Angle, GeometryQuery, Point2d, Point3d, Range3d, Transform, Vector3d, YawPitchRollAngles } from "@itwin/core-geometry";
3
- import { TextString, TextStringProps } from "./TextString";
3
+ import { TextString, TextStringGlyphData, TextStringProps } from "./TextString";
4
4
  import { GeometryParams } from "../GeometryParams";
5
5
  import { BRepEntity } from "./GeometryStream";
6
6
  import { ImageGraphic, ImageGraphicProps } from "./ImageGraphic";
@@ -108,7 +108,7 @@ export interface ElementGeometryRequest {
108
108
  * @beta
109
109
  */
110
110
  export interface ElementGeometryBuilderParams {
111
- /** The geometry stream data */
111
+ /** The geometry stream data. Calling update element with a zero length array will clear the geometry stream and invalidate the placement. */
112
112
  entryArray: ElementGeometryDataEntry[];
113
113
  /** If true, create geometry that displays oriented to face the camera */
114
114
  viewIndependent?: boolean;
@@ -371,8 +371,10 @@ export declare namespace ElementGeometry {
371
371
  function fromGeometryQuery(geom: GeometryQuery, worldToLocal?: Transform): ElementGeometryDataEntry | undefined;
372
372
  /** Return entry as a [[TextString]] */
373
373
  function toTextString(entry: ElementGeometryDataEntry, localToWorld?: Transform): TextStringProps | undefined;
374
+ /** Returns only the [[TextStringGlyphData]] embedded in the [[TextString]] flatbuffer. This data is only internal to the native display libaries. */
375
+ function toTextStringGlyphData(entry: ElementGeometryDataEntry): TextStringGlyphData | undefined;
374
376
  /** Create entry from a [[TextString]] */
375
- function fromTextString(text: TextStringProps, worldToLocal?: Transform): ElementGeometryDataEntry | undefined;
377
+ function fromTextString(text: TextStringProps, worldToLocal?: Transform, glyphs?: TextStringGlyphData): ElementGeometryDataEntry | undefined;
376
378
  /** Return entry as a [[ImageGraphic]] */
377
379
  function toImageGraphic(entry: ElementGeometryDataEntry, localToWorld?: Transform): ImageGraphicProps | undefined;
378
380
  /** Create entry from a [[ImageGraphic]] */
@@ -1 +1 @@
1
- {"version":3,"file":"ElementGeometry.d.ts","sourceRoot":"","sources":["../../../src/geometry/ElementGeometry.ts"],"names":[],"mappings":"AAQA,OAAO,EAAQ,UAAU,EAAE,MAAM,qBAAqB,CAAC;AACvD,OAAO,EAAE,KAAK,EAA+E,aAAa,EAA8D,OAAO,EAAE,OAAO,EAAwD,OAAO,EAAkB,SAAS,EAAE,QAAQ,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAG/U,OAAO,EAAE,UAAU,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAE3D,OAAO,EAA8C,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAI/F,OAAO,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAC9C,OAAO,EAAE,YAAY,EAAuB,iBAAiB,EAAE,MAAM,gBAAgB,CAAC;AAEtF,OAAO,EAAE,mBAAmB,EAAe,WAAW,EAAE,MAAM,aAAa,CAAC;AAC5E,OAAO,EAAsB,cAAc,EAAE,MAAM,iBAAiB,CAAC;AAErE;;;;GAIG;AACH,oBAAY,qBAAqB;IAC/B,0EAA0E;IAC1E,eAAe,IAAI;IACnB,iDAAiD;IACjD,aAAa,IAAI;IACjB,4FAA4F;IAC5F,cAAc,IAAI;IAClB,wJAAwJ;IACxJ,cAAc,IAAI;IAClB,2JAA2J;IAC3J,gBAAgB,IAAI;IACpB,2HAA2H;IAC3H,YAAY,IAAI;IAChB,wCAAwC;IAExC,eAAe,IAAI;IACnB,iCAAiC;IAEjC,QAAQ,IAAI;IACZ,uCAAuC;IACvC,cAAc,KAAK;IACnB,uCAAuC;IAEvC,cAAc,KAAK;IACnB,yCAAyC;IACzC,cAAc,KAAK;IACnB,qCAAqC;IACrC,IAAI,KAAK;IACT,8CAA8C;IAC9C,OAAO,KAAK;IACZ,yBAAyB;IACzB,QAAQ,KAAK;IACb,qBAAqB;IAErB,UAAU,KAAK;IACf,iEAAiE;IACjE,kBAAkB,KAAK;IACvB,qFAAqF;IACrF,IAAI,KAAK;IACT,4DAA4D;IAC5D,KAAK,KAAK;CACX;AAED;;;;GAIG;AACH,MAAM,WAAW,wBAAwB;IACvC,8BAA8B;IAC9B,MAAM,EAAE,qBAAqB,CAAC;IAC9B,0CAA0C;IAC1C,IAAI,EAAE,UAAU,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,yEAAyE;IACzE,UAAU,CAAC,EAAE,UAAU,CAAC;IACxB,0FAA0F;IAC1F,aAAa,CAAC,EAAE,YAAY,CAAC;IAC7B,+FAA+F;IAC/F,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,6DAA6D;IAC7D,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,0FAA0F;IAC1F,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,+BAA+B;IAC/B,UAAU,EAAE,wBAAwB,EAAE,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,MAAM,uBAAuB,GAAG,CAAC,IAAI,EAAE,mBAAmB,KAAK,IAAI,CAAC;AAE1E;;GAEG;AACH,MAAM,WAAW,sBAAsB;IACrC,iDAAiD;IACjD,SAAS,EAAE,UAAU,CAAC;IACtB,sDAAsD;IACtD,UAAU,EAAE,uBAAuB,CAAC;IACpC,gCAAgC;IAChC,SAAS,CAAC,EAAE,OAAO,CAAC;IACpB,yGAAyG;IACzG,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,sHAAsH;IACtH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,0HAA0H;IAC1H,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8GAA8G;IAC9G,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,sGAAsG;IACtG,kBAAkB,CAAC,EAAE,MAAM,CAAC;CAC7B;AAED;;;GAGG;AACH,MAAM,WAAW,4BAA4B;IAC3C,+BAA+B;IAC/B,UAAU,EAAE,wBAAwB,EAAE,CAAC;IACvC,yEAAyE;IACzE,eAAe,CAAC,EAAE,OAAO,CAAC;CAC3B;AAED;;GAEG;AACH,MAAM,WAAW,mCAAmC;IAClD,+BAA+B;IAC/B,UAAU,EAAE,wBAAwB,EAAE,CAAC;IACvC,qDAAqD;IACrD,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED;;GAEG;AACH,oBAAY,qBAAqB;IAC/B,iEAAiE;IACjE,KAAK,IAAI;IACT,0EAA0E;IAC1E,QAAQ,IAAI;IACZ,oEAAoE;IACpE,SAAS,IAAI;IACb,yFAAyF;IACzF,GAAG,IAAI;IACP,uGAAuG;IACvG,GAAG,IAAI;IACP,8FAA8F;IAC9F,MAAM,IAAI;IACV,qGAAqG;IACrG,OAAO,IAAI;IACX,8EAA8E;IAC9E,MAAM,IAAI;IACV,uGAAuG;IACvG,KAAK,IAAI;IACT,6EAA6E;IAC7E,IAAI,IAAI;IACR,4EAA4E;IAC5E,KAAK,KAAK;IACV,4EAA4E;IAC5E,MAAM,KAAK;CACZ;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IAC3B,yDAAyD;IACzD,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,8EAA8E;IAC9E,cAAc,CAAC,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,mHAAmH;IACnH,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,0DAA0D;IAC1D,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,kGAAkG;IAClG,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC7B,0DAA0D;IAC1D,MAAM,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,WAAW,eAAe;IAC9B,oGAAoG;IACpG,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,qDAAqD;IACrD,SAAS,EAAE,qBAAqB,CAAC;IACjC,0GAA0G;IAC1G,UAAU,EAAE,wBAAwB,EAAE,CAAC;IACvC,iDAAiD;IACjD,QAAQ,EAAE,oBAAoB,CAAC;IAC/B,gGAAgG;IAChG,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,gDAAgD;IAChD,UAAU,CAAC,EAAE,YAAY,GAAG,gBAAgB,GAAG,eAAe,GAAG,cAAc,GAAG,eAAe,CAAC;CACnG;AAED;;GAEG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,UAAU,EAAE,wBAAwB,EAAE,CAAC;CACxC;AAED;;;GAGG;AACH,MAAM,MAAM,oBAAoB,GAAG,CAAC,IAAI,EAAE,gBAAgB,KAAK,IAAI,CAAC;AAEpE;;GAEG;AACH,yBAAiB,eAAe,CAAC;IAC/B,qKAAqK;IACrK,MAAa,OAAO;QAClB,OAAO,CAAC,aAAa,CAAC,CAAY;QAClC,OAAO,CAAC,aAAa,CAAC,CAAY;QAClC,6BAA6B;QAC7B,SAAgB,OAAO,EAAE,wBAAwB,EAAE,CAAM;QAEzD,iGAAiG;QACjG,IAAW,YAAY,0BAAiC;QAExD,yGAAyG;QACzG,IAAW,YAAY,0BAAiC;QAExD;;;WAGG;QACI,eAAe,CAAC,YAAY,CAAC,EAAE,SAAS;QAK/C;;WAEG;QACI,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,MAAM,GAAE,kBAAoE;QAItH;;WAEG;QACI,iBAAiB,CAAC,MAAM,EAAE,OAAO,EAAE,KAAK,GAAE,KAAgC;QAIjF;;WAEG;QACI,4BAA4B,CAAC,KAAK,EAAE,cAAc;QAKzD,+FAA+F;eACjF,yBAAyB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,SAAS,CAAC,EAAE,QAAQ,EAAE,MAAM,CAAC,EAAE,kBAAkB,GAAG,kBAAkB;QAkC9H,oGAAoG;eACtF,wBAAwB,CAAC,GAAG,EAAE,OAAO,EAAE,EAAE,MAAM,CAAC,EAAE,KAAK,GAAG,KAAK;QAQ7E;;;WAGG;QACI,oBAAoB,IAAI,OAAO;QAQtC;;WAEG;QACI,0BAA0B,CAAC,UAAU,EAAE,cAAc,GAAG,OAAO;QAItE,yHAAyH;QAClH,mBAAmB,CAAC,QAAQ,EAAE,aAAa,GAAG,OAAO;QAQ5D,sHAAsH;QAC/G,gBAAgB,CAAC,IAAI,EAAE,UAAU,GAAG,OAAO;QAQlD,wHAAwH;QACjH,kBAAkB,CAAC,KAAK,EAAE,YAAY,GAAG,OAAO;QAQvD;;;WAGG;QACI,cAAc,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,GAAG,OAAO;QAQ1D;;WAEG;QACI,kBAAkB,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,SAAS,GAAG,OAAO;QAQjF;;WAEG;QACI,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,kBAAkB,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO;QAOjJ;;WAEG;QACI,oBAAoB,CAAC,MAAM,EAAE,UAAU,EAAE,cAAc,CAAC,EAAE,OAAO,EAAE,gBAAgB,CAAC,EAAE,KAAK,EAAE,aAAa,CAAC,EAAE,MAAM,GAAG,OAAO;KAGrI;IAED,iEAAiE;IACjE,UAAiB,YAAY;QAC3B,sFAAsF;QACtF,QAAQ,CAAC,UAAU,EAAE,cAAc,CAAC;QACpC,qGAAqG;QACrG,QAAQ,CAAC,YAAY,CAAC,EAAE,SAAS,CAAC;QAClC,kEAAkE;QAClE,QAAQ,CAAC,UAAU,CAAC,EAAE,OAAO,CAAC;QAC9B,qCAAqC;QACrC,QAAQ,CAAC,KAAK,EAAE,wBAAwB,CAAC;KAC1C;IAED,MAAa,aAAc,YAAW,YAAY;QAChD,SAAgB,UAAU,EAAE,cAAc,CAAC;QAC3C,SAAgB,YAAY,CAAC,EAAE,SAAS,CAAC;QAClC,UAAU,CAAC,EAAE,OAAO,CAAC;QAC5B,OAAO,CAAC,MAAM,CAAC,CAA2B;QAC1C,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAU;oBAE1B,UAAU,EAAE,cAAc,EAAE,YAAY,EAAE,SAAS,EAAE,iBAAiB,CAAC,EAAE,OAAO;QAMnG,IAAW,KAAK,IACQ,wBAAwB,CADL;QAC3C,IAAW,KAAK,CAAC,KAAK,EAAE,wBAAwB,EAA0B;QAE1E,IAAW,eAAe,IAAI,SAAS,GAAG,SAAS,CAElD;QAED,wEAAwE;QACjE,eAAe,IAAI,aAAa,GAAG,SAAS;QAInD,4HAA4H;QACrH,UAAU,CAAC,YAAY,GAAE,OAAe,GAAG,UAAU,CAAC,SAAS,GAAG,SAAS;QAIlF,qEAAqE;QAC9D,YAAY,IAAI,UAAU,GAAG,SAAS;QAK7C,uEAAuE;QAChE,cAAc,IAAI,YAAY,GAAG,SAAS;QAKjD,gEAAgE;QACzD,cAAc,CAAC,WAAW,CAAC,EAAE,SAAS,EAAE,WAAW,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS;KAahG;IAED;;OAEG;IACH,MAAa,QAAS,YAAW,gBAAgB,CAAC,aAAa,CAAC;QAC9D,6BAA6B;QAC7B,SAAgB,UAAU,EAAE,wBAAwB,EAAE,CAAC;QACvD,wFAAwF;QACxF,SAAgB,SAAS,EAAE,WAAW,CAAC;QACvC,6DAA6D;QAC7D,SAAgB,eAAe,CAAC,EAAE,OAAO,CAAC;QAC1C,0FAA0F;QAC1F,SAAgB,YAAY,CAAC,EAAE,OAAO,CAAC;QACvC,6BAA6B;QAC7B,OAAO,CAAC,MAAM,CAAK;QACnB,8DAA8D;QAC9D,OAAO,CAAC,MAAM,CAAC,CAAgB;QAC/B,qCAAqC;QACrC,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAiB;QAC7C,OAAO,CAAC,QAAQ,CAAC,aAAa,CAAY;QAC1C,gFAAgF;QAChF,OAAO,CAAC,kBAAkB,CAAS;QAEnC;;UAEE;oBACiB,IAAI,EAAE,mBAAmB,EAAE,wBAAwB,CAAC,EAAE,UAAU,GAAG,cAAc,EAAE,YAAY,CAAC,EAAE,SAAS;QAgC9H,kEAAkE;QAC3D,uBAAuB,IAAI,IAAI;QAKtC,OAAO,KAAK,KAAK,GAKhB;QAED,2JAA2J;QACpJ,IAAI,IAAI,cAAc,CAAC,aAAa,CAAC;QAqBrC,CAAC,MAAM,CAAC,QAAQ,CAAC,IAAI,gBAAgB,CAAC,aAAa,CAAC;KAG5D;IAED,kFAAkF;IAClF,SAAgB,oBAAoB,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAe7E;IAED,iJAAiJ;IACjJ,SAAgB,gBAAgB,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAUzE;IAED,yEAAyE;IACzE,SAAgB,kBAAkB,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAQ3E;IAED,0EAA0E;IAC1E,SAAgB,iBAAiB,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAY1E;IAED,+EAA+E;IAC/E,SAAgB,OAAO,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAmChE;IAED,uGAAuG;IACvG,SAAgB,SAAS,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAuElE;IAED,kGAAkG;IAClG,SAAgB,OAAO,CAAC,KAAK,EAAE,wBAAwB,GAAG,OAAO,CAoChE;IAED,8EAA8E;IAC9E,SAAgB,iBAAiB,CAAC,KAAK,EAAE,wBAAwB,GAAG,UAAU,CAAC,IAAI,GAAG,SAAS,CA2F9F;IAED,0CAA0C;IAC1C,SAAgB,eAAe,CAAC,KAAK,EAAE,wBAAwB,EAAE,YAAY,CAAC,EAAE,SAAS,GAAG,aAAa,GAAG,SAAS,CAmFpH;IAED,4CAA4C;IAC5C,SAAgB,iBAAiB,CAAC,IAAI,EAAE,aAAa,EAAE,YAAY,CAAC,EAAE,SAAS,GAAG,wBAAwB,GAAG,SAAS,CAmCrH;IAED,uCAAuC;IACvC,SAAgB,YAAY,CAAC,KAAK,EAAE,wBAAwB,EAAE,YAAY,CAAC,EAAE,SAAS,GAAG,eAAe,GAAG,SAAS,CAiCnH;IAED,yCAAyC;IACzC,SAAgB,cAAc,CAAC,IAAI,EAAE,eAAe,EAAE,YAAY,CAAC,EAAE,SAAS,GAAG,wBAAwB,GAAG,SAAS,CAoCpH;IAED,yCAAyC;IACzC,SAAgB,cAAc,CAAC,KAAK,EAAE,wBAAwB,EAAE,YAAY,CAAC,EAAE,SAAS,GAAG,iBAAiB,GAAG,SAAS,CAkCvH;IAED,2CAA2C;IAC3C,SAAgB,gBAAgB,CAAC,KAAK,EAAE,iBAAiB,EAAE,YAAY,CAAC,EAAE,SAAS,GAAG,wBAAwB,GAAG,SAAS,CA6BzH;IAED,8FAA8F;IAC9F,SAAgB,MAAM,CAAC,KAAK,EAAE,wBAAwB,EAAE,YAAY,GAAE,OAAe,EAAE,YAAY,CAAC,EAAE,SAAS,GAAG,UAAU,CAAC,SAAS,GAAG,SAAS,CAyDjJ;IAED,gHAAgH;IAChH,SAAgB,QAAQ,CAAC,IAAI,EAAE,UAAU,CAAC,SAAS,EAAE,YAAY,CAAC,EAAE,SAAS,GAAG,wBAAwB,GAAG,SAAS,CAqEnH;IAED,sEAAsE;IACtE,SAAgB,aAAa,CAAC,KAAK,EAAE,wBAAwB,EAAE,cAAc,EAAE,SAAS,GAAG,OAAO,CAqDjG;IAmBD,uFAAuF;IACvF,SAAgB,oBAAoB,CAAC,KAAK,EAAE,wBAAwB,EAAE,UAAU,EAAE,cAAc,EAAE,YAAY,CAAC,EAAE,SAAS,GAAG,OAAO,CA4WnI;IAED,uDAAuD;IACvD,SAAgB,oBAAoB,CAAC,UAAU,EAAE,cAAc,EAAE,OAAO,EAAE,wBAAwB,EAAE,EAAE,YAAY,CAAC,EAAE,SAAS,GAAG,OAAO,CAuWvI;IAED,iEAAiE;IACjE,SAAgB,cAAc,CAAC,KAAK,EAAE,wBAAwB,EAAE,aAAa,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,SAAS,CA2BjH;IAED,qEAAqE;IACrE,SAAgB,gBAAgB,CAAC,MAAM,EAAE,UAAU,EAAE,aAAa,CAAC,EAAE,SAAS,EAAE,YAAY,CAAC,EAAE,SAAS,GAAG,wBAAwB,GAAG,SAAS,CAoC9I;IAED,kGAAkG;IAClG,SAAgB,iBAAiB,CAAC,KAAK,EAAE,wBAAwB,GAAG,mBAAmB,GAAG,SAAS,CAclG;IAED,qHAAqH;IACrH,SAAgB,mBAAmB,CAAC,IAAI,EAAE,mBAAmB,GAAG,wBAAwB,GAAG,SAAS,CAqBnG;IAED,mEAAmE;IACnE,SAAgB,WAAW,CAAC,aAAa,EAAE,YAAY,GAAG,SAAS,GAAG,SAAS,CAQ9E;IAED,6FAA6F;IAC7F,SAAgB,qBAAqB,CAAC,IAAI,EAAE,YAAY,GAAG,mBAAmB,GAAG,SAAS,CAIzF;CACF"}
1
+ {"version":3,"file":"ElementGeometry.d.ts","sourceRoot":"","sources":["../../../src/geometry/ElementGeometry.ts"],"names":[],"mappings":"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"}