diff --git a/.eslintignore b/.eslintignore index 1e3abd9ff..a82960313 100644 --- a/.eslintignore +++ b/.eslintignore @@ -1,6 +1,8 @@ # Needs to be ignored because it uses ESM export/import apps/gipy/pkg/gps.js +apps/gipy/pkg/gps.d.ts +apps/gipy/pkg/gps_bg.wasm.d.ts # Needs to be ignored because it includes broken JS apps/health/chart.min.js diff --git a/apps/gipy/ChangeLog b/apps/gipy/ChangeLog index 79b3a7615..b0445c161 100644 --- a/apps/gipy/ChangeLog +++ b/apps/gipy/ChangeLog @@ -135,5 +135,9 @@ * Fix for files converted from maps2gpx : path was not reduced in size correctly * Experimental ski mode : have a ski slopes map * Fix for path projection display when lost and zoomed out + 0.25: Minor code improvements + 0.26: Add option to plot openstmap if installed + +0.27: Support for large paths (grid sizes > 65k) diff --git a/apps/gipy/app.js b/apps/gipy/app.js index 4d0838282..659e12d98 100644 --- a/apps/gipy/app.js +++ b/apps/gipy/app.js @@ -95,7 +95,7 @@ function compute_eta(hour, minutes, approximate_speed, remaining_distance) { } class TilesOffsets { - constructor(filename, offset) { + constructor(filename, offset, bytes_per_tile_index) { let header = E.toArrayBuffer(s.read(filename, offset, 4)); let type_size = Uint8Array(header, 0, 1)[0]; offset += 1; @@ -105,26 +105,30 @@ class TilesOffsets { offset += 2; let bytes = (type_size==24)?3:2; - let buffer = E.toArrayBuffer(s.read(filename, offset, 2*non_empty_tiles_number+bytes*non_empty_tiles_number)); - this.non_empty_tiles = Uint16Array(buffer, 0, non_empty_tiles_number); - offset += 2 * non_empty_tiles_number; + let buffer = E.toArrayBuffer(s.read(filename, offset, bytes_per_tile_index*non_empty_tiles_number)); + if (bytes_per_tile_index == 2) { + this.non_empty_tiles = Uint16Array(buffer, 0, non_empty_tiles_number); + } else { + this.non_empty_tiles = Uint24Array(buffer, 0, non_empty_tiles_number); + } + offset += bytes_per_tile_index * non_empty_tiles_number; + let tile_buffer = E.toArrayBuffer(s.read(filename, offset, bytes*non_empty_tiles_number)); if (type_size == 24) { this.non_empty_tiles_ends = Uint24Array( - buffer, - 2*non_empty_tiles_number, + tile_buffer, + 0, non_empty_tiles_number ); - offset += 3 * non_empty_tiles_number; } else if (type_size == 16) { this.non_empty_tiles_ends = Uint16Array( - buffer, - 2*non_empty_tiles_number, + tile_buffer, + 0, non_empty_tiles_number ); - offset += 2 * non_empty_tiles_number; } else { throw "unknown size"; } + offset += bytes * non_empty_tiles_number; return [this, offset]; } tile_start_offset(tile_index) { @@ -179,7 +183,8 @@ class Map { offset += 8; // tiles offsets - let res = new TilesOffsets(filename, offset); + let bytes_per_tile_index = (this.grid_size[0] * this.grid_size[1] > 65536)?3:2; + let res = new TilesOffsets(filename, offset, bytes_per_tile_index); this.tiles_offsets = res[0]; offset = res[1]; @@ -314,7 +319,8 @@ class Interests { this.side = side_array[0]; offset += 8; - let res = new TilesOffsets(filename, offset); + let bytes_per_tile_index = (this.grid_size[0] * this.grid_size[1] > 65536)?3:2; + let res = new TilesOffsets(filename, offset, bytes_per_tile_index); offset = res[1]; this.offsets = res[0]; let end = this.offsets.end_offset(); diff --git a/apps/gipy/metadata.json b/apps/gipy/metadata.json index 5819f2d4c..91e371c16 100644 --- a/apps/gipy/metadata.json +++ b/apps/gipy/metadata.json @@ -2,7 +2,7 @@ "id": "gipy", "name": "Gipy", "shortName": "Gipy", - "version": "0.26", + "version": "0.27", "description": "Follow gpx files using the gps. Don't get lost in your bike trips and hikes.", "allow_emulator":false, "icon": "gipy.png", diff --git a/apps/gipy/pkg/gps.d.ts b/apps/gipy/pkg/gps.d.ts index 6e2c14f5a..ebf3c8456 100644 --- a/apps/gipy/pkg/gps.d.ts +++ b/apps/gipy/pkg/gps.d.ts @@ -1,5 +1,5 @@ /* tslint:disable */ - +/* eslint-disable */ /** * @param {Gps} gps */ @@ -80,11 +80,11 @@ export interface InitOutput { readonly __wbindgen_malloc: (a: number) => number; readonly __wbindgen_realloc: (a: number, b: number, c: number) => number; readonly __wbindgen_export_2: WebAssembly.Table; - readonly wasm_bindgen__convert__closures__invoke1_mut__hc18aa489d857d6a0: (a: number, b: number, c: number) => void; + readonly wasm_bindgen__convert__closures__invoke1_mut__h175ee3b9ff4e5b4c: (a: number, b: number, c: number) => void; readonly __wbindgen_add_to_stack_pointer: (a: number) => number; readonly __wbindgen_free: (a: number, b: number) => void; readonly __wbindgen_exn_store: (a: number) => void; - readonly wasm_bindgen__convert__closures__invoke2_mut__h41c3b5af183df3b2: (a: number, b: number, c: number, d: number) => void; + readonly wasm_bindgen__convert__closures__invoke2_mut__h41622a4cb7018e76: (a: number, b: number, c: number, d: number) => void; } export type SyncInitInput = BufferSource | WebAssembly.Module; diff --git a/apps/gipy/pkg/gps.js b/apps/gipy/pkg/gps.js index 0f8b74804..d98a5c05b 100644 --- a/apps/gipy/pkg/gps.js +++ b/apps/gipy/pkg/gps.js @@ -98,6 +98,14 @@ function takeObject(idx) { return ret; } +const cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); + +cachedTextDecoder.decode(); + +function getStringFromWasm0(ptr, len) { + return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); +} + function addHeapObject(obj) { if (heap_next === heap.length) heap.push(heap.length + 1); const idx = heap_next; @@ -107,14 +115,6 @@ function addHeapObject(obj) { return idx; } -const cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true }); - -cachedTextDecoder.decode(); - -function getStringFromWasm0(ptr, len) { - return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len)); -} - function debugString(val) { // primitive types const type = typeof val; @@ -205,7 +205,7 @@ function makeMutClosure(arg0, arg1, dtor, f) { return real; } function __wbg_adapter_24(arg0, arg1, arg2) { - wasm.wasm_bindgen__convert__closures__invoke1_mut__hc18aa489d857d6a0(arg0, arg1, addHeapObject(arg2)); + wasm.wasm_bindgen__convert__closures__invoke1_mut__h175ee3b9ff4e5b4c(arg0, arg1, addHeapObject(arg2)); } function _assertClass(instance, klass) { @@ -389,7 +389,7 @@ function handleError(f, args) { } } function __wbg_adapter_86(arg0, arg1, arg2, arg3) { - wasm.wasm_bindgen__convert__closures__invoke2_mut__h41c3b5af183df3b2(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); + wasm.wasm_bindgen__convert__closures__invoke2_mut__h41622a4cb7018e76(arg0, arg1, addHeapObject(arg2), addHeapObject(arg3)); } /** @@ -464,10 +464,6 @@ function getImports() { imports.wbg.__wbindgen_object_drop_ref = function(arg0) { takeObject(arg0); }; - imports.wbg.__wbindgen_object_clone_ref = function(arg0) { - const ret = getObject(arg0); - return addHeapObject(ret); - }; imports.wbg.__wbindgen_string_new = function(arg0, arg1) { const ret = getStringFromWasm0(arg0, arg1); return addHeapObject(ret); @@ -476,6 +472,10 @@ function getImports() { const ret = fetch(getObject(arg0)); return addHeapObject(ret); }; + imports.wbg.__wbindgen_object_clone_ref = function(arg0) { + const ret = getObject(arg0); + return addHeapObject(ret); + }; imports.wbg.__wbg_signal_31753ac644b25fbb = function(arg0) { const ret = getObject(arg0).signal; return addHeapObject(ret); @@ -695,8 +695,8 @@ function getImports() { const ret = wasm.memory; return addHeapObject(ret); }; - imports.wbg.__wbindgen_closure_wrapper2356 = function(arg0, arg1, arg2) { - const ret = makeMutClosure(arg0, arg1, 293, __wbg_adapter_24); + imports.wbg.__wbindgen_closure_wrapper2375 = function(arg0, arg1, arg2) { + const ret = makeMutClosure(arg0, arg1, 301, __wbg_adapter_24); return addHeapObject(ret); }; diff --git a/apps/gipy/pkg/gps_bg.wasm b/apps/gipy/pkg/gps_bg.wasm index c9e212a13..cfdf4be5f 100644 Binary files a/apps/gipy/pkg/gps_bg.wasm and b/apps/gipy/pkg/gps_bg.wasm differ diff --git a/apps/gipy/pkg/gps_bg.wasm.d.ts b/apps/gipy/pkg/gps_bg.wasm.d.ts index 5b84a9229..b6f04ad71 100644 --- a/apps/gipy/pkg/gps_bg.wasm.d.ts +++ b/apps/gipy/pkg/gps_bg.wasm.d.ts @@ -1,5 +1,5 @@ /* tslint:disable */ - +/* eslint-disable */ export const memory: WebAssembly.Memory; export function __wbg_gps_free(a: number): void; export function disable_elevation(a: number): void; @@ -14,8 +14,8 @@ export function gps_from_area(a: number, b: number, c: number, d: number, e: num export function __wbindgen_malloc(a: number): number; export function __wbindgen_realloc(a: number, b: number, c: number): number; export const __wbindgen_export_2: WebAssembly.Table; -export function wasm_bindgen__convert__closures__invoke1_mut__hc18aa489d857d6a0(a: number, b: number, c: number): void; +export function wasm_bindgen__convert__closures__invoke1_mut__h175ee3b9ff4e5b4c(a: number, b: number, c: number): void; export function __wbindgen_add_to_stack_pointer(a: number): number; export function __wbindgen_free(a: number, b: number): void; export function __wbindgen_exn_store(a: number): void; -export function wasm_bindgen__convert__closures__invoke2_mut__h41c3b5af183df3b2(a: number, b: number, c: number, d: number): void; +export function wasm_bindgen__convert__closures__invoke2_mut__h41622a4cb7018e76(a: number, b: number, c: number, d: number): void;