Split implementation into seperate crate

This commit is contained in:
Dane Johnson 2022-05-09 09:43:34 -05:00
parent 5165708a03
commit 401560d35e
5 changed files with 38 additions and 12 deletions

12
Cargo.lock generated
View File

@ -72,14 +72,22 @@ dependencies = [
name = "board-builder"
version = "1.0.0"
dependencies = [
"fltk",
"image",
"serde",
"serde_json",
"state",
"zip",
]
[[package]]
name = "board-builder-impl-fltk"
version = "0.1.0"
dependencies = [
"board-builder",
"fltk",
"image",
"state",
]
[[package]]
name = "bumpalo"
version = "3.9.1"

View File

@ -3,11 +3,14 @@ name = "board-builder"
version = "1.0.0"
edition = "2021"
[dependencies]
[lib]
crate-type = ["rlib", "cdylib"]
fltk = "1.3.6"
state = "0.5.3"
[dependencies]
serde = { version = "1.0.136", features = ["derive"] }
serde_json = "1.0.79"
zip = "0.6.2"
image = "0.24.2"
image = "0.24.2"
[workspace]
members = ["board-builder-impl-fltk"]

View File

@ -0,0 +1,12 @@
[package]
name = "board-builder-impl-fltk"
version = "0.1.0"
edition = "2021"
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
[dependencies]
board-builder = { path = "../" }
fltk = "1.3.6"
state = "0.5.3"
image = "0.24.2"

View File

@ -11,9 +11,8 @@ use state::Storage;
use std::sync::Mutex;
mod board;
use board::Board;
use board::{ encode_png, write_board_to_file, read_board_from_file, CoordTransformer };
use board_builder::Board;
use board_builder::{ encode_png, write_board_to_file, read_board_from_file, CoordTransformer };
//////////////////// Global State ////////////////////
// Don't @ me...
@ -133,9 +132,11 @@ mod dispatch {
}
}
impl CoordTransformer<i32> for frame::Frame {
fn origin(&self) -> (i32, i32) { (self.x(), self.y()) }
fn extremes(&self) -> (i32, i32) { (self.x()+self.w(), self.y()+self.h()) }
struct FrameView<'a>(&'a frame::Frame);
impl<'a> CoordTransformer<i32> for FrameView<'a> {
fn origin(&self) -> (i32, i32) { (self.0.x(), self.0.y()) }
fn extremes(&self) -> (i32, i32) { (self.0.x()+self.0.w(), self.0.y()+self.0.h()) }
}
//////////////////// App State ////////////////////
@ -249,6 +250,7 @@ fn main() {
}
// Nodes
let board = &state.board;
let f = FrameView(f);
for (&id, node) in &board.nodes {
// Draw the node
let (x, y) = f.from_coords(node.x, node.y);
@ -270,6 +272,7 @@ fn main() {
frame.handle(move |f, e| {
match e {
Event::Push => {
let f = FrameView(f);
let edit_mode = STATE.get().lock().unwrap().edit_mode;
let coords = f.to_coords(app::event_x(), app::event_y());