viewertexteditor: improve gizmo transform usage

This commit is contained in:
itsmattkc
2022-08-24 13:26:19 -07:00
parent 3d92f1f54d
commit 971babecc4
2 changed files with 21 additions and 9 deletions
+8 -9
View File
@@ -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<quintptr>(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;
}
+13
View File
@@ -246,6 +246,12 @@ private:
QTransform GenerateDisplayTransform();
QTransform GenerateGizmoTransform(NodeTraverser &gt, 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 <typename T>
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();