diff options
Diffstat (limited to 'core')
| -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  | 
