@@ -1,3 +1,4 @@
|
|||||||
|
use crate::urls::{UrlCache, UrlMimes};
|
||||||
use crate::Result;
|
use crate::Result;
|
||||||
use egui::TextureHandle;
|
use egui::TextureHandle;
|
||||||
use poll_promise::Promise;
|
use poll_promise::Promise;
|
||||||
@@ -6,6 +7,7 @@ use egui::ColorImage;
|
|||||||
|
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::fs::{create_dir_all, File};
|
use std::fs::{create_dir_all, File};
|
||||||
|
use std::time::{Duration, Instant, SystemTime};
|
||||||
|
|
||||||
use hex::ToHex;
|
use hex::ToHex;
|
||||||
use sha2::Digest;
|
use sha2::Digest;
|
||||||
@@ -25,6 +27,7 @@ pub struct MediaCache {
|
|||||||
url_imgs: MediaCacheMap,
|
url_imgs: MediaCacheMap,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[derive(Clone)]
|
||||||
pub enum MediaCacheType {
|
pub enum MediaCacheType {
|
||||||
Image,
|
Image,
|
||||||
Gif,
|
Gif,
|
||||||
@@ -145,3 +148,39 @@ pub fn get_texture(textured_image: &TexturedImage) -> &TextureHandle {
|
|||||||
TexturedImage::Static(texture_handle) => texture_handle,
|
TexturedImage::Static(texture_handle) => texture_handle,
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
|
pub struct Images {
|
||||||
|
pub static_imgs: MediaCache,
|
||||||
|
pub gifs: MediaCache,
|
||||||
|
pub urls: UrlMimes,
|
||||||
|
pub gif_states: GifStateMap,
|
||||||
|
}
|
||||||
|
|
||||||
|
impl Images {
|
||||||
|
#[allow(dead_code)]
|
||||||
|
/// path to directory to place [`MediaCache`]s
|
||||||
|
pub fn new(path: path::PathBuf) -> Self {
|
||||||
|
Self {
|
||||||
|
static_imgs: MediaCache::new(path.join(MediaCache::rel_dir(MediaCacheType::Image))),
|
||||||
|
gifs: MediaCache::new(path.join(MediaCache::rel_dir(MediaCacheType::Gif))),
|
||||||
|
urls: UrlMimes::new(UrlCache::new(path.join(UrlCache::rel_dir()))),
|
||||||
|
gif_states: Default::default(),
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
#[allow(dead_code)]
|
||||||
|
pub fn migrate_v0(&self) -> Result<()> {
|
||||||
|
self.static_imgs.migrate_v0()?;
|
||||||
|
self.gifs.migrate_v0()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
pub type GifStateMap = HashMap<String, GifState>;
|
||||||
|
|
||||||
|
pub struct GifState {
|
||||||
|
pub last_frame_rendered: Instant,
|
||||||
|
pub last_frame_duration: Duration,
|
||||||
|
pub next_frame_time: Option<SystemTime>,
|
||||||
|
pub last_frame_index: usize,
|
||||||
|
}
|
||||||
|
|||||||
@@ -31,7 +31,7 @@ pub use context::AppContext;
|
|||||||
pub use error::{Error, FilterError};
|
pub use error::{Error, FilterError};
|
||||||
pub use filter::{FilterState, FilterStates, UnifiedSubscription};
|
pub use filter::{FilterState, FilterStates, UnifiedSubscription};
|
||||||
pub use fonts::NamedFontFamily;
|
pub use fonts::NamedFontFamily;
|
||||||
pub use imgcache::{get_texture, MediaCache, MediaCacheType, TexturedImage};
|
pub use imgcache::{get_texture, GifState, GifStateMap, MediaCache, MediaCacheType, TexturedImage};
|
||||||
pub use muted::{MuteFun, Muted};
|
pub use muted::{MuteFun, Muted};
|
||||||
pub use note::{NoteRef, RootIdError, RootNoteId, RootNoteIdBuf};
|
pub use note::{NoteRef, RootIdError, RootNoteId, RootNoteIdBuf};
|
||||||
pub use notecache::{CachedNote, NoteCache};
|
pub use notecache::{CachedNote, NoteCache};
|
||||||
|
|||||||
Reference in New Issue
Block a user