UNPKG

@equinor/videx-map

Version:

Component for Pixi-overlay in Leaflet.

95 lines (94 loc) 3.25 kB
import * as PIXI from 'pixi.js'; import Vector2 from '@equinor/videx-vector2'; import { pixiOverlayBase } from '../pixiOverlayInterfaces'; import { MeshData, MeshNormalData } from '../utils/Mesh'; import GeoJSONLabels from './labels'; import TriangleDictionary from '../utils/TriangleDictionary'; import { FeatureProps, FeatureStyle } from '.'; import { ResizeConfig, LabelResizeConfig } from '../ResizeConfigInterface'; type vec3 = [number, number, number]; interface FillUniform { col1: vec3; col2: vec3; opacity: number; hashed: boolean; hashDisp: number; hashWidth: number; } interface OutlineUniform { color: vec3; outlineWidth: number; } export interface FeatureMesh { fill: { mesh: PIXI.Mesh; uniform: FillUniform; }; outline: { mesh: PIXI.Mesh; uniform: OutlineUniform; }; } /** Interface for feature config. */ interface Config { /** Initial scale of feature hash (Default: 1.0). */ initialHash?: number; /** Minimum scale of feature hash (Default: 0.0). */ minHash?: number; /** Maximum scale of feature hash (Default: Infinity). */ maxHash?: number; /**Label font family, default Arial */ labelFontFamily?: string; /**Label font size, default 64 */ labelFontSize?: number; /**Label font weight, default 600 */ labelFontWeight?: string; /**Label fill color, default 0x454545 */ labelColor?: string | number; /**Label alignment, default Center */ labelAlign?: string; /** Resize configuration for outline. */ outlineResize?: ResizeConfig; /** Resize configuration for labels. */ labelResize?: LabelResizeConfig; } /** Container for GeoJSON Polygon features. */ export default class GeoJSONMultiPolygon { /** Vertex shader for the fill. */ static vertexShaderFill: string; /** Fragment shader for the fill. */ static fragmentShaderFill: string; /** Vertex shader for the outlines. */ static vertexShaderOutline: string; /** Fragment shader for the outlines. */ static fragmentShaderOutline: string; /** Collection of features with meshes. */ features: FeatureMesh[]; /** Settings for how to render data. */ config: Config; container: PIXI.Container; pixiOverlay: pixiOverlayBase; dict: TriangleDictionary<any>; textStyle: PIXI.TextStyle; labels: GeoJSONLabels; currentZoom: number; constructor(root: PIXI.Container, labelRoot: PIXI.Container, pixiOverlay: pixiOverlayBase, config?: Config); add(feature: GeoJSON.Feature, props: (feature: object) => FeatureProps): void; /** * Draw each polygon in a polygon collection. * @param polygons */ drawPolygons(container: PIXI.Container, meshData: MeshData, outlineData: MeshNormalData, featureStyle: FeatureStyle, zIndex: number): FeatureMesh; drawLabels(): void; /** * Project a collection of polygons. * @param points Points within polygons * @returns Projected polygons */ projectPolygons(points: [number, number][]): Vector2[]; resize(zoom: number): void; testPosition(pos: Vector2): number; getOutlineRadius(zoom?: number): number; getLabelSize(zoom?: number): number; } export {};