From 971babecc434217706a18775cdd6b57a313bb8aa Mon Sep 17 00:00:00 2001 From: itsmattkc <34096995+itsmattkc@users.noreply.github.com> Date: Wed, 24 Aug 2022 13:26:19 -0700 Subject: [PATCH] viewertexteditor: improve gizmo transform usage --- app/widget/viewer/viewerdisplay.cpp | 17 ++++++++--------- app/widget/viewer/viewerdisplay.h | 13 +++++++++++++ 2 files changed, 21 insertions(+), 9 deletions(-) diff --git a/app/widget/viewer/viewerdisplay.cpp b/app/widget/viewer/viewerdisplay.cpp index 3dc4edb8e..ea3e4c9eb 100644 --- a/app/widget/viewer/viewerdisplay.cpp +++ b/app/widget/viewer/viewerdisplay.cpp @@ -456,8 +456,6 @@ void ViewerDisplayWidget::OnPaint() QPainter pixp(&pm); text_edit_->Paint(&pixp); - QTransform gizmo_transform = GenerateDisplayTransform(); - p.setTransform(gizmo_transform); p.drawPixmap(text_edit_pos_, pm); } } @@ -697,8 +695,10 @@ NodeGizmo *ViewerDisplayWidget::TryGizmoPress(const NodeValueRow &row, const QPo void ViewerDisplayWidget::OpenTextGizmo(TextGizmo *text, QMouseEvent *event) { + text_transform_ = GenerateGizmoTransform(); + // Create text editor - text_edit_ = new ViewerTextEditor(1.0, this); + text_edit_ = new ViewerTextEditor(text_transform_.m11(), this); // Set text editor's gizmo property for later use text_edit_->setProperty("gizmo", reinterpret_cast(text)); @@ -737,8 +737,8 @@ void ViewerDisplayWidget::OpenTextGizmo(TextGizmo *text, QMouseEvent *event) text_toolbar_->setWindowFlags(Qt::Window | Qt::WindowStaysOnTopHint); text_edit_->ConnectToolBar(text_toolbar_); - QTransform display_untransform = GenerateDisplayTransform().inverted(); - text_toolbar_->move(mapToGlobal(display_untransform.map(text_edit_pos_).toPoint())); + text_transform_inverted_ = text_transform_.inverted(); + text_toolbar_->move(mapToGlobal(text_transform_inverted_.map(text_edit_pos_).toPoint())); text_toolbar_->show(); inner_widget()->setFocusPolicy(Qt::StrongFocus); @@ -748,7 +748,7 @@ void ViewerDisplayWidget::OpenTextGizmo(TextGizmo *text, QMouseEvent *event) // Start text cursor where the user clicked if (event) { - QPoint click_pos = display_untransform.map(event->pos()) - text_edit_pos_.toPoint(); + QPoint click_pos = text_transform_inverted_.map(event->pos()) - text_edit_pos_.toPoint(); text_edit_->setTextCursor(text_edit_->cursorForPosition(click_pos)); } @@ -1099,11 +1099,10 @@ void ViewerDisplayWidget::ForwardDragEventToTextEdit(T *e) bool ViewerDisplayWidget::ForwardMouseEventToTextEdit(QMouseEvent *event, bool check_if_outside) { // Transform screen mouse coords to world mouse coords - QTransform t = GenerateDisplayTransform().inverted(); - QPointF local_pos = t.map(event->localPos()) - text_edit_pos_; + QPointF local_pos = GetVirtualPosForTextEdit(event->localPos()); if (check_if_outside) { - if (local_pos.x() < 0 || local_pos.x() >= text_edit_->width() || local_pos.y() < 0 || local_pos.y() >= height()) { + if (local_pos.x() < 0 || local_pos.x() >= text_edit_->width() || local_pos.y() < 0 || local_pos.y() >= text_edit_->height()) { CloseTextEditor(); return true; } diff --git a/app/widget/viewer/viewerdisplay.h b/app/widget/viewer/viewerdisplay.h index 24b6973df..4507d96c0 100644 --- a/app/widget/viewer/viewerdisplay.h +++ b/app/widget/viewer/viewerdisplay.h @@ -246,6 +246,12 @@ private: QTransform GenerateDisplayTransform(); QTransform GenerateGizmoTransform(NodeTraverser >, const TimeRange &range); + QTransform GenerateGizmoTransform() + { + NodeTraverser t; + t.SetCacheVideoParams(gizmo_params_); + return GenerateGizmoTransform(t, GenerateGizmoTime()); + } TimeRange GenerateGizmoTime() { @@ -269,6 +275,11 @@ private: void DrawSubtitleTracks(); + QPointF GetVirtualPosForTextEdit(const QPointF &p) + { + return text_transform_inverted_.map(p) - text_edit_pos_; + } + template void ForwardDragEventToTextEdit(T *event); @@ -392,6 +403,8 @@ private: QPointF text_edit_pos_; ViewerTextEditor *text_edit_; ViewerTextEditorToolBar *text_toolbar_; + QTransform text_transform_; + QTransform text_transform_inverted_; private slots: void UpdateFromQueue();