Load board files
This commit is contained in:
parent
08b19bf2c6
commit
e9138a9d31
32
src/main.rs
32
src/main.rs
@ -3,7 +3,7 @@ use serde::{ Serialize, Deserialize };
|
|||||||
use fltk::*;
|
use fltk::*;
|
||||||
use fltk::prelude::*;
|
use fltk::prelude::*;
|
||||||
use fltk::enums::*;
|
use fltk::enums::*;
|
||||||
use fltk::image::{ SharedImage, PngImage };
|
use fltk::image::PngImage;
|
||||||
|
|
||||||
extern crate image;
|
extern crate image;
|
||||||
use image::io::Reader as ImageReader;
|
use image::io::Reader as ImageReader;
|
||||||
@ -13,7 +13,7 @@ use std::cell::RefCell;
|
|||||||
use std::rc::Rc;
|
use std::rc::Rc;
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
|
|
||||||
use std::io::{ Write, Cursor, BufWriter };
|
use std::io::{ Write, Read, Cursor };
|
||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
|
|
||||||
type Id = usize;
|
type Id = usize;
|
||||||
@ -52,7 +52,7 @@ impl AppState {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
fn menu_cb(m: &mut impl MenuExt) {
|
fn menu_cb(_m: &mut impl MenuExt) {
|
||||||
todo!();
|
todo!();
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -62,6 +62,13 @@ fn encode_png(image: &DynamicImage) -> Vec<u8> {
|
|||||||
cursor.into_inner()
|
cursor.into_inner()
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn decode_png(buf: &[u8]) -> DynamicImage {
|
||||||
|
let cursor = Cursor::new(buf);
|
||||||
|
let mut reader = ImageReader::new(cursor);
|
||||||
|
reader.set_format(image::ImageFormat::Png);
|
||||||
|
reader.decode().unwrap()
|
||||||
|
}
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let app = app::App::default()
|
let app = app::App::default()
|
||||||
.with_scheme(app::Scheme::Gtk);
|
.with_scheme(app::Scheme::Gtk);
|
||||||
@ -89,13 +96,20 @@ fn main() {
|
|||||||
|
|
||||||
let file = File::open(fc.filename()).unwrap();
|
let file = File::open(fc.filename()).unwrap();
|
||||||
let mut ar = zip::ZipArchive::new(file).unwrap();
|
let mut ar = zip::ZipArchive::new(file).unwrap();
|
||||||
|
let mut state = AppState::new();
|
||||||
|
|
||||||
let json_file = ar.by_name("graph.json").unwrap();
|
let json_file = ar.by_name("graph.json").unwrap();
|
||||||
let mut state = state_clone.borrow_mut();
|
|
||||||
state.board = serde_json::from_reader(json_file).unwrap();
|
state.board = serde_json::from_reader(json_file).unwrap();
|
||||||
if let Some(image_file) = ar.by_name("image").ok() {
|
if let Ok(mut image_file) = ar.by_name("image.png") {
|
||||||
todo!();
|
let mut buf = Vec::new();
|
||||||
}
|
image_file.read_to_end(&mut buf).ok();
|
||||||
|
|
||||||
|
let image = decode_png(&buf);
|
||||||
|
state.image = Some(PngImage::from_data(&buf).unwrap());
|
||||||
|
state.image_raw = Some(image);
|
||||||
app::redraw();
|
app::redraw();
|
||||||
|
}
|
||||||
|
state_clone.replace(state);
|
||||||
});
|
});
|
||||||
let state_clone = Rc::clone(&state);
|
let state_clone = Rc::clone(&state);
|
||||||
menubar.add("File/Open Image..." , Shortcut::None, menu::MenuFlag::Normal, move |_| {
|
menubar.add("File/Open Image..." , Shortcut::None, menu::MenuFlag::Normal, move |_| {
|
||||||
@ -136,14 +150,14 @@ fn main() {
|
|||||||
});
|
});
|
||||||
menubar.add("Edit/Edit Nodes" , Shortcut::None, menu::MenuFlag::Normal, menu_cb);
|
menubar.add("Edit/Edit Nodes" , Shortcut::None, menu::MenuFlag::Normal, menu_cb);
|
||||||
menubar.add("Edit/Edit Edges" , Shortcut::None, menu::MenuFlag::Normal, menu_cb);
|
menubar.add("Edit/Edit Edges" , Shortcut::None, menu::MenuFlag::Normal, menu_cb);
|
||||||
flex.set_size(&mut menubar, 40);
|
flex.set_size(&menubar, 40);
|
||||||
|
|
||||||
// Canvas
|
// Canvas
|
||||||
let mut frame = frame::Frame::default();
|
let mut frame = frame::Frame::default();
|
||||||
let state_clone = Rc::clone(&state);
|
let state_clone = Rc::clone(&state);
|
||||||
frame.draw(move |f| {
|
frame.draw(move |f| {
|
||||||
let mut state = state_clone.borrow_mut();
|
let mut state = state_clone.borrow_mut();
|
||||||
let mut image = &mut state.image;
|
let image = &mut state.image;
|
||||||
if let Some(image) = image.as_mut() {
|
if let Some(image) = image.as_mut() {
|
||||||
image.scale(f.w(), f.h(), true, true);
|
image.scale(f.w(), f.h(), true, true);
|
||||||
image.draw(f.x(), f.y(), f.w(), f.h());
|
image.draw(f.x(), f.y(), f.w(), f.h());
|
||||||
|
Loading…
Reference in New Issue
Block a user