Skip to content

Commit f1aa1d2

Browse files
committed
[*] refactor video editor
1 parent ba7070d commit f1aa1d2

File tree

19 files changed

+56
-104
lines changed

19 files changed

+56
-104
lines changed

wayshot/src/logic/video_editor/conversion.rs

Lines changed: 16 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -668,12 +668,21 @@ pub fn layer_frame_to_ui(layer: &LayerFrame) -> Option<UIVideoEditorLayerImage>
668668
.from_segment
669669
.as_ref()
670670
.and_then(|(_, segment)| {
671-
segment
672-
.video_filters
673-
.iter()
674-
.find(|f| f.inner.name() == TransformFilter::NAME)
675-
.and_then(|f| f.inner.as_any().downcast_ref::<TransformFilter>())
676-
.map(|t| t.clone().into())
671+
if segment.metadata.is_overlay() {
672+
segment
673+
.overlay_filters
674+
.iter()
675+
.find(|f| f.inner.name() == TransformFilter::NAME)
676+
.and_then(|f| f.inner.as_any().downcast_ref::<TransformFilter>())
677+
.map(|t| t.clone().into())
678+
} else {
679+
segment
680+
.video_filters
681+
.iter()
682+
.find(|f| f.inner.name() == TransformFilter::NAME)
683+
.and_then(|f| f.inner.as_any().downcast_ref::<TransformFilter>())
684+
.map(|t| t.clone().into())
685+
}
677686
})
678687
.unwrap_or_else(|| TransformFilter::default().into());
679688

@@ -965,63 +974,5 @@ fn overlay_filters_to_ui(filters: &[Arc<OverlayFilterWrapper>]) -> Vec<UISegment
965974
}
966975

967976
pub fn overlay_filter_to_json_detail(filter: &Box<dyn VideoFilter>) -> String {
968-
match filter.name() {
969-
ColorBalanceFilter::NAME => {
970-
if let Some(f) = filter.as_any().downcast_ref::<ColorBalanceFilter>() {
971-
return serde_json::to_string(f).unwrap_or_default();
972-
}
973-
}
974-
CrossDissolveFilter::NAME => {
975-
if let Some(f) = filter.as_any().downcast_ref::<CrossDissolveFilter>() {
976-
return serde_json::to_string(f).unwrap_or_default();
977-
}
978-
}
979-
FadeInFilter::NAME => {
980-
if let Some(f) = filter.as_any().downcast_ref::<FadeInFilter>() {
981-
return serde_json::to_string(f).unwrap_or_default();
982-
}
983-
}
984-
FadeOutFilter::NAME => {
985-
if let Some(f) = filter.as_any().downcast_ref::<FadeOutFilter>() {
986-
return serde_json::to_string(f).unwrap_or_default();
987-
}
988-
}
989-
MovingFilter::NAME => {
990-
if let Some(f) = filter.as_any().downcast_ref::<MovingFilter>() {
991-
return serde_json::to_string(f).unwrap_or_default();
992-
}
993-
}
994-
SlideFromLeftFilter::NAME => {
995-
if let Some(f) = filter.as_any().downcast_ref::<SlideFromLeftFilter>() {
996-
return serde_json::to_string(f).unwrap_or_default();
997-
}
998-
}
999-
SlideFromTopFilter::NAME => {
1000-
if let Some(f) = filter.as_any().downcast_ref::<SlideFromTopFilter>() {
1001-
return serde_json::to_string(f).unwrap_or_default();
1002-
}
1003-
}
1004-
WipeLeftToRightFilter::NAME => {
1005-
if let Some(f) = filter.as_any().downcast_ref::<WipeLeftToRightFilter>() {
1006-
return serde_json::to_string(f).unwrap_or_default();
1007-
}
1008-
}
1009-
WipeTopToBottomFilter::NAME => {
1010-
if let Some(f) = filter.as_any().downcast_ref::<WipeTopToBottomFilter>() {
1011-
return serde_json::to_string(f).unwrap_or_default();
1012-
}
1013-
}
1014-
ZoomInFilter::NAME => {
1015-
if let Some(f) = filter.as_any().downcast_ref::<ZoomInFilter>() {
1016-
return serde_json::to_string(f).unwrap_or_default();
1017-
}
1018-
}
1019-
ZoomOutFilter::NAME => {
1020-
if let Some(f) = filter.as_any().downcast_ref::<ZoomOutFilter>() {
1021-
return serde_json::to_string(f).unwrap_or_default();
1022-
}
1023-
}
1024-
_ => {}
1025-
}
1026-
String::new()
977+
video_filter_to_json_detail(filter)
1027978
}

