@itwin/core-common 4.5.0-dev.8 → 4.6.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 (53) hide show
  1. package/CHANGELOG.md +63 -1
  2. package/LICENSE.md +1 -1
  3. package/lib/cjs/BriefcaseTypes.d.ts +12 -1
  4. package/lib/cjs/BriefcaseTypes.d.ts.map +1 -1
  5. package/lib/cjs/BriefcaseTypes.js.map +1 -1
  6. package/lib/cjs/ContextRealityModel.d.ts +8 -4
  7. package/lib/cjs/ContextRealityModel.d.ts.map +1 -1
  8. package/lib/cjs/ContextRealityModel.js +12 -3
  9. package/lib/cjs/ContextRealityModel.js.map +1 -1
  10. package/lib/cjs/ECSqlReader.d.ts.map +1 -1
  11. package/lib/cjs/ECSqlReader.js +10 -1
  12. package/lib/cjs/ECSqlReader.js.map +1 -1
  13. package/lib/cjs/ElementProps.d.ts +4 -4
  14. package/lib/cjs/ElementProps.d.ts.map +1 -1
  15. package/lib/cjs/ElementProps.js.map +1 -1
  16. package/lib/cjs/IModel.d.ts +12 -0
  17. package/lib/cjs/IModel.d.ts.map +1 -1
  18. package/lib/cjs/IModel.js.map +1 -1
  19. package/lib/cjs/IpcAppProps.d.ts +5 -3
  20. package/lib/cjs/IpcAppProps.d.ts.map +1 -1
  21. package/lib/cjs/IpcAppProps.js.map +1 -1
  22. package/lib/cjs/ViewFlags.d.ts +1 -1
  23. package/lib/cjs/ViewFlags.d.ts.map +1 -1
  24. package/lib/cjs/ViewFlags.js +1 -1
  25. package/lib/cjs/ViewFlags.js.map +1 -1
  26. package/lib/cjs/rpc/core/RpcInvocation.js +1 -1
  27. package/lib/cjs/rpc/core/RpcInvocation.js.map +1 -1
  28. package/lib/esm/BriefcaseTypes.d.ts +12 -1
  29. package/lib/esm/BriefcaseTypes.d.ts.map +1 -1
  30. package/lib/esm/BriefcaseTypes.js.map +1 -1
  31. package/lib/esm/ContextRealityModel.d.ts +8 -4
  32. package/lib/esm/ContextRealityModel.d.ts.map +1 -1
  33. package/lib/esm/ContextRealityModel.js +12 -3
  34. package/lib/esm/ContextRealityModel.js.map +1 -1
  35. package/lib/esm/ECSqlReader.d.ts.map +1 -1
  36. package/lib/esm/ECSqlReader.js +10 -1
  37. package/lib/esm/ECSqlReader.js.map +1 -1
  38. package/lib/esm/ElementProps.d.ts +4 -4
  39. package/lib/esm/ElementProps.d.ts.map +1 -1
  40. package/lib/esm/ElementProps.js.map +1 -1
  41. package/lib/esm/IModel.d.ts +12 -0
  42. package/lib/esm/IModel.d.ts.map +1 -1
  43. package/lib/esm/IModel.js.map +1 -1
  44. package/lib/esm/IpcAppProps.d.ts +5 -3
  45. package/lib/esm/IpcAppProps.d.ts.map +1 -1
  46. package/lib/esm/IpcAppProps.js.map +1 -1
  47. package/lib/esm/ViewFlags.d.ts +1 -1
  48. package/lib/esm/ViewFlags.d.ts.map +1 -1
  49. package/lib/esm/ViewFlags.js +1 -1
  50. package/lib/esm/ViewFlags.js.map +1 -1
  51. package/lib/esm/rpc/core/RpcInvocation.js +1 -1
  52. package/lib/esm/rpc/core/RpcInvocation.js.map +1 -1
  53. package/package.json +7 -6
@@ -116,6 +116,18 @@ export interface IModelEncryptionProps {
116
116
  /** The password used to encrypt/decrypt the snapshot iModel. */
117
117
  readonly password?: string;
118
118
  }
