@equinor/esv-intersection 2.2.0 → 3.0.0-beta.1

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 (50) hide show
  1. package/dist/components/axis.d.ts +1 -1
  2. package/dist/constants.d.ts +6 -3
  3. package/dist/control/IntersectionReferenceSystem.d.ts +20 -5
  4. package/dist/control/LayerManager.d.ts +6 -6
  5. package/dist/control/MainController.d.ts +5 -5
  6. package/dist/control/ZoomPanHandler.d.ts +4 -2
  7. package/dist/control/index.d.ts +3 -3
  8. package/dist/control/interfaces.d.ts +10 -10
  9. package/dist/control/overlay.d.ts +6 -6
  10. package/dist/datautils/index.d.ts +3 -3
  11. package/dist/datautils/interfaces.d.ts +8 -2
  12. package/dist/datautils/picks.d.ts +70 -6
  13. package/dist/datautils/schematicShapeGenerator.d.ts +54 -0
  14. package/dist/datautils/seismicimage.d.ts +14 -1
  15. package/dist/index.d.ts +3 -3
  16. package/dist/index.esm.js +1 -1
  17. package/dist/index.js +1 -1
  18. package/dist/index.umd.js +343 -364
  19. package/dist/interfaces.d.ts +21 -121
  20. package/dist/layers/CalloutCanvasLayer.d.ts +14 -5
  21. package/dist/layers/CustomDisplayObjects/ComplexRope.d.ts +22 -0
  22. package/dist/layers/CustomDisplayObjects/ComplexRopeGeometry.d.ts +27 -0
  23. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRope.d.ts +20 -0
  24. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.d.ts +26 -0
  25. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRope.d.ts +17 -0
  26. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRopeGeometry.d.ts +24 -0
  27. package/dist/layers/GeomodelCanvasLayer.d.ts +15 -14
  28. package/dist/layers/GeomodelLabelsLayer.d.ts +24 -12
  29. package/dist/layers/GeomodelLayerV2.d.ts +5 -6
  30. package/dist/layers/GridLayer.d.ts +17 -5
  31. package/dist/layers/ImageCanvasLayer.d.ts +15 -4
  32. package/dist/layers/SchematicLayer.d.ts +91 -0
  33. package/dist/layers/SeismicCanvasLayer.d.ts +13 -2
  34. package/dist/layers/WellborePathLayer.d.ts +11 -4
  35. package/dist/layers/base/CanvasLayer.d.ts +5 -5
  36. package/dist/layers/base/HTMLLayer.d.ts +2 -2
  37. package/dist/layers/base/Layer.d.ts +35 -15
  38. package/dist/layers/base/PixiLayer.d.ts +18 -13
  39. package/dist/layers/base/SVGLayer.d.ts +2 -2
  40. package/dist/layers/base/index.d.ts +2 -2
  41. package/dist/layers/index.d.ts +9 -12
  42. package/dist/layers/schematicInterfaces.d.ts +169 -0
  43. package/package.json +7 -5
  44. package/dist/datautils/wellboreItemShapeGenerator.d.ts +0 -22
  45. package/dist/layers/CasingLayer.d.ts +0 -21
  46. package/dist/layers/CementLayer.d.ts +0 -14
  47. package/dist/layers/CompletionLayer.d.ts +0 -20
  48. package/dist/layers/GeomodelLayer.d.ts +0 -7
  49. package/dist/layers/HoleSizeLayer.d.ts +0 -11
  50. package/dist/layers/WellboreBaseComponentLayer.d.ts +0 -26
@@ -1,14 +1,16 @@
1
1
  import { ZoomTransform } from 'd3-zoom';
2
- import { Graphics, IApplicationOptions } from 'pixi.js';
3
- import { Layer } from './layers/base/Layer';
4
- import { IntersectionReferenceSystem } from './control/IntersectionReferenceSystem';
2
+ import { Graphics } from 'pixi.js';
5
3
  import Vector2 from '@equinor/videx-vector2';
4
+ import { ScaleLinear } from 'd3-scale';
5
+ import { ExtendedCurveInterpolator } from './control/ExtendedCurveInterpolator';
6
+ import { CurveInterpolator } from 'curve-interpolator';
6
7
  interface LayerEvent {
7
- [propType: string]: any;
8
8
  elm?: HTMLElement;
9
9
  }
10
10
  export interface OnMountEvent extends LayerEvent {
11
11
  elm: HTMLElement;
12
+ width?: number;
13
+ height?: number;
12
14
  }
13
15
  export interface OnUnmountEvent extends LayerEvent {
14
16
  }
@@ -17,76 +19,20 @@ export interface OnResizeEvent extends LayerEvent {
17
19
  height: number;
18
20
  }
