#![warn(missing_docs)]
#![cfg_attr(not(test), deny(clippy::unwrap_used))]
#[path = "math/bounds.rs"]
mod bounds;
#[path = "math/coord.rs"]
mod coord;
#[path = "math/elevation.rs"]
mod elevation;
#[path = "math/ellipsoid.rs"]
mod ellipsoid;
#[path = "math/equirectangular.rs"]
mod equirectangular;
#[path = "math/frustum.rs"]
mod frustum;
#[path = "math/geodesic.rs"]
mod geodesic;
#[path = "math/globe.rs"]
mod globe;
#[path = "math/mercator.rs"]
mod mercator;
#[path = "math/projection.rs"]
mod projection;
#[path = "math/tile.rs"]
mod tile;
#[path = "math/vertical_perspective.rs"]
mod vertical_perspective;
pub mod async_data;
mod camera;
mod camera_animator;
mod camera_projection;
pub mod cluster;
pub mod event_emitter;
pub mod expression;
pub(crate) mod geo_wrap;
#[cfg(feature = "geojson")]
pub mod geojson;
mod geometry;
pub mod geometry_ops;
pub mod gesture;
pub mod image_compare;
mod input;
pub mod interaction;
pub mod interaction_manager;
pub mod io;
mod layer;
pub mod layers;
pub mod loading_placeholder;
mod map_state;
pub mod models;
pub mod mvt;
pub mod picking;
mod pooled_tile_source;
pub mod query;
pub mod regression;
#[cfg(feature = "shapefile")]
pub mod shapefile_parser;
pub mod shapes;
mod simplify;
mod streamed_payload;
pub mod style;
#[cfg(feature = "style-json")]
pub mod style_json;
pub mod symbols;
pub mod terrain;
mod tessellator;
mod tile_cache;
mod tile_lifecycle;
mod tile_manager;
mod tile_request_coordinator;
mod tile_source;
mod tile_source_http;
mod tile_source_vector_http;
pub mod tilejson;
pub mod visualization;
pub mod precision_invariants;
#[cfg(test)]
mod support_contract;
#[cfg(test)]
mod visualization_contract;
pub extern crate self as rustial_math;
pub use bounds::{GeoBounds, WorldBounds};
pub use coord::{GeoCoord, WorldCoord};
pub use elevation::ElevationGrid;
pub use ellipsoid::Ellipsoid;
pub use equirectangular::Equirectangular;
pub use frustum::{
Frustum, Plane, PLANE_BOTTOM, PLANE_FAR, PLANE_LEFT, PLANE_NEAR, PLANE_RIGHT, PLANE_TOP,
};
pub use geodesic::{
geodesic_destination, geodesic_destination_on, geodesic_distance, geodesic_distance_on,
GeodesicResult, VincentyConvergenceError,
};
pub use globe::Globe;
pub use mercator::WebMercator;
pub use projection::Projection;
pub use tile::{
geo_to_tile, geo_to_tile_checked, tile_bounds_world, tile_to_geo, tile_xy_to_geo,
visible_tiles, visible_tiles_checked, visible_tiles_covering, visible_tiles_flat_view,
visible_tiles_flat_view_capped, visible_tiles_flat_view_capped_with_config,
visible_tiles_flat_view_refined_capped, visible_tiles_flat_view_refined_capped_with_config,
visible_tiles_flat_view_with_config, visible_tiles_frustum, visible_tiles_lod, CoveringCamera,
CoveringTilesOptions, FlatTileSelectionConfig, FlatTileView, TileCoord, TileId, MAX_ZOOM,
};
pub use vertical_perspective::VerticalPerspective;
pub use camera::{Camera, CameraConstraints, CameraController, CameraMode};
pub use camera_animator::{CameraAnimator, EaseToOptions, FlyToOptions};
pub use camera_projection::CameraProjection;
pub use input::{InputEvent, TouchContact, TouchPhase};
pub use interaction::{
InteractionButton, InteractionEvent, InteractionEventKind, InteractionModifiers,
InteractionTarget, InteractionTargetKind, PointerKind, ScreenPoint,
};
pub use interaction_manager::{InteractionConfig, InteractionManager};
pub use expression::{
BoolExpression, ExprEvalContext, Expression, NumericExpression, StringExpression,
};
pub use layer::{Layer, LayerId, LayerKind};
pub use layers::{
BackgroundLayer, CallbackFrameProvider, CircleInstanceData, DynamicImageOverlayLayer,
FrameData, FrameProvider, FrameProviderFactory, HillshadeLayer, HillshadeParams,
ImageOverlayData, ImageOverlayLayer, LayerStack, ModelLayer, PatternImage, TileLayer,
VectorLayer, VectorMeshData, VectorRenderMode, VectorStyle,
};
pub use style::{
atmospheric_clear_color,
circle_style_with_state,
compute_fog,
compute_lighting,
compute_shadow_cascades,
compute_sky,
fill_extrusion_style_with_state,
fill_style_with_state,
heatmap_style_with_state,
line_style_with_state,
symbol_style_with_state,
vector_style_with_state,
AmbientLight,
BackgroundStyleLayer,
CanvasSource,
CircleStyleLayer,
ComputedFog,
ComputedLighting,
ComputedShadow,
ComputedSky,
DirectionalLight,
FillExtrusionStyleLayer,
FillStyleLayer,
FogConfig,
FromFeatureStateProperty,
GeoJsonSource,
HeatmapStyleLayer,
HillshadeStyleLayer,
ImageSource,
LayerTransitionState,
LightConfig,
LightingMode,
LineStyleLayer,
MapStyle,
ModelSource,
ModelStyleLayer,
RasterSource,
RasterStyleLayer,
ResolvedTransitions,
ShadowConfig,
SkyConfig,
SkyType,
StyleDocument,
StyleError,
StyleEvalContext,
StyleEvalContextFull,
StyleLayer,
StyleLayerId,
StyleLayerMeta,
StyleProjection,
StyleSource,
StyleSourceId,
StyleSourceKind,
StyleValue,
SymbolStyleLayer,
TerrainSource,
TransitionSpec,
Transitioning,
VectorStyleLayer,
VectorTileSource,
VideoSource,
};
#[cfg(feature = "style-json")]
pub use style_json::{
parse_style_json, StyleSourceRegistry, StyleSpecDocument, StyleSpecError, StyleSpecLayer,
StyleSpecLayerType, StyleSpecProjection, StyleSpecProjectionType, StyleSpecSource,
StyleSpecSourceType, StyleSpecTerrain, StyleSpecTransition,
};
pub use event_emitter::{EventEmitter, ListenerId};
pub use loading_placeholder::{LoadingPlaceholder, PlaceholderGenerator, PlaceholderStyle};
pub use map_state::{
FitBoundsOptions, FitBoundsPadding, FrameOutput, MapState, TilePipelineDiagnostics,
};
pub use regression::{
TilePipelineRegressionEvaluation, TilePipelineRegressionParseError,
TilePipelineRegressionSample, TilePipelineRegressionSummary, TilePipelineRegressionThresholds,
TilePipelineRegressionViolation, TILE_PIPELINE_REGRESSION_CSV_HEADER,
};
pub use geometry::{
Feature, FeatureCollection, Geometry, LineString, MultiLineString, MultiPoint, MultiPolygon,
Point, Polygon, PropertyValue,
};
pub use cluster::{ClusterOptions, PointCluster};
pub use gesture::GestureRecognizer;
#[cfg(feature = "geojson")]
pub use geojson::{parse_geojson, GeoJsonError};
#[cfg(feature = "shapefile")]
pub use shapefile_parser::{parse_shapefile, ShapefileError};
pub use geometry_ops::{
bearing, geometry_bbox, geometry_centroid, initial_bearing, interpolate_great_circle,
linestring_length, polygon_area, ring_area,
};
pub use simplify::{simplify_douglas_peucker, simplify_polygon_ring};
pub use tessellator::{
stroke_line, stroke_line_styled, triangulate_polygon, triangulate_polygon_with_holes,
StrokeLineResult,
};
pub use pooled_tile_source::{
PooledRasterTileSourceConfig, PooledTileSource, DEFAULT_RASTER_TILE_URL,
DEFAULT_RASTER_TILE_USER_AGENT,
};
pub use tile_cache::{TileCache, TileCacheEntry, TileCacheStats};
pub use tile_lifecycle::{
TileLifecycleDiagnostics, TileLifecycleEvent, TileLifecycleEventKind, TileLifecycleRecord,
};
pub use tile_manager::{
TileManager, TileManagerCounters, TilePixelRect, TileSelectionConfig, TileSelectionStats,
TileTextureRegion, VisibleTile, VisibleTileSet,
};
pub use tile_request_coordinator::{
CoordinatorConfig, CoordinatorStats, SourcePriority, TileRequestCoordinator,
};
pub use tile_source::{
DecodedImage, RasterMipChain, RasterMipLevel, RawVectorPayload, RevalidationHint, TileData,
TileDecoder, TileError, TileFreshness, TileResponse, TileSource, TileSourceDiagnostics,
TileSourceFailureDiagnostics, VectorTileData,
};
pub use tile_source_http::HttpTileSource;
pub use tile_source_vector_http::HttpVectorTileSource;
pub use io::{FetchPool, HttpClient, HttpRequest, HttpResponse, SharedHttpClient};
#[cfg(all(feature = "disk-cache", not(target_arch = "wasm32")))]
pub use io::{DiskCache, DiskCacheError};
pub use terrain::{
build_terrain_descriptor, build_terrain_descriptor_with_source, build_terrain_mesh,
build_terrain_mesh_with_source, elevation_region_in_texture_space, expand_with_clamped_border,
interior_dims, materialize_terrain_mesh, patch_border_edge, patch_changed_tiles,
prepare_hillshade_raster, skirt_height, BackfillState, ElevationSource,
ElevationSourceDiagnostics, ElevationSourceFailureDiagnostics, FlatElevationSource,
HttpElevationSource, PreparedHillshadeRaster, QuantizedMeshSource, TerrainConfig,
TerrainDiagnostics, TerrainElevationTexture, TerrainError, TerrainManager, TerrainMeshData,
TerrainRgbEncoding, NEIGHBOR_OFFSETS,
};
pub use models::{AltitudeMode, ModelInstance, ModelLoadError, ModelMesh};
pub use symbols::{
cross_tile_index::{CrossTileSymbolIndex, SymbolCandidateEntry},
layout_symbol_glyphs, GlyphAtlas, GlyphAtlasEntry, GlyphKey, GlyphProvider, GlyphQuad,
GlyphRaster, ImageManager, PlacedSymbol, ProceduralGlyphProvider, SpriteImage, SpriteSheet,
SymbolAnchor, SymbolAssetDependencies, SymbolAssetRegistry, SymbolCandidate,
SymbolCollisionBox, SymbolIconTextFit, SymbolPlacement, SymbolPlacementConfig,
SymbolPlacementEngine, SymbolTextJustify, SymbolTextTransform, SymbolWritingMode,
};
pub use query::{
geometry_intersects_bbox, FeatureState, FeatureStateId, GeoBBox, QueriedFeature, QueryOptions,
};
pub use picking::{
HitCategory, HitProvenance, NonPickableLayerKind, PickHit, PickOptions, PickQuery, PickResult,
PickableLayerKind,
};
pub use visualization::{
ColorRamp, ColorStop, ColumnInstance, ColumnInstanceSet, ExtrusionParams, GeoGrid,
GridExtrusionLayer, GridScalarLayer, InstancedColumnLayer, LabeledStop, LegendSpec,
NormalizationMode, PointCloudLayer, PointInstance, PointInstanceSet, ScalarField2D,
VisualizationOverlay,
};
pub use image_compare::{compute_rmse, count_differing_pixels, differing_pixel_fraction};
#[cfg(feature = "style-json")]
pub use tilejson::{parse_tilejson, parse_tilejson_value};
pub use tilejson::{TileJson, TileJsonError, TileScheme, VectorLayerMeta};
pub use mvt::{decode_mvt, DecodedVectorTile, MvtDecodeOptions, MvtError};
pub use async_data::{
partition_features_by_tile, AsyncVisualizationPipeline, DataTaskPool, DataTaskResultReceiver,
MvtDecodeOutput, TerrainCacheKey, TerrainTaskInput, TerrainTaskOutput, ThreadDataTaskPool,
VectorBucketKey, VectorCacheKey, VectorTaskInput, VectorTaskOutput, VisualizationTaskOutput,
};
#[allow(dead_code)]
const _: () = {
fn assert_send_sync<T: Send + Sync>() {}
fn assertions() {
assert_send_sync::<GeoCoord>();
assert_send_sync::<WorldCoord>();
assert_send_sync::<GeoBounds>();
assert_send_sync::<WorldBounds>();
assert_send_sync::<Ellipsoid>();
assert_send_sync::<Frustum>();
assert_send_sync::<Plane>();
assert_send_sync::<TileId>();
assert_send_sync::<TileCoord>();
assert_send_sync::<FlatTileSelectionConfig>();
assert_send_sync::<FlatTileView>();
assert_send_sync::<CoveringCamera>();
assert_send_sync::<CoveringTilesOptions>();
assert_send_sync::<GeodesicResult>();
assert_send_sync::<ElevationGrid>();
assert_send_sync::<VincentyConvergenceError>();
assert_send_sync::<WebMercator>();
assert_send_sync::<Equirectangular>();
assert_send_sync::<Globe>();
assert_send_sync::<VerticalPerspective>();
assert_send_sync::<Camera>();
assert_send_sync::<CameraConstraints>();
assert_send_sync::<CameraMode>();
assert_send_sync::<CameraProjection>();
assert_send_sync::<CameraAnimator>();
assert_send_sync::<InputEvent>();
assert_send_sync::<BackgroundLayer>();
assert_send_sync::<HillshadeLayer>();
assert_send_sync::<LayerId>();
assert_send_sync::<LayerStack>();
assert_send_sync::<TileLayer>();
assert_send_sync::<VectorLayer>();
assert_send_sync::<ModelLayer>();
assert_send_sync::<VectorStyle>();
assert_send_sync::<VectorMeshData>();
assert_send_sync::<StyleDocument>();
assert_send_sync::<MapStyle>();
assert_send_sync::<MapState>();
assert_send_sync::<FrameOutput>();
assert_send_sync::<FeatureState>();
assert_send_sync::<FeatureStateId>();
assert_send_sync::<QueriedFeature>();
assert_send_sync::<QueryOptions>();
assert_send_sync::<PickQuery>();
assert_send_sync::<PickOptions>();
assert_send_sync::<PickHit>();
assert_send_sync::<PickResult>();
assert_send_sync::<Feature>();
assert_send_sync::<FeatureCollection>();
assert_send_sync::<Geometry>();
assert_send_sync::<PropertyValue>();
assert_send_sync::<TileCache>();
assert_send_sync::<TileCacheEntry>();
assert_send_sync::<TileCacheStats>();
assert_send_sync::<TileManager>();
assert_send_sync::<TileManagerCounters>();
assert_send_sync::<TilePixelRect>();
assert_send_sync::<TileSelectionConfig>();
assert_send_sync::<TileSelectionStats>();
assert_send_sync::<TilePipelineDiagnostics>();
assert_send_sync::<TileTextureRegion>();
assert_send_sync::<VisibleTile>();
assert_send_sync::<VisibleTileSet>();
assert_send_sync::<DecodedImage>();
assert_send_sync::<RasterMipChain>();
assert_send_sync::<RasterMipLevel>();
assert_send_sync::<TileData>();
assert_send_sync::<TileError>();
assert_send_sync::<TileSourceDiagnostics>();
assert_send_sync::<PooledTileSource>();
assert_send_sync::<VectorTileData>();
assert_send_sync::<TileJson>();
assert_send_sync::<TileJsonError>();
assert_send_sync::<TileScheme>();
assert_send_sync::<VectorLayerMeta>();
assert_send_sync::<MvtDecodeOptions>();
assert_send_sync::<MvtError>();
assert_send_sync::<FetchPool>();
assert_send_sync::<HttpRequest>();
assert_send_sync::<HttpResponse>();
assert_send_sync::<TerrainConfig>();
assert_send_sync::<TerrainError>();
assert_send_sync::<TerrainManager>();
assert_send_sync::<TerrainMeshData>();
assert_send_sync::<PreparedHillshadeRaster>();
assert_send_sync::<TerrainRgbEncoding>();
assert_send_sync::<TerrainSource>();
assert_send_sync::<VectorTileSource>();
assert_send_sync::<ImageSource>();
assert_send_sync::<VideoSource>();
assert_send_sync::<CanvasSource>();
assert_send_sync::<GlyphAtlas>();
assert_send_sync::<GlyphAtlasEntry>();
assert_send_sync::<GlyphKey>();
assert_send_sync::<GlyphRaster>();
assert_send_sync::<ImageManager>();
assert_send_sync::<PlacedSymbol>();
assert_send_sync::<ProceduralGlyphProvider>();
assert_send_sync::<SpriteImage>();
assert_send_sync::<SpriteSheet>();
assert_send_sync::<SymbolAnchor>();
assert_send_sync::<SymbolAssetDependencies>();
assert_send_sync::<SymbolAssetRegistry>();
assert_send_sync::<SymbolCandidate>();
assert_send_sync::<SymbolCollisionBox>();
assert_send_sync::<SymbolPlacementConfig>();
assert_send_sync::<SymbolPlacementEngine>();
assert_send_sync::<SymbolWritingMode>();
assert_send_sync::<ModelInstance>();
assert_send_sync::<ModelMesh>();
assert_send_sync::<AltitudeMode>();
assert_send_sync::<GeoJsonSource>();
assert_send_sync::<ModelSource>();
assert_send_sync::<GeoGrid>();
assert_send_sync::<ScalarField2D>();
assert_send_sync::<ColorRamp>();
assert_send_sync::<ColorStop>();
assert_send_sync::<LegendSpec>();
assert_send_sync::<ColumnInstance>();
assert_send_sync::<ColumnInstanceSet>();
assert_send_sync::<PointInstance>();
assert_send_sync::<PointInstanceSet>();
assert_send_sync::<GridScalarLayer>();
assert_send_sync::<GridExtrusionLayer>();
assert_send_sync::<InstancedColumnLayer>();
assert_send_sync::<PointCloudLayer>();
assert_send_sync::<VisualizationOverlay>();
}
};