119
+ /**
120
+ * Sqlite options.
121
+ * @public
122
+ */
123
+ export interface OpenSqliteArgs {
124
+ /**
125
+ * Specify timeout after which SQLite stop retrying to acquire lock to database file and throw SQLITE_BUSY error.
126
+ * Timeout is specified in milliseconds.
127
+ * For more information https://www.sqlite.org/c3ref/busy_timeout.html.
128
+ * */
129
+ readonly busyTimeout?: number;
130
+ }
119
131
  /**
120
132
  * A key used to identify an opened [IModelDb]($backend) between the frontend and backend for Rpc and Ipc communications.
121
133
  * Keys must be unique - that is there can never be two IModelDbs opened with the same key at any given time.
@@ -1 +1 @@
1
- {"version":3,"file":"IModel.d.ts","sourceRoot":"","sources":["../../src/IModel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IModel.d.ts","sourceRoot":"","sources":["../../src/IModel.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"IModel.js","sourceRoot":"","sources":["../../src/IModel.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 iModels\n */\n\nimport { assert, BeEvent, GeoServiceStatus, GuidString, Id64, Id64String, IModelStatus, Mutable, OpenMode } from \"@itwin/core-bentley\";\nimport {\n Angle, AxisIndex, AxisOrder, Constant, Geometry, Matrix3d, Point3d, Range3d, Range3dProps, Transform, TransformProps, Vector3d, XYAndZ, XYZProps,\n YawPitchRollAngles, YawPitchRollProps,\n} from \"@itwin/core-geometry\";\nimport { ChangesetIdWithIndex } from \"./ChangesetProps\";\nimport { Cartographic, CartographicProps } from \"./geometry/Cartographic\";\nimport { GeographicCRS, GeographicCRSProps } from \"./geometry/CoordinateReferenceSystem\";\nimport { AxisAlignedBox3d } from \"./geometry/Placement\";\nimport { IModelError } from \"./IModelError\";\nimport { ThumbnailProps } from \"./Thumbnail\";\n\n/** The properties to open a connection to an iModel for RPC operations.\n * @public\n */\nexport interface IModelRpcOpenProps {\n /** The iTwin in which the iModel exists - must be defined for briefcases that are synchronized with iModelHub. */\n readonly iTwinId?: GuidString;\n /** Guid of the iModel. */\n readonly iModelId?: GuidString;\n\n /** Id of the last Changeset that was applied to the iModel - must be defined for briefcases that are synchronized with iModelHub.\n * @note Changeset Ids are string hash values based on the content and parent.\n */\n readonly changeset?: ChangesetIdWithIndex;\n}\n\n/** The properties that identify an opened iModel for RPC operations.\n * @public\n */\nexport interface IModelRpcProps extends IModelRpcOpenProps {\n /** Unique key used for identifying the iModel between the frontend and the backend */\n readonly key: string;\n}\n\n/** Properties that position an iModel on the earth via [ECEF](https://en.wikipedia.org/wiki/ECEF) (Earth Centered Earth Fixed) coordinates\n * The origin is specified as an ECEF coordinate. The cartographicOrigin property contains the latitude, longitude and elevation above the WGS84 ellipsoid\n * of the origin property. This cartographicOrigin is offered as a convenient pre-calculated value representing the location of the ECEF origin.\n * The 3D coordinate system this class represents is positioned at specified origin and the axis positioned according to\n * the other properties.\n * If transform property is defined then it will not be computed from other properties.\n * If the xVector and yVector properties are defined (and transform is not defined) then they take precedence over the YawPitchRoll orientation property. The xVector and yVector\n * represent the direction and scale of the X and Y axes. The Z axis is always perpendicular (according to the right hand rule) to these X-Y axes.\n * The scaling in the Z direction is always unity. The scale of the X and Y axes is represented by the size of the vector length.\n * If the xVector and yVector are not present then the YawPitchRoll properties indicates the angles for all tree axes. Scaling in that case\n * is unity in all three directions.\n * Note that the present class is intended to represent geolocated 3D coordinate systems that are normally tangent to the WGS84 ellipsoid\n * possibly offset in altitude by the terrain elevation above the ellipsoid but other general 3D coordinate systems\n * can be defined.\n * @public\n * @extensions\n */\nexport interface EcefLocationProps {\n /** The Origin of an iModel on the earth in ECEF coordinates */\n readonly origin: XYZProps;\n /** The [orientation](https://en.wikipedia.org/wiki/Geographic_coordinate_conversion) of an iModel on the earth. */\n readonly orientation: YawPitchRollProps;\n /** Optional position on the earth used to establish the ECEF coordinates. */\n readonly cartographicOrigin?: CartographicProps;\n /** Optional X column vector used with [[yVector]] to calculate potentially non-rigid transform if a projection is present. */\n readonly xVector?: XYZProps;\n /** Optional Y column vector used with [[xVector]] to calculate potentially non-rigid transform if a projection is present. */\n readonly yVector?: XYZProps;\n /** Optional potentially non-rigid transform defining the ECEF location.\n * @note If this property is supplied, the other properties are ignored.\n */\n readonly transform?: TransformProps;\n}\n\n/** Properties of the [Root Subject]($docs/bis/guide/references/glossary#subject-root).\n * @public\n * @extensions\n */\nexport interface RootSubjectProps {\n /** The name of the root subject. */\n readonly name: string;\n /** Description of the root subject (optional). */\n readonly description?: string;\n}\n\n/** Properties of an iModel that are always held in memory whenever one is opened, both on the frontend and on the backend .\n * @public\n */\nexport interface IModelProps {\n /** The name and description of the root subject of this iModel */\n readonly rootSubject: RootSubjectProps;\n /** The volume of the entire project, in spatial coordinates */\n readonly projectExtents?: Range3dProps;\n /** An offset to be applied to all spatial coordinates. This is normally used to transform spatial coordinates into the Cartesian coordinate system of a Geographic Coordinate System. */\n readonly globalOrigin?: XYZProps;\n /** The location of the iModel in Earth Centered Earth Fixed coordinates. iModel units are always meters */\n readonly ecefLocation?: EcefLocationProps;\n /** The Geographic Coordinate Reference System indicating the projection and datum used. */\n readonly geographicCoordinateSystem?: GeographicCRSProps;\n /** The name of the iModel. */\n readonly name?: string;\n}\n\n/** The properties returned by the backend when creating a new [[IModelConnection]] from the frontend, either with Rpc or with Ipc.\n * These properties describe the iModel held on the backend for thew newly formed connection and are used to construct a new\n * [[IModelConnection]] instance on the frontend to access it.\n * @public\n */\nexport type IModelConnectionProps = IModelProps & IModelRpcProps;\n\n/** The properties that can be supplied when creating a *new* iModel.\n * @public\n */\nexport interface CreateIModelProps extends IModelProps {\n /** The GUID of new iModel. If not present, a GUID will be generated. */\n readonly guid?: GuidString;\n /** Client name for new iModel */\n readonly client?: string;\n /** Thumbnail for new iModel\n * @alpha\n */\n readonly thumbnail?: ThumbnailProps;\n}\n\n/**\n * Encryption-related properties that can be supplied when creating or opening snapshot iModels.\n * @public\n * @deprecated in 3.x. **NOTE**, encrypted iModels are no longer supported since they require licensed code.\n */\nexport interface IModelEncryptionProps {\n /** The password used to encrypt/decrypt the snapshot iModel. */\n readonly password?: string;\n}\n\n/**\n * A key used to identify an opened [IModelDb]($backend) between the frontend and backend for Rpc and Ipc communications.\n * Keys must be unique - that is there can never be two IModelDbs opened with the same key at any given time.\n * If no key is supplied in a call to open an IModelDb, one is generated and returned.\n * It is only necessary to supply a key if you have some reason to assign a specific value to identify an IModelDb.\n * If you don't supply the key, you must use the returned value for Rpc and Ipc communications.\n * @public\n */\nexport interface OpenDbKey {\n readonly key?: string;\n}\n\n/** @beta TODO documentation */\nexport interface CloudContainerUri {\n readonly uriParams: string;\n}\n\n/** Options to open a [SnapshotDb]($backend).\n * @public\n */\nexport interface SnapshotOpenOptions extends IModelEncryptionProps, OpenDbKey { // eslint-disable-line deprecation/deprecation\n /**\n * The \"base\" name that can be used for creating temporary files related to this Db.\n * The string should be a name related to the current Db filename using some known pattern so that all files named \"baseName*\" can be deleted externally during cleanup.\n * It must be the name of a file (that may or may not exist) in a writable directory.\n * If not present, the baseName will default to the database's file name (including the path).\n * @internal\n */\n readonly tempFileBase?: string;\n}\n\n/** Options to open a [StandaloneDb]($backend) via [StandaloneDb.openFile]($backend) from the backend,\n * or [BriefcaseConnection.openStandalone]($frontend) from the frontend.\n * @public\n */\nexport type StandaloneOpenOptions = OpenDbKey;\n\n/** Options that can be supplied when creating snapshot iModels.\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface CreateSnapshotIModelProps extends IModelEncryptionProps {\n /** If true, then create SQLite views for Model, Element, ElementAspect, and Relationship classes.\n * These database views can often be useful for interoperability workflows.\n */\n readonly createClassViews?: boolean;\n}\n\n/** The options that can be specified when creating an *empty* snapshot iModel.\n * @see [SnapshotDb.createEmpty]($backend)\n * @public\n */\nexport type CreateEmptySnapshotIModelProps = CreateIModelProps & CreateSnapshotIModelProps;\n\n/** Options that can be supplied when creating standalone iModels.\n * @internal\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface CreateStandaloneIModelProps extends IModelEncryptionProps {\n /** If present, file will allow local editing, but cannot be used to create changesets */\n readonly allowEdit?: string;\n}\n\n/** The options that can be specified when creating an *empty* standalone iModel.\n * @see [standalone.createEmpty]($backend)\n * @internal\n */\nexport type CreateEmptyStandaloneIModelProps = CreateIModelProps & CreateStandaloneIModelProps;\n\n/**\n * @public\n * @extensions\n */\nexport interface FilePropertyProps {\n readonly namespace: string;\n readonly name: string;\n id?: number | string;\n subId?: number | string;\n}\n\n/** The position and orientation of an iModel on the earth in [ECEF](https://en.wikipedia.org/wiki/ECEF) (Earth Centered Earth Fixed) coordinates\n * @note This is an immutable type - all of its properties are frozen.\n * @see [GeoLocation of iModels]($docs/learning/GeoLocation.md)\n * @public\n */\nexport class EcefLocation implements EcefLocationProps {\n /** The origin of the ECEF transform. */\n public readonly origin: Point3d;\n /** The orientation of the ECEF transform */\n public readonly orientation: YawPitchRollAngles;\n /** Optional position on the earth used to establish the ECEF origin and orientation. */\n public readonly cartographicOrigin?: Cartographic;\n /** Optional X column vector used with [[yVector]] to calculate potentially non-rigid transform if a projection is present. */\n public readonly xVector?: Vector3d;\n /** Optional Y column vector used with [[xVector]] to calculate potentially non-rigid transform if a projection is present. */\n public readonly yVector?: Vector3d;\n /** The transform from iModel Spatial coordinates to ECEF from this EcefLocation */\n private readonly _transform: Transform = Transform.createIdentity();\n\n /** Get the transform from iModel Spatial coordinates to ECEF from this EcefLocation */\n public getTransform(): Transform { return this._transform; }\n\n /** Construct a new EcefLocation. Once constructed, it is frozen and cannot be modified. */\n constructor(props: EcefLocationProps) {\n this.origin = Point3d.fromJSON(props.origin).freeze();\n this.orientation = YawPitchRollAngles.fromJSON(props.orientation).freeze();\n if (props.cartographicOrigin)\n this.cartographicOrigin = Cartographic.fromRadians({ longitude: props.cartographicOrigin.longitude, latitude: props.cartographicOrigin.latitude, height: props.cartographicOrigin.height }).freeze();\n if (props.xVector && props.yVector) {\n this.xVector = Vector3d.fromJSON(props.xVector).freeze();\n this.yVector = Vector3d.fromJSON(props.yVector).freeze();\n }\n if (props.transform) {\n this._transform.setFromJSON(props.transform);\n this._transform.freeze();\n } else {\n let matrix;\n if (this.xVector && this.yVector) {\n const zVector = this.xVector.crossProduct(this.yVector);\n if (zVector.normalizeInPlace())\n matrix = Matrix3d.createColumns(this.xVector, this.yVector, zVector);\n }\n if (!matrix)\n matrix = this.orientation.toMatrix3d();\n\n this._transform = Transform.createOriginAndMatrix(this.origin, matrix);\n this._transform.freeze();\n }\n }\n\n /** Returns true if this EcefLocation is not located at the center of the Earth.\n * @alpha are locations very close to the center considered valid? What are the specific criteria?\n */\n public get isValid(): boolean {\n return !this.origin.isZero;\n }\n\n /** Construct ECEF Location from cartographic origin with optional known point and angle. */\n public static createFromCartographicOrigin(origin: Cartographic, point?: Point3d, angle?: Angle) {\n const ecefOrigin = origin.toEcef();\n const deltaRadians = 10 / Constant.earthRadiusWGS84.polar;\n const northCarto = Cartographic.fromRadians({ longitude: origin.longitude, latitude: origin.latitude + deltaRadians, height: origin.height });\n const eastCarto = Cartographic.fromRadians({ longitude: origin.longitude + deltaRadians, latitude: origin.latitude, height: origin.height });\n const ecefNorth = northCarto.toEcef();\n const ecefEast = eastCarto.toEcef();\n const xVector = Vector3d.createStartEnd(ecefOrigin, ecefEast).normalize();\n const yVector = Vector3d.createStartEnd(ecefOrigin, ecefNorth).normalize();\n const matrix = Matrix3d.createRigidFromColumns(xVector!, yVector!, AxisOrder.XYZ)!;\n if (angle !== undefined) {\n const north = Matrix3d.createRotationAroundAxisIndex(AxisIndex.Z, angle);\n matrix.multiplyMatrixMatrix(north, matrix);\n }\n if (point !== undefined) {\n const delta = matrix.multiplyVector(Vector3d.create(-point.x, -point.y, -point.z));\n ecefOrigin.addInPlace(delta);\n }\n\n return new EcefLocation({ origin: ecefOrigin, orientation: YawPitchRollAngles.createFromMatrix3d(matrix)!, cartographicOrigin: origin });\n }\n\n /** Construct ECEF Location from transform with optional position on the earth used to establish the ECEF origin and orientation. */\n public static createFromTransform(transform: Transform): EcefLocation {\n const ecefOrigin = transform.getOrigin();\n const angleFromInput = YawPitchRollAngles.createDegrees(0,0,0);\n const locationOrientationFromInputT = YawPitchRollAngles.createFromMatrix3d(transform.getMatrix(), angleFromInput);\n const transformProps = transform.toJSON();\n\n return new EcefLocation({ origin: ecefOrigin, orientation: locationOrientationFromInputT ?? angleFromInput, transform: transformProps });\n }\n\n /** Get the location center of the earth in the iModel coordinate system. */\n public get earthCenter(): Point3d {\n const matrix = this.orientation.toMatrix3d();\n return Point3d.createFrom(matrix.multiplyTransposeXYZ(-this.origin.x, -this.origin.y, -this.origin.z));\n }\n\n /** Return true if this location is equivalent to another location within a small tolerance. */\n public isAlmostEqual(other: EcefLocation): boolean {\n if (!this.origin.isAlmostEqual(other.origin) || !this.orientation.isAlmostEqual(other.orientation))\n return false;\n\n if ((this.xVector === undefined) !== (other.xVector === undefined) || (this.yVector === undefined) !== (other.yVector === undefined))\n return false;\n\n if (this.xVector !== undefined && other.xVector !== undefined && !this.xVector.isAlmostEqual(other.xVector))\n return false;\n\n if (this.yVector !== undefined && other.yVector !== undefined && !this.yVector.isAlmostEqual(other.yVector))\n return false;\n\n if (!this.getTransform().isAlmostEqual(other.getTransform()))\n return false;\n\n const thisCarto = this.cartographicOrigin;\n const otherCarto = other.cartographicOrigin;\n if (undefined === thisCarto || undefined === otherCarto)\n return undefined === thisCarto && undefined === otherCarto;\n\n return thisCarto.equalsEpsilon(otherCarto, Geometry.smallMetricDistance);\n }\n\n public toJSON(): EcefLocationProps {\n const props: Mutable<EcefLocationProps> = {\n origin: this.origin.toJSON(),\n orientation: this.orientation.toJSON(),\n transform: this.getTransform().toJSON(),\n };\n\n if (this.cartographicOrigin)\n props.cartographicOrigin = this.cartographicOrigin.toJSON();\n\n if (this.xVector)\n props.xVector = this.xVector.toJSON();\n\n if (this.yVector)\n props.yVector = this.yVector.toJSON();\n\n return props;\n }\n}\n\n/** Represents an iModel in JavaScript.\n * @see [GeoLocation of iModels]($docs/learning/GeoLocation.md)\n * @public\n */\nexport abstract class IModel implements IModelProps {\n private _projectExtents?: AxisAlignedBox3d;\n private _name?: string;\n private _rootSubject?: RootSubjectProps;\n private _globalOrigin?: Point3d;\n private _ecefLocation?: EcefLocation;\n private _geographicCoordinateSystem?: GeographicCRS;\n private _iModelId?: GuidString;\n\n /** The Id of the repository model. */\n public static readonly repositoryModelId: Id64String = \"0x1\";\n /** The Id of the root subject element. */\n public static readonly rootSubjectId: Id64String = \"0x1\";\n /** The Id of the dictionary model. */\n public static readonly dictionaryId: Id64String = \"0x10\";\n\n /** Event raised after [[name]] changes. */\n public readonly onNameChanged = new BeEvent<(previousName: string) => void>();\n /** Event raised after [[rootSubject]] changes. */\n public readonly onRootSubjectChanged = new BeEvent<(previousSubject: RootSubjectProps) => void>();\n /** Event raised after [[projectExtents]] changes. */\n public readonly onProjectExtentsChanged = new BeEvent<(previousExtents: AxisAlignedBox3d) => void>();\n /** Event raised after [[globalOrigin]] changes. */\n public readonly onGlobalOriginChanged = new BeEvent<(previousOrigin: Point3d) => void>();\n /** Event raised after [[ecefLocation]] changes. */\n public readonly onEcefLocationChanged = new BeEvent<(previousLocation: EcefLocation | undefined) => void>();\n /** Event raised after [[geographicCoordinateSystem]] changes. */\n public readonly onGeographicCoordinateSystemChanged = new BeEvent<(previousGCS: GeographicCRS | undefined) => void>();\n\n /** Name of the iModel */\n public get name(): string {\n assert(this._name !== undefined);\n return this._name;\n }\n public set name(name: string) {\n if (name !== this._name) {\n const old = this._name;\n this._name = name;\n if (undefined !== old)\n this.onNameChanged.raiseEvent(old);\n }\n }\n\n /** The name and description of the root subject of this iModel */\n public get rootSubject(): RootSubjectProps {\n assert(this._rootSubject !== undefined);\n return this._rootSubject;\n }\n public set rootSubject(subject: RootSubjectProps) {\n if (undefined === this._rootSubject || this._rootSubject.name !== subject.name || this._rootSubject.description !== subject.description) {\n const old = this._rootSubject;\n this._rootSubject = subject;\n if (old)\n this.onRootSubjectChanged.raiseEvent(old);\n }\n }\n\n /** Returns `true` if this is a snapshot iModel. */\n public abstract get isSnapshot(): boolean;\n /** Returns `true` if this is a briefcase copy of an iModel that is synchronized with iModelHub. */\n public abstract get isBriefcase(): boolean;\n\n public abstract get isOpen(): boolean;\n\n /**\n * The volume, in spatial coordinates, inside which the entire project is contained.\n * @note The object returned from this method is frozen. You *must* make a copy before you do anything that might attempt to modify it.\n */\n public get projectExtents() {\n assert(undefined !== this._projectExtents);\n return this._projectExtents;\n }\n public set projectExtents(extents: AxisAlignedBox3d) {\n // Don't allow any axis of the project extents to be less than 1 meter.\n const projectExtents = extents.clone();\n projectExtents.ensureMinLengths(1.0);\n if (!this._projectExtents || !this._projectExtents.isAlmostEqual(projectExtents)) {\n const old = this._projectExtents;\n projectExtents.freeze();\n this._projectExtents = projectExtents;\n if (old)\n this.onProjectExtentsChanged.raiseEvent(old);\n }\n }\n\n /** An offset to be applied to all spatial coordinates. */\n public get globalOrigin(): Point3d {\n assert(this._globalOrigin !== undefined);\n return this._globalOrigin;\n }\n public set globalOrigin(org: Point3d) {\n if (!this._globalOrigin || !this._globalOrigin.isAlmostEqual(org)) {\n const old = this._globalOrigin;\n org.freeze();\n this._globalOrigin = org;\n if (old)\n this.onGlobalOriginChanged.raiseEvent(old);\n }\n }\n\n /** The [EcefLocation]($docs/learning/glossary#ecefLocation) of the iModel in Earth Centered Earth Fixed coordinates.\n * If the iModel property geographicCoordinateSystem is not defined then the ecefLocation provides a geolocation by defining a\n * 3D coordinate system relative to the Earth model WGS84. Refer to additional documentation for details. If the geographicCoordinateSystem\n * property is defined then the ecefLocation must be used with care. When the geographicCoordinateSystem is defined it indicates the\n * iModel cartesian space is the result of a cartographic projection. This implies a flattening of the Earth surface process that\n * results in scale, angular or area distortion. The ecefLocation is then an approximation calculated at the center of the project extent.\n * If the project is more than 2 kilometer in size, the ecefLocation may represent a poor approximation of the effective\n * cartographic projection used and a linear transformation should then be calculated at the exact origin of the data\n * it must position.\n * @see [GeoLocation of iModels]($docs/learning/GeoLocation.md)\n */\n public get ecefLocation(): EcefLocation | undefined {\n return this._ecefLocation;\n }\n public set ecefLocation(ecefLocation: EcefLocation | undefined) {\n const old = this._ecefLocation;\n if (!old && !ecefLocation)\n return;\n else if (old && ecefLocation && old.isAlmostEqual(ecefLocation))\n return;\n\n this._ecefLocation = ecefLocation;\n this.onEcefLocationChanged.raiseEvent(old);\n }\n\n /** Set the [EcefLocation]($docs/learning/glossary#ecefLocation) for this iModel. */\n public setEcefLocation(ecef: EcefLocationProps): void {\n this.ecefLocation = new EcefLocation(ecef);\n }\n\n /** The geographic coordinate reference system of the iModel. */\n public get geographicCoordinateSystem(): GeographicCRS | undefined {\n return this._geographicCoordinateSystem;\n }\n public set geographicCoordinateSystem(geoCRS: GeographicCRS | undefined) {\n const old = this._geographicCoordinateSystem;\n if (!old && !geoCRS)\n return;\n else if (old && geoCRS && old.equals(geoCRS))\n return;\n\n this._geographicCoordinateSystem = geoCRS;\n this.onGeographicCoordinateSystemChanged.raiseEvent(old);\n }\n\n /** Sets the geographic coordinate reference system from GeographicCRSProps. */\n public setGeographicCoordinateSystem(geoCRS: GeographicCRSProps) {\n this.geographicCoordinateSystem = new GeographicCRS(geoCRS);\n }\n\n /** @internal */\n public getConnectionProps(): IModelConnectionProps {\n return {\n name: this.name,\n rootSubject: this.rootSubject,\n projectExtents: this.projectExtents.toJSON(),\n globalOrigin: this.globalOrigin.toJSON(),\n ecefLocation: this.ecefLocation,\n geographicCoordinateSystem: this.geographicCoordinateSystem,\n ... this._getRpcProps(),\n };\n }\n\n /** Convert this iModel to a JSON representation. */\n public toJSON(): IModelConnectionProps {\n return this.getConnectionProps();\n }\n\n /** A key used to identify this iModel in RPC calls from frontend to backend.\n * @internal\n */\n protected _fileKey: string;\n /** Get the key that was used to open this iModel. This is the value used for Rpc and Ipc communications. */\n public get key(): string { return this._fileKey; }\n\n /** @internal */\n protected _iTwinId?: GuidString;\n /** The Guid that identifies the iTwin that owns this iModel. */\n public get iTwinId(): GuidString | undefined { return this._iTwinId; }\n\n /** The Guid that identifies this iModel. */\n public get iModelId(): GuidString | undefined { return this._iModelId; }\n\n /** @public */\n public changeset: ChangesetIdWithIndex;\n\n protected _openMode = OpenMode.Readonly;\n /** The [[OpenMode]] used for this IModel. */\n public get openMode(): OpenMode { return this._openMode; }\n\n /** Return a token for RPC operations.\n * @throws IModelError if the iModel is not open.\n */\n public getRpcProps(): IModelRpcProps {\n if (!this.isOpen)\n throw new IModelError(IModelStatus.BadRequest, \"IModel is not open for rpc\");\n\n return this._getRpcProps();\n }\n\n /** Returns the iModel's RPC properties.\n * @note It is an error to attempt to use these properties as a token for RPC operations if the iModel is not open.\n * @internal\n */\n protected _getRpcProps(): IModelRpcProps {\n return {\n key: this._fileKey,\n iTwinId: this.iTwinId,\n iModelId: this.iModelId,\n changeset: this.changeset,\n };\n }\n\n /** @internal */\n protected constructor(tokenProps?: IModelRpcProps) {\n this.changeset = { id: \"\", index: 0 };\n this._fileKey = \"\";\n if (tokenProps) {\n this._fileKey = tokenProps.key;\n this._iTwinId = tokenProps.iTwinId;\n this._iModelId = tokenProps.iModelId;\n if (tokenProps.changeset)\n this.changeset = tokenProps.changeset;\n }\n }\n\n /** @internal */\n protected initialize(name: string, props: IModelProps) {\n this.name = name;\n this.rootSubject = props.rootSubject;\n this.projectExtents = Range3d.fromJSON(props.projectExtents);\n this.globalOrigin = Point3d.fromJSON(props.globalOrigin);\n\n const ecefLocation = props.ecefLocation ? new EcefLocation(props.ecefLocation) : undefined;\n this.ecefLocation = ecefLocation?.isValid ? ecefLocation : undefined;\n\n this.geographicCoordinateSystem = props.geographicCoordinateSystem ? new GeographicCRS(props.geographicCoordinateSystem) : undefined;\n }\n\n /** Get the default subCategoryId for the supplied categoryId */\n public static getDefaultSubCategoryId(categoryId: Id64String): Id64String {\n return Id64.isValid(categoryId) ? Id64.fromLocalAndBriefcaseIds(Id64.getLocalId(categoryId) + 1, Id64.getBriefcaseId(categoryId)) : Id64.invalid;\n }\n\n /** True if this iModel has an [EcefLocation]($docs/learning/glossary#ecefLocation). */\n public get isGeoLocated() { return undefined !== this._ecefLocation; }\n\n /** Get the Transform from this iModel's Spatial coordinates to ECEF coordinates using its [[IModel.ecefLocation]].\n * @throws IModelError if [[isGeoLocated]] is false.\n */\n public getEcefTransform(): Transform {\n if (undefined === this._ecefLocation)\n throw new IModelError(GeoServiceStatus.NoGeoLocation, \"iModel is not GeoLocated\");\n return this._ecefLocation.getTransform();\n }\n\n /** Convert a point in this iModel's Spatial coordinates to an ECEF point using its [[IModel.ecefLocation]].\n * @param spatial A point in the iModel's spatial coordinates\n * @param result If defined, use this for output\n * @returns A Point3d in ECEF coordinates\n * @throws IModelError if [[isGeoLocated]] is false.\n */\n public spatialToEcef(spatial: XYAndZ, result?: Point3d): Point3d { return this.getEcefTransform().multiplyPoint3d(spatial, result)!; }\n\n /** Convert a point in ECEF coordinates to a point in this iModel's Spatial coordinates using its [[ecefLocation]].\n * @param ecef A point in ECEF coordinates\n * @param result If defined, use this for output\n * @returns A Point3d in this iModel's spatial coordinates\n * @throws IModelError if [[isGeoLocated]] is false.\n * @note The resultant point will only be meaningful if the ECEF coordinate is close on the earth to the iModel.\n */\n public ecefToSpatial(ecef: XYAndZ, result?: Point3d): Point3d { return this.getEcefTransform().multiplyInversePoint3d(ecef, result)!; }\n\n /** Convert a point in this iModel's Spatial coordinates to a [[Cartographic]] using its [[IModel.ecefLocation]].\n * @param spatial A point in the iModel's spatial coordinates\n * @param result If defined, use this for output\n * @returns A Cartographic location\n * @throws IModelError if [[isGeoLocated]] is false.\n */\n public spatialToCartographicFromEcef(spatial: XYAndZ, result?: Cartographic): Cartographic { return Cartographic.fromEcef(this.spatialToEcef(spatial), result)!; }\n\n /** Convert a [[Cartographic]] to a point in this iModel's Spatial coordinates using its [[IModel.ecefLocation]].\n * @param cartographic A cartographic location\n * @param result If defined, use this for output\n * @returns A point in this iModel's spatial coordinates\n * @throws IModelError if [[isGeoLocated]] is false.\n * @note The resultant point will only be meaningful if the ECEF coordinate is close on the earth to the iModel.\n */\n public cartographicToSpatialFromEcef(cartographic: Cartographic, result?: Point3d) { return this.ecefToSpatial(cartographic.toEcef(result), result); }\n}\n"]}
1
+ {"version":3,"file":"IModel.js","sourceRoot":"","sources":["../../src/IModel.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 iModels\n */\n\nimport { assert, BeEvent, GeoServiceStatus, GuidString, Id64, Id64String, IModelStatus, Mutable, OpenMode } from \"@itwin/core-bentley\";\nimport {\n Angle, AxisIndex, AxisOrder, Constant, Geometry, Matrix3d, Point3d, Range3d, Range3dProps, Transform, TransformProps, Vector3d, XYAndZ, XYZProps,\n YawPitchRollAngles, YawPitchRollProps,\n} from \"@itwin/core-geometry\";\nimport { ChangesetIdWithIndex } from \"./ChangesetProps\";\nimport { Cartographic, CartographicProps } from \"./geometry/Cartographic\";\nimport { GeographicCRS, GeographicCRSProps } from \"./geometry/CoordinateReferenceSystem\";\nimport { AxisAlignedBox3d } from \"./geometry/Placement\";\nimport { IModelError } from \"./IModelError\";\nimport { ThumbnailProps } from \"./Thumbnail\";\n\n/** The properties to open a connection to an iModel for RPC operations.\n * @public\n */\nexport interface IModelRpcOpenProps {\n /** The iTwin in which the iModel exists - must be defined for briefcases that are synchronized with iModelHub. */\n readonly iTwinId?: GuidString;\n /** Guid of the iModel. */\n readonly iModelId?: GuidString;\n\n /** Id of the last Changeset that was applied to the iModel - must be defined for briefcases that are synchronized with iModelHub.\n * @note Changeset Ids are string hash values based on the content and parent.\n */\n readonly changeset?: ChangesetIdWithIndex;\n}\n\n/** The properties that identify an opened iModel for RPC operations.\n * @public\n */\nexport interface IModelRpcProps extends IModelRpcOpenProps {\n /** Unique key used for identifying the iModel between the frontend and the backend */\n readonly key: string;\n}\n\n/** Properties that position an iModel on the earth via [ECEF](https://en.wikipedia.org/wiki/ECEF) (Earth Centered Earth Fixed) coordinates\n * The origin is specified as an ECEF coordinate. The cartographicOrigin property contains the latitude, longitude and elevation above the WGS84 ellipsoid\n * of the origin property. This cartographicOrigin is offered as a convenient pre-calculated value representing the location of the ECEF origin.\n * The 3D coordinate system this class represents is positioned at specified origin and the axis positioned according to\n * the other properties.\n * If transform property is defined then it will not be computed from other properties.\n * If the xVector and yVector properties are defined (and transform is not defined) then they take precedence over the YawPitchRoll orientation property. The xVector and yVector\n * represent the direction and scale of the X and Y axes. The Z axis is always perpendicular (according to the right hand rule) to these X-Y axes.\n * The scaling in the Z direction is always unity. The scale of the X and Y axes is represented by the size of the vector length.\n * If the xVector and yVector are not present then the YawPitchRoll properties indicates the angles for all tree axes. Scaling in that case\n * is unity in all three directions.\n * Note that the present class is intended to represent geolocated 3D coordinate systems that are normally tangent to the WGS84 ellipsoid\n * possibly offset in altitude by the terrain elevation above the ellipsoid but other general 3D coordinate systems\n * can be defined.\n * @public\n * @extensions\n */\nexport interface EcefLocationProps {\n /** The Origin of an iModel on the earth in ECEF coordinates */\n readonly origin: XYZProps;\n /** The [orientation](https://en.wikipedia.org/wiki/Geographic_coordinate_conversion) of an iModel on the earth. */\n readonly orientation: YawPitchRollProps;\n /** Optional position on the earth used to establish the ECEF coordinates. */\n readonly cartographicOrigin?: CartographicProps;\n /** Optional X column vector used with [[yVector]] to calculate potentially non-rigid transform if a projection is present. */\n readonly xVector?: XYZProps;\n /** Optional Y column vector used with [[xVector]] to calculate potentially non-rigid transform if a projection is present. */\n readonly yVector?: XYZProps;\n /** Optional potentially non-rigid transform defining the ECEF location.\n * @note If this property is supplied, the other properties are ignored.\n */\n readonly transform?: TransformProps;\n}\n\n/** Properties of the [Root Subject]($docs/bis/guide/references/glossary#subject-root).\n * @public\n * @extensions\n */\nexport interface RootSubjectProps {\n /** The name of the root subject. */\n readonly name: string;\n /** Description of the root subject (optional). */\n readonly description?: string;\n}\n\n/** Properties of an iModel that are always held in memory whenever one is opened, both on the frontend and on the backend .\n * @public\n */\nexport interface IModelProps {\n /** The name and description of the root subject of this iModel */\n readonly rootSubject: RootSubjectProps;\n /** The volume of the entire project, in spatial coordinates */\n readonly projectExtents?: Range3dProps;\n /** An offset to be applied to all spatial coordinates. This is normally used to transform spatial coordinates into the Cartesian coordinate system of a Geographic Coordinate System. */\n readonly globalOrigin?: XYZProps;\n /** The location of the iModel in Earth Centered Earth Fixed coordinates. iModel units are always meters */\n readonly ecefLocation?: EcefLocationProps;\n /** The Geographic Coordinate Reference System indicating the projection and datum used. */\n readonly geographicCoordinateSystem?: GeographicCRSProps;\n /** The name of the iModel. */\n readonly name?: string;\n}\n\n/** The properties returned by the backend when creating a new [[IModelConnection]] from the frontend, either with Rpc or with Ipc.\n * These properties describe the iModel held on the backend for thew newly formed connection and are used to construct a new\n * [[IModelConnection]] instance on the frontend to access it.\n * @public\n */\nexport type IModelConnectionProps = IModelProps & IModelRpcProps;\n\n/** The properties that can be supplied when creating a *new* iModel.\n * @public\n */\nexport interface CreateIModelProps extends IModelProps {\n /** The GUID of new iModel. If not present, a GUID will be generated. */\n readonly guid?: GuidString;\n /** Client name for new iModel */\n readonly client?: string;\n /** Thumbnail for new iModel\n * @alpha\n */\n readonly thumbnail?: ThumbnailProps;\n}\n\n/**\n * Encryption-related properties that can be supplied when creating or opening snapshot iModels.\n * @public\n * @deprecated in 3.x. **NOTE**, encrypted iModels are no longer supported since they require licensed code.\n */\nexport interface IModelEncryptionProps {\n /** The password used to encrypt/decrypt the snapshot iModel. */\n readonly password?: string;\n}\n\n/**\n * Sqlite options.\n * @public\n */\nexport interface OpenSqliteArgs {\n /**\n * Specify timeout after which SQLite stop retrying to acquire lock to database file and throw SQLITE_BUSY error.\n * Timeout is specified in milliseconds.\n * For more information https://www.sqlite.org/c3ref/busy_timeout.html.\n * */\n readonly busyTimeout?: number;\n}\n\n/**\n * A key used to identify an opened [IModelDb]($backend) between the frontend and backend for Rpc and Ipc communications.\n * Keys must be unique - that is there can never be two IModelDbs opened with the same key at any given time.\n * If no key is supplied in a call to open an IModelDb, one is generated and returned.\n * It is only necessary to supply a key if you have some reason to assign a specific value to identify an IModelDb.\n * If you don't supply the key, you must use the returned value for Rpc and Ipc communications.\n * @public\n */\nexport interface OpenDbKey {\n readonly key?: string;\n}\n\n/** @beta TODO documentation */\nexport interface CloudContainerUri {\n readonly uriParams: string;\n}\n\n/** Options to open a [SnapshotDb]($backend).\n * @public\n */\nexport interface SnapshotOpenOptions extends IModelEncryptionProps, OpenDbKey { // eslint-disable-line deprecation/deprecation\n /**\n * The \"base\" name that can be used for creating temporary files related to this Db.\n * The string should be a name related to the current Db filename using some known pattern so that all files named \"baseName*\" can be deleted externally during cleanup.\n * It must be the name of a file (that may or may not exist) in a writable directory.\n * If not present, the baseName will default to the database's file name (including the path).\n * @internal\n */\n readonly tempFileBase?: string;\n}\n\n/** Options to open a [StandaloneDb]($backend) via [StandaloneDb.openFile]($backend) from the backend,\n * or [BriefcaseConnection.openStandalone]($frontend) from the frontend.\n * @public\n */\nexport type StandaloneOpenOptions = OpenDbKey;\n\n/** Options that can be supplied when creating snapshot iModels.\n * @public\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface CreateSnapshotIModelProps extends IModelEncryptionProps {\n /** If true, then create SQLite views for Model, Element, ElementAspect, and Relationship classes.\n * These database views can often be useful for interoperability workflows.\n */\n readonly createClassViews?: boolean;\n}\n\n/** The options that can be specified when creating an *empty* snapshot iModel.\n * @see [SnapshotDb.createEmpty]($backend)\n * @public\n */\nexport type CreateEmptySnapshotIModelProps = CreateIModelProps & CreateSnapshotIModelProps;\n\n/** Options that can be supplied when creating standalone iModels.\n * @internal\n */\n// eslint-disable-next-line deprecation/deprecation\nexport interface CreateStandaloneIModelProps extends IModelEncryptionProps {\n /** If present, file will allow local editing, but cannot be used to create changesets */\n readonly allowEdit?: string;\n}\n\n/** The options that can be specified when creating an *empty* standalone iModel.\n * @see [standalone.createEmpty]($backend)\n * @internal\n */\nexport type CreateEmptyStandaloneIModelProps = CreateIModelProps & CreateStandaloneIModelProps;\n\n/**\n * @public\n * @extensions\n */\nexport interface FilePropertyProps {\n readonly namespace: string;\n readonly name: string;\n id?: number | string;\n subId?: number | string;\n}\n\n/** The position and orientation of an iModel on the earth in [ECEF](https://en.wikipedia.org/wiki/ECEF) (Earth Centered Earth Fixed) coordinates\n * @note This is an immutable type - all of its properties are frozen.\n * @see [GeoLocation of iModels]($docs/learning/GeoLocation.md)\n * @public\n */\nexport class EcefLocation implements EcefLocationProps {\n /** The origin of the ECEF transform. */\n public readonly origin: Point3d;\n /** The orientation of the ECEF transform */\n public readonly orientation: YawPitchRollAngles;\n /** Optional position on the earth used to establish the ECEF origin and orientation. */\n public readonly cartographicOrigin?: Cartographic;\n /** Optional X column vector used with [[yVector]] to calculate potentially non-rigid transform if a projection is present. */\n public readonly xVector?: Vector3d;\n /** Optional Y column vector used with [[xVector]] to calculate potentially non-rigid transform if a projection is present. */\n public readonly yVector?: Vector3d;\n /** The transform from iModel Spatial coordinates to ECEF from this EcefLocation */\n private readonly _transform: Transform = Transform.createIdentity();\n\n /** Get the transform from iModel Spatial coordinates to ECEF from this EcefLocation */\n public getTransform(): Transform { return this._transform; }\n\n /** Construct a new EcefLocation. Once constructed, it is frozen and cannot be modified. */\n constructor(props: EcefLocationProps) {\n this.origin = Point3d.fromJSON(props.origin).freeze();\n this.orientation = YawPitchRollAngles.fromJSON(props.orientation).freeze();\n if (props.cartographicOrigin)\n this.cartographicOrigin = Cartographic.fromRadians({ longitude: props.cartographicOrigin.longitude, latitude: props.cartographicOrigin.latitude, height: props.cartographicOrigin.height }).freeze();\n if (props.xVector && props.yVector) {\n this.xVector = Vector3d.fromJSON(props.xVector).freeze();\n this.yVector = Vector3d.fromJSON(props.yVector).freeze();\n }\n if (props.transform) {\n this._transform.setFromJSON(props.transform);\n this._transform.freeze();\n } else {\n let matrix;\n if (this.xVector && this.yVector) {\n const zVector = this.xVector.crossProduct(this.yVector);\n if (zVector.normalizeInPlace())\n matrix = Matrix3d.createColumns(this.xVector, this.yVector, zVector);\n }\n if (!matrix)\n matrix = this.orientation.toMatrix3d();\n\n this._transform = Transform.createOriginAndMatrix(this.origin, matrix);\n this._transform.freeze();\n }\n }\n\n /** Returns true if this EcefLocation is not located at the center of the Earth.\n * @alpha are locations very close to the center considered valid? What are the specific criteria?\n */\n public get isValid(): boolean {\n return !this.origin.isZero;\n }\n\n /** Construct ECEF Location from cartographic origin with optional known point and angle. */\n public static createFromCartographicOrigin(origin: Cartographic, point?: Point3d, angle?: Angle) {\n const ecefOrigin = origin.toEcef();\n const deltaRadians = 10 / Constant.earthRadiusWGS84.polar;\n const northCarto = Cartographic.fromRadians({ longitude: origin.longitude, latitude: origin.latitude + deltaRadians, height: origin.height });\n const eastCarto = Cartographic.fromRadians({ longitude: origin.longitude + deltaRadians, latitude: origin.latitude, height: origin.height });\n const ecefNorth = northCarto.toEcef();\n const ecefEast = eastCarto.toEcef();\n const xVector = Vector3d.createStartEnd(ecefOrigin, ecefEast).normalize();\n const yVector = Vector3d.createStartEnd(ecefOrigin, ecefNorth).normalize();\n const matrix = Matrix3d.createRigidFromColumns(xVector!, yVector!, AxisOrder.XYZ)!;\n if (angle !== undefined) {\n const north = Matrix3d.createRotationAroundAxisIndex(AxisIndex.Z, angle);\n matrix.multiplyMatrixMatrix(north, matrix);\n }\n if (point !== undefined) {\n const delta = matrix.multiplyVector(Vector3d.create(-point.x, -point.y, -point.z));\n ecefOrigin.addInPlace(delta);\n }\n\n return new EcefLocation({ origin: ecefOrigin, orientation: YawPitchRollAngles.createFromMatrix3d(matrix)!, cartographicOrigin: origin });\n }\n\n /** Construct ECEF Location from transform with optional position on the earth used to establish the ECEF origin and orientation. */\n public static createFromTransform(transform: Transform): EcefLocation {\n const ecefOrigin = transform.getOrigin();\n const angleFromInput = YawPitchRollAngles.createDegrees(0, 0, 0);\n const locationOrientationFromInputT = YawPitchRollAngles.createFromMatrix3d(transform.getMatrix(), angleFromInput);\n const transformProps = transform.toJSON();\n\n return new EcefLocation({ origin: ecefOrigin, orientation: locationOrientationFromInputT ?? angleFromInput, transform: transformProps });\n }\n\n /** Get the location center of the earth in the iModel coordinate system. */\n public get earthCenter(): Point3d {\n const matrix = this.orientation.toMatrix3d();\n return Point3d.createFrom(matrix.multiplyTransposeXYZ(-this.origin.x, -this.origin.y, -this.origin.z));\n }\n\n /** Return true if this location is equivalent to another location within a small tolerance. */\n public isAlmostEqual(other: EcefLocation): boolean {\n if (!this.origin.isAlmostEqual(other.origin) || !this.orientation.isAlmostEqual(other.orientation))\n return false;\n\n if ((this.xVector === undefined) !== (other.xVector === undefined) || (this.yVector === undefined) !== (other.yVector === undefined))\n return false;\n\n if (this.xVector !== undefined && other.xVector !== undefined && !this.xVector.isAlmostEqual(other.xVector))\n return false;\n\n if (this.yVector !== undefined && other.yVector !== undefined && !this.yVector.isAlmostEqual(other.yVector))\n return false;\n\n if (!this.getTransform().isAlmostEqual(other.getTransform()))\n return false;\n\n const thisCarto = this.cartographicOrigin;\n const otherCarto = other.cartographicOrigin;\n if (undefined === thisCarto || undefined === otherCarto)\n return undefined === thisCarto && undefined === otherCarto;\n\n return thisCarto.equalsEpsilon(otherCarto, Geometry.smallMetricDistance);\n }\n\n public toJSON(): EcefLocationProps {\n const props: Mutable<EcefLocationProps> = {\n origin: this.origin.toJSON(),\n orientation: this.orientation.toJSON(),\n transform: this.getTransform().toJSON(),\n };\n\n if (this.cartographicOrigin)\n props.cartographicOrigin = this.cartographicOrigin.toJSON();\n\n if (this.xVector)\n props.xVector = this.xVector.toJSON();\n\n if (this.yVector)\n props.yVector = this.yVector.toJSON();\n\n return props;\n }\n}\n\n/** Represents an iModel in JavaScript.\n * @see [GeoLocation of iModels]($docs/learning/GeoLocation.md)\n * @public\n */\nexport abstract class IModel implements IModelProps {\n private _projectExtents?: AxisAlignedBox3d;\n private _name?: string;\n private _rootSubject?: RootSubjectProps;\n private _globalOrigin?: Point3d;\n private _ecefLocation?: EcefLocation;\n private _geographicCoordinateSystem?: GeographicCRS;\n private _iModelId?: GuidString;\n\n /** The Id of the repository model. */\n public static readonly repositoryModelId: Id64String = \"0x1\";\n /** The Id of the root subject element. */\n public static readonly rootSubjectId: Id64String = \"0x1\";\n /** The Id of the dictionary model. */\n public static readonly dictionaryId: Id64String = \"0x10\";\n\n /** Event raised after [[name]] changes. */\n public readonly onNameChanged = new BeEvent<(previousName: string) => void>();\n /** Event raised after [[rootSubject]] changes. */\n public readonly onRootSubjectChanged = new BeEvent<(previousSubject: RootSubjectProps) => void>();\n /** Event raised after [[projectExtents]] changes. */\n public readonly onProjectExtentsChanged = new BeEvent<(previousExtents: AxisAlignedBox3d) => void>();\n /** Event raised after [[globalOrigin]] changes. */\n public readonly onGlobalOriginChanged = new BeEvent<(previousOrigin: Point3d) => void>();\n /** Event raised after [[ecefLocation]] changes. */\n public readonly onEcefLocationChanged = new BeEvent<(previousLocation: EcefLocation | undefined) => void>();\n /** Event raised after [[geographicCoordinateSystem]] changes. */\n public readonly onGeographicCoordinateSystemChanged = new BeEvent<(previousGCS: GeographicCRS | undefined) => void>();\n\n /** Name of the iModel */\n public get name(): string {\n assert(this._name !== undefined);\n return this._name;\n }\n public set name(name: string) {\n if (name !== this._name) {\n const old = this._name;\n this._name = name;\n if (undefined !== old)\n this.onNameChanged.raiseEvent(old);\n }\n }\n\n /** The name and description of the root subject of this iModel */\n public get rootSubject(): RootSubjectProps {\n assert(this._rootSubject !== undefined);\n return this._rootSubject;\n }\n public set rootSubject(subject: RootSubjectProps) {\n if (undefined === this._rootSubject || this._rootSubject.name !== subject.name || this._rootSubject.description !== subject.description) {\n const old = this._rootSubject;\n this._rootSubject = subject;\n if (old)\n this.onRootSubjectChanged.raiseEvent(old);\n }\n }\n\n /** Returns `true` if this is a snapshot iModel. */\n public abstract get isSnapshot(): boolean;\n /** Returns `true` if this is a briefcase copy of an iModel that is synchronized with iModelHub. */\n public abstract get isBriefcase(): boolean;\n\n public abstract get isOpen(): boolean;\n\n /**\n * The volume, in spatial coordinates, inside which the entire project is contained.\n * @note The object returned from this method is frozen. You *must* make a copy before you do anything that might attempt to modify it.\n */\n public get projectExtents() {\n assert(undefined !== this._projectExtents);\n return this._projectExtents;\n }\n public set projectExtents(extents: AxisAlignedBox3d) {\n // Don't allow any axis of the project extents to be less than 1 meter.\n const projectExtents = extents.clone();\n projectExtents.ensureMinLengths(1.0);\n if (!this._projectExtents || !this._projectExtents.isAlmostEqual(projectExtents)) {\n const old = this._projectExtents;\n projectExtents.freeze();\n this._projectExtents = projectExtents;\n if (old)\n this.onProjectExtentsChanged.raiseEvent(old);\n }\n }\n\n /** An offset to be applied to all spatial coordinates. */\n public get globalOrigin(): Point3d {\n assert(this._globalOrigin !== undefined);\n return this._globalOrigin;\n }\n public set globalOrigin(org: Point3d) {\n if (!this._globalOrigin || !this._globalOrigin.isAlmostEqual(org)) {\n const old = this._globalOrigin;\n org.freeze();\n this._globalOrigin = org;\n if (old)\n this.onGlobalOriginChanged.raiseEvent(old);\n }\n }\n\n /** The [EcefLocation]($docs/learning/glossary#ecefLocation) of the iModel in Earth Centered Earth Fixed coordinates.\n * If the iModel property geographicCoordinateSystem is not defined then the ecefLocation provides a geolocation by defining a\n * 3D coordinate system relative to the Earth model WGS84. Refer to additional documentation for details. If the geographicCoordinateSystem\n * property is defined then the ecefLocation must be used with care. When the geographicCoordinateSystem is defined it indicates the\n * iModel cartesian space is the result of a cartographic projection. This implies a flattening of the Earth surface process that\n * results in scale, angular or area distortion. The ecefLocation is then an approximation calculated at the center of the project extent.\n * If the project is more than 2 kilometer in size, the ecefLocation may represent a poor approximation of the effective\n * cartographic projection used and a linear transformation should then be calculated at the exact origin of the data\n * it must position.\n * @see [GeoLocation of iModels]($docs/learning/GeoLocation.md)\n */\n public get ecefLocation(): EcefLocation | undefined {\n return this._ecefLocation;\n }\n public set ecefLocation(ecefLocation: EcefLocation | undefined) {\n const old = this._ecefLocation;\n if (!old && !ecefLocation)\n return;\n else if (old && ecefLocation && old.isAlmostEqual(ecefLocation))\n return;\n\n this._ecefLocation = ecefLocation;\n this.onEcefLocationChanged.raiseEvent(old);\n }\n\n /** Set the [EcefLocation]($docs/learning/glossary#ecefLocation) for this iModel. */\n public setEcefLocation(ecef: EcefLocationProps): void {\n this.ecefLocation = new EcefLocation(ecef);\n }\n\n /** The geographic coordinate reference system of the iModel. */\n public get geographicCoordinateSystem(): GeographicCRS | undefined {\n return this._geographicCoordinateSystem;\n }\n public set geographicCoordinateSystem(geoCRS: GeographicCRS | undefined) {\n const old = this._geographicCoordinateSystem;\n if (!old && !geoCRS)\n return;\n else if (old && geoCRS && old.equals(geoCRS))\n return;\n\n this._geographicCoordinateSystem = geoCRS;\n this.onGeographicCoordinateSystemChanged.raiseEvent(old);\n }\n\n /** Sets the geographic coordinate reference system from GeographicCRSProps. */\n public setGeographicCoordinateSystem(geoCRS: GeographicCRSProps) {\n this.geographicCoordinateSystem = new GeographicCRS(geoCRS);\n }\n\n /** @internal */\n public getConnectionProps(): IModelConnectionProps {\n return {\n name: this.name,\n rootSubject: this.rootSubject,\n projectExtents: this.projectExtents.toJSON(),\n globalOrigin: this.globalOrigin.toJSON(),\n ecefLocation: this.ecefLocation,\n geographicCoordinateSystem: this.geographicCoordinateSystem,\n ... this._getRpcProps(),\n };\n }\n\n /** Convert this iModel to a JSON representation. */\n public toJSON(): IModelConnectionProps {\n return this.getConnectionProps();\n }\n\n /** A key used to identify this iModel in RPC calls from frontend to backend.\n * @internal\n */\n protected _fileKey: string;\n /** Get the key that was used to open this iModel. This is the value used for Rpc and Ipc communications. */\n public get key(): string { return this._fileKey; }\n\n /** @internal */\n protected _iTwinId?: GuidString;\n /** The Guid that identifies the iTwin that owns this iModel. */\n public get iTwinId(): GuidString | undefined { return this._iTwinId; }\n\n /** The Guid that identifies this iModel. */\n public get iModelId(): GuidString | undefined { return this._iModelId; }\n\n /** @public */\n public changeset: ChangesetIdWithIndex;\n\n protected _openMode = OpenMode.Readonly;\n /** The [[OpenMode]] used for this IModel. */\n public get openMode(): OpenMode { return this._openMode; }\n\n /** Return a token for RPC operations.\n * @throws IModelError if the iModel is not open.\n */\n public getRpcProps(): IModelRpcProps {\n if (!this.isOpen)\n throw new IModelError(IModelStatus.BadRequest, \"IModel is not open for rpc\");\n\n return this._getRpcProps();\n }\n\n /** Returns the iModel's RPC properties.\n * @note It is an error to attempt to use these properties as a token for RPC operations if the iModel is not open.\n * @internal\n */\n protected _getRpcProps(): IModelRpcProps {\n return {\n key: this._fileKey,\n iTwinId: this.iTwinId,\n iModelId: this.iModelId,\n changeset: this.changeset,\n };\n }\n\n /** @internal */\n protected constructor(tokenProps?: IModelRpcProps) {\n this.changeset = { id: \"\", index: 0 };\n this._fileKey = \"\";\n if (tokenProps) {\n this._fileKey = tokenProps.key;\n this._iTwinId = tokenProps.iTwinId;\n this._iModelId = tokenProps.iModelId;\n if (tokenProps.changeset)\n this.changeset = tokenProps.changeset;\n }\n }\n\n /** @internal */\n protected initialize(name: string, props: IModelProps) {\n this.name = name;\n this.rootSubject = props.rootSubject;\n this.projectExtents = Range3d.fromJSON(props.projectExtents);\n this.globalOrigin = Point3d.fromJSON(props.globalOrigin);\n\n const ecefLocation = props.ecefLocation ? new EcefLocation(props.ecefLocation) : undefined;\n this.ecefLocation = ecefLocation?.isValid ? ecefLocation : undefined;\n\n this.geographicCoordinateSystem = props.geographicCoordinateSystem ? new GeographicCRS(props.geographicCoordinateSystem) : undefined;\n }\n\n /** Get the default subCategoryId for the supplied categoryId */\n public static getDefaultSubCategoryId(categoryId: Id64String): Id64String {\n return Id64.isValid(categoryId) ? Id64.fromLocalAndBriefcaseIds(Id64.getLocalId(categoryId) + 1, Id64.getBriefcaseId(categoryId)) : Id64.invalid;\n }\n\n /** True if this iModel has an [EcefLocation]($docs/learning/glossary#ecefLocation). */\n public get isGeoLocated() { return undefined !== this._ecefLocation; }\n\n /** Get the Transform from this iModel's Spatial coordinates to ECEF coordinates using its [[IModel.ecefLocation]].\n * @throws IModelError if [[isGeoLocated]] is false.\n */\n public getEcefTransform(): Transform {\n if (undefined === this._ecefLocation)\n throw new IModelError(GeoServiceStatus.NoGeoLocation, \"iModel is not GeoLocated\");\n return this._ecefLocation.getTransform();\n }\n\n /** Convert a point in this iModel's Spatial coordinates to an ECEF point using its [[IModel.ecefLocation]].\n * @param spatial A point in the iModel's spatial coordinates\n * @param result If defined, use this for output\n * @returns A Point3d in ECEF coordinates\n * @throws IModelError if [[isGeoLocated]] is false.\n */\n public spatialToEcef(spatial: XYAndZ, result?: Point3d): Point3d { return this.getEcefTransform().multiplyPoint3d(spatial, result)!; }\n\n /** Convert a point in ECEF coordinates to a point in this iModel's Spatial coordinates using its [[ecefLocation]].\n * @param ecef A point in ECEF coordinates\n * @param result If defined, use this for output\n * @returns A Point3d in this iModel's spatial coordinates\n * @throws IModelError if [[isGeoLocated]] is false.\n * @note The resultant point will only be meaningful if the ECEF coordinate is close on the earth to the iModel.\n */\n public ecefToSpatial(ecef: XYAndZ, result?: Point3d): Point3d { return this.getEcefTransform().multiplyInversePoint3d(ecef, result)!; }\n\n /** Convert a point in this iModel's Spatial coordinates to a [[Cartographic]] using its [[IModel.ecefLocation]].\n * @param spatial A point in the iModel's spatial coordinates\n * @param result If defined, use this for output\n * @returns A Cartographic location\n * @throws IModelError if [[isGeoLocated]] is false.\n */\n public spatialToCartographicFromEcef(spatial: XYAndZ, result?: Cartographic): Cartographic { return Cartographic.fromEcef(this.spatialToEcef(spatial), result)!; }\n\n /** Convert a [[Cartographic]] to a point in this iModel's Spatial coordinates using its [[IModel.ecefLocation]].\n * @param cartographic A cartographic location\n * @param result If defined, use this for output\n * @returns A point in this iModel's spatial coordinates\n * @throws IModelError if [[isGeoLocated]] is false.\n * @note The resultant point will only be meaningful if the ECEF coordinate is close on the earth to the iModel.\n */\n public cartographicToSpatialFromEcef(cartographic: Cartographic, result?: Point3d) { return this.ecefToSpatial(cartographic.toEcef(result), result); }\n}\n"]}
@@ -3,7 +3,7 @@
3
3
  */
