1#![warn(missing_docs)]
2#![cfg_attr(not(test), deny(clippy::unwrap_used))]
3#[path = "math/bounds.rs"]
76mod bounds;
77#[path = "math/coord.rs"]
78mod coord;
79#[path = "math/elevation.rs"]
80mod elevation;
81#[path = "math/ellipsoid.rs"]
82mod ellipsoid;
83#[path = "math/equirectangular.rs"]
84mod equirectangular;
85#[path = "math/frustum.rs"]
86mod frustum;
87#[path = "math/geodesic.rs"]
88mod geodesic;
89#[path = "math/globe.rs"]
90mod globe;
91#[path = "math/mercator.rs"]
92mod mercator;
93#[path = "math/projection.rs"]
94mod projection;
95#[path = "math/tile.rs"]
96mod tile;
97#[path = "math/vertical_perspective.rs"]
98mod vertical_perspective;
99
100mod camera;
101mod camera_animator;
102mod camera_projection;
103pub(crate) mod geo_wrap;
104pub mod async_data;
105pub mod cluster;
106pub mod expression;
107#[cfg(feature = "geojson")]
108pub mod geojson;
109#[cfg(feature = "shapefile")]
110pub mod shapefile_parser;
111mod geometry;
112pub mod event_emitter;
113pub mod gesture;
114pub mod geometry_ops;
115pub mod image_compare;
116mod input;
117pub mod interaction;
118pub mod interaction_manager;
119pub mod io;
120mod layer;
121pub mod layers;
122mod map_state;
123pub mod models;
124pub mod picking;
125pub mod query;
126pub mod regression;
127pub mod shapes;
128mod simplify;
129mod streamed_payload;
130pub mod terrain;
131mod tessellator;
132mod tile_cache;
133mod tile_lifecycle;
134mod tile_manager;
135mod tile_source;
136mod tile_source_http;
137mod tile_source_vector_http;
138mod pooled_tile_source;
139mod tile_request_coordinator;
140pub mod tilejson;
141pub mod mvt;
142pub mod style;
143#[cfg(feature = "style-json")]
144pub mod style_json;
145pub mod symbols;
146pub mod visualization;
147pub mod loading_placeholder;
148
149pub mod precision_invariants;
150
151#[cfg(test)]
152mod support_contract;
153#[cfg(test)]
154mod visualization_contract;
155
156pub extern crate self as rustial_math;
157
158pub use bounds::{GeoBounds, WorldBounds};
163pub use coord::{GeoCoord, WorldCoord};
164pub use elevation::ElevationGrid;
165pub use ellipsoid::Ellipsoid;
166pub use equirectangular::Equirectangular;
167pub use frustum::{
168 Frustum, Plane, PLANE_BOTTOM, PLANE_FAR, PLANE_LEFT, PLANE_NEAR, PLANE_RIGHT, PLANE_TOP,
169};
170pub use geodesic::{
171 GeodesicResult, VincentyConvergenceError, geodesic_destination, geodesic_destination_on,
172 geodesic_distance, geodesic_distance_on,
173};
174pub use globe::Globe;
175pub use mercator::WebMercator;
176pub use projection::Projection;
177pub use tile::{
178 CoveringCamera, CoveringTilesOptions, FlatTileSelectionConfig, FlatTileView, MAX_ZOOM,
179 TileCoord, TileId, geo_to_tile, geo_to_tile_checked, tile_bounds_world, tile_to_geo,
180 tile_xy_to_geo, visible_tiles, visible_tiles_checked, visible_tiles_covering,
181 visible_tiles_flat_view, visible_tiles_flat_view_capped,
182 visible_tiles_flat_view_capped_with_config, visible_tiles_flat_view_refined_capped,
183 visible_tiles_flat_view_refined_capped_with_config, visible_tiles_flat_view_with_config,
184 visible_tiles_frustum, visible_tiles_lod,
185};
186pub use vertical_perspective::VerticalPerspective;
187
188pub use camera::{Camera, CameraConstraints, CameraController, CameraMode};
193pub use camera_animator::{CameraAnimator, EaseToOptions, FlyToOptions};
194pub use camera_projection::CameraProjection;
195pub use input::{InputEvent, TouchContact, TouchPhase};
196pub use interaction::{
197 InteractionButton, InteractionEvent, InteractionEventKind, InteractionModifiers,
198 InteractionTarget, InteractionTargetKind, PointerKind, ScreenPoint,
199};
200pub use interaction_manager::{InteractionConfig, InteractionManager};
201
202pub use layer::{Layer, LayerId, LayerKind};
207pub use layers::{BackgroundLayer, CallbackFrameProvider, CircleInstanceData, DynamicImageOverlayLayer, FrameData, FrameProvider, FrameProviderFactory, HillshadeLayer, HillshadeParams, ImageOverlayData, ImageOverlayLayer, LayerStack, ModelLayer, PatternImage, TileLayer, VectorLayer, VectorMeshData, VectorRenderMode, VectorStyle};
208pub use style::{
209 BackgroundStyleLayer, CircleStyleLayer, FillExtrusionStyleLayer, FillStyleLayer,
210 FromFeatureStateProperty, GeoJsonSource, HeatmapStyleLayer, HillshadeStyleLayer,
211 LineStyleLayer, MapStyle, ModelSource, ModelStyleLayer, RasterSource, RasterStyleLayer,
212 StyleDocument, StyleError, StyleEvalContext, StyleEvalContextFull, StyleLayer, StyleLayerId,
213 StyleLayerMeta, StyleProjection, StyleSource, StyleSourceId, StyleSourceKind, StyleValue,
214 SymbolStyleLayer, TerrainSource, VectorStyleLayer, VectorTileSource, ImageSource,
215 VideoSource, CanvasSource,
216 FogConfig, ComputedFog, atmospheric_clear_color, compute_fog,
218 circle_style_with_state, fill_extrusion_style_with_state, fill_style_with_state,
220 heatmap_style_with_state, line_style_with_state, symbol_style_with_state,
221 vector_style_with_state,
222};
223pub use expression::{
224 Expression, ExprEvalContext, NumericExpression, StringExpression, BoolExpression,
225};
226#[cfg(feature = "style-json")]
227pub use style_json::{
228 parse_style_json, StyleSourceRegistry, StyleSpecDocument, StyleSpecError,
229 StyleSpecLayer, StyleSpecLayerType, StyleSpecSource, StyleSpecSourceType,
230 StyleSpecProjection, StyleSpecProjectionType, StyleSpecTerrain,
231};
232
233pub use map_state::{
238 FitBoundsOptions, FitBoundsPadding, FrameOutput, MapState, TilePipelineDiagnostics,
239};
240pub use event_emitter::{EventEmitter, ListenerId};
241pub use loading_placeholder::{LoadingPlaceholder, PlaceholderGenerator, PlaceholderStyle};
242pub use regression::{
243 TilePipelineRegressionEvaluation, TilePipelineRegressionParseError,
244 TilePipelineRegressionSample, TilePipelineRegressionSummary,
245 TilePipelineRegressionThresholds, TilePipelineRegressionViolation,
246 TILE_PIPELINE_REGRESSION_CSV_HEADER,
247};
248
249pub use geometry::{
254 Feature, FeatureCollection, Geometry, LineString, MultiLineString, MultiPoint, MultiPolygon,
255 Point, Polygon, PropertyValue,
256};
257
258pub use cluster::{ClusterOptions, PointCluster};
259pub use gesture::GestureRecognizer;
260
261#[cfg(feature = "geojson")]
262pub use geojson::{parse_geojson, GeoJsonError};
263
264#[cfg(feature = "shapefile")]
265pub use shapefile_parser::{parse_shapefile, ShapefileError};
266
267pub use simplify::{simplify_douglas_peucker, simplify_polygon_ring};
268pub use tessellator::{stroke_line, stroke_line_styled, StrokeLineResult, triangulate_polygon, triangulate_polygon_with_holes};
269pub use geometry_ops::{
270 bearing, geometry_bbox, geometry_centroid, initial_bearing,
271 interpolate_great_circle, linestring_length, polygon_area, ring_area,
272};
273
274pub use tile_cache::{TileCache, TileCacheEntry, TileCacheStats};
279pub use tile_lifecycle::{
280 TileLifecycleDiagnostics, TileLifecycleEvent, TileLifecycleEventKind,
281 TileLifecycleRecord,
282};
283pub use tile_manager::{
284 TileManager, TileManagerCounters, TilePixelRect, TileSelectionConfig, TileSelectionStats,
285 TileTextureRegion, VisibleTile, VisibleTileSet,
286};
287pub use tile_request_coordinator::{
288 CoordinatorConfig, CoordinatorStats, SourcePriority, TileRequestCoordinator,
289};
290pub use tile_source::{
291 DecodedImage, RasterMipChain, RasterMipLevel, RawVectorPayload, RevalidationHint, TileData,
292 TileDecoder, TileError, TileFreshness, TileResponse, TileSource, TileSourceDiagnostics,
293 TileSourceFailureDiagnostics, VectorTileData,
294};
295pub use tile_source_http::HttpTileSource;
296pub use tile_source_vector_http::HttpVectorTileSource;
297pub use pooled_tile_source::{
298 PooledRasterTileSourceConfig, PooledTileSource, DEFAULT_RASTER_TILE_URL,
299 DEFAULT_RASTER_TILE_USER_AGENT,
300};
301
302pub use io::{FetchPool, HttpClient, HttpRequest, HttpResponse, SharedHttpClient};
307
308#[cfg(all(feature = "disk-cache", not(target_arch = "wasm32")))]
309pub use io::{DiskCache, DiskCacheError};
310
311pub use terrain::{
316 expand_with_clamped_border, interior_dims, patch_border_edge, patch_changed_tiles,
317 BackfillState, NEIGHBOR_OFFSETS,
318 build_terrain_descriptor, build_terrain_descriptor_with_source, build_terrain_mesh,
319 build_terrain_mesh_with_source, elevation_region_in_texture_space, materialize_terrain_mesh,
320 prepare_hillshade_raster, skirt_height, ElevationSource, ElevationSourceDiagnostics,
321 ElevationSourceFailureDiagnostics, FlatElevationSource, HttpElevationSource,
322 PreparedHillshadeRaster, QuantizedMeshSource, TerrainConfig,
323 TerrainDiagnostics, TerrainElevationTexture, TerrainError, TerrainManager, TerrainMeshData,
324 TerrainRgbEncoding,
325};
326
327pub use models::{AltitudeMode, ModelInstance, ModelLoadError, ModelMesh};
332
333pub use symbols::{
338 GlyphAtlas, GlyphAtlasEntry, GlyphKey, GlyphProvider, GlyphQuad, GlyphRaster, ImageManager,
339 PlacedSymbol, ProceduralGlyphProvider, SpriteImage, SpriteSheet,
340 SymbolAnchor, SymbolAssetDependencies, SymbolAssetRegistry, SymbolCandidate,
341 SymbolCollisionBox, SymbolPlacementConfig, SymbolPlacementEngine,
342 SymbolIconTextFit, SymbolPlacement, SymbolTextJustify, SymbolTextTransform,
343 SymbolWritingMode,
344 layout_symbol_glyphs,
345 cross_tile_index::{CrossTileSymbolIndex, SymbolCandidateEntry},
346};
347
348pub use query::{
353 FeatureState, FeatureStateId, GeoBBox, QueriedFeature, QueryOptions,
354 geometry_intersects_bbox,
355};
356
357pub use picking::{
362 HitCategory, HitProvenance, NonPickableLayerKind, PickHit, PickOptions, PickQuery,
363 PickResult, PickableLayerKind,
364};
365
366pub use visualization::{
371 ColorRamp, ColorStop, ColumnInstance, ColumnInstanceSet, ExtrusionParams,
372 GeoGrid, GridExtrusionLayer, GridScalarLayer, InstancedColumnLayer,
373 LabeledStop, LegendSpec, NormalizationMode, PointCloudLayer, PointInstance,
374 PointInstanceSet, ScalarField2D, VisualizationOverlay,
375};
376
377pub use image_compare::{compute_rmse, count_differing_pixels, differing_pixel_fraction};
382
383pub use tilejson::{TileJson, TileJsonError, TileScheme, VectorLayerMeta};
388#[cfg(feature = "style-json")]
389pub use tilejson::{parse_tilejson, parse_tilejson_value};
390
391pub use mvt::{decode_mvt, DecodedVectorTile, MvtDecodeOptions, MvtError};
396
397pub use async_data::{
402 DataTaskPool, DataTaskResultReceiver, ThreadDataTaskPool,
403 TerrainTaskInput, TerrainTaskOutput, TerrainCacheKey,
404 VectorTaskInput, VectorTaskOutput, VectorCacheKey,
405 VectorBucketKey, partition_features_by_tile,
406 MvtDecodeOutput,
407 AsyncVisualizationPipeline, VisualizationTaskOutput,
408};
409
410#[allow(dead_code)]
419const _: () = {
420 fn assert_send_sync<T: Send + Sync>() {}
421 fn assertions() {
422 assert_send_sync::<GeoCoord>();
424 assert_send_sync::<WorldCoord>();
425 assert_send_sync::<GeoBounds>();
426 assert_send_sync::<WorldBounds>();
427 assert_send_sync::<Ellipsoid>();
428 assert_send_sync::<Frustum>();
429 assert_send_sync::<Plane>();
430 assert_send_sync::<TileId>();
431 assert_send_sync::<TileCoord>();
432 assert_send_sync::<FlatTileSelectionConfig>();
433 assert_send_sync::<FlatTileView>();
434 assert_send_sync::<CoveringCamera>();
435 assert_send_sync::<CoveringTilesOptions>();
436 assert_send_sync::<GeodesicResult>();
437 assert_send_sync::<ElevationGrid>();
438 assert_send_sync::<VincentyConvergenceError>();
439 assert_send_sync::<WebMercator>();
440 assert_send_sync::<Equirectangular>();
441 assert_send_sync::<Globe>();
442 assert_send_sync::<VerticalPerspective>();
443
444 assert_send_sync::<Camera>();
446 assert_send_sync::<CameraConstraints>();
447 assert_send_sync::<CameraMode>();
448 assert_send_sync::<CameraProjection>();
449 assert_send_sync::<CameraAnimator>();
450 assert_send_sync::<InputEvent>();
451
452 assert_send_sync::<BackgroundLayer>();
454 assert_send_sync::<HillshadeLayer>();
455 assert_send_sync::<LayerId>();
456 assert_send_sync::<LayerStack>();
457 assert_send_sync::<TileLayer>();
458 assert_send_sync::<VectorLayer>();
459 assert_send_sync::<ModelLayer>();
460 assert_send_sync::<VectorStyle>();
461 assert_send_sync::<VectorMeshData>();
462 assert_send_sync::<StyleDocument>();
463 assert_send_sync::<MapStyle>();
464
465 assert_send_sync::<MapState>();
467 assert_send_sync::<FrameOutput>();
468 assert_send_sync::<FeatureState>();
469 assert_send_sync::<FeatureStateId>();
470 assert_send_sync::<QueriedFeature>();
471 assert_send_sync::<QueryOptions>();
472
473 assert_send_sync::<PickQuery>();
475 assert_send_sync::<PickOptions>();
476 assert_send_sync::<PickHit>();
477 assert_send_sync::<PickResult>();
478
479 assert_send_sync::<Feature>();
481 assert_send_sync::<FeatureCollection>();
482 assert_send_sync::<Geometry>();
483 assert_send_sync::<PropertyValue>();
484
485 assert_send_sync::<TileCache>();
487 assert_send_sync::<TileCacheEntry>();
488 assert_send_sync::<TileCacheStats>();
489 assert_send_sync::<TileManager>();
490 assert_send_sync::<TileManagerCounters>();
491 assert_send_sync::<TilePixelRect>();
492 assert_send_sync::<TileSelectionConfig>();
493 assert_send_sync::<TileSelectionStats>();
494 assert_send_sync::<TilePipelineDiagnostics>();
495 assert_send_sync::<TileTextureRegion>();
496 assert_send_sync::<VisibleTile>();
497 assert_send_sync::<VisibleTileSet>();
498 assert_send_sync::<DecodedImage>();
499 assert_send_sync::<RasterMipChain>();
500 assert_send_sync::<RasterMipLevel>();
501 assert_send_sync::<TileData>();
502 assert_send_sync::<TileError>();
503 assert_send_sync::<TileSourceDiagnostics>();
504 assert_send_sync::<PooledTileSource>();
505 assert_send_sync::<VectorTileData>();
506
507 assert_send_sync::<TileJson>();
509 assert_send_sync::<TileJsonError>();
510 assert_send_sync::<TileScheme>();
511 assert_send_sync::<VectorLayerMeta>();
512
513 assert_send_sync::<MvtDecodeOptions>();
515 assert_send_sync::<MvtError>();
516
517 assert_send_sync::<FetchPool>();
519 assert_send_sync::<HttpRequest>();
520 assert_send_sync::<HttpResponse>();
521
522 assert_send_sync::<TerrainConfig>();
524 assert_send_sync::<TerrainError>();
525 assert_send_sync::<TerrainManager>();
526 assert_send_sync::<TerrainMeshData>();
527 assert_send_sync::<PreparedHillshadeRaster>();
528 assert_send_sync::<TerrainRgbEncoding>();
529 assert_send_sync::<TerrainSource>();
530 assert_send_sync::<VectorTileSource>();
531 assert_send_sync::<ImageSource>();
532 assert_send_sync::<VideoSource>();
533 assert_send_sync::<CanvasSource>();
534 assert_send_sync::<GlyphAtlas>();
535 assert_send_sync::<GlyphAtlasEntry>();
536 assert_send_sync::<GlyphKey>();
537 assert_send_sync::<GlyphRaster>();
538 assert_send_sync::<ImageManager>();
539 assert_send_sync::<PlacedSymbol>();
540 assert_send_sync::<ProceduralGlyphProvider>();
541 assert_send_sync::<SpriteImage>();
542 assert_send_sync::<SpriteSheet>();
543 assert_send_sync::<SymbolAnchor>();
544 assert_send_sync::<SymbolAssetDependencies>();
545 assert_send_sync::<SymbolAssetRegistry>();
546 assert_send_sync::<SymbolCandidate>();
547 assert_send_sync::<SymbolCollisionBox>();
548 assert_send_sync::<SymbolPlacementConfig>();
549 assert_send_sync::<SymbolPlacementEngine>();
550 assert_send_sync::<SymbolWritingMode>();
551
552 assert_send_sync::<ModelInstance>();
554 assert_send_sync::<ModelMesh>();
555 assert_send_sync::<AltitudeMode>();
556 assert_send_sync::<GeoJsonSource>();
557 assert_send_sync::<ModelSource>();
558
559 assert_send_sync::<GeoGrid>();
561 assert_send_sync::<ScalarField2D>();
562 assert_send_sync::<ColorRamp>();
563 assert_send_sync::<ColorStop>();
564 assert_send_sync::<LegendSpec>();
565 assert_send_sync::<ColumnInstance>();
566 assert_send_sync::<ColumnInstanceSet>();
567 assert_send_sync::<PointInstance>();
568 assert_send_sync::<PointInstanceSet>();
569 assert_send_sync::<GridScalarLayer>();
570 assert_send_sync::<GridExtrusionLayer>();
571 assert_send_sync::<InstancedColumnLayer>();
572 assert_send_sync::<PointCloudLayer>();
573 assert_send_sync::<VisualizationOverlay>();
574 }
575};