Files
gpx.studio/gpx-rs/src/gpx/chunk.rs
T

62 lines
1.1 KiB
Rust
Raw Normal View History

2026-10-01 18:42:31 +02:00
use uuid::Uuid;
2026-09-23 19:53:39 +02:00
use crate::gpx::{Trackpoint, Waypoint};
static MAX_TRKPT_CHUNK_SIZE: usize = 4096;
2026-10-02 18:06:45 +02:00
#[derive(Debug, PartialEq, Eq)]
pub struct TrackpointChunkId(Uuid);
impl Default for TrackpointChunkId {
fn default() -> Self {
Self(Uuid::new_v4())
}
2026-09-23 19:53:39 +02:00
}
2026-10-02 18:06:45 +02:00
#[derive(Debug, Default)]
pub struct TrackpointChunk {
pub id: TrackpointChunkId,
pub trkpt: Vec<Trackpoint>,
2026-10-01 18:42:31 +02:00
}
impl PartialEq for TrackpointChunk {
fn eq(&self, other: &Self) -> bool {
self.id == other.id
}
}
2026-09-23 19:53:39 +02:00
impl TrackpointChunk {
pub fn is_full(&self) -> bool {
self.trkpt.len() == MAX_TRKPT_CHUNK_SIZE
}
}
2026-10-02 18:06:45 +02:00
#[derive(Debug, PartialEq, Eq)]
pub struct WaypointChunkId(Uuid);
2026-09-23 19:53:39 +02:00
2026-10-02 18:06:45 +02:00
impl Default for WaypointChunkId {
fn default() -> Self {
Self(Uuid::new_v4())
}
2026-09-23 19:53:39 +02:00
}
2026-10-02 18:06:45 +02:00
static MAX_WPT_CHUNK_SIZE: usize = 128;
#[derive(Debug, Default)]
pub struct WaypointChunk {
pub id: WaypointChunkId,
pub wpt: Vec<Waypoint>,
2026-10-01 18:42:31 +02:00
}
impl PartialEq for WaypointChunk {
fn eq(&self, other: &Self) -> bool {
self.id == other.id
}
}
2026-09-23 19:53:39 +02:00
impl WaypointChunk {
pub fn is_full(&self) -> bool {
self.wpt.len() == MAX_WPT_CHUNK_SIZE
}
}