@itwin/core-backend 5.3.0-dev.15 → 5.3.0-dev.17
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/cjs/DisplayStyle.d.ts +2 -2
- package/lib/cjs/DisplayStyle.d.ts.map +1 -1
- package/lib/cjs/DisplayStyle.js +4 -4
- package/lib/cjs/DisplayStyle.js.map +1 -1
- package/lib/cjs/Element.d.ts +2 -2
- package/lib/cjs/Element.d.ts.map +1 -1
- package/lib/cjs/Element.js +2 -2
- package/lib/cjs/Element.js.map +1 -1
- package/lib/cjs/IModelElementCloneContext.d.ts +1 -1
- package/lib/cjs/IModelElementCloneContext.d.ts.map +1 -1
- package/lib/cjs/IModelElementCloneContext.js +2 -2
- package/lib/cjs/IModelElementCloneContext.js.map +1 -1
- package/lib/cjs/Material.d.ts +1 -1
- package/lib/cjs/Material.d.ts.map +1 -1
- package/lib/cjs/Material.js +2 -2
- package/lib/cjs/Material.js.map +1 -1
- package/lib/cjs/ViewDefinition.d.ts +1 -1
- package/lib/cjs/ViewDefinition.d.ts.map +1 -1
- package/lib/cjs/ViewDefinition.js +2 -2
- package/lib/cjs/ViewDefinition.js.map +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.d.ts +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js +1 -1
- package/lib/cjs/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.d.ts +5 -4
- package/lib/cjs/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/cjs/annotations/TextAnnotationElement.js +26 -11
- package/lib/cjs/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/esm/DisplayStyle.d.ts +2 -2
- package/lib/esm/DisplayStyle.d.ts.map +1 -1
- package/lib/esm/DisplayStyle.js +4 -4
- package/lib/esm/DisplayStyle.js.map +1 -1
- package/lib/esm/Element.d.ts +2 -2
- package/lib/esm/Element.d.ts.map +1 -1
- package/lib/esm/Element.js +2 -2
- package/lib/esm/Element.js.map +1 -1
- package/lib/esm/IModelElementCloneContext.d.ts +1 -1
- package/lib/esm/IModelElementCloneContext.d.ts.map +1 -1
- package/lib/esm/IModelElementCloneContext.js +2 -2
- package/lib/esm/IModelElementCloneContext.js.map +1 -1
- package/lib/esm/Material.d.ts +1 -1
- package/lib/esm/Material.d.ts.map +1 -1
- package/lib/esm/Material.js +2 -2
- package/lib/esm/Material.js.map +1 -1
- package/lib/esm/ViewDefinition.d.ts +1 -1
- package/lib/esm/ViewDefinition.d.ts.map +1 -1
- package/lib/esm/ViewDefinition.js +2 -2
- package/lib/esm/ViewDefinition.js.map +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.d.ts +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js +1 -1
- package/lib/esm/annotations/ElementDrivesTextAnnotation.js.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.d.ts +5 -4
- package/lib/esm/annotations/TextAnnotationElement.d.ts.map +1 -1
- package/lib/esm/annotations/TextAnnotationElement.js +26 -11
- package/lib/esm/annotations/TextAnnotationElement.js.map +1 -1
- package/lib/esm/test/annotations/TextAnnotation.test.js +71 -25
- package/lib/esm/test/annotations/TextAnnotation.test.js.map +1 -1
- package/lib/esm/test/standalone/DisplayStyle.test.js +6 -6
- package/lib/esm/test/standalone/DisplayStyle.test.js.map +1 -1
- package/lib/esm/test/standalone/RenderMaterialElement.test.js +4 -4
- package/lib/esm/test/standalone/RenderMaterialElement.test.js.map +1 -1
- package/package.json +13 -13
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"DisplayStyle.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/DisplayStyle.test.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\nimport { expect } from \"chai\";\nimport { CompressedId64Set, Guid } from \"@itwin/core-bentley\";\nimport { DisplayStyle3dSettingsProps, DisplayStyleSettingsProps, IModel, SkyBoxImageType, SkyBoxProps } from \"@itwin/core-common\";\nimport { DisplayStyle3d, IModelElementCloneContext, SnapshotDb, SpatialCategory, StandaloneDb, SubCategory } from \"../../core-backend\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\n\ndescribe(\"DisplayStyle\", () => {\n it(\"preserves skybox\", () => {\n const localDb = SnapshotDb.createEmpty(IModelTestUtils.prepareOutputFile(\"DisplayStyle\", \"DisplayStyleSkybox.bim\"), {\n rootSubject: { name: \"DisplayStyle tests\", description: \"DisplayStyle tests\" },\n client: \"DisplayStyle\",\n globalOrigin: { x: 0, y: 0 },\n projectExtents: { low: { x: -500, y: -500, z: -50 }, high: { x: 500, y: 500, z: 50 } },\n guid: Guid.createValue(),\n });\n\n function roundTrip(sky: SkyBoxProps): void {\n const props = { environment: { sky } };\n const name = Guid.createValue();\n const id = DisplayStyle3d.insert(localDb, IModel.dictionaryId, name, props);\n expect(id).not.to.equal(\"0\");\n\n const style = localDb.elements.getElement<DisplayStyle3d>(id);\n const sky2 = style.jsonProperties.styles.environment.sky!;\n expect(sky2).not.to.be.undefined;\n for (const key of Object.keys(sky)) {\n const propName = key as keyof SkyBoxProps;\n expect(sky2[propName]).to.deep.equal(sky[propName]);\n }\n }\n\n roundTrip({ display: true });\n roundTrip({ display: false });\n\n roundTrip({ twoColor: true });\n roundTrip({ twoColor: false });\n\n roundTrip({ skyColor: 0x123456 });\n roundTrip({ groundColor: 42 });\n roundTrip({ zenithColor: 0x43 });\n roundTrip({ nadirColor: 0 });\n\n roundTrip({ skyExponent: 0.2 });\n roundTrip({ groundExponent: -2.2 });\n\n roundTrip({ image: { type: SkyBoxImageType.None } });\n\n roundTrip({ image: { type: SkyBoxImageType.Spherical, texture: \"0x123\" } });\n roundTrip({ image: { type: SkyBoxImageType.Spherical, texture: \"images/sky.jpg\" } });\n\n roundTrip({ image: { type: SkyBoxImageType.Cube, textures: { front: \"0x1\", back: \"0x2\", left: \"0x3\", right: \"0x4\", top: \"0x5\", bottom: \"0x6\" } } });\n roundTrip({ image: { type: SkyBoxImageType.Cube, textures: { front: \"front.jpg\", back: \"back.png\", left: \"left.jpeg\", right: \"right.jpg\", top: \"top.png\", bottom: \"bottom.png\" } } });\n\n localDb.abandonChanges();\n localDb.close();\n });\n\n describe(\"onClone\", () => {\n let db: StandaloneDb;\n let db2: StandaloneDb;\n\n before(() => {\n db = StandaloneDb.createEmpty(IModelTestUtils.prepareOutputFile(\"DisplayStyle\", \"DisplayStyle.bim\"), {\n rootSubject: { name: \"DisplayStyle tests\", description: \"DisplayStyle tests\" },\n client: \"DisplayStyle\",\n globalOrigin: { x: 0, y: 0 },\n projectExtents: { low: { x: -500, y: -500, z: -50 }, high: { x: 500, y: 500, z: 50 } },\n guid: Guid.createValue(),\n });\n\n db2 = StandaloneDb.createEmpty(IModelTestUtils.prepareOutputFile(\"DisplayStyle2\", \"DisplayStyle2.bim\"), {\n rootSubject: { name: \"DisplayStyle tests\", description: \"DisplayStyle tests\" },\n client: \"DisplayStyle\",\n globalOrigin: { x: 0, y: 0 },\n projectExtents: { low: { x: -500, y: -500, z: -50 }, high: { x: 500, y: 500, z: 50 } },\n guid: Guid.createValue(),\n });\n });\n\n afterEach(() => {\n db.abandonChanges();\n db2.abandonChanges();\n });\n\n after(() => {\n db.close();\n db2.close();\n });\n\n it(\"remaps contour display subCategories when cloning\", () => {\n const cloneContext = new IModelElementCloneContext(db, db2);\n const displayStyleJsonProps: DisplayStyle3dSettingsProps = {\n contours: {\n groups: [\n {\n subCategories: CompressedId64Set.sortAndCompress([\"0x1\", \"0x2\", \"0x3\", \"0x4\"]),\n },\n ],\n },\n };\n const displayStyleId = DisplayStyle3d.insert(db, IModel.dictionaryId, \"TestStyle\", displayStyleJsonProps);\n\n cloneContext.remapElement(\"0x1\", \"0xa\");\n cloneContext.remapElement(\"0x3\", \"0xc\");\n const displayStyle = db.elements.getElement<DisplayStyle3d>(displayStyleId);\n const displayStyleClone = cloneContext.cloneElement(displayStyle);\n\n const contourSubCatsClone = CompressedId64Set.decompressArray(displayStyleClone.jsonProperties.styles.contours.groups[0].subCategories);\n expect(contourSubCatsClone.length).to.equal(2);\n expect(contourSubCatsClone).to.contain.members([\"0xa\", \"0xc\"]);\n });\n\n it(\"remaps excludedElements when cloning\", () => {\n const cloneContext = new IModelElementCloneContext(db, db2);\n const displayStyleJsonProps: DisplayStyleSettingsProps = {excludedElements: [\"0x1\", \"0x2\", \"0x3\", \"0x4\"]};\n const displayStyleId = DisplayStyle3d.insert(db, IModel.dictionaryId, \"TestStyle\", displayStyleJsonProps);\n\n cloneContext.remapElement(\"0x1\", \"0xa\");\n cloneContext.remapElement(\"0x3\", \"0xc\");\n const displayStyle = db.elements.getElement<DisplayStyle3d>(displayStyleId);\n const displayStyleClone = cloneContext.cloneElement(displayStyle);\n\n const excludedElementsClone = CompressedId64Set.decompressArray(displayStyleClone.jsonProperties.styles.excludedElements);\n expect(excludedElementsClone.length).to.equal(2);\n expect(excludedElementsClone).to.contain.members([\"0xa\", \"0xc\"]);\n });\n\n it(\"remaps subCategory overrides when cloning\", () => {\n const cloneContext = new IModelElementCloneContext(db, db2);\n const categoryId = SpatialCategory.insert(db, IModel.dictionaryId, \"testCat\", {});\n const subCategoryId1 = SubCategory.insert(db, categoryId, \"subC1\", {});\n const subCategoryId2 = SubCategory.insert(db, categoryId, \"subC2\", {});\n const subCategoryId3 = SubCategory.insert(db, categoryId, \"subC3\", {});\n const subCategoryId4 = SubCategory.insert(db, categoryId, \"subC4\", {});\n const displayStyleJsonProps: DisplayStyleSettingsProps = {subCategoryOvr: [\n {subCategory: subCategoryId1, weight: 5},\n {subCategory: subCategoryId2, weight: 3},\n {subCategory: subCategoryId3, invisible: false},\n {subCategory: subCategoryId4, invisible: true},\n ]};\n const displayStyleId = DisplayStyle3d.insert(db, IModel.dictionaryId, \"TestStyle\", displayStyleJsonProps);\n\n cloneContext.remapElement(subCategoryId1, \"0xa\");\n cloneContext.remapElement(subCategoryId4, \"0xd\");\n const displayStyle = db.elements.getElement<DisplayStyle3d>(displayStyleId);\n const displayStyleClone = cloneContext.cloneElement(displayStyle);\n\n const subCategoryOvrClone = displayStyleClone.jsonProperties.styles.subCategoryOvr;\n expect(subCategoryOvrClone.length).to.equal(2);\n expect(subCategoryOvrClone).to.deep.contain.members([\n {subCategory: \"0xa\", weight: 5},\n {subCategory: \"0xd\", invisible: true},\n ]);\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"DisplayStyle.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/DisplayStyle.test.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\nimport { expect } from \"chai\";\nimport { CompressedId64Set, Guid } from \"@itwin/core-bentley\";\nimport { DisplayStyle3dSettingsProps, DisplayStyleSettingsProps, IModel, SkyBoxImageType, SkyBoxProps } from \"@itwin/core-common\";\nimport { DisplayStyle3d, IModelElementCloneContext, SnapshotDb, SpatialCategory, StandaloneDb, SubCategory } from \"../../core-backend\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\n\ndescribe(\"DisplayStyle\", () => {\n it(\"preserves skybox\", () => {\n const localDb = SnapshotDb.createEmpty(IModelTestUtils.prepareOutputFile(\"DisplayStyle\", \"DisplayStyleSkybox.bim\"), {\n rootSubject: { name: \"DisplayStyle tests\", description: \"DisplayStyle tests\" },\n client: \"DisplayStyle\",\n globalOrigin: { x: 0, y: 0 },\n projectExtents: { low: { x: -500, y: -500, z: -50 }, high: { x: 500, y: 500, z: 50 } },\n guid: Guid.createValue(),\n });\n\n function roundTrip(sky: SkyBoxProps): void {\n const props = { environment: { sky } };\n const name = Guid.createValue();\n const id = DisplayStyle3d.insert(localDb, IModel.dictionaryId, name, props);\n expect(id).not.to.equal(\"0\");\n\n const style = localDb.elements.getElement<DisplayStyle3d>(id);\n const sky2 = style.jsonProperties.styles.environment.sky!;\n expect(sky2).not.to.be.undefined;\n for (const key of Object.keys(sky)) {\n const propName = key as keyof SkyBoxProps;\n expect(sky2[propName]).to.deep.equal(sky[propName]);\n }\n }\n\n roundTrip({ display: true });\n roundTrip({ display: false });\n\n roundTrip({ twoColor: true });\n roundTrip({ twoColor: false });\n\n roundTrip({ skyColor: 0x123456 });\n roundTrip({ groundColor: 42 });\n roundTrip({ zenithColor: 0x43 });\n roundTrip({ nadirColor: 0 });\n\n roundTrip({ skyExponent: 0.2 });\n roundTrip({ groundExponent: -2.2 });\n\n roundTrip({ image: { type: SkyBoxImageType.None } });\n\n roundTrip({ image: { type: SkyBoxImageType.Spherical, texture: \"0x123\" } });\n roundTrip({ image: { type: SkyBoxImageType.Spherical, texture: \"images/sky.jpg\" } });\n\n roundTrip({ image: { type: SkyBoxImageType.Cube, textures: { front: \"0x1\", back: \"0x2\", left: \"0x3\", right: \"0x4\", top: \"0x5\", bottom: \"0x6\" } } });\n roundTrip({ image: { type: SkyBoxImageType.Cube, textures: { front: \"front.jpg\", back: \"back.png\", left: \"left.jpeg\", right: \"right.jpg\", top: \"top.png\", bottom: \"bottom.png\" } } });\n\n localDb.abandonChanges();\n localDb.close();\n });\n\n describe(\"onClone\", () => {\n let db: StandaloneDb;\n let db2: StandaloneDb;\n\n before(() => {\n db = StandaloneDb.createEmpty(IModelTestUtils.prepareOutputFile(\"DisplayStyle\", \"DisplayStyle.bim\"), {\n rootSubject: { name: \"DisplayStyle tests\", description: \"DisplayStyle tests\" },\n client: \"DisplayStyle\",\n globalOrigin: { x: 0, y: 0 },\n projectExtents: { low: { x: -500, y: -500, z: -50 }, high: { x: 500, y: 500, z: 50 } },\n guid: Guid.createValue(),\n });\n\n db2 = StandaloneDb.createEmpty(IModelTestUtils.prepareOutputFile(\"DisplayStyle2\", \"DisplayStyle2.bim\"), {\n rootSubject: { name: \"DisplayStyle tests\", description: \"DisplayStyle tests\" },\n client: \"DisplayStyle\",\n globalOrigin: { x: 0, y: 0 },\n projectExtents: { low: { x: -500, y: -500, z: -50 }, high: { x: 500, y: 500, z: 50 } },\n guid: Guid.createValue(),\n });\n });\n\n afterEach(() => {\n db.abandonChanges();\n db2.abandonChanges();\n });\n\n after(() => {\n db.close();\n db2.close();\n });\n\n it(\"remaps contour display subCategories when cloning\", async () => {\n const cloneContext = new IModelElementCloneContext(db, db2);\n const displayStyleJsonProps: DisplayStyle3dSettingsProps = {\n contours: {\n groups: [\n {\n subCategories: CompressedId64Set.sortAndCompress([\"0x1\", \"0x2\", \"0x3\", \"0x4\"]),\n },\n ],\n },\n };\n const displayStyleId = DisplayStyle3d.insert(db, IModel.dictionaryId, \"TestStyle\", displayStyleJsonProps);\n\n cloneContext.remapElement(\"0x1\", \"0xa\");\n cloneContext.remapElement(\"0x3\", \"0xc\");\n const displayStyle = db.elements.getElement<DisplayStyle3d>(displayStyleId);\n const displayStyleClone = await cloneContext.cloneElement(displayStyle);\n\n const contourSubCatsClone = CompressedId64Set.decompressArray(displayStyleClone.jsonProperties.styles.contours.groups[0].subCategories);\n expect(contourSubCatsClone.length).to.equal(2);\n expect(contourSubCatsClone).to.contain.members([\"0xa\", \"0xc\"]);\n });\n\n it(\"remaps excludedElements when cloning\", async () => {\n const cloneContext = new IModelElementCloneContext(db, db2);\n const displayStyleJsonProps: DisplayStyleSettingsProps = {excludedElements: [\"0x1\", \"0x2\", \"0x3\", \"0x4\"]};\n const displayStyleId = DisplayStyle3d.insert(db, IModel.dictionaryId, \"TestStyle\", displayStyleJsonProps);\n\n cloneContext.remapElement(\"0x1\", \"0xa\");\n cloneContext.remapElement(\"0x3\", \"0xc\");\n const displayStyle = db.elements.getElement<DisplayStyle3d>(displayStyleId);\n const displayStyleClone = await cloneContext.cloneElement(displayStyle);\n\n const excludedElementsClone = CompressedId64Set.decompressArray(displayStyleClone.jsonProperties.styles.excludedElements);\n expect(excludedElementsClone.length).to.equal(2);\n expect(excludedElementsClone).to.contain.members([\"0xa\", \"0xc\"]);\n });\n\n it(\"remaps subCategory overrides when cloning\", async () => {\n const cloneContext = new IModelElementCloneContext(db, db2);\n const categoryId = SpatialCategory.insert(db, IModel.dictionaryId, \"testCat\", {});\n const subCategoryId1 = SubCategory.insert(db, categoryId, \"subC1\", {});\n const subCategoryId2 = SubCategory.insert(db, categoryId, \"subC2\", {});\n const subCategoryId3 = SubCategory.insert(db, categoryId, \"subC3\", {});\n const subCategoryId4 = SubCategory.insert(db, categoryId, \"subC4\", {});\n const displayStyleJsonProps: DisplayStyleSettingsProps = {subCategoryOvr: [\n {subCategory: subCategoryId1, weight: 5},\n {subCategory: subCategoryId2, weight: 3},\n {subCategory: subCategoryId3, invisible: false},\n {subCategory: subCategoryId4, invisible: true},\n ]};\n const displayStyleId = DisplayStyle3d.insert(db, IModel.dictionaryId, \"TestStyle\", displayStyleJsonProps);\n\n cloneContext.remapElement(subCategoryId1, \"0xa\");\n cloneContext.remapElement(subCategoryId4, \"0xd\");\n const displayStyle = db.elements.getElement<DisplayStyle3d>(displayStyleId);\n const displayStyleClone = await cloneContext.cloneElement(displayStyle);\n\n const subCategoryOvrClone = displayStyleClone.jsonProperties.styles.subCategoryOvr;\n expect(subCategoryOvrClone.length).to.equal(2);\n expect(subCategoryOvrClone).to.deep.contain.members([\n {subCategory: \"0xa\", weight: 5},\n {subCategory: \"0xd\", invisible: true},\n ]);\n });\n });\n});\n"]}
|
|
@@ -351,7 +351,7 @@ describe("RenderMaterialElement", () => {
|
|
|
351
351
|
});
|
|
352
352
|
});
|
|
353
353
|
describe("clone", () => {
|
|
354
|
-
it("clone maps", () => {
|
|
354
|
+
it("clone maps", async () => {
|
|
355
355
|
const textureId = insertTexture();
|
|
356
356
|
const unknownTextureId = "0xffffff";
|
|
357
357
|
expect(Id64.isValidId64(unknownTextureId)).to.be.true;
|
|
@@ -388,7 +388,7 @@ describe("RenderMaterialElement", () => {
|
|
|
388
388
|
const sourceProps = material.toJSON();
|
|
389
389
|
const targetProps = structuredClone(sourceProps);
|
|
390
390
|
// eslint-disable-next-line @typescript-eslint/dot-notation
|
|
391
|
-
RenderMaterialElement["onCloned"](context, sourceProps, targetProps);
|
|
391
|
+
await RenderMaterialElement["onCloned"](context, sourceProps, targetProps);
|
|
392
392
|
expect(targetProps.jsonProperties?.materialAssets?.renderMaterial?.Map).to.deep.equal({
|
|
393
393
|
Pattern: { TextureId: "CLONED" },
|
|
394
394
|
Normal: { TextureId: "CLONED" },
|
|
@@ -408,12 +408,12 @@ describe("RenderMaterialElement", () => {
|
|
|
408
408
|
});
|
|
409
409
|
jsonProps.materialAssets.renderMaterial.Map = { Pattern: undefined };
|
|
410
410
|
// eslint-disable-next-line @typescript-eslint/dot-notation
|
|
411
|
-
RenderMaterialElement["onCloned"](context, sourceProps, targetProps);
|
|
411
|
+
await RenderMaterialElement["onCloned"](context, sourceProps, targetProps);
|
|
412
412
|
// keep the sourceMap the same in targetProps
|
|
413
413
|
expect(targetProps.jsonProperties?.materialAssets?.renderMaterial?.Map).to.have.property("Pattern").that.is.undefined;
|
|
414
414
|
jsonProps.materialAssets.renderMaterial.Map = { Pattern: null };
|
|
415
415
|
// eslint-disable-next-line @typescript-eslint/dot-notation
|
|
416
|
-
RenderMaterialElement["onCloned"](context, sourceProps, targetProps);
|
|
416
|
+
await RenderMaterialElement["onCloned"](context, sourceProps, targetProps);
|
|
417
417
|
// keep the sourceMap the same in targetProps
|
|
418
418
|
expect(targetProps.jsonProperties?.materialAssets?.renderMaterial?.Map).to.have.property("Pattern").that.is.null;
|
|
419
419
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RenderMaterialElement.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/RenderMaterialElement.test.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\nimport { assert, expect } from \"chai\";\nimport { DbResult, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { ImageSourceFormat, IModel, NormalMapFlags, NormalMapProps, RenderMaterialAssetMapsProps, RenderMaterialAssetProps, RenderMaterialProps, TextureMapProps } from \"@itwin/core-common\";\nimport { ChannelControl, IModelElementCloneContext, RenderMaterialElement, RenderMaterialElementParams, SnapshotDb, Texture } from \"../../core-backend\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\n\nfunction removeUndefined(assetProps: RenderMaterialAssetProps): RenderMaterialAssetProps {\n const input = assetProps as any;\n for (const key of Object.keys(input))\n if (input[key] === undefined)\n delete input[key];\n\n const maps = assetProps.Map as any;\n if (maps) {\n for (const mapsKey of Object.keys(maps)) {\n const map = maps[mapsKey];\n for (const mapKey of Object.keys(map))\n if (map[mapKey] === undefined)\n delete map[mapKey];\n }\n }\n\n return assetProps;\n}\n\nfunction defaultBooleans(assetProps: RenderMaterialAssetProps): RenderMaterialAssetProps {\n const boolKeys = [\"HasBaseColor\", \"HasDiffuse\", \"HasFinish\", \"HasReflect\", \"HasReflectColor\", \"HasSpecular\", \"HasSpecularColor\"] as const;\n for (const boolKey of boolKeys)\n if (undefined === assetProps[boolKey])\n assetProps[boolKey] = false;\n\n return assetProps;\n}\n\ndescribe(\"RenderMaterialElement\", () => {\n let imodel: SnapshotDb;\n let materialNumber = 0;\n let textureNumber = 0;\n\n before(() => {\n const seedFileName = IModelTestUtils.resolveAssetFile(\"CompatibilityTestSeed.bim\");\n const testFileName = IModelTestUtils.prepareOutputFile(\"ExportGraphics\", \"ExportGraphicsTest.bim\");\n imodel = IModelTestUtils.createSnapshotFromSeed(testFileName, seedFileName);\n });\n\n after(() => imodel.close());\n\n function test(params: Omit<RenderMaterialElementParams, \"paletteName\">, expected?: RenderMaterialAssetProps): RenderMaterialElement {\n const name = `material${++materialNumber}`;\n const paletteName = \"palette\";\n const id = RenderMaterialElement.insert(imodel, IModel.dictionaryId, name, { ...params, paletteName });\n expect(Id64.isValidId64(id)).to.be.true;\n\n const mat = imodel.elements.getElement<RenderMaterialElement>(id);\n const json = mat.toJSON();\n expect(json.jsonProperties?.materialAssets?.renderMaterial).not.to.be.undefined;\n const actual = removeUndefined(json.jsonProperties!.materialAssets!.renderMaterial!);\n\n if (expected !== undefined) {\n expected = defaultBooleans(expected);\n expect(actual).to.deep.equal(expected);\n }\n\n return mat;\n }\n\n function insertTexture(): Id64String {\n // This is an encoded png containing a 3x3 square with white in top left pixel, blue in middle pixel, and green in\n // bottom right pixel. The rest of the square is red.\n const pngData = new Uint8Array([\n 137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 3, 0, 0, 0, 3, 8, 2, 0, 0, 0, 217,\n 74, 34, 232, 0, 0, 0, 1, 115, 82, 71, 66, 0, 174, 206, 28, 233, 0, 0, 0, 4, 103, 65, 77, 65, 0, 0, 177, 143, 11, 252,\n 97, 5, 0, 0, 0, 9, 112, 72, 89, 115, 0, 0, 14, 195, 0, 0, 14, 195, 1, 199, 111, 168, 100, 0, 0, 0, 24, 73, 68, 65,\n 84, 24, 87, 99, 248, 15, 4, 12, 12, 64, 4, 198, 64, 46, 132, 5, 162, 254, 51, 0, 0, 195, 90, 10, 246, 127, 175, 154, 145, 0,\n 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130,\n ]);\n\n const name = `texture${++textureNumber}`;\n const textureId = Texture.insertTexture(imodel, IModel.dictionaryId, name, ImageSourceFormat.Png, pngData);\n expect(Id64.isValidId64(textureId)).to.be.true;\n return textureId;\n }\n\n describe(\"read\", () => {\n it(\"should be able to convert TextureId to hexadecimal string outside javascript's double precision range of 2^53\", async () => {\n // LargeNumericRenderMaterialTextureId is a database with a single RenderMaterial whose jsonProperties look something like:\n // {\"materialAssets\":{\"renderMaterial\":{\"Map\":{\"Diffuse\":{\"TextureId\":9223372036854775807},\"Bump\":{\"TextureId\":18446744073709551615},\"Finish\":{\"TextureId\":13835058055282163712}}}}}\n // 9223372036854775807 is equivalent to 2^63 - 1 which is equivalent to the hexadecimal string 0x7fffffffffffffff.\n // 18446744073709551615 is equivalent to 2^64 - 1 which is equivalent to the hexadecimal string 0xffffffffffffffff.\n // 13835058055282163712 is equivalent to 2^63 + (2^63 / 2) which is equivalent to the hexadecimal string 0xc000000000000000.\n const seedFileName = IModelTestUtils.resolveAssetFile(\"LargeNumericRenderMaterialTextureId.bim\");\n\n const db = SnapshotDb.openFile(seedFileName);\n let id: Id64String;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n db.withStatement(`SELECT ECInstanceId from Bis.RenderMaterial`, (stmt) => {\n expect(stmt.step()).to.equal(DbResult.BE_SQLITE_ROW);\n id = stmt.getRow().id;\n expect(stmt.step()).to.equal(DbResult.BE_SQLITE_DONE);\n });\n const renderMatElement = db.elements.getElement<RenderMaterialElement>(id!).toJSON();\n expect(renderMatElement.jsonProperties?.materialAssets?.renderMaterial?.Map?.Diffuse?.TextureId).to.equal(\"0x7fffffffffffffff\");\n expect(renderMatElement.jsonProperties?.materialAssets?.renderMaterial?.Map?.Bump?.TextureId).to.equal(\"0xffffffffffffffff\");\n expect(renderMatElement.jsonProperties?.materialAssets?.renderMaterial?.Map?.Finish?.TextureId).to.equal(\"0xc000000000000000\");\n db.close();\n });\n });\n\n describe(\"insert\", () => {\n it(\"with default values\", () => {\n test({}, {});\n });\n\n it(\"should convert TextureIds to hexadecimal string when loading element\", () => {\n /* eslint-disable @typescript-eslint/naming-convention */\n const maps: RenderMaterialAssetMapsProps = {\n Pattern: { TextureId: 1 },\n Normal: { TextureId: 0x0000bc0000001234 }, // TextureId has a non-zero briefcase Id\n Bump: { TextureId: 0x000000123456789a }, // TextureId has non-zero digits in the upper 32 bits\n Diffuse: { TextureId: 0x0000bc123456789a }, // TextureId has a non-zero briefcase Id and non-zero digits in the upper 32 bits.\n Finish: { TextureId: 5 },\n GlowColor: { TextureId: 6 },\n Reflect: { TextureId: 7 },\n Specular: { TextureId: 8 },\n TranslucencyColor: { OtherProp2: \"test\"}, // Should be unchanged, still present.\n TransparentColor: { TextureId: 10, OtherProp: 1 }, // OtherProp should be unchanged, still present.\n Displacement: { TextureId: \"0x1\"},\n OtherProperty: { OtherProperty: \"test\"}, // Should be unchanged.\n } as any;\n /* eslint-enable @typescript-eslint/naming-convention */\n const material = test({});\n const jsonProps = material.jsonProperties as RenderMaterialProps[\"jsonProperties\"];\n assert(jsonProps?.materialAssets?.renderMaterial && jsonProps.materialAssets.renderMaterial.Map === undefined);\n jsonProps.materialAssets.renderMaterial.Map = maps;\n material.update();\n\n const pathName = imodel.pathName;\n imodel.saveChanges();\n imodel.close(); // Need to close so we can load the element back in with strings instead of numbers.\n\n imodel = SnapshotDb.openForApplyChangesets(pathName);\n imodel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n const mat = imodel.elements.getElement<RenderMaterialElement>(material.id);\n\n const props = mat.toJSON();\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map).to.not.be.undefined;\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.Pattern?.TextureId).to.equal(\"0x1\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.Normal?.TextureId).to.equal(\"0xbc0000001234\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.Bump?.TextureId).to.equal(\"0x123456789a\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.Diffuse?.TextureId).to.equal(\"0xbc123456789a\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.Finish?.TextureId).to.equal(\"0x5\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.GlowColor?.TextureId).to.equal(\"0x6\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.Reflect?.TextureId).to.equal(\"0x7\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.Specular?.TextureId).to.equal(\"0x8\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.TranslucencyColor?.TextureId).to.be.undefined;\n expect((props.jsonProperties?.materialAssets?.renderMaterial?.Map!.TranslucencyColor as any).OtherProp2).to.equal(\"test\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.TransparentColor?.TextureId).to.equal(\"0xa\");\n expect((props.jsonProperties?.materialAssets?.renderMaterial?.Map!.TransparentColor as any).OtherProp).to.equal(1);\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.Displacement?.TextureId).to.equal(\"0x1\");\n expect(((props.jsonProperties?.materialAssets?.renderMaterial?.Map as any).OtherProperty).OtherProperty).to.equal(\"test\");\n });\n\n it(\"with custom values\", () => {\n const params: Omit<RenderMaterialElementParams, \"paletteName\"> = {\n color: [1, 0, 0],\n specularColor: [0, 1, 0],\n finish: 21,\n transmit: 0.5,\n diffuse: 0.2,\n specular: 0.8,\n reflect: 0.5,\n reflectColor: [0, 0, 1],\n };\n\n /* eslint-disable @typescript-eslint/naming-convention */\n test(params, {\n HasBaseColor: true, color: params.color,\n HasSpecularColor: true, specular_color: params.specularColor,\n HasFinish: true, finish: params.finish,\n HasTransmit: true, transmit: params.transmit,\n HasDiffuse: true, diffuse: params.diffuse,\n HasSpecular: true, specular: params.specular,\n HasReflect: true, reflect: params.reflect,\n HasReflectColor: true, reflect_color: params.reflectColor,\n });\n\n params.transmit = undefined;\n /* eslint-disable @typescript-eslint/naming-convention */\n test(params, {\n HasBaseColor: true, color: params.color,\n HasSpecularColor: true, specular_color: params.specularColor,\n HasFinish: true, finish: params.finish,\n HasDiffuse: true, diffuse: params.diffuse,\n HasSpecular: true, specular: params.specular,\n HasReflect: true, reflect: params.reflect,\n HasReflectColor: true, reflect_color: params.reflectColor,\n });\n\n params.transmit = 0.0;\n /* eslint-disable @typescript-eslint/naming-convention */\n test(params, {\n HasBaseColor: true, color: params.color,\n HasSpecularColor: true, specular_color: params.specularColor,\n HasFinish: true, finish: params.finish,\n HasTransmit: true, transmit: params.transmit,\n HasDiffuse: true, diffuse: params.diffuse,\n HasSpecular: true, specular: params.specular,\n HasReflect: true, reflect: params.reflect,\n HasReflectColor: true, reflect_color: params.reflectColor,\n });\n });\n\n it(\"pattern map with default values\", () => {\n const textureId = insertTexture();\n test({\n patternMap: {\n TextureId: textureId,\n },\n }, {\n Map: {\n Pattern: {\n TextureId: textureId,\n },\n },\n });\n });\n\n it(\"pattern map with custom values\", () => {\n const patternMap: TextureMapProps = {\n TextureId: insertTexture(),\n pattern_angle: 1,\n pattern_u_flip: true,\n pattern_flip: true,\n pattern_scale: [-1, 2],\n pattern_offset: [-2, 1],\n pattern_scalemode: 3,\n pattern_mapping: 4,\n pattern_weight: 0.5,\n };\n\n test({ patternMap }, { Map: { Pattern: patternMap } });\n });\n\n it(\"pattern map with constant lod parameters\", () => {\n const patternMap: TextureMapProps = {\n TextureId: insertTexture(),\n pattern_angle: 1,\n pattern_u_flip: true,\n pattern_flip: true,\n pattern_scale: [-1, 2],\n pattern_offset: [-2, 1],\n pattern_scalemode: 3,\n pattern_mapping: 4,\n pattern_weight: 0.5,\n pattern_useconstantlod: true,\n pattern_constantlod_repetitions: 0.333,\n pattern_constantlod_offset: [1000, 2000],\n pattern_constantlod_mindistanceclamp: 4,\n pattern_constantlod_maxdistanceclamp: 256,\n };\n\n test({ patternMap }, { Map: { Pattern: patternMap } });\n });\n\n it(\"normal and pattern maps with default values\", () => {\n const normalId = insertTexture();\n const patternId = insertTexture();\n expect(normalId).not.to.equal(patternId);\n\n test({\n patternMap: { TextureId: patternId },\n normalMap: { TextureId: normalId },\n }, {\n Map: {\n Pattern: { TextureId: patternId },\n Normal: {\n TextureId: normalId,\n },\n },\n });\n });\n\n it(\"merges mapping params from normal and pattern maps\", () => {\n const normalId = insertTexture();\n const patternId = insertTexture();\n expect(normalId).not.to.equal(patternId);\n\n const patternMap: TextureMapProps = {\n TextureId: patternId,\n pattern_scale: [-1, 2],\n pattern_weight: 0.5,\n };\n\n const normalMap: NormalMapProps = {\n TextureId: normalId,\n pattern_angle: 0.8,\n pattern_flip: true,\n pattern_weight: 1.5,\n };\n\n const sharedProps: Omit<TextureMapProps, \"TextureId\"> = {\n pattern_scale: patternMap.pattern_scale,\n pattern_weight: patternMap.pattern_weight,\n pattern_angle: normalMap.pattern_angle,\n pattern_flip: normalMap.pattern_flip,\n };\n\n test({ patternMap, normalMap }, {\n Map: {\n Pattern: {\n ...sharedProps,\n TextureId: patternId,\n },\n Normal: {\n ...sharedProps,\n TextureId: normalId,\n },\n },\n });\n });\n\n it(\"normal map with default values\", () => {\n const id = insertTexture();\n test({ normalMap: { TextureId: id } }, { Map: { Normal: { TextureId: id } } });\n });\n\n it(\"normal map with inverted green channel\", () => {\n const id = insertTexture();\n test({\n normalMap: {\n TextureId: id,\n NormalFlags: 1,\n },\n }, {\n Map: {\n Normal: {\n NormalFlags: 1,\n TextureId: id,\n },\n },\n });\n });\n\n it(\"normal map with scale\", () => {\n const id = insertTexture();\n const scale = 2.5;\n test({\n normalMap: {\n TextureId: id,\n scale,\n },\n }, {\n pbr_normal: 2.5,\n Map: {\n Normal: {\n TextureId: id,\n },\n },\n });\n });\n\n it(\"normal map with flags\", () => {\n const id = insertTexture();\n test({\n normalMap: {\n TextureId: id,\n NormalFlags: 0xff00 as NormalMapFlags,\n },\n }, {\n Map: {\n Normal: {\n TextureId: id,\n NormalFlags: 0xff00 as NormalMapFlags,\n },\n },\n });\n });\n\n it(\"normal map with constant lod parameters\", () => {\n const normalMap: NormalMapProps = {\n TextureId: insertTexture(),\n NormalFlags: 2,\n pattern_constantlod_repetitions: 0.333,\n pattern_constantlod_offset: [1000, 2000],\n pattern_constantlod_mindistanceclamp: 4,\n pattern_constantlod_maxdistanceclamp: 256,\n };\n test({ normalMap }, { Map: { Normal: normalMap } });\n });\n });\n\n describe(\"clone\", () => {\n it(\"clone maps\", () => {\n const textureId = insertTexture();\n const unknownTextureId = \"0xffffff\";\n\n expect(Id64.isValidId64(unknownTextureId)).to.be.true;\n expect(imodel.elements.tryGetElementProps(unknownTextureId)).to.be.undefined;\n\n const maps: RenderMaterialAssetMapsProps = {\n Pattern: { TextureId: textureId },\n Normal: { TextureId: textureId },\n Bump: { TextureId: textureId },\n Diffuse: { TextureId: textureId },\n Finish: { TextureId: textureId },\n GlowColor: { TextureId: textureId },\n Reflect: { TextureId: textureId },\n Specular: { TextureId: textureId },\n TranslucencyColor: { TextureId: textureId },\n TransparentColor: { TextureId: textureId },\n Displacement: { TextureId: textureId },\n [\"Unknown\" as any]: { TextureId: textureId },\n [\"InvalidTexture\" as any]: { TextureId: Id64.invalid },\n [\"UnknownTexture\" as any]: { TextureId: unknownTextureId },\n [\"NoTextureId\" as any]: { OtherProp: 1 },\n };\n\n const material = test({});\n const jsonProps = material.jsonProperties as RenderMaterialProps[\"jsonProperties\"];\n assert(jsonProps?.materialAssets?.renderMaterial && jsonProps.materialAssets.renderMaterial.Map === undefined);\n jsonProps.materialAssets.renderMaterial.Map = maps;\n material.update();\n\n const context = {\n findTargetElementId: (sourceId: Id64String) => {\n expect(typeof sourceId, `bad id: ${sourceId}`).to.equal(\"string\");\n expect(Id64.isId64(sourceId), `bad id: ${sourceId}`).to.be.true;\n return \"CLONED\";\n },\n } as any as IModelElementCloneContext;\n\n const sourceProps = material.toJSON();\n const targetProps = structuredClone(sourceProps);\n\n // eslint-disable-next-line @typescript-eslint/dot-notation\n RenderMaterialElement[\"onCloned\"](context, sourceProps, targetProps);\n\n expect(targetProps.jsonProperties?.materialAssets?.renderMaterial?.Map).to.deep.equal({\n Pattern: { TextureId: \"CLONED\" },\n Normal: { TextureId: \"CLONED\" },\n Bump: { TextureId: \"CLONED\" },\n Diffuse: { TextureId: \"CLONED\" },\n Finish: { TextureId: \"CLONED\" },\n GlowColor: { TextureId: \"CLONED\" },\n Reflect: { TextureId: \"CLONED\" },\n Specular: { TextureId: \"CLONED\" },\n TranslucencyColor: { TextureId: \"CLONED\" },\n TransparentColor: { TextureId: \"CLONED\" },\n Displacement: { TextureId: \"CLONED\" },\n Unknown: { TextureId: \"CLONED\" },\n InvalidTexture: { TextureId: Id64.invalid },\n UnknownTexture: { TextureId: \"CLONED\" },\n NoTextureId: { OtherProp: 1 },\n });\n\n jsonProps.materialAssets.renderMaterial.Map = {Pattern: undefined};\n // eslint-disable-next-line @typescript-eslint/dot-notation\n RenderMaterialElement[\"onCloned\"](context, sourceProps, targetProps);\n // keep the sourceMap the same in targetProps\n expect(targetProps.jsonProperties?.materialAssets?.renderMaterial?.Map).to.have.property(\"Pattern\").that.is.undefined;\n jsonProps.materialAssets.renderMaterial.Map = {Pattern: null as any};\n // eslint-disable-next-line @typescript-eslint/dot-notation\n RenderMaterialElement[\"onCloned\"](context, sourceProps, targetProps);\n // keep the sourceMap the same in targetProps\n expect(targetProps.jsonProperties?.materialAssets?.renderMaterial?.Map).to.have.property(\"Pattern\").that.is.null;\n });\n });\n});\n"]}
|
|
1
|
+
{"version":3,"file":"RenderMaterialElement.test.js","sourceRoot":"","sources":["../../../../src/test/standalone/RenderMaterialElement.test.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\nimport { assert, expect } from \"chai\";\nimport { DbResult, Id64, Id64String } from \"@itwin/core-bentley\";\nimport { ImageSourceFormat, IModel, NormalMapFlags, NormalMapProps, RenderMaterialAssetMapsProps, RenderMaterialAssetProps, RenderMaterialProps, TextureMapProps } from \"@itwin/core-common\";\nimport { ChannelControl, IModelElementCloneContext, RenderMaterialElement, RenderMaterialElementParams, SnapshotDb, Texture } from \"../../core-backend\";\nimport { IModelTestUtils } from \"../IModelTestUtils\";\n\nfunction removeUndefined(assetProps: RenderMaterialAssetProps): RenderMaterialAssetProps {\n const input = assetProps as any;\n for (const key of Object.keys(input))\n if (input[key] === undefined)\n delete input[key];\n\n const maps = assetProps.Map as any;\n if (maps) {\n for (const mapsKey of Object.keys(maps)) {\n const map = maps[mapsKey];\n for (const mapKey of Object.keys(map))\n if (map[mapKey] === undefined)\n delete map[mapKey];\n }\n }\n\n return assetProps;\n}\n\nfunction defaultBooleans(assetProps: RenderMaterialAssetProps): RenderMaterialAssetProps {\n const boolKeys = [\"HasBaseColor\", \"HasDiffuse\", \"HasFinish\", \"HasReflect\", \"HasReflectColor\", \"HasSpecular\", \"HasSpecularColor\"] as const;\n for (const boolKey of boolKeys)\n if (undefined === assetProps[boolKey])\n assetProps[boolKey] = false;\n\n return assetProps;\n}\n\ndescribe(\"RenderMaterialElement\", () => {\n let imodel: SnapshotDb;\n let materialNumber = 0;\n let textureNumber = 0;\n\n before(() => {\n const seedFileName = IModelTestUtils.resolveAssetFile(\"CompatibilityTestSeed.bim\");\n const testFileName = IModelTestUtils.prepareOutputFile(\"ExportGraphics\", \"ExportGraphicsTest.bim\");\n imodel = IModelTestUtils.createSnapshotFromSeed(testFileName, seedFileName);\n });\n\n after(() => imodel.close());\n\n function test(params: Omit<RenderMaterialElementParams, \"paletteName\">, expected?: RenderMaterialAssetProps): RenderMaterialElement {\n const name = `material${++materialNumber}`;\n const paletteName = \"palette\";\n const id = RenderMaterialElement.insert(imodel, IModel.dictionaryId, name, { ...params, paletteName });\n expect(Id64.isValidId64(id)).to.be.true;\n\n const mat = imodel.elements.getElement<RenderMaterialElement>(id);\n const json = mat.toJSON();\n expect(json.jsonProperties?.materialAssets?.renderMaterial).not.to.be.undefined;\n const actual = removeUndefined(json.jsonProperties!.materialAssets!.renderMaterial!);\n\n if (expected !== undefined) {\n expected = defaultBooleans(expected);\n expect(actual).to.deep.equal(expected);\n }\n\n return mat;\n }\n\n function insertTexture(): Id64String {\n // This is an encoded png containing a 3x3 square with white in top left pixel, blue in middle pixel, and green in\n // bottom right pixel. The rest of the square is red.\n const pngData = new Uint8Array([\n 137, 80, 78, 71, 13, 10, 26, 10, 0, 0, 0, 13, 73, 72, 68, 82, 0, 0, 0, 3, 0, 0, 0, 3, 8, 2, 0, 0, 0, 217,\n 74, 34, 232, 0, 0, 0, 1, 115, 82, 71, 66, 0, 174, 206, 28, 233, 0, 0, 0, 4, 103, 65, 77, 65, 0, 0, 177, 143, 11, 252,\n 97, 5, 0, 0, 0, 9, 112, 72, 89, 115, 0, 0, 14, 195, 0, 0, 14, 195, 1, 199, 111, 168, 100, 0, 0, 0, 24, 73, 68, 65,\n 84, 24, 87, 99, 248, 15, 4, 12, 12, 64, 4, 198, 64, 46, 132, 5, 162, 254, 51, 0, 0, 195, 90, 10, 246, 127, 175, 154, 145, 0,\n 0, 0, 0, 73, 69, 78, 68, 174, 66, 96, 130,\n ]);\n\n const name = `texture${++textureNumber}`;\n const textureId = Texture.insertTexture(imodel, IModel.dictionaryId, name, ImageSourceFormat.Png, pngData);\n expect(Id64.isValidId64(textureId)).to.be.true;\n return textureId;\n }\n\n describe(\"read\", () => {\n it(\"should be able to convert TextureId to hexadecimal string outside javascript's double precision range of 2^53\", async () => {\n // LargeNumericRenderMaterialTextureId is a database with a single RenderMaterial whose jsonProperties look something like:\n // {\"materialAssets\":{\"renderMaterial\":{\"Map\":{\"Diffuse\":{\"TextureId\":9223372036854775807},\"Bump\":{\"TextureId\":18446744073709551615},\"Finish\":{\"TextureId\":13835058055282163712}}}}}\n // 9223372036854775807 is equivalent to 2^63 - 1 which is equivalent to the hexadecimal string 0x7fffffffffffffff.\n // 18446744073709551615 is equivalent to 2^64 - 1 which is equivalent to the hexadecimal string 0xffffffffffffffff.\n // 13835058055282163712 is equivalent to 2^63 + (2^63 / 2) which is equivalent to the hexadecimal string 0xc000000000000000.\n const seedFileName = IModelTestUtils.resolveAssetFile(\"LargeNumericRenderMaterialTextureId.bim\");\n\n const db = SnapshotDb.openFile(seedFileName);\n let id: Id64String;\n // eslint-disable-next-line @typescript-eslint/no-deprecated\n db.withStatement(`SELECT ECInstanceId from Bis.RenderMaterial`, (stmt) => {\n expect(stmt.step()).to.equal(DbResult.BE_SQLITE_ROW);\n id = stmt.getRow().id;\n expect(stmt.step()).to.equal(DbResult.BE_SQLITE_DONE);\n });\n const renderMatElement = db.elements.getElement<RenderMaterialElement>(id!).toJSON();\n expect(renderMatElement.jsonProperties?.materialAssets?.renderMaterial?.Map?.Diffuse?.TextureId).to.equal(\"0x7fffffffffffffff\");\n expect(renderMatElement.jsonProperties?.materialAssets?.renderMaterial?.Map?.Bump?.TextureId).to.equal(\"0xffffffffffffffff\");\n expect(renderMatElement.jsonProperties?.materialAssets?.renderMaterial?.Map?.Finish?.TextureId).to.equal(\"0xc000000000000000\");\n db.close();\n });\n });\n\n describe(\"insert\", () => {\n it(\"with default values\", () => {\n test({}, {});\n });\n\n it(\"should convert TextureIds to hexadecimal string when loading element\", () => {\n /* eslint-disable @typescript-eslint/naming-convention */\n const maps: RenderMaterialAssetMapsProps = {\n Pattern: { TextureId: 1 },\n Normal: { TextureId: 0x0000bc0000001234 }, // TextureId has a non-zero briefcase Id\n Bump: { TextureId: 0x000000123456789a }, // TextureId has non-zero digits in the upper 32 bits\n Diffuse: { TextureId: 0x0000bc123456789a }, // TextureId has a non-zero briefcase Id and non-zero digits in the upper 32 bits.\n Finish: { TextureId: 5 },\n GlowColor: { TextureId: 6 },\n Reflect: { TextureId: 7 },\n Specular: { TextureId: 8 },\n TranslucencyColor: { OtherProp2: \"test\"}, // Should be unchanged, still present.\n TransparentColor: { TextureId: 10, OtherProp: 1 }, // OtherProp should be unchanged, still present.\n Displacement: { TextureId: \"0x1\"},\n OtherProperty: { OtherProperty: \"test\"}, // Should be unchanged.\n } as any;\n /* eslint-enable @typescript-eslint/naming-convention */\n const material = test({});\n const jsonProps = material.jsonProperties as RenderMaterialProps[\"jsonProperties\"];\n assert(jsonProps?.materialAssets?.renderMaterial && jsonProps.materialAssets.renderMaterial.Map === undefined);\n jsonProps.materialAssets.renderMaterial.Map = maps;\n material.update();\n\n const pathName = imodel.pathName;\n imodel.saveChanges();\n imodel.close(); // Need to close so we can load the element back in with strings instead of numbers.\n\n imodel = SnapshotDb.openForApplyChangesets(pathName);\n imodel.channels.addAllowedChannel(ChannelControl.sharedChannelName);\n\n const mat = imodel.elements.getElement<RenderMaterialElement>(material.id);\n\n const props = mat.toJSON();\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map).to.not.be.undefined;\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.Pattern?.TextureId).to.equal(\"0x1\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.Normal?.TextureId).to.equal(\"0xbc0000001234\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.Bump?.TextureId).to.equal(\"0x123456789a\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.Diffuse?.TextureId).to.equal(\"0xbc123456789a\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.Finish?.TextureId).to.equal(\"0x5\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.GlowColor?.TextureId).to.equal(\"0x6\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.Reflect?.TextureId).to.equal(\"0x7\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.Specular?.TextureId).to.equal(\"0x8\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.TranslucencyColor?.TextureId).to.be.undefined;\n expect((props.jsonProperties?.materialAssets?.renderMaterial?.Map!.TranslucencyColor as any).OtherProp2).to.equal(\"test\");\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.TransparentColor?.TextureId).to.equal(\"0xa\");\n expect((props.jsonProperties?.materialAssets?.renderMaterial?.Map!.TransparentColor as any).OtherProp).to.equal(1);\n expect(props.jsonProperties?.materialAssets?.renderMaterial?.Map!.Displacement?.TextureId).to.equal(\"0x1\");\n expect(((props.jsonProperties?.materialAssets?.renderMaterial?.Map as any).OtherProperty).OtherProperty).to.equal(\"test\");\n });\n\n it(\"with custom values\", () => {\n const params: Omit<RenderMaterialElementParams, \"paletteName\"> = {\n color: [1, 0, 0],\n specularColor: [0, 1, 0],\n finish: 21,\n transmit: 0.5,\n diffuse: 0.2,\n specular: 0.8,\n reflect: 0.5,\n reflectColor: [0, 0, 1],\n };\n\n /* eslint-disable @typescript-eslint/naming-convention */\n test(params, {\n HasBaseColor: true, color: params.color,\n HasSpecularColor: true, specular_color: params.specularColor,\n HasFinish: true, finish: params.finish,\n HasTransmit: true, transmit: params.transmit,\n HasDiffuse: true, diffuse: params.diffuse,\n HasSpecular: true, specular: params.specular,\n HasReflect: true, reflect: params.reflect,\n HasReflectColor: true, reflect_color: params.reflectColor,\n });\n\n params.transmit = undefined;\n /* eslint-disable @typescript-eslint/naming-convention */\n test(params, {\n HasBaseColor: true, color: params.color,\n HasSpecularColor: true, specular_color: params.specularColor,\n HasFinish: true, finish: params.finish,\n HasDiffuse: true, diffuse: params.diffuse,\n HasSpecular: true, specular: params.specular,\n HasReflect: true, reflect: params.reflect,\n HasReflectColor: true, reflect_color: params.reflectColor,\n });\n\n params.transmit = 0.0;\n /* eslint-disable @typescript-eslint/naming-convention */\n test(params, {\n HasBaseColor: true, color: params.color,\n HasSpecularColor: true, specular_color: params.specularColor,\n HasFinish: true, finish: params.finish,\n HasTransmit: true, transmit: params.transmit,\n HasDiffuse: true, diffuse: params.diffuse,\n HasSpecular: true, specular: params.specular,\n HasReflect: true, reflect: params.reflect,\n HasReflectColor: true, reflect_color: params.reflectColor,\n });\n });\n\n it(\"pattern map with default values\", () => {\n const textureId = insertTexture();\n test({\n patternMap: {\n TextureId: textureId,\n },\n }, {\n Map: {\n Pattern: {\n TextureId: textureId,\n },\n },\n });\n });\n\n it(\"pattern map with custom values\", () => {\n const patternMap: TextureMapProps = {\n TextureId: insertTexture(),\n pattern_angle: 1,\n pattern_u_flip: true,\n pattern_flip: true,\n pattern_scale: [-1, 2],\n pattern_offset: [-2, 1],\n pattern_scalemode: 3,\n pattern_mapping: 4,\n pattern_weight: 0.5,\n };\n\n test({ patternMap }, { Map: { Pattern: patternMap } });\n });\n\n it(\"pattern map with constant lod parameters\", () => {\n const patternMap: TextureMapProps = {\n TextureId: insertTexture(),\n pattern_angle: 1,\n pattern_u_flip: true,\n pattern_flip: true,\n pattern_scale: [-1, 2],\n pattern_offset: [-2, 1],\n pattern_scalemode: 3,\n pattern_mapping: 4,\n pattern_weight: 0.5,\n pattern_useconstantlod: true,\n pattern_constantlod_repetitions: 0.333,\n pattern_constantlod_offset: [1000, 2000],\n pattern_constantlod_mindistanceclamp: 4,\n pattern_constantlod_maxdistanceclamp: 256,\n };\n\n test({ patternMap }, { Map: { Pattern: patternMap } });\n });\n\n it(\"normal and pattern maps with default values\", () => {\n const normalId = insertTexture();\n const patternId = insertTexture();\n expect(normalId).not.to.equal(patternId);\n\n test({\n patternMap: { TextureId: patternId },\n normalMap: { TextureId: normalId },\n }, {\n Map: {\n Pattern: { TextureId: patternId },\n Normal: {\n TextureId: normalId,\n },\n },\n });\n });\n\n it(\"merges mapping params from normal and pattern maps\", () => {\n const normalId = insertTexture();\n const patternId = insertTexture();\n expect(normalId).not.to.equal(patternId);\n\n const patternMap: TextureMapProps = {\n TextureId: patternId,\n pattern_scale: [-1, 2],\n pattern_weight: 0.5,\n };\n\n const normalMap: NormalMapProps = {\n TextureId: normalId,\n pattern_angle: 0.8,\n pattern_flip: true,\n pattern_weight: 1.5,\n };\n\n const sharedProps: Omit<TextureMapProps, \"TextureId\"> = {\n pattern_scale: patternMap.pattern_scale,\n pattern_weight: patternMap.pattern_weight,\n pattern_angle: normalMap.pattern_angle,\n pattern_flip: normalMap.pattern_flip,\n };\n\n test({ patternMap, normalMap }, {\n Map: {\n Pattern: {\n ...sharedProps,\n TextureId: patternId,\n },\n Normal: {\n ...sharedProps,\n TextureId: normalId,\n },\n },\n });\n });\n\n it(\"normal map with default values\", () => {\n const id = insertTexture();\n test({ normalMap: { TextureId: id } }, { Map: { Normal: { TextureId: id } } });\n });\n\n it(\"normal map with inverted green channel\", () => {\n const id = insertTexture();\n test({\n normalMap: {\n TextureId: id,\n NormalFlags: 1,\n },\n }, {\n Map: {\n Normal: {\n NormalFlags: 1,\n TextureId: id,\n },\n },\n });\n });\n\n it(\"normal map with scale\", () => {\n const id = insertTexture();\n const scale = 2.5;\n test({\n normalMap: {\n TextureId: id,\n scale,\n },\n }, {\n pbr_normal: 2.5,\n Map: {\n Normal: {\n TextureId: id,\n },\n },\n });\n });\n\n it(\"normal map with flags\", () => {\n const id = insertTexture();\n test({\n normalMap: {\n TextureId: id,\n NormalFlags: 0xff00 as NormalMapFlags,\n },\n }, {\n Map: {\n Normal: {\n TextureId: id,\n NormalFlags: 0xff00 as NormalMapFlags,\n },\n },\n });\n });\n\n it(\"normal map with constant lod parameters\", () => {\n const normalMap: NormalMapProps = {\n TextureId: insertTexture(),\n NormalFlags: 2,\n pattern_constantlod_repetitions: 0.333,\n pattern_constantlod_offset: [1000, 2000],\n pattern_constantlod_mindistanceclamp: 4,\n pattern_constantlod_maxdistanceclamp: 256,\n };\n test({ normalMap }, { Map: { Normal: normalMap } });\n });\n });\n\n describe(\"clone\", () => {\n it(\"clone maps\", async () => {\n const textureId = insertTexture();\n const unknownTextureId = \"0xffffff\";\n\n expect(Id64.isValidId64(unknownTextureId)).to.be.true;\n expect(imodel.elements.tryGetElementProps(unknownTextureId)).to.be.undefined;\n\n const maps: RenderMaterialAssetMapsProps = {\n Pattern: { TextureId: textureId },\n Normal: { TextureId: textureId },\n Bump: { TextureId: textureId },\n Diffuse: { TextureId: textureId },\n Finish: { TextureId: textureId },\n GlowColor: { TextureId: textureId },\n Reflect: { TextureId: textureId },\n Specular: { TextureId: textureId },\n TranslucencyColor: { TextureId: textureId },\n TransparentColor: { TextureId: textureId },\n Displacement: { TextureId: textureId },\n [\"Unknown\" as any]: { TextureId: textureId },\n [\"InvalidTexture\" as any]: { TextureId: Id64.invalid },\n [\"UnknownTexture\" as any]: { TextureId: unknownTextureId },\n [\"NoTextureId\" as any]: { OtherProp: 1 },\n };\n\n const material = test({});\n const jsonProps = material.jsonProperties as RenderMaterialProps[\"jsonProperties\"];\n assert(jsonProps?.materialAssets?.renderMaterial && jsonProps.materialAssets.renderMaterial.Map === undefined);\n jsonProps.materialAssets.renderMaterial.Map = maps;\n material.update();\n\n const context = {\n findTargetElementId: (sourceId: Id64String) => {\n expect(typeof sourceId, `bad id: ${sourceId}`).to.equal(\"string\");\n expect(Id64.isId64(sourceId), `bad id: ${sourceId}`).to.be.true;\n return \"CLONED\";\n },\n } as any as IModelElementCloneContext;\n\n const sourceProps = material.toJSON();\n const targetProps = structuredClone(sourceProps);\n\n // eslint-disable-next-line @typescript-eslint/dot-notation\n await RenderMaterialElement[\"onCloned\"](context, sourceProps, targetProps);\n\n expect(targetProps.jsonProperties?.materialAssets?.renderMaterial?.Map).to.deep.equal({\n Pattern: { TextureId: \"CLONED\" },\n Normal: { TextureId: \"CLONED\" },\n Bump: { TextureId: \"CLONED\" },\n Diffuse: { TextureId: \"CLONED\" },\n Finish: { TextureId: \"CLONED\" },\n GlowColor: { TextureId: \"CLONED\" },\n Reflect: { TextureId: \"CLONED\" },\n Specular: { TextureId: \"CLONED\" },\n TranslucencyColor: { TextureId: \"CLONED\" },\n TransparentColor: { TextureId: \"CLONED\" },\n Displacement: { TextureId: \"CLONED\" },\n Unknown: { TextureId: \"CLONED\" },\n InvalidTexture: { TextureId: Id64.invalid },\n UnknownTexture: { TextureId: \"CLONED\" },\n NoTextureId: { OtherProp: 1 },\n });\n\n jsonProps.materialAssets.renderMaterial.Map = {Pattern: undefined};\n // eslint-disable-next-line @typescript-eslint/dot-notation\n await RenderMaterialElement[\"onCloned\"](context, sourceProps, targetProps);\n // keep the sourceMap the same in targetProps\n expect(targetProps.jsonProperties?.materialAssets?.renderMaterial?.Map).to.have.property(\"Pattern\").that.is.undefined;\n jsonProps.materialAssets.renderMaterial.Map = {Pattern: null as any};\n // eslint-disable-next-line @typescript-eslint/dot-notation\n await RenderMaterialElement[\"onCloned\"](context, sourceProps, targetProps);\n // keep the sourceMap the same in targetProps\n expect(targetProps.jsonProperties?.materialAssets?.renderMaterial?.Map).to.have.property(\"Pattern\").that.is.null;\n });\n });\n});\n"]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@itwin/core-backend",
|
|
3
|
-
"version": "5.3.0-dev.
|
|
3
|
+
"version": "5.3.0-dev.17",
|
|
4
4
|
"description": "iTwin.js backend components",
|
|
5
5
|
"main": "lib/cjs/core-backend.js",
|
|
6
6
|
"module": "lib/esm/core-backend.js",
|
|
@@ -27,10 +27,10 @@
|
|
|
27
27
|
},
|
|
28
28
|
"peerDependencies": {
|
|
29
29
|
"@opentelemetry/api": "^1.0.4",
|
|
30
|
-
"@itwin/core-bentley": "5.3.0-dev.
|
|
31
|
-
"@itwin/core-
|
|
32
|
-
"@itwin/
|
|
33
|
-
"@itwin/
|
|
30
|
+
"@itwin/core-bentley": "5.3.0-dev.17",
|
|
31
|
+
"@itwin/core-common": "5.3.0-dev.17",
|
|
32
|
+
"@itwin/core-geometry": "5.3.0-dev.17",
|
|
33
|
+
"@itwin/ecschema-metadata": "5.3.0-dev.17"
|
|
34
34
|
},
|
|
35
35
|
"peerDependenciesMeta": {
|
|
36
36
|
"@opentelemetry/api": {
|
|
@@ -77,17 +77,17 @@
|
|
|
77
77
|
"marked": "^14.1.3",
|
|
78
78
|
"sql-formatter": "^15.4.6",
|
|
79
79
|
"webpack": "^5.97.1",
|
|
80
|
-
"@itwin/
|
|
81
|
-
"@itwin/
|
|
82
|
-
"@itwin/
|
|
83
|
-
"@itwin/ecschema-
|
|
84
|
-
"@itwin/
|
|
85
|
-
"@itwin/core-bentley": "5.3.0-dev.
|
|
86
|
-
"@itwin/
|
|
80
|
+
"@itwin/core-common": "5.3.0-dev.17",
|
|
81
|
+
"@itwin/build-tools": "5.3.0-dev.17",
|
|
82
|
+
"@itwin/ecschema-locaters": "5.3.0-dev.17",
|
|
83
|
+
"@itwin/ecschema-metadata": "5.3.0-dev.17",
|
|
84
|
+
"@itwin/core-geometry": "5.3.0-dev.17",
|
|
85
|
+
"@itwin/core-bentley": "5.3.0-dev.17",
|
|
86
|
+
"@itwin/ecsql-common": "5.3.0-dev.17",
|
|
87
87
|
"internal-tools": "3.0.0-dev.69"
|
|
88
88
|
},
|
|
89
89
|
"dependencies": {
|
|
90
|
-
"@bentley/imodeljs-native": "5.3.
|
|
90
|
+
"@bentley/imodeljs-native": "5.3.17",
|
|
91
91
|
"@itwin/object-storage-azure": "^3.0.4",
|
|
92
92
|
"@azure/storage-blob": "^12.28.0",
|
|
93
93
|
"form-data": "^4.0.4",
|