@equinor/esv-intersection 3.0.0-beta.0 → 3.0.0-beta.2

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 (57) hide show
  1. package/dist/components/axis.d.ts +47 -0
  2. package/dist/components/index.d.ts +1 -0
  3. package/dist/constants.d.ts +11 -0
  4. package/dist/control/ExtendedCurveInterpolator.d.ts +58 -0
  5. package/dist/control/IntersectionReferenceSystem.d.ts +96 -0
  6. package/dist/control/LayerManager.d.ts +76 -0
  7. package/dist/control/MainController.d.ts +154 -0
  8. package/dist/control/ZoomPanHandler.d.ts +158 -0
  9. package/dist/control/index.d.ts +5 -0
  10. package/dist/control/interfaces.d.ts +37 -0
  11. package/dist/control/overlay.d.ts +20 -0
  12. package/dist/datautils/camelcase.d.ts +5 -0
  13. package/dist/datautils/colortable.d.ts +1 -0
  14. package/dist/datautils/findsample.d.ts +2 -0
  15. package/dist/datautils/index.d.ts +6 -0
  16. package/dist/datautils/interfaces.d.ts +63 -0
  17. package/dist/datautils/picks.d.ts +74 -0
  18. package/dist/datautils/schematicShapeGenerator.d.ts +50 -0
  19. package/dist/datautils/seismicimage.d.ts +45 -0
  20. package/dist/datautils/surfacedata.d.ts +10 -0
  21. package/dist/datautils/trajectory.d.ts +14 -0
  22. package/dist/index.d.ts +6 -0
  23. package/dist/index.esm.js +1 -0
  24. package/dist/index.js +1 -0
  25. package/dist/index.umd.js +412 -0
  26. package/dist/interfaces.d.ts +86 -0
  27. package/dist/layers/CalloutCanvasLayer.d.ts +60 -0
  28. package/dist/layers/CustomDisplayObjects/ComplexRope.d.ts +22 -0
  29. package/dist/layers/CustomDisplayObjects/ComplexRopeGeometry.d.ts +27 -0
  30. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRope.d.ts +20 -0
  31. package/dist/layers/CustomDisplayObjects/FixedWidthSimpleRopeGeometry.d.ts +26 -0
  32. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRope.d.ts +17 -0
  33. package/dist/layers/CustomDisplayObjects/UniformTextureStretchRopeGeometry.d.ts +24 -0
  34. package/dist/layers/GeomodelCanvasLayer.d.ts +28 -0
  35. package/dist/layers/GeomodelLabelsLayer.d.ts +49 -0
  36. package/dist/layers/GeomodelLayerV2.d.ts +12 -0
  37. package/dist/layers/GridLayer.d.ts +29 -0
  38. package/dist/layers/ImageCanvasLayer.d.ts +20 -0
  39. package/dist/layers/SchematicLayer.d.ts +94 -0
  40. package/dist/layers/SeismicCanvasLayer.d.ts +19 -0
  41. package/dist/layers/WellborePathLayer.d.ts +17 -0
  42. package/dist/layers/base/CanvasLayer.d.ts +19 -0
  43. package/dist/layers/base/HTMLLayer.d.ts +13 -0
  44. package/dist/layers/base/Layer.d.ts +69 -0
  45. package/dist/layers/base/PixiLayer.d.ts +32 -0
  46. package/dist/layers/base/SVGLayer.d.ts +13 -0
  47. package/dist/layers/base/index.d.ts +5 -0
  48. package/dist/layers/index.d.ts +15 -0
  49. package/dist/layers/schematicInterfaces.d.ts +191 -0
  50. package/dist/utils/arc-length.d.ts +23 -0
  51. package/dist/utils/binary-search.d.ts +8 -0
  52. package/dist/utils/color.d.ts +5 -0
  53. package/dist/utils/index.d.ts +1 -0
  54. package/dist/utils/root-finder.d.ts +34 -0
  55. package/dist/utils/text.d.ts +14 -0
  56. package/dist/utils/vectorUtils.d.ts +15 -0
  57. package/package.json +2 -1
