concision_core/utils/pad/
impl_pad_mode.rs1use super::{PadAction, PadMode};
7use num_traits::Zero;
8
9impl<T> From<T> for PadMode<T> {
10 fn from(value: T) -> Self {
11 PadMode::Constant(value)
12 }
13}
14
15impl<T> PadMode<T> {
16 pub fn as_pad_action(&self) -> PadAction {
17 match *self {
18 PadMode::Constant(_) => PadAction::StopAfterCopy,
19 PadMode::Edge => PadAction::Clipping,
20 PadMode::Maximum => PadAction::Clipping,
21 PadMode::Mean => PadAction::Clipping,
22 PadMode::Median => PadAction::Clipping,
23 PadMode::Minimum => PadAction::Clipping,
24 PadMode::Mode => PadAction::Clipping,
25 PadMode::Reflect => PadAction::Reflecting,
26 PadMode::Symmetric => PadAction::Reflecting,
27 PadMode::Wrap => PadAction::Wrapping,
28 }
29 }
30
31 pub fn into_pad_action(self) -> PadAction {
32 match self {
33 PadMode::Constant(_) => PadAction::StopAfterCopy,
34 PadMode::Edge => PadAction::Clipping,
35 PadMode::Maximum => PadAction::Clipping,
36 PadMode::Mean => PadAction::Clipping,
37 PadMode::Median => PadAction::Clipping,
38 PadMode::Minimum => PadAction::Clipping,
39 PadMode::Mode => PadAction::Clipping,
40 PadMode::Reflect => PadAction::Reflecting,
41 PadMode::Symmetric => PadAction::Reflecting,
42 PadMode::Wrap => PadAction::Wrapping,
43 }
44 }
45 pub fn init(&self) -> T
46 where
47 T: Copy + Zero,
48 {
49 match *self {
50 PadMode::Constant(v) => v,
51 _ => T::zero(),
52 }
53 }
54}