@giro3d/giro3d
Version:
A JS/WebGL framework for 3D geospatial data visualization
173 lines • 6.89 kB
TypeScript
import type Feature from 'ol/Feature';
import type { ColorRepresentation, Material, SpriteMaterial, Texture } from 'three';
import type { LineMaterial } from 'three/examples/jsm/lines/LineMaterial.js';
/**
* The units used to define line width. If `"pixels"`, the line has a constant width expressed in
* pixels. If `"world"`, the line has a variable apparent width expressed in CRS units, depending on
* the distance from the camera to the line.
*/
export type LineWidthUnit = 'pixels' | 'world';
export declare const DEFAULT_POINT_COLOR = "white";
/**
* The default point size, in pixels.
*/
export declare const DEFAULT_POINT_SIZE = 64;
export declare const DEFAULT_LINE_COLOR = "#4d69bf";
export declare const DEFAULT_LINE_WIDTH = 1;
export declare const DEFAULT_LINE_WIDTH_UNITS: LineWidthUnit;
export declare const DEFAULT_SURFACE_COLOR = "#87c6fa";
export type BaseStyle = {
/**
* The opacity of the style.
* @defaultValue 1
*/
opacity?: number;
/**
* Determine if [depth test](https://threejs.org/docs/#api/en/materials/Material.depthTest) is enabled.
*/
depthTest?: boolean;
/**
* The [render order](https://threejs.org/docs/?q=objec#api/en/core/Object3D.renderOrder) of objects with this style.
*
* Note: this value is **relative** to the host entity's own render order. For example, if a feature
* has a render order of 3, and the entity has a render order of 10, then the actual render order
* of the displayed mesh will be 13.
*/
renderOrder?: number;
};
/**
* Fill style for vector features.
*/
export type FillStyle = BaseStyle & {
/**
* The fill color.
* @defaultValue {@link DEFAULT_SURFACE_COLOR}
*/
color?: ColorRepresentation;
/**
* Whether to use shaded materials or flat materials.
* @defaultValue false
*/
shading?: boolean;
};
/**
* Stroke style for vector features.
*/
export type StrokeStyle = BaseStyle & {
/**
* The color of the line.
* @defaultValue {@link DEFAULT_LINE_COLOR}
*/
color?: ColorRepresentation;
/**
* The line width. If {@link lineWidthUnits} is `world`, the width is expressed in CRS units
* (typically meters). Otherwise the line width is expressed in pixels.
* @defaultValue {@link DEFAULT_LINE_WIDTH}
*/
lineWidth?: number;
/**
* Specifies how the line width is interpreted.If `"pixels"`, the width is expressed in pixels,
* and if `"world"`, the width is expressed in world units (typically meters).
* @defaultValue {@link DEFAULT_LINE_WIDTH_UNITS}
*/
lineWidthUnits?: LineWidthUnit;
};
/**
* Point style for vector features.
*/
export type PointStyle = BaseStyle & {
/**
* The color of the point.
* @defaultValue {@link DEFAULT_POINT_COLOR}
*/
color?: ColorRepresentation;
/**
* The image to use for the point. May be either a THREE.js texture
* or a URL to a remote image file.
* @defaultValue `undefined`
*/
image?: Texture | string | null;
/**
* The size of points, in pixels.
* @defaultValue {@link DEFAULT_POINT_SIZE}
*/
pointSize?: number;
/**
* If enabled, point size decreases with distance.
* See the THREE.js [documentation](https://threejs.org/docs/?q=sprite#api/en/materials/SpriteMaterial.sizeAttenuation) for more information.
* @defaultValue `false`
*/
sizeAttenuation?: boolean;
};
/**
* Returns a fill style where every property is defined, if necessary with default values.
* @param style - The partial style to process. If undefined, the default style is returned.
*/
export declare function getFullFillStyle(style?: Partial<FillStyle>): Required<FillStyle>;
/**
* Returns a point style where every property is defined, if necessary with default values.
* @param style - The partial style to process. If undefined, the default style is returned.
*/
export declare function getFullPointStyle(style?: Partial<PointStyle>): Required<PointStyle>;
/**
* Returns a stroke style where every property is defined, if necessary with default values.
* @param style - The partial style to process. If undefined, then the default style is returned.
*/
export declare function getFullStrokeStyle(style?: Partial<StrokeStyle>): Required<StrokeStyle>;
/**
* Returns a string that uniquely identify this style.
*/
export declare function hashStyle(prefix: string, style: Required<PointStyle | StrokeStyle | FillStyle>): string;
export type FeatureStyle = {
/**
* The fill style to apply to `Polygon`s and `MultiPolygon`s geometries.
*/
fill?: FillStyle;
/**
* The stroke style to apply to `LineString`s, `MultiLineString`s, `Polygon`s and `MultiPolygon`s.
*/
stroke?: StrokeStyle;
/**
* The style to apply to `Point`s and `MultiPoint`s.
*/
point?: PointStyle;
};
/**
* This callback is called just after a source data has been converted to a THREE.js Mesh, to
* style individual meshes from OpenLayers
* [Feature](https://openlayers.org/en/latest/apidoc/module-ol_Feature-Feature.html)s.
*
* @param feature - the feature to style
* @returns The style of the current feature
*/
export type FeatureStyleCallback = (feature: Feature) => FeatureStyle;
/**
* This callback can be used to generate elevation for a given OpenLayer
* [Feature](https://openlayers.org/en/latest/apidoc/module-ol_Feature-Feature.html) (typically from its properties).
*
* - If a single number is returned, it will be used for all vertices in the geometry.
* - If an array is returned, each value will be used to determine the height of the corresponding vertex in the geometry.
* Note that the cardinality of the array must be the same as the number of vertices in the geometry.
*/
export type FeatureElevationCallback = (feature: Feature) => Array<number> | number;
/**
* Callback used to generate extrusion to [ol.Feature](https://openlayers.org/en/latest/apidoc/module-ol_Feature-Feature.html).
*
* If one number is returned, it will be used for all vertices. If an array is returned, its
* cardinality must match the number of vertices and each value will be used for each vertex in
* order.
*/
export type FeatureExtrusionOffsetCallback = (feature: Feature) => number | number[];
/**
* Generator function for surfaces.
*/
export type SurfaceMaterialGenerator<S extends FillStyle = FillStyle, M extends Material = Material> = (style: Required<S>) => M;
/**
* Generator function for lines.
*/
export type LineMaterialGenerator<S extends StrokeStyle = StrokeStyle, M extends LineMaterial = LineMaterial> = (style: Required<S>) => M;
/**
* Generator function for points.
*/
export type PointMaterialGenerator<S extends PointStyle = PointStyle, M extends SpriteMaterial = SpriteMaterial> = (style: Required<S>) => M;
//# sourceMappingURL=FeatureTypes.d.ts.map