You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
70 lines
1.9 KiB
70 lines
1.9 KiB
import * as storage from './storage.js' |
|
import * as math from './math.js' |
|
|
|
import { SESSION, MESSAGE, EVENT } from './enums'; |
|
|
|
let first_point_x = null; |
|
let first_point_y = null; |
|
|
|
function parse_and_insert_stroke(desk_id, line) { |
|
const words = line.split(' '); |
|
const width = parseInt(words.shift()); |
|
const data = new Float32Array(words.map(i => parseFloat(i))); |
|
|
|
const points = new Float32Array(data.length / 3 * 2); |
|
const pressures = new Uint8Array(data.length / 3); |
|
|
|
if (first_point_x === null) { |
|
first_point_x = points[0]; |
|
first_point_y = points[1]; |
|
} |
|
|
|
for (let i = 0; i < data.length; i += 3) { |
|
points[i / 3 * 2 + 0] = data[i + 0]; |
|
points[i / 3 * 2 + 1] = data[i + 1]; |
|
pressures[i / 3 + 0] = Math.floor(data[i + 2] * 255); |
|
} |
|
|
|
const stroke_res = storage.queries.insert_stroke.get({ |
|
'$width': width, |
|
'$color': 0, |
|
'$points': points, |
|
'$pressures': pressures, |
|
}); |
|
|
|
storage.queries.insert_event.run({ |
|
'$type': EVENT.STROKE, |
|
'$desk_id': desk_id, |
|
'$session_id': 0, |
|
'$stroke_id': stroke_res.id, |
|
'$image_id': 0, |
|
'$x': 0, |
|
'$y': 0, |
|
}); |
|
} |
|
|
|
async function import_milton_file_to_sqlite(fullpath) { |
|
storage.startup(); |
|
|
|
const desk_id = 9881; // math.fast_random32(); |
|
|
|
console.log(`Importing ${fullpath} into desk ${desk_id}`); |
|
|
|
storage.queries.insert_desk.run({ |
|
'$id': desk_id, |
|
'$title': `Desk ${desk_id}` |
|
}); |
|
|
|
const input_file = Bun.file(fullpath); |
|
const input_text = await input_file.text(); |
|
const input_lines = input_text.split('\n'); |
|
|
|
for (let i = 0; i < input_lines.length; ++i) { |
|
console.log(`Importing ${i}/${input_lines.length}`); |
|
parse_and_insert_stroke(desk_id, input_lines[i]); |
|
} |
|
|
|
console.log(`Finished importing desk ${desk_id}`); |
|
} |
|
|
|
import_milton_file_to_sqlite("/home/aolo2/Documents/bin/milton/build/points_pressure.txt");
|
|
|