Split implementation into seperate crate
This commit is contained in:
parent
5165708a03
commit
401560d35e
12
Cargo.lock
generated
12
Cargo.lock
generated
@ -72,14 +72,22 @@ dependencies = [
|
|||||||
name = "board-builder"
|
name = "board-builder"
|
||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
dependencies = [
|
dependencies = [
|
||||||
"fltk",
|
|
||||||
"image",
|
"image",
|
||||||
"serde",
|
"serde",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"state",
|
|
||||||
"zip",
|
"zip",
|
||||||
]
|
]
|
||||||
|
|
||||||
|
[[package]]
|
||||||
|
name = "board-builder-impl-fltk"
|
||||||
|
version = "0.1.0"
|
||||||
|
dependencies = [
|
||||||
|
"board-builder",
|
||||||
|
"fltk",
|
||||||
|
"image",
|
||||||
|
"state",
|
||||||
|
]
|
||||||
|
|
||||||
[[package]]
|
[[package]]
|
||||||
name = "bumpalo"
|
name = "bumpalo"
|
||||||
version = "3.9.1"
|
version = "3.9.1"
|
||||||
|
11
Cargo.toml
11
Cargo.toml
@ -3,11 +3,14 @@ name = "board-builder"
|
|||||||
version = "1.0.0"
|
version = "1.0.0"
|
||||||
edition = "2021"
|
edition = "2021"
|
||||||
|
|
||||||
[dependencies]
|
[lib]
|
||||||
|
crate-type = ["rlib", "cdylib"]
|
||||||
|
|
||||||
fltk = "1.3.6"
|
[dependencies]
|
||||||
state = "0.5.3"
|
|
||||||
serde = { version = "1.0.136", features = ["derive"] }
|
serde = { version = "1.0.136", features = ["derive"] }
|
||||||
serde_json = "1.0.79"
|
serde_json = "1.0.79"
|
||||||
zip = "0.6.2"
|
zip = "0.6.2"
|
||||||
image = "0.24.2"
|
image = "0.24.2"
|
||||||
|
|
||||||
|
[workspace]
|
||||||
|
members = ["board-builder-impl-fltk"]
|
12
board-builder-impl-fltk/Cargo.toml
Normal file
12
board-builder-impl-fltk/Cargo.toml
Normal 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"
|
@ -11,9 +11,8 @@ use state::Storage;
|
|||||||
|
|
||||||
use std::sync::Mutex;
|
use std::sync::Mutex;
|
||||||
|
|
||||||
mod board;
|
use board_builder::Board;
|
||||||
use board::Board;
|
use board_builder::{ encode_png, write_board_to_file, read_board_from_file, CoordTransformer };
|
||||||
use board::{ encode_png, write_board_to_file, read_board_from_file, CoordTransformer };
|
|
||||||
|
|
||||||
//////////////////// Global State ////////////////////
|
//////////////////// Global State ////////////////////
|
||||||
// Don't @ me...
|
// Don't @ me...
|
||||||
@ -133,9 +132,11 @@ mod dispatch {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
impl CoordTransformer<i32> for frame::Frame {
|
struct FrameView<'a>(&'a frame::Frame);
|
||||||
fn origin(&self) -> (i32, i32) { (self.x(), self.y()) }
|
|
||||||
fn extremes(&self) -> (i32, i32) { (self.x()+self.w(), self.y()+self.h()) }
|
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 ////////////////////
|
//////////////////// App State ////////////////////
|
||||||
@ -249,6 +250,7 @@ fn main() {
|
|||||||
}
|
}
|
||||||
// Nodes
|
// Nodes
|
||||||
let board = &state.board;
|
let board = &state.board;
|
||||||
|
let f = FrameView(f);
|
||||||
for (&id, node) in &board.nodes {
|
for (&id, node) in &board.nodes {
|
||||||
// Draw the node
|
// Draw the node
|
||||||
let (x, y) = f.from_coords(node.x, node.y);
|
let (x, y) = f.from_coords(node.x, node.y);
|
||||||
@ -270,6 +272,7 @@ fn main() {
|
|||||||
frame.handle(move |f, e| {
|
frame.handle(move |f, e| {
|
||||||
match e {
|
match e {
|
||||||
Event::Push => {
|
Event::Push => {
|
||||||
|
let f = FrameView(f);
|
||||||
let edit_mode = STATE.get().lock().unwrap().edit_mode;
|
let edit_mode = STATE.get().lock().unwrap().edit_mode;
|
||||||
let coords = f.to_coords(app::event_x(), app::event_y());
|
let coords = f.to_coords(app::event_x(), app::event_y());
|
||||||
|
|
Loading…
Reference in New Issue
Block a user