void CGraphEditor::OnMouseMove(UINT nFlags, CPoint point) { if (!m_pSequence || !m_pSequence->GetItemCount()) return; if (nFlags & MK_LBUTTON) { switch (m_iEditing) { case EDIT_POINT: ModifyItem(point, true); break; case EDIT_LOOP: ModifyLoopPoint(point, true); break; } } else if (nFlags & MK_RBUTTON) { switch (m_iEditing) { case EDIT_LINE: { int PosX = point.x; int PosY = point.y; if (m_iEditing == EDIT_LINE) { m_ptLineEnd = CPoint(PosX, PosY); int StartX = (m_ptLineStart.x < m_ptLineEnd.x ? m_ptLineStart.x : m_ptLineEnd.x); int StartY = (m_ptLineStart.x < m_ptLineEnd.x ? m_ptLineStart.y : m_ptLineEnd.y); int EndX = (m_ptLineStart.x > m_ptLineEnd.x ? m_ptLineStart.x : m_ptLineEnd.x); int EndY = (m_ptLineStart.x > m_ptLineEnd.x ? m_ptLineStart.y : m_ptLineEnd.y); float DeltaY = float(EndY - StartY) / float((EndX - StartX) + 1); float fY = float(StartY); for (int x = StartX; x < EndX; x++) { ModifyItem(CPoint(x, (int)fY), false); fY += DeltaY; } RedrawWindow(); m_pParentWnd->PostMessage(WM_SEQUENCE_CHANGED, 1); } } break; case EDIT_RELEASE: ModifyReleasePoint(point, true); break; } } else { // No button HighlightItem(point); } // Notify parent if (m_pSequence->GetItemCount() > 0 && point.x > GRAPH_LEFT) { CursorChanged(point.x - GRAPH_LEFT); } else m_pParentWnd->PostMessage(WM_CURSOR_CHANGE, 0, 0); }
void ReRulerWidget::mouseMoveEvent( QMouseEvent* _event ) { if( m_cursorDragInfo.IsMoving() ) { int cursorBackup = m_cursor; int cursor = 0; int delta = 0; int newCursor = 0; if( IsHorizontal() ) { cursor = _event->pos().x(); if( cursor < 0 ) cursor = 0; else if( cursor >= width() ) cursor = width() - 1; delta = cursor - m_cursorDragInfo.GetCursorPosBackup().x(); newCursor = m_cursorDragInfo.GetCursorPosBackup().x() + delta / m_snap * m_snap; } else { cursor = _event->pos().y(); if( cursor < 0 ) cursor = 0; else if( cursor >= height() ) cursor = height() - 1; delta = cursor - m_cursorDragInfo.GetCursorPosBackup().y(); newCursor = m_cursorDragInfo.GetCursorPosBackup().y() + delta / m_snap * m_snap; } if( newCursor != m_cursor ) { OnCursorChanged( newCursor ); emit CursorChanged( newCursor ); } } else if( m_viewportDragInfo.IsMoving() ) { int viewPortBackup = m_viewport; QPoint delta = _event->pos() - m_viewportDragInfo.GetCursorPosBackup(); int newViewportPos = IsHorizontal() ? m_viewportDragInfo.GetItemPosBackup().x() - delta.x() : m_viewportDragInfo.GetItemPosBackup().y() - delta.y(); newViewportPos = newViewportPos / m_snap * m_snap; if( newViewportPos != viewPortBackup ) { OnViewportChanged( newViewportPos ); emit ViewportChanged( newViewportPos ); } } }
void ReRulerWidget::SetValue( qreal _value, bool _scrollViewport ) { int newCursor = qRound( _value / m_unitValue * m_unit ) - m_viewport; OnCursorChanged( newCursor ); emit CursorChanged( newCursor ); if( m_cursor < 0 && _scrollViewport ) { OnViewportChanged( newCursor ); emit ViewportChanged( newCursor ); } }
int RE::ReRulerWidget::qt_metacall(QMetaObject::Call _c, int _id, void **_a) { _id = ReBaseWidget<QLabel>::qt_metacall(_c, _id, _a); if (_id < 0) return _id; if (_c == QMetaObject::InvokeMetaMethod) { switch (_id) { case 0: CursorChanged((*reinterpret_cast< int(*)>(_a[1]))); break; case 1: ViewportChanged((*reinterpret_cast< int(*)>(_a[1]))); break; case 2: OnCursorChanged((*reinterpret_cast< int(*)>(_a[1]))); break; case 3: OnViewportChanged((*reinterpret_cast< int(*)>(_a[1]))); break; default: ; } _id -= 4; } return _id; }
void CGraphEditor::OnLButtonDown(UINT nFlags, CPoint point) { m_bButtonState = true; SetCapture(); SetFocus(); if (!m_pSequence || !m_pSequence->GetItemCount()) return; if (point.y < m_GraphRect.bottom) { m_iEditing = EDIT_POINT; ModifyItem(point, true); if (point.x > GRAPH_LEFT) CursorChanged(point.x - GRAPH_LEFT); } else if (point.y > m_GraphRect.bottom) { m_iEditing = EDIT_LOOP; ModifyLoopPoint(point, true); } }