import { PluginFileAPI, PluginCommAPI, type Element } from 'sn-plugin-lib';
/**
* 创建一个 Element 并插入到指定页面的示例。
*/
export async function exampleInsertElements() {
const notePath = '/storage/emulated/0/Note/demo.note';
const page = 0;
const createRes = await PluginCommAPI.createElement(0);
if (!createRes.success) {
throw new Error(createRes.error?.message ?? 'createElement 调用失败');
}
const element = createRes.result as Element;
const pressures = [800, 900, 1000];
const pageSizeRes = await PluginFileAPI.getPageSize(notePath, page);
if (!pageSizeRes.success) {
throw new Error(pageSizeRes.error?.message ?? 'getPageSize 调用失败');
}
const { width, height } = pageSizeRes.result;
// Android 像素坐标,落在页面实际尺寸 width × height 之内
const points = [
{ x: width * 0.2, y: height * 0.2 },
{ x: width * 0.4, y: height * 0.3 },
{ x: width * 0.6, y: height * 0.35 },
];
element.thickness = 2;
if (element.stroke) {
element.stroke.penColor = 0;
element.stroke.penType = 16;
await element.stroke.points.setRange(0, points.length - 1, points);
await element.stroke.pressures.setRange(0, pressures.length - 1, pressures);
}
const res = await PluginFileAPI.insertElements(notePath, page, [element]);
if (!res.success) {
throw new Error(res.error?.message ?? 'insertElements 调用失败');
}
return res.result;
}