mirror of
https://github.com/gpxstudio/gpx.studio.git
synced 2026-11-01 20:19:39 +00:00
83 lines
2.5 KiB
Rust
83 lines
2.5 KiB
Rust
//! The tools: reversing, cropping, reducing, timestamps, merging, cleaning...
|
|||
|
|
|
||
|
|
use gpx_engine::api;
|
||
|
|
use wasm_bindgen::prelude::*;
|
||
|
|
|
||
|
|
use crate::ts::Outcome;
|
||
|
|
|
||
|
|
use crate::session::*;
|
||
|
|
use crate::types::*;
|
||
|
|
|
||
|
|
// Tools
|
||
|
|
|
||
|
|
#[wasm_bindgen]
|
||
|
|
pub fn reverse() -> Outcome {
|
||
|
|
run(api::reverse)
|
||
|
|
}
|
||
|
|
|
||
|
|
/// Adds to each selected segment a reversed copy of itself (without repeating its last point), so that it goes back to where it
|
||
|
|
/// started.
|
||
|
|
#[wasm_bindgen]
|
||
|
|
pub fn round_trip() -> Outcome {
|
||
|
|
run(api::round_trip)
|
||
|
|
}
|
||
|
|
|
||
|
|
/// Keeps the trackpoints `start` to `end` (both included) of the selection, counted over its
|
||
|
|
/// segments one after the other, and removes the others (and what is left empty).
|
||
|
|
#[wasm_bindgen]
|
||
|
|
pub fn crop(start: u32, end: u32) -> Outcome {
|
||
|
|
run(|e| api::crop(e, start, end))
|
||
|
|
}
|
||
|
|
|
||
|
|
/// Removes the trackpoints of the selection that are less than `tolerance` meters away from the
|
||
|
|
/// line of their neighbours, except the ends of the segments.
|
||
|
|
#[wasm_bindgen]
|
||
|
|
pub fn reduce(tolerance: f64) -> Outcome {
|
||
|
|
run(|e| api::reduce(e, tolerance))
|
||
|
|
}
|
||
|
|
|
||
|
|
/// Sets the timestamps of the selection, which starts at `start_time` (ms since the epoch): the
|
||
|
|
/// trackpoints that have some keep their durations multiplied by `ratio`, the others follow the
|
||
|
|
/// previous one at `speed` (km/h).
|
||
|
|
#[wasm_bindgen(js_name = changeTimestamps)]
|
||
|
|
pub fn change_timestamps(start_time: f64, speed: f64, ratio: f64) -> Outcome {
|
||
|
|
run(|e| api::change_timestamps(e, start_time, speed, ratio))
|
||
|
|
}
|
||
|
|
|
||
|
|
/// Makes up timestamps for the selection, which starts at `start_time` (ms since the epoch) and
|
||
|
|
/// lasts `total_time` seconds.
|
||
|
|
#[wasm_bindgen(js_name = createArtificialTimestamps)]
|
||
|
|
pub fn create_artificial_timestamps(start_time: f64, total_time: f64) -> Outcome {
|
||
|
|
run(|e| api::create_artificial_timestamps(e, start_time, total_time))
|
||
|
|
}
|
||
|
|
|
||
|
|
/// Merges the selection into its first element (see `MergeType`). `remove_gaps` brings the parts
|
||
|
|
/// that are connected closer in time, if they have timestamps.
|
||
|
|
#[wasm_bindgen]
|
||
|
|
pub fn merge(type_: MergeType, remove_gaps: bool) -> Outcome {
|
||
|
|
run(|e| api::merge(e, type_.into(), remove_gaps))
|
||
|
|
}
|
||
|
|
|
||
|
|
#[wasm_bindgen]
|
||
|
|
pub fn extract() -> Outcome {
|
||
|
|
run(api::extract)
|
||
|
|
}
|
||
|
|
|
||
|
|
/// Sets the elevation of the trackpoints of the selection, one elevation per trackpoint.
|
||
|
|
#[wasm_bindgen]
|
||
|
|
pub fn elevation(ele: &[f64]) -> Outcome {
|
||
|
|
run(|e| api::elevation(e, ele))
|
||
|
|
}
|
||
|
|
|
||
|
|
#[wasm_bindgen]
|
||
|
|
pub fn clean(
|
||
|
|
west: f64,
|
||
|
|
south: f64,
|
||
|
|
east: f64,
|
||
|
|
north: f64,
|
||
|
|
type_: CleanType,
|
||
|
|
trkpt: bool,
|
||
|
|
wpt: bool,
|
||
|
|
) -> Outcome {
|
||
|
|
run(|e| api::clean(e, west, south, east, north, type_.into(), trkpt, wpt))
|
||
|
|
}
|