From f5dcbb883e715316660c8de034e2dc56d80d71b0 Mon Sep 17 00:00:00 2001 From: relrelb Date: Tue, 11 Oct 2022 12:42:03 +0300 Subject: [PATCH] swf: Extract filters to separate files For better code organization. --- swf/src/types.rs | 107 ++++--------------------- swf/src/types/bevel_filter.rs | 16 ++++ swf/src/types/blur_filter.rs | 8 ++ swf/src/types/color_matrix_filter.rs | 6 ++ swf/src/types/convolution_filter.rs | 13 +++ swf/src/types/drop_shadow_filter.rs | 14 ++++ swf/src/types/glow_filter.rs | 12 +++ swf/src/types/gradient_bevel_filter.rs | 15 ++++ swf/src/types/gradient_glow_filter.rs | 15 ++++ 9 files changed, 115 insertions(+), 91 deletions(-) create mode 100644 swf/src/types/bevel_filter.rs create mode 100644 swf/src/types/blur_filter.rs create mode 100644 swf/src/types/color_matrix_filter.rs create mode 100644 swf/src/types/convolution_filter.rs create mode 100644 swf/src/types/drop_shadow_filter.rs create mode 100644 swf/src/types/glow_filter.rs create mode 100644 swf/src/types/gradient_bevel_filter.rs create mode 100644 swf/src/types/gradient_glow_filter.rs diff --git a/swf/src/types.rs b/swf/src/types.rs index 8ffa7f009..a399b5e38 100644 --- a/swf/src/types.rs +++ b/swf/src/types.rs @@ -9,14 +9,30 @@ use enum_map::Enum; use std::fmt::{self, Display, Formatter}; use std::str::FromStr; +mod bevel_filter; +mod blur_filter; mod color; +mod color_matrix_filter; +mod convolution_filter; +mod drop_shadow_filter; mod fixed; +mod glow_filter; +mod gradient_bevel_filter; +mod gradient_glow_filter; mod matrix; mod rectangle; mod twips; +pub use bevel_filter::BevelFilter; +pub use blur_filter::BlurFilter; pub use color::Color; +pub use color_matrix_filter::ColorMatrixFilter; +pub use convolution_filter::ConvolutionFilter; +pub use drop_shadow_filter::DropShadowFilter; pub use fixed::{Fixed16, Fixed8}; +pub use glow_filter::GlowFilter; +pub use gradient_bevel_filter::GradientBevelFilter; +pub use gradient_glow_filter::GradientGlowFilter; pub use matrix::Matrix; pub use rectangle::Rectangle; pub use twips::Twips; @@ -355,97 +371,6 @@ pub enum Filter { GradientBevelFilter(Box), } -#[derive(Clone, Debug, Eq, PartialEq)] -pub struct DropShadowFilter { - pub color: Color, - pub blur_x: Fixed16, - pub blur_y: Fixed16, - pub angle: Fixed16, - pub distance: Fixed16, - pub strength: Fixed8, - pub is_inner: bool, - pub is_knockout: bool, - pub num_passes: u8, -} - -#[derive(Clone, Debug, Eq, PartialEq)] -pub struct BlurFilter { - pub blur_x: Fixed16, - pub blur_y: Fixed16, - pub num_passes: u8, -} - -#[derive(Clone, Debug, Eq, PartialEq)] -pub struct GlowFilter { - pub color: Color, - pub blur_x: Fixed16, - pub blur_y: Fixed16, - pub strength: Fixed8, - pub is_inner: bool, - pub is_knockout: bool, - pub num_passes: u8, -} - -#[derive(Clone, Debug, Eq, PartialEq)] -pub struct BevelFilter { - pub shadow_color: Color, - pub highlight_color: Color, - pub blur_x: Fixed16, - pub blur_y: Fixed16, - pub angle: Fixed16, - pub distance: Fixed16, - pub strength: Fixed8, - pub is_inner: bool, - pub is_knockout: bool, - pub is_on_top: bool, - pub num_passes: u8, -} - -#[derive(Clone, Debug, Eq, PartialEq)] -pub struct GradientGlowFilter { - pub colors: Vec, - pub blur_x: Fixed16, - pub blur_y: Fixed16, - pub angle: Fixed16, - pub distance: Fixed16, - pub strength: Fixed8, - pub is_inner: bool, - pub is_knockout: bool, - pub is_on_top: bool, - pub num_passes: u8, -} - -#[derive(Clone, Debug, Eq, PartialEq)] -pub struct ConvolutionFilter { - pub num_matrix_rows: u8, - pub num_matrix_cols: u8, - pub matrix: Vec, - pub divisor: Fixed16, - pub bias: Fixed16, - pub default_color: Color, - pub is_clamped: bool, - pub is_preserve_alpha: bool, -} - -#[derive(Clone, Debug, Eq, PartialEq)] -pub struct ColorMatrixFilter { - pub matrix: [Fixed16; 20], -} - -#[derive(Clone, Debug, Eq, PartialEq)] -pub struct GradientBevelFilter { - pub colors: Vec, - pub blur_x: Fixed16, - pub blur_y: Fixed16, - pub angle: Fixed16, - pub distance: Fixed16, - pub strength: Fixed8, - pub is_inner: bool, - pub is_knockout: bool, - pub is_on_top: bool, - pub num_passes: u8, -} - #[derive(Default, Clone, Copy, Debug, Eq, FromPrimitive, PartialEq, Enum)] pub enum BlendMode { #[default] diff --git a/swf/src/types/bevel_filter.rs b/swf/src/types/bevel_filter.rs new file mode 100644 index 000000000..c08dadc78 --- /dev/null +++ b/swf/src/types/bevel_filter.rs @@ -0,0 +1,16 @@ +use crate::{Color, Fixed16, Fixed8}; + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct BevelFilter { + pub shadow_color: Color, + pub highlight_color: Color, + pub blur_x: Fixed16, + pub blur_y: Fixed16, + pub angle: Fixed16, + pub distance: Fixed16, + pub strength: Fixed8, + pub is_inner: bool, + pub is_knockout: bool, + pub is_on_top: bool, + pub num_passes: u8, +} diff --git a/swf/src/types/blur_filter.rs b/swf/src/types/blur_filter.rs new file mode 100644 index 000000000..547801c15 --- /dev/null +++ b/swf/src/types/blur_filter.rs @@ -0,0 +1,8 @@ +use crate::Fixed16; + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct BlurFilter { + pub blur_x: Fixed16, + pub blur_y: Fixed16, + pub num_passes: u8, +} diff --git a/swf/src/types/color_matrix_filter.rs b/swf/src/types/color_matrix_filter.rs new file mode 100644 index 000000000..9245778d7 --- /dev/null +++ b/swf/src/types/color_matrix_filter.rs @@ -0,0 +1,6 @@ +use crate::Fixed16; + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct ColorMatrixFilter { + pub matrix: [Fixed16; 20], +} diff --git a/swf/src/types/convolution_filter.rs b/swf/src/types/convolution_filter.rs new file mode 100644 index 000000000..2b0d41b11 --- /dev/null +++ b/swf/src/types/convolution_filter.rs @@ -0,0 +1,13 @@ +use crate::{Color, Fixed16}; + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct ConvolutionFilter { + pub num_matrix_rows: u8, + pub num_matrix_cols: u8, + pub matrix: Vec, + pub divisor: Fixed16, + pub bias: Fixed16, + pub default_color: Color, + pub is_clamped: bool, + pub is_preserve_alpha: bool, +} diff --git a/swf/src/types/drop_shadow_filter.rs b/swf/src/types/drop_shadow_filter.rs new file mode 100644 index 000000000..eb67edf93 --- /dev/null +++ b/swf/src/types/drop_shadow_filter.rs @@ -0,0 +1,14 @@ +use crate::{Color, Fixed16, Fixed8}; + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct DropShadowFilter { + pub color: Color, + pub blur_x: Fixed16, + pub blur_y: Fixed16, + pub angle: Fixed16, + pub distance: Fixed16, + pub strength: Fixed8, + pub is_inner: bool, + pub is_knockout: bool, + pub num_passes: u8, +} diff --git a/swf/src/types/glow_filter.rs b/swf/src/types/glow_filter.rs new file mode 100644 index 000000000..8fc8d76b7 --- /dev/null +++ b/swf/src/types/glow_filter.rs @@ -0,0 +1,12 @@ +use crate::{Color, Fixed16, Fixed8}; + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct GlowFilter { + pub color: Color, + pub blur_x: Fixed16, + pub blur_y: Fixed16, + pub strength: Fixed8, + pub is_inner: bool, + pub is_knockout: bool, + pub num_passes: u8, +} diff --git a/swf/src/types/gradient_bevel_filter.rs b/swf/src/types/gradient_bevel_filter.rs new file mode 100644 index 000000000..c65890b77 --- /dev/null +++ b/swf/src/types/gradient_bevel_filter.rs @@ -0,0 +1,15 @@ +use crate::{Fixed16, Fixed8, GradientRecord}; + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct GradientBevelFilter { + pub colors: Vec, + pub blur_x: Fixed16, + pub blur_y: Fixed16, + pub angle: Fixed16, + pub distance: Fixed16, + pub strength: Fixed8, + pub is_inner: bool, + pub is_knockout: bool, + pub is_on_top: bool, + pub num_passes: u8, +} diff --git a/swf/src/types/gradient_glow_filter.rs b/swf/src/types/gradient_glow_filter.rs new file mode 100644 index 000000000..d88970843 --- /dev/null +++ b/swf/src/types/gradient_glow_filter.rs @@ -0,0 +1,15 @@ +use crate::{Fixed16, Fixed8, GradientRecord}; + +#[derive(Clone, Debug, Eq, PartialEq)] +pub struct GradientGlowFilter { + pub colors: Vec, + pub blur_x: Fixed16, + pub blur_y: Fixed16, + pub angle: Fixed16, + pub distance: Fixed16, + pub strength: Fixed8, + pub is_inner: bool, + pub is_knockout: bool, + pub is_on_top: bool, + pub num_passes: u8, +}