cleanup and update dependencies

This commit is contained in:
cel 🌸 2022-12-30 21:06:11 +00:00
parent 4cfd912ebe
commit 5d54a56e56
Signed by: cel
GPG Key ID: 48E29AF13B5F1349
6 changed files with 114 additions and 133 deletions

View File

@ -1,4 +1,5 @@
[workspace] [workspace]
resolver = "2"
members = [ members = [
"cowgen", "cowgen",

View File

@ -8,4 +8,4 @@ edition = "2021"
[dependencies] [dependencies]
ril = { version = "0", features = ["all"] } ril = { version = "0", features = ["all"] }
magick_rust = { version = "0.16" }

View File

@ -1,11 +1,5 @@
use magick_rust::{magick_wand_genesis, MagickError, MagickWand};
use ril::prelude::*; use ril::prelude::*;
use std::sync::Once; use std::path::Path;
use std::{fs::File, path::Path};
// Used to make sure MagickWand is initialized exactly once. Note that we
// do not bother shutting down, we simply exit when we're done.
static START: Once = Once::new();
pub struct Generate<T: AsRef<str>, V: AsRef<Path>> { pub struct Generate<T: AsRef<str>, V: AsRef<Path>> {
elements: Vec<Element<T, V>>, elements: Vec<Element<T, V>>,
@ -15,19 +9,7 @@ pub struct Generate<T: AsRef<str>, V: AsRef<Path>> {
impl<T: AsRef<str>, V: AsRef<Path>> Generate<T, V> { impl<T: AsRef<str>, V: AsRef<Path>> Generate<T, V> {
pub fn new(base: Vec<u8>, elements: Vec<Element<T, V>>) -> Result<Self, CowError> { pub fn new(base: Vec<u8>, elements: Vec<Element<T, V>>) -> Result<Self, CowError> {
Ok(Self { Ok(Self {
base: match Image::<Rgba>::from_bytes_inferred(&base) { base: Image::<Rgba>::from_bytes_inferred(&base)?,
Ok(img) => img,
_ => {
START.call_once(|| {
magick_wand_genesis();
});
let mut wand = MagickWand::new();
wand.read_image_blob(&base)?;
wand.set_format("png32")?;
let base = wand.write_image_blob("png")?;
Image::from_bytes_inferred(base)?
}
},
elements, elements,
}) })
} }
@ -47,7 +29,7 @@ impl<T: AsRef<str>, V: AsRef<Path>> Generate<T, V> {
pos.1 = 0; pos.1 = 0;
} }
base_image.draw(&Paste::new(img.convert()).with_position(pos.0 as u32, pos.1 as u32)); base_image.draw(&Paste::new(&img.convert()).with_position(pos.0 as u32, pos.1 as u32));
} }
let mut buf = Vec::<u8>::new(); let mut buf = Vec::<u8>::new();
base_image.encode(ImageFormat::Png, &mut buf).unwrap(); base_image.encode(ImageFormat::Png, &mut buf).unwrap();
@ -134,9 +116,3 @@ impl From<ril::Error> for CowError {
CowError::Other(r.to_string()) CowError::Other(r.to_string())
} }
} }
impl From<MagickError> for CowError {
fn from(m: MagickError) -> Self {
CowError::Magick(m.0.to_owned())
}
}

View File

@ -8,4 +8,4 @@ edition = "2021"
[dependencies] [dependencies]
cowgen = { path = "../cowgen" } cowgen = { path = "../cowgen" }
iced = { git = "https://github.com/iced-rs/iced", branch = "master" } iced = "0.6"

View File

@ -1,105 +1,3 @@
use std::path::Path; fn main() {
use std::{fs::File, io::Write}; println!("hello, world");
use cowgen::{CowError, Text};
use iced::Sandbox;
use iced::Settings;
fn main() -> Result<(), CowError> {
Cowmic::run(Settings::default())
}
struct Element {
position: (i32, i32),
dimensions: (i32, i32),
media: Media,
}
struct Text {}
struct Image {}
enum Media {
Image(Path),
Text(Text),
}
struct Template {
image_path: String,
elements: Vec<Element>
}
struct Cowmic {
templates: Vec<Template>,
view: View,
}
enum Message {}
impl Sandbox for Cowmic {
type Message = Message;
fn new() -> Self {
Self {
view: View::Library(Library::View::new()),
templates: vec![],
}
}
fn title(&self) -> String {
"Cowmic".to_string()
}
fn update(&mut self, message: Self::Message) {
todo!()
}
fn view(&self) -> iced::Element<'_, Self::Message> {
todo!()
}
}
// library -> view template -> create image (fill out template) -> save to filesystem
// \-> new template
enum View {
Library(Library::View),
// Template(Template),
// Generate(Generate),
}
// features:
// import template
// delete template
// rename template
// autosave all templates
mod Library {
use super::Template;
pub struct View;
impl View {
pub fn new(templates: Vec<Template>) -> Self {
Self
}
fn update(&mut self, message: Message) {
todo!()
}
fn view(&self) -> iced::Element<'_, Message> {
todo!()
}
}
enum Message {}
}
mod NewTemplate {
struct View {
image: Image
};
enum Message {}
}
mod Generate {
enum Message {}
} }

106
cowmic/src/tmp.rs Normal file
View File

@ -0,0 +1,106 @@
use std::path::Path;
use std::{fs::File, io::Write};
use cowgen::{CowError, Text};
use iced::Sandbox;
use iced::Settings;
fn main() -> Result<(), CowError> {
Cowmic::run(Settings::default())
}
struct Element {
position: (i32, i32),
dimensions: (i32, i32),
media: Media,
}
// struct Text {}
struct Image {}
enum Media {
Image(Path),
Text(Text),
}
struct Template {
image_path: String,
elements: Vec<Element>,
}
struct Cowmic {
templates: Vec<Template>,
view: View,
}
enum Message {}
impl Sandbox for Cowmic {
type Message = Message;
fn new() -> Self {
Self {
view: View::Library(Library::View::new()),
templates: vec![],
}
}
fn title(&self) -> String {
"Cowmic".to_string()
}
fn update(&mut self, message: Self::Message) {
todo!()
}
fn view(&self) -> iced::Element<'_, Self::Message> {
todo!()
}
}
// library -> view template -> create image (fill out template) -> save to filesystem
// \-> new template
enum View {
Library(Library::View),
// Templatep(Template),
// Generate(Generate),
}
// features:
// import template
// delete template
// rename template
// autosave all templates
mod Library {
use super::Template;
pub struct View;
impl View {
pub fn new(templates: Vec<Template>) -> Self {
Self
}
fn update(&mut self, message: Message) {
todo!()
}
fn view(&self) -> iced::Element<'_, Message> {
todo!()
}
}
enum Message {}
}
mod NewTemplate {
struct View {
image: Image,
}
enum Message {}
}
mod Generate {
enum Message {}
}