@@ -0,0 +1,86 @@
1
+ import { ZoomTransform } from 'd3-zoom';
2
+ import { Graphics } from 'pixi.js';
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';
7
+ interface LayerEvent {
8
+ elm?: HTMLElement;
9
+ }
10
+ export interface OnMountEvent extends LayerEvent {
11
+ elm: HTMLElement;
12
+ width?: number;
13
+ height?: number;
14
+ }
15
+ export interface OnUnmountEvent extends LayerEvent {
16
+ }
17
+ export interface OnResizeEvent extends LayerEvent {
18
+ width: number;
19
+ height: number;
20
+ }
21
+ export interface OnRescaleEvent extends LayerEvent {
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;
30
+ width: number;
31
+ height: number;
32
+ transform: ZoomTransform;
33
+ }
34
+ export interface OnUpdateEvent<T> extends LayerEvent {
35
+ data?: T;
36
+ }
37
+ export interface ZoomAndPanOptions {
38
+ maxZoomLevel: number;
39
+ minZoomLevel: number;
40
+ }
41
+ export interface Connector {
42
+ end: string;
43
+ endScale: number;
44
+ }
45
+ export interface Annotation {
46
+ title: string;
47
+ label: string;
48
+ color: string;
49
+ group: string;
50
+ md?: number;
51
+ pos?: [number, number];
52
+ }
53
+ export interface MDPoint {
54
+ point: number[];
55
+ normal?: Vector2;
56
+ md: number;
57
+ }
58
+ export interface WellItemGraphics {
59
+ graphics: Graphics;
60
+ }
61
+ export interface ScaleOptions {
62
+ xMin?: number;
63
+ xMax?: number;
64
+ yMin?: number;
65
+ yMax?: number;
66
+ xBounds?: [number, number];
67
+ yBounds?: [number, number];
68
+ }
69
+ export interface Interpolators {
70
+ trajectory: CurveInterpolator;
71
+ curtain: ExtendedCurveInterpolator;
72
+ curve?: ExtendedCurveInterpolator;
73
+ }
74
+ export interface Trajectory {
75
+ points: number[][];
76
+ offset: number;
77
+ }
78
+ export declare type BoundingBox = {
79
+ x: number;
80
+ y: number;
81
+ width: number;
82
+ height: number;
83
+ offsetX?: number;
84
+ offsetY?: number;
85
+ };
86
+ export {};
@@ -0,0 +1,60 @@
1
+ import { ScaleLinear } from 'd3-scale';
2
+ import { CanvasLayer } from './base/CanvasLayer';
3
+ import { OnUpdateEvent, Annotation, OnRescaleEvent, BoundingBox } from '../interfaces';
4
+ import { LayerOptions } from './base/Layer';
5
+ export declare type Point = {
6
+ x: number;
7
+ y: number;
8
+ };
9
+ export declare type Callout = {
10
+ title: string;
11
+ label: string;
12
+ color: string;
13
+ pos: Point;
14
+ group: string;
15
+ alignment: string;
16
+ boundingBox: BoundingBox;
17
+ dx: number;
18
+ dy: number;
19
+ };
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> {
29
+ rescaleEvent: OnRescaleEvent;
30
+ xRatio: number;
31
+ callouts: Callout[];
32
+ groupFilter: string[];
33
+ minFontSize: number;
34
+ maxFontSize: number;
35
+ fontSizeFactor: number;
36
+ offsetMin: number;
37
+ offsetMax: number;
38
+ offsetFactor: number;
39
+ constructor(id?: string, options?: CalloutOptions<T>);
40
+ setGroupFilter(filter: string[]): void;
41
+ onUpdate(event: OnUpdateEvent<T>): void;
42
+ onRescale(event: OnRescaleEvent): void;
43
+ render(isPanning?: boolean): void;
44
+ private renderAnnotation;
45
+ private renderText;
46
+ private renderPoint;
47
+ private renderCallout;
48
+ private renderLine;
49
+ private getPosition;
50
+ positionCallouts(annotations: Annotation[], isLeftToRight: boolean, xScale: ScaleLinear<number, number>, yScale: ScaleLinear<number, number>, _scale: number, fontSize: number, offset?: number): Callout[];
51
+ getAnnotationBoundingBox(title: string, label: string, pos: number[], xScale: ScaleLinear<number, number>, yScale: ScaleLinear<number, number>, height: number): {
52
+ x: number;
53
+ y: number;
54
+ width: number;
55
+ height: number;
56
+ };
57
+ chooseTopOrBottomPosition(nodes: Callout[], bottom: Callout[], top: Callout[]): void;
58
+ adjustTopPositions(top: Callout[]): void;
59
+ adjustBottomPositions(bottom: Callout[]): void;
60
+ }
@@ -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
+ }
@@ -0,0 +1,28 @@
1
+ import { SurfaceData, SurfaceLine } from '../datautils';
2
+ import { OnUpdateEvent, OnRescaleEvent } from '../interfaces';
3
+ import { LayerOptions } from './base';
4
+ import { CanvasLayer } from './base/CanvasLayer';
5
+ declare type SurfacePaths = {
6
+ color: string;
7
+ path: Path2D;
8
+ };
9
+ export declare class GeomodelCanvasLayer<T extends SurfaceData> extends CanvasLayer<T> {
10
+ rescaleEvent: OnRescaleEvent;
11
+ surfaceAreasPaths: SurfacePaths[];
12
+ surfaceLinesPaths: SurfacePaths[];
13
+ maxDepth: number;
14
+ constructor(id?: string, options?: LayerOptions<T>);
15
+ onUpdate(event: OnUpdateEvent<T>): void;
16
+ onRescale(event: OnRescaleEvent): void;
17
+ updatePaths(): void;
18
+ render(): void;
19
+ colorToCSSColor(color: number | string): string;
20
+ generateSurfaceAreasPaths(): void;
21
+ generateSurfaceLinesPaths(): void;
22
+ drawPolygonPath: (color: string, path: Path2D) => void;
23
+ drawLinePath: (color: string, path: Path2D) => void;
24
+ createPolygons: (data: number[][]) => number[][];
25
+ generatePolygonPath: (polygon: number[]) => Path2D;
26
+ generateLinePaths: (s: SurfaceLine) => Path2D[];
27
+ }
28
+ export {};
@@ -0,0 +1,49 @@
1
+ import Vector2 from '@equinor/videx-vector2';
2
+ import { CanvasLayer } from './base/CanvasLayer';
3
+ import { OnUpdateEvent, OnRescaleEvent, OnMountEvent } from '../interfaces';
4
+ import { SurfaceArea, SurfaceLine, SurfaceData } from '../datautils';
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> {
17
+ defaultMargins: number;
18
+ defaultMinFontSize: number;
19
+ defaultMaxFontSize: number;
20
+ defaultTextColor: string;
21
+ defaultFont: string;
22
+ rescaleEvent: OnRescaleEvent;
23
+ isLabelsOnLeftSide: boolean;
24
+ maxFontSizeInWorldCoordinates: number;
25
+ isXFlipped: boolean;
26
+ areasWithAvgTopDepth: SurfaceAreaWithAvgTopDepth[];
27
+ constructor(id?: string, options?: GeomodelLayerLabelsOptions<T>);
28
+ get options(): GeomodelLayerLabelsOptions<T>;
29
+ setData(data: T): void;
30
+ generateSurfacesWithAvgDepth(): void;
31
+ onMount(event: OnMountEvent): void;
32
+ onUpdate(event: OnUpdateEvent<T>): void;
33
+ onRescale(event: OnRescaleEvent): void;
34
+ render(): void;
35
+ drawAreaLabels(): void;
36
+ drawLineLabels(): void;
37
+ drawAreaLabel: (surfaceArea: SurfaceArea, nextSurfaceArea: SurfaceArea, surfaces: SurfaceArea[], i: number) => void;
38
+ drawLineLabel: (s: SurfaceLine) => void;
39
+ colorToCSSColor(color: number | string): string;
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;
42
+ calcLineDir(data: number[][], offset: number, count: number, step: number, zFactor: number, initalVector?: Vector2, topLimit?: number, bottomLimit?: number): Vector2;
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;
44
+ updateXFlipped(): void;
45
+ getMarginsInWorldCoordinates(): number;
46
+ getSurfacesAreaEdges(): number[];
47
+ checkDrawLabelsOnLeftSide(): boolean;
48
+ }
49
+ export {};
@@ -0,0 +1,12 @@
1
+ import { PixiLayer } from './base/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
+ private isPreRendered;
6
+ onRescale(event: OnRescaleEvent): void;
7
+ onUpdate(event: OnUpdateEvent<T>): void;
8
+ preRender(): void;
9
+ createPolygons: (data: number[][]) => number[][];
10
+ generateAreaPolygon: (s: SurfaceArea) => void;
11
+ generateSurfaceLine: (s: SurfaceLine) => void;
12
+ }
@@ -0,0 +1,29 @@
1
+ import { CanvasLayer } from './base/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> {
16
+ private _offsetX;
17
+ private _offsetY;
18
+ constructor(id?: string, options?: GridLayerOptions<T>);
19
+ onUpdate(event: OnGridLayerUpdateEvent<T>): void;
20
+ onRescale(event: OnRescaleEvent): void;
21
+ render(event: OnRescaleEvent | OnGridLayerUpdateEvent<T>): void;
22
+ private renderTicksX;
23
+ private renderTicksY;
24
+ private mapMinorTicks;
25
+ get offsetX(): number;
26
+ set offsetX(offset: number);
27
+ get offsetY(): number;
28
+ set offsetY(offset: number);
29
+ }
@@ -0,0 +1,20 @@
1
+ import { CanvasLayer } from './base/CanvasLayer';
2
+ import { OnUpdateEvent, OnMountEvent, OnRescaleEvent } from '../interfaces';
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> {
15
+ img: HTMLImageElement;
16
+ onMount(event: OnMountEvent): void;
17
+ onUpdate(event: OnImageLayerUpdateEvent<T>): void;
18
+ onRescale(event: OnImageLayerRescaleEvent<T>): void;
19
+ render(event: OnImageLayerUpdateEvent<T>): void;
20
+ }
@@ -0,0 +1,94 @@
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, PerforationOptions } 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
+ perforationOptions?: PerforationOptions;
22
+ }
23
+ export declare class SchematicLayer<T extends SchematicData> extends PixiLayer<T> {
24
+ private internalLayerVisibility;
25
+ private cementTextureCache;
26
+ private cementSqueezeTextureCache;
27
+ private cementPlugTextureCache;
28
+ private holeTextureCache;
29
+ private screenTextureCache;
30
+ private tubingTextureCache;
31
+ private textureSymbolCacheArray;
32
+ private maxHoleDiameter;
33
+ protected scalingFactors: ScalingFactors;
34
+ constructor(ctx: PixiRenderApplication, id?: string, options?: SchematicLayerOptions<T>);
35
+ onUnmount(event?: OnUnmountEvent): void;
36
+ onUpdate(event: OnUpdateEvent<T>): void;
37
+ onRescale(event: OnRescaleEvent): void;
38
+ setVisibility(isVisible: boolean, layerId: string): void;
39
+ getInternalLayerIds(): string[];
40
+ /**
41
+ * Calculate yRatio without zFactor
42
+ * TODO consider to move this into ZoomPanHandler
43
+ */
44
+ protected yRatio(): number;
45
+ protected getZFactorScaledPathForPoints: (start: number, end: number) => [number, number][];
46
+ protected drawBigPolygon: (coords: Point[], color?: number) => void;
47
+ protected drawBigTexturedPolygon: (coords: Point[], t: Texture) => Graphics;
48
+ protected drawRope(path: Point[], texture: Texture, tint?: number): void;
49
+ /**
50
+ *
51
+ * @param leftPath Points for line on left side
52
+ * @param rightPath Points for line on right side
53
+ * @param lineColor Color of line
54
+ * @param lineWidth Width of line
55
+ * @param close If line should close in top and bottom to form a loop
56
+ * @param lineAlignment alignment of the line to draw, (0 = inner, 0.5 = middle, 1 = outer).
57
+ */
58
+ protected drawOutline(leftPath: Point[], rightPath: Point[], lineColor: number, lineWidth?: number, close?: boolean, lineAlignment?: number): void;
59
+ preRender(): void;
60
+ private updateSymbolCache;
61
+ private drawCementPlug;
62
+ private getCementPlugTexture;
63
+ private createPerforationTexture;
64
+ private prepareSymbolRenderObject;
65
+ private drawSymbolComponent;
66
+ private drawSVGRope;
67
+ private getSymbolTexture;
68
+ private drawHoleSize;
69
+ private drawHoleRope;
70
+ private getHoleTexture;
71
+ /**
72
+ * The rendering order of these components needs to be aligned
73
+ * @param casingRenderObjects
74
+ * @param cementRenderObject
75
+ * @param cementSqueezes
76
+ * @returns ordered rendering list
77
+ */
78
+ private sortCementAndCasingRenderObjects;
79
+ private drawComplexRope;
80
+ private drawCasing;
81
+ private createCasingTexture;
82
+ private drawShoe;
83
+ private generateShoe;
84
+ private createCementSqueezeShape;
85
+ private getCementTexture;
86
+ private createPerforationShape;
87
+ private getCementSqueezeTexture;
88
+ private drawScreen;
89
+ private drawTubing;
90
+ private getTubingTexture;
91
+ private getScreenTexture;
92
+ private drawCompletionRope;
93
+ }
94
+ export {};
@@ -0,0 +1,19 @@
1
+ /// <reference types="offscreencanvas" />
2
+ import { CanvasLayer } from './base/CanvasLayer';
3
+ import { OnUpdateEvent, OnMountEvent, OnRescaleEvent } from '../interfaces';
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> {
15
+ onMount(event: OnMountEvent): void;
16
+ onUpdate(event: OnUpdateEvent<SeismicCanvasData>): void;
17
+ onRescale(event: OnRescaleEvent): void;
18
+ render(): void;
19
+ }
@@ -0,0 +1,17 @@
1
+ import { SVGLayer } from './base/SVGLayer';
2
+ import { OnUpdateEvent, OnRescaleEvent } from '../interfaces';
3
+ import { LayerOptions } from '..';
4
+ export interface WellborepathLayerOptions<T extends [number, number][]> extends LayerOptions<T> {
5
+ stroke: string;
6
+ strokeWidth: string;
7
+ curveType?: string;
8
+ tension?: number;
9
+ }
10
+ export declare class WellborepathLayer<T extends [number, number][]> extends SVGLayer<T> {
11
+ rescaleEvent: OnRescaleEvent;
12
+ constructor(id?: string, options?: WellborepathLayerOptions<T>);
13
+ onUpdate(event: OnUpdateEvent<T>): void;
14
+ onRescale(event: OnRescaleEvent): void;
15
+ render(): void;
16
+ private renderWellborePath;
17
+ }
@@ -0,0 +1,19 @@
1
+ import { Layer } from './Layer';
2
+ import { OnMountEvent, OnUpdateEvent, OnResizeEvent, OnRescaleEvent } from '../../interfaces';
3
+ export declare abstract class CanvasLayer<T> extends Layer<T> {
4
+ ctx: CanvasRenderingContext2D;
5
+ elm: HTMLElement;
6
+ canvas: HTMLCanvasElement;
7
+ onOpacityChanged(_opacity: number): void;
8
+ onOrderChanged(_order: number): void;
9
+ onInteractivityChanged(_interactive: boolean): void;
10
+ setVisibility(visible: boolean): void;
11
+ updateStyle(visible?: boolean): void;
12
+ onMount(event: OnMountEvent): void;
13
+ onUnmount(): void;
14
+ onResize(event: OnResizeEvent): void;
15
+ onUpdate(event: OnUpdateEvent<T>): void;
16
+ resetTransform(): void;
17
+ setTransform(event: OnRescaleEvent): void;
18
+ clearCanvas(): void;
19
+ }
@@ -0,0 +1,13 @@
1
+ import { Selection } from 'd3-selection';
2
+ import { Layer } from './Layer';
3
+ import { OnMountEvent, OnResizeEvent } from '../../interfaces';
4
+ export declare abstract class HTMLLayer<T> extends Layer<T> {
5
+ elm: Selection<HTMLElement, unknown, null, undefined>;
6
+ onMount(event: OnMountEvent): void;
7
+ onUnmount(): void;
8
+ onResize(event: OnResizeEvent): void;
9
+ setVisibility(visible: boolean): void;
10
+ onOpacityChanged(opacity: number): void;
11
+ onOrderChanged(order: number): void;
12
+ onInteractivityChanged(shouldBeInteractive: boolean): void;
13
+ }
@@ -0,0 +1,69 @@
1
+ import { OnMountEvent, OnUnmountEvent, OnUpdateEvent, OnRescaleEvent, OnResizeEvent } from '../../interfaces';
2
+ import { IntersectionReferenceSystem } from '../../control';
3
+ export interface LayerOptions<T> {
4
+ order?: number;
5
+ layerOpacity?: number;
6
+ referenceSystem?: IntersectionReferenceSystem;
7
+ data?: T;
8
+ interactive?: boolean;
9
+ onMount?(event: OnMountEvent, layer: Layer<T>): void;
10
+ onUnmount?(event: OnUnmountEvent, layer: Layer<T>): void;
11
+ onUpdate?(event: OnUpdateEvent<T>, layer: Layer<T>): void;
12
+ onRescale?(event: OnRescaleEvent, layer: Layer<T>): void;
13
+ onResize?(event: OnResizeEvent, layer: Layer<T>): void;
14
+ }
15
+ export declare abstract class Layer<T> {
16
+ private _id;
17
+ private _order;
18
+ protected _options: LayerOptions<T>;
19
+ private loading;
20
+ private _element?;
21
+ private _opacity;
22
+ private _referenceSystem?;
23
+ private _data?;
24
+ private _visible;
25
+ private _interactive;
26
+ constructor(id?: string, options?: LayerOptions<T>);
27
+ get id(): string;
28
+ get element(): HTMLElement;
29
+ get options(): LayerOptions<T>;
30
+ set options(options: LayerOptions<T>);
31
+ set isLoading(loading: boolean);
32
+ get isLoading(): boolean;
33
+ set opacity(opacity: number);
34
+ get opacity(): number;
35
+ set order(order: number);
36
+ get order(): number;
37
+ set interactive(shouldBeInteractive: boolean);
38
+ get interactive(): boolean;
39
+ get referenceSystem(): IntersectionReferenceSystem;
40
+ set referenceSystem(referenceSystem: IntersectionReferenceSystem);
41
+ get data(): T;
42
+ set data(data: T);
43
+ get isVisible(): boolean;
44
+ getData(): T;
45
+ setData(data: T): void;
46
+ /**
47
+ * Clears data and (optionally) the reference system
48
+ * @param includeReferenceSystem - (optional) if true also removes reference system, default is true
49
+ */
50
+ clearData(includeReferenceSystem?: boolean): void;
51
+ setVisibility(visible: boolean, _layerId?: string): void;
52
+ onMount(event: OnMountEvent): void;
53
+ onUnmount(event?: OnUnmountEvent): void;
54
+ onResize(event: OnResizeEvent): void;
55
+ onUpdate(event: OnUpdateEvent<T>): void;
56
+ onRescale(event: OnRescaleEvent): void;
57
+ optionsRescale(event: OnRescaleEvent): void;
58
+ abstract onOpacityChanged(opacity: number): void;
59
+ abstract onOrderChanged(order: number): void;
60
+ abstract onInteractivityChanged(interactive: boolean): void;
61
+ /**
62
+ *
63
+ * Some layers might be built up of several internal layers that should individually be visibility-togglable.
64
+ * Reasons for having multiple internal layers might be tightly related data between layers or need for sharing render context
65
+ *
66
+ * @returns list of internal layer ids
67
+ */
68
+ getInternalLayerIds(): string[];
69
+ }