Example #1
0
void Timer::startTimer()
{
  if (m_delayMillis > 0)
  {
    m_currentTimeMillis = UptimeInfo::tMillis();
    startInterval();
  }
}
Example #2
0
void Timer::startTimer(unsigned long timeMillis)
{
  m_delayMillis = timeMillis;
  if (m_delayMillis > 0)
  {
    m_currentTimeMillis = UptimeInfo::tMillis();
    startInterval();
  }
  else
  {
    cancelTimer();
  }
}
Example #3
0
void Timer::internalTick()
{
  m_currentTimeMillis = UptimeInfo::tMillis();

  // check if interval is over, as long as (m_delayMillis > 0)
  if ((m_delayMillis > 0) && (m_triggerTimeMillis < m_currentTimeMillis) && (m_currentTimeMillis < m_triggerTimeMillisUpperLimit))
  {
    if (m_isRecurring)
    {
      startInterval();
    }
    else
    {
      m_delayMillis = 0;
    }

    m_isExpiredFlag = true;
    if (0 != m_adapter)
    {
      m_adapter->timeExpired();
    }
  }
}
Example #4
0
void KisScanlineFill::runImpl(T &pixelPolicy)
{
    KIS_ASSERT_RECOVER_RETURN(m_d->forwardStack.isEmpty());

    KisFillInterval startInterval(m_d->startPoint.x(), m_d->startPoint.x(), m_d->startPoint.y());
    m_d->forwardStack.push(startInterval);

    /**
     * In the end of the first pass we should add an interval
     * containing the starting pixel, but directed into the opposite
     * direction. We cannot do it in the very beginning because the
     * intervals are offset by 1 pixel during every swap operation.
     */
    bool firstPass = true;

    while (!m_d->forwardStack.isEmpty()) {
        while (!m_d->forwardStack.isEmpty()) {
            KisFillInterval interval = m_d->forwardStack.pop();

            if (interval.row > m_d->boundingRect.bottom() ||
                interval.row < m_d->boundingRect.top()) {

                continue;
            }

            processLine(interval, m_d->rowIncrement, pixelPolicy);
        }
        m_d->swapDirection();

        if (firstPass) {
            startInterval.row--;
            m_d->forwardStack.push(startInterval);
            firstPass = false;
        }
    }
}