19
21
  export interface OnRescaleEvent extends LayerEvent {
20
- xBounds?: [number, number];
21
- yBounds?: [number, number];
22
- zFactor?: number;
23
- viewportRatio?: number;
24
- width?: number;
25
- height?: number;
26
- xRatio?: number;
27
- yRatio?: number;
28
- transform?: ZoomTransform;
29
- }
30
- export interface OnUpdateEvent extends LayerEvent {
31
- }
32
- export interface LayerOptions {
33
- order?: number;
34
- layerOpacity?: number;
35
- referenceSystem?: IntersectionReferenceSystem;
36
- data?: any;
37
- interactive?: boolean;
38
- onMount?(event: OnMountEvent, layer: Layer): void;
39
- onUnmount?(event: OnUnmountEvent, layer: Layer): void;
40
- onUpdate?(event: OnUpdateEvent, layer: Layer): void;
41
- onRescale?(event: OnRescaleEvent, layer: Layer): void;
42
- onResize?(event: OnResizeEvent, layer: Layer): void;
43
- }
44
- export interface GridLayerOptions extends LayerOptions {
45
- majorWidth?: number;
46
- majorColor?: string;
47
- minorWidth?: number;
48
- minorColor?: string;
49
- }
50
- export interface WellborepathLayerOptions extends LayerOptions {
51
- stroke: string;
52
- strokeWidth: string;
53
- curveType?: string;
54
- tension?: number;
55
- }
56
- export interface GeomodelLayerOptions extends LayerOptions {
57
- }
58
- export interface CompletionLayerOptions extends PixiLayerOptions {
59
- }
60
- export interface GeomodelLayerLabelsOptions extends LayerOptions {
61
- margins?: number;
62
- minFontSize?: number;
63
- maxFontSize?: number;
64
- textColor?: string;
65
- font?: string;
66
- }
67
- export interface HoleSizeLayerOptions extends WellComponentBaseOptions {
68
- firstColor?: string;
69
- secondColor?: string;
70
- lineColor?: number;
71
- }
72
- export interface CasingShoeSize {
22
+ xScale: ScaleLinear<number, number, never>;
23
+ yScale: ScaleLinear<number, number, never>;
24
+ xBounds: [number, number];
25
+ yBounds: [number, number];
26
+ zFactor: number;
27
+ viewportRatio: number;
28
+ xRatio: number;
29
+ yRatio: number;
73
30
  width: number;
74
- length: number;
75
- }
76
- export interface CasingLayerOptions extends WellComponentBaseOptions {
77
- solidColor?: number;
78
- lineColor?: number;
79
- casingShoeSize?: CasingShoeSize;
80
- }
81
- export interface CementLayerOptions extends WellComponentBaseOptions {
82
- firstColor?: string;
83
- secondColor?: string;
84
- }
85
- export interface PixiLayerOptions extends LayerOptions {
86
- pixiApplicationOptions?: IApplicationOptions;
31
+ height: number;
32
+ transform: ZoomTransform;
87
33
  }
