use super::*;
pub type TextureWrap2 = Vector2<TextureWrap>;
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "hexga_io", derive(Save, Load))]
#[derive(Clone, Copy, PartialEq, Eq, Hash, Debug)]
pub struct TextureParam
{
pub format : TextureFormat,
pub wrap : TextureWrap2,
pub min_filter: FilterMode,
pub mag_filter: FilterMode,
pub mipmap_filter: MipmapFilterMode,
pub allocate_mipmaps: bool,
pub size : Point2,
pub sample_count: i32,
pub access : TextureAccess,
}
pub struct TextureData
{
pub param : TextureParam,
pub id : Option<RawTextureID>,
pub source : TextureSource,
}
#[derive(Clone, PartialEq, Eq, Hash, Debug)]
pub enum TextureSource
{
Empty,
RGBA8(Vec<u8>), }
#[repr(u8)]
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "hexga_io", derive(Save, Load))]
#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)]
pub enum TextureFormat {
RGBA8,
}
#[derive(Clone, Debug, Copy, PartialEq, Eq, Hash, Default, PartialOrd, Ord)]
pub struct RawTextureID { pub index : usize }
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "hexga_io", derive(Save, Load))]
#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)]
pub enum TextureAccess {
Static,
RenderTarget,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "hexga_io", derive(Save, Load))]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
pub enum MipmapFilterMode {
None,
Linear,
Nearest,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "hexga_io", derive(Save, Load))]
#[derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
pub enum FilterMode {
Linear,
Nearest,
}
#[cfg_attr(feature = "serde", derive(Serialize, Deserialize))]
#[cfg_attr(feature = "hexga_io", derive(Save, Load))]
#[derive(Debug, PartialEq, Eq, Clone, Copy, Hash)]
pub enum TextureWrap {
Repeat,
Mirror,
Clamp,
}