4
4
  import { GuidString, Id64String, IModelStatus, LogLevel, OpenMode } from "@itwin/core-bentley";
5
5
  import { Range3dProps, XYZProps } from "@itwin/core-geometry";
6
- import { OpenBriefcaseProps } from "./BriefcaseTypes";
6
+ import { OpenBriefcaseProps, OpenCheckpointArgs } from "./BriefcaseTypes";
7
7
  import { ChangedEntities } from "./ChangedEntities";
8
8
  import { ChangesetIndex, ChangesetIndexAndId } from "./ChangesetProps";
9
9
  import { GeographicCRSProps } from "./geometry/CoordinateReferenceSystem";
@@ -103,9 +103,11 @@ export interface IpcAppFunctions {
103
103
  */
104
104
  log: (_timestamp: number, _level: LogLevel, _category: string, _message: string, _metaData?: any) => Promise<void>;
105
105
  /** see BriefcaseConnection.openFile */
106
- openBriefcase: (_args: OpenBriefcaseProps) => Promise<IModelConnectionProps>;
106
+ openBriefcase: (args: OpenBriefcaseProps) => Promise<IModelConnectionProps>;
107
107
  /** see BriefcaseConnection.openStandalone */
108
- openStandalone: (_filePath: string, _openMode: OpenMode, _opts?: StandaloneOpenOptions) => Promise<IModelConnectionProps>;
108
+ openCheckpoint: (args: OpenCheckpointArgs) => Promise<IModelConnectionProps>;
109
+ /** see BriefcaseConnection.openStandalone */
110
+ openStandalone: (filePath: string, openMode: OpenMode, opts?: StandaloneOpenOptions) => Promise<IModelConnectionProps>;
109
111
  /** see BriefcaseConnection.close */
110
112
  closeIModel: (key: string) => Promise<void>;
111
113
  /** see BriefcaseConnection.saveChanges */
@@ -1 +1 @@
1
- {"version":3,"file":"IpcAppProps.d.ts","sourceRoot":"","sources":["../../src/IpcAppProps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"IpcAppProps.d.ts","sourceRoot":"","sources":["../../src/IpcAppProps.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"IpcAppProps.js","sourceRoot":"","sources":["../../src/IpcAppProps.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAuBH;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,GAAG,cAAc,CAAC,SAAS,gBAAgB,QAAQ,EAAE,CAAC;AAwBpH,gBAAgB;AAChB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,4BAA4B;IACvC,IAAI,EAAE,mBAAmB;IACzB,YAAY,EAAE,4BAA4B;CAClC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module NativeApp\n */\n\nimport { GuidString, Id64String, IModelStatus, LogLevel, OpenMode } from \"@itwin/core-bentley\";\nimport { Range3dProps, XYZProps } from \"@itwin/core-geometry\";\nimport { OpenBriefcaseProps } from \"./BriefcaseTypes\";\nimport { ChangedEntities } from \"./ChangedEntities\";\nimport { ChangesetIndex, ChangesetIndexAndId } from \"./ChangesetProps\";\nimport { GeographicCRSProps } from \"./geometry/CoordinateReferenceSystem\";\nimport { EcefLocationProps, IModelConnectionProps, IModelRpcProps, RootSubjectProps, StandaloneOpenOptions } from \"./IModel\";\nimport { ModelGeometryChangesProps } from \"./ModelGeometryChanges\";\n\n/** Options for pulling changes into iModel.\n * @internal\n */\nexport interface PullChangesOptions {\n /** Enables progress reporting. */\n reportProgress?: boolean;\n /** Interval for reporting progress (in milliseconds). */\n progressInterval?: number;\n /** Enables checks for abort. */\n enableCancellation?: boolean;\n}\n\n/** Get IPC channel name used for reporting progress of pulling changes into iModel.\n * @internal\n */\nexport const getPullChangesIpcChannel = (iModelId: string) => `${ipcAppChannels.functions}/pullChanges/${iModelId}`;\n\n/** Identifies a list of tile content Ids belonging to a single tile tree.\n * @internal\n */\nexport interface TileTreeContentIds {\n treeId: string;\n contentIds: string[];\n}\n\n/** Specifies a [GeometricModel]($backend)'s Id and a Guid identifying the current state of the geometry contained within the model.\n * @see [TxnManager.onModelGeometryChanged]($backend) and [BriefcaseTxns.onModelGeometryChanged]($frontend).\n * @public\n * @extensions\n */\nexport interface ModelIdAndGeometryGuid {\n /** The model's Id. */\n id: Id64String;\n /** A unique identifier for the current state of the model's geometry. If the guid differs between two revisions of the same iModel, it indicates that the geometry differs.\n * This is primarily an implementation detail used to determine whether [Tile]($frontend)s produced for one revision are compatible with another revision.\n */\n guid: GuidString;\n}\n\n/** @internal */\nexport const ipcAppChannels = {\n functions: \"itwinjs-core/ipc-app\",\n appNotify: \"itwinjs-core/ipcApp-notify\",\n txns: \"itwinjs-core/txns\",\n editingScope: \"itwinjs-core/editing-scope\",\n} as const;\n\n/**\n * Interface implemented by the frontend [NotificationHandler]($common) to be notified of events from IpcApp backend.\n * @internal\n */\nexport interface IpcAppNotifications {\n notifyApp: () => void;\n}\n\n/** Interface implemented by the frontend [NotificationHandler]($common) to be notified of changes to an iModel.\n * @see [TxnManager]($backend) for the source of these events.\n * @see [BriefcaseTxns]($frontend) for the frontend implementation.\n * @internal\n */\nexport interface TxnNotifications {\n notifyElementsChanged: (changes: ChangedEntities) => void;\n notifyModelsChanged: (changes: ChangedEntities) => void;\n notifyGeometryGuidsChanged: (changes: ModelIdAndGeometryGuid[]) => void;\n notifyCommit: () => void;\n notifyCommitted: (hasPendingTxns: boolean, time: number) => void;\n notifyReplayExternalTxns: () => void;\n notifyReplayedExternalTxns: () => void;\n notifyChangesApplied: () => void;\n notifyBeforeUndoRedo: (isUndo: boolean) => void;\n notifyAfterUndoRedo: (isUndo: boolean) => void;\n notifyPulledChanges: (parentChangeSetId: ChangesetIndexAndId) => void;\n notifyPushedChanges: (parentChangeSetId: ChangesetIndexAndId) => void;\n\n notifyIModelNameChanged: (name: string) => void;\n notifyRootSubjectChanged: (subject: RootSubjectProps) => void;\n notifyProjectExtentsChanged: (extents: Range3dProps) => void;\n notifyGlobalOriginChanged: (origin: XYZProps) => void;\n notifyEcefLocationChanged: (ecef: EcefLocationProps | undefined) => void;\n notifyGeographicCoordinateSystemChanged: (gcs: GeographicCRSProps | undefined) => void;\n}\n\n/**\n * Interface registered by the frontend [NotificationHandler]($common) to be notified of changes to an iModel during an [GraphicalEditingScope]($frontend).\n * @internal\n */\nexport interface EditingScopeNotifications {\n notifyGeometryChanged: (modelProps: ModelGeometryChangesProps[]) => void;\n}\n\n/**\n * The methods that may be invoked via Ipc from the frontend of an IpcApp and are implemented on its backend.\n * @internal\n */\nexport interface IpcAppFunctions {\n /** Send frontend log to backend.\n * @param _level Specify log level.\n * @param _category Specify log category.\n * @param _message Specify log message.\n * @param _metaData metaData if any.\n */\n log: (_timestamp: number, _level: LogLevel, _category: string, _message: string, _metaData?: any) => Promise<void>;\n\n /** see BriefcaseConnection.openFile */\n openBriefcase: (_args: OpenBriefcaseProps) => Promise<IModelConnectionProps>;\n /** see BriefcaseConnection.openStandalone */\n openStandalone: (_filePath: string, _openMode: OpenMode, _opts?: StandaloneOpenOptions) => Promise<IModelConnectionProps>;\n /** see BriefcaseConnection.close */\n closeIModel: (key: string) => Promise<void>;\n /** see BriefcaseConnection.saveChanges */\n saveChanges: (key: string, description?: string) => Promise<void>;\n /** see BriefcaseTxns.hasPendingTxns */\n hasPendingTxns: (key: string) => Promise<boolean>;\n /** see BriefcaseTxns.isUndoPossible */\n isUndoPossible: (key: string) => Promise<boolean>;\n /** see BriefcaseTxns.isRedoPossible */\n isRedoPossible: (key: string) => Promise<boolean>;\n /** see BriefcaseTxns.getUndoString */\n getUndoString: (key: string) => Promise<string>;\n /** see BriefcaseTxns.getRedoString */\n getRedoString: (key: string) => Promise<string>;\n\n /** see BriefcaseConnection.pullChanges */\n pullChanges: (key: string, toIndex?: ChangesetIndex, options?: PullChangesOptions) => Promise<ChangesetIndexAndId>;\n /** Cancels pull of changes. */\n cancelPullChangesRequest: (key: string) => Promise<void>;\n /** see BriefcaseConnection.pushChanges */\n pushChanges: (key: string, description: string) => Promise<ChangesetIndexAndId>;\n /** Cancels currently pending or active generation of tile content. */\n cancelTileContentRequests: (tokenProps: IModelRpcProps, _contentIds: TileTreeContentIds[]) => Promise<void>;\n\n /** Cancel element graphics requests.\n * @see [[IModelTileRpcInterface.requestElementGraphics]].\n */\n cancelElementGraphicsRequests: (key: string, _requestIds: string[]) => Promise<void>;\n\n toggleGraphicalEditingScope: (key: string, _startSession: boolean) => Promise<boolean>;\n isGraphicalEditingSupported: (key: string) => Promise<boolean>;\n\n reverseTxns: (key: string, numOperations: number) => Promise<IModelStatus>;\n reverseAllTxn: (key: string) => Promise<IModelStatus>;\n reinstateTxn: (key: string) => Promise<IModelStatus>;\n restartTxnSession: (key: string) => Promise<void>;\n\n /** Query the number of concurrent threads supported by the host's IO or CPU thread pool. */\n queryConcurrency: (pool: \"io\" | \"cpu\") => Promise<number>;\n}\n\n"]}
1
+ {"version":3,"file":"IpcAppProps.js","sourceRoot":"","sources":["../../src/IpcAppProps.ts"],"names":[],"mappings":"AAAA;;;+FAG+F;AAC/F;;GAEG;AAuBH;;GAEG;AACH,MAAM,CAAC,MAAM,wBAAwB,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,GAAG,cAAc,CAAC,SAAS,gBAAgB,QAAQ,EAAE,CAAC;AAwBpH,gBAAgB;AAChB,MAAM,CAAC,MAAM,cAAc,GAAG;IAC5B,SAAS,EAAE,sBAAsB;IACjC,SAAS,EAAE,4BAA4B;IACvC,IAAI,EAAE,mBAAmB;IACzB,YAAY,EAAE,4BAA4B;CAClC,CAAC","sourcesContent":["/*---------------------------------------------------------------------------------------------\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\n* See LICENSE.md in the project root for license terms and full copyright notice.\n*--------------------------------------------------------------------------------------------*/\n/** @packageDocumentation\n * @module NativeApp\n */\n\nimport { GuidString, Id64String, IModelStatus, LogLevel, OpenMode } from \"@itwin/core-bentley\";\nimport { Range3dProps, XYZProps } from \"@itwin/core-geometry\";\nimport { OpenBriefcaseProps, OpenCheckpointArgs } from \"./BriefcaseTypes\";\nimport { ChangedEntities } from \"./ChangedEntities\";\nimport { ChangesetIndex, ChangesetIndexAndId } from \"./ChangesetProps\";\nimport { GeographicCRSProps } from \"./geometry/CoordinateReferenceSystem\";\nimport { EcefLocationProps, IModelConnectionProps, IModelRpcProps, RootSubjectProps, StandaloneOpenOptions } from \"./IModel\";\nimport { ModelGeometryChangesProps } from \"./ModelGeometryChanges\";\n\n/** Options for pulling changes into iModel.\n * @internal\n */\nexport interface PullChangesOptions {\n /** Enables progress reporting. */\n reportProgress?: boolean;\n /** Interval for reporting progress (in milliseconds). */\n progressInterval?: number;\n /** Enables checks for abort. */\n enableCancellation?: boolean;\n}\n\n/** Get IPC channel name used for reporting progress of pulling changes into iModel.\n * @internal\n */\nexport const getPullChangesIpcChannel = (iModelId: string) => `${ipcAppChannels.functions}/pullChanges/${iModelId}`;\n\n/** Identifies a list of tile content Ids belonging to a single tile tree.\n * @internal\n */\nexport interface TileTreeContentIds {\n treeId: string;\n contentIds: string[];\n}\n\n/** Specifies a [GeometricModel]($backend)'s Id and a Guid identifying the current state of the geometry contained within the model.\n * @see [TxnManager.onModelGeometryChanged]($backend) and [BriefcaseTxns.onModelGeometryChanged]($frontend).\n * @public\n * @extensions\n */\nexport interface ModelIdAndGeometryGuid {\n /** The model's Id. */\n id: Id64String;\n /** A unique identifier for the current state of the model's geometry. If the guid differs between two revisions of the same iModel, it indicates that the geometry differs.\n * This is primarily an implementation detail used to determine whether [Tile]($frontend)s produced for one revision are compatible with another revision.\n */\n guid: GuidString;\n}\n\n/** @internal */\nexport const ipcAppChannels = {\n functions: \"itwinjs-core/ipc-app\",\n appNotify: \"itwinjs-core/ipcApp-notify\",\n txns: \"itwinjs-core/txns\",\n editingScope: \"itwinjs-core/editing-scope\",\n} as const;\n\n/**\n * Interface implemented by the frontend [NotificationHandler]($common) to be notified of events from IpcApp backend.\n * @internal\n */\nexport interface IpcAppNotifications {\n notifyApp: () => void;\n}\n\n/** Interface implemented by the frontend [NotificationHandler]($common) to be notified of changes to an iModel.\n * @see [TxnManager]($backend) for the source of these events.\n * @see [BriefcaseTxns]($frontend) for the frontend implementation.\n * @internal\n */\nexport interface TxnNotifications {\n notifyElementsChanged: (changes: ChangedEntities) => void;\n notifyModelsChanged: (changes: ChangedEntities) => void;\n notifyGeometryGuidsChanged: (changes: ModelIdAndGeometryGuid[]) => void;\n notifyCommit: () => void;\n notifyCommitted: (hasPendingTxns: boolean, time: number) => void;\n notifyReplayExternalTxns: () => void;\n notifyReplayedExternalTxns: () => void;\n notifyChangesApplied: () => void;\n notifyBeforeUndoRedo: (isUndo: boolean) => void;\n notifyAfterUndoRedo: (isUndo: boolean) => void;\n notifyPulledChanges: (parentChangeSetId: ChangesetIndexAndId) => void;\n notifyPushedChanges: (parentChangeSetId: ChangesetIndexAndId) => void;\n\n notifyIModelNameChanged: (name: string) => void;\n notifyRootSubjectChanged: (subject: RootSubjectProps) => void;\n notifyProjectExtentsChanged: (extents: Range3dProps) => void;\n notifyGlobalOriginChanged: (origin: XYZProps) => void;\n notifyEcefLocationChanged: (ecef: EcefLocationProps | undefined) => void;\n notifyGeographicCoordinateSystemChanged: (gcs: GeographicCRSProps | undefined) => void;\n}\n\n/**\n * Interface registered by the frontend [NotificationHandler]($common) to be notified of changes to an iModel during an [GraphicalEditingScope]($frontend).\n * @internal\n */\nexport interface EditingScopeNotifications {\n notifyGeometryChanged: (modelProps: ModelGeometryChangesProps[]) => void;\n}\n\n/**\n * The methods that may be invoked via Ipc from the frontend of an IpcApp and are implemented on its backend.\n * @internal\n */\nexport interface IpcAppFunctions {\n /** Send frontend log to backend.\n * @param _level Specify log level.\n * @param _category Specify log category.\n * @param _message Specify log message.\n * @param _metaData metaData if any.\n */\n log: (_timestamp: number, _level: LogLevel, _category: string, _message: string, _metaData?: any) => Promise<void>;\n\n /** see BriefcaseConnection.openFile */\n openBriefcase: (args: OpenBriefcaseProps) => Promise<IModelConnectionProps>;\n /** see BriefcaseConnection.openStandalone */\n openCheckpoint: (args: OpenCheckpointArgs) => Promise<IModelConnectionProps>;\n /** see BriefcaseConnection.openStandalone */\n openStandalone: (filePath: string, openMode: OpenMode, opts?: StandaloneOpenOptions) => Promise<IModelConnectionProps>;\n /** see BriefcaseConnection.close */\n closeIModel: (key: string) => Promise<void>;\n /** see BriefcaseConnection.saveChanges */\n saveChanges: (key: string, description?: string) => Promise<void>;\n /** see BriefcaseTxns.hasPendingTxns */\n hasPendingTxns: (key: string) => Promise<boolean>;\n /** see BriefcaseTxns.isUndoPossible */\n isUndoPossible: (key: string) => Promise<boolean>;\n /** see BriefcaseTxns.isRedoPossible */\n isRedoPossible: (key: string) => Promise<boolean>;\n /** see BriefcaseTxns.getUndoString */\n getUndoString: (key: string) => Promise<string>;\n /** see BriefcaseTxns.getRedoString */\n getRedoString: (key: string) => Promise<string>;\n\n /** see BriefcaseConnection.pullChanges */\n pullChanges: (key: string, toIndex?: ChangesetIndex, options?: PullChangesOptions) => Promise<ChangesetIndexAndId>;\n /** Cancels pull of changes. */\n cancelPullChangesRequest: (key: string) => Promise<void>;\n /** see BriefcaseConnection.pushChanges */\n pushChanges: (key: string, description: string) => Promise<ChangesetIndexAndId>;\n /** Cancels currently pending or active generation of tile content. */\n cancelTileContentRequests: (tokenProps: IModelRpcProps, _contentIds: TileTreeContentIds[]) => Promise<void>;\n\n /** Cancel element graphics requests.\n * @see [[IModelTileRpcInterface.requestElementGraphics]].\n */\n cancelElementGraphicsRequests: (key: string, _requestIds: string[]) => Promise<void>;\n\n toggleGraphicalEditingScope: (key: string, _startSession: boolean) => Promise<boolean>;\n isGraphicalEditingSupported: (key: string) => Promise<boolean>;\n\n reverseTxns: (key: string, numOperations: number) => Promise<IModelStatus>;\n reverseAllTxn: (key: string) => Promise<IModelStatus>;\n reinstateTxn: (key: string) => Promise<IModelStatus>;\n restartTxnSession: (key: string) => Promise<void>;\n\n /** Query the number of concurrent threads supported by the host's IO or CPU thread pool. */\n queryConcurrency: (pool: \"io\" | \"cpu\") => Promise<number>;\n}\n\n"]}
@@ -245,7 +245,7 @@ export declare class ViewFlags {
245
245
  * @internal
246
246
  */
247
247
  normalize(): ViewFlags;
248
- /** @internal */
248
+ /** Returns true if edges that could be occluded by other geometry are visible for the current [[RenderMode]]. */
249
249
  hiddenEdgesVisible(): boolean;
250
250
  /** Returns true if the edges of surfaces should be displayed, based on [[RenderMode]] and the [[visibleEdges]] flag. */
251
251
  edgesRequired(): boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"ViewFlags.d.ts","sourceRoot":"","sources":["../../src/ViewFlags.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ViewFlags.d.ts","sourceRoot":"","sources":["../../src/ViewFlags.ts"],"names":[],"mappings":"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"}
@@ -176,7 +176,7 @@ class ViewFlags {
176
176
  }
177
177
  return this;
178
178
  }
179
- /** @internal */
179
+ /** Returns true if edges that could be occluded by other geometry are visible for the current [[RenderMode]]. */
180
180
  hiddenEdgesVisible() {
181
181
  switch (this.renderMode) {
182
182
  case RenderMode.SolidFill:
@@ -1 +1 @@
1
- {"version":3,"file":"ViewFlags.js","sourceRoot":"","sources":["../../src/ViewFlags.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 DisplayStyles\n */\n\n// cspell:ignore ovrs\n\nimport { JsonUtils, Mutable, NonFunctionPropertiesOf } from \"@itwin/core-bentley\";\n\n/** Enumerates the available basic rendering modes, as part of a [DisplayStyle]($backend)'s [[ViewFlags]].\n * The rendering mode broadly affects various aspects of the display style - in particular, whether and how surfaces and their edges are drawn.\n * @public\n * @extensions\n */\nexport enum RenderMode {\n /** Renders only the edges of surfaces, with exceptions for planar regions based on their [[FillFlags]].\n * Lighting (and by extension, shadows) is not applied.\n * [[HiddenLine.Settings]] are not applied - edges use the elements' width, style, and color.\n * [[ViewFlags.hiddenEdges]] is ignored - hidden edges are never displayed in wireframe mode.\n */\n Wireframe = 0,\n /** By default, renders surfaces without their edges.\n * Lighting and shadows can be applied using [[ViewFlags.lighting]] and [[ViewFlags.shadows]].\n * Edges can be enabled using [[ViewFlags.visibleEdges]] and [[ViewFlags.hiddenEdges]], and their appearance customized using [[HiddenLine.Settings]].\n * Surfaces can be drawn with transparency, based on [[ViewFlags.transparency]].\n */\n SmoothShade = 6,\n /** Renders surfaces and their edges. By default, edges are drawn in white; this can be overridden using [[HiddenLine.Settings]].\n * All surfaces are rendered opaque. If a surface's transparency is below that specified by [[HiddenLine.Settings.transparencyThreshold]], it is not rendered.\n * Materials and textures are not applied - surfaces are drawn in their actual colors.\n * [[ViewFlags.visibleEdges]] is ignored - visible edges are always drawn. Hidden edges can be enabled using [[ViewFlags.hiddenEdges]].\n * Lighting (and by extension, shadows) is not applied.\n */\n SolidFill = 4,\n /** Identical to [[RenderMode.SolidFill]], except:\n * - Surfaces are drawn using the [DisplayStyle]($backend)'s background color.\n * - Edges are drawn using their surface's colors; this can be overridden using [[HiddenLine.Settings]].\n */\n HiddenLine = 3,\n}\n\n/** JSON representation of [[ViewFlags]].\n * This is a persistence format with some unfortunate quirks that have been retained for backwards compatibility.\n * In particular, it supplies three separate flags intended to control lighting - [[noCameraLights]], [[noSourceLights]], and [[noSolarLight]] -\n * but there exists only a single [[ViewFlags.lighting]] flag. [[ViewFlags.lighting]] is set to true unless all three of the \"no lighting\" flags are true.\n * It also uses awkward negative ([[noConstruct]], [[noTransp]]) and/or abbreviated ([[clipVol]], [[visEdges]]) property names that differ from\n * those of the corresponding [[ViewFlags]] properties, making usage of this type in code error-prone.\n * Prefer to use [[ViewFlagsProperties]] unless you need to work directly with the persistence format.\n * @public\n * @extensions\n */\nexport interface ViewFlagProps {\n /** If true, don't display geometry of class [[GeometryClass.Construction]]. */\n noConstruct?: boolean;\n /** If true, don't display geometry of class [[GeometryClass.Dimension]]. */\n noDim?: boolean;\n /** If true, don't display geometry of class [[GeometryClass.Pattern]]. */\n noPattern?: boolean;\n /** If true, all lines are drawn with a width of 1 pixel. */\n noWeight?: boolean;\n /** If true, don't apply [[LinePixels]] styles. */\n noStyle?: boolean;\n /** If true, display transparency geometry as opaque. */\n noTransp?: boolean;\n /** If true, don't show filled planar regions, unless they use [[FillFlags.Always]]. */\n noFill?: boolean;\n /** If true, display a grid in the view. */\n grid?: boolean;\n /** If true, display graphics representing the [AuxCoordSystem]($backend). */\n acs?: boolean;\n /** If true, don't apply [[RenderTexture]]s to surfaces. */\n noTexture?: boolean;\n /** If true, don't apply [[RenderMaterial]]s to surfaces. */\n noMaterial?: boolean;\n /** See [[ViewFlagProps]] for how this affects [[ViewFlags.lighting]]. */\n noCameraLights?: boolean;\n /** See [[ViewFlagProps]] for how this affects [[ViewFlags.lighting]]. */\n noSourceLights?: boolean;\n /** See [[ViewFlagProps]] for how this affects [[ViewFlags.lighting]]. */\n noSolarLight?: boolean;\n /** If true, display the edges of surfaces. */\n visEdges?: boolean;\n /** If true, display the edges of surfaces, even if they are behind other geometry. */\n hidEdges?: boolean;\n /** If true, display shadows. */\n shadows?: boolean;\n /** If true, apply the view's clipping volume. Has no effect on other types of clips like [[ModelClipGroups]]. */\n clipVol?: boolean;\n /** If true, apply the view's [[DisplayStyleSettings.monochromeColor]] and [[DisplayStyleSettings.monochromeMode]] to produce a monochrome image. */\n monochrome?: boolean;\n /** The basic rendering mode, which affects the behavior of other flags. */\n renderMode?: RenderMode;\n /** Display a background map. */\n backgroundMap?: boolean;\n /** If true, apply [[AmbientOcclusion]]. */\n ambientOcclusion?: boolean;\n /** If true, apply [[ThematicDisplay]]. */\n thematicDisplay?: boolean;\n /** If true, overlay surfaces with wiremesh to reveal their triangulation. */\n wiremesh?: boolean;\n /** Controls whether surface discard is always applied regardless of other ViewFlags.\n * Surface shaders contain complicated logic to ensure that the edges of a surface always draw in front of the surface, and that planar surfaces sketched coincident with\n * non-planar surfaces always draw in front of those non-planar surfaces.\n * When this view flag is set to false (the default), then for 3d views if the render mode is wireframe (only edges are displayed) or smooth shader with visible edges turned off (only surfaces are displayed),\n * that logic does not execute, potentially improving performance for no degradation in visual quality. In some scenarios - such as wireframe views containing many planar regions with interior fill, or smooth views containing many coincident planar and non-planar surfaces - enabling this view flag improves display quality by forcing that logic to execute.\n */\n forceSurfaceDiscard?: boolean;\n /** Disables the \"white-on-white reversal\" employed by some CAD applications.\n * @see [[ViewFlags.whiteOnWhiteReversal]].\n */\n noWhiteOnWhiteReversal?: boolean;\n}\n\nfunction edgesRequired(renderMode: RenderMode, visibleEdges: boolean): boolean {\n return visibleEdges || RenderMode.SmoothShade !== renderMode;\n}\n\n/** Flags controlling how graphics appear within a view.\n * A [[ViewFlags]] object is immutable. There are several ways to produce a modified copy of a ViewFlags object:\n * ```ts\n * // Start with the default values for all properties.\n * let vf = ViewFlags.defaults;\n * // Change a single boolean property:\n * vf = vf.with(\"visibleEdges\", true);\n * // Change only the render mode:\n * vf = vf.withRenderMode(RenderMode.HiddenLine);\n * // Change multiple properties:\n * vf = vf.copy({ renderMode: RenderMode.SmoothShade, visibleEdges: true });\n * // Reset multiple properties to their default values:\n * vf = vf.copy({ renderMode: undefined, visibleEdges: undefined });\n *\n * ```\n * [[with]] and [[withRenderMode]] should be preferred if you only need to change a single property, as they will not create a new object unless\n * the new value differs from the current value.\n * [[copy]] and [[override]] should be preferred if you need to change multiple properties, as they will create no more than one new object, vs\n * each call to [[with]] or [[withRenderMode]] potentially creating a new object.\n * @see [[DisplayStyleSettings.viewFlags]] to define the view flags for a [DisplayStyle]($backend).\n * @public\n */\nexport class ViewFlags {\n /** The basic rendering mode applied to the view. This modulates the behavior of some of the other flags.\n * Default: [[RenderMode.Wireframe]].\n * @see [[RenderMode]] for details.\n */\n public readonly renderMode: RenderMode;\n /** Whether to display geometry of class [[GeometryClass.Dimension]]. Default: true. */\n public readonly dimensions: boolean;\n /** Whether to display geometry of class [[GeometryClass.Pattern]]. Default: true. */\n public readonly patterns: boolean;\n /** Whether to allow lines and edges to draw with width greater than one pixel. Default: true. */\n public readonly weights: boolean;\n /** Whether [[LinePixels]] are allowed to apply patterns to lines and edges. If false, they all draw as solid lines. Default: true. */\n public readonly styles: boolean;\n /** Whether element transparency is applied. If false, transparent geometry is drawn opaque. Default: true.\n * @see [[RenderMode]] for render mode-specific behavior.\n */\n public readonly transparency: boolean;\n /** In [[RenderMode.Wireframe]] only, whether to display the interiors of planar regions with [[FillFlags.ByView]]. Default: true. */\n public readonly fill: boolean;\n /** In [[RenderMode.SmoothShade]], whether to apply [[RenderTexture]]s to surfaces. Default: true. */\n public readonly textures: boolean;\n /** In [[RenderMode.SmoothShade]], whether to apply [[RenderMaterial]]s to surfaces. Default: true. */\n public readonly materials: boolean;\n /** Whether to display a graphical representation of the view's [AuxCoordSystem]($backend). Default: false. */\n public readonly acsTriad: boolean;\n /** Whether to display a grid. Default: false. */\n public readonly grid: boolean;\n /** In [[RenderMode.SmoothShade]], whether to display the edges of surfaces. Default: false.\n * @see [[HiddenLine.Settings]] to customize the appearance of the edges.\n */\n public readonly visibleEdges: boolean;\n /** In any mode except [[RenderMode.Wireframe]], whether to display the edges of surfaces occluded by other geometry.\n * This has no effect unless [[visibleEdges]] is also true.\n * Default: false.\n * @see [[HiddenLine.Settings]] to customize the appearance of the edges.\n */\n public readonly hiddenEdges: boolean;\n /** In [[RenderMode.SmoothShade]], whether to display solar shadows. This has no effect unless [[lighting]] is also true. Default: false.\n * @note Rendering shadows can reduce framerate, particularly on less capable graphics hardware or in complex scenes.\n */\n public readonly shadows: boolean;\n /** Whether to apply the view's clip volume to the geometry in the scene.\n * Default: true, except when using [[fromJSON]].\n * @see [[ViewDetails.clipVector]] to define the view's clip volume.\n */\n public readonly clipVolume: boolean;\n /** Whether to display geometry of class [[GeometryClass.Construction]].\n * Default: false, except when using [[fromJSON]].\n */\n public readonly constructions: boolean;\n /** Whether to produce a monochrome image. Default: false.\n * @see [DisplayStyleSettings.monochromeColor]($common) to define the monochrome color.\n * @see [DisplayStyleSettings.monochromeMode]($common) to define how the monochrome image is produced.\n */\n public readonly monochrome: boolean;\n /** Whether to display background map imagery. Default: false.\n * @see [[DisplayStyleSettings.backgroundMap]] to customize the map settings.\n */\n public readonly backgroundMap: boolean;\n /** In [[RenderMode.SmoothShade]], whether to apply [[AmbientOcclusion]]. Default: false. */\n public readonly ambientOcclusion: boolean;\n /** Whether to apply [[ThematicDisplay]]. Default: false. */\n public readonly thematicDisplay: boolean;\n /** If true, overlay surfaces with wiremesh to reveal their triangulation. */\n public readonly wiremesh: boolean;\n /** Controls whether surface discard is always applied regardless of other ViewFlags.\n * Surface shaders contain complicated logic to ensure that the edges of a surface always draw in front of the surface, and that planar surfaces sketched coincident with\n * non-planar surfaces always draw in front of those non-planar surfaces.\n * When this view flag is set to false (the default), then for 3d views if the render mode is wireframe (only edges are displayed) or smooth shader with visible edges turned off (only surfaces are displayed),\n * that logic does not execute, potentially improving performance for no degradation in visual quality. In some scenarios - such as wireframe views containing many planar regions with interior fill, or smooth views containing many coincident planar and non-planar surfaces - enabling this view flag improves display quality by forcing that logic to execute.\n */\n public readonly forceSurfaceDiscard: boolean;\n /** Whether to apply white-on-white reversal.\n * Some CAD applications use this to cause white geometry to be drawn as black if the view's background color is white.\n * When enabled, the [[DisplayStyleSettings]]' [[WhiteOnWhiteReversalSettings]] control how white-on-white reversal is applied.\n * Default: true.\n */\n public readonly whiteOnWhiteReversal: boolean;\n\n /** In [[RenderMode.SmoothShade]], whether to apply lighting to surfaces.\n * Default: false, except when using [[fromJSON]].\n * @see [[DisplayStyleSettings.lights]] to customize the light settings.\n */\n public readonly lighting: boolean;\n\n /** Create a new ViewFlags.\n * @param flags The properties to initialize. Any properties not specified are initialized to their default values.\n */\n public constructor(flags?: Partial<ViewFlagsProperties>) {\n this.renderMode = flags?.renderMode ?? RenderMode.Wireframe;\n this.dimensions = flags?.dimensions ?? true;\n this.patterns = flags?.patterns ?? true;\n this.weights = flags?.weights ?? true;\n this.styles = flags?.styles ?? true;\n this.transparency = flags?.transparency ?? true;\n this.fill = flags?.fill ?? true;\n this.textures = flags?.textures ?? true;\n this.materials = flags?.materials ?? true;\n this.acsTriad = flags?.acsTriad ?? false;\n this.grid = flags?.grid ?? false;\n this.visibleEdges = flags?.visibleEdges ?? false;\n this.hiddenEdges = flags?.hiddenEdges ?? false;\n this.shadows = flags?.shadows ?? false;\n this.clipVolume = flags?.clipVolume ?? true;\n this.constructions = flags?.constructions ?? false;\n this.monochrome = flags?.monochrome ?? false;\n this.backgroundMap = flags?.backgroundMap ?? false;\n this.ambientOcclusion = flags?.ambientOcclusion ?? false;\n this.thematicDisplay = flags?.thematicDisplay ?? false;\n this.wiremesh = flags?.wiremesh ?? false;\n this.forceSurfaceDiscard = flags?.forceSurfaceDiscard ?? false;\n this.whiteOnWhiteReversal = flags?.whiteOnWhiteReversal ?? true;\n this.lighting = flags?.lighting ?? false;\n }\n\n /** Produce a copy of these ViewFlags with some modified properties. Any properties not explicitly specified by `changedFlags` will retain their current values.\n * @param changedFlags Properties to modify.\n * @returns A copy of these ViewFlags modified according to the supplied properties.\n * @note Any explicitly `undefined` property of `changedFlags` will be set to its default value in the returned ViewFlags.\n * @see [[override]] to have `undefined` properties retain their current values.\n */\n public copy(changedFlags: Partial<ViewFlagsProperties>): ViewFlags {\n return JsonUtils.isNonEmptyObject(changedFlags) ? new ViewFlags({ ...this, ...changedFlags }) : this;\n }\n\n /** Produce a copy of these ViewFlags, overriding some of its properties. Any properties not explicitly specified by `overrides` will retain their current values,\n * as will any property explicitly set to `undefined`.\n * @param overrides The properties to override.\n * @see [[copy]] to have `undefined` properties reset to their default values.\n */\n public override(overrides: Partial<ViewFlagsProperties>): ViewFlags {\n // This method can get called very frequently when a RenderTimeline script is applied to the view. Often `overrides` will be an empty object.\n // To optimize:\n // - Bail as quickly as possible if nothing is actually overridden, without allocating a new ViewFlags.\n // - Only make a copy of the input if at least one property is explicitly `undefined`.\n let copied = false;\n let anyOverridden = false;\n\n for (const propName of Object.keys(overrides)) {\n const key = propName as keyof Partial<ViewFlagsProperties>;\n const overrideValue = overrides[key];\n if (undefined === overrideValue) {\n if (!copied) {\n // Don't modify input...\n overrides = { ...overrides };\n copied = true;\n }\n\n // `undefined` means \"retain existing value\".\n delete overrides[key];\n } else if (overrideValue !== this[key]) {\n anyOverridden = true;\n }\n }\n\n return anyOverridden ? this.copy(overrides) : this;\n }\n\n /** Produce a copy of these ViewFlags with a single boolean property changed.\n * @param flag The name of the property.\n * @param value The value to change the property to.\n * @returns A new ViewFlags with the property changed as specified, or `this` if the property already has the specified value.\n * @see [[withRenderMode]] to change the [[renderMode]] property.\n * @see [[copy]] and [[override]] to change multiple properties.\n */\n public with(flag: keyof Omit<ViewFlagsProperties, \"renderMode\">, value: boolean): ViewFlags {\n if (this[flag] === value)\n return this;\n\n const props: ViewFlagsProperties = { ...this };\n props[flag] = value;\n return new ViewFlags(props);\n }\n\n /** Produce a copy of these ViewFlags with a different [[renderMode]].\n * @param renderMode The new render mode.\n * @returns A new ViewFlags with the render mode changed as specified, or `this` if the render mode is already set to the requested value.\n * @see [[copy]] and [[override]] to change multiple properties.\n */\n public withRenderMode(renderMode: RenderMode): ViewFlags {\n return renderMode === this.renderMode ? this : this.copy({ renderMode });\n }\n\n /** Adjust view flags for renderer.\n * @internal\n */\n public normalize(): ViewFlags {\n switch (this.renderMode) {\n case RenderMode.Wireframe:\n if (this.visibleEdges || this.hiddenEdges)\n return this.copy({ visibleEdges: false, hiddenEdges: false });\n break;\n case RenderMode.SmoothShade:\n if (!this.visibleEdges)\n return this.copy({ hiddenEdges: false });\n break;\n case RenderMode.HiddenLine:\n case RenderMode.SolidFill:\n if (!this.visibleEdges || this.transparency)\n return this.copy({ visibleEdges: true, transparency: false });\n break;\n }\n\n return this;\n }\n\n /** @internal */\n public hiddenEdgesVisible(): boolean {\n switch (this.renderMode) {\n case RenderMode.SolidFill:\n case RenderMode.HiddenLine:\n return this.hiddenEdges;\n case RenderMode.SmoothShade:\n return this.visibleEdges && this.hiddenEdges;\n }\n return true;\n }\n\n /** Returns true if the edges of surfaces should be displayed, based on [[RenderMode]] and the [[visibleEdges]] flag. */\n public edgesRequired(): boolean {\n return edgesRequired(this.renderMode, this.visibleEdges);\n }\n\n /** Convert to JSON representation.\n * Properties are omitted if they match the default values.\n */\n public toJSON(): ViewFlagProps {\n const out: ViewFlagProps = {};\n if (!this.constructions)\n out.noConstruct = true;\n if (!this.dimensions)\n out.noDim = true;\n if (!this.patterns)\n out.noPattern = true;\n if (!this.weights)\n out.noWeight = true;\n if (!this.styles)\n out.noStyle = true;\n if (!this.transparency)\n out.noTransp = true;\n if (!this.fill)\n out.noFill = true;\n if (this.grid)\n out.grid = true;\n if (this.acsTriad)\n out.acs = true;\n if (!this.textures)\n out.noTexture = true;\n if (!this.materials)\n out.noMaterial = true;\n if (!this.lighting)\n out.noCameraLights = out.noSourceLights = out.noSolarLight = true;\n if (this.visibleEdges)\n out.visEdges = true;\n if (this.hiddenEdges)\n out.hidEdges = true;\n if (this.shadows)\n out.shadows = true;\n if (this.clipVolume)\n out.clipVol = true;\n if (this.monochrome)\n out.monochrome = true;\n if (this.backgroundMap)\n out.backgroundMap = true;\n if (this.ambientOcclusion)\n out.ambientOcclusion = true;\n if (this.thematicDisplay)\n out.thematicDisplay = true;\n if (this.wiremesh)\n out.wiremesh = true;\n if (this.forceSurfaceDiscard)\n out.forceSurfaceDiscard = true;\n if (!this.whiteOnWhiteReversal)\n out.noWhiteOnWhiteReversal = true;\n\n out.renderMode = this.renderMode;\n return out;\n }\n\n /** Like [[toJSON]], but no properties are omitted. */\n public toFullyDefinedJSON(): Required<ViewFlagProps> {\n return {\n renderMode: this.renderMode,\n noConstruct: !this.constructions,\n noDim: !this.dimensions,\n noPattern: !this.patterns,\n noWeight: !this.weights,\n noStyle: !this.styles,\n noTransp: !this.transparency,\n noFill: !this.fill,\n grid: this.grid,\n acs: this.acsTriad,\n noTexture: !this.textures,\n noMaterial: !this.materials,\n noCameraLights: !this.lighting,\n noSourceLights: !this.lighting,\n noSolarLight: !this.lighting,\n visEdges: this.visibleEdges,\n hidEdges: this.hiddenEdges,\n shadows: this.shadows,\n clipVol: this.clipVolume,\n monochrome: this.monochrome,\n backgroundMap: this.backgroundMap,\n ambientOcclusion: this.ambientOcclusion,\n thematicDisplay: this.thematicDisplay,\n wiremesh: this.wiremesh,\n forceSurfaceDiscard: this.forceSurfaceDiscard,\n noWhiteOnWhiteReversal: !this.whiteOnWhiteReversal,\n };\n }\n\n /** A ViewFlags object with all properties initialized to their default values. */\n public static readonly defaults = new ViewFlags();\n\n /** Create a ViewFlags.\n * @param flags The properties to initialize. Any properties not specified are initialized to their default values.\n */\n public static create(flags?: Partial<ViewFlagsProperties>): ViewFlags {\n return flags && !JsonUtils.isEmptyObject(flags) ? new ViewFlags(flags) : this.defaults;\n }\n\n /** Create a ViewFlags from its JSON representation.\n * @note As described in [[ViewFlagProps]], the JSON representation is awkward and error-prone. Prefer to use [[create]] unless you\n * need to deal with the persistence format directly.\n * @note The default values differ slightly from those used by the constructor and [[create]]:\n * - [[clipVolume]] defaults to false.\n * - [[constructions]] defaults to true.\n * - [[lighting]] defaults to true unless all of [[ViewFlagProps.noSolarLight]], [[ViewFlagProps.noCameraLights]], and [[ViewFlagProps.noSourceLights]] are true.\n */\n public static fromJSON(json?: ViewFlagProps): ViewFlags {\n if (!json)\n return this.defaults;\n\n let renderMode: RenderMode;\n const renderModeValue = JsonUtils.asInt(json.renderMode);\n if (renderModeValue < RenderMode.HiddenLine)\n renderMode = RenderMode.Wireframe;\n else if (renderModeValue > RenderMode.SolidFill)\n renderMode = RenderMode.SmoothShade;\n else\n renderMode = renderModeValue;\n\n const lighting = !JsonUtils.asBool(json.noCameraLights) || !JsonUtils.asBool(json.noSourceLights) || !JsonUtils.asBool(json.noSolarLight);\n return new ViewFlags({\n renderMode,\n lighting,\n constructions: !JsonUtils.asBool(json.noConstruct),\n dimensions: !JsonUtils.asBool(json.noDim),\n patterns: !JsonUtils.asBool(json.noPattern),\n weights: !JsonUtils.asBool(json.noWeight),\n styles: !JsonUtils.asBool(json.noStyle),\n transparency: !JsonUtils.asBool(json.noTransp),\n fill: !JsonUtils.asBool(json.noFill),\n grid: JsonUtils.asBool(json.grid),\n acsTriad: JsonUtils.asBool(json.acs),\n textures: !JsonUtils.asBool(json.noTexture),\n materials: !JsonUtils.asBool(json.noMaterial),\n visibleEdges: JsonUtils.asBool(json.visEdges),\n hiddenEdges: JsonUtils.asBool(json.hidEdges),\n shadows: JsonUtils.asBool(json.shadows),\n clipVolume: JsonUtils.asBool(json.clipVol),\n monochrome: JsonUtils.asBool(json.monochrome),\n backgroundMap: JsonUtils.asBool(json.backgroundMap),\n ambientOcclusion: JsonUtils.asBool(json.ambientOcclusion),\n thematicDisplay: JsonUtils.asBool(json.thematicDisplay),\n wiremesh: JsonUtils.asBool(json.wiremesh),\n forceSurfaceDiscard: JsonUtils.asBool(json.forceSurfaceDiscard),\n whiteOnWhiteReversal: !JsonUtils.asBool(json.noWhiteOnWhiteReversal),\n });\n }\n\n /** Returns true if `this` and `other` are equivalent. */\n public equals(other: Readonly<ViewFlagsProperties>): boolean {\n if (this === other)\n return true;\n\n return this.renderMode === other.renderMode\n && this.dimensions === other.dimensions\n && this.patterns === other.patterns\n && this.weights === other.weights\n && this.styles === other.styles\n && this.transparency === other.transparency\n && this.fill === other.fill\n && this.textures === other.textures\n && this.materials === other.materials\n && this.acsTriad === other.acsTriad\n && this.grid === other.grid\n && this.visibleEdges === other.visibleEdges\n && this.hiddenEdges === other.hiddenEdges\n && this.lighting === other.lighting\n && this.shadows === other.shadows\n && this.clipVolume === other.clipVolume\n && this.constructions === other.constructions\n && this.monochrome === other.monochrome\n && this.backgroundMap === other.backgroundMap\n && this.ambientOcclusion === other.ambientOcclusion\n && this.thematicDisplay === other.thematicDisplay\n && this.wiremesh === other.wiremesh\n && this.forceSurfaceDiscard === other.forceSurfaceDiscard\n && this.whiteOnWhiteReversal === other.whiteOnWhiteReversal;\n }\n}\n\n/** A type containing all of the properties of [[ViewFlags]] with none of the methods and with the `readonly` modifiers removed.\n * @see [[ViewFlags.create]], [[ViewFlags.copy]], and [[ViewFlags.override]] for methods accepting an object of this type.\n * @public\n * @extensions\n */\nexport type ViewFlagsProperties = Mutable<NonFunctionPropertiesOf<ViewFlags>>;\n\n/** A type that describes how to override selected properties of a [[ViewFlags]].\n * @see [[ViewFlags.override]] to apply the overrides to a ViewFlags object.\n * @public\n * @extensions\n */\nexport type ViewFlagOverrides = Partial<ViewFlagsProperties>;\n"]}
1
+ {"version":3,"file":"ViewFlags.js","sourceRoot":"","sources":["../../src/ViewFlags.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 DisplayStyles\n */\n\n// cspell:ignore ovrs\n\nimport { JsonUtils, Mutable, NonFunctionPropertiesOf } from \"@itwin/core-bentley\";\n\n/** Enumerates the available basic rendering modes, as part of a [DisplayStyle]($backend)'s [[ViewFlags]].\n * The rendering mode broadly affects various aspects of the display style - in particular, whether and how surfaces and their edges are drawn.\n * @public\n * @extensions\n */\nexport enum RenderMode {\n /** Renders only the edges of surfaces, with exceptions for planar regions based on their [[FillFlags]].\n * Lighting (and by extension, shadows) is not applied.\n * [[HiddenLine.Settings]] are not applied - edges use the elements' width, style, and color.\n * [[ViewFlags.hiddenEdges]] is ignored - hidden edges are never displayed in wireframe mode.\n */\n Wireframe = 0,\n /** By default, renders surfaces without their edges.\n * Lighting and shadows can be applied using [[ViewFlags.lighting]] and [[ViewFlags.shadows]].\n * Edges can be enabled using [[ViewFlags.visibleEdges]] and [[ViewFlags.hiddenEdges]], and their appearance customized using [[HiddenLine.Settings]].\n * Surfaces can be drawn with transparency, based on [[ViewFlags.transparency]].\n */\n SmoothShade = 6,\n /** Renders surfaces and their edges. By default, edges are drawn in white; this can be overridden using [[HiddenLine.Settings]].\n * All surfaces are rendered opaque. If a surface's transparency is below that specified by [[HiddenLine.Settings.transparencyThreshold]], it is not rendered.\n * Materials and textures are not applied - surfaces are drawn in their actual colors.\n * [[ViewFlags.visibleEdges]] is ignored - visible edges are always drawn. Hidden edges can be enabled using [[ViewFlags.hiddenEdges]].\n * Lighting (and by extension, shadows) is not applied.\n */\n SolidFill = 4,\n /** Identical to [[RenderMode.SolidFill]], except:\n * - Surfaces are drawn using the [DisplayStyle]($backend)'s background color.\n * - Edges are drawn using their surface's colors; this can be overridden using [[HiddenLine.Settings]].\n */\n HiddenLine = 3,\n}\n\n/** JSON representation of [[ViewFlags]].\n * This is a persistence format with some unfortunate quirks that have been retained for backwards compatibility.\n * In particular, it supplies three separate flags intended to control lighting - [[noCameraLights]], [[noSourceLights]], and [[noSolarLight]] -\n * but there exists only a single [[ViewFlags.lighting]] flag. [[ViewFlags.lighting]] is set to true unless all three of the \"no lighting\" flags are true.\n * It also uses awkward negative ([[noConstruct]], [[noTransp]]) and/or abbreviated ([[clipVol]], [[visEdges]]) property names that differ from\n * those of the corresponding [[ViewFlags]] properties, making usage of this type in code error-prone.\n * Prefer to use [[ViewFlagsProperties]] unless you need to work directly with the persistence format.\n * @public\n * @extensions\n */\nexport interface ViewFlagProps {\n /** If true, don't display geometry of class [[GeometryClass.Construction]]. */\n noConstruct?: boolean;\n /** If true, don't display geometry of class [[GeometryClass.Dimension]]. */\n noDim?: boolean;\n /** If true, don't display geometry of class [[GeometryClass.Pattern]]. */\n noPattern?: boolean;\n /** If true, all lines are drawn with a width of 1 pixel. */\n noWeight?: boolean;\n /** If true, don't apply [[LinePixels]] styles. */\n noStyle?: boolean;\n /** If true, display transparency geometry as opaque. */\n noTransp?: boolean;\n /** If true, don't show filled planar regions, unless they use [[FillFlags.Always]]. */\n noFill?: boolean;\n /** If true, display a grid in the view. */\n grid?: boolean;\n /** If true, display graphics representing the [AuxCoordSystem]($backend). */\n acs?: boolean;\n /** If true, don't apply [[RenderTexture]]s to surfaces. */\n noTexture?: boolean;\n /** If true, don't apply [[RenderMaterial]]s to surfaces. */\n noMaterial?: boolean;\n /** See [[ViewFlagProps]] for how this affects [[ViewFlags.lighting]]. */\n noCameraLights?: boolean;\n /** See [[ViewFlagProps]] for how this affects [[ViewFlags.lighting]]. */\n noSourceLights?: boolean;\n /** See [[ViewFlagProps]] for how this affects [[ViewFlags.lighting]]. */\n noSolarLight?: boolean;\n /** If true, display the edges of surfaces. */\n visEdges?: boolean;\n /** If true, display the edges of surfaces, even if they are behind other geometry. */\n hidEdges?: boolean;\n /** If true, display shadows. */\n shadows?: boolean;\n /** If true, apply the view's clipping volume. Has no effect on other types of clips like [[ModelClipGroups]]. */\n clipVol?: boolean;\n /** If true, apply the view's [[DisplayStyleSettings.monochromeColor]] and [[DisplayStyleSettings.monochromeMode]] to produce a monochrome image. */\n monochrome?: boolean;\n /** The basic rendering mode, which affects the behavior of other flags. */\n renderMode?: RenderMode;\n /** Display a background map. */\n backgroundMap?: boolean;\n /** If true, apply [[AmbientOcclusion]]. */\n ambientOcclusion?: boolean;\n /** If true, apply [[ThematicDisplay]]. */\n thematicDisplay?: boolean;\n /** If true, overlay surfaces with wiremesh to reveal their triangulation. */\n wiremesh?: boolean;\n /** Controls whether surface discard is always applied regardless of other ViewFlags.\n * Surface shaders contain complicated logic to ensure that the edges of a surface always draw in front of the surface, and that planar surfaces sketched coincident with\n * non-planar surfaces always draw in front of those non-planar surfaces.\n * When this view flag is set to false (the default), then for 3d views if the render mode is wireframe (only edges are displayed) or smooth shader with visible edges turned off (only surfaces are displayed),\n * that logic does not execute, potentially improving performance for no degradation in visual quality. In some scenarios - such as wireframe views containing many planar regions with interior fill, or smooth views containing many coincident planar and non-planar surfaces - enabling this view flag improves display quality by forcing that logic to execute.\n */\n forceSurfaceDiscard?: boolean;\n /** Disables the \"white-on-white reversal\" employed by some CAD applications.\n * @see [[ViewFlags.whiteOnWhiteReversal]].\n */\n noWhiteOnWhiteReversal?: boolean;\n}\n\nfunction edgesRequired(renderMode: RenderMode, visibleEdges: boolean): boolean {\n return visibleEdges || RenderMode.SmoothShade !== renderMode;\n}\n\n/** Flags controlling how graphics appear within a view.\n * A [[ViewFlags]] object is immutable. There are several ways to produce a modified copy of a ViewFlags object:\n * ```ts\n * // Start with the default values for all properties.\n * let vf = ViewFlags.defaults;\n * // Change a single boolean property:\n * vf = vf.with(\"visibleEdges\", true);\n * // Change only the render mode:\n * vf = vf.withRenderMode(RenderMode.HiddenLine);\n * // Change multiple properties:\n * vf = vf.copy({ renderMode: RenderMode.SmoothShade, visibleEdges: true });\n * // Reset multiple properties to their default values:\n * vf = vf.copy({ renderMode: undefined, visibleEdges: undefined });\n *\n * ```\n * [[with]] and [[withRenderMode]] should be preferred if you only need to change a single property, as they will not create a new object unless\n * the new value differs from the current value.\n * [[copy]] and [[override]] should be preferred if you need to change multiple properties, as they will create no more than one new object, vs\n * each call to [[with]] or [[withRenderMode]] potentially creating a new object.\n * @see [[DisplayStyleSettings.viewFlags]] to define the view flags for a [DisplayStyle]($backend).\n * @public\n */\nexport class ViewFlags {\n /** The basic rendering mode applied to the view. This modulates the behavior of some of the other flags.\n * Default: [[RenderMode.Wireframe]].\n * @see [[RenderMode]] for details.\n */\n public readonly renderMode: RenderMode;\n /** Whether to display geometry of class [[GeometryClass.Dimension]]. Default: true. */\n public readonly dimensions: boolean;\n /** Whether to display geometry of class [[GeometryClass.Pattern]]. Default: true. */\n public readonly patterns: boolean;\n /** Whether to allow lines and edges to draw with width greater than one pixel. Default: true. */\n public readonly weights: boolean;\n /** Whether [[LinePixels]] are allowed to apply patterns to lines and edges. If false, they all draw as solid lines. Default: true. */\n public readonly styles: boolean;\n /** Whether element transparency is applied. If false, transparent geometry is drawn opaque. Default: true.\n * @see [[RenderMode]] for render mode-specific behavior.\n */\n public readonly transparency: boolean;\n /** In [[RenderMode.Wireframe]] only, whether to display the interiors of planar regions with [[FillFlags.ByView]]. Default: true. */\n public readonly fill: boolean;\n /** In [[RenderMode.SmoothShade]], whether to apply [[RenderTexture]]s to surfaces. Default: true. */\n public readonly textures: boolean;\n /** In [[RenderMode.SmoothShade]], whether to apply [[RenderMaterial]]s to surfaces. Default: true. */\n public readonly materials: boolean;\n /** Whether to display a graphical representation of the view's [AuxCoordSystem]($backend). Default: false. */\n public readonly acsTriad: boolean;\n /** Whether to display a grid. Default: false. */\n public readonly grid: boolean;\n /** In [[RenderMode.SmoothShade]], whether to display the edges of surfaces. Default: false.\n * @see [[HiddenLine.Settings]] to customize the appearance of the edges.\n */\n public readonly visibleEdges: boolean;\n /** In any mode except [[RenderMode.Wireframe]], whether to display the edges of surfaces occluded by other geometry.\n * This has no effect unless [[visibleEdges]] is also true.\n * Default: false.\n * @see [[HiddenLine.Settings]] to customize the appearance of the edges.\n */\n public readonly hiddenEdges: boolean;\n /** In [[RenderMode.SmoothShade]], whether to display solar shadows. This has no effect unless [[lighting]] is also true. Default: false.\n * @note Rendering shadows can reduce framerate, particularly on less capable graphics hardware or in complex scenes.\n */\n public readonly shadows: boolean;\n /** Whether to apply the view's clip volume to the geometry in the scene.\n * Default: true, except when using [[fromJSON]].\n * @see [[ViewDetails.clipVector]] to define the view's clip volume.\n */\n public readonly clipVolume: boolean;\n /** Whether to display geometry of class [[GeometryClass.Construction]].\n * Default: false, except when using [[fromJSON]].\n */\n public readonly constructions: boolean;\n /** Whether to produce a monochrome image. Default: false.\n * @see [DisplayStyleSettings.monochromeColor]($common) to define the monochrome color.\n * @see [DisplayStyleSettings.monochromeMode]($common) to define how the monochrome image is produced.\n */\n public readonly monochrome: boolean;\n /** Whether to display background map imagery. Default: false.\n * @see [[DisplayStyleSettings.backgroundMap]] to customize the map settings.\n */\n public readonly backgroundMap: boolean;\n /** In [[RenderMode.SmoothShade]], whether to apply [[AmbientOcclusion]]. Default: false. */\n public readonly ambientOcclusion: boolean;\n /** Whether to apply [[ThematicDisplay]]. Default: false. */\n public readonly thematicDisplay: boolean;\n /** If true, overlay surfaces with wiremesh to reveal their triangulation. */\n public readonly wiremesh: boolean;\n /** Controls whether surface discard is always applied regardless of other ViewFlags.\n * Surface shaders contain complicated logic to ensure that the edges of a surface always draw in front of the surface, and that planar surfaces sketched coincident with\n * non-planar surfaces always draw in front of those non-planar surfaces.\n * When this view flag is set to false (the default), then for 3d views if the render mode is wireframe (only edges are displayed) or smooth shader with visible edges turned off (only surfaces are displayed),\n * that logic does not execute, potentially improving performance for no degradation in visual quality. In some scenarios - such as wireframe views containing many planar regions with interior fill, or smooth views containing many coincident planar and non-planar surfaces - enabling this view flag improves display quality by forcing that logic to execute.\n */\n public readonly forceSurfaceDiscard: boolean;\n /** Whether to apply white-on-white reversal.\n * Some CAD applications use this to cause white geometry to be drawn as black if the view's background color is white.\n * When enabled, the [[DisplayStyleSettings]]' [[WhiteOnWhiteReversalSettings]] control how white-on-white reversal is applied.\n * Default: true.\n */\n public readonly whiteOnWhiteReversal: boolean;\n\n /** In [[RenderMode.SmoothShade]], whether to apply lighting to surfaces.\n * Default: false, except when using [[fromJSON]].\n * @see [[DisplayStyleSettings.lights]] to customize the light settings.\n */\n public readonly lighting: boolean;\n\n /** Create a new ViewFlags.\n * @param flags The properties to initialize. Any properties not specified are initialized to their default values.\n */\n public constructor(flags?: Partial<ViewFlagsProperties>) {\n this.renderMode = flags?.renderMode ?? RenderMode.Wireframe;\n this.dimensions = flags?.dimensions ?? true;\n this.patterns = flags?.patterns ?? true;\n this.weights = flags?.weights ?? true;\n this.styles = flags?.styles ?? true;\n this.transparency = flags?.transparency ?? true;\n this.fill = flags?.fill ?? true;\n this.textures = flags?.textures ?? true;\n this.materials = flags?.materials ?? true;\n this.acsTriad = flags?.acsTriad ?? false;\n this.grid = flags?.grid ?? false;\n this.visibleEdges = flags?.visibleEdges ?? false;\n this.hiddenEdges = flags?.hiddenEdges ?? false;\n this.shadows = flags?.shadows ?? false;\n this.clipVolume = flags?.clipVolume ?? true;\n this.constructions = flags?.constructions ?? false;\n this.monochrome = flags?.monochrome ?? false;\n this.backgroundMap = flags?.backgroundMap ?? false;\n this.ambientOcclusion = flags?.ambientOcclusion ?? false;\n this.thematicDisplay = flags?.thematicDisplay ?? false;\n this.wiremesh = flags?.wiremesh ?? false;\n this.forceSurfaceDiscard = flags?.forceSurfaceDiscard ?? false;\n this.whiteOnWhiteReversal = flags?.whiteOnWhiteReversal ?? true;\n this.lighting = flags?.lighting ?? false;\n }\n\n /** Produce a copy of these ViewFlags with some modified properties. Any properties not explicitly specified by `changedFlags` will retain their current values.\n * @param changedFlags Properties to modify.\n * @returns A copy of these ViewFlags modified according to the supplied properties.\n * @note Any explicitly `undefined` property of `changedFlags` will be set to its default value in the returned ViewFlags.\n * @see [[override]] to have `undefined` properties retain their current values.\n */\n public copy(changedFlags: Partial<ViewFlagsProperties>): ViewFlags {\n return JsonUtils.isNonEmptyObject(changedFlags) ? new ViewFlags({ ...this, ...changedFlags }) : this;\n }\n\n /** Produce a copy of these ViewFlags, overriding some of its properties. Any properties not explicitly specified by `overrides` will retain their current values,\n * as will any property explicitly set to `undefined`.\n * @param overrides The properties to override.\n * @see [[copy]] to have `undefined` properties reset to their default values.\n */\n public override(overrides: Partial<ViewFlagsProperties>): ViewFlags {\n // This method can get called very frequently when a RenderTimeline script is applied to the view. Often `overrides` will be an empty object.\n // To optimize:\n // - Bail as quickly as possible if nothing is actually overridden, without allocating a new ViewFlags.\n // - Only make a copy of the input if at least one property is explicitly `undefined`.\n let copied = false;\n let anyOverridden = false;\n\n for (const propName of Object.keys(overrides)) {\n const key = propName as keyof Partial<ViewFlagsProperties>;\n const overrideValue = overrides[key];\n if (undefined === overrideValue) {\n if (!copied) {\n // Don't modify input...\n overrides = { ...overrides };\n copied = true;\n }\n\n // `undefined` means \"retain existing value\".\n delete overrides[key];\n } else if (overrideValue !== this[key]) {\n anyOverridden = true;\n }\n }\n\n return anyOverridden ? this.copy(overrides) : this;\n }\n\n /** Produce a copy of these ViewFlags with a single boolean property changed.\n * @param flag The name of the property.\n * @param value The value to change the property to.\n * @returns A new ViewFlags with the property changed as specified, or `this` if the property already has the specified value.\n * @see [[withRenderMode]] to change the [[renderMode]] property.\n * @see [[copy]] and [[override]] to change multiple properties.\n */\n public with(flag: keyof Omit<ViewFlagsProperties, \"renderMode\">, value: boolean): ViewFlags {\n if (this[flag] === value)\n return this;\n\n const props: ViewFlagsProperties = { ...this };\n props[flag] = value;\n return new ViewFlags(props);\n }\n\n /** Produce a copy of these ViewFlags with a different [[renderMode]].\n * @param renderMode The new render mode.\n * @returns A new ViewFlags with the render mode changed as specified, or `this` if the render mode is already set to the requested value.\n * @see [[copy]] and [[override]] to change multiple properties.\n */\n public withRenderMode(renderMode: RenderMode): ViewFlags {\n return renderMode === this.renderMode ? this : this.copy({ renderMode });\n }\n\n /** Adjust view flags for renderer.\n * @internal\n */\n public normalize(): ViewFlags {\n switch (this.renderMode) {\n case RenderMode.Wireframe:\n if (this.visibleEdges || this.hiddenEdges)\n return this.copy({ visibleEdges: false, hiddenEdges: false });\n break;\n case RenderMode.SmoothShade:\n if (!this.visibleEdges)\n return this.copy({ hiddenEdges: false });\n break;\n case RenderMode.HiddenLine:\n case RenderMode.SolidFill:\n if (!this.visibleEdges || this.transparency)\n return this.copy({ visibleEdges: true, transparency: false });\n break;\n }\n\n return this;\n }\n\n /** Returns true if edges that could be occluded by other geometry are visible for the current [[RenderMode]]. */\n public hiddenEdgesVisible(): boolean {\n switch (this.renderMode) {\n case RenderMode.SolidFill:\n case RenderMode.HiddenLine:\n return this.hiddenEdges;\n case RenderMode.SmoothShade:\n return this.visibleEdges && this.hiddenEdges;\n }\n return true;\n }\n\n /** Returns true if the edges of surfaces should be displayed, based on [[RenderMode]] and the [[visibleEdges]] flag. */\n public edgesRequired(): boolean {\n return edgesRequired(this.renderMode, this.visibleEdges);\n }\n\n /** Convert to JSON representation.\n * Properties are omitted if they match the default values.\n */\n public toJSON(): ViewFlagProps {\n const out: ViewFlagProps = {};\n if (!this.constructions)\n out.noConstruct = true;\n if (!this.dimensions)\n out.noDim = true;\n if (!this.patterns)\n out.noPattern = true;\n if (!this.weights)\n out.noWeight = true;\n if (!this.styles)\n out.noStyle = true;\n if (!this.transparency)\n out.noTransp = true;\n if (!this.fill)\n out.noFill = true;\n if (this.grid)\n out.grid = true;\n if (this.acsTriad)\n out.acs = true;\n if (!this.textures)\n out.noTexture = true;\n if (!this.materials)\n out.noMaterial = true;\n if (!this.lighting)\n out.noCameraLights = out.noSourceLights = out.noSolarLight = true;\n if (this.visibleEdges)\n out.visEdges = true;\n if (this.hiddenEdges)\n out.hidEdges = true;\n if (this.shadows)\n out.shadows = true;\n if (this.clipVolume)\n out.clipVol = true;\n if (this.monochrome)\n out.monochrome = true;\n if (this.backgroundMap)\n out.backgroundMap = true;\n if (this.ambientOcclusion)\n out.ambientOcclusion = true;\n if (this.thematicDisplay)\n out.thematicDisplay = true;\n if (this.wiremesh)\n out.wiremesh = true;\n if (this.forceSurfaceDiscard)\n out.forceSurfaceDiscard = true;\n if (!this.whiteOnWhiteReversal)\n out.noWhiteOnWhiteReversal = true;\n\n out.renderMode = this.renderMode;\n return out;\n }\n\n /** Like [[toJSON]], but no properties are omitted. */\n public toFullyDefinedJSON(): Required<ViewFlagProps> {\n return {\n renderMode: this.renderMode,\n noConstruct: !this.constructions,\n noDim: !this.dimensions,\n noPattern: !this.patterns,\n noWeight: !this.weights,\n noStyle: !this.styles,\n noTransp: !this.transparency,\n noFill: !this.fill,\n grid: this.grid,\n acs: this.acsTriad,\n noTexture: !this.textures,\n noMaterial: !this.materials,\n noCameraLights: !this.lighting,\n noSourceLights: !this.lighting,\n noSolarLight: !this.lighting,\n visEdges: this.visibleEdges,\n hidEdges: this.hiddenEdges,\n shadows: this.shadows,\n clipVol: this.clipVolume,\n monochrome: this.monochrome,\n backgroundMap: this.backgroundMap,\n ambientOcclusion: this.ambientOcclusion,\n thematicDisplay: this.thematicDisplay,\n wiremesh: this.wiremesh,\n forceSurfaceDiscard: this.forceSurfaceDiscard,\n noWhiteOnWhiteReversal: !this.whiteOnWhiteReversal,\n };\n }\n\n /** A ViewFlags object with all properties initialized to their default values. */\n public static readonly defaults = new ViewFlags();\n\n /** Create a ViewFlags.\n * @param flags The properties to initialize. Any properties not specified are initialized to their default values.\n */\n public static create(flags?: Partial<ViewFlagsProperties>): ViewFlags {\n return flags && !JsonUtils.isEmptyObject(flags) ? new ViewFlags(flags) : this.defaults;\n }\n\n /** Create a ViewFlags from its JSON representation.\n * @note As described in [[ViewFlagProps]], the JSON representation is awkward and error-prone. Prefer to use [[create]] unless you\n * need to deal with the persistence format directly.\n * @note The default values differ slightly from those used by the constructor and [[create]]:\n * - [[clipVolume]] defaults to false.\n * - [[constructions]] defaults to true.\n * - [[lighting]] defaults to true unless all of [[ViewFlagProps.noSolarLight]], [[ViewFlagProps.noCameraLights]], and [[ViewFlagProps.noSourceLights]] are true.\n */\n public static fromJSON(json?: ViewFlagProps): ViewFlags {\n if (!json)\n return this.defaults;\n\n let renderMode: RenderMode;\n const renderModeValue = JsonUtils.asInt(json.renderMode);\n if (renderModeValue < RenderMode.HiddenLine)\n renderMode = RenderMode.Wireframe;\n else if (renderModeValue > RenderMode.SolidFill)\n renderMode = RenderMode.SmoothShade;\n else\n renderMode = renderModeValue;\n\n const lighting = !JsonUtils.asBool(json.noCameraLights) || !JsonUtils.asBool(json.noSourceLights) || !JsonUtils.asBool(json.noSolarLight);\n return new ViewFlags({\n renderMode,\n lighting,\n constructions: !JsonUtils.asBool(json.noConstruct),\n dimensions: !JsonUtils.asBool(json.noDim),\n patterns: !JsonUtils.asBool(json.noPattern),\n weights: !JsonUtils.asBool(json.noWeight),\n styles: !JsonUtils.asBool(json.noStyle),\n transparency: !JsonUtils.asBool(json.noTransp),\n fill: !JsonUtils.asBool(json.noFill),\n grid: JsonUtils.asBool(json.grid),\n acsTriad: JsonUtils.asBool(json.acs),\n textures: !JsonUtils.asBool(json.noTexture),\n materials: !JsonUtils.asBool(json.noMaterial),\n visibleEdges: JsonUtils.asBool(json.visEdges),\n hiddenEdges: JsonUtils.asBool(json.hidEdges),\n shadows: JsonUtils.asBool(json.shadows),\n clipVolume: JsonUtils.asBool(json.clipVol),\n monochrome: JsonUtils.asBool(json.monochrome),\n backgroundMap: JsonUtils.asBool(json.backgroundMap),\n ambientOcclusion: JsonUtils.asBool(json.ambientOcclusion),\n thematicDisplay: JsonUtils.asBool(json.thematicDisplay),\n wiremesh: JsonUtils.asBool(json.wiremesh),\n forceSurfaceDiscard: JsonUtils.asBool(json.forceSurfaceDiscard),\n whiteOnWhiteReversal: !JsonUtils.asBool(json.noWhiteOnWhiteReversal),\n });\n }\n\n /** Returns true if `this` and `other` are equivalent. */\n public equals(other: Readonly<ViewFlagsProperties>): boolean {\n if (this === other)\n return true;\n\n return this.renderMode === other.renderMode\n && this.dimensions === other.dimensions\n && this.patterns === other.patterns\n && this.weights === other.weights\n && this.styles === other.styles\n && this.transparency === other.transparency\n && this.fill === other.fill\n && this.textures === other.textures\n && this.materials === other.materials\n && this.acsTriad === other.acsTriad\n && this.grid === other.grid\n && this.visibleEdges === other.visibleEdges\n && this.hiddenEdges === other.hiddenEdges\n && this.lighting === other.lighting\n && this.shadows === other.shadows\n && this.clipVolume === other.clipVolume\n && this.constructions === other.constructions\n && this.monochrome === other.monochrome\n && this.backgroundMap === other.backgroundMap\n && this.ambientOcclusion === other.ambientOcclusion\n && this.thematicDisplay === other.thematicDisplay\n && this.wiremesh === other.wiremesh\n && this.forceSurfaceDiscard === other.forceSurfaceDiscard\n && this.whiteOnWhiteReversal === other.whiteOnWhiteReversal;\n }\n}\n\n/** A type containing all of the properties of [[ViewFlags]] with none of the methods and with the `readonly` modifiers removed.\n * @see [[ViewFlags.create]], [[ViewFlags.copy]], and [[ViewFlags.override]] for methods accepting an object of this type.\n * @public\n * @extensions\n */\nexport type ViewFlagsProperties = Mutable<NonFunctionPropertiesOf<ViewFlags>>;\n\n/** A type that describes how to override selected properties of a [[ViewFlags]].\n * @see [[ViewFlags.override]] to apply the overrides to a ViewFlags object.\n * @public\n * @extensions\n */\nexport type ViewFlagOverrides = Partial<ViewFlagsProperties>;\n"]}
@@ -244,7 +244,7 @@ class RpcInvocation {
244
244
  status.responseValue = rawResult; // for ipc case
245
245
  fulfillment.rawResult = status;
246
246
  }
247
- if (rawResult instanceof BentleyError) {
247
+ if (rawResult instanceof Error) {
248
248
  fulfillment.status = StatusCategory.for(rawResult).code;
249
249
  }
250
250
  }