wayshot/ui/panel/desktop/video-editor/preview/preview-transform-layers.slint

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,6 +58,7 @@ export component PreviewTransformLayers inherits Rectangle {
5858

5959
private property <VideoEditorLayerImage> layer: layers[layers.length - 1 - index];
6060
private property <TransformDetail> transform: layer.transform;
61+
private property <bool> is-edited-track: Store.video-editor-current-edited-track-index == layer.track-index;
6162

6263
container-rec := Rectangle {
6364
x: root.width * transform.center-x-percent - self.width / 2;
@@ -119,7 +120,7 @@ export component PreviewTransformLayers inherits Rectangle {
119120
image-fit: ImageFit.contain;
120121
transform-rotation: transform.rotation;
121122

122-
Rectangle {
123+
if is-edited-track: Rectangle {
123124
top-line := HorizontalLayout {
124125
x: top-left-handle.x + top-left-handle.width / 2;
125126
y: top-left-handle.y + top-left-handle.height / 2;
@@ -238,7 +239,7 @@ export component PreviewTransformLayers inherits Rectangle {
238239
}
239240
}
240241

241-
TouchArea {
242+
if is-edited-track: TouchArea {
242243
scroll-event(event) => {
243244
if (Store.video-editor-keyboard-modifiers.shift) {
244245
if (event.delta-y > 0) {
@@ -271,7 +272,7 @@ export component PreviewTransformLayers inherits Rectangle {
271272
}
272273
}
273274

274-
TouchArea {
275+
if is-edited-track: TouchArea {
275276
mouse-cursor: self.pressed ? grabbing : grab;
276277

277278
moved => {
@@ -288,7 +289,7 @@ export component PreviewTransformLayers inherits Rectangle {
288289
}
289290
}
290291

291-
Rectangle {
292+
if is-edited-track: Rectangle {
292293
y: img.height / 2 - self.height / 2;
293294
width: Theme.icon-size * 1.5;
294295
height: self.width;

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

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -131,7 +131,7 @@ component PreviewWindow inherits Rectangle {
131131
private property <int> preview-width: preivew-size.width;
132132
private property <int> preview-height: preivew-size.height;
133133
private property <float> width-height-rate: preview-width / preview-height;
134-
private property <bool> in-edit-mode: !Store.video-editor-is-previewing && VEFilter.is-in-edit-mode;
134+
private property <bool> in-edit-mode: !Store.video-editor-is-previewing && VEFilter.is-in-edit-mode && VEFilter.selected-filter.enabled;
135135

136136
changed width-height-rate => {
137137
self.update-size();

wayshot/ui/panel/desktop/video-editor/right-panel/filter/audio/compressor.slint

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export component Compressor inherits Rectangle {
3131
LineInput {
3232
enabled: selected-filter.enabled;
3333
input-type: InputType.decimal;
34-
text: config.threshold;
34+
text: config.threshold.to-fixed(2);
3535
border-color: self.has-focus ? Theme.thirdly-brand-color : Theme.is-dark ? Theme.base-border-color.brighter(20%) : Theme.base-border-color.darker(10%);
3636

3737
accepted => {
@@ -50,7 +50,7 @@ export component Compressor inherits Rectangle {
5050
LineInput {
5151
enabled: selected-filter.enabled;
5252
input-type: InputType.decimal;
53-
text: config.ratio;
53+
text: config.ratio.to-fixed(2);
5454
border-color: self.has-focus ? Theme.thirdly-brand-color : Theme.is-dark ? Theme.base-border-color.brighter(20%) : Theme.base-border-color.darker(10%);
5555

5656
accepted => {
@@ -69,7 +69,7 @@ export component Compressor inherits Rectangle {
6969
LineInput {
7070
enabled: selected-filter.enabled;
7171
input-type: InputType.decimal;
72-
text: config.attack;
72+
text: config.attack.to-fixed(2);
7373
border-color: self.has-focus ? Theme.thirdly-brand-color : Theme.is-dark ? Theme.base-border-color.brighter(20%) : Theme.base-border-color.darker(10%);
7474

7575
accepted => {
@@ -88,7 +88,7 @@ export component Compressor inherits Rectangle {
8888
LineInput {
8989
enabled: selected-filter.enabled;
9090
input-type: InputType.decimal;
91-
text: config.release;
91+
text: config.release.to-fixed(2);
9292
border-color: self.has-focus ? Theme.thirdly-brand-color : Theme.is-dark ? Theme.base-border-color.brighter(20%) : Theme.base-border-color.darker(10%);
9393

9494
accepted => {
@@ -107,7 +107,7 @@ export component Compressor inherits Rectangle {
107107
LineInput {
108108
enabled: selected-filter.enabled;
109109
input-type: InputType.decimal;
110-
text: config.makeup-gain;
110+
text: config.makeup-gain.to-fixed(2);
111111
border-color: self.has-focus ? Theme.thirdly-brand-color : Theme.is-dark ? Theme.base-border-color.brighter(20%) : Theme.base-border-color.darker(10%);
112112

113113
accepted => {

wayshot/ui/panel/desktop/video-editor/right-panel/filter/audio/gain.slint

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export component Gain inherits Rectangle {
3131
LineInput {
3232
enabled: selected-filter.enabled;
3333
input-type: InputType.decimal;
34-
text: config.amplitude;
34+
text: config.amplitude.to-fixed(2);
3535
border-color: self.has-focus ? Theme.thirdly-brand-color : Theme.is-dark ? Theme.base-border-color.brighter(20%) : Theme.base-border-color.darker(10%);
3636

3737
accepted => {

wayshot/ui/panel/desktop/video-editor/right-panel/filter/audio/limiter.slint

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export component Limiter inherits Rectangle {
3131
LineInput {
3232
enabled: selected-filter.enabled;
3333
input-type: InputType.decimal;
34-
text: config.threshold;
34+
text: config.threshold.to-fixed(2);
3535
border-color: self.has-focus ? Theme.thirdly-brand-color : Theme.is-dark ? Theme.base-border-color.brighter(20%) : Theme.base-border-color.darker(10%);
3636

3737
accepted => {

wayshot/ui/panel/desktop/video-editor/right-panel/filter/audio/noise-gate.slint

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export component NoiseGate inherits Rectangle {
3131
LineInput {
3232
enabled: selected-filter.enabled;
3333
input-type: InputType.decimal;
34-
text: config.threshold;
34+
text: config.threshold.to-fixed(2);
3535
border-color: self.has-focus ? Theme.thirdly-brand-color : Theme.is-dark ? Theme.base-border-color.brighter(20%) : Theme.base-border-color.darker(10%);
3636

3737
accepted => {
@@ -50,7 +50,7 @@ export component NoiseGate inherits Rectangle {
5050
LineInput {
5151
enabled: selected-filter.enabled;
5252
input-type: InputType.decimal;
53-
text: config.ratio;
53+
text: config.ratio.to-fixed(2);
5454
border-color: self.has-focus ? Theme.thirdly-brand-color : Theme.is-dark ? Theme.base-border-color.brighter(20%) : Theme.base-border-color.darker(10%);
5555

5656
accepted => {
@@ -69,7 +69,7 @@ export component NoiseGate inherits Rectangle {
6969
LineInput {
7070
enabled: selected-filter.enabled;
7171
input-type: InputType.decimal;
72-
text: config.attack;
72+
text: config.attack.to-fixed(2);
7373
border-color: self.has-focus ? Theme.thirdly-brand-color : Theme.is-dark ? Theme.base-border-color.brighter(20%) : Theme.base-border-color.darker(10%);
7474

7575
accepted => {
@@ -88,7 +88,7 @@ export component NoiseGate inherits Rectangle {
8888
LineInput {
8989
enabled: selected-filter.enabled;
9090
input-type: InputType.decimal;
91-
text: config.hold;
91+
text: config.hold.to-fixed(2);
9292
border-color: self.has-focus ? Theme.thirdly-brand-color : Theme.is-dark ? Theme.base-border-color.brighter(20%) : Theme.base-border-color.darker(10%);
9393

9494
accepted => {
@@ -107,7 +107,7 @@ export component NoiseGate inherits Rectangle {
107107
LineInput {
108108
enabled: selected-filter.enabled;
109109
input-type: InputType.decimal;
110-
text: config.release;
110+
text: config.release.to-fixed(2);
111111
border-color: self.has-focus ? Theme.thirdly-brand-color : Theme.is-dark ? Theme.base-border-color.brighter(20%) : Theme.base-border-color.darker(10%);
112112

113113
accepted => {

wayshot/ui/panel/desktop/video-editor/right-panel/filter/audio/normalize.slint

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -31,7 +31,7 @@ export component Normalize inherits Rectangle {
3131
LineInput {
3232
enabled: selected-filter.enabled;
3333
input-type: InputType.decimal;
34-
text: config.target-level-db;
34+
text: config.target-level-db.to-fixed(2);
3535
border-color: self.has-focus ? Theme.thirdly-brand-color : Theme.is-dark ? Theme.base-border-color.brighter(20%) : Theme.base-border-color.darker(10%);
3636

3737
accepted => {

wayshot/ui/panel/desktop/video-editor/right-panel/filter/graph/draw_circle.slint

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export component DrawCircle inherits Rectangle {
3737

3838
LineInput {
3939
input-type: InputType.decimal;
40-
text: config.center-x;
40+
text: config.center-x.to-fixed(2);
4141
border-color: self.has-focus ? Theme.thirdly-brand-color : Theme.is-dark ? Theme.base-border-color.brighter(20%) : Theme.base-border-color.darker(10%);
4242

4343
accepted => {
@@ -54,7 +54,7 @@ export component DrawCircle inherits Rectangle {
5454

5555
LineInput {
5656
input-type: InputType.decimal;
57-
text: config.center-y;
57+
text: config.center-y.to-fixed(2);
5858
border-color: self.has-focus ? Theme.thirdly-brand-color : Theme.is-dark ? Theme.base-border-color.brighter(20%) : Theme.base-border-color.darker(10%);
5959

6060
accepted => {

wayshot/ui/panel/desktop/video-editor/right-panel/filter/graph/draw_rectangle.slint

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,7 +37,7 @@ export component DrawRectangle inherits Rectangle {
3737

3838
LineInput {
3939
input-type: InputType.decimal;
40-
text: config.x;
40+
text: config.x.to-fixed(2);
4141
border-color: self.has-focus ? Theme.thirdly-brand-color : Theme.is-dark ? Theme.base-border-color.brighter(20%) : Theme.base-border-color.darker(10%);
4242

4343
accepted => {
@@ -54,7 +54,7 @@ export component DrawRectangle inherits Rectangle {
5454

5555
LineInput {
5656
input-type: InputType.decimal;
57-
text: config.y;
57+
text: config.y.to-fixed(2);
5858
border-color: self.has-focus ? Theme.thirdly-brand-color : Theme.is-dark ? Theme.base-border-color.brighter(20%) : Theme.base-border-color.darker(10%);
5959

6060
accepted => {

0 commit comments

Comments
 (0)