aboutsummaryrefslogtreecommitdiff
path: root/src/utils.rs
diff options
context:
space:
mode:
Diffstat (limited to 'src/utils.rs')
-rw-r--r--src/utils.rs21
1 files changed, 19 insertions, 2 deletions
diff --git a/src/utils.rs b/src/utils.rs
index dcf652d..9859f39 100644
--- a/src/utils.rs
+++ b/src/utils.rs
@@ -4,15 +4,20 @@ use crate::{
4 lisp::{ 4 lisp::{
5 error::{EvalError, LispError, ParseError}, 5 error::{EvalError, LispError, ParseError},
6 eval::Evaluator, 6 eval::Evaluator,
7 expr::LispExpr,
8 lex::Lexer, 7 lex::Lexer,
9 parse::Parser, 8 parse::Parser,
10 }, 9 },
11 message::Message, 10 message::Message,
12}; 11};
13 12
14use std::{fs::OpenOptions, io::Read, path::Path}; 13use std::{
14 fs::OpenOptions,
15 io::{self, Cursor, Read},
16 path::Path,
17};
15 18
19use log::info;
20use obi::Image;
16use sdl2::{ 21use sdl2::{
17 keyboard::{Keycode, Mod}, 22 keyboard::{Keycode, Mod},
18 pixels::Color, 23 pixels::Color,
@@ -91,3 +96,15 @@ pub fn load_script<P: AsRef<Path>>(path: P, app: &mut AppState) -> Result<(), Li
91 } 96 }
92 return Ok(()); 97 return Ok(());
93} 98}
99
100pub fn load_file<P: AsRef<Path>>(path: P) -> Result<Image, io::Error> {
101 info!("loading existing file `{:?}`", path.as_ref());
102 let mut image = OpenOptions::new()
103 .read(true)
104 .write(false)
105 .create(false)
106 .open(&path)?;
107 let mut buf = Vec::new();
108 image.read_to_end(&mut buf)?;
109 Ok(Image::decode(&mut (Cursor::new(buf))).unwrap()) // TODO: obi erro
110}