Struct Transformations
pub struct Transformations(/* private field */);
Output transformations
Many flags from libpng are not yet supported. A PR discussing/adding them would be nice.
/// Discard the alpha channel
const STRIP_ALPHA = 0x0002; // read only
/// Expand 1; 2 and 4-bit samples to bytes
const PACKING = 0x0004; // read and write
/// Change order of packed pixels to LSB first
const PACKSWAP = 0x0008; // read and write
/// Invert monochrome images
const INVERT_MONO = 0x0020; // read and write
/// Normalize pixels to the sBIT depth
const SHIFT = 0x0040; // read and write
/// Flip RGB to BGR; RGBA to BGRA
const BGR = 0x0080; // read and write
/// Flip RGBA to ARGB or GA to AG
const SWAP_ALPHA = 0x0100; // read and write
/// Byte-swap 16-bit samples
const SWAP_ENDIAN = 0x0200; // read and write
/// Change alpha from opacity to transparency
const INVERT_ALPHA = 0x0400; // read and write
const STRIP_FILLER = 0x0800; // write only
const STRIP_FILLER_BEFORE = 0x0800; // write only
const STRIP_FILLER_AFTER = 0x1000; // write only
const GRAY_TO_RGB = 0x2000; // read only
const EXPAND_16 = 0x4000; // read only
/// Similar to STRIP_16 but in libpng considering gamma?
/// Not entirely sure the documentation says it is more
/// accurate but doesn't say precisely how.
const SCALE_16 = 0x8000; // read only
Implementations
impl Transformations
fn normalize_to_color8() -> TransformationsTransform every input to 8bit grayscale or color.
This sets
EXPANDandSTRIP_16which is similar to the default transformation used by this library prior to0.17.
impl Transformations
const IDENTITY: Self = _;No transformation
const STRIP_16: Self = _;Strip 16-bit samples to 8 bits
const EXPAND: Self = _;Expand paletted images to RGB; expand grayscale images of less than 8-bit depth to 8-bit depth; and expand tRNS chunks to alpha channels.
const ALPHA: Self = _;Expand paletted images to include an alpha channel. Implies
EXPAND.
impl Transformations
const fn iter(&self) -> Iter<Transformations>Yield a set of contained flags values.
Each yielded flags value will correspond to a defined named flag. Any unknown bits will be yielded together as a final flags value.
const fn iter_names(&self) -> IterNames<Transformations>Yield a set of contained named flags values.
This method is like
iter, except only yields bits in contained named flags. Any unknown bits, or bits not corresponding to a contained flag will not be yielded.
impl Transformations
const fn empty() -> SelfGet a flags value with all bits unset.
const fn all() -> SelfGet a flags value with all known bits set.
const fn bits(&self) -> u32Get the underlying bits value.
The returned value is exactly the bits set in this flags value.
const fn from_bits(bits: u32) -> Option<Self>Convert from a bits value.
This method will return
Noneif any unknown bits are set.const fn from_bits_truncate(bits: u32) -> SelfConvert from a bits value, unsetting any unknown bits.
const fn from_bits_retain(bits: u32) -> SelfConvert from a bits value exactly.
fn from_name(name: &str) -> Option<Self>Get a flags value with the bits of a flag with the given name set.
This method will return
Noneifnameis empty or doesn't correspond to any named flag.const fn is_empty(&self) -> boolWhether all bits in
selfare unset.const fn is_all(&self) -> boolWhether all known bits in this flags value are set.
const fn intersects(&self, other: Self) -> boolWhether any set bits in
otherare also set inself.const fn contains(&self, other: Self) -> boolWhether all set bits in
otherare also set inself.fn insert(&mut self, other: Self)The bitwise or (
|) of the bits inselfandother.fn remove(&mut self, other: Self)The intersection of
selfwith the complement ofother(&!).This method is not equivalent to
self & !otherwhenotherhas unknown bits set.removewon't truncateother, but the!operator will.fn toggle(&mut self, other: Self)The bitwise exclusive-or (
^) of the bits inselfandother.fn set(&mut self, other: Self, value: bool)Call
insertwhenvalueistrueorremovewhenvalueisfalse.const fn intersection(self, other: Self) -> SelfThe bitwise and (
&) of the bits inselfandother.const fn union(self, other: Self) -> SelfThe bitwise or (
|) of the bits inselfandother.const fn difference(self, other: Self) -> SelfThe intersection of
selfwith the complement ofother(&!).This method is not equivalent to
self & !otherwhenotherhas unknown bits set.differencewon't truncateother, but the!operator will.const fn symmetric_difference(self, other: Self) -> SelfThe bitwise exclusive-or (
^) of the bits inselfandother.const fn complement(self) -> SelfThe bitwise negation (
!) of the bits inself, truncating the result.
Trait Implementations
impl Binary for Transformations
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl BitAnd for Transformations
type Output = Transformations;fn bitand(self, other: Self) -> SelfThe bitwise and (
&) of the bits inselfandother.
impl BitAndAssign for Transformations
fn bitand_assign(&mut self, other: Self)The bitwise and (
&) of the bits inselfandother.
impl BitOr for Transformations
type Output = Transformations;fn bitor(self, other: Transformations) -> SelfThe bitwise or (
|) of the bits inselfandother.
impl BitOrAssign for Transformations
fn bitor_assign(&mut self, other: Self)The bitwise or (
|) of the bits inselfandother.
impl BitXor for Transformations
type Output = Transformations;fn bitxor(self, other: Self) -> SelfThe bitwise exclusive-or (
^) of the bits inselfandother.
impl BitXorAssign for Transformations
fn bitxor_assign(&mut self, other: Self)The bitwise exclusive-or (
^) of the bits inselfandother.
impl Clone for Transformations
fn clone(&self) -> Self
impl Copy for Transformations
impl Debug for Transformations
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Default for Transformations
fn default() -> Transformations
impl Eq for Transformations
impl Extend<Transformations> for Transformations
fn extend<T: IntoIterator<Item = Self>>(&mut self, iterator: T)The bitwise or (
|) of the bits in each flags value.
impl Flags for Transformations
const FLAGS: &'static [Flag<Transformations>] = _;type Bits = u32;fn bits(&self) -> u32fn from_bits_retain(bits: u32) -> Transformationsfn all_named() -> Transformations
impl FromIterator<Transformations> for Transformations
fn from_iter<T: IntoIterator<Item = Self>>(iterator: T) -> SelfThe bitwise or (
|) of the bits in each flags value.
impl Hash for Transformations
fn hash<__H: Hasher>(&self, state: &mut __H)
impl IntoIterator for Transformations
type Item = Transformations;type IntoIter = Iter<Transformations>;fn into_iter(self) -> Self::IntoIter
impl LowerHex for Transformations
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Not for Transformations
type Output = Transformations;fn not(self) -> SelfThe bitwise negation (
!) of the bits inself, truncating the result.
impl Octal for Transformations
fn fmt(&self, f: &mut Formatter<'_>) -> Result
impl Ord for Transformations
fn cmp(&self, other: &Self) -> Ordering
impl PartialEq for Transformations
fn eq(&self, other: &Self) -> bool
impl PartialOrd for Transformations
fn partial_cmp(&self, other: &Self) -> Option<Ordering>
impl PublicFlags for Transformations
type Primitive = u32;type Internal = InternalBitFlags;
impl StructuralPartialEq for Transformations
impl Sub for Transformations
type Output = Transformations;fn sub(self, other: Self) -> SelfThe intersection of
selfwith the complement ofother(&!).This method is not equivalent to
self & !otherwhenotherhas unknown bits set.differencewon't truncateother, but the!operator will.
impl SubAssign for Transformations
fn sub_assign(&mut self, other: Self)The intersection of
selfwith the complement ofother(&!).This method is not equivalent to
self & !otherwhenotherhas unknown bits set.differencewon't truncateother, but the!operator will.
impl UpperHex for Transformations
fn fmt(&self, f: &mut Formatter<'_>) -> Result
Auto Trait Implementations
impl Freeze for Transformations
impl RefUnwindSafe for Transformations
impl Send for Transformations
impl Sync for Transformations
impl Unpin for Transformations
impl UnsafeUnpin for Transformations
impl UnwindSafe for Transformations
Blanket Implementations
impl<T> Any for Transformations
where
T: 'static + ?Sized,
fn type_id(&self) -> TypeId
impl<T> Borrow<T> for Transformations
where
T: ?Sized,
fn borrow(&self) -> &T
impl<T> BorrowMut<T> for Transformations
where
T: ?Sized,
fn borrow_mut(&mut self) -> &mut T
impl<T> CloneToUninit for Transformations
where
T: Clone,
unsafe fn clone_to_uninit(&self, dest: *mut u8)
impl<T> From<T> for Transformations
fn from(t: T) -> TReturns the argument unchanged.
impl<T> ToOwned for Transformations
where
T: Clone,
type Owned = T;fn to_owned(&self) -> Tfn clone_into(&self, target: &mut T)
impl<T, U> Into<U> for Transformations
where
U: From<T>,
fn into(self) -> UCalls
U::from(self).That is, this conversion is whatever the implementation of
[From]<T> for Uchooses to do.
impl<T, U> TryFrom<U> for Transformations
where
U: Into<T>,
type Error = never;fn try_from(value: U) -> Result<T, never>
impl<T, U> TryInto<U> for Transformations
where
U: TryFrom<T>,
type Error = <U as TryFrom<T>>::Error;fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>