49 lines
1.6 KiB
Rust
49 lines
1.6 KiB
Rust
// Stiletto
|
|
// Copyright (C) 2020 Stiletto Authors
|
|
//
|
|
// This program is free software: you can redistribute it and/or modify
|
|
// it under the terms of the GNU Affero General Public License as published by
|
|
// the Free Software Foundation, either version 3 of the License, or
|
|
// (at your option) any later version.
|
|
//
|
|
// This program is distributed in the hope that it will be useful,
|
|
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
// GNU Affero General Public License for more details.
|
|
//
|
|
// You should have received a copy of the GNU Affero General Public License
|
|
// along with this program. If not, see <https://www.gnu.org/licenses/>.
|
|
|
|
use serde::{Deserialize, Serialize};
|
|
use std::vec::Vec;
|
|
|
|
pub mod canvas;
|
|
pub mod history;
|
|
pub mod tool;
|
|
pub mod widget;
|
|
pub mod migration;
|
|
|
|
pub mod commands {
|
|
use druid::Selector;
|
|
|
|
pub const UPDATE_TOOL: Selector = Selector::new("stiletto_update_tool");
|
|
pub const PUSH_ERASER: Selector<()> = Selector::new("push_eraser_context");
|
|
pub const POP_ERASER: Selector<()> = Selector::new("pop_eraser_context");
|
|
}
|
|
|
|
pub const STILETTO_FORMAT_MAJOR: u16 = 0;
|
|
pub const STILETTO_FORMAT_MINOR: u16 = 1;
|
|
|
|
#[derive(Serialize, Deserialize, Debug)]
|
|
pub struct DocumentSnapshot {
|
|
pub format_version_major: u16,
|
|
pub format_version_minor: u16,
|
|
pub canvas_elements: Vec<canvas::CanvasElement>,
|
|
}
|
|
|
|
impl DocumentSnapshot {
|
|
pub fn to_writer<W: std::io::Write>(&self, writer: W) -> Result<(), serde_json::Error> {
|
|
serde_json::to_writer_pretty(writer, &self)
|
|
}
|
|
}
|