#[ cfg(feature = "deserialize" )]
use serde::Deserialize;
#[ cfg(feature = "serialize" )]
use serde::Serialize;
use std::{num::NonZeroU32, ops::Range};
#[ derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
#[ cfg_attr(feature = "serialize" , derive(Serialize))]
#[ cfg_attr(feature = "deserialize" , derive(Deserialize))]
pub enum Coord {
Normalized,
Pixel,
}
impl Default for Coord {
fn default() -> Self {
Self ::Normalized
}
}
impl Coord {
pub const fn as_str(&self ) -> &'static str {
match *self {
Self ::Normalized => "normalized" ,
Self ::Pixel => "pixel" ,
}
}
}
#[ derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
#[ cfg_attr(feature = "serialize" , derive(Serialize))]
#[ cfg_attr(feature = "deserialize" , derive(Deserialize))]
pub enum Address {
Repeat,
MirroredRepeat,
ClampToEdge,
ClampToZero,
ClampToBorder,
}
impl Default for Address {
fn default() -> Self {
Self ::ClampToEdge
}
}
impl Address {
pub const fn as_str(&self ) -> &'static str {
match *self {
Self ::Repeat => "repeat" ,
Self ::MirroredRepeat => "mirrored_repeat" ,
Self ::ClampToEdge => "clamp_to_edge" ,
Self ::ClampToZero => "clamp_to_zero" ,
Self ::ClampToBorder => "clamp_to_border" ,
}
}
}
#[ derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
#[ cfg_attr(feature = "serialize" , derive(Serialize))]
#[ cfg_attr(feature = "deserialize" , derive(Deserialize))]
pub enum BorderColor {
TransparentBlack,
OpaqueBlack,
OpaqueWhite,
}
impl Default for BorderColor {
fn default() -> Self {
Self ::TransparentBlack
}
}
impl BorderColor {
pub const fn as_str(&self ) -> &'static str {
match *self {
Self ::TransparentBlack => "transparent_black" ,
Self ::OpaqueBlack => "opaque_black" ,
Self ::OpaqueWhite => "opaque_white" ,
}
}
}
#[ derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
#[ cfg_attr(feature = "serialize" , derive(Serialize))]
#[ cfg_attr(feature = "deserialize" , derive(Deserialize))]
pub enum Filter {
Nearest,
Linear,
}
impl Filter {
pub const fn as_str(&self ) -> &'static str {
match *self {
Self ::Nearest => "nearest" ,
Self ::Linear => "linear" ,
}
}
}
impl Default for Filter {
fn default() -> Self {
Self ::Nearest
}
}
#[ derive(Clone, Copy, Debug, PartialEq, Eq, Hash)]
#[ cfg_attr(feature = "serialize" , derive(Serialize))]
#[ cfg_attr(feature = "deserialize" , derive(Deserialize))]
pub enum CompareFunc {
Never,
Less,
LessEqual,
Greater,
GreaterEqual,
Equal,
NotEqual,
Always,
}
impl Default for CompareFunc {
fn default() -> Self {
Self ::Never
}
}
impl CompareFunc {
pub const fn as_str(&self ) -> &'static str {
match *self {
Self ::Never => "never" ,
Self ::Less => "less" ,
Self ::LessEqual => "less_equal" ,
Self ::Greater => "greater" ,
Self ::GreaterEqual => "greater_equal" ,
Self ::Equal => "equal" ,
Self ::NotEqual => "not_equal" ,
Self ::Always => "always" ,
}
}
}
#[ derive(Clone, Debug, Default, PartialEq)]
#[ cfg_attr(feature = "serialize" , derive(Serialize))]
#[ cfg_attr(feature = "deserialize" , derive(Deserialize))]
pub struct InlineSampler {
pub coord: Coord,
pub address: [Address; 3 ],
pub border_color: BorderColor,
pub mag_filter: Filter,
pub min_filter: Filter,
pub mip_filter: Option<Filter>,
pub lod_clamp: Option<Range<f32>>,
pub max_anisotropy: Option<NonZeroU32>,
pub compare_func: CompareFunc,
}
impl Eq for InlineSampler {}
#[ allow(renamed_and_removed_lints)]
#[ allow(clippy::derive_hash_xor_eq)]
impl std::hash::Hash for InlineSampler {
fn hash<H: std::hash::Hasher>(&self , hasher: &mut H) {
self .coord.hash(hasher);
self .address.hash(hasher);
self .border_color.hash(hasher);
self .mag_filter.hash(hasher);
self .min_filter.hash(hasher);
self .mip_filter.hash(hasher);
self .lod_clamp
.as_ref()
.map(|range| (range.start.to_bits(), range.end.to_bits()))
.hash(hasher);
self .max_anisotropy.hash(hasher);
self .compare_func.hash(hasher);
}
}
Messung V0.5 in Prozent C=90 H=98 G=94
¤ Diese beiden folgenden Angebotsgruppen bietet das Unternehmen0.11Angebot
(Wie Sie bei der Firma Beratungs- und Dienstleistungen beauftragen können 2026-06-18)
¤
*Eine klare Vorstellung vom Zielzustand