void setZoomFactor (double amount) { if (thumbnail.getTotalLength() > 0) { const double newScale = jmax (0.001, thumbnail.getTotalLength() * (1.0 - jlimit (0.0, 0.99, amount))); const double timeAtCentre = xToTime (getWidth() / 2.0f); setRange (Range<double> (timeAtCentre - newScale * 0.5, timeAtCentre + newScale * 0.5)); } }
void setZoomFactor (double amount) { if (thumbnail.getTotalLength() > 0) { const double newScale = jmax (0.001, thumbnail.getTotalLength() * (1.0 - jlimit (0.0, 0.99, amount))); const double timeAtCentre = xToTime (getWidth() / 2.0f); startTime = timeAtCentre - newScale * 0.5; endTime = timeAtCentre + newScale * 0.5; repaint(); } }
void TransitionWidget::mouseDoubleClickEvent(QMouseEvent* event) { if (pointList_ == nullptr) { return; } #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) QPointF pos = event->localPos(); #else QPointF pos = event->posF(); #endif double time = xToTime(pos.x()); double value = yToValue(pos.y()); const double minValue = special_ ? -140.0 : -20.0; const double maxValue = special_ ? 140.0 : 120.0; if (time >= 0.0 && time <= ruleDuration_ && value >= minValue && value <= maxValue) { unsigned int pointType; switch (transitionType_) { case TRMControlModel::Transition::TYPE_DIPHONE: pointType = 2; break; case TRMControlModel::Transition::TYPE_TRIPHONE: if (time <= mark1_) { pointType = 2; } else { pointType = 3; } break; case TRMControlModel::Transition::TYPE_TETRAPHONE: if (time <= mark1_) { pointType = 2; } else if (time <= mark2_) { pointType = 3; } else { pointType = 4; } break; default: return; } qDebug("mouseDoubleClickEvent type=%u time=%f value=%f", pointType, time, value); emit pointCreationRequested(pointType, time, value); } }
void IntonationWidget::mouseDoubleClickEvent(QMouseEvent* event) { qDebug("IntonationWidget::mouseDoubleClickEvent"); if (eventList_ == nullptr || eventList_->list().empty() || intonationPointList_.empty()) { return; } if (event->button() != Qt::LeftButton) return; #if QT_VERSION >= QT_VERSION_CHECK(5, 0, 0) QPointF clickPoint = event->localPos(); #else QPointF clickPoint = event->posF(); #endif double clickTime = xToTime(clickPoint.x()); unsigned int ruleIndex = 0; double minDist = 1.0e10; for (unsigned int i = 0, size = eventList_->numberOfRules(); i < size; ++i) { auto* ruleData = eventList_->getRuleAtIndex(i); double distance = std::abs(clickTime - ruleData->beat); if (distance <= minDist) { minDist = distance; ruleIndex = i; } else { break; } } auto* ruleData = eventList_->getRuleAtIndex(ruleIndex); TRMControlModel::IntonationPoint newPoint(eventList_); newPoint.setRuleIndex(ruleIndex); newPoint.setOffsetTime(clickTime - ruleData->beat); newPoint.setSemitone(yToValue(clickPoint.y())); selectedPoint_ = addIntonationPoint(newPoint); qDebug("selectedPoint_ = %d", selectedPoint_); sendSelectedPointData(); update(); }
void mouseDrag (const MouseEvent& e) override { if (canMoveTransport()) transportSource.setPosition (jmax (0.0, xToTime ((float) e.x))); }
void mouseDrag (const MouseEvent& e) { transportSource.setPosition (jmax (0.0, xToTime ((float) e.x))); }