@configura/web-core 1.3.0-alpha.1 → 1.3.0-alpha.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/dist/cm/core3D/ATriMeshF.d.ts +7 -1
  2. package/dist/cm/core3D/ATriMeshF.js +9 -5
  3. package/dist/cm/core3D/GMaterial3D.d.ts +4 -0
  4. package/dist/cm/core3D/GMaterial3D.js +4 -4
  5. package/dist/cm/core3D/GMaterialPBR.js +25 -13
  6. package/dist/cm/core3D/{UVMapEnv.d.ts → uvmapper/UVMapEnv.d.ts} +3 -1
  7. package/dist/cm/core3D/{UVMapEnv.js → uvmapper/UVMapEnv.js} +13 -1
  8. package/dist/cm/core3D/uvmapper/UVMapper.d.ts +42 -0
  9. package/dist/cm/core3D/uvmapper/UVMapper.js +94 -0
  10. package/dist/cm/core3D/uvmapper/UVMapperBox.d.ts +5 -0
  11. package/dist/cm/core3D/uvmapper/UVMapperBox.js +181 -0
  12. package/dist/cm/core3D/uvmapper/UVMapperCylinder.d.ts +10 -0
  13. package/dist/cm/core3D/uvmapper/UVMapperCylinder.js +96 -0
  14. package/dist/cm/core3D/uvmapper/UVMapperPlane.d.ts +4 -0
  15. package/dist/cm/core3D/uvmapper/UVMapperPlane.js +84 -0
  16. package/dist/cm/core3D/uvmapper/UVTransformer.d.ts +6 -0
  17. package/dist/cm/core3D/{UVTransformer.js → uvmapper/UVTransformer.js} +0 -0
  18. package/dist/cm/core3D/uvmapper/instantiateUVMapper.d.ts +4 -0
  19. package/dist/cm/core3D/uvmapper/instantiateUVMapper.js +4 -0
  20. package/dist/cm/format/cmsym/SymNode.d.ts +8 -0
  21. package/dist/cm/format/cmsym/SymNode.js +75 -0
  22. package/dist/cm/format/cmsym/components/SymBox.d.ts +1 -0
  23. package/dist/cm/format/cmsym/components/SymBox.js +8 -3
  24. package/dist/cm/format/cmsym/components/SymGMaterialSelector.d.ts +5 -0
  25. package/dist/cm/format/cmsym/components/SymGMaterialSelector.js +5 -3
  26. package/dist/cm/format/cmsym/components/SymMeasure.d.ts +3 -4
  27. package/dist/cm/format/cmsym/components/SymMeasure.js +20 -29
  28. package/dist/cm/format/cmsym/components/SymMultiSelector.js +7 -8
  29. package/dist/cm/format/cmsym/components/SymParams.d.ts +12 -0
  30. package/dist/cm/format/cmsym/components/SymParams.js +51 -0
  31. package/dist/cm/format/cmsym/components/SymPlane.d.ts +1 -1
  32. package/dist/cm/format/cmsym/components/SymPlane.js +4 -1
  33. package/dist/cm/format/cmsym/components/SymProgs.d.ts +28 -0
  34. package/dist/cm/format/cmsym/components/SymProgs.js +113 -0
  35. package/dist/cm/format/cmsym/components/SymProps.d.ts +1 -1
  36. package/dist/cm/format/cmsym/components/SymRep.d.ts +4 -4
  37. package/dist/cm/format/cmsym/components/SymRep.js +5 -5
  38. package/dist/cm/format/cmsym/components/SymReps.js +3 -3
  39. package/dist/cm/format/cmsym/components/SymShape.js +4 -1
  40. package/dist/cm/format/cmsym/components/SymSphere.d.ts +2 -0
  41. package/dist/cm/format/cmsym/components/SymSphere.js +6 -3
  42. package/dist/cm/format/cmsym/components/SymText2D.d.ts +1 -0
  43. package/dist/cm/format/cmsym/components/SymText2D.js +1 -1
  44. package/dist/cm/format/cmsym/components/SymText3D.d.ts +1 -0
  45. package/dist/cm/format/cmsym/components/SymText3D.js +1 -1
  46. package/dist/cm/format/cmsym/components/SymUVMapper.d.ts +4 -4
  47. package/dist/cm/format/cmsym/components/SymUVMapper.js +3 -3
  48. package/dist/cm/format/dex/DexObj.d.ts +1 -1
  49. package/dist/cm/format/dex/DexObj.js +1 -1
  50. package/dist/cm/format/dex/DexReader.d.ts +5 -1
  51. package/dist/cm/format/dex/DexReader.js +40 -0
  52. package/dist/cm/geometry/Angle.js +2 -2
  53. package/dist/cm/geometry/DetailMask.d.ts +5 -0
  54. package/dist/cm/geometry/DetailMask.js +7 -5
  55. package/dist/cm/geometry/Matrix22.d.ts +1 -0
  56. package/dist/cm/geometry/Matrix22.js +3 -0
  57. package/dist/cm/geometry/Plane.d.ts +2 -2
  58. package/dist/cm/geometry/Point.d.ts +3 -0
  59. package/dist/cm/geometry/Point.js +9 -0
  60. package/dist/cm/geometry/Point2D.d.ts +1 -0
  61. package/dist/cm/geometry/Point2D.js +3 -0
  62. package/dist/cm/geometry/Transform2D.d.ts +2 -2
  63. package/dist/cm/io/Semver.d.ts +1 -0
  64. package/dist/cm/io/Semver.js +4 -1
  65. package/package.json +4 -4
  66. package/dist/cm/core3D/DummyUVMapper.d.ts +0 -7
  67. package/dist/cm/core3D/DummyUVMapper.js +0 -6
  68. package/dist/cm/core3D/UVTransformer.d.ts +0 -6
  69. package/dist/cm/core3D/instantiateUVMapper.d.ts +0 -4
  70. package/dist/cm/core3D/instantiateUVMapper.js +0 -5
