Skip to content

Commit df761f9

Browse files
committed
[*] refactor: video-editor
1 parent ca49ead commit df761f9

File tree

13 files changed

+372
-111
lines changed

13 files changed

+372
-111
lines changed

lib/video-editor/src/filters/audio.rs

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,3 +17,17 @@ pub use mute_left::MuteLeftFilter;
1717
pub use mute_right::MuteRightFilter;
1818
pub use noise_gate::NoiseGateFilter;
1919
pub use normalize::NormalizeFilter;
20+
21+
pub fn all_filter_names() -> &'static [&'static str] {
22+
&[
23+
CompressorFilter::NAME,
24+
FadeInFilter::NAME,
25+
FadeOutFilter::NAME,
26+
GainFilter::NAME,
27+
LimiterFilter::NAME,
28+
MuteLeftFilter::NAME,
29+
MuteRightFilter::NAME,
30+
NoiseGateFilter::NAME,
31+
NormalizeFilter::NAME,
32+
]
33+
}

lib/video-editor/src/filters/image.rs

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -21,3 +21,19 @@ pub use wipe_left_to_right::WipeLeftToRightFilter;
2121
pub use wipe_top_to_bottom::WipeTopToBottomFilter;
2222
pub use zoom_in::ZoomInFilter;
2323
pub use zoom_out::ZoomOutFilter;
24+
25+
pub fn all_filter_names() -> &'static [&'static str] {
26+
&[
27+
ColorBalanceFilter::NAME,
28+
CrossDissolveFilter::NAME,
29+
FadeInFilter::NAME,
30+
FadeOutFilter::NAME,
31+
MovingFilter::NAME,
32+
SlideFromLeftFilter::NAME,
33+
SlideFromTopFilter::NAME,
34+
WipeLeftToRightFilter::NAME,
35+
WipeTopToBottomFilter::NAME,
36+
ZoomInFilter::NAME,
37+
ZoomOutFilter::NAME,
38+
]
39+
}
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,2 +1,5 @@
11
pub mod renderer;
22
pub mod style;
3+
4+
pub use style::all_filter_names;
5+

lib/video-editor/src/filters/subtitle/style.rs

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,10 +6,34 @@ pub mod font_size;
66
pub mod margin;
77
pub mod padding;
88

9+
pub use alignment::AlignmentFilter;
10+
pub use border::{BorderRadiusFilter, OutlineWidthFilter};
11+
pub use colors::{BackgroundColorFilter, OutlineColorFilter, PrimaryColorFilter};
12+
pub use font_path::FontPathFilter;
13+
pub use font_size::FontSizeFilter;
14+
pub use margin::{MarginHorizontalFilter, MarginVerticalFilter};
15+
pub use padding::PaddingFilter;
16+
917
use crate::filters::SubtitleFilter;
1018
use image::Rgba;
1119
use std::path::PathBuf;
1220

21+
pub fn all_filter_names() -> &'static [&'static str] {
22+
&[
23+
AlignmentFilter::NAME,
24+
BackgroundColorFilter::NAME,
25+
BorderRadiusFilter::NAME,
26+
FontPathFilter::NAME,
27+
FontSizeFilter::NAME,
28+
MarginHorizontalFilter::NAME,
29+
MarginVerticalFilter::NAME,
30+
OutlineColorFilter::NAME,
31+
OutlineWidthFilter::NAME,
32+
PaddingFilter::NAME,
33+
PrimaryColorFilter::NAME,
34+
]
35+
}
36+
1337
#[derive(Debug, Clone, derivative::Derivative, derive_setters::Setters)]
1438
#[derivative(Default)]
1539
#[setters(prefix = "with_")]

lib/video-editor/src/filters/video.rs

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,25 @@ pub use scale_down::ScaleDownFilter;
2828
pub use sharpen::SharpenFilter;
2929
pub use zoom::ZoomFilter;
3030

