summaryrefslogtreecommitdiffstats
path: root/core/src/image.rs
diff options
context:
space:
mode:
authorLibravatar Remmirad <remmirad@posteo.net>2023-05-31 15:46:21 +0200
committerLibravatar Héctor Ramón Jiménez <hector@hecrj.dev>2023-11-11 07:21:51 +0100
commit5759096a4c33935fcdf5f96606143e4f21159186 (patch)
tree1eb3270360e18a93306b476ea129e4dc27a5ffae /core/src/image.rs
parentef015a5e72802c059784e74d611f351df75403c0 (diff)
downloadiced-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.rs32
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