pub struct MapTileCache {
pub layer: MapTileLayer,
pub viewport: MapViewport,
pub tiles: BTreeMap<MapTileId, TileEntry>,
pub fetch_callback: Option<ThreadCallback>,
pub drag_anchor: Option<LogicalPosition>,
pub pinch_anchor: Option<f32>,
pub on_viewport_changed: OptionMapViewportChanged,
pub press_origin: Option<LogicalPosition>,
pub on_pin_tap: OptionMapPinTap,
}Fields§
§layer: MapTileLayer§viewport: MapViewport§tiles: BTreeMap<MapTileId, TileEntry>Ready(svg) once the tile has been fetched + decoded;
Pending while queued, Fetching while a worker thread is
in flight; absent otherwise. BTreeMap for deterministic
iteration so the debug log + e2e snapshots are stable.
fetch_callback: Option<ThreadCallback>Worker thread entry point that fetches + decodes one tile.
Supplied by MapWidget::dom_with_fetch (the caller, usually
azul_dll’s map-tiles glue, provides this because the MVT
decoder lives in azul-dll, which azul-layout can’t depend
on). None means “no fetch wired”: tiles stay Pending and
the placeholder grid renders. The merge callback carries this
across relayout. Held as the ThreadCallback wrapper (not the
raw fn pointer) so it round-trips through the FFI codegen.
drag_anchor: Option<LogicalPosition>Pixel coordinates of the cursor at the last mouse-down /
touch-down on the widget. Some while a drag is in flight,
None between drags. The framework consults this on every
mouse-move to derive the pixel delta, which then converts to a
lat/lon delta via the Web Mercator inverse.
pinch_anchor: Option<f32>Pinch reference distance (pixels) — the two-finger separation
the last time a pinch event was observed for this widget.
Some while a pinch is in flight, None between gestures.
On each subsequent pinch update we compute
dz = log2(current_distance / pinch_anchor) and add it to
viewport.zoom, then reset the anchor to the current
distance — so the gesture stays continuous across many frames.
on_viewport_changed: OptionMapViewportChangedThe user’s on_viewport_changed hook, copied here from the builder
so the pan / pinch callbacks can fire it. Carried across relayout.
press_origin: Option<LogicalPosition>Pixel position of the last pointer-down (the original press point, not overwritten by pan moves). Used to tell a tap from a drag in pointer-up.
on_pin_tap: OptionMapPinTapThe user’s on_pin_tap hook, copied from the builder so pointer-up can
fire it. Carried across relayout.
Implementations§
Source§impl MapTileCache
impl MapTileCache
pub fn new(layer: MapTileLayer, viewport: MapViewport) -> Self
Sourcepub fn mark_tile_ready(&mut self, tile: MapTileId, svg: AzString)
pub fn mark_tile_ready(&mut self, tile: MapTileId, svg: AzString)
Worker-thread → main-thread write path. Set the decoded SVG for
a tile (called from map_tile_writeback). Stamps Ready.
Sourcepub fn mark_tile_failed(&mut self, tile: MapTileId, error: AzString)
pub fn mark_tile_failed(&mut self, tile: MapTileId, error: AzString)
Mark a tile’s fetch as failed so the grid doesn’t re-spawn it every frame.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for MapTileCache
impl RefUnwindSafe for MapTileCache
impl Send for MapTileCache
impl Sync for MapTileCache
impl Unpin for MapTileCache
impl UnsafeUnpin for MapTileCache
impl UnwindSafe for MapTileCache
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read more