@@ -9,7 +9,7 @@ export declare class SymPlane extends SymComponent {
9
9
  constructor(_plane?: Plane | undefined, src?: string);
10
10
  get plane(): Plane | undefined;
11
11
  get vector(): import("../../../geometry/Point.js").Point | undefined;
12
- get distance(): Number | undefined;
12
+ get distance(): number | undefined;
13
13
  load(logger: Logger, obj: DexObj, _env: SymImportEnv, force?: boolean): void;
14
14
  }
15
15
  //# sourceMappingURL=SymPlane.d.ts.map
@@ -1,4 +1,5 @@
1
1
  import { Plane } from "../../../geometry/Plane.js";
2
+ import { VERBOSE_SYM_LOGGING } from "../SymNode.js";
2
3
  import { SymComponent } from "./SymComponent.js";
3
4
  export class SymPlane extends SymComponent {
4
5
  constructor(_plane, src) {
@@ -22,6 +23,8 @@ export class SymPlane extends SymComponent {
22
23
  if (plane !== undefined) {
23
24
  this._plane = plane;
24
25
  }
25
- //logger.info(`SymPlane`, `vector ${this.vector}`, `distance ${this.distance}`);
26
+ if (VERBOSE_SYM_LOGGING) {
27
+ logger.info(`SymPlane`, `vector ${this.vector}`, `distance ${this.distance}`);
28
+ }
26
29
  }
27
30
  }
@@ -1,5 +1,33 @@
1
+ import { Logger } from "@configura/web-utilities";
2
+ import { DexObj } from "../../dex/DexObj.js";
3
+ import { DexVersion } from "../../dex/DexVersion.js";
4
+ import { SymImportEnv } from "../SymImportEnv.js";
1
5
  import { SymComponent, SymComponentKey } from "./SymComponent.js";
2
6
  export declare class SymProgs extends SymComponent {
3
7
  id: SymComponentKey;
8
+ private _progs;
9
+ load(logger: Logger, obj: DexObj, _env: SymImportEnv, force?: boolean): void;
10
+ get progs(): SymProg[];
11
+ }
12
+ export declare class SymProg {
13
+ readonly code: RCode;
14
+ readonly formalArgs: RParam[];
15
+ readonly isStretch: Boolean;
16
+ constructor(code: RCode, formalArgs: RParam[], isStretch: Boolean);
17
+ static load(obj: DexObj, logger: Logger): SymProg | undefined;
18
+ }
19
+ export declare class RCode {
20
+ readonly variables: RParam[];
21
+ readonly version: DexVersion;
22
+ readonly byteCode: Uint8Array;
23
+ readonly ops: Map<string, number>;
24
+ constructor(variables: RParam[], version: DexVersion, byteCode: Uint8Array, ops: Map<string, number>);
25
+ static load(obj: DexObj, logger: Logger): RCode | undefined;
26
+ }
27
+ export declare class RParam {
28
+ readonly name: string;
29
+ readonly type: string;
30
+ constructor(name: string, type: string);
31
+ static load(obj: DexObj, logger: Logger): RParam | undefined;
4
32
  }
5
33
  //# sourceMappingURL=SymProgs.d.ts.map
@@ -1,7 +1,120 @@
1
+ import { DexObj } from "../../dex/DexObj.js";
2
+ import { isStringToNumberMap } from "../../dex/DexReader.js";
3
+ import { DexVersion } from "../../dex/DexVersion.js";
4
+ import { VERBOSE_SYM_LOGGING } from "../SymNode.js";
1
5
  import { SymComponent } from "./SymComponent.js";
2
6
  export class SymProgs extends SymComponent {
3
7
  constructor() {
4
8
  super(...arguments);
5
9
  this.id = "symProgs";
10
+ this._progs = [];
11
+ }
12
+ load(logger, obj, _env, force = false) {
13
+ const dexProgs = obj.get("progs");
14
+ if (dexProgs instanceof Array) {
15
+ for (const dexProg of dexProgs) {
16
+ const rProg = dexProg.get("rProg");
17
+ if (!(rProg instanceof DexObj)) {
18
+ logger.warn("SymProgs loading error", "rProg invalid");
19
+ continue;
20
+ }
21
+ const prog = SymProg.load(rProg, logger);
22
+ if (prog === undefined) {
23
+ continue;
24
+ }
25
+ this._progs.push(prog);
26
+ }
27
+ }
28
+ if (VERBOSE_SYM_LOGGING) {
29
+ logger.info("SymProgs", "progs:", this._progs);
30
+ }
31
+ }
32
+ get progs() {
33
+ return this._progs;
34
+ }
35
+ }
36
+ export class SymProg {
37
+ constructor(code, formalArgs, isStretch) {
38
+ this.code = code;
39
+ this.formalArgs = formalArgs;
40
+ this.isStretch = isStretch;
41
+ }
42
+ static load(obj, logger) {
43
+ const dexCode = obj.get("code");
44
+ const formalArgList = obj.get("formalArgList");
45
+ obj.loadAll();
46
+ if (!(dexCode instanceof DexObj && formalArgList instanceof DexObj)) {
47
+ logger.warn("SymProg loading error", "invalid properties");
48
+ return undefined;
49
+ }
50
+ const args = formalArgList.get("args");
51
+ if (!(args instanceof Array)) {
52
+ logger.warn("SymProg loading error", "invalid properties");
53
+ return undefined;
54
+ }
55
+ const formalArgs = [];
56
+ for (const arg of args) {
57
+ const rParam = RParam.load(arg, logger);
58
+ if (rParam === undefined) {
59
+ return undefined;
60
+ }
61
+ formalArgs.push(rParam);
62
+ }
63
+ const code = RCode.load(dexCode, logger);
64
+ if (code === undefined) {
65
+ return undefined;
66
+ }
67
+ const stretchFuncName = "1\u0000\u00001\u0001\u00001\u0002\u0000*!\u0080stretch(RSymNode,rdouble,rdouble)\u0003";
68
+ const byteCodeAsString = Array.from(code.byteCode)
69
+ .map((x) => String.fromCharCode(x))
70
+ .join("");
71
+ const isStretch = byteCodeAsString === stretchFuncName;
72
+ return new this(code, formalArgs, isStretch);
73
+ }
74
+ }
75
+ export class RCode {
76
+ constructor(variables, version, byteCode, ops) {
77
+ this.variables = variables;
78
+ this.version = version;
79
+ this.byteCode = byteCode;
80
+ this.ops = ops;
81
+ }
82
+ static load(obj, logger) {
83
+ const variables = obj.get("vars");
84
+ const dexVersion = obj.get("version");
85
+ const byteCode = obj.get("byteCode");
86
+ const ops = obj.get("ops");
87
+ if (!(variables instanceof Array &&
88
+ dexVersion instanceof DexVersion &&
89
+ byteCode instanceof Uint8Array &&
90
+ ops instanceof Map &&
91
+ isStringToNumberMap(ops))) {
92
+ logger.warn("RCode loading error", "invalid properties");
93
+ return undefined;
94
+ }
95
+ let rParams = [];
96
+ for (const variable of variables) {
97
+ const param = RParam.load(variable, logger);
98
+ if (param === undefined) {
99
+ return undefined;
100
+ }
101
+ rParams.push(param);
102
+ }
103
+ return new this(rParams, dexVersion, byteCode, ops);
104
+ }
105
+ }
106
+ export class RParam {
107
+ constructor(name, type) {
108
+ this.name = name;
109
+ this.type = type;
110
+ }
111
+ static load(obj, logger) {
112
+ const name = obj.get("name");
113
+ const type = obj.get("type");
114
+ if (typeof name !== "string" || typeof type !== "string") {
115
+ logger.warn("RParam loading error", "invalid properties");
116
+ return undefined;
117
+ }
118
+ return new this(name, type);
6
119
  }
7
120
  }
@@ -29,7 +29,7 @@ export declare class SymProps extends SymComponent {
29
29
  id: SymComponentKey;
30
30
  constructor(props?: Map<string, unknown> | undefined, src?: string);
31
31
  load(logger: Logger, obj: DexObj, env: SymImportEnv, force?: boolean): void;
32
- loadValue(logger: Logger, key: string, obj: DexSerializable, env: SymImportEnv): string | number | boolean | void | Uint8Array | import("../../../basic/Color.js").Color | import("../../../basic/ColorF.js").ColorF | import("../../dex/DexInt.js").DexInt | import("../../dex/DexInt.js").DexInt64 | import("../../../geometry/Point2D.js").Point2D | import("../../../geometry/Point.js").Point | Map<string, string> | import("../../../geometry/Angle.js").Angle | import("../../../geometry/AngleF.js").AngleF | import("../../../geometry/Box.js").Box | import("../../../geometry/Orientation.js").Orientation | import("../../../geometry/Plane.js").Plane | import("../../../geometry/Transform.js").Transform | import("../../dex/DexXRef.js").DexXRef | import("../../dex/DexIRef.js").DexIRef | DexObj[] | import("../../dex/DexURL.js").DexURL | import("../../dex/DexVersion.js").DexVersion;
32
+ loadValue(logger: Logger, key: string, obj: DexSerializable, env: SymImportEnv): string | number | boolean | void | Uint8Array | import("../../../basic/Color.js").Color | import("../../../basic/ColorF.js").ColorF | import("../../dex/DexInt.js").DexInt | import("../../dex/DexInt.js").DexInt64 | Map<string, string> | import("../../../geometry/Point2D.js").Point2D | import("../../../geometry/Angle.js").Angle | import("../../../geometry/AngleF.js").AngleF | import("../../../geometry/Point.js").Point | import("../../../geometry/Box.js").Box | import("../../../geometry/Orientation.js").Orientation | import("../../../geometry/Plane.js").Plane | import("../../../geometry/Transform.js").Transform | import("../../dex/DexXRef.js").DexXRef | import("../../dex/DexIRef.js").DexIRef | DexObj[] | import("../../dex/DexURL.js").DexURL | import("../../dex/DexVersion.js").DexVersion | Map<string, number> | Set<string>;
33
33
  loadDexObj(logger: Logger, key: string, obj: DexObj, env: SymImportEnv): void;
34
34
  loadSymProp(logger: Logger, key: string, obj: DexObj, env: SymImportEnv): void;
35
35
  set(key: string, value: unknown): void;
@@ -6,9 +6,9 @@ export declare class SymRep {
6
6
  private _detail;
7
7
  static load(obj: DexObj): SymRep | undefined;
8
8
  constructor(_mode: SymGfxMode, _detail: DetailLevel);
9
- mode(): SymGfxMode;
10
- detail(): DetailLevel;
11
- is3D(): boolean;
12
- is2D(): boolean;
9
+ get mode(): SymGfxMode;
10
+ get detail(): DetailLevel;
11
+ get is3D(): boolean;
12
+ get is2D(): boolean;
13
13
  }
14
14
  //# sourceMappingURL=SymRep.d.ts.map
@@ -9,20 +9,20 @@ export class SymRep {
9
9
  const detail = obj.get("detail");
10
10
  const mode = obj.get("mode");
11
11
  if (typeof detail === "string" && typeof mode === "string") {
12
- return new SymRep(symGfxModeFromString(mode), detailLevelFromString(detail));
12
+ return new this(symGfxModeFromString(mode), detailLevelFromString(detail));
13
13
  }
14
14
  return undefined;
15
15
  }
16
- mode() {
16
+ get mode() {
17
17
  return this._mode;
18
18
  }
19
- detail() {
19
+ get detail() {
20
20
  return this._detail;
21
21
  }
22
- is3D() {
22
+ get is3D() {
23
23
  return this._mode === SymGfxMode.x3D;
24
24
  }
25
- is2D() {
25
+ get is2D() {
26
26
  return this._mode === SymGfxMode.x2D;
27
27
  }
28
28
  }
@@ -21,12 +21,12 @@ export class SymReps extends SymComponent {
21
21
  else {
22
22
  mask = DetailMask.allSymReps();
23
23
  }
24
- return SymReps.withDetailMask(SymGfxMode.x3D, mask, src);
24
+ return this.withDetailMask(SymGfxMode.x3D, mask, src);
25
25
  }
26
26
  static withDetailMask(mode, mask, src) {
27
27
  const details = new Map();
28
28
  details.set(mode, mask);
29
- return new SymReps(details, src);
29
+ return new this(details, src);
30
30
  }
31
31
  load(logger, dexObj, _env, _force = false) {
32
32
  let details = dexObj.get("mask3D");
@@ -188,7 +188,7 @@ export class SymReps extends SymComponent {
188
188
  toString() {
189
189
  const str = this._details &&
190
190
  Array.from(this._details.entries())
191
- .map(e => `${e[0]}=${e[1]}`)
191
+ .map((e) => `${e[0]}=${e[1]}`)
192
192
  .join(",");
193
193
  return `SymReps(${str})`;
194
194
  }
@@ -1,3 +1,4 @@
1
+ import { VERBOSE_SYM_LOGGING } from "../SymNode.js";
1
2
  import { SymComponent } from "./SymComponent.js";
2
3
  export class SymShape extends SymComponent {
3
4
  constructor() {
@@ -5,7 +6,9 @@ export class SymShape extends SymComponent {
5
6
  this.id = "symShape";
6
7
  }
7
8
  load(logger, obj, _env, force = false) {
8
- // console.warn("[SymShape.load] not yet implemented");
9
+ if (VERBOSE_SYM_LOGGING) {
10
+ console.warn("[SymShape.load] not yet implemented");
11
+ }
9
12
  }
10
13
  invalidation(removed) {
11
14
  console.warn("[SymShape.invalidation] not yet implemented");
@@ -3,6 +3,7 @@ import { Point } from "../../../geometry/Point.js";
3
3
  import { DexObj } from "../../dex/DexObj.js";
4
4
  import { SymImportEnv } from "../SymImportEnv.js";
5
5
  import { SymComponent, SymComponentKey } from "./SymComponent.js";
6
+ /** @see http://web.git.configura.com/webteam/docs/cmsym/#SymSphere */
6
7
  export declare class SymSphere extends SymComponent {
7
8
  private _center?;
8
9
  private _radius?;
@@ -11,6 +12,7 @@ export declare class SymSphere extends SymComponent {
11
12
  constructor(_center?: Point | undefined, _radius?: number | undefined, _segments?: number | undefined, src?: string);
12
13
  get radius(): number | undefined;
13
14
  get center(): Point | undefined;
15
+ /** How many segments should be used to create the corresponding mesh. */
14
16
  get segments(): number | undefined;
15
17
  load(logger: Logger, obj: DexObj, _env: SymImportEnv, force?: boolean): void;
16
18
  }
@@ -1,7 +1,8 @@
1
1
  import { fcastNumber } from "../../../basic/number.js";
2
2
  import { Point } from "../../../geometry/Point.js";
3
+ import { VERBOSE_SYM_LOGGING } from "../SymNode.js";
3
4
  import { SymComponent } from "./SymComponent.js";
4
- /// http://web.git.configura.com/webteam/docs/cmsym/#SymSphere
5
+ /** @see http://web.git.configura.com/webteam/docs/cmsym/#SymSphere */
5
6
  export class SymSphere extends SymComponent {
6
7
  constructor(_center, _radius, _segments, src) {
7
8
  super(src);
@@ -16,7 +17,7 @@ export class SymSphere extends SymComponent {
16
17
  get center() {
17
18
  return this._center;
18
19
  }
19
- /// How many segments should be used to create the corresponding mesh.
20
+ /** How many segments should be used to create the corresponding mesh. */
20
21
  get segments() {
21
22
  return this._segments;
22
23
  }
@@ -25,6 +26,8 @@ export class SymSphere extends SymComponent {
25
26
  this._radius = fcastNumber(obj.get("r"));
26
27
  this._segments = fcastNumber(obj.get("refinementTo"));
27
28
  // "refinementFrom" is not used here, could be used for lower quality
28
- // logger.info(`SymSphere (r ${this._radius}, seg ${this._segments}, center ${this._center})`);
29
+ if (VERBOSE_SYM_LOGGING) {
30
+ logger.info(`SymSphere (r ${this._radius}, seg ${this._segments}, center ${this._center})`);
31
+ }
29
32
  }
30
33
  }
@@ -1,4 +1,5 @@
1
1
  import { SymComponent, SymComponentKey } from "./SymComponent.js";
2
+ /** Intentionally ignored. */
2
3
  export declare class SymText2D extends SymComponent {
3
4
  id: SymComponentKey;
4
5
  }
@@ -1,5 +1,5 @@
1
1
  import { SymComponent } from "./SymComponent.js";
2
- /// Intentionally ignored
2
+ /** Intentionally ignored. */
3
3
  export class SymText2D extends SymComponent {
4
4
  constructor() {
5
5
  super(...arguments);
@@ -1,4 +1,5 @@
1
1
  import { SymComponent, SymComponentKey } from "./SymComponent.js";
2
+ /** Intentionally ignored. */
2
3
  export declare class SymText3D extends SymComponent {
3
4
  id: SymComponentKey;
4
5
  }
@@ -1,5 +1,5 @@
1
1
  import { SymComponent } from "./SymComponent.js";
2
- /// Intentionally ignored
2
+ /** Intentionally ignored. */
3
3
  export class SymText3D extends SymComponent {
4
4
  constructor() {
5
5
  super(...arguments);
@@ -1,14 +1,14 @@
1
1
  import { Logger } from "@configura/web-utilities";
2
- import { DummyUVMapper } from "../../../core3D/DummyUVMapper.js";
3
- import { UVMapEnv } from "../../../core3D/UVMapEnv.js";
2
+ import { UVMapper } from "../../../core3D/uvmapper/UVMapper.js";
3
+ import { UVMapEnv } from "../../../core3D/uvmapper/UVMapEnv.js";
4
4
  import { DexObj } from "../../dex/DexObj.js";
5
5
  import { SymImportEnv } from "../SymImportEnv.js";
6
6
  import { SymComponent, SymComponentKey } from "./SymComponent.js";
7
7
  export declare class SymUVMapper extends SymComponent {
8
8
  id: SymComponentKey;
9
- mapper?: DummyUVMapper;
9
+ mapper?: UVMapper;
10
10
  load(logger: Logger, dexObj: DexObj, _env: SymImportEnv, force?: boolean): void;
11
11
  }
12
- export declare function dexToUVMapper(logger: Logger, obj: DexObj): DummyUVMapper;
12
+ export declare function dexToUVMapper(logger: Logger, obj: DexObj): UVMapper;
13
13
  export declare function dexToUVMapEnv(obj: DexObj): UVMapEnv;
14
14
  //# sourceMappingURL=SymUVMapper.d.ts.map
@@ -1,8 +1,8 @@
1
1
  import { castBoolean } from "../../../basic/boolean.js";
2
2
  import { fcastString } from "../../../basic/string.js";
3
- import { instantiateUVMapper } from "../../../core3D/instantiateUVMapper.js";
4
- import { fcastUVMapperType, UVMapEnv } from "../../../core3D/UVMapEnv.js";
5
- import { UVTransformer } from "../../../core3D/UVTransformer.js";
3
+ import { instantiateUVMapper } from "../../../core3D/uvmapper/instantiateUVMapper.js";
4
+ import { fcastUVMapperType, UVMapEnv } from "../../../core3D/uvmapper/UVMapEnv.js";
5
+ import { UVTransformer } from "../../../core3D/uvmapper/UVTransformer.js";
6
6
  import { Matrix22 } from "../../../geometry/Matrix22.js";
7
7
  import { Point } from "../../../geometry/Point.js";
8
8
  import { Point2D } from "../../../geometry/Point2D.js";
@@ -11,6 +11,6 @@ export declare class DexObj {
11
11
  put(key: string, value: DexSerializable): void;
12
12
  has(key: string): boolean;
13
13
  get(key: string): DexSerializable;
14
- loadAll(visited?: DexObj[]): (string & Error) | (number & Error) | (false & Error) | (true & Error) | (Uint8Array & Error) | (import("../../basic/Color.js").Color & Error) | (import("../../basic/ColorF.js").ColorF & Error) | (import("./DexInt.js").DexInt & Error) | (import("./DexInt.js").DexInt64 & Error) | (import("../../geometry/Point2D.js").Point2D & Error) | (import("../../geometry/Point.js").Point & Error) | (Map<string, string> & Error) | (import("../../geometry/AngleF.js").AngleF & Error) | (import("../../geometry/Box.js").Box & Error) | (import("../../geometry/Orientation.js").Orientation & Error) | (import("../../geometry/Plane.js").Plane & Error) | (import("../../geometry/Transform.js").Transform & Error) | (import("./DexXRef.js").DexXRef & Error) | (import("./DexIRef.js").DexIRef & Error) | (DexObj & Error) | (DexObj[] & Error) | (import("./DexURL.js").DexURL & Error) | (import("./DexVersion.js").DexVersion & Error) | undefined;
14
+ loadAll(visited?: DexObj[]): (string & Error) | (number & Error) | (false & Error) | (true & Error) | (Uint8Array & Error) | (import("../../basic/Color.js").Color & Error) | (import("../../basic/ColorF.js").ColorF & Error) | (import("./DexInt.js").DexInt & Error) | (import("./DexInt.js").DexInt64 & Error) | (Map<string, string> & Error) | (import("../../geometry/Point2D.js").Point2D & Error) | (import("../../geometry/AngleF.js").AngleF & Error) | (import("../../geometry/Point.js").Point & Error) | (import("../../geometry/Box.js").Box & Error) | (import("../../geometry/Orientation.js").Orientation & Error) | (import("../../geometry/Plane.js").Plane & Error) | (import("../../geometry/Transform.js").Transform & Error) | (import("./DexXRef.js").DexXRef & Error) | (import("./DexIRef.js").DexIRef & Error) | (DexObj & Error) | (DexObj[] & Error) | (import("./DexURL.js").DexURL & Error) | (import("./DexVersion.js").DexVersion & Error) | (Map<string, number> & Error) | (Set<string> & Error) | undefined;
15
15
  }
16
16
  //# sourceMappingURL=DexObj.d.ts.map
@@ -18,7 +18,7 @@ export class DexObj {
18
18
  throw Error(`obj: ${obj} not DexObj`);
19
19
  }
20
20
  static withReader(reader) {
21
- return new DexObj(undefined, undefined, undefined, reader);
21
+ return new this(undefined, undefined, undefined, reader);
22
22
  }
23
23
  // dexType() {
24
24
  // return DexTypeId.DexObj;
@@ -17,7 +17,9 @@ import { DexURL } from "./DexURL.js";
17
17
  import { DexVersion } from "./DexVersion.js";
18
18
  import { DexXRef } from "./DexXRef.js";
19
19
  export declare type DexEntity = Angle | AngleF | Box | Color | ColorF | DexIRef | DexInt | DexInt64 | DexObj | DexObj[] | DexURL | DexVersion | DexXRef | Orientation | Plane | Point | Point2D | Transform;
20
- export declare type DexSerializable = DexEntity | Map<string, string> | Uint8Array | boolean | number | string | undefined;
20
+ export declare type DexSerializable = DexEntity | Map<string, string> | Map<string, number> | Set<string> | Uint8Array | boolean | number | string | undefined;
21
+ export declare function isStringToNumberMap(mp: Map<unknown, unknown>): mp is Map<string, number>;
22
+ export declare function isStringToStringMap(mp: Map<unknown, unknown>): mp is Map<string, string>;
21
23
  export declare class DexReader {
22
24
  private _bytes;
23
25
  manager: DexManager;
@@ -72,7 +74,9 @@ export declare class DexReader {
72
74
  takeShortcut(shortcut: string): void;
73
75
  readTables(): void;
74
76
  readStrs(): void;
77
+ readSetStr(): Set<string>;
75
78
  readStr(): string | undefined;
79
+ readMapStrInt(): Map<string, number>;
76
80
  readInternalizedXRefs(): void;
77
81
  readInternalizedXRef(i: number, xrefCount: number): void;
78
82
  readInternalizedXRefFile(pos: number, length: number): Uint8Array;
@@ -20,6 +20,18 @@ import { DexReplacedXRefs } from "./DexReplacedXRefs.js";
20
20
  import { DexURL } from "./DexURL.js";
21
21
  import { DexVersion } from "./DexVersion.js";
22
22
  import { DexXRef, DexXRefStyle } from "./DexXRef.js";
23
+ export function isStringToNumberMap(mp) {
24
+ for (const [k, v] of mp) {
25
+ return typeof k === "string" && typeof v === "number";
26
+ }
27
+ return false;
28
+ }
29
+ export function isStringToStringMap(mp) {
30
+ for (const [k, v] of mp) {
31
+ return typeof k === "string" && typeof v === "string";
32
+ }
33
+ return false;
34
+ }
23
35
  export class DexReader {
24
36
  constructor(_bytes, manager, url) {
25
37
  this._bytes = _bytes;
@@ -331,10 +343,34 @@ export class DexReader {
331
343
  this.stream.match_dex_magic(DexMagic.EndStrs);
332
344
  }
333
345
  }
346
+ readSetStr() {
347
+ const count = this.stream.read_i32();
348
+ let strings = new Set();
349
+ for (let i = 0; i < count; i++) {
350
+ const s = this.readStr();
351
+ if (s !== undefined) {
352
+ strings.add(s);
353
+ }
354
+ }
355
+ return strings;
356
+ }
334
357
  readStr() {
335
358
  const id = this.stream.unpack30();
336
359
  return id > 0 ? this.strs.get(id) : undefined;
337
360
  }
361
+ readMapStrInt() {
362
+ let retMap = new Map();
363
+ const count = this.stream.read_i32();
364
+ for (let i = 0; i < count; i++) {
365
+ const key = this.readStr();
366
+ if (key === undefined) {
367
+ throw Error("[readStr] is undefined");
368
+ }
369
+ const value = this.stream.read_i32();
370
+ retMap.set(key, value);
371
+ }
372
+ return retMap;
373
+ }
338
374
  readInternalizedXRefs() {
339
375
  this.internalizedXRefs = new Map();
340
376
  const xrefCount = this.positions.get("ixref.n");
@@ -447,6 +483,8 @@ export class DexReader {
447
483
  return this.readDexVersion();
448
484
  case "byte[]":
449
485
  return this.readByteArray();
486
+ case "str{}":
487
+ return this.readSetStr();
450
488
  case "dex":
451
489
  return this.readDexObj();
452
490
  case "null":
@@ -457,6 +495,8 @@ export class DexReader {
457
495
  return this.readRef();
458
496
  // case "str->str":
459
497
  // return this.read_map_str_str();
498
+ case "str->int":
499
+ return this.readMapStrInt();
460
500
  case "xref":
461
501
  return this.readDexXRef();
462
502
  default:
@@ -3,11 +3,11 @@ export class Angle {
3
3
  this.radians = radians;
4
4
  }
5
5
  static fromPoint2D(p) {
6
- return new Angle((Math.atan2(p.y, p.x) + 2 * Math.PI) % (2 * Math.PI));
6
+ return new this((Math.atan2(p.y, p.x) + 2 * Math.PI) % (2 * Math.PI));
7
7
  }
8
8
  static fromDegrees(d) {
9
9
  const rad = (d * Math.PI) / 180 + ((8 * 2 * Math.PI) % (2 * Math.PI));
10
- return new Angle(rad);
10
+ return new this(rad);
11
11
  }
12
12
  toString() {
13
13
  return `Angle(${this.radians})`;
@@ -1,3 +1,4 @@
1
+ /** The CmSym specification states that only low, medium, high, super and base are allowed. */
1
2
  declare enum DetailLevel {
2
3
  lousy = 0,
3
4
  low = 1,
@@ -26,6 +27,10 @@ declare class DetailMask {
26
27
  xsuper(): boolean;
27
28
  base(): boolean;
28
29
  detailSet(): Set<DetailLevel>;
30
+ /**
31
+ * Goes through the supplied DetailLevels and returns the first one that is included in this
32
+ * DetailMask. Returns undefined if no match was found.
33
+ */
29
34
  getBestMatch(levels: DetailLevel | DetailLevel[]): DetailLevel | undefined;
30
35
  toString(): string;
31
36
  }
@@ -1,4 +1,4 @@
1
- /// The CmSym specification states that only low, medium, high, super and base are allowed.
1
+ /** The CmSym specification states that only low, medium, high, super and base are allowed. */
2
2
  var DetailLevel;
3
3
  (function (DetailLevel) {
4
4
  DetailLevel[DetailLevel["lousy"] = 0] = "lousy";
@@ -40,12 +40,12 @@ class DetailMask {
40
40
  this.mask = mask;
41
41
  }
42
42
  static withDetailSet(details) {
43
- const mask = new DetailMask();
43
+ const mask = new this();
44
44
  mask.includeSet(details);
45
45
  return mask;
46
46
  }
47
47
  static allSymReps() {
48
- return new DetailMask(527);
48
+ return new this(527);
49
49
  }
50
50
  include(mask) {
51
51
  this.mask = this.mask | mask.mask;
@@ -99,8 +99,10 @@ class DetailMask {
99
99
  }
100
100
  return levels;
101
101
  }
102
- /// Goes through the supplied DetailLevels and returns the first one that is included in this
103
- /// DetailMask. Returns undefined if no match was found.
102
+ /**
103
+ * Goes through the supplied DetailLevels and returns the first one that is included in this
104
+ * DetailMask. Returns undefined if no match was found.
105
+ */
104
106
  getBestMatch(levels) {
105
107
  return (levels instanceof Array ? levels : [levels]).find((level) => this.includes(level));
106
108
  }
@@ -3,5 +3,6 @@ export declare class Matrix22 {
3
3
  c0: Point2D;
4
4
  c1: Point2D;
5
5
  constructor(c0: Point2D, c1: Point2D);
6
+ toString(): string;
6
7
  }
7
8
  //# sourceMappingURL=Matrix22.d.ts.map
@@ -3,4 +3,7 @@ export class Matrix22 {
3
3
  this.c0 = c0;
4
4
  this.c1 = c1;
5
5
  }
6
+ toString() {
7
+ return `(${this.c0}, ${this.c1})`;
8
+ }
6
9
  }
@@ -1,9 +1,9 @@
1
1
  import { Point } from "./Point";
2
2
  export declare class Plane {
3
3
  vector: Point;
4
- distance: Number;
4
+ distance: number;
5
5
  static cast(p: unknown): Plane | undefined;
6
- constructor(vector: Point, distance: Number);
6
+ constructor(vector: Point, distance: number);
7
7
  toString(): string;
8
8
  }
9
9
  //# sourceMappingURL=Plane.d.ts.map
@@ -8,8 +8,11 @@ export declare class Point {
8
8
  constructor(x: number, y: number, z: number);
9
9
  equals(other: Point): boolean;
10
10
  getByNumber(n: number): number;
11
+ multiplyByNumber(n: number): Point;
11
12
  divideByNumber(n: number): Point;
12
13
  add(p: Point): Point;
14
+ subtract(p: Point): Point;
15
+ crossProduct(p: Point): Point;
13
16
  length(): number;
14
17
  clone(): Point;
15
18
  toPoint2D(): Point2D;
@@ -31,12 +31,21 @@ export class Point {
31
31
  throw Error(`Not a valid number to access by: ${n}`);
32
32
  }
33
33
  }
34
+ multiplyByNumber(n) {
35
+ return new Point(this.x * n, this.y * n, this.z * n);
36
+ }
34
37
  divideByNumber(n) {
35
38
  return new Point(this.x / n, this.y / n, this.z / n);
36
39
  }
37
40
  add(p) {
38
41
  return new Point(this.x + p.x, this.y + p.y, this.z + p.z);
39
42
  }
43
+ subtract(p) {
44
+ return new Point(this.x - p.x, this.y - p.y, this.z - p.z);
45
+ }
46
+ crossProduct(p) {
47
+ return new Point(this.y * p.z - this.z * p.y, this.z * p.x - this.x * p.z, this.x * p.y - this.y * p.x);
48
+ }
40
49
  length() {
41
50
  const { x, y, z } = this;
42
51
  return Math.sqrt(x * x + y * y + z * z);
@@ -5,5 +5,6 @@ export declare class Point2D {
5
5
  static fcast(p: unknown): Point2D;
6
6
  constructor(x: number, y: number);
7
7
  isPoint2D(): boolean;
8
+ toString(): string;
8
9
  }
9
10
  //# sourceMappingURL=Point2D.d.ts.map