Example #1
0
 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));
     }
 }
Example #2
0
 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();
}
Example #5
0
 void mouseDrag (const MouseEvent& e) override
 {
     if (canMoveTransport())
         transportSource.setPosition (jmax (0.0, xToTime ((float) e.x)));
 }
Example #6
0
 void mouseDrag (const MouseEvent& e)
 {
     transportSource.setPosition (jmax (0.0, xToTime ((float) e.x)));
 }