@itwin/core-common 4.1.0-dev.66 → 4.1.0-dev.68
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -1
- package/lib/cjs/RpcInterface.d.ts +1 -1
- package/lib/cjs/RpcInterface.d.ts.map +1 -1
- package/lib/cjs/RpcInterface.js +1 -1
- package/lib/cjs/RpcInterface.js.map +1 -1
- package/lib/cjs/geometry/AreaPattern.js +2 -2
- package/lib/cjs/geometry/AreaPattern.js.map +1 -1
- package/lib/esm/RpcInterface.d.ts +1 -1
- package/lib/esm/RpcInterface.d.ts.map +1 -1
- package/lib/esm/RpcInterface.js +1 -1
- package/lib/esm/RpcInterface.js.map +1 -1
- package/lib/esm/geometry/AreaPattern.js +2 -2
- package/lib/esm/geometry/AreaPattern.js.map +1 -1
- package/package.json +6 -6
package/CHANGELOG.md
CHANGED
|
@@ -1,6 +1,11 @@
|
|
|
1
1
|
# Change Log - @itwin/core-common
|
|
2
2
|
|
|
3
|
-
This log was last generated on
|
|
3
|
+
This log was last generated on Tue, 18 Jul 2023 13:47:06 GMT and should not be manually modified.
|
|
4
|
+
|
|
5
|
+
## 4.0.5
|
|
6
|
+
Tue, 18 Jul 2023 12:21:56 GMT
|
|
7
|
+
|
|
8
|
+
_Version update only_
|
|
4
9
|
|
|
5
10
|
## 4.0.4
|
|
6
11
|
Wed, 12 Jul 2023 15:50:01 GMT
|
|
@@ -33,7 +33,7 @@ export declare abstract class RpcInterface {
|
|
|
33
33
|
readonly configuration: RpcConfiguration;
|
|
34
34
|
/** @internal */
|
|
35
35
|
readonly routing: RpcRoutingToken;
|
|
36
|
-
/** @
|
|
36
|
+
/** @beta */
|
|
37
37
|
constructor(routing?: RpcRoutingToken);
|
|
38
38
|
/** Obtains the implementation result for an RPC operation. */
|
|
39
39
|
forward<T = any>(parameters: IArguments): Promise<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcInterface.d.ts","sourceRoot":"","sources":["../../src/RpcInterface.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAGzF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAW7D;;;;GAIG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IAAI,SAAS,EAAE,CAAC,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE;AAEhJ;;;GAGG;AACH,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,UAAU,CAAC,CAAC;AAS5F;;;GAGG;AACH,8BAAsB,YAAY;IAEhC,OAAO,CAAC,MAAM,CAAC,QAAQ;IAQvB,OAAO,CAAC,MAAM,CAAC,QAAQ;IAYvB,8JAA8J;WAChJ,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAwB7E;;OAEG;IACH,SAAgB,aAAa,EAAE,gBAAgB,CAAC;IAEhD,gBAAgB;IAChB,SAAgB,OAAO,EAAE,eAAe,CAAC;IAEzC,
|
|
1
|
+
{"version":3,"file":"RpcInterface.d.ts","sourceRoot":"","sources":["../../src/RpcInterface.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAGzF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAW7D;;;;GAIG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IAAI,SAAS,EAAE,CAAC,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE;AAEhJ;;;GAGG;AACH,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,UAAU,CAAC,CAAC;AAS5F;;;GAGG;AACH,8BAAsB,YAAY;IAEhC,OAAO,CAAC,MAAM,CAAC,QAAQ;IAQvB,OAAO,CAAC,MAAM,CAAC,QAAQ;IAYvB,8JAA8J;WAChJ,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAwB7E;;OAEG;IACH,SAAgB,aAAa,EAAE,gBAAgB,CAAC;IAEhD,gBAAgB;IAChB,SAAgB,OAAO,EAAE,eAAe,CAAC;IAEzC,YAAY;gBACO,OAAO,GAAE,eAAyC;IAKrE,8DAA8D;IACjD,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC;IAgBjE,gBAAgB;IACT,qBAAqB,EAAE,wBAAwB,GAAG,SAAS,CAAC;CACpE"}
|
package/lib/cjs/RpcInterface.js
CHANGED
|
@@ -57,7 +57,7 @@ class RpcInterface {
|
|
|
57
57
|
// patch difference is fine. If minor versions differ, compatible as long as backend minor version is greater
|
|
58
58
|
return difference === "patch" || (difference === "minor" && frontendSemver.minor < backendSemver.minor);
|
|
59
59
|
}
|
|
60
|
-
/** @
|
|
60
|
+
/** @beta */
|
|
61
61
|
constructor(routing = RpcRoutingToken_1.RpcRoutingToken.default) {
|
|
62
62
|
this.routing = routing;
|
|
63
63
|
this.configuration = RpcConfiguration_1.RpcConfiguration.supply(this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcInterface.js","sourceRoot":"","sources":["../../src/RpcInterface.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RpcInterface\r\n */\r\nimport { RpcConfiguration, RpcConfigurationSupplier } from \"./rpc/core/RpcConfiguration\";\r\nimport { CURRENT_REQUEST } from \"./rpc/core/RpcRegistry\";\r\nimport { aggregateLoad, RpcRequest } from \"./rpc/core/RpcRequest\";\r\nimport { RpcRoutingToken } from \"./rpc/core/RpcRoutingToken\";\r\nimport { InterceptedRpcRequest, IpcSession } from \"./ipc/IpcSession\";\r\nimport { RpcSerializedValue } from \"./rpc/core/RpcMarshaling\";\r\nimport { RpcManagedStatus } from \"./rpc/core/RpcProtocol\";\r\nimport { BentleyStatus, IModelError, NoContentError } from \"./IModelError\";\r\nimport { RpcRequestEvent, RpcRequestStatus } from \"./rpc/core/RpcConstants\";\r\nimport { BeDuration } from \"@itwin/core-bentley\";\r\nimport { RpcNotFoundResponse } from \"./rpc/core/RpcControl\";\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\n/**\r\n * Specifies the required static properties of an RpcInterface class.\r\n * These properties are used to identify RPC requests and responses.\r\n * @beta\r\n */\r\nexport interface RpcInterfaceDefinition<T extends RpcInterface = RpcInterface> { prototype: T, interfaceName: string, interfaceVersion: string }\r\n\r\n/**\r\n * A class that implements the operations of an RPC interface.\r\n * @beta\r\n */\r\nexport type RpcInterfaceImplementation<T extends RpcInterface = RpcInterface> = new () => T;\r\n\r\ninterface SemverType {\r\n major: number;\r\n minor: number;\r\n patch: number;\r\n prerelease?: string;\r\n}\r\n\r\n/** An RPC interface is a set of operations exposed by a service that a client can call, using configurable protocols,\r\n * in a platform-independent way. TheRpcInterface class is the base class for RPC interface definitions and implementations.\r\n * @public\r\n */\r\nexport abstract class RpcInterface {\r\n\r\n private static findDiff(backend: SemverType, frontend: SemverType) {\r\n return backend.major !== frontend.major ? \"major\" :\r\n backend.minor !== frontend.minor ? \"minor\" :\r\n backend.patch !== frontend.patch ? \"patch\" :\r\n backend.prerelease !== frontend.prerelease ? \"prerelease\" :\r\n \"same\";\r\n }\r\n\r\n private static parseVer(version: string): SemverType {\r\n // separate the version from the prerelease tag\r\n const parts = version.split(/[:-]/);\r\n // Split the major.minor.path into separate components\r\n const prefix = parts[0].split(\".\");\r\n\r\n const ver: SemverType = { major: Number(prefix[0]), minor: Number(prefix[1]), patch: Number(prefix[2]) };\r\n if (parts.length > 1)\r\n ver.prerelease = parts[1];\r\n return ver;\r\n }\r\n\r\n /** Determines whether the backend version of an RPC interface is compatible (according to semantic versioning) with the frontend version of the interface. */\r\n public static isVersionCompatible(backend: string, frontend: string): boolean {\r\n if (backend === frontend)\r\n return true; // most common case, versions are identical\r\n\r\n const backendSemver = this.parseVer(backend);\r\n const frontendSemver = this.parseVer(frontend);\r\n\r\n // if either has a prerelease tag, they are not compatible unless version strings are identical\r\n if (backendSemver.prerelease || frontendSemver.prerelease)\r\n return false;\r\n\r\n const difference = this.findDiff(backendSemver, frontendSemver);\r\n // If the major versions are different, the versions are not compatible\r\n if (difference === \"major\")\r\n return false;\r\n\r\n // special case for major version 0. If patch difference, backend patch must be greater than frontend patch\r\n if (backendSemver.major === 0)\r\n return (difference === \"patch\" && frontendSemver.patch < backendSemver.patch);\r\n\r\n // patch difference is fine. If minor versions differ, compatible as long as backend minor version is greater\r\n return difference === \"patch\" || (difference === \"minor\" && frontendSemver.minor < backendSemver.minor);\r\n }\r\n\r\n /** The configuration for the RPC interface.\r\n * @internal\r\n */\r\n public readonly configuration: RpcConfiguration;\r\n\r\n /** @internal */\r\n public readonly routing: RpcRoutingToken;\r\n\r\n /** @internal */\r\n public constructor(routing: RpcRoutingToken = RpcRoutingToken.default) {\r\n this.routing = routing;\r\n this.configuration = RpcConfiguration.supply(this);\r\n }\r\n\r\n /** Obtains the implementation result for an RPC operation. */\r\n public async forward<T = any>(parameters: IArguments): Promise<T> {\r\n const parametersCompat = (arguments.length === 1 && typeof (parameters) === \"object\") ? parameters : arguments;\r\n const parametersArray = Array.isArray(parametersCompat) ? parametersCompat : Array.prototype.slice.call(parametersCompat);\r\n const operationName = parametersArray.pop();\r\n\r\n const session = IpcSession.active;\r\n if (session) {\r\n return intercept(session, this, operationName, parametersArray);\r\n } else {\r\n const request = new (this.configuration.protocol.requestType as any)(this, operationName, parametersArray) as RpcRequest;\r\n request.submit(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n (this as any)[CURRENT_REQUEST] = request;\r\n return request.response;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public configurationSupplier: RpcConfigurationSupplier | undefined;\r\n}\r\n\r\nRpcInterface.prototype.configurationSupplier = undefined;\r\n\r\nclass InterceptedRequest extends RpcRequest {\r\n protected override async load(): Promise<RpcSerializedValue> { throw new Error(); }\r\n protected override async send(): Promise<number> { throw new Error(); }\r\n protected override setHeader(_name: string, _value: string): void { throw new Error(); }\r\n}\r\n\r\nasync function intercept(session: IpcSession, client: RpcInterface, operation: string, parameters: any[]) {\r\n const request = new InterceptedRequest(client, operation, []);\r\n (client as any)[CURRENT_REQUEST] = request;\r\n\r\n const context = await client.configuration.protocol.serialize(request);\r\n request.parameters = parameters;\r\n\r\n const info: InterceptedRpcRequest = {\r\n definition: {\r\n interfaceName: context.operation.interfaceDefinition,\r\n interfaceVersion: context.operation.interfaceVersion,\r\n },\r\n operation,\r\n parameters,\r\n context: {\r\n applicationId: context.applicationId,\r\n applicationVersion: context.applicationVersion,\r\n id: context.id,\r\n sessionId: context.sessionId,\r\n protocolVersion: (context.protocolVersion || 0).toString(),\r\n },\r\n };\r\n\r\n const dispatch = async () => {\r\n aggregateLoad.lastRequest = new Date().getTime();\r\n\r\n const response = await session.handleRpc(info);\r\n\r\n aggregateLoad.lastResponse = new Date().getTime();\r\n\r\n if (typeof (response) === \"object\" && response.hasOwnProperty(\"iTwinRpcCoreResponse\") && response.hasOwnProperty(\"managedStatus\")) {\r\n const status: RpcManagedStatus = response;\r\n\r\n if (status.managedStatus === \"pending\") {\r\n return handlePending(request, status, dispatch);\r\n } else if (status.managedStatus === \"notFound\") {\r\n return handleNotFound(request, status, dispatch);\r\n } else if (status.managedStatus === \"noContent\") {\r\n return handleNoContent();\r\n }\r\n } else {\r\n return response;\r\n }\r\n };\r\n\r\n return dispatch();\r\n}\r\n\r\nasync function handlePending(request: InterceptedRequest, status: RpcManagedStatus, dispatch: () => Promise<any>) {\r\n request._status = RpcRequestStatus.Pending;\r\n request._extendedStatus = (status.responseValue as { message: string }).message;\r\n RpcRequest.events.raiseEvent(RpcRequestEvent.PendingUpdateReceived, request);\r\n\r\n const delay = request.operation.policy.retryInterval(request.client.configuration);\r\n\r\n await BeDuration.wait(delay);\r\n return dispatch();\r\n}\r\n\r\nasync function handleNotFound(request: InterceptedRequest, status: RpcManagedStatus, dispatch: () => Promise<any>) {\r\n return new Promise((resolve, reject) => {\r\n let resubmitted = false;\r\n\r\n RpcRequest.notFoundHandlers.raiseEvent(request, status.responseValue as RpcNotFoundResponse, async () => {\r\n if (resubmitted) {\r\n throw new IModelError(BentleyStatus.ERROR, `Already resubmitted using this handler.`);\r\n }\r\n\r\n resubmitted = true;\r\n\r\n try {\r\n const response = await dispatch();\r\n resolve(response);\r\n } catch (err) {\r\n reject(err);\r\n }\r\n }, reject);\r\n });\r\n}\r\n\r\nasync function handleNoContent() {\r\n throw new NoContentError();\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"RpcInterface.js","sourceRoot":"","sources":["../../src/RpcInterface.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RpcInterface\r\n */\r\nimport { RpcConfiguration, RpcConfigurationSupplier } from \"./rpc/core/RpcConfiguration\";\r\nimport { CURRENT_REQUEST } from \"./rpc/core/RpcRegistry\";\r\nimport { aggregateLoad, RpcRequest } from \"./rpc/core/RpcRequest\";\r\nimport { RpcRoutingToken } from \"./rpc/core/RpcRoutingToken\";\r\nimport { InterceptedRpcRequest, IpcSession } from \"./ipc/IpcSession\";\r\nimport { RpcSerializedValue } from \"./rpc/core/RpcMarshaling\";\r\nimport { RpcManagedStatus } from \"./rpc/core/RpcProtocol\";\r\nimport { BentleyStatus, IModelError, NoContentError } from \"./IModelError\";\r\nimport { RpcRequestEvent, RpcRequestStatus } from \"./rpc/core/RpcConstants\";\r\nimport { BeDuration } from \"@itwin/core-bentley\";\r\nimport { RpcNotFoundResponse } from \"./rpc/core/RpcControl\";\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\n/**\r\n * Specifies the required static properties of an RpcInterface class.\r\n * These properties are used to identify RPC requests and responses.\r\n * @beta\r\n */\r\nexport interface RpcInterfaceDefinition<T extends RpcInterface = RpcInterface> { prototype: T, interfaceName: string, interfaceVersion: string }\r\n\r\n/**\r\n * A class that implements the operations of an RPC interface.\r\n * @beta\r\n */\r\nexport type RpcInterfaceImplementation<T extends RpcInterface = RpcInterface> = new () => T;\r\n\r\ninterface SemverType {\r\n major: number;\r\n minor: number;\r\n patch: number;\r\n prerelease?: string;\r\n}\r\n\r\n/** An RPC interface is a set of operations exposed by a service that a client can call, using configurable protocols,\r\n * in a platform-independent way. TheRpcInterface class is the base class for RPC interface definitions and implementations.\r\n * @public\r\n */\r\nexport abstract class RpcInterface {\r\n\r\n private static findDiff(backend: SemverType, frontend: SemverType) {\r\n return backend.major !== frontend.major ? \"major\" :\r\n backend.minor !== frontend.minor ? \"minor\" :\r\n backend.patch !== frontend.patch ? \"patch\" :\r\n backend.prerelease !== frontend.prerelease ? \"prerelease\" :\r\n \"same\";\r\n }\r\n\r\n private static parseVer(version: string): SemverType {\r\n // separate the version from the prerelease tag\r\n const parts = version.split(/[:-]/);\r\n // Split the major.minor.path into separate components\r\n const prefix = parts[0].split(\".\");\r\n\r\n const ver: SemverType = { major: Number(prefix[0]), minor: Number(prefix[1]), patch: Number(prefix[2]) };\r\n if (parts.length > 1)\r\n ver.prerelease = parts[1];\r\n return ver;\r\n }\r\n\r\n /** Determines whether the backend version of an RPC interface is compatible (according to semantic versioning) with the frontend version of the interface. */\r\n public static isVersionCompatible(backend: string, frontend: string): boolean {\r\n if (backend === frontend)\r\n return true; // most common case, versions are identical\r\n\r\n const backendSemver = this.parseVer(backend);\r\n const frontendSemver = this.parseVer(frontend);\r\n\r\n // if either has a prerelease tag, they are not compatible unless version strings are identical\r\n if (backendSemver.prerelease || frontendSemver.prerelease)\r\n return false;\r\n\r\n const difference = this.findDiff(backendSemver, frontendSemver);\r\n // If the major versions are different, the versions are not compatible\r\n if (difference === \"major\")\r\n return false;\r\n\r\n // special case for major version 0. If patch difference, backend patch must be greater than frontend patch\r\n if (backendSemver.major === 0)\r\n return (difference === \"patch\" && frontendSemver.patch < backendSemver.patch);\r\n\r\n // patch difference is fine. If minor versions differ, compatible as long as backend minor version is greater\r\n return difference === \"patch\" || (difference === \"minor\" && frontendSemver.minor < backendSemver.minor);\r\n }\r\n\r\n /** The configuration for the RPC interface.\r\n * @internal\r\n */\r\n public readonly configuration: RpcConfiguration;\r\n\r\n /** @internal */\r\n public readonly routing: RpcRoutingToken;\r\n\r\n /** @beta */\r\n public constructor(routing: RpcRoutingToken = RpcRoutingToken.default) {\r\n this.routing = routing;\r\n this.configuration = RpcConfiguration.supply(this);\r\n }\r\n\r\n /** Obtains the implementation result for an RPC operation. */\r\n public async forward<T = any>(parameters: IArguments): Promise<T> {\r\n const parametersCompat = (arguments.length === 1 && typeof (parameters) === \"object\") ? parameters : arguments;\r\n const parametersArray = Array.isArray(parametersCompat) ? parametersCompat : Array.prototype.slice.call(parametersCompat);\r\n const operationName = parametersArray.pop();\r\n\r\n const session = IpcSession.active;\r\n if (session) {\r\n return intercept(session, this, operationName, parametersArray);\r\n } else {\r\n const request = new (this.configuration.protocol.requestType as any)(this, operationName, parametersArray) as RpcRequest;\r\n request.submit(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n (this as any)[CURRENT_REQUEST] = request;\r\n return request.response;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public configurationSupplier: RpcConfigurationSupplier | undefined;\r\n}\r\n\r\nRpcInterface.prototype.configurationSupplier = undefined;\r\n\r\nclass InterceptedRequest extends RpcRequest {\r\n protected override async load(): Promise<RpcSerializedValue> { throw new Error(); }\r\n protected override async send(): Promise<number> { throw new Error(); }\r\n protected override setHeader(_name: string, _value: string): void { throw new Error(); }\r\n}\r\n\r\nasync function intercept(session: IpcSession, client: RpcInterface, operation: string, parameters: any[]) {\r\n const request = new InterceptedRequest(client, operation, []);\r\n (client as any)[CURRENT_REQUEST] = request;\r\n\r\n const context = await client.configuration.protocol.serialize(request);\r\n request.parameters = parameters;\r\n\r\n const info: InterceptedRpcRequest = {\r\n definition: {\r\n interfaceName: context.operation.interfaceDefinition,\r\n interfaceVersion: context.operation.interfaceVersion,\r\n },\r\n operation,\r\n parameters,\r\n context: {\r\n applicationId: context.applicationId,\r\n applicationVersion: context.applicationVersion,\r\n id: context.id,\r\n sessionId: context.sessionId,\r\n protocolVersion: (context.protocolVersion || 0).toString(),\r\n },\r\n };\r\n\r\n const dispatch = async () => {\r\n aggregateLoad.lastRequest = new Date().getTime();\r\n\r\n const response = await session.handleRpc(info);\r\n\r\n aggregateLoad.lastResponse = new Date().getTime();\r\n\r\n if (typeof (response) === \"object\" && response.hasOwnProperty(\"iTwinRpcCoreResponse\") && response.hasOwnProperty(\"managedStatus\")) {\r\n const status: RpcManagedStatus = response;\r\n\r\n if (status.managedStatus === \"pending\") {\r\n return handlePending(request, status, dispatch);\r\n } else if (status.managedStatus === \"notFound\") {\r\n return handleNotFound(request, status, dispatch);\r\n } else if (status.managedStatus === \"noContent\") {\r\n return handleNoContent();\r\n }\r\n } else {\r\n return response;\r\n }\r\n };\r\n\r\n return dispatch();\r\n}\r\n\r\nasync function handlePending(request: InterceptedRequest, status: RpcManagedStatus, dispatch: () => Promise<any>) {\r\n request._status = RpcRequestStatus.Pending;\r\n request._extendedStatus = (status.responseValue as { message: string }).message;\r\n RpcRequest.events.raiseEvent(RpcRequestEvent.PendingUpdateReceived, request);\r\n\r\n const delay = request.operation.policy.retryInterval(request.client.configuration);\r\n\r\n await BeDuration.wait(delay);\r\n return dispatch();\r\n}\r\n\r\nasync function handleNotFound(request: InterceptedRequest, status: RpcManagedStatus, dispatch: () => Promise<any>) {\r\n return new Promise((resolve, reject) => {\r\n let resubmitted = false;\r\n\r\n RpcRequest.notFoundHandlers.raiseEvent(request, status.responseValue as RpcNotFoundResponse, async () => {\r\n if (resubmitted) {\r\n throw new IModelError(BentleyStatus.ERROR, `Already resubmitted using this handler.`);\r\n }\r\n\r\n resubmitted = true;\r\n\r\n try {\r\n const response = await dispatch();\r\n resolve(response);\r\n } catch (err) {\r\n reject(err);\r\n }\r\n }, reject);\r\n });\r\n}\r\n\r\nasync function handleNoContent() {\r\n throw new NoContentError();\r\n}\r\n"]}
|
|
@@ -153,7 +153,7 @@ var AreaPattern;
|
|
|
153
153
|
applyTransform(transform) {
|
|
154
154
|
if (transform.isIdentity)
|
|
155
155
|
return true;
|
|
156
|
-
|
|
156
|
+
let origin = this.origin ? this.origin : core_geometry_1.Point3d.createZero();
|
|
157
157
|
const rMatrix = this.rotation ? this.rotation.toMatrix3d() : core_geometry_1.Matrix3d.createIdentity();
|
|
158
158
|
if (this.symbolId !== undefined) {
|
|
159
159
|
this.space1 = Params.transformPatternSpace(transform, this.space1 ? this.space1 : 0.0, rMatrix, this.angle1);
|
|
@@ -186,7 +186,7 @@ var AreaPattern;
|
|
|
186
186
|
if (this.space2 && 0 !== this.space2)
|
|
187
187
|
this.space2 = Params.transformPatternSpace(transform, this.space2, rMatrix, this.angle2);
|
|
188
188
|
}
|
|
189
|
-
transform.multiplyPoint3d(origin);
|
|
189
|
+
origin = transform.multiplyPoint3d(origin);
|
|
190
190
|
rMatrix.multiplyMatrixMatrix(transform.matrix, rMatrix);
|
|
191
191
|
const normalized = core_geometry_1.Matrix3d.createRigidFromMatrix3d(rMatrix);
|
|
192
192
|
if (!normalized)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AreaPattern.js","sourceRoot":"","sources":["../../../src/geometry/AreaPattern.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Symbology\r\n */\r\n\r\nimport { Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n Angle, AngleProps, Geometry, Matrix3d, Point2d, Point3d, Transform, XYProps, XYZProps, YawPitchRollAngles, YawPitchRollProps,\r\n} from \"@itwin/core-geometry\";\r\nimport { ColorDef, ColorDefProps } from \"../ColorDef\";\r\n\r\n/** @public */\r\nexport namespace AreaPattern {\r\n /** Single hatch line definition */\r\n export interface HatchDefLineProps {\r\n /** Angle of hatch line, 0.0 if undefined */\r\n angle?: AngleProps;\r\n /** Origin point (relative to placement) the hatch passes through, 0.0,0.0 if undefined */\r\n through?: XYProps;\r\n /** Offset of successive lines. X offset staggers dashes (ignored for solid lines) and Y offset controls the distance between both solid and dashed lines, 0.0,0.0 if undefined */\r\n offset?: XYProps;\r\n /** Array of gap and dash lengths for creating non-solid hatch lines, max of 20. A positive value denotes dash, a negative value a gap, solid line if undefined */\r\n dashes?: number[];\r\n }\r\n\r\n export class HatchDefLine implements HatchDefLineProps {\r\n public angle?: Angle;\r\n public through?: Point2d;\r\n public offset?: Point2d;\r\n public dashes?: number[];\r\n\r\n public constructor(json: HatchDefLineProps) {\r\n this.angle = json.angle ? Angle.fromJSON(json.angle) : undefined;\r\n this.through = json.through ? Point2d.fromJSON(json.through) : undefined;\r\n this.offset = json.offset ? Point2d.fromJSON(json.offset) : undefined;\r\n if (json.dashes) {\r\n const dashes: number[] = [];\r\n json.dashes.forEach((dash) => dashes.push(dash));\r\n this.dashes = dashes;\r\n }\r\n }\r\n }\r\n\r\n /** Definition of a hatch, cross-hatch, or area pattern that can be applied to the interior of a planar region.\r\n * @see [[GeometryStreamEntryProps]]\r\n */\r\n export interface ParamsProps {\r\n /** Pattern offset (relative to placement), 0.0,0.0,0.0 if undefined */\r\n origin?: XYZProps;\r\n /** Pattern orientation (relative to placement), 0.0,0.0,0.0 if undefined */\r\n rotation?: YawPitchRollProps;\r\n /** Spacing of first set of parallel lines in a hatch pattern, or row spacing between area pattern tiles, 0.0 if undefined */\r\n space1?: number;\r\n /** Spacing of second set of parallel lines in a cross-hatch (leave undefined or 0 for a hatch), or column spacing between area pattern tiles, 0.0 if undefined */\r\n space2?: number;\r\n /** Angle of first set of parallel lines in a hatch pattern or area pattern tile direction, 0.0 if undefined */\r\n angle1?: AngleProps;\r\n /** Angle of second set of parallel lines in a cross-hatch, 0.0 if undefined */\r\n angle2?: AngleProps;\r\n /** Scale to apply to area pattern symbol, 1.0 if undefined */\r\n scale?: number;\r\n /** Pattern color, leave undefined to inherit color from parent element. For area patterns, does not override explicit colors stored in symbol */\r\n color?: ColorDefProps;\r\n /** Pattern weight, leave undefined to inherit weight from parent element. For area patterns, does not override explicit weights stored in symbol */\r\n weight?: number;\r\n /** Set to inhibit display of pattern boundary, not applicable when boundary is also filled, false if undefined */\r\n invisibleBoundary?: boolean;\r\n /** Set to allow snapping to pattern geometry, false if undefined */\r\n snappable?: boolean;\r\n /** [[GeometryPart]] id to use for tiled area pattern display */\r\n symbolId?: Id64String;\r\n /** Define an area pattern by supplying hatch line definitions instead of using a [[GeometryPart]] */\r\n defLines?: HatchDefLineProps[];\r\n }\r\n\r\n /** Defines a hatch, cross hatch, or area pattern. */\r\n export class Params {\r\n public origin?: Point3d;\r\n public rotation?: YawPitchRollAngles;\r\n public space1?: number;\r\n public space2?: number;\r\n public angle1?: Angle;\r\n public angle2?: Angle;\r\n public scale?: number;\r\n public color?: ColorDef;\r\n public weight?: number;\r\n public invisibleBoundary?: boolean;\r\n public snappable?: boolean;\r\n public symbolId?: Id64String;\r\n public defLines?: HatchDefLine[];\r\n\r\n /** create an AreaPattern.Params from a json object. */\r\n public static fromJSON(json?: ParamsProps) {\r\n const result = new Params();\r\n if (!json)\r\n return result;\r\n result.origin = json.origin ? Point3d.fromJSON(json.origin) : undefined;\r\n result.rotation = json.rotation ? YawPitchRollAngles.fromJSON(json.rotation) : undefined;\r\n result.space1 = json.space1;\r\n result.space2 = json.space2;\r\n result.angle1 = json.angle1 ? Angle.fromJSON(json.angle1) : undefined;\r\n result.angle2 = json.angle2 ? Angle.fromJSON(json.angle2) : undefined;\r\n result.scale = json.scale;\r\n result.color = json.color ? ColorDef.fromJSON(json.color) : undefined;\r\n result.weight = json.weight;\r\n result.invisibleBoundary = json.invisibleBoundary;\r\n result.snappable = json.snappable;\r\n result.symbolId = json.symbolId ? Id64.fromJSON(json.symbolId) : undefined;\r\n if (!json.defLines)\r\n return result;\r\n const defLines: HatchDefLine[] = [];\r\n json.defLines.forEach((defLine) => defLines.push(new HatchDefLine(defLine)));\r\n result.defLines = defLines;\r\n return result;\r\n }\r\n\r\n public toJSON(): ParamsProps {\r\n return {\r\n ...this,\r\n color: this.color?.toJSON(),\r\n };\r\n }\r\n\r\n public clone(): Params {\r\n return Params.fromJSON(this.toJSON());\r\n }\r\n\r\n public equals(other: Params): boolean {\r\n if (this === other)\r\n return true; // Same pointer\r\n\r\n if (this.scale !== other.scale ||\r\n this.space1 !== other.space1 ||\r\n this.space2 !== other.space2 ||\r\n this.weight !== other.weight ||\r\n this.invisibleBoundary !== other.invisibleBoundary ||\r\n this.snappable !== other.snappable)\r\n return false;\r\n\r\n if ((this.color === undefined) !== (other.color === undefined))\r\n return false;\r\n if (this.color && !this.color.equals(other.color!))\r\n return false;\r\n\r\n if ((this.angle1 === undefined) !== (other.angle1 === undefined))\r\n return false;\r\n if (this.angle1 && !this.angle1.isAlmostEqualNoPeriodShift(other.angle1!))\r\n return false;\r\n\r\n if ((this.angle2 === undefined) !== (other.angle2 === undefined))\r\n return false;\r\n if (this.angle2 && !this.angle2.isAlmostEqualNoPeriodShift(other.angle2!))\r\n return false;\r\n\r\n if ((this.origin === undefined) !== (other.origin === undefined))\r\n return false;\r\n if (this.origin && !this.origin.isAlmostEqual(other.origin!))\r\n return false;\r\n\r\n if ((this.rotation === undefined) !== (other.rotation === undefined))\r\n return false;\r\n if (this.rotation && !this.rotation.isAlmostEqual(other.rotation!))\r\n return false;\r\n\r\n if ((this.symbolId === undefined) !== (other.symbolId === undefined))\r\n return false;\r\n if (this.symbolId && !(this.symbolId === other.symbolId!))\r\n return false;\r\n\r\n if ((this.defLines === undefined) !== (other.defLines === undefined))\r\n return false;\r\n if (this.defLines) {\r\n if (this.defLines.length !== other.defLines!.length)\r\n return false;\r\n\r\n for (let i = 0; i < this.defLines.length; ++i) {\r\n const otherLine = other.defLines![i];\r\n const thisLine = this.defLines[i];\r\n\r\n if ((thisLine.angle === undefined) !== (otherLine.angle === undefined))\r\n return false;\r\n if (thisLine.angle && !thisLine.angle.isAlmostEqualNoPeriodShift(otherLine.angle!))\r\n return false;\r\n\r\n if ((thisLine.through === undefined) !== (otherLine.through === undefined))\r\n return false;\r\n if (thisLine.through && !thisLine.through.isAlmostEqual(otherLine.through!))\r\n return false;\r\n\r\n if ((thisLine.offset === undefined) !== (otherLine.offset === undefined))\r\n return false;\r\n if (thisLine.offset && !thisLine.offset.isAlmostEqual(otherLine.offset!))\r\n return false;\r\n\r\n if ((thisLine.dashes === undefined) !== (otherLine.dashes === undefined))\r\n return false;\r\n if (thisLine.dashes && thisLine.dashes.length !== otherLine.dashes!.length)\r\n return false;\r\n if (thisLine.dashes) {\r\n for (let dash = 0; dash < thisLine.dashes.length; ++dash) {\r\n if (!Geometry.isSameCoordinate(thisLine.dashes[dash], otherLine.dashes![dash]))\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public static transformPatternSpace(transform: Transform, oldSpace: number, patRot: Matrix3d, angle?: Angle): number {\r\n let tmpRot: Matrix3d;\r\n if (angle && !angle.isAlmostZero) {\r\n const yprTriple = new YawPitchRollAngles(angle);\r\n const angRot = yprTriple.toMatrix3d();\r\n tmpRot = patRot.multiplyMatrixMatrix(angRot);\r\n } else {\r\n tmpRot = patRot;\r\n }\r\n const yDir = tmpRot.getColumn(1);\r\n yDir.scale(oldSpace, yDir);\r\n transform.multiplyVector(yDir, yDir);\r\n return yDir.magnitude();\r\n }\r\n\r\n public static getTransformPatternScale(transform: Transform): number {\r\n const xDir = transform.matrix.getColumn(0);\r\n const mag = xDir.magnitude();\r\n return (mag > 1.0e-10) ? mag : 1.0;\r\n }\r\n\r\n public applyTransform(transform: Transform): boolean {\r\n if (transform.isIdentity)\r\n return true;\r\n const origin = this.origin ? this.origin : Point3d.createZero();\r\n const rMatrix = this.rotation ? this.rotation.toMatrix3d() : Matrix3d.createIdentity();\r\n if (this.symbolId !== undefined) {\r\n this.space1 = Params.transformPatternSpace(transform, this.space1 ? this.space1 : 0.0, rMatrix, this.angle1);\r\n this.space2 = Params.transformPatternSpace(transform, this.space2 ? this.space2 : 0.0, rMatrix, this.angle2);\r\n const scale = Params.getTransformPatternScale(transform);\r\n this.scale = this.scale ? this.scale * scale : scale;\r\n } else if (this.defLines) {\r\n const scale = Params.getTransformPatternScale(transform);\r\n if (!Geometry.isSameCoordinate(scale, 1.0)) {\r\n this.scale = this.scale ? this.scale * scale : scale;\r\n for (const line of this.defLines) {\r\n if (line.through) {\r\n line.through.x *= scale;\r\n line.through.y *= scale;\r\n }\r\n if (line.offset) {\r\n line.offset.x *= scale;\r\n line.offset.y *= scale;\r\n }\r\n if (line.dashes) {\r\n for (let iDash = 0; iDash < line.dashes.length; iDash++)\r\n line.dashes[iDash] *= scale;\r\n }\r\n }\r\n }\r\n } else {\r\n this.space1 = Params.transformPatternSpace(transform, this.space1 ? this.space1 : 0.0, rMatrix, this.angle1);\r\n if (this.space2 && 0 !== this.space2)\r\n this.space2 = Params.transformPatternSpace(transform, this.space2, rMatrix, this.angle2);\r\n }\r\n\r\n transform.multiplyPoint3d(origin);\r\n rMatrix.multiplyMatrixMatrix(transform.matrix, rMatrix);\r\n const normalized = Matrix3d.createRigidFromMatrix3d(rMatrix);\r\n if (!normalized)\r\n return false;\r\n const newRotation = YawPitchRollAngles.createFromMatrix3d(normalized);\r\n if (undefined === newRotation)\r\n return false;\r\n this.origin = origin;\r\n this.rotation = newRotation;\r\n return true;\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"AreaPattern.js","sourceRoot":"","sources":["../../../src/geometry/AreaPattern.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Symbology\r\n */\r\n\r\nimport { Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n Angle, AngleProps, Geometry, Matrix3d, Point2d, Point3d, Transform, XYProps, XYZProps, YawPitchRollAngles, YawPitchRollProps,\r\n} from \"@itwin/core-geometry\";\r\nimport { ColorDef, ColorDefProps } from \"../ColorDef\";\r\n\r\n/** @public */\r\nexport namespace AreaPattern {\r\n /** Single hatch line definition */\r\n export interface HatchDefLineProps {\r\n /** Angle of hatch line, 0.0 if undefined */\r\n angle?: AngleProps;\r\n /** Origin point (relative to placement) the hatch passes through, 0.0,0.0 if undefined */\r\n through?: XYProps;\r\n /** Offset of successive lines. X offset staggers dashes (ignored for solid lines) and Y offset controls the distance between both solid and dashed lines, 0.0,0.0 if undefined */\r\n offset?: XYProps;\r\n /** Array of gap and dash lengths for creating non-solid hatch lines, max of 20. A positive value denotes dash, a negative value a gap, solid line if undefined */\r\n dashes?: number[];\r\n }\r\n\r\n export class HatchDefLine implements HatchDefLineProps {\r\n public angle?: Angle;\r\n public through?: Point2d;\r\n public offset?: Point2d;\r\n public dashes?: number[];\r\n\r\n public constructor(json: HatchDefLineProps) {\r\n this.angle = json.angle ? Angle.fromJSON(json.angle) : undefined;\r\n this.through = json.through ? Point2d.fromJSON(json.through) : undefined;\r\n this.offset = json.offset ? Point2d.fromJSON(json.offset) : undefined;\r\n if (json.dashes) {\r\n const dashes: number[] = [];\r\n json.dashes.forEach((dash) => dashes.push(dash));\r\n this.dashes = dashes;\r\n }\r\n }\r\n }\r\n\r\n /** Definition of a hatch, cross-hatch, or area pattern that can be applied to the interior of a planar region.\r\n * @see [[GeometryStreamEntryProps]]\r\n */\r\n export interface ParamsProps {\r\n /** Pattern offset (relative to placement), 0.0,0.0,0.0 if undefined */\r\n origin?: XYZProps;\r\n /** Pattern orientation (relative to placement), 0.0,0.0,0.0 if undefined */\r\n rotation?: YawPitchRollProps;\r\n /** Spacing of first set of parallel lines in a hatch pattern, or row spacing between area pattern tiles, 0.0 if undefined */\r\n space1?: number;\r\n /** Spacing of second set of parallel lines in a cross-hatch (leave undefined or 0 for a hatch), or column spacing between area pattern tiles, 0.0 if undefined */\r\n space2?: number;\r\n /** Angle of first set of parallel lines in a hatch pattern or area pattern tile direction, 0.0 if undefined */\r\n angle1?: AngleProps;\r\n /** Angle of second set of parallel lines in a cross-hatch, 0.0 if undefined */\r\n angle2?: AngleProps;\r\n /** Scale to apply to area pattern symbol, 1.0 if undefined */\r\n scale?: number;\r\n /** Pattern color, leave undefined to inherit color from parent element. For area patterns, does not override explicit colors stored in symbol */\r\n color?: ColorDefProps;\r\n /** Pattern weight, leave undefined to inherit weight from parent element. For area patterns, does not override explicit weights stored in symbol */\r\n weight?: number;\r\n /** Set to inhibit display of pattern boundary, not applicable when boundary is also filled, false if undefined */\r\n invisibleBoundary?: boolean;\r\n /** Set to allow snapping to pattern geometry, false if undefined */\r\n snappable?: boolean;\r\n /** [[GeometryPart]] id to use for tiled area pattern display */\r\n symbolId?: Id64String;\r\n /** Define an area pattern by supplying hatch line definitions instead of using a [[GeometryPart]] */\r\n defLines?: HatchDefLineProps[];\r\n }\r\n\r\n /** Defines a hatch, cross hatch, or area pattern. */\r\n export class Params {\r\n public origin?: Point3d;\r\n public rotation?: YawPitchRollAngles;\r\n public space1?: number;\r\n public space2?: number;\r\n public angle1?: Angle;\r\n public angle2?: Angle;\r\n public scale?: number;\r\n public color?: ColorDef;\r\n public weight?: number;\r\n public invisibleBoundary?: boolean;\r\n public snappable?: boolean;\r\n public symbolId?: Id64String;\r\n public defLines?: HatchDefLine[];\r\n\r\n /** create an AreaPattern.Params from a json object. */\r\n public static fromJSON(json?: ParamsProps) {\r\n const result = new Params();\r\n if (!json)\r\n return result;\r\n result.origin = json.origin ? Point3d.fromJSON(json.origin) : undefined;\r\n result.rotation = json.rotation ? YawPitchRollAngles.fromJSON(json.rotation) : undefined;\r\n result.space1 = json.space1;\r\n result.space2 = json.space2;\r\n result.angle1 = json.angle1 ? Angle.fromJSON(json.angle1) : undefined;\r\n result.angle2 = json.angle2 ? Angle.fromJSON(json.angle2) : undefined;\r\n result.scale = json.scale;\r\n result.color = json.color ? ColorDef.fromJSON(json.color) : undefined;\r\n result.weight = json.weight;\r\n result.invisibleBoundary = json.invisibleBoundary;\r\n result.snappable = json.snappable;\r\n result.symbolId = json.symbolId ? Id64.fromJSON(json.symbolId) : undefined;\r\n if (!json.defLines)\r\n return result;\r\n const defLines: HatchDefLine[] = [];\r\n json.defLines.forEach((defLine) => defLines.push(new HatchDefLine(defLine)));\r\n result.defLines = defLines;\r\n return result;\r\n }\r\n\r\n public toJSON(): ParamsProps {\r\n return {\r\n ...this,\r\n color: this.color?.toJSON(),\r\n };\r\n }\r\n\r\n public clone(): Params {\r\n return Params.fromJSON(this.toJSON());\r\n }\r\n\r\n public equals(other: Params): boolean {\r\n if (this === other)\r\n return true; // Same pointer\r\n\r\n if (this.scale !== other.scale ||\r\n this.space1 !== other.space1 ||\r\n this.space2 !== other.space2 ||\r\n this.weight !== other.weight ||\r\n this.invisibleBoundary !== other.invisibleBoundary ||\r\n this.snappable !== other.snappable)\r\n return false;\r\n\r\n if ((this.color === undefined) !== (other.color === undefined))\r\n return false;\r\n if (this.color && !this.color.equals(other.color!))\r\n return false;\r\n\r\n if ((this.angle1 === undefined) !== (other.angle1 === undefined))\r\n return false;\r\n if (this.angle1 && !this.angle1.isAlmostEqualNoPeriodShift(other.angle1!))\r\n return false;\r\n\r\n if ((this.angle2 === undefined) !== (other.angle2 === undefined))\r\n return false;\r\n if (this.angle2 && !this.angle2.isAlmostEqualNoPeriodShift(other.angle2!))\r\n return false;\r\n\r\n if ((this.origin === undefined) !== (other.origin === undefined))\r\n return false;\r\n if (this.origin && !this.origin.isAlmostEqual(other.origin!))\r\n return false;\r\n\r\n if ((this.rotation === undefined) !== (other.rotation === undefined))\r\n return false;\r\n if (this.rotation && !this.rotation.isAlmostEqual(other.rotation!))\r\n return false;\r\n\r\n if ((this.symbolId === undefined) !== (other.symbolId === undefined))\r\n return false;\r\n if (this.symbolId && !(this.symbolId === other.symbolId!))\r\n return false;\r\n\r\n if ((this.defLines === undefined) !== (other.defLines === undefined))\r\n return false;\r\n if (this.defLines) {\r\n if (this.defLines.length !== other.defLines!.length)\r\n return false;\r\n\r\n for (let i = 0; i < this.defLines.length; ++i) {\r\n const otherLine = other.defLines![i];\r\n const thisLine = this.defLines[i];\r\n\r\n if ((thisLine.angle === undefined) !== (otherLine.angle === undefined))\r\n return false;\r\n if (thisLine.angle && !thisLine.angle.isAlmostEqualNoPeriodShift(otherLine.angle!))\r\n return false;\r\n\r\n if ((thisLine.through === undefined) !== (otherLine.through === undefined))\r\n return false;\r\n if (thisLine.through && !thisLine.through.isAlmostEqual(otherLine.through!))\r\n return false;\r\n\r\n if ((thisLine.offset === undefined) !== (otherLine.offset === undefined))\r\n return false;\r\n if (thisLine.offset && !thisLine.offset.isAlmostEqual(otherLine.offset!))\r\n return false;\r\n\r\n if ((thisLine.dashes === undefined) !== (otherLine.dashes === undefined))\r\n return false;\r\n if (thisLine.dashes && thisLine.dashes.length !== otherLine.dashes!.length)\r\n return false;\r\n if (thisLine.dashes) {\r\n for (let dash = 0; dash < thisLine.dashes.length; ++dash) {\r\n if (!Geometry.isSameCoordinate(thisLine.dashes[dash], otherLine.dashes![dash]))\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public static transformPatternSpace(transform: Transform, oldSpace: number, patRot: Matrix3d, angle?: Angle): number {\r\n let tmpRot: Matrix3d;\r\n if (angle && !angle.isAlmostZero) {\r\n const yprTriple = new YawPitchRollAngles(angle);\r\n const angRot = yprTriple.toMatrix3d();\r\n tmpRot = patRot.multiplyMatrixMatrix(angRot);\r\n } else {\r\n tmpRot = patRot;\r\n }\r\n const yDir = tmpRot.getColumn(1);\r\n yDir.scale(oldSpace, yDir);\r\n transform.multiplyVector(yDir, yDir);\r\n return yDir.magnitude();\r\n }\r\n\r\n public static getTransformPatternScale(transform: Transform): number {\r\n const xDir = transform.matrix.getColumn(0);\r\n const mag = xDir.magnitude();\r\n return (mag > 1.0e-10) ? mag : 1.0;\r\n }\r\n\r\n public applyTransform(transform: Transform): boolean {\r\n if (transform.isIdentity)\r\n return true;\r\n let origin = this.origin ? this.origin : Point3d.createZero();\r\n const rMatrix = this.rotation ? this.rotation.toMatrix3d() : Matrix3d.createIdentity();\r\n if (this.symbolId !== undefined) {\r\n this.space1 = Params.transformPatternSpace(transform, this.space1 ? this.space1 : 0.0, rMatrix, this.angle1);\r\n this.space2 = Params.transformPatternSpace(transform, this.space2 ? this.space2 : 0.0, rMatrix, this.angle2);\r\n const scale = Params.getTransformPatternScale(transform);\r\n this.scale = this.scale ? this.scale * scale : scale;\r\n } else if (this.defLines) {\r\n const scale = Params.getTransformPatternScale(transform);\r\n if (!Geometry.isSameCoordinate(scale, 1.0)) {\r\n this.scale = this.scale ? this.scale * scale : scale;\r\n for (const line of this.defLines) {\r\n if (line.through) {\r\n line.through.x *= scale;\r\n line.through.y *= scale;\r\n }\r\n if (line.offset) {\r\n line.offset.x *= scale;\r\n line.offset.y *= scale;\r\n }\r\n if (line.dashes) {\r\n for (let iDash = 0; iDash < line.dashes.length; iDash++)\r\n line.dashes[iDash] *= scale;\r\n }\r\n }\r\n }\r\n } else {\r\n this.space1 = Params.transformPatternSpace(transform, this.space1 ? this.space1 : 0.0, rMatrix, this.angle1);\r\n if (this.space2 && 0 !== this.space2)\r\n this.space2 = Params.transformPatternSpace(transform, this.space2, rMatrix, this.angle2);\r\n }\r\n\r\n origin = transform.multiplyPoint3d(origin);\r\n rMatrix.multiplyMatrixMatrix(transform.matrix, rMatrix);\r\n const normalized = Matrix3d.createRigidFromMatrix3d(rMatrix);\r\n if (!normalized)\r\n return false;\r\n const newRotation = YawPitchRollAngles.createFromMatrix3d(normalized);\r\n if (undefined === newRotation)\r\n return false;\r\n this.origin = origin;\r\n this.rotation = newRotation;\r\n return true;\r\n }\r\n }\r\n}\r\n"]}
|
|
@@ -33,7 +33,7 @@ export declare abstract class RpcInterface {
|
|
|
33
33
|
readonly configuration: RpcConfiguration;
|
|
34
34
|
/** @internal */
|
|
35
35
|
readonly routing: RpcRoutingToken;
|
|
36
|
-
/** @
|
|
36
|
+
/** @beta */
|
|
37
37
|
constructor(routing?: RpcRoutingToken);
|
|
38
38
|
/** Obtains the implementation result for an RPC operation. */
|
|
39
39
|
forward<T = any>(parameters: IArguments): Promise<T>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcInterface.d.ts","sourceRoot":"","sources":["../../src/RpcInterface.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAGzF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAW7D;;;;GAIG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IAAI,SAAS,EAAE,CAAC,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE;AAEhJ;;;GAGG;AACH,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,UAAU,CAAC,CAAC;AAS5F;;;GAGG;AACH,8BAAsB,YAAY;IAEhC,OAAO,CAAC,MAAM,CAAC,QAAQ;IAQvB,OAAO,CAAC,MAAM,CAAC,QAAQ;IAYvB,8JAA8J;WAChJ,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAwB7E;;OAEG;IACH,SAAgB,aAAa,EAAE,gBAAgB,CAAC;IAEhD,gBAAgB;IAChB,SAAgB,OAAO,EAAE,eAAe,CAAC;IAEzC,
|
|
1
|
+
{"version":3,"file":"RpcInterface.d.ts","sourceRoot":"","sources":["../../src/RpcInterface.ts"],"names":[],"mappings":"AAIA;;GAEG;AACH,OAAO,EAAE,gBAAgB,EAAE,wBAAwB,EAAE,MAAM,6BAA6B,CAAC;AAGzF,OAAO,EAAE,eAAe,EAAE,MAAM,4BAA4B,CAAC;AAW7D;;;;GAIG;AACH,MAAM,WAAW,sBAAsB,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY;IAAI,SAAS,EAAE,CAAC,CAAC;IAAC,aAAa,EAAE,MAAM,CAAC;IAAC,gBAAgB,EAAE,MAAM,CAAA;CAAE;AAEhJ;;;GAGG;AACH,MAAM,MAAM,0BAA0B,CAAC,CAAC,SAAS,YAAY,GAAG,YAAY,IAAI,UAAU,CAAC,CAAC;AAS5F;;;GAGG;AACH,8BAAsB,YAAY;IAEhC,OAAO,CAAC,MAAM,CAAC,QAAQ;IAQvB,OAAO,CAAC,MAAM,CAAC,QAAQ;IAYvB,8JAA8J;WAChJ,mBAAmB,CAAC,OAAO,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,GAAG,OAAO;IAwB7E;;OAEG;IACH,SAAgB,aAAa,EAAE,gBAAgB,CAAC;IAEhD,gBAAgB;IAChB,SAAgB,OAAO,EAAE,eAAe,CAAC;IAEzC,YAAY;gBACO,OAAO,GAAE,eAAyC;IAKrE,8DAA8D;IACjD,OAAO,CAAC,CAAC,GAAG,GAAG,EAAE,UAAU,EAAE,UAAU,GAAG,OAAO,CAAC,CAAC,CAAC;IAgBjE,gBAAgB;IACT,qBAAqB,EAAE,wBAAwB,GAAG,SAAS,CAAC;CACpE"}
|
package/lib/esm/RpcInterface.js
CHANGED
|
@@ -54,7 +54,7 @@ export class RpcInterface {
|
|
|
54
54
|
// patch difference is fine. If minor versions differ, compatible as long as backend minor version is greater
|
|
55
55
|
return difference === "patch" || (difference === "minor" && frontendSemver.minor < backendSemver.minor);
|
|
56
56
|
}
|
|
57
|
-
/** @
|
|
57
|
+
/** @beta */
|
|
58
58
|
constructor(routing = RpcRoutingToken.default) {
|
|
59
59
|
this.routing = routing;
|
|
60
60
|
this.configuration = RpcConfiguration.supply(this);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RpcInterface.js","sourceRoot":"","sources":["../../src/RpcInterface.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RpcInterface\r\n */\r\nimport { RpcConfiguration, RpcConfigurationSupplier } from \"./rpc/core/RpcConfiguration\";\r\nimport { CURRENT_REQUEST } from \"./rpc/core/RpcRegistry\";\r\nimport { aggregateLoad, RpcRequest } from \"./rpc/core/RpcRequest\";\r\nimport { RpcRoutingToken } from \"./rpc/core/RpcRoutingToken\";\r\nimport { InterceptedRpcRequest, IpcSession } from \"./ipc/IpcSession\";\r\nimport { RpcSerializedValue } from \"./rpc/core/RpcMarshaling\";\r\nimport { RpcManagedStatus } from \"./rpc/core/RpcProtocol\";\r\nimport { BentleyStatus, IModelError, NoContentError } from \"./IModelError\";\r\nimport { RpcRequestEvent, RpcRequestStatus } from \"./rpc/core/RpcConstants\";\r\nimport { BeDuration } from \"@itwin/core-bentley\";\r\nimport { RpcNotFoundResponse } from \"./rpc/core/RpcControl\";\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\n/**\r\n * Specifies the required static properties of an RpcInterface class.\r\n * These properties are used to identify RPC requests and responses.\r\n * @beta\r\n */\r\nexport interface RpcInterfaceDefinition<T extends RpcInterface = RpcInterface> { prototype: T, interfaceName: string, interfaceVersion: string }\r\n\r\n/**\r\n * A class that implements the operations of an RPC interface.\r\n * @beta\r\n */\r\nexport type RpcInterfaceImplementation<T extends RpcInterface = RpcInterface> = new () => T;\r\n\r\ninterface SemverType {\r\n major: number;\r\n minor: number;\r\n patch: number;\r\n prerelease?: string;\r\n}\r\n\r\n/** An RPC interface is a set of operations exposed by a service that a client can call, using configurable protocols,\r\n * in a platform-independent way. TheRpcInterface class is the base class for RPC interface definitions and implementations.\r\n * @public\r\n */\r\nexport abstract class RpcInterface {\r\n\r\n private static findDiff(backend: SemverType, frontend: SemverType) {\r\n return backend.major !== frontend.major ? \"major\" :\r\n backend.minor !== frontend.minor ? \"minor\" :\r\n backend.patch !== frontend.patch ? \"patch\" :\r\n backend.prerelease !== frontend.prerelease ? \"prerelease\" :\r\n \"same\";\r\n }\r\n\r\n private static parseVer(version: string): SemverType {\r\n // separate the version from the prerelease tag\r\n const parts = version.split(/[:-]/);\r\n // Split the major.minor.path into separate components\r\n const prefix = parts[0].split(\".\");\r\n\r\n const ver: SemverType = { major: Number(prefix[0]), minor: Number(prefix[1]), patch: Number(prefix[2]) };\r\n if (parts.length > 1)\r\n ver.prerelease = parts[1];\r\n return ver;\r\n }\r\n\r\n /** Determines whether the backend version of an RPC interface is compatible (according to semantic versioning) with the frontend version of the interface. */\r\n public static isVersionCompatible(backend: string, frontend: string): boolean {\r\n if (backend === frontend)\r\n return true; // most common case, versions are identical\r\n\r\n const backendSemver = this.parseVer(backend);\r\n const frontendSemver = this.parseVer(frontend);\r\n\r\n // if either has a prerelease tag, they are not compatible unless version strings are identical\r\n if (backendSemver.prerelease || frontendSemver.prerelease)\r\n return false;\r\n\r\n const difference = this.findDiff(backendSemver, frontendSemver);\r\n // If the major versions are different, the versions are not compatible\r\n if (difference === \"major\")\r\n return false;\r\n\r\n // special case for major version 0. If patch difference, backend patch must be greater than frontend patch\r\n if (backendSemver.major === 0)\r\n return (difference === \"patch\" && frontendSemver.patch < backendSemver.patch);\r\n\r\n // patch difference is fine. If minor versions differ, compatible as long as backend minor version is greater\r\n return difference === \"patch\" || (difference === \"minor\" && frontendSemver.minor < backendSemver.minor);\r\n }\r\n\r\n /** The configuration for the RPC interface.\r\n * @internal\r\n */\r\n public readonly configuration: RpcConfiguration;\r\n\r\n /** @internal */\r\n public readonly routing: RpcRoutingToken;\r\n\r\n /** @internal */\r\n public constructor(routing: RpcRoutingToken = RpcRoutingToken.default) {\r\n this.routing = routing;\r\n this.configuration = RpcConfiguration.supply(this);\r\n }\r\n\r\n /** Obtains the implementation result for an RPC operation. */\r\n public async forward<T = any>(parameters: IArguments): Promise<T> {\r\n const parametersCompat = (arguments.length === 1 && typeof (parameters) === \"object\") ? parameters : arguments;\r\n const parametersArray = Array.isArray(parametersCompat) ? parametersCompat : Array.prototype.slice.call(parametersCompat);\r\n const operationName = parametersArray.pop();\r\n\r\n const session = IpcSession.active;\r\n if (session) {\r\n return intercept(session, this, operationName, parametersArray);\r\n } else {\r\n const request = new (this.configuration.protocol.requestType as any)(this, operationName, parametersArray) as RpcRequest;\r\n request.submit(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n (this as any)[CURRENT_REQUEST] = request;\r\n return request.response;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public configurationSupplier: RpcConfigurationSupplier | undefined;\r\n}\r\n\r\nRpcInterface.prototype.configurationSupplier = undefined;\r\n\r\nclass InterceptedRequest extends RpcRequest {\r\n protected override async load(): Promise<RpcSerializedValue> { throw new Error(); }\r\n protected override async send(): Promise<number> { throw new Error(); }\r\n protected override setHeader(_name: string, _value: string): void { throw new Error(); }\r\n}\r\n\r\nasync function intercept(session: IpcSession, client: RpcInterface, operation: string, parameters: any[]) {\r\n const request = new InterceptedRequest(client, operation, []);\r\n (client as any)[CURRENT_REQUEST] = request;\r\n\r\n const context = await client.configuration.protocol.serialize(request);\r\n request.parameters = parameters;\r\n\r\n const info: InterceptedRpcRequest = {\r\n definition: {\r\n interfaceName: context.operation.interfaceDefinition,\r\n interfaceVersion: context.operation.interfaceVersion,\r\n },\r\n operation,\r\n parameters,\r\n context: {\r\n applicationId: context.applicationId,\r\n applicationVersion: context.applicationVersion,\r\n id: context.id,\r\n sessionId: context.sessionId,\r\n protocolVersion: (context.protocolVersion || 0).toString(),\r\n },\r\n };\r\n\r\n const dispatch = async () => {\r\n aggregateLoad.lastRequest = new Date().getTime();\r\n\r\n const response = await session.handleRpc(info);\r\n\r\n aggregateLoad.lastResponse = new Date().getTime();\r\n\r\n if (typeof (response) === \"object\" && response.hasOwnProperty(\"iTwinRpcCoreResponse\") && response.hasOwnProperty(\"managedStatus\")) {\r\n const status: RpcManagedStatus = response;\r\n\r\n if (status.managedStatus === \"pending\") {\r\n return handlePending(request, status, dispatch);\r\n } else if (status.managedStatus === \"notFound\") {\r\n return handleNotFound(request, status, dispatch);\r\n } else if (status.managedStatus === \"noContent\") {\r\n return handleNoContent();\r\n }\r\n } else {\r\n return response;\r\n }\r\n };\r\n\r\n return dispatch();\r\n}\r\n\r\nasync function handlePending(request: InterceptedRequest, status: RpcManagedStatus, dispatch: () => Promise<any>) {\r\n request._status = RpcRequestStatus.Pending;\r\n request._extendedStatus = (status.responseValue as { message: string }).message;\r\n RpcRequest.events.raiseEvent(RpcRequestEvent.PendingUpdateReceived, request);\r\n\r\n const delay = request.operation.policy.retryInterval(request.client.configuration);\r\n\r\n await BeDuration.wait(delay);\r\n return dispatch();\r\n}\r\n\r\nasync function handleNotFound(request: InterceptedRequest, status: RpcManagedStatus, dispatch: () => Promise<any>) {\r\n return new Promise((resolve, reject) => {\r\n let resubmitted = false;\r\n\r\n RpcRequest.notFoundHandlers.raiseEvent(request, status.responseValue as RpcNotFoundResponse, async () => {\r\n if (resubmitted) {\r\n throw new IModelError(BentleyStatus.ERROR, `Already resubmitted using this handler.`);\r\n }\r\n\r\n resubmitted = true;\r\n\r\n try {\r\n const response = await dispatch();\r\n resolve(response);\r\n } catch (err) {\r\n reject(err);\r\n }\r\n }, reject);\r\n });\r\n}\r\n\r\nasync function handleNoContent() {\r\n throw new NoContentError();\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"RpcInterface.js","sourceRoot":"","sources":["../../src/RpcInterface.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module RpcInterface\r\n */\r\nimport { RpcConfiguration, RpcConfigurationSupplier } from \"./rpc/core/RpcConfiguration\";\r\nimport { CURRENT_REQUEST } from \"./rpc/core/RpcRegistry\";\r\nimport { aggregateLoad, RpcRequest } from \"./rpc/core/RpcRequest\";\r\nimport { RpcRoutingToken } from \"./rpc/core/RpcRoutingToken\";\r\nimport { InterceptedRpcRequest, IpcSession } from \"./ipc/IpcSession\";\r\nimport { RpcSerializedValue } from \"./rpc/core/RpcMarshaling\";\r\nimport { RpcManagedStatus } from \"./rpc/core/RpcProtocol\";\r\nimport { BentleyStatus, IModelError, NoContentError } from \"./IModelError\";\r\nimport { RpcRequestEvent, RpcRequestStatus } from \"./rpc/core/RpcConstants\";\r\nimport { BeDuration } from \"@itwin/core-bentley\";\r\nimport { RpcNotFoundResponse } from \"./rpc/core/RpcControl\";\r\n\r\n/* eslint-disable deprecation/deprecation */\r\n\r\n/**\r\n * Specifies the required static properties of an RpcInterface class.\r\n * These properties are used to identify RPC requests and responses.\r\n * @beta\r\n */\r\nexport interface RpcInterfaceDefinition<T extends RpcInterface = RpcInterface> { prototype: T, interfaceName: string, interfaceVersion: string }\r\n\r\n/**\r\n * A class that implements the operations of an RPC interface.\r\n * @beta\r\n */\r\nexport type RpcInterfaceImplementation<T extends RpcInterface = RpcInterface> = new () => T;\r\n\r\ninterface SemverType {\r\n major: number;\r\n minor: number;\r\n patch: number;\r\n prerelease?: string;\r\n}\r\n\r\n/** An RPC interface is a set of operations exposed by a service that a client can call, using configurable protocols,\r\n * in a platform-independent way. TheRpcInterface class is the base class for RPC interface definitions and implementations.\r\n * @public\r\n */\r\nexport abstract class RpcInterface {\r\n\r\n private static findDiff(backend: SemverType, frontend: SemverType) {\r\n return backend.major !== frontend.major ? \"major\" :\r\n backend.minor !== frontend.minor ? \"minor\" :\r\n backend.patch !== frontend.patch ? \"patch\" :\r\n backend.prerelease !== frontend.prerelease ? \"prerelease\" :\r\n \"same\";\r\n }\r\n\r\n private static parseVer(version: string): SemverType {\r\n // separate the version from the prerelease tag\r\n const parts = version.split(/[:-]/);\r\n // Split the major.minor.path into separate components\r\n const prefix = parts[0].split(\".\");\r\n\r\n const ver: SemverType = { major: Number(prefix[0]), minor: Number(prefix[1]), patch: Number(prefix[2]) };\r\n if (parts.length > 1)\r\n ver.prerelease = parts[1];\r\n return ver;\r\n }\r\n\r\n /** Determines whether the backend version of an RPC interface is compatible (according to semantic versioning) with the frontend version of the interface. */\r\n public static isVersionCompatible(backend: string, frontend: string): boolean {\r\n if (backend === frontend)\r\n return true; // most common case, versions are identical\r\n\r\n const backendSemver = this.parseVer(backend);\r\n const frontendSemver = this.parseVer(frontend);\r\n\r\n // if either has a prerelease tag, they are not compatible unless version strings are identical\r\n if (backendSemver.prerelease || frontendSemver.prerelease)\r\n return false;\r\n\r\n const difference = this.findDiff(backendSemver, frontendSemver);\r\n // If the major versions are different, the versions are not compatible\r\n if (difference === \"major\")\r\n return false;\r\n\r\n // special case for major version 0. If patch difference, backend patch must be greater than frontend patch\r\n if (backendSemver.major === 0)\r\n return (difference === \"patch\" && frontendSemver.patch < backendSemver.patch);\r\n\r\n // patch difference is fine. If minor versions differ, compatible as long as backend minor version is greater\r\n return difference === \"patch\" || (difference === \"minor\" && frontendSemver.minor < backendSemver.minor);\r\n }\r\n\r\n /** The configuration for the RPC interface.\r\n * @internal\r\n */\r\n public readonly configuration: RpcConfiguration;\r\n\r\n /** @internal */\r\n public readonly routing: RpcRoutingToken;\r\n\r\n /** @beta */\r\n public constructor(routing: RpcRoutingToken = RpcRoutingToken.default) {\r\n this.routing = routing;\r\n this.configuration = RpcConfiguration.supply(this);\r\n }\r\n\r\n /** Obtains the implementation result for an RPC operation. */\r\n public async forward<T = any>(parameters: IArguments): Promise<T> {\r\n const parametersCompat = (arguments.length === 1 && typeof (parameters) === \"object\") ? parameters : arguments;\r\n const parametersArray = Array.isArray(parametersCompat) ? parametersCompat : Array.prototype.slice.call(parametersCompat);\r\n const operationName = parametersArray.pop();\r\n\r\n const session = IpcSession.active;\r\n if (session) {\r\n return intercept(session, this, operationName, parametersArray);\r\n } else {\r\n const request = new (this.configuration.protocol.requestType as any)(this, operationName, parametersArray) as RpcRequest;\r\n request.submit(); // eslint-disable-line @typescript-eslint/no-floating-promises\r\n (this as any)[CURRENT_REQUEST] = request;\r\n return request.response;\r\n }\r\n }\r\n\r\n /** @internal */\r\n public configurationSupplier: RpcConfigurationSupplier | undefined;\r\n}\r\n\r\nRpcInterface.prototype.configurationSupplier = undefined;\r\n\r\nclass InterceptedRequest extends RpcRequest {\r\n protected override async load(): Promise<RpcSerializedValue> { throw new Error(); }\r\n protected override async send(): Promise<number> { throw new Error(); }\r\n protected override setHeader(_name: string, _value: string): void { throw new Error(); }\r\n}\r\n\r\nasync function intercept(session: IpcSession, client: RpcInterface, operation: string, parameters: any[]) {\r\n const request = new InterceptedRequest(client, operation, []);\r\n (client as any)[CURRENT_REQUEST] = request;\r\n\r\n const context = await client.configuration.protocol.serialize(request);\r\n request.parameters = parameters;\r\n\r\n const info: InterceptedRpcRequest = {\r\n definition: {\r\n interfaceName: context.operation.interfaceDefinition,\r\n interfaceVersion: context.operation.interfaceVersion,\r\n },\r\n operation,\r\n parameters,\r\n context: {\r\n applicationId: context.applicationId,\r\n applicationVersion: context.applicationVersion,\r\n id: context.id,\r\n sessionId: context.sessionId,\r\n protocolVersion: (context.protocolVersion || 0).toString(),\r\n },\r\n };\r\n\r\n const dispatch = async () => {\r\n aggregateLoad.lastRequest = new Date().getTime();\r\n\r\n const response = await session.handleRpc(info);\r\n\r\n aggregateLoad.lastResponse = new Date().getTime();\r\n\r\n if (typeof (response) === \"object\" && response.hasOwnProperty(\"iTwinRpcCoreResponse\") && response.hasOwnProperty(\"managedStatus\")) {\r\n const status: RpcManagedStatus = response;\r\n\r\n if (status.managedStatus === \"pending\") {\r\n return handlePending(request, status, dispatch);\r\n } else if (status.managedStatus === \"notFound\") {\r\n return handleNotFound(request, status, dispatch);\r\n } else if (status.managedStatus === \"noContent\") {\r\n return handleNoContent();\r\n }\r\n } else {\r\n return response;\r\n }\r\n };\r\n\r\n return dispatch();\r\n}\r\n\r\nasync function handlePending(request: InterceptedRequest, status: RpcManagedStatus, dispatch: () => Promise<any>) {\r\n request._status = RpcRequestStatus.Pending;\r\n request._extendedStatus = (status.responseValue as { message: string }).message;\r\n RpcRequest.events.raiseEvent(RpcRequestEvent.PendingUpdateReceived, request);\r\n\r\n const delay = request.operation.policy.retryInterval(request.client.configuration);\r\n\r\n await BeDuration.wait(delay);\r\n return dispatch();\r\n}\r\n\r\nasync function handleNotFound(request: InterceptedRequest, status: RpcManagedStatus, dispatch: () => Promise<any>) {\r\n return new Promise((resolve, reject) => {\r\n let resubmitted = false;\r\n\r\n RpcRequest.notFoundHandlers.raiseEvent(request, status.responseValue as RpcNotFoundResponse, async () => {\r\n if (resubmitted) {\r\n throw new IModelError(BentleyStatus.ERROR, `Already resubmitted using this handler.`);\r\n }\r\n\r\n resubmitted = true;\r\n\r\n try {\r\n const response = await dispatch();\r\n resolve(response);\r\n } catch (err) {\r\n reject(err);\r\n }\r\n }, reject);\r\n });\r\n}\r\n\r\nasync function handleNoContent() {\r\n throw new NoContentError();\r\n}\r\n"]}
|
|
@@ -150,7 +150,7 @@ export var AreaPattern;
|
|
|
150
150
|
applyTransform(transform) {
|
|
151
151
|
if (transform.isIdentity)
|
|
152
152
|
return true;
|
|
153
|
-
|
|
153
|
+
let origin = this.origin ? this.origin : Point3d.createZero();
|
|
154
154
|
const rMatrix = this.rotation ? this.rotation.toMatrix3d() : Matrix3d.createIdentity();
|
|
155
155
|
if (this.symbolId !== undefined) {
|
|
156
156
|
this.space1 = Params.transformPatternSpace(transform, this.space1 ? this.space1 : 0.0, rMatrix, this.angle1);
|
|
@@ -183,7 +183,7 @@ export var AreaPattern;
|
|
|
183
183
|
if (this.space2 && 0 !== this.space2)
|
|
184
184
|
this.space2 = Params.transformPatternSpace(transform, this.space2, rMatrix, this.angle2);
|
|
185
185
|
}
|
|
186
|
-
transform.multiplyPoint3d(origin);
|
|
186
|
+
origin = transform.multiplyPoint3d(origin);
|
|
187
187
|
rMatrix.multiplyMatrixMatrix(transform.matrix, rMatrix);
|
|
188
188
|
const normalized = Matrix3d.createRigidFromMatrix3d(rMatrix);
|
|
189
189
|
if (!normalized)
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AreaPattern.js","sourceRoot":"","sources":["../../../src/geometry/AreaPattern.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Symbology\r\n */\r\n\r\nimport { Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n Angle, AngleProps, Geometry, Matrix3d, Point2d, Point3d, Transform, XYProps, XYZProps, YawPitchRollAngles, YawPitchRollProps,\r\n} from \"@itwin/core-geometry\";\r\nimport { ColorDef, ColorDefProps } from \"../ColorDef\";\r\n\r\n/** @public */\r\nexport namespace AreaPattern {\r\n /** Single hatch line definition */\r\n export interface HatchDefLineProps {\r\n /** Angle of hatch line, 0.0 if undefined */\r\n angle?: AngleProps;\r\n /** Origin point (relative to placement) the hatch passes through, 0.0,0.0 if undefined */\r\n through?: XYProps;\r\n /** Offset of successive lines. X offset staggers dashes (ignored for solid lines) and Y offset controls the distance between both solid and dashed lines, 0.0,0.0 if undefined */\r\n offset?: XYProps;\r\n /** Array of gap and dash lengths for creating non-solid hatch lines, max of 20. A positive value denotes dash, a negative value a gap, solid line if undefined */\r\n dashes?: number[];\r\n }\r\n\r\n export class HatchDefLine implements HatchDefLineProps {\r\n public angle?: Angle;\r\n public through?: Point2d;\r\n public offset?: Point2d;\r\n public dashes?: number[];\r\n\r\n public constructor(json: HatchDefLineProps) {\r\n this.angle = json.angle ? Angle.fromJSON(json.angle) : undefined;\r\n this.through = json.through ? Point2d.fromJSON(json.through) : undefined;\r\n this.offset = json.offset ? Point2d.fromJSON(json.offset) : undefined;\r\n if (json.dashes) {\r\n const dashes: number[] = [];\r\n json.dashes.forEach((dash) => dashes.push(dash));\r\n this.dashes = dashes;\r\n }\r\n }\r\n }\r\n\r\n /** Definition of a hatch, cross-hatch, or area pattern that can be applied to the interior of a planar region.\r\n * @see [[GeometryStreamEntryProps]]\r\n */\r\n export interface ParamsProps {\r\n /** Pattern offset (relative to placement), 0.0,0.0,0.0 if undefined */\r\n origin?: XYZProps;\r\n /** Pattern orientation (relative to placement), 0.0,0.0,0.0 if undefined */\r\n rotation?: YawPitchRollProps;\r\n /** Spacing of first set of parallel lines in a hatch pattern, or row spacing between area pattern tiles, 0.0 if undefined */\r\n space1?: number;\r\n /** Spacing of second set of parallel lines in a cross-hatch (leave undefined or 0 for a hatch), or column spacing between area pattern tiles, 0.0 if undefined */\r\n space2?: number;\r\n /** Angle of first set of parallel lines in a hatch pattern or area pattern tile direction, 0.0 if undefined */\r\n angle1?: AngleProps;\r\n /** Angle of second set of parallel lines in a cross-hatch, 0.0 if undefined */\r\n angle2?: AngleProps;\r\n /** Scale to apply to area pattern symbol, 1.0 if undefined */\r\n scale?: number;\r\n /** Pattern color, leave undefined to inherit color from parent element. For area patterns, does not override explicit colors stored in symbol */\r\n color?: ColorDefProps;\r\n /** Pattern weight, leave undefined to inherit weight from parent element. For area patterns, does not override explicit weights stored in symbol */\r\n weight?: number;\r\n /** Set to inhibit display of pattern boundary, not applicable when boundary is also filled, false if undefined */\r\n invisibleBoundary?: boolean;\r\n /** Set to allow snapping to pattern geometry, false if undefined */\r\n snappable?: boolean;\r\n /** [[GeometryPart]] id to use for tiled area pattern display */\r\n symbolId?: Id64String;\r\n /** Define an area pattern by supplying hatch line definitions instead of using a [[GeometryPart]] */\r\n defLines?: HatchDefLineProps[];\r\n }\r\n\r\n /** Defines a hatch, cross hatch, or area pattern. */\r\n export class Params {\r\n public origin?: Point3d;\r\n public rotation?: YawPitchRollAngles;\r\n public space1?: number;\r\n public space2?: number;\r\n public angle1?: Angle;\r\n public angle2?: Angle;\r\n public scale?: number;\r\n public color?: ColorDef;\r\n public weight?: number;\r\n public invisibleBoundary?: boolean;\r\n public snappable?: boolean;\r\n public symbolId?: Id64String;\r\n public defLines?: HatchDefLine[];\r\n\r\n /** create an AreaPattern.Params from a json object. */\r\n public static fromJSON(json?: ParamsProps) {\r\n const result = new Params();\r\n if (!json)\r\n return result;\r\n result.origin = json.origin ? Point3d.fromJSON(json.origin) : undefined;\r\n result.rotation = json.rotation ? YawPitchRollAngles.fromJSON(json.rotation) : undefined;\r\n result.space1 = json.space1;\r\n result.space2 = json.space2;\r\n result.angle1 = json.angle1 ? Angle.fromJSON(json.angle1) : undefined;\r\n result.angle2 = json.angle2 ? Angle.fromJSON(json.angle2) : undefined;\r\n result.scale = json.scale;\r\n result.color = json.color ? ColorDef.fromJSON(json.color) : undefined;\r\n result.weight = json.weight;\r\n result.invisibleBoundary = json.invisibleBoundary;\r\n result.snappable = json.snappable;\r\n result.symbolId = json.symbolId ? Id64.fromJSON(json.symbolId) : undefined;\r\n if (!json.defLines)\r\n return result;\r\n const defLines: HatchDefLine[] = [];\r\n json.defLines.forEach((defLine) => defLines.push(new HatchDefLine(defLine)));\r\n result.defLines = defLines;\r\n return result;\r\n }\r\n\r\n public toJSON(): ParamsProps {\r\n return {\r\n ...this,\r\n color: this.color?.toJSON(),\r\n };\r\n }\r\n\r\n public clone(): Params {\r\n return Params.fromJSON(this.toJSON());\r\n }\r\n\r\n public equals(other: Params): boolean {\r\n if (this === other)\r\n return true; // Same pointer\r\n\r\n if (this.scale !== other.scale ||\r\n this.space1 !== other.space1 ||\r\n this.space2 !== other.space2 ||\r\n this.weight !== other.weight ||\r\n this.invisibleBoundary !== other.invisibleBoundary ||\r\n this.snappable !== other.snappable)\r\n return false;\r\n\r\n if ((this.color === undefined) !== (other.color === undefined))\r\n return false;\r\n if (this.color && !this.color.equals(other.color!))\r\n return false;\r\n\r\n if ((this.angle1 === undefined) !== (other.angle1 === undefined))\r\n return false;\r\n if (this.angle1 && !this.angle1.isAlmostEqualNoPeriodShift(other.angle1!))\r\n return false;\r\n\r\n if ((this.angle2 === undefined) !== (other.angle2 === undefined))\r\n return false;\r\n if (this.angle2 && !this.angle2.isAlmostEqualNoPeriodShift(other.angle2!))\r\n return false;\r\n\r\n if ((this.origin === undefined) !== (other.origin === undefined))\r\n return false;\r\n if (this.origin && !this.origin.isAlmostEqual(other.origin!))\r\n return false;\r\n\r\n if ((this.rotation === undefined) !== (other.rotation === undefined))\r\n return false;\r\n if (this.rotation && !this.rotation.isAlmostEqual(other.rotation!))\r\n return false;\r\n\r\n if ((this.symbolId === undefined) !== (other.symbolId === undefined))\r\n return false;\r\n if (this.symbolId && !(this.symbolId === other.symbolId!))\r\n return false;\r\n\r\n if ((this.defLines === undefined) !== (other.defLines === undefined))\r\n return false;\r\n if (this.defLines) {\r\n if (this.defLines.length !== other.defLines!.length)\r\n return false;\r\n\r\n for (let i = 0; i < this.defLines.length; ++i) {\r\n const otherLine = other.defLines![i];\r\n const thisLine = this.defLines[i];\r\n\r\n if ((thisLine.angle === undefined) !== (otherLine.angle === undefined))\r\n return false;\r\n if (thisLine.angle && !thisLine.angle.isAlmostEqualNoPeriodShift(otherLine.angle!))\r\n return false;\r\n\r\n if ((thisLine.through === undefined) !== (otherLine.through === undefined))\r\n return false;\r\n if (thisLine.through && !thisLine.through.isAlmostEqual(otherLine.through!))\r\n return false;\r\n\r\n if ((thisLine.offset === undefined) !== (otherLine.offset === undefined))\r\n return false;\r\n if (thisLine.offset && !thisLine.offset.isAlmostEqual(otherLine.offset!))\r\n return false;\r\n\r\n if ((thisLine.dashes === undefined) !== (otherLine.dashes === undefined))\r\n return false;\r\n if (thisLine.dashes && thisLine.dashes.length !== otherLine.dashes!.length)\r\n return false;\r\n if (thisLine.dashes) {\r\n for (let dash = 0; dash < thisLine.dashes.length; ++dash) {\r\n if (!Geometry.isSameCoordinate(thisLine.dashes[dash], otherLine.dashes![dash]))\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public static transformPatternSpace(transform: Transform, oldSpace: number, patRot: Matrix3d, angle?: Angle): number {\r\n let tmpRot: Matrix3d;\r\n if (angle && !angle.isAlmostZero) {\r\n const yprTriple = new YawPitchRollAngles(angle);\r\n const angRot = yprTriple.toMatrix3d();\r\n tmpRot = patRot.multiplyMatrixMatrix(angRot);\r\n } else {\r\n tmpRot = patRot;\r\n }\r\n const yDir = tmpRot.getColumn(1);\r\n yDir.scale(oldSpace, yDir);\r\n transform.multiplyVector(yDir, yDir);\r\n return yDir.magnitude();\r\n }\r\n\r\n public static getTransformPatternScale(transform: Transform): number {\r\n const xDir = transform.matrix.getColumn(0);\r\n const mag = xDir.magnitude();\r\n return (mag > 1.0e-10) ? mag : 1.0;\r\n }\r\n\r\n public applyTransform(transform: Transform): boolean {\r\n if (transform.isIdentity)\r\n return true;\r\n const origin = this.origin ? this.origin : Point3d.createZero();\r\n const rMatrix = this.rotation ? this.rotation.toMatrix3d() : Matrix3d.createIdentity();\r\n if (this.symbolId !== undefined) {\r\n this.space1 = Params.transformPatternSpace(transform, this.space1 ? this.space1 : 0.0, rMatrix, this.angle1);\r\n this.space2 = Params.transformPatternSpace(transform, this.space2 ? this.space2 : 0.0, rMatrix, this.angle2);\r\n const scale = Params.getTransformPatternScale(transform);\r\n this.scale = this.scale ? this.scale * scale : scale;\r\n } else if (this.defLines) {\r\n const scale = Params.getTransformPatternScale(transform);\r\n if (!Geometry.isSameCoordinate(scale, 1.0)) {\r\n this.scale = this.scale ? this.scale * scale : scale;\r\n for (const line of this.defLines) {\r\n if (line.through) {\r\n line.through.x *= scale;\r\n line.through.y *= scale;\r\n }\r\n if (line.offset) {\r\n line.offset.x *= scale;\r\n line.offset.y *= scale;\r\n }\r\n if (line.dashes) {\r\n for (let iDash = 0; iDash < line.dashes.length; iDash++)\r\n line.dashes[iDash] *= scale;\r\n }\r\n }\r\n }\r\n } else {\r\n this.space1 = Params.transformPatternSpace(transform, this.space1 ? this.space1 : 0.0, rMatrix, this.angle1);\r\n if (this.space2 && 0 !== this.space2)\r\n this.space2 = Params.transformPatternSpace(transform, this.space2, rMatrix, this.angle2);\r\n }\r\n\r\n transform.multiplyPoint3d(origin);\r\n rMatrix.multiplyMatrixMatrix(transform.matrix, rMatrix);\r\n const normalized = Matrix3d.createRigidFromMatrix3d(rMatrix);\r\n if (!normalized)\r\n return false;\r\n const newRotation = YawPitchRollAngles.createFromMatrix3d(normalized);\r\n if (undefined === newRotation)\r\n return false;\r\n this.origin = origin;\r\n this.rotation = newRotation;\r\n return true;\r\n }\r\n }\r\n}\r\n"]}
|
|
1
|
+
{"version":3,"file":"AreaPattern.js","sourceRoot":"","sources":["../../../src/geometry/AreaPattern.ts"],"names":[],"mappings":"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","sourcesContent":["/*---------------------------------------------------------------------------------------------\r\n* Copyright (c) Bentley Systems, Incorporated. All rights reserved.\r\n* See LICENSE.md in the project root for license terms and full copyright notice.\r\n*--------------------------------------------------------------------------------------------*/\r\n/** @packageDocumentation\r\n * @module Symbology\r\n */\r\n\r\nimport { Id64, Id64String } from \"@itwin/core-bentley\";\r\nimport {\r\n Angle, AngleProps, Geometry, Matrix3d, Point2d, Point3d, Transform, XYProps, XYZProps, YawPitchRollAngles, YawPitchRollProps,\r\n} from \"@itwin/core-geometry\";\r\nimport { ColorDef, ColorDefProps } from \"../ColorDef\";\r\n\r\n/** @public */\r\nexport namespace AreaPattern {\r\n /** Single hatch line definition */\r\n export interface HatchDefLineProps {\r\n /** Angle of hatch line, 0.0 if undefined */\r\n angle?: AngleProps;\r\n /** Origin point (relative to placement) the hatch passes through, 0.0,0.0 if undefined */\r\n through?: XYProps;\r\n /** Offset of successive lines. X offset staggers dashes (ignored for solid lines) and Y offset controls the distance between both solid and dashed lines, 0.0,0.0 if undefined */\r\n offset?: XYProps;\r\n /** Array of gap and dash lengths for creating non-solid hatch lines, max of 20. A positive value denotes dash, a negative value a gap, solid line if undefined */\r\n dashes?: number[];\r\n }\r\n\r\n export class HatchDefLine implements HatchDefLineProps {\r\n public angle?: Angle;\r\n public through?: Point2d;\r\n public offset?: Point2d;\r\n public dashes?: number[];\r\n\r\n public constructor(json: HatchDefLineProps) {\r\n this.angle = json.angle ? Angle.fromJSON(json.angle) : undefined;\r\n this.through = json.through ? Point2d.fromJSON(json.through) : undefined;\r\n this.offset = json.offset ? Point2d.fromJSON(json.offset) : undefined;\r\n if (json.dashes) {\r\n const dashes: number[] = [];\r\n json.dashes.forEach((dash) => dashes.push(dash));\r\n this.dashes = dashes;\r\n }\r\n }\r\n }\r\n\r\n /** Definition of a hatch, cross-hatch, or area pattern that can be applied to the interior of a planar region.\r\n * @see [[GeometryStreamEntryProps]]\r\n */\r\n export interface ParamsProps {\r\n /** Pattern offset (relative to placement), 0.0,0.0,0.0 if undefined */\r\n origin?: XYZProps;\r\n /** Pattern orientation (relative to placement), 0.0,0.0,0.0 if undefined */\r\n rotation?: YawPitchRollProps;\r\n /** Spacing of first set of parallel lines in a hatch pattern, or row spacing between area pattern tiles, 0.0 if undefined */\r\n space1?: number;\r\n /** Spacing of second set of parallel lines in a cross-hatch (leave undefined or 0 for a hatch), or column spacing between area pattern tiles, 0.0 if undefined */\r\n space2?: number;\r\n /** Angle of first set of parallel lines in a hatch pattern or area pattern tile direction, 0.0 if undefined */\r\n angle1?: AngleProps;\r\n /** Angle of second set of parallel lines in a cross-hatch, 0.0 if undefined */\r\n angle2?: AngleProps;\r\n /** Scale to apply to area pattern symbol, 1.0 if undefined */\r\n scale?: number;\r\n /** Pattern color, leave undefined to inherit color from parent element. For area patterns, does not override explicit colors stored in symbol */\r\n color?: ColorDefProps;\r\n /** Pattern weight, leave undefined to inherit weight from parent element. For area patterns, does not override explicit weights stored in symbol */\r\n weight?: number;\r\n /** Set to inhibit display of pattern boundary, not applicable when boundary is also filled, false if undefined */\r\n invisibleBoundary?: boolean;\r\n /** Set to allow snapping to pattern geometry, false if undefined */\r\n snappable?: boolean;\r\n /** [[GeometryPart]] id to use for tiled area pattern display */\r\n symbolId?: Id64String;\r\n /** Define an area pattern by supplying hatch line definitions instead of using a [[GeometryPart]] */\r\n defLines?: HatchDefLineProps[];\r\n }\r\n\r\n /** Defines a hatch, cross hatch, or area pattern. */\r\n export class Params {\r\n public origin?: Point3d;\r\n public rotation?: YawPitchRollAngles;\r\n public space1?: number;\r\n public space2?: number;\r\n public angle1?: Angle;\r\n public angle2?: Angle;\r\n public scale?: number;\r\n public color?: ColorDef;\r\n public weight?: number;\r\n public invisibleBoundary?: boolean;\r\n public snappable?: boolean;\r\n public symbolId?: Id64String;\r\n public defLines?: HatchDefLine[];\r\n\r\n /** create an AreaPattern.Params from a json object. */\r\n public static fromJSON(json?: ParamsProps) {\r\n const result = new Params();\r\n if (!json)\r\n return result;\r\n result.origin = json.origin ? Point3d.fromJSON(json.origin) : undefined;\r\n result.rotation = json.rotation ? YawPitchRollAngles.fromJSON(json.rotation) : undefined;\r\n result.space1 = json.space1;\r\n result.space2 = json.space2;\r\n result.angle1 = json.angle1 ? Angle.fromJSON(json.angle1) : undefined;\r\n result.angle2 = json.angle2 ? Angle.fromJSON(json.angle2) : undefined;\r\n result.scale = json.scale;\r\n result.color = json.color ? ColorDef.fromJSON(json.color) : undefined;\r\n result.weight = json.weight;\r\n result.invisibleBoundary = json.invisibleBoundary;\r\n result.snappable = json.snappable;\r\n result.symbolId = json.symbolId ? Id64.fromJSON(json.symbolId) : undefined;\r\n if (!json.defLines)\r\n return result;\r\n const defLines: HatchDefLine[] = [];\r\n json.defLines.forEach((defLine) => defLines.push(new HatchDefLine(defLine)));\r\n result.defLines = defLines;\r\n return result;\r\n }\r\n\r\n public toJSON(): ParamsProps {\r\n return {\r\n ...this,\r\n color: this.color?.toJSON(),\r\n };\r\n }\r\n\r\n public clone(): Params {\r\n return Params.fromJSON(this.toJSON());\r\n }\r\n\r\n public equals(other: Params): boolean {\r\n if (this === other)\r\n return true; // Same pointer\r\n\r\n if (this.scale !== other.scale ||\r\n this.space1 !== other.space1 ||\r\n this.space2 !== other.space2 ||\r\n this.weight !== other.weight ||\r\n this.invisibleBoundary !== other.invisibleBoundary ||\r\n this.snappable !== other.snappable)\r\n return false;\r\n\r\n if ((this.color === undefined) !== (other.color === undefined))\r\n return false;\r\n if (this.color && !this.color.equals(other.color!))\r\n return false;\r\n\r\n if ((this.angle1 === undefined) !== (other.angle1 === undefined))\r\n return false;\r\n if (this.angle1 && !this.angle1.isAlmostEqualNoPeriodShift(other.angle1!))\r\n return false;\r\n\r\n if ((this.angle2 === undefined) !== (other.angle2 === undefined))\r\n return false;\r\n if (this.angle2 && !this.angle2.isAlmostEqualNoPeriodShift(other.angle2!))\r\n return false;\r\n\r\n if ((this.origin === undefined) !== (other.origin === undefined))\r\n return false;\r\n if (this.origin && !this.origin.isAlmostEqual(other.origin!))\r\n return false;\r\n\r\n if ((this.rotation === undefined) !== (other.rotation === undefined))\r\n return false;\r\n if (this.rotation && !this.rotation.isAlmostEqual(other.rotation!))\r\n return false;\r\n\r\n if ((this.symbolId === undefined) !== (other.symbolId === undefined))\r\n return false;\r\n if (this.symbolId && !(this.symbolId === other.symbolId!))\r\n return false;\r\n\r\n if ((this.defLines === undefined) !== (other.defLines === undefined))\r\n return false;\r\n if (this.defLines) {\r\n if (this.defLines.length !== other.defLines!.length)\r\n return false;\r\n\r\n for (let i = 0; i < this.defLines.length; ++i) {\r\n const otherLine = other.defLines![i];\r\n const thisLine = this.defLines[i];\r\n\r\n if ((thisLine.angle === undefined) !== (otherLine.angle === undefined))\r\n return false;\r\n if (thisLine.angle && !thisLine.angle.isAlmostEqualNoPeriodShift(otherLine.angle!))\r\n return false;\r\n\r\n if ((thisLine.through === undefined) !== (otherLine.through === undefined))\r\n return false;\r\n if (thisLine.through && !thisLine.through.isAlmostEqual(otherLine.through!))\r\n return false;\r\n\r\n if ((thisLine.offset === undefined) !== (otherLine.offset === undefined))\r\n return false;\r\n if (thisLine.offset && !thisLine.offset.isAlmostEqual(otherLine.offset!))\r\n return false;\r\n\r\n if ((thisLine.dashes === undefined) !== (otherLine.dashes === undefined))\r\n return false;\r\n if (thisLine.dashes && thisLine.dashes.length !== otherLine.dashes!.length)\r\n return false;\r\n if (thisLine.dashes) {\r\n for (let dash = 0; dash < thisLine.dashes.length; ++dash) {\r\n if (!Geometry.isSameCoordinate(thisLine.dashes[dash], otherLine.dashes![dash]))\r\n return false;\r\n }\r\n }\r\n }\r\n }\r\n return true;\r\n }\r\n\r\n public static transformPatternSpace(transform: Transform, oldSpace: number, patRot: Matrix3d, angle?: Angle): number {\r\n let tmpRot: Matrix3d;\r\n if (angle && !angle.isAlmostZero) {\r\n const yprTriple = new YawPitchRollAngles(angle);\r\n const angRot = yprTriple.toMatrix3d();\r\n tmpRot = patRot.multiplyMatrixMatrix(angRot);\r\n } else {\r\n tmpRot = patRot;\r\n }\r\n const yDir = tmpRot.getColumn(1);\r\n yDir.scale(oldSpace, yDir);\r\n transform.multiplyVector(yDir, yDir);\r\n return yDir.magnitude();\r\n }\r\n\r\n public static getTransformPatternScale(transform: Transform): number {\r\n const xDir = transform.matrix.getColumn(0);\r\n const mag = xDir.magnitude();\r\n return (mag > 1.0e-10) ? mag : 1.0;\r\n }\r\n\r\n public applyTransform(transform: Transform): boolean {\r\n if (transform.isIdentity)\r\n return true;\r\n let origin = this.origin ? this.origin : Point3d.createZero();\r\n const rMatrix = this.rotation ? this.rotation.toMatrix3d() : Matrix3d.createIdentity();\r\n if (this.symbolId !== undefined) {\r\n this.space1 = Params.transformPatternSpace(transform, this.space1 ? this.space1 : 0.0, rMatrix, this.angle1);\r\n this.space2 = Params.transformPatternSpace(transform, this.space2 ? this.space2 : 0.0, rMatrix, this.angle2);\r\n const scale = Params.getTransformPatternScale(transform);\r\n this.scale = this.scale ? this.scale * scale : scale;\r\n } else if (this.defLines) {\r\n const scale = Params.getTransformPatternScale(transform);\r\n if (!Geometry.isSameCoordinate(scale, 1.0)) {\r\n this.scale = this.scale ? this.scale * scale : scale;\r\n for (const line of this.defLines) {\r\n if (line.through) {\r\n line.through.x *= scale;\r\n line.through.y *= scale;\r\n }\r\n if (line.offset) {\r\n line.offset.x *= scale;\r\n line.offset.y *= scale;\r\n }\r\n if (line.dashes) {\r\n for (let iDash = 0; iDash < line.dashes.length; iDash++)\r\n line.dashes[iDash] *= scale;\r\n }\r\n }\r\n }\r\n } else {\r\n this.space1 = Params.transformPatternSpace(transform, this.space1 ? this.space1 : 0.0, rMatrix, this.angle1);\r\n if (this.space2 && 0 !== this.space2)\r\n this.space2 = Params.transformPatternSpace(transform, this.space2, rMatrix, this.angle2);\r\n }\r\n\r\n origin = transform.multiplyPoint3d(origin);\r\n rMatrix.multiplyMatrixMatrix(transform.matrix, rMatrix);\r\n const normalized = Matrix3d.createRigidFromMatrix3d(rMatrix);\r\n if (!normalized)\r\n return false;\r\n const newRotation = YawPitchRollAngles.createFromMatrix3d(normalized);\r\n if (undefined === newRotation)\r\n return false;\r\n this.origin = origin;\r\n this.rotation = newRotation;\r\n return true;\r\n }\r\n }\r\n}\r\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itwin/core-common",
|
|
3
|
-
"version": "4.1.0-dev.
|
|
3
|
+
"version": "4.1.0-dev.68",
|
|
4
4
|
"description": "iTwin.js components common to frontend and backend",
|
|
5
5
|
"main": "lib/cjs/core-common.js",
|
|
6
6
|
"module": "lib/esm/core-common.js",
|
|
@@ -27,8 +27,8 @@
|
|
|
27
27
|
"js-base64": "^3.6.1"
|
|
28
28
|
},
|
|
29
29
|
"peerDependencies": {
|
|
30
|
-
"@itwin/core-bentley": "^4.1.0-dev.
|
|
31
|
-
"@itwin/core-geometry": "^4.1.0-dev.
|
|
30
|
+
"@itwin/core-bentley": "^4.1.0-dev.68",
|
|
31
|
+
"@itwin/core-geometry": "^4.1.0-dev.68"
|
|
32
32
|
},
|
|
33
33
|
"devDependencies": {
|
|
34
34
|
"@itwin/eslint-plugin": "4.0.0-dev.36",
|
|
@@ -43,9 +43,9 @@
|
|
|
43
43
|
"nyc": "^15.1.0",
|
|
44
44
|
"rimraf": "^3.0.2",
|
|
45
45
|
"typescript": "~5.0.2",
|
|
46
|
-
"@itwin/build-tools": "4.1.0-dev.
|
|
47
|
-
"@itwin/core-
|
|
48
|
-
"@itwin/core-
|
|
46
|
+
"@itwin/build-tools": "4.1.0-dev.68",
|
|
47
|
+
"@itwin/core-bentley": "4.1.0-dev.68",
|
|
48
|
+
"@itwin/core-geometry": "4.1.0-dev.68"
|
|
49
49
|
},
|
|
50
50
|
"nyc": {
|
|
51
51
|
"extends": "./node_modules/@itwin/build-tools/.nycrc",
|