31+
pub fn all_filter_names() -> &'static [&'static str] {
32+
&[
33+
BrightnessFilter::NAME,
34+
ChromaKeyFilter::NAME,
35+
ContrastFilter::NAME,
36+
CropFilter::NAME,
37+
DrawCircleFilter::NAME,
38+
DrawRectangleFilter::NAME,
39+
FlipFilter::NAME,
40+
GaussianBlurFilter::NAME,
41+
PositionFilter::NAME,
42+
RotationFilter::NAME,
43+
SaturationFilter::NAME,
44+
ScaleDownFilter::NAME,
45+
SharpenFilter::NAME,
46+
ZoomFilter::NAME,
47+
]
48+
}
49+
3150
pub fn rgba_to_photon(
3251
img: &image::ImageBuffer<image::Rgba<u8>, Vec<u8>>,
3352
) -> crate::Result<photon_rs::PhotonImage> {

wayshot/ui/base/icon.slint

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -314,6 +314,7 @@ export global Icons {
314314
out property <image> left-right-gap-light: @image-url("../images/icons/left-right-gap-light.svg");
315315
out property <image> thumbnails-light: @image-url("../images/icons/thumbnails-light.svg");
316316
out property <image> import2-light: @image-url("../images/icons/import2-light.svg");
317+
out property <image> preset-light: @image-url("../images/icons/preset-light.svg");
317318

318319
out property <image> landing-account: @image-url("../images/landing/landing-account.svg");
319320
out property <image> landing-language-switch: @image-url("../images/landing/landing-language-switch.svg");
Lines changed: 1 addition & 0 deletions
Loading

wayshot/ui/logic.slint

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -304,22 +304,17 @@ export global Logic {
304304
callback video-editor-library-item-add-to-track(index: int);
305305
callback video-editor-library-item-remove(index: int);
306306
callback video-editor-library-item-import();
307-
callback video-editor-library-filter-video();
308-
callback video-editor-library-filter-audio();
309-
callback video-editor-library-filter-image();
307+
callback video-editor-library-all-files();
308+
callback video-editor-library-all-videos();
309+
callback video-editor-library-all-audios();
310+
callback video-editor-library-all-images();
310311

311312
callback video-editor-export-video(config: VideoEditorExportVideoConfig);
312313
callback video-editor-export-audio(config: VideoEditorExportAudioConfig);
313314
callback video-editor-export-subtitle(ty: SubtitleType);
314315
callback video-editor-export-queue-cancel(index: int);
315316
callback video-editor-export-queue-remove(index: int);
316317

317-
callback video-editor-segment-up-filter(index: int);
318-
callback video-editor-segment-down-filter(index: int);
319-
callback video-editor-segment-remove-filter(index: int);
320-
callback video-editor-segment-toggle-filter(index: int);
321-
callback video-editor-segment-add-filter(track-type: VideoEditorTrackType, filter-name: string);
322-
323318
pure callback video-editor-selected-segment() -> VideoEditorTrackSegment;
324319
video-editor-selected-segment => {
325320
return Store.video-editor-tracks-manager.tracks[0].segments[0];

wayshot/ui/panel/desktop/video-editor/filter.slint

Lines changed: 32 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,14 @@
1-
export struct SegmentFilterListItem {
1+
export struct SegmentFilter {
22
enabled: bool,
33
name: string,
44
detail: string, // 经过序列化后的json
55
}
66

7+
export struct PresetFilter {
8+
name: string,
9+
filters: [SegmentFilter],
10+
}
11+
712
export struct BrightnessDetail {
813
adjustment: float, // -100.0 to 100.0 (0.0 = no change)
914
}
@@ -14,6 +19,32 @@ export global VEFilter {
1419
in-out property <[string]> overlay-filters: [];
1520
in-out property <[string]> subtitle-filters: [];
1621

22+
in-out property <[PresetFilter]> video-preset-filters: [
23+
{
24+
name: "preset filter1",
25+
},
26+
{
27+
name: "preset filter2",
28+
},
29+
];
30+
in-out property <[PresetFilter]> audio-preset-filters: [];
31+
in-out property <[PresetFilter]> overlay-preset-filters: [];
32+
in-out property <[PresetFilter]> subtitle-preset-filters: [];
33+
34+
// 用于创建预设滤镜时,临时存储选中的滤镜
35+
in-out property <[PresetFilter]> cache-preset-filters: [];
36+
37+
callback up-filter(index: int);
38+
callback down-filter(index: int);
39+
callback remove-filter(index: int);
40+
callback toggle-filter(index: int);
41+
callback add-filter(filter-name: string);
42+
43+
callback create-preset-filter(name: string);
44+
callback add-preset-filter(filter: PresetFilter);
45+
callback add-cache-preset-filter(filter: SegmentFilter);
46+
callback remove-cache-preset-filter(filter: SegmentFilter);
47+
1748
pure callback from-brightness-json(json: string) -> BrightnessDetail;
1849
callback modify-brightness-filter(index: int, config: BrightnessDetail);
1950
}

wayshot/ui/panel/desktop/video-editor/left-panel/media-library.slint

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -54,7 +54,7 @@ component Header inherits Rectangle {
5454

5555
clicked => {
5656
checked-index = 0;
57-
Logic.video-editor-library-filter-video();
57+
Logic.video-editor-library-all-files();
5858
}
5959
}
6060

@@ -65,7 +65,7 @@ component Header inherits Rectangle {
6565

6666
clicked => {
6767
checked-index = 1;
68-
Logic.video-editor-library-filter-video();
68+
Logic.video-editor-library-all-videos();
6969
}
7070
}
7171

@@ -76,7 +76,7 @@ component Header inherits Rectangle {
7676

7777
clicked => {
7878
checked-index = 2;
79-
Logic.video-editor-library-filter-audio();
79+
Logic.video-editor-library-all-audios();
8080
}
8181
}
8282

@@ -87,7 +87,7 @@ component Header inherits Rectangle {
8787

8888
clicked => {
8989
checked-index = 3;
90-
Logic.video-editor-library-filter-image();
90+
Logic.video-editor-library-all-images();
9191
}
9292
}
9393
}

0 commit comments

Comments
 (0)