mirror of
https://github.com/GraphiteEditor/Graphite.git
synced 2026-09-15 14:18:04 +08:00
Define data types for ID-based resource handling (#4168)
* Add resource lib * rename ResourceSource to ResourceInput * Rename ResourceInput -> DataSource and improve API * Review --------- Co-authored-by: Dennis Kobert <dennis@kobert.dev>
This commit is contained in:
@@ -4,18 +4,13 @@ use wgpu_executor::WgpuExecutor;
|
||||
|
||||
pub mod resource;
|
||||
|
||||
pub use graphene_application_io::{ApplicationIo, LoadResource, Resource, ResourceFuture, ResourceHash, ResourceStorage};
|
||||
pub use resource::HashMapResourceStorage;
|
||||
#[cfg(not(target_family = "wasm"))]
|
||||
pub use resource::mmap::MmapResourceStorage;
|
||||
#[cfg(target_family = "wasm")]
|
||||
pub use resource::opfs::OpfsResourceStorage;
|
||||
pub use graphene_application_io::ApplicationIo;
|
||||
|
||||
#[derive(Default)]
|
||||
pub struct PlatformApplicationIo {
|
||||
#[cfg(feature = "wgpu")]
|
||||
pub(crate) gpu_executor: Option<WgpuExecutor>,
|
||||
resources: Option<Box<dyn LoadResource>>,
|
||||
resources: Option<Box<dyn resource::LoadResource>>,
|
||||
}
|
||||
|
||||
impl PlatformApplicationIo {
|
||||
@@ -49,7 +44,7 @@ impl PlatformApplicationIo {
|
||||
}
|
||||
}
|
||||
|
||||
pub fn inject_resource_proxy(&mut self, resources: Box<dyn LoadResource>) {
|
||||
pub fn inject_resource_proxy(&mut self, resources: Box<dyn resource::LoadResource>) {
|
||||
self.resources = Some(resources);
|
||||
}
|
||||
}
|
||||
@@ -65,7 +60,7 @@ impl ApplicationIo for PlatformApplicationIo {
|
||||
self.gpu_executor.as_ref()
|
||||
}
|
||||
|
||||
fn load_resource(&self, hash: ResourceHash) -> graphene_application_io::ResourceFuture {
|
||||
fn load_resource(&self, hash: resource::ResourceHash) -> resource::ResourceFuture {
|
||||
self.resources.as_ref().expect("Resource storage not initialized").load(hash)
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,12 +1,16 @@
|
||||
#[cfg(not(target_family = "wasm"))]
|
||||
pub mod mmap;
|
||||
#[cfg(target_family = "wasm")]
|
||||
pub mod opfs;
|
||||
|
||||
use graphene_application_io::{LoadResource, Resource, ResourceFuture, ResourceHash, ResourceStorage};
|
||||
use std::collections::HashMap;
|
||||
use std::sync::{Arc, Mutex};
|
||||
|
||||
pub use graphene_application_io::resource::{LoadResource, Resource, ResourceFuture, ResourceHash, ResourceStorage};
|
||||
#[cfg(not(target_family = "wasm"))]
|
||||
pub mod mmap;
|
||||
#[cfg(not(target_family = "wasm"))]
|
||||
pub use mmap::MmapResourceStorage;
|
||||
#[cfg(target_family = "wasm")]
|
||||
pub mod opfs;
|
||||
#[cfg(target_family = "wasm")]
|
||||
pub use opfs::OpfsResourceStorage;
|
||||
|
||||
#[derive(Debug, Default)]
|
||||
pub struct HashMapResourceStorage {
|
||||
resources: Mutex<HashMap<ResourceHash, Resource>>,
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use graphene_application_io::{LoadResource, Resource, ResourceFuture, ResourceHash, ResourceStorage};
|
||||
use graphene_application_io::resource::{LoadResource, Resource, ResourceFuture, ResourceHash, ResourceStorage};
|
||||
use mmap_io::mmap::{MemoryMappedFile, MmapMode};
|
||||
use std::collections::HashMap;
|
||||
use std::fs;
|
||||
|
||||
@@ -1,4 +1,4 @@
|
||||
use graphene_application_io::{LoadResource, Resource, ResourceFuture, ResourceHash, ResourceStorage};
|
||||
use graphene_application_io::resource::{LoadResource, Resource, ResourceFuture, ResourceHash, ResourceStorage};
|
||||
use js_sys::Uint8Array;
|
||||
use std::collections::{HashMap, HashSet, VecDeque};
|
||||
use std::pin::Pin;
|
||||
|
||||
@@ -396,7 +396,7 @@ tagged_value! {
|
||||
Footprint(Footprint),
|
||||
VectorModification(Box<VectorModification>),
|
||||
ImageData(Image<Color>),
|
||||
Resource(graphene_application_io::ResourceHash),
|
||||
Resource(graphene_application_io::resource::ResourceHash),
|
||||
// ==========
|
||||
// ENUM TYPES
|
||||
// ==========
|
||||
|
||||
Reference in New Issue
Block a user