diff options
author | 2023-05-31 15:46:21 +0200 | |
---|---|---|
committer | 2023-11-11 07:21:51 +0100 | |
commit | 5759096a4c33935fcdf5f96606143e4f21159186 (patch) | |
tree | 1eb3270360e18a93306b476ea129e4dc27a5ffae /core/src/image.rs | |
parent | ef015a5e72802c059784e74d611f351df75403c0 (diff) | |
download | iced-5759096a4c33935fcdf5f96606143e4f21159186.tar.gz iced-5759096a4c33935fcdf5f96606143e4f21159186.tar.bz2 iced-5759096a4c33935fcdf5f96606143e4f21159186.zip |
Implement texture filtering options
Diffstat (limited to 'core/src/image.rs')
-rw-r--r-- | core/src/image.rs | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/core/src/image.rs b/core/src/image.rs index 85d9d475..9a6011a3 100644 --- a/core/src/image.rs +++ b/core/src/image.rs @@ -5,11 +5,31 @@ use std::hash::{Hash, Hasher as _}; use std::path::PathBuf; use std::sync::Arc; +/// Image filter method +#[derive(Default, Debug, Clone, Copy, PartialEq, Eq, Hash)] +pub enum FilterMethod { + /// Bilinear interpolation + #[default] + Linear, + /// Nearest Neighbor + Nearest, +} + +/// Texture filter settings +#[derive(Default, Debug, Clone, PartialEq, Eq, Hash)] +pub struct TextureFilter { + /// Filter for scaling the image down. + pub min: FilterMethod, + /// Filter for scaling the image up. + pub mag: FilterMethod, +} + /// A handle of some image data. #[derive(Debug, Clone, PartialEq, Eq)] pub struct Handle { id: u64, data: Data, + filter: TextureFilter, } impl Handle { @@ -56,6 +76,7 @@ impl Handle { Handle { id: hasher.finish(), data, + filter: TextureFilter::default(), } } @@ -68,6 +89,17 @@ impl Handle { pub fn data(&self) -> &Data { &self.data } + + /// Returns a reference to the [`TextureFilter`]. + pub fn filter(&self) -> &TextureFilter { + &self.filter + } + + /// Sets the texture filtering methods. + pub fn set_filter(mut self, filter: TextureFilter) -> Self { + self.filter = filter; + self + } } impl<T> From<T> for Handle |