88
- export interface WellComponentBaseOptions extends PixiLayerOptions {
89
- exaggerationFactor?: number;
34
+ export interface OnUpdateEvent<T> extends LayerEvent {
35
+ data?: T;
90
36
  }
91
37
  export interface ZoomAndPanOptions {
92
38
  maxZoomLevel: number;
@@ -104,29 +50,6 @@ export interface Annotation {
104
50
  md?: number;
105
51
  pos?: [number, number];
106
52
  }
107
- export interface HoleSize {
108
- diameter: number;
109
- start: number;
110
- end: number;
111
- innerDiameter?: number;
112
- }
113
- export interface Casing {
114
- diameter: number;
115
- start: number;
116
- end: number;
117
- hasShoe: boolean;
118
- innerDiameter: number;
119
- casingId: string;
120
- }
121
- export interface Cement {
122
- toc: number;
123
- casingIds?: string[];
124
- /**
125
- * Should remove optional on casingIds when casingId is removed in next major release
126
- * @‌deprecated use casingIds
127
- */
128
- casingId?: string;
129
- }
130
53
  export interface MDPoint {
131
54
  point: number[];
132
55
  normal?: Vector2;
@@ -144,29 +67,14 @@ export interface ScaleOptions {
144
67
  yBounds?: [number, number];
145
68
  }
146
69
  export interface Interpolators {
147
- trajectory: any;
148
- curtain: any;
149
- position?: any;
150
- curve?: any;
151
- }
152
- export interface Interpolator {
70
+ trajectory: CurveInterpolator;
71
+ curtain: ExtendedCurveInterpolator;
72
+ curve?: ExtendedCurveInterpolator;
153
73
  }
154
74
  export interface Trajectory {
155
75
  points: number[][];
156
76
  offset: number;
157
77
  }
158
- export interface ReferenceSystemOptions {
159
- normalizedLength?: number;
160
- arcDivisions?: number;
161
- tension?: number;
162
- trajectoryAngle?: number;
163
- calculateDisplacementFromBottom?: boolean;
164
- curveInterpolator?: Interpolator;
165
- trajectoryInterpolator?: Interpolator;
166
- curtainInterpolator?: Interpolator;
167
- approxT?: boolean;
168
- quickT?: boolean;
169
- }
170
78
  export declare type BoundingBox = {
171
79
  x: number;
172
80
  y: number;
@@ -175,12 +83,4 @@ export declare type BoundingBox = {
175
83
  offsetX?: number;
176
84
  offsetY?: number;
177
85
  };
178
- export interface CalloutOptions extends LayerOptions {
179
- minFontSize?: number;
180
- maxFontSize?: number;
181
- fontSizeFactor?: number;
182
- offsetMin?: number;
183
- offsetMax?: number;
184
- offsetFactor?: number;
185
- }
186
86
  export {};
@@ -1,6 +1,7 @@
1
1
  import { ScaleLinear } from 'd3-scale';
2
2
  import { CanvasLayer } from './base/CanvasLayer';
3
- import { OnUpdateEvent, Annotation, OnRescaleEvent, BoundingBox, CalloutOptions } from '../interfaces';
3
+ import { OnUpdateEvent, Annotation, OnRescaleEvent, BoundingBox } from '../interfaces';
4
+ import { LayerOptions } from './base/Layer';
4
5
  export declare type Point = {
5
6
  x: number;
6
7
  y: number;
@@ -16,7 +17,15 @@ export declare type Callout = {
16
17
  dx: number;
17
18
  dy: number;
18
19
  };
19
- export declare class CalloutCanvasLayer extends CanvasLayer {
20
+ export interface CalloutOptions<T extends Annotation[]> extends LayerOptions<T> {
21
+ minFontSize?: number;
22
+ maxFontSize?: number;
23
+ fontSizeFactor?: number;
24
+ offsetMin?: number;
25
+ offsetMax?: number;
26
+ offsetFactor?: number;
27
+ }
28
+ export declare class CalloutCanvasLayer<T extends Annotation[]> extends CanvasLayer<T> {
20
29
  rescaleEvent: OnRescaleEvent;
21
30
  xRatio: number;
22
31
  callouts: Callout[];
@@ -27,9 +36,9 @@ export declare class CalloutCanvasLayer extends CanvasLayer {
27
36
  offsetMin: number;
28
37
  offsetMax: number;
29
38
  offsetFactor: number;
30
- constructor(id?: string, options?: CalloutOptions);
39
+ constructor(id?: string, options?: CalloutOptions<T>);
31
40
  setGroupFilter(filter: string[]): void;
32
- onUpdate(event: OnUpdateEvent): void;
41
+ onUpdate(event: OnUpdateEvent<T>): void;
33
42
  onRescale(event: OnRescaleEvent): void;
34
43
  render(isPanning?: boolean): void;
35
44
  private renderAnnotation;
@@ -38,7 +47,7 @@ export declare class CalloutCanvasLayer extends CanvasLayer {
38
47
  private renderCallout;
39
48
  private renderLine;
40
49
  private getPosition;
41
- positionCallouts(annotations: Annotation[], isLeftToRight: boolean, xScale: ScaleLinear<number, number>, yScale: ScaleLinear<number, number>, scale: number, fontSize: number, offset?: number): Callout[];
50
+ positionCallouts(annotations: Annotation[], isLeftToRight: boolean, xScale: ScaleLinear<number, number>, yScale: ScaleLinear<number, number>, _scale: number, fontSize: number, offset?: number): Callout[];
42
51
  getAnnotationBoundingBox(title: string, label: string, pos: number[], xScale: ScaleLinear<number, number>, yScale: ScaleLinear<number, number>, height: number): {
43
52
  x: number;
44
53
  y: number;
@@ -0,0 +1,22 @@
1
+ import { IPoint, Mesh, Renderer, Texture } from 'pixi.js';
2
+ export declare type ComplexRopeSegment = {
3
+ points: IPoint[];
4
+ diameter: number;
5
+ };
6
+ /**
7
+ * The ComplexRope allows you to draw a texture across several segments of points and then manipulate these points
8
+ */
9
+ export declare class ComplexRope extends Mesh {
10
+ /**
11
+ * re-calculate vertices by rope segment-points each frame
12
+ * @member {boolean}
13
+ */
14
+ autoUpdate: boolean;
15
+ /**
16
+ * @param texture - The texture to use on the rope.
17
+ * @param segments - An array of segments with points and diaeter to construct this rope.
18
+ * @param {number} textureScale - Optional. Adjust interval of repeated texture
19
+ */
20
+ constructor(texture: Texture, segments: ComplexRopeSegment[], textureScale?: number);
21
+ _render(renderer: Renderer): void;
22
+ }
@@ -0,0 +1,27 @@
1
+ import { MeshGeometry } from 'pixi.js';
2
+ import { ComplexRopeSegment } from './ComplexRope';
3
+ /**
4
+ * RopeGeometry allows you to draw a geometry across several several segments of points and then manipulate these points.
5
+ */
6
+ export declare class ComplexRopeGeometry extends MeshGeometry {
7
+ /** An array of segments with points and diameter that determine the rope. */
8
+ private segments;
9
+ /** Rope texture scale. */
10
+ private readonly textureScale;
11
+ /**
12
+ * @param segments - An array of segments with points and diameter to construct this rope.
13
+ * @param textureScale - scaling factor for repeated texture. To create a tiling rope
14
+ * set baseTexture.wrapMode to PIXI.WRAP_MODES.REPEAT and use a power of two texture.
15
+ */
16
+ constructor(segments: ComplexRopeSegment[], textureScale?: number);
17
+ /**
18
+ * The max width (i.e., thickness) of the rope.
19
+ * @readonly
20
+ */
21
+ get width(): number;
22
+ /** Refreshes Rope indices and uvs */
23
+ private build;
24
+ /** refreshes vertices of Rope mesh */
25
+ updateVertices(): void;
26
+ update(): void;
27
+ }
@@ -0,0 +1,20 @@
1
+ import { IPoint, Mesh, Renderer, Texture } from 'pixi.js';
2
+ /**
3
+ * The rope allows you to draw a texture across several points and then manipulate these points
4
+ * Width of rope is given in constructor
5
+ */
6
+ export declare class FixedWidthSimpleRope extends Mesh {
7
+ /**
8
+ * re-calculate vertices by rope points each frame
9
+ * @member {boolean}
10
+ */
11
+ autoUpdate: boolean;
12
+ /**
13
+ * Note: The wrap mode of the texture is set to REPEAT if `textureScale` is positive.
14
+ * @param texture - The texture to use on the rope. (attempt to set UV wrapping, will fail on non-power of two textures)
15
+ * @param points - An array of {@link PIXI.Point} objects to construct this rope.
16
+ * @param width - Width of rope
17
+ */
18
+ constructor(texture: Texture, points: IPoint[], width: number);
19
+ _render(renderer: Renderer): void;
20
+ }
@@ -0,0 +1,26 @@
1
+ import { IPoint, MeshGeometry } from 'pixi.js';
2
+ export declare class FixedWidthSimpleRopeGeometry extends MeshGeometry {
3
+ points: IPoint[];
4
+ _width: number;
5
+ /**
6
+ * @param {number} [width=200] - The width (i.e., thickness) of the rope.
7
+ * @param {PIXI.Point[]} [points] - An array of PIXI.Point objects to construct this rope.
8
+ */
9
+ constructor(points: IPoint[], width?: number);
10
+ /**
11
+ * The width (i.e., thickness) of the rope.
12
+ * @member {number}
13
+ * @readOnly
14
+ */
15
+ get width(): number;
16
+ /**
17
+ * Refreshes Rope indices and uvs
18
+ * @private
19
+ */
20
+ private build;
21
+ /**
22
+ * refreshes vertices of Rope mesh
23
+ */
24
+ updateVertices(): void;
25
+ update(): void;
26
+ }
@@ -0,0 +1,17 @@
1
+ import { IPoint, Mesh, Renderer, Texture } from 'pixi.js';
2
+ /**
3
+ * The UniformTextureStretchRope allows you to draw a texture across several points and then manipulate these points
4
+ */
5
+ export declare class UniformTextureStretchRope extends Mesh {
6
+ /**
7
+ * re-calculate vertices by rope points each frame
8
+ * @member {boolean}
9
+ */
10
+ autoUpdate: boolean;
11
+ /**
12
+ * @param texture - The texture to use on the rope.
13
+ * @param points - An array of {@link PIXI.Point} objects to construct this rope.
14
+ */
15
+ constructor(texture: Texture, points: IPoint[]);
16
+ _render(renderer: Renderer): void;
17
+ }
@@ -0,0 +1,24 @@
1
+ import { MeshGeometry } from 'pixi.js';
2
+ import type { IPoint } from 'pixi.js';
3
+ /**
4
+ * UniformTextureStretchRopeGeometry allows you to draw a geometry across several points and then manipulate these points.
5
+ */
6
+ export declare class UniformTextureStretchRopeGeometry extends MeshGeometry {
7
+ /** An array of points that determine the rope. */
8
+ points: IPoint[];
9
+ /**
10
+ * The width (i.e., thickness) of the rope.
11
+ * @readonly
12
+ */
13
+ _width: number;
14
+ /**
15
+ * @param width - The width (i.e., thickness) of the rope.
16
+ * @param points - An array of PIXI.Point objects to construct this rope.
17
+ */
18
+ constructor(points: IPoint[], width?: number);
19
+ /** Refreshes Rope indices and uvs */
20
+ private build;
21
+ /** refreshes vertices of Rope mesh */
22
+ updateVertices(): void;
23
+ update(): void;
24
+ }
@@ -1,18 +1,18 @@
1
- import { SurfaceData } from '../datautils';
2
- import { GeomodelLayerOptions, OnUpdateEvent, OnRescaleEvent, OnMountEvent } from '../interfaces';
1
+ import { SurfaceData, SurfaceLine } from '../datautils';
2
+ import { OnUpdateEvent, OnRescaleEvent } from '../interfaces';
3
+ import { LayerOptions } from './base';
3
4
  import { CanvasLayer } from './base/CanvasLayer';
4
- export declare class GeomodelCanvasLayer extends CanvasLayer {
5
+ declare type SurfacePaths = {
6
+ color: string;
7
+ path: Path2D;
8
+ };
9
+ export declare class GeomodelCanvasLayer<T extends SurfaceData> extends CanvasLayer<T> {
5
10
  rescaleEvent: OnRescaleEvent;
6
- surfaceAreasPaths: any[];
7
- surfaceLinesPaths: any[];
11
+ surfaceAreasPaths: SurfacePaths[];
12
+ surfaceLinesPaths: SurfacePaths[];
8
13
  maxDepth: number;
9
- constructor(id?: string, options?: GeomodelLayerOptions);
10
- get data(): SurfaceData;
11
- set data(data: SurfaceData);
12
- getData(): SurfaceData;
13
- setData(data: SurfaceData): void;
14
- onMount(event: OnMountEvent): void;
15
- onUpdate(event: OnUpdateEvent): void;
14
+ constructor(id?: string, options?: LayerOptions<T>);
15
+ onUpdate(event: OnUpdateEvent<T>): void;
16
16
  onRescale(event: OnRescaleEvent): void;
17
17
  updatePaths(): void;
18
18
  render(): void;
@@ -21,7 +21,8 @@ export declare class GeomodelCanvasLayer extends CanvasLayer {
21
21
  generateSurfaceLinesPaths(): void;
22
22
  drawPolygonPath: (color: string, path: Path2D) => void;
23
23
  drawLinePath: (color: string, path: Path2D) => void;
24
- createPolygons: (data: any) => number[][];
24
+ createPolygons: (data: number[][]) => number[][];
25
25
  generatePolygonPath: (polygon: number[]) => Path2D;
26
- generateLinePaths: (s: any) => Path2D[];
26
+ generateLinePaths: (s: SurfaceLine) => Path2D[];
27
27
  }
28
+ export {};
@@ -1,8 +1,19 @@
1
1
  import Vector2 from '@equinor/videx-vector2';
2
2
  import { CanvasLayer } from './base/CanvasLayer';
3
- import { GeomodelLayerLabelsOptions, OnUpdateEvent, OnRescaleEvent, OnMountEvent } from '../interfaces';
3
+ import { OnUpdateEvent, OnRescaleEvent, OnMountEvent } from '../interfaces';
4
4
  import { SurfaceArea, SurfaceLine, SurfaceData } from '../datautils';
5
- export declare class GeomodelLabelsLayer extends CanvasLayer {
5
+ import { LayerOptions } from './base/Layer';
6
+ export interface GeomodelLayerLabelsOptions<T extends SurfaceData> extends LayerOptions<T> {
7
+ margins?: number;
8
+ minFontSize?: number;
9
+ maxFontSize?: number;
10
+ textColor?: string;
11
+ font?: string;
12
+ }
13
+ interface SurfaceAreaWithAvgTopDepth extends SurfaceArea {
14
+ avgTopDepth: number;
15
+ }
16
+ export declare class GeomodelLabelsLayer<T extends SurfaceData> extends CanvasLayer<T> {
6
17
  defaultMargins: number;
7
18
  defaultMinFontSize: number;
8
19
  defaultMaxFontSize: number;
@@ -12,26 +23,27 @@ export declare class GeomodelLabelsLayer extends CanvasLayer {
12
23
  isLabelsOnLeftSide: boolean;
13
24
  maxFontSizeInWorldCoordinates: number;
14
25
  isXFlipped: boolean;
15
- areasWithAvgTopDepth: any[];
16
- constructor(id?: string, options?: GeomodelLayerLabelsOptions);
17
- get options(): GeomodelLayerLabelsOptions;
18
- setData(data: SurfaceData): void;
19
- generateSurfacesWithAvgDepth(): any;
26
+ areasWithAvgTopDepth: SurfaceAreaWithAvgTopDepth[];
27
+ constructor(id?: string, options?: GeomodelLayerLabelsOptions<T>);
28
+ get options(): GeomodelLayerLabelsOptions<T>;
29
+ setData(data: T): void;
30
+ generateSurfacesWithAvgDepth(): void;
20
31
  onMount(event: OnMountEvent): void;
21
- onUpdate(event: OnUpdateEvent): void;
32
+ onUpdate(event: OnUpdateEvent<T>): void;
22
33
  onRescale(event: OnRescaleEvent): void;
23
34
  render(): void;
24
35
  drawAreaLabels(): void;
25
36
  drawLineLabels(): void;
26
- drawAreaLabel: (surfaceArea: SurfaceArea, nextSurfaceArea: SurfaceArea, surfaces: any[], i: number) => void;
37
+ drawAreaLabel: (surfaceArea: SurfaceArea, nextSurfaceArea: SurfaceArea, surfaces: SurfaceArea[], i: number) => void;
27
38
  drawLineLabel: (s: SurfaceLine) => void;
28
39
  colorToCSSColor(color: number | string): string;
29
- calcPos(data: number[][], offset: number, count: number, step: number, topLimit?: number, bottomLimit?: number, alternativeSurfaceData?: number[][], surfaces?: any[], currentSurfaceIndex?: number): Vector2;
30
- getAlternativeYValueIfAvailable(x: number, topLimit: number, bottomLimit: number, alternativeSurfaceData: number[][], surfaces: any[], currentSurfaceIndex: number): number;
40
+ calcPos(data: number[][], offset: number, count: number, step: number, topLimit?: number, bottomLimit?: number, alternativeSurfaceData?: number[][], surfaces?: SurfaceArea[] | null, currentSurfaceIndex?: number): Vector2;
41
+ getAlternativeYValueIfAvailable(x: number, topLimit: number, bottomLimit: number, alternativeSurfaceData: number[][], surfaces: SurfaceArea[] | null, currentSurfaceIndex: number): number;
31
42
  calcLineDir(data: number[][], offset: number, count: number, step: number, zFactor: number, initalVector?: Vector2, topLimit?: number, bottomLimit?: number): Vector2;
32
- calcAreaDir(top: number[][], bottom: number[][], offset: number, count: number, step: number, initalVector?: Vector2, topLimit?: number, bottomLimit?: number, minReductionAngle?: number, maxReductionAngle?: number, angleReductionExponent?: number, alternativeSurfaceBottomData?: number[][], surfaces?: any[], currentSurfaceIndex?: number): number;
43
+ calcAreaDir(top: number[][], bottom: number[][], offset: number, count: number, step: number, initalVector?: Vector2, topLimit?: number, bottomLimit?: number, minReductionAngle?: number, maxReductionAngle?: number, angleReductionExponent?: number, alternativeSurfaceBottomData?: number[][], surfaces?: SurfaceArea[] | null, currentSurfaceIndex?: number): number;
33
44
  updateXFlipped(): void;
34
45
  getMarginsInWorldCoordinates(): number;
35
46
  getSurfacesAreaEdges(): number[];
36
47
  checkDrawLabelsOnLeftSide(): boolean;
37
48
  }
49
+ export {};
@@ -1,13 +1,12 @@
1
1
  import { PixiLayer } from './base/PixiLayer';
2
- import { OnRescaleEvent, OnUpdateEvent } from '../interfaces';
3
- import { SurfaceArea, SurfaceLine } from '../datautils';
4
- export declare class GeomodelLayerV2 extends PixiLayer {
2
+ import { OnUpdateEvent, OnRescaleEvent } from '../interfaces';
3
+ import { SurfaceArea, SurfaceData, SurfaceLine } from '../datautils';
4
+ export declare class GeomodelLayerV2<T extends SurfaceData> extends PixiLayer<T> {
5
5
  private isPreRendered;
6
6
  onRescale(event: OnRescaleEvent): void;
7
- onUpdate(event: OnUpdateEvent): void;
8
- clearStage(): void;
7
+ onUpdate(event: OnUpdateEvent<T>): void;
9
8
  preRender(): void;
10
- createPolygons: (data: any) => number[][];
9
+ createPolygons: (data: number[][]) => number[][];
11
10
  generateAreaPolygon: (s: SurfaceArea) => void;
12
11
  generateSurfaceLine: (s: SurfaceLine) => void;
13
12
  }
@@ -1,12 +1,24 @@
1
1
  import { CanvasLayer } from './base/CanvasLayer';
2
- import { GridLayerOptions, OnUpdateEvent, OnRescaleEvent } from '../interfaces';
3
- export declare class GridLayer extends CanvasLayer {
2
+ import { OnUpdateEvent, OnRescaleEvent } from '../interfaces';
3
+ import { ScaleLinear } from 'd3-scale';
4
+ import { LayerOptions } from './base/Layer';
5
+ export interface GridLayerOptions<T> extends LayerOptions<T> {
6
+ majorWidth?: number;
7
+ majorColor?: string;
8
+ minorWidth?: number;
9
+ minorColor?: string;
10
+ }
11
+ export interface OnGridLayerUpdateEvent<T> extends OnUpdateEvent<T> {
12
+ xScale?: ScaleLinear<number, number, never>;
13
+ yScale?: ScaleLinear<number, number, never>;
14
+ }
15
+ export declare class GridLayer<T> extends CanvasLayer<T> {
4
16
  private _offsetX;
5
17
  private _offsetY;
6
- constructor(id?: string, options?: GridLayerOptions);
7
- onUpdate(event: OnUpdateEvent): void;
18
+ constructor(id?: string, options?: GridLayerOptions<T>);
19
+ onUpdate(event: OnGridLayerUpdateEvent<T>): void;
8
20
  onRescale(event: OnRescaleEvent): void;
9
- render(event: OnRescaleEvent | OnUpdateEvent): void;
21
+ render(event: OnRescaleEvent | OnGridLayerUpdateEvent<T>): void;
10
22
  private renderTicksX;
11
23
  private renderTicksY;
12
24
  private mapMinorTicks;
@@ -1,9 +1,20 @@
1
1
  import { CanvasLayer } from './base/CanvasLayer';
2
2
  import { OnUpdateEvent, OnMountEvent, OnRescaleEvent } from '../interfaces';
3
- export declare class ImageLayer extends CanvasLayer {
3
+ import { ScaleLinear } from 'd3-scale';
4
+ export interface OnImageLayerUpdateEvent<T> extends OnUpdateEvent<T> {
5
+ url: string;
6
+ xScale: ScaleLinear<number, number, never>;
7
+ yScale: ScaleLinear<number, number, never>;
8
+ xRatio?: number;
9
+ yRatio?: number;
10
+ x?: number;
11
+ y?: number;
12
+ }
13
+ export declare type OnImageLayerRescaleEvent<T> = OnImageLayerUpdateEvent<T> & OnRescaleEvent;
14
+ export declare class ImageLayer<T> extends CanvasLayer<T> {
4
15
  img: HTMLImageElement;
5
16
  onMount(event: OnMountEvent): void;
6
- onUpdate(event: OnUpdateEvent): void;
7
- onRescale(event: OnRescaleEvent): void;
8
- render(event: OnUpdateEvent): void;
17
+ onUpdate(event: OnImageLayerUpdateEvent<T>): void;
18
+ onRescale(event: OnImageLayerRescaleEvent<T>): void;
19
+ render(event: OnImageLayerUpdateEvent<T>): void;
9
20
  }
@@ -0,0 +1,91 @@
1
+ import { ScaleLinear } from 'd3-scale';
2
+ import { Graphics, Point, Texture } from 'pixi.js';
3
+ import { LayerOptions, PixiLayer, PixiRenderApplication } from '.';
4
+ import { CasingOptions, CementOptions, CementPlugOptions, CementSqueezeOptions, HoleOptions, SchematicData, ScreenOptions, TubingOptions, InternalLayerOptions } from './schematicInterfaces';
5
+ import { OnUpdateEvent, OnRescaleEvent, OnUnmountEvent } from '../interfaces';
6
+ interface ScalingFactors {
7
+ height: number;
8
+ zFactor: number;
9
+ yScale: ScaleLinear<number, number, never>;
10
+ }
11
+ export interface SchematicLayerOptions<T extends SchematicData> extends LayerOptions<T> {
12
+ exaggerationFactor?: number;
13
+ internalLayerOptions?: InternalLayerOptions;
14
+ holeOptions?: HoleOptions;
15
+ casingOptions?: CasingOptions;
16
+ cementOptions?: CementOptions;
17
+ cementSqueezeOptions?: CementSqueezeOptions;
18
+ screenOptions?: ScreenOptions;
19
+ tubingOptions?: TubingOptions;
20
+ cementPlugOptions?: CementPlugOptions;
21
+ }
22
+ export declare class SchematicLayer<T extends SchematicData> extends PixiLayer<T> {
23
+ private internalLayerVisibility;
24
+ private cementTextureCache;
25
+ private cementSqueezeTextureCache;
26
+ private cementPlugTextureCache;
27
+ private holeTextureCache;
28
+ private screenTextureCache;
29
+ private tubingTextureCache;
30
+ private textureSymbolCacheArray;
31
+ private maxHoleDiameter;
32
+ protected scalingFactors: ScalingFactors;
33
+ constructor(ctx: PixiRenderApplication, id?: string, options?: SchematicLayerOptions<T>);
34
+ onUnmount(event?: OnUnmountEvent): void;
35
+ onUpdate(event: OnUpdateEvent<T>): void;
36
+ onRescale(event: OnRescaleEvent): void;
37
+ setVisibility(isVisible: boolean, layerId: string): void;
38
+ getInternalLayerIds(): string[];
39
+ /**
40
+ * Calculate yRatio without zFactor
41
+ * TODO consider to move this into ZoomPanHandler
42
+ */
43
+ protected yRatio(): number;
44
+ protected getZFactorScaledPathForPoints: (start: number, end: number) => [number, number][];
45
+ protected drawBigPolygon: (coords: Point[], color?: number) => void;
46
+ protected drawBigTexturedPolygon: (coords: Point[], t: Texture) => Graphics;
47
+ protected drawRope(path: Point[], texture: Texture, tint?: number): void;
48
+ /**
49
+ *
50
+ * @param leftPath Points for line on left side
51
+ * @param rightPath Points for line on right side
52
+ * @param lineColor Color of line
53
+ * @param lineWidth Width of line
54
+ * @param close If line should close in top and bottom to form a loop
55
+ * @param lineAlignment alignment of the line to draw, (0 = inner, 0.5 = middle, 1 = outer).
56
+ */
57
+ protected drawOutline(leftPath: Point[], rightPath: Point[], lineColor: number, lineWidth?: number, close?: boolean, lineAlignment?: number): void;
58
+ preRender(): void;
59
+ private updateSymbolCache;
60
+ private drawCementPlug;
61
+ private getCementPlugTexture;
62
+ private prepareSymbolRenderObject;
63
+ private drawSymbolComponent;
64
+ private drawSVGRope;
65
+ private getSymbolTexture;
66
+ private drawHoleSize;
67
+ private drawHoleRope;
68
+ private getHoleTexture;
69
+ /**
70
+ * The rendering order of these components needs to be aligned
71
+ * @param casingRenderObjects
72
+ * @param cementRenderObject
73
+ * @param cementSqueezes
74
+ * @returns ordered rendering list
75
+ */
76
+ private sortCementAndCasingRenderObjects;
77
+ private drawComplexRope;
78
+ private drawCasing;
79
+ private createCasingTexture;
80
+ private drawShoe;
81
+ private generateShoe;
82
+ private createCementSqueezeShape;
83
+ private getCementTexture;
84
+ private createCementSqueezeTexture;
85
+ private drawScreen;
86
+ private drawTubing;
87
+ private getTubingTexture;
88
+ private getScreenTexture;
89
+ private drawCompletionRope;
90
+ }
91
+ export {};
@@ -1,8 +1,19 @@
1
+ /// <reference types="offscreencanvas" />
1
2
  import { CanvasLayer } from './base/CanvasLayer';
2
3
  import { OnUpdateEvent, OnMountEvent, OnRescaleEvent } from '../interfaces';
3
- export declare class SeismicCanvasLayer extends CanvasLayer {
4
+ export declare type SeismicCanvasDataOptions = {
5
+ x: number;
6
+ y: number;
7
+ width: number;
8
+ height: number;
9
+ };
10
+ export declare type SeismicCanvasData = {
11
+ image: CanvasImageSource | OffscreenCanvas;
12
+ options: SeismicCanvasDataOptions;
13
+ };
14
+ export declare class SeismicCanvasLayer extends CanvasLayer<SeismicCanvasData> {
4
15
  onMount(event: OnMountEvent): void;
5
- onUpdate(event: OnUpdateEvent): void;
16
+ onUpdate(event: OnUpdateEvent<SeismicCanvasData>): void;
6
17
  onRescale(event: OnRescaleEvent): void;
7
18
  render(): void;
8
19
  }