void RGBMatrix::roundCheck() { QMutexLocker algorithmLocker(&m_algorithmMutex); if (m_algorithm == NULL) return; if (m_stepHandler->checkNextStep(runOrder(), m_startColor, m_endColor, m_stepsCount) == false) stop(FunctionParent::master()); m_roundTime->restart(); if (tempoType() == Beats) roundElapsed(m_stepBeatDuration); else roundElapsed(duration()); }
void RGBMatrix::roundCheck(const QSize& size) { QMutexLocker algorithmLocker(&m_algorithmMutex); if (m_algorithm == NULL) return; if (runOrder() == PingPong) { if (m_direction == Forward && (m_step + 1) == m_algorithm->rgbMapStepCount(size)) { m_direction = Backward; m_step = m_algorithm->rgbMapStepCount(size) - 2; if (m_endColor.isValid()) m_stepColor = m_endColor; updateStepColor(m_step); } else if (m_direction == Backward && (m_step - 1) < 0) { m_direction = Forward; m_step = 1; m_stepColor = m_startColor; updateStepColor(m_step); } else { if (m_direction == Forward) m_step++; else m_step--; updateStepColor(m_step); } } else if (runOrder() == SingleShot) { if (m_direction == Forward) { if (m_step >= m_algorithm->rgbMapStepCount(size) - 1) stop(); else { m_step++; updateStepColor(m_step); } } else { if (m_step <= 0) stop(); else { m_step--; updateStepColor(m_step); } } } else { if (m_direction == Forward) { if (m_step >= m_algorithm->rgbMapStepCount(size) - 1) { m_step = 0; m_stepColor = m_startColor; } else { m_step++; updateStepColor(m_step); } } else { if (m_step <= 0) { m_step = m_algorithm->rgbMapStepCount(size) - 1; if (m_endColor.isValid()) m_stepColor = m_endColor; } else { m_step--; updateStepColor(m_step); } } } m_roundTime->restart(); roundElapsed(duration()); }