@inweb/viewer-visualize 25.3.13

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 (164) hide show
  1. package/LICENSE +20 -0
  2. package/README.md +63 -0
  3. package/dist/viewer-visualize.js +16982 -0
  4. package/dist/viewer-visualize.js.map +1 -0
  5. package/dist/viewer-visualize.min.js +1 -0
  6. package/dist/viewer-visualize.module.js +5267 -0
  7. package/dist/viewer-visualize.module.js.map +1 -0
  8. package/lib/Viewer/Commands/ApplyModelTransform.d.ts +1 -0
  9. package/lib/Viewer/Commands/ClearMarkup.d.ts +1 -0
  10. package/lib/Viewer/Commands/ClearSlices.d.ts +1 -0
  11. package/lib/Viewer/Commands/CreatePreview.d.ts +1 -0
  12. package/lib/Viewer/Commands/Explode.d.ts +1 -0
  13. package/lib/Viewer/Commands/GetDefaultViewPositions.d.ts +1 -0
  14. package/lib/Viewer/Commands/GetModels.d.ts +1 -0
  15. package/lib/Viewer/Commands/GetSelected.d.ts +1 -0
  16. package/lib/Viewer/Commands/HideSelected.d.ts +1 -0
  17. package/lib/Viewer/Commands/IsolateSelected.d.ts +1 -0
  18. package/lib/Viewer/Commands/RegenerateAll.d.ts +1 -0
  19. package/lib/Viewer/Commands/ResetView.d.ts +1 -0
  20. package/lib/Viewer/Commands/SelectModel.d.ts +1 -0
  21. package/lib/Viewer/Commands/SetActiveDragger.d.ts +1 -0
  22. package/lib/Viewer/Commands/SetDefaultViewPosition.d.ts +1 -0
  23. package/lib/Viewer/Commands/SetMarkupColor.d.ts +1 -0
  24. package/lib/Viewer/Commands/SetSelected.d.ts +1 -0
  25. package/lib/Viewer/Commands/ShowAll.d.ts +1 -0
  26. package/lib/Viewer/Commands/Unselect.d.ts +1 -0
  27. package/lib/Viewer/Commands/ZoomToExtents.d.ts +1 -0
  28. package/lib/Viewer/Commands/ZoomToObjects.d.ts +1 -0
  29. package/lib/Viewer/Commands/ZoomToSelected.d.ts +1 -0
  30. package/lib/Viewer/Commands/index.d.ts +22 -0
  31. package/lib/Viewer/Draggers/Actions/OrbitAction.d.ts +21 -0
  32. package/lib/Viewer/Draggers/Actions/PanAction.d.ts +17 -0
  33. package/lib/Viewer/Draggers/Actions/ZoomAction.d.ts +7 -0
  34. package/lib/Viewer/Draggers/Common/Geometry.d.ts +114 -0
  35. package/lib/Viewer/Draggers/Common/GestureManager.d.ts +40 -0
  36. package/lib/Viewer/Draggers/Common/OdBaseDragger.d.ts +53 -0
  37. package/lib/Viewer/Draggers/Common/OdaGeAction.d.ts +29 -0
  38. package/lib/Viewer/Draggers/MeasureLineDragger/MeasureLineItem.d.ts +30 -0
  39. package/lib/Viewer/Draggers/MeasureLineDragger/MeasureUtils.d.ts +19 -0
  40. package/lib/Viewer/Draggers/MeasureLineDragger/index.d.ts +23 -0
  41. package/lib/Viewer/Draggers/OdBaseCuttingPlaneDragger.d.ts +26 -0
  42. package/lib/Viewer/Draggers/OdCuttingPlaneXAxisDragger.d.ts +7 -0
  43. package/lib/Viewer/Draggers/OdCuttingPlaneYAxisDragger.d.ts +7 -0
  44. package/lib/Viewer/Draggers/OdCuttingPlaneZAxisDragger.d.ts +7 -0
  45. package/lib/Viewer/Draggers/OdOrbitDragger.d.ts +14 -0
  46. package/lib/Viewer/Draggers/OdPanDragger.d.ts +11 -0
  47. package/lib/Viewer/Draggers/OdZoomDragger.d.ts +11 -0
  48. package/lib/Viewer/Draggers/OdZoomWheelDragger.d.ts +10 -0
  49. package/lib/Viewer/Draggers/OdZoomWindowDragger/OdSelectionFrame.d.ts +18 -0
  50. package/lib/Viewer/Draggers/OdZoomWindowDragger/index.d.ts +13 -0
  51. package/lib/Viewer/Draggers/OdaLineDragger.d.ts +14 -0
  52. package/lib/Viewer/Draggers/OdaTextDragger.d.ts +15 -0
  53. package/lib/Viewer/Draggers/OdaWalkDragger.d.ts +29 -0
  54. package/lib/Viewer/Draggers/OrbitAroundBuildingDragger.d.ts +18 -0
  55. package/lib/Viewer/Loaders/BaseLoader.d.ts +10 -0
  56. package/lib/Viewer/Loaders/LoaderFactory.d.ts +10 -0
  57. package/lib/Viewer/Loaders/TCSLoader.d.ts +4 -0
  58. package/lib/Viewer/Loaders/UpdaterController.d.ts +14 -0
  59. package/lib/Viewer/Loaders/VsfXLoader.d.ts +4 -0
  60. package/lib/Viewer/Loaders/VsfXPartialLoader.d.ts +4 -0
  61. package/lib/Viewer/Loaders/VsfXStreamingLoader.d.ts +4 -0
  62. package/lib/Viewer/Markup/Api/IMarkupArrow.d.ts +21 -0
  63. package/lib/Viewer/Markup/Api/IMarkupCloud.d.ts +14 -0
  64. package/lib/Viewer/Markup/Api/IMarkupColorable.d.ts +4 -0
  65. package/lib/Viewer/Markup/Api/IMarkupEllipse.d.ts +14 -0
  66. package/lib/Viewer/Markup/Api/IMarkupImage.d.ts +14 -0
  67. package/lib/Viewer/Markup/Api/IMarkupLine.d.ts +12 -0
  68. package/lib/Viewer/Markup/Api/IMarkupObject.d.ts +11 -0
  69. package/lib/Viewer/Markup/Api/IMarkupRectangle.d.ts +14 -0
  70. package/lib/Viewer/Markup/Api/IMarkupText.d.ts +12 -0
  71. package/lib/Viewer/Markup/Api/Impl/Konva/KonvaArrow.d.ts +46 -0
  72. package/lib/Viewer/Markup/Api/Impl/Konva/KonvaCloud.d.ts +35 -0
  73. package/lib/Viewer/Markup/Api/Impl/Konva/KonvaEllipse.d.ts +40 -0
  74. package/lib/Viewer/Markup/Api/Impl/Konva/KonvaImage.d.ts +36 -0
  75. package/lib/Viewer/Markup/Api/Impl/Konva/KonvaLine.d.ts +36 -0
  76. package/lib/Viewer/Markup/Api/Impl/Konva/KonvaRectangle.d.ts +38 -0
  77. package/lib/Viewer/Markup/Api/Impl/Konva/KonvaText.d.ts +37 -0
  78. package/lib/Viewer/Markup/IMarkup.d.ts +39 -0
  79. package/lib/Viewer/Markup/Impl/Konva/KonvaMarkup.d.ts +70 -0
  80. package/lib/Viewer/Markup/Impl/Konva/MarkupColor.d.ts +18 -0
  81. package/lib/Viewer/Markup/Impl/Visualize/VisualizeMarkup.d.ts +33 -0
  82. package/lib/Viewer/Markup/MarkupFactory.d.ts +6 -0
  83. package/lib/Viewer/Viewer.d.ts +346 -0
  84. package/lib/Viewer/utils.d.ts +3 -0
  85. package/lib/index.d.ts +3 -0
  86. package/package.json +44 -0
  87. package/src/Viewer/Commands/ApplyModelTransform.ts +69 -0
  88. package/src/Viewer/Commands/ClearMarkup.ts +28 -0
  89. package/src/Viewer/Commands/ClearSlices.ts +27 -0
  90. package/src/Viewer/Commands/CreatePreview.ts +33 -0
  91. package/src/Viewer/Commands/Explode.ts +38 -0
  92. package/src/Viewer/Commands/GetDefaultViewPositions.ts +36 -0
  93. package/src/Viewer/Commands/GetModels.ts +43 -0
  94. package/src/Viewer/Commands/GetSelected.ts +58 -0
  95. package/src/Viewer/Commands/HideSelected.ts +37 -0
  96. package/src/Viewer/Commands/IsolateSelected.ts +37 -0
  97. package/src/Viewer/Commands/RegenerateAll.ts +37 -0
  98. package/src/Viewer/Commands/ResetView.ts +43 -0
  99. package/src/Viewer/Commands/SelectModel.ts +52 -0
  100. package/src/Viewer/Commands/SetActiveDragger.ts +29 -0
  101. package/src/Viewer/Commands/SetDefaultViewPosition.ts +50 -0
  102. package/src/Viewer/Commands/SetMarkupColor.ts +29 -0
  103. package/src/Viewer/Commands/SetSelected.ts +47 -0
  104. package/src/Viewer/Commands/ShowAll.ts +37 -0
  105. package/src/Viewer/Commands/Unselect.ts +37 -0
  106. package/src/Viewer/Commands/ZoomToExtents.ts +43 -0
  107. package/src/Viewer/Commands/ZoomToObjects.ts +47 -0
  108. package/src/Viewer/Commands/ZoomToSelected.ts +39 -0
  109. package/src/Viewer/Commands/index.ts +45 -0
  110. package/src/Viewer/Draggers/Actions/OrbitAction.ts +250 -0
  111. package/src/Viewer/Draggers/Actions/PanAction.ts +102 -0
  112. package/src/Viewer/Draggers/Actions/ZoomAction.ts +45 -0
  113. package/src/Viewer/Draggers/Common/Geometry.ts +152 -0
  114. package/src/Viewer/Draggers/Common/GestureManager.ts +263 -0
  115. package/src/Viewer/Draggers/Common/OdBaseDragger.ts +270 -0
  116. package/src/Viewer/Draggers/Common/OdaGeAction.ts +146 -0
  117. package/src/Viewer/Draggers/MeasureLineDragger/MeasureLineItem.ts +248 -0
  118. package/src/Viewer/Draggers/MeasureLineDragger/MeasureUtils.ts +182 -0
  119. package/src/Viewer/Draggers/MeasureLineDragger/index.ts +166 -0
  120. package/src/Viewer/Draggers/OdBaseCuttingPlaneDragger.ts +182 -0
  121. package/src/Viewer/Draggers/OdCuttingPlaneXAxisDragger.ts +53 -0
  122. package/src/Viewer/Draggers/OdCuttingPlaneYAxisDragger.ts +53 -0
  123. package/src/Viewer/Draggers/OdCuttingPlaneZAxisDragger.ts +53 -0
  124. package/src/Viewer/Draggers/OdOrbitDragger.ts +70 -0
  125. package/src/Viewer/Draggers/OdPanDragger.ts +62 -0
  126. package/src/Viewer/Draggers/OdZoomDragger.ts +59 -0
  127. package/src/Viewer/Draggers/OdZoomWheelDragger.ts +103 -0
  128. package/src/Viewer/Draggers/OdZoomWindowDragger/OdSelectionFrame.ts +123 -0
  129. package/src/Viewer/Draggers/OdZoomWindowDragger/index.ts +75 -0
  130. package/src/Viewer/Draggers/OdaLineDragger.ts +80 -0
  131. package/src/Viewer/Draggers/OdaTextDragger.ts +118 -0
  132. package/src/Viewer/Draggers/OdaWalkDragger.ts +278 -0
  133. package/src/Viewer/Draggers/OrbitAroundBuildingDragger.ts +184 -0
  134. package/src/Viewer/Loaders/BaseLoader.ts +40 -0
  135. package/src/Viewer/Loaders/LoaderFactory.ts +48 -0
  136. package/src/Viewer/Loaders/TCSLoader.ts +82 -0
  137. package/src/Viewer/Loaders/UpdaterController.ts +36 -0
  138. package/src/Viewer/Loaders/VsfXLoader.ts +65 -0
  139. package/src/Viewer/Loaders/VsfXPartialLoader.ts +208 -0
  140. package/src/Viewer/Loaders/VsfXStreamingLoader.ts +87 -0
  141. package/src/Viewer/Markup/Api/IMarkupArrow.ts +12 -0
  142. package/src/Viewer/Markup/Api/IMarkupCloud.ts +15 -0
  143. package/src/Viewer/Markup/Api/IMarkupColorable.ts +4 -0
  144. package/src/Viewer/Markup/Api/IMarkupEllipse.ts +15 -0
  145. package/src/Viewer/Markup/Api/IMarkupImage.ts +15 -0
  146. package/src/Viewer/Markup/Api/IMarkupLine.ts +13 -0
  147. package/src/Viewer/Markup/Api/IMarkupObject.ts +15 -0
  148. package/src/Viewer/Markup/Api/IMarkupRectangle.ts +15 -0
  149. package/src/Viewer/Markup/Api/IMarkupText.ts +12 -0
  150. package/src/Viewer/Markup/Api/Impl/Konva/KonvaArrow.ts +117 -0
  151. package/src/Viewer/Markup/Api/Impl/Konva/KonvaCloud.ts +208 -0
  152. package/src/Viewer/Markup/Api/Impl/Konva/KonvaEllipse.ts +118 -0
  153. package/src/Viewer/Markup/Api/Impl/Konva/KonvaImage.ts +123 -0
  154. package/src/Viewer/Markup/Api/Impl/Konva/KonvaLine.ts +131 -0
  155. package/src/Viewer/Markup/Api/Impl/Konva/KonvaRectangle.ts +119 -0
  156. package/src/Viewer/Markup/Api/Impl/Konva/KonvaText.ts +110 -0
  157. package/src/Viewer/Markup/IMarkup.ts +42 -0
  158. package/src/Viewer/Markup/Impl/Konva/KonvaMarkup.ts +1144 -0
  159. package/src/Viewer/Markup/Impl/Konva/MarkupColor.ts +39 -0
  160. package/src/Viewer/Markup/Impl/Visualize/VisualizeMarkup.ts +229 -0
  161. package/src/Viewer/Markup/MarkupFactory.ts +32 -0
  162. package/src/Viewer/Viewer.ts +1183 -0
  163. package/src/Viewer/utils.ts +74 -0
  164. package/src/index.ts +26 -0
@@ -0,0 +1,123 @@
1
+ import Konva from "konva";
2
+ import { IMarkupImage } from "../../IMarkupImage";
3
+
4
+ export class KonvaImage implements IMarkupImage {
5
+ private _ref: Konva.Image;
6
+ private _canvasImage: HTMLImageElement;
7
+ private _ratio = 1;
8
+
9
+ constructor(
10
+ params: { position: { x: number; y: number }; src: string; width: number; height: number; id?: string },
11
+ ref = null
12
+ ) {
13
+ if (ref) {
14
+ if (ref.height() === 0 || ref.width() === 0) return;
15
+
16
+ this._ref = ref;
17
+ this._canvasImage = ref.image();
18
+ this._ratio = this._ref.height() / this._ref.width();
19
+ return;
20
+ }
21
+
22
+ if (!params.position || !params.src) return;
23
+ this._canvasImage = new Image();
24
+
25
+ this._ref = new Konva.Image({
26
+ x: params.position.x,
27
+ y: params.position.y,
28
+ image: this._canvasImage,
29
+ width: params.width,
30
+ height: params.height,
31
+ draggable: true,
32
+ });
33
+
34
+ this._canvasImage.onload = () => {
35
+ this._ref.image(this._canvasImage);
36
+ this._ratio = this._ref.height() === 0 || this._ref.width() === 0 ? 1 : this._ref.height() / this._ref.width();
37
+ };
38
+
39
+ this._canvasImage.src = params.src;
40
+
41
+ this._ref.id(this._ref._id.toString());
42
+ }
43
+
44
+ getSrc(): string {
45
+ return this._canvasImage.src;
46
+ }
47
+
48
+ setSrc(src: any) {
49
+ this._canvasImage.src = src;
50
+ }
51
+
52
+ getWidth(): number {
53
+ return this._ref.width();
54
+ }
55
+
56
+ setWidth(w: number) {
57
+ this._ref.width(w);
58
+ this._ref.height(w * this._ratio);
59
+ }
60
+
61
+ getHeight(): number {
62
+ return this._ref.height();
63
+ }
64
+
65
+ setHeight(h: number) {
66
+ this._ref.height(h);
67
+ this._ref.width(h / this._ratio);
68
+ }
69
+
70
+ ref() {
71
+ return this._ref;
72
+ }
73
+
74
+ id(): string {
75
+ return this._ref.id();
76
+ }
77
+
78
+ enableMouseEditing(value: boolean) {
79
+ this._ref.draggable(value);
80
+ }
81
+
82
+ type(): string {
83
+ return "image";
84
+ }
85
+
86
+ // we can break Liskov Substitution Principle, need to use separate IColorable
87
+ // getColor(): string {
88
+ // return this._ref.fill();
89
+ // }
90
+
91
+ // setColor(hex: string) {
92
+ // this._ref.fill(hex);
93
+ // }
94
+
95
+ getRotation(): number {
96
+ return this._ref.rotation();
97
+ }
98
+
99
+ setRotation(degrees: number): void {
100
+ this._ref.rotation(degrees);
101
+ }
102
+
103
+ getZIndex(): number {
104
+ return this._ref.zIndex();
105
+ }
106
+
107
+ setZIndex(zIndex: number): void {
108
+ this._ref.zIndex(zIndex);
109
+ }
110
+
111
+ delete() {
112
+ this._ref.destroy();
113
+ this._ref = null;
114
+ }
115
+
116
+ getPosition(): { x: number; y: number } {
117
+ return this._ref.getPosition();
118
+ }
119
+
120
+ setPosition(x: number, y: number) {
121
+ this._ref.setPosition({ x, y });
122
+ }
123
+ }
@@ -0,0 +1,131 @@
1
+ import Konva from "konva";
2
+ import { LineType } from "@inweb/viewer-core";
3
+ import { IMarkupLine } from "../../IMarkupLine";
4
+ import { IMarkupColorable } from "../../IMarkupColorable";
5
+
6
+ const LineTypeSpecs = new Map<string, number[]>([
7
+ ["solid", []],
8
+ ["dot", [30, 30, 0.001, 30]],
9
+ ["dash", [30, 30]],
10
+ ]);
11
+
12
+ export class KonvaLine implements IMarkupLine, IMarkupColorable {
13
+ private _ref: Konva.Line;
14
+
15
+ constructor(
16
+ params: { points: { x: number; y: number }[]; type?: LineType; width?: number; color?: string; id?: string },
17
+ ref = null
18
+ ) {
19
+ if (ref) {
20
+ this._ref = ref;
21
+ return;
22
+ }
23
+
24
+ if (!params.points) return;
25
+
26
+ const konvaPoints = [];
27
+ params.points.forEach((point) => konvaPoints.push(point.x, point.y));
28
+
29
+ this._ref = new Konva.Line({
30
+ stroke: params.color ?? "#ff0000",
31
+ strokeWidth: params.width ?? 4,
32
+ globalCompositeOperation: "source-over",
33
+ lineCap: "round",
34
+ lineJoin: "round",
35
+ points: konvaPoints,
36
+ draggable: true,
37
+ strokeScaleEnabled: false,
38
+ dash: LineTypeSpecs.get(params.type) || [],
39
+ });
40
+
41
+ this._ref.id(this._ref._id.toString());
42
+ }
43
+
44
+ ref() {
45
+ return this._ref;
46
+ }
47
+
48
+ id(): string {
49
+ return this._ref.id();
50
+ }
51
+
52
+ enableMouseEditing(value: boolean) {
53
+ this._ref.draggable(value);
54
+ }
55
+
56
+ type(): string {
57
+ return "line";
58
+ }
59
+
60
+ getColor(): string {
61
+ return this._ref.stroke();
62
+ }
63
+
64
+ setColor(hex: string) {
65
+ this._ref.stroke(hex);
66
+ }
67
+
68
+ getRotation(): number {
69
+ return this._ref.rotation();
70
+ }
71
+
72
+ setRotation(degrees: number): void {
73
+ this._ref.rotation(degrees);
74
+ }
75
+
76
+ getZIndex(): number {
77
+ return this._ref.zIndex();
78
+ }
79
+
80
+ setZIndex(zIndex: number): void {
81
+ this._ref.zIndex(zIndex);
82
+ }
83
+
84
+ delete() {
85
+ this._ref.destroy();
86
+ this._ref = null;
87
+ }
88
+
89
+ getPoints(): number[] {
90
+ return this._ref.points();
91
+ }
92
+
93
+ setLineWidth(size: number) {
94
+ this._ref.strokeWidth(size);
95
+ }
96
+
97
+ getLineWidth(): number {
98
+ return this._ref.strokeWidth();
99
+ }
100
+
101
+ getLineType(): string {
102
+ const typeSpecs = this._ref.dash() || [];
103
+ let type: LineType;
104
+ switch (typeSpecs) {
105
+ case LineTypeSpecs.get("dot"):
106
+ type = "dot";
107
+ break;
108
+ case LineTypeSpecs.get("dash"):
109
+ type = "dash";
110
+ break;
111
+ default:
112
+ type = "solid";
113
+ break;
114
+ }
115
+ return type;
116
+ }
117
+
118
+ setLineType(type: string) {
119
+ const specs = LineTypeSpecs.get(type);
120
+ if (specs) this._ref.dash(specs);
121
+ }
122
+
123
+ addPoints(points: [{ x: number; y: number }]) {
124
+ let newPoints = this._ref.points();
125
+ points.forEach((point) => {
126
+ newPoints = newPoints.concat([point.x, point.y]);
127
+ });
128
+
129
+ this._ref.points(newPoints);
130
+ }
131
+ }
@@ -0,0 +1,119 @@
1
+ import Konva from "konva";
2
+ import { IMarkupRectangle } from "../../IMarkupRectangle";
3
+ import { IMarkupColorable } from "../../IMarkupColorable";
4
+
5
+ export class KonvaRectangle implements IMarkupRectangle, IMarkupColorable {
6
+ private _ref: Konva.Rect;
7
+
8
+ constructor(
9
+ params: {
10
+ position: { x: number; y: number };
11
+ width?: number;
12
+ height?: number;
13
+ lineWidth?: number;
14
+ color?: string;
15
+ id?: string;
16
+ },
17
+ ref = null
18
+ ) {
19
+ if (ref) {
20
+ this._ref = ref;
21
+ return;
22
+ }
23
+
24
+ if (!params.position) return;
25
+
26
+ this._ref = new Konva.Rect({
27
+ stroke: params.color ?? "#ff0000",
28
+ strokeWidth: params.lineWidth ?? 4,
29
+ globalCompositeOperation: "source-over",
30
+ lineCap: "round",
31
+ lineJoin: "round",
32
+ x: params.position.x,
33
+ y: params.position.y,
34
+ width: params.width ?? 200,
35
+ height: params.height ?? 200,
36
+ draggable: true,
37
+ strokeScaleEnabled: false,
38
+ });
39
+
40
+ this._ref.id(this._ref._id.toString());
41
+ }
42
+
43
+ getPosition(): { x: number; y: number } {
44
+ return this._ref.position();
45
+ }
46
+
47
+ getWidth(): number {
48
+ return this._ref.width();
49
+ }
50
+
51
+ getHeigth(): number {
52
+ return this._ref.height();
53
+ }
54
+
55
+ setWidth(w: number) {
56
+ this._ref.width(w);
57
+ }
58
+
59
+ setHeight(h: number) {
60
+ this._ref.height(h);
61
+ }
62
+
63
+ setPosition(x: number, y: number) {
64
+ this._ref.setPosition({ x, y });
65
+ }
66
+
67
+ ref() {
68
+ return this._ref;
69
+ }
70
+
71
+ id(): string {
72
+ return this._ref.id();
73
+ }
74
+
75
+ enableMouseEditing(value: boolean): void {
76
+ this._ref.draggable(value);
77
+ }
78
+
79
+ type(): string {
80
+ return "rectangle";
81
+ }
82
+
83
+ getColor(): string {
84
+ return this._ref.stroke();
85
+ }
86
+
87
+ setColor(hex: string): void {
88
+ this._ref.stroke(hex);
89
+ }
90
+
91
+ getRotation(): number {
92
+ return this._ref.rotation();
93
+ }
94
+
95
+ setRotation(degrees: number): void {
96
+ this._ref.rotation(degrees);
97
+ }
98
+
99
+ getZIndex(): number {
100
+ return this._ref.zIndex();
101
+ }
102
+
103
+ setZIndex(zIndex: number): void {
104
+ this._ref.zIndex(zIndex);
105
+ }
106
+
107
+ delete(): void {
108
+ this._ref.destroy();
109
+ this._ref = null;
110
+ }
111
+
112
+ setLineWidth(size: number): void {
113
+ this._ref.strokeWidth(size);
114
+ }
115
+
116
+ getLineWidth(): number {
117
+ return this._ref.strokeWidth();
118
+ }
119
+ }
@@ -0,0 +1,110 @@
1
+ import Konva from "konva";
2
+ import { IMarkupText } from "../../IMarkupText";
3
+ import { IMarkupColorable } from "../../IMarkupColorable";
4
+
5
+ export class KonvaText implements IMarkupText, IMarkupColorable {
6
+ private _ref: Konva.Text;
7
+ private readonly TEXT_FONT_FAMILY = "Calibri";
8
+
9
+ constructor(
10
+ params: {
11
+ position: { x: number; y: number };
12
+ text: string;
13
+ rotation?: number;
14
+ fontSize?: number;
15
+ color?: string;
16
+ id?: string;
17
+ },
18
+ ref = null
19
+ ) {
20
+ if (ref) {
21
+ this._ref = ref;
22
+ return;
23
+ }
24
+
25
+ if (!params || !params.text) return;
26
+
27
+ this._ref = new Konva.Text({
28
+ x: params.position.x,
29
+ y: params.position.y,
30
+ text: params.text,
31
+ fontSize: params.fontSize ?? 34,
32
+ fontFamily: this.TEXT_FONT_FAMILY,
33
+ fill: params.color ?? "#ff0000",
34
+ align: "left",
35
+ draggable: true,
36
+ rotation: params.rotation ?? 0,
37
+ });
38
+
39
+ this._ref.id(this._ref._id.toString());
40
+ }
41
+
42
+ ref() {
43
+ return this._ref;
44
+ }
45
+
46
+ id(): string {
47
+ return this._ref.id();
48
+ }
49
+
50
+ enableMouseEditing(value: boolean) {
51
+ this._ref.draggable(value);
52
+ }
53
+
54
+ type(): string {
55
+ return "text";
56
+ }
57
+
58
+ getColor(): string {
59
+ return this._ref.fill();
60
+ }
61
+
62
+ setColor(hex: string) {
63
+ this._ref.fill(hex);
64
+ }
65
+
66
+ getRotation(): number {
67
+ return this._ref.rotation();
68
+ }
69
+
70
+ setRotation(degrees: number): void {
71
+ this._ref.rotation(degrees);
72
+ }
73
+
74
+ getZIndex(): number {
75
+ return this._ref.zIndex();
76
+ }
77
+
78
+ setZIndex(zIndex: number): void {
79
+ this._ref.zIndex(zIndex);
80
+ }
81
+
82
+ delete() {
83
+ this._ref.destroy();
84
+ this._ref = null;
85
+ }
86
+
87
+ getText(): string {
88
+ return this._ref.text();
89
+ }
90
+
91
+ setText(text: string): void {
92
+ this._ref.text(text);
93
+ }
94
+
95
+ getPosition(): { x: number; y: number } {
96
+ return this._ref.getPosition();
97
+ }
98
+
99
+ setPosition(x: number, y: number) {
100
+ this._ref.setPosition({ x, y });
101
+ }
102
+
103
+ getFontSize() {
104
+ return this._ref.fontSize();
105
+ }
106
+
107
+ setFontSize(size: number) {
108
+ this._ref.fontSize(size);
109
+ }
110
+ }
@@ -0,0 +1,42 @@
1
+ import { IViewpoint } from "@inweb/viewer-core";
2
+
3
+ import { OdBaseDragger } from "../Draggers/Common/OdBaseDragger";
4
+ import { Viewer } from "../Viewer";
5
+ import { IMarkupObject } from "./Api/IMarkupObject";
6
+
7
+ export enum MarkupType {
8
+ Unknown,
9
+ Konva = "Konva",
10
+ Visualize = "Visualize",
11
+ }
12
+
13
+ export enum MarkupMode {
14
+ Line = "Line",
15
+ Text = "Text",
16
+ Rectangle = "Rectangle",
17
+ Ellipse = "Ellipse",
18
+ Arrow = "Arrow",
19
+ Image = "Image",
20
+ Cloud = "Cloud",
21
+ }
22
+
23
+ export interface IMarkup {
24
+ lineWidth: number;
25
+
26
+ initialize(viewer: Viewer, canvas: HTMLCanvasElement, canvasEvents: string[]): void;
27
+ dispose(): void;
28
+
29
+ getDraggers(): Map<string, typeof OdBaseDragger>;
30
+ clearOverlay(): void;
31
+ setMarkupColor(r: number, g: number, b: number): void;
32
+ getMarkupColor(): { r: number; g: number; b: number };
33
+ colorizeAllMarkup(r: number, g: number, b: number): void;
34
+ setViewpoint(viewpoint: IViewpoint): void;
35
+ getViewpoint(): IViewpoint;
36
+
37
+ createObject(type: string, params: any): IMarkupObject;
38
+ getObjects(): IMarkupObject[];
39
+ getSelectedObjects(): IMarkupObject[];
40
+ selectObjects(objects: IMarkupObject[]): void;
41
+ clearSelected(): void;
42
+ }