本文整理汇总了C++中FadeChannel::setStart方法的典型用法代码示例。如果您正苦于以下问题:C++ FadeChannel::setStart方法的具体用法?C++ FadeChannel::setStart怎么用?C++ FadeChannel::setStart使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类FadeChannel
的用法示例。
在下文中一共展示了FadeChannel::setStart方法的15个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: insertStartValue
void CueStack::insertStartValue(FadeChannel& fc, const QList<Universe *> ua)
{
qDebug() << Q_FUNC_INFO;
const QHash <FadeChannel,FadeChannel>& channels(m_fader->channels());
if (channels.contains(fc) == true)
{
// GenericFader contains the channel so grab its current
// value as the new starting value to get a smoother fade
FadeChannel existing = channels[fc];
fc.setStart(existing.current());
fc.setCurrent(fc.start());
}
else
{
// GenericFader didn't have the channel. Grab the starting value from UniverseArray.
quint32 uni = fc.universe();
if (uni != Universe::invalid() && uni < (quint32)ua.count())
{
if (fc.group(doc()) != QLCChannel::Intensity)
fc.setStart(ua[uni]->preGMValues()[fc.address()]);
else
fc.setStart(0); // HTP channels must start at zero
}
fc.setCurrent(fc.start());
}
}
示例2: insertStartValues
void RGBMatrix::insertStartValues(FadeChannel& fc, uint fadeTime) const
{
Q_ASSERT(m_fader != NULL);
// To create a nice and smooth fade, get the starting value from
// m_fader's existing FadeChannel (if any). Otherwise just assume
// we're starting from zero.
QHash <FadeChannel,FadeChannel>::const_iterator oldChannelIterator = m_fader->channels().find(fc);
if (oldChannelIterator != m_fader->channels().end())
{
FadeChannel old = oldChannelIterator.value();
fc.setCurrent(old.current());
fc.setStart(old.current());
}
else
{
fc.setCurrent(0);
fc.setStart(0);
}
// The channel is not ready yet
fc.setReady(false);
// Fade in speed is used for all non-zero targets
if (fc.target() == 0)
fc.setFadeTime(fadeOutSpeed());
else
{
fc.setFadeTime(fadeTime);
}
}
示例3: insertStartValues
void RGBMatrix::insertStartValues(FadeChannel& fc) const
{
Q_ASSERT(m_fader != NULL);
// To create a nice and smooth fade, get the starting value from
// m_fader's existing FadeChannel (if any). Otherwise just assume
// we're starting from zero.
if (m_fader->channels().contains(fc) == true)
{
FadeChannel old = m_fader->channels()[fc];
fc.setCurrent(old.current());
fc.setStart(old.current());
}
else
{
fc.setCurrent(0);
fc.setStart(0);
}
// The channel is not ready yet
fc.setReady(false);
// Fade in speed is used for all non-zero targets
if (fc.target() == 0)
fc.setFadeTime(fadeOutSpeed());
else
fc.setFadeTime(fadeInSpeed());
}
示例4: postRun
void CueStack::postRun(MasterTimer* timer)
{
qDebug() << Q_FUNC_INFO;
Q_ASSERT(timer != NULL);
Q_ASSERT(m_fader != NULL);
// Bounce all intensity channels to MasterTimer's fader for zeroing
QHashIterator <FadeChannel,FadeChannel> it(m_fader->channels());
while (it.hasNext() == true)
{
it.next();
FadeChannel fc = it.value();
if (fc.group(doc()) == QLCChannel::Intensity)
{
fc.setStart(fc.current(intensity()));
fc.setTarget(0);
fc.setElapsed(0);
fc.setReady(false);
fc.setFadeTime(fadeOutSpeed());
timer->fader()->add(fc);
}
}
m_currentIndex = -1;
delete m_fader;
m_fader = NULL;
emit currentCueChanged(m_currentIndex);
emit stopped();
}
示例5: stop
void EFXFixture::stop(MasterTimer* timer, QList<Universe *> universes)
{
Q_UNUSED(universes);
if (fadeIntensity() > 0 && m_started == true)
{
Fixture* fxi = doc()->fixture(head().fxi);
Q_ASSERT(fxi != NULL);
if (fxi->masterIntensityChannel(head().head) != QLCChannel::invalid())
{
FadeChannel fc;
fc.setFixture(doc(), head().fxi);
fc.setChannel(fxi->masterIntensityChannel(head().head));
if (m_parent->overrideFadeOutSpeed() != Function::defaultSpeed())
fc.setFadeTime(m_parent->overrideFadeOutSpeed());
else
fc.setFadeTime(m_parent->fadeOutSpeed());
fc.setStart(uchar(floor((float(fadeIntensity()) * intensity()) + 0.5)));
fc.setCurrent(fc.start());
fc.setTarget(0);
// Give zero-fading to MasterTimer because EFX will stop after this call
timer->faderAdd(fc);
// Remove the previously up-faded channel from EFX's internal fader to allow
// MasterTimer's fader take HTP precedence.
m_parent->m_fader->remove(fc);
}
}
m_started = false;
}
示例6: start
void EFXFixture::start(MasterTimer* timer, QList<Universe *> universes)
{
Q_UNUSED(universes);
Q_UNUSED(timer);
if (fadeIntensity() > 0 && m_started == false)
{
Fixture* fxi = doc()->fixture(head().fxi);
Q_ASSERT(fxi != NULL);
if (fxi->masterIntensityChannel(head().head) != QLCChannel::invalid())
{
FadeChannel fc;
fc.setFixture(doc(), head().fxi);
fc.setChannel(fxi->masterIntensityChannel(head().head));
if (m_parent->overrideFadeInSpeed() != Function::defaultSpeed())
fc.setFadeTime(m_parent->overrideFadeInSpeed());
else
fc.setFadeTime(m_parent->fadeInSpeed());
fc.setStart(0);
fc.setCurrent(fc.start());
// Don't use intensity() multiplier because EFX's GenericFader takes care of that
fc.setTarget(fadeIntensity());
// Fade channel up with EFX's own GenericFader to allow manual intensity control
m_parent->m_fader->add(fc);
}
}
m_started = true;
}
示例7: writeLoop
void GenericFader_Test::writeLoop()
{
UniverseArray ua(512);
GenericFader fader(m_doc);
FadeChannel fc;
fc.setFixture(0);
fc.setChannel(5);
fc.setStart(0);
fc.setTarget(250);
fc.setFadeTime(1000);
fader.add(fc);
QCOMPARE(ua.preGMValues()[15], (char) 0);
int expected = 0;
for (int i = MasterTimer::tick(); i <= 1000; i += MasterTimer::tick())
{
ua.zeroIntensityChannels();
fader.write(&ua);
int actual = uchar(ua.preGMValues()[15]);
expected += 5;
QCOMPARE(actual, expected);
}
}
示例8: start
void FadeChannel_Test::start()
{
FadeChannel fch;
QCOMPARE(fch.start(), uchar(0));
for (uint i = 0; i <= 255; i++)
{
fch.setStart(i);
QCOMPARE(fch.start(), uchar(i));
}
}
示例9: insertStartValue
void CueStack_Test::insertStartValue()
{
QList<Universe*> ua;
ua.append(new Universe(0, new GrandMaster()));
ua.at(0)->setChannelCapability(0, QLCChannel::Pan);
CueStack cs(m_doc);
cs.preRun();
FadeChannel fc;
fc.setChannel(0);
fc.setStart(0);
fc.setTarget(255);
fc.setCurrent(127);
cs.m_fader->add(fc);
fc.setTarget(64);
cs.insertStartValue(fc, ua);
QCOMPARE(fc.start(), uchar(127));
QCOMPARE(fc.current(), uchar(127));
cs.m_fader->remove(fc);
// HTP channel in universes
ua[0]->write(0, 192);
cs.insertStartValue(fc, ua);
QCOMPARE(fc.start(), uchar(0));
QCOMPARE(fc.current(), uchar(0));
QLCFixtureDef* def = m_doc->fixtureDefCache()->fixtureDef("Futurelight", "DJScan250");
QVERIFY(def != NULL);
QLCFixtureMode* mode = def->modes().first();
QVERIFY(mode != NULL);
Fixture* fxi = new Fixture(m_doc);
fxi->setFixtureDefinition(def, mode);
fxi->setName("Test Scanner");
fxi->setAddress(0);
fxi->setUniverse(0);
m_doc->addFixture(fxi);
// LTP channel (Pan) in universes
ua[0]->write(0, 192);
cs.insertStartValue(fc, ua);
QCOMPARE(fc.start(), uchar(192));
QCOMPARE(fc.current(), uchar(192));
MasterTimer mt(m_doc);
cs.postRun(&mt);
}
示例10: postRun
void RGBMatrix::postRun(MasterTimer* timer, QList<Universe *> universes)
{
if (m_fader != NULL)
{
QHashIterator <FadeChannel,FadeChannel> it(m_fader->channels());
while (it.hasNext() == true)
{
it.next();
FadeChannel fc = it.value();
// fade out only intensity channels
if (fc.group(doc()) != QLCChannel::Intensity)
continue;
bool canFade = true;
Fixture *fixture = doc()->fixture(fc.fixture());
if (fixture != NULL)
canFade = fixture->channelCanFade(fc.channel());
fc.setStart(fc.current(getAttributeValue(Intensity)));
fc.setCurrent(fc.current(getAttributeValue(Intensity)));
fc.setElapsed(0);
fc.setReady(false);
if (canFade == false)
{
fc.setFadeTime(0);
fc.setTarget(fc.current(getAttributeValue(Intensity)));
}
else
{
if (overrideFadeOutSpeed() == defaultSpeed())
fc.setFadeTime(fadeOutSpeed());
else
fc.setFadeTime(overrideFadeOutSpeed());
fc.setTarget(0);
}
timer->faderAdd(fc);
}
delete m_fader;
m_fader = NULL;
}
{
QMutexLocker algorithmLocker(&m_algorithmMutex);
if (m_algorithm != NULL)
m_algorithm->postRun();
}
Function::postRun(timer, universes);
}
示例11: writeZeroFade
void GenericFader_Test::writeZeroFade()
{
UniverseArray ua(512);
GenericFader fader(m_doc);
FadeChannel fc;
fc.setFixture(0);
fc.setChannel(5);
fc.setStart(0);
fc.setTarget(255);
fc.setFadeTime(0);
fader.add(fc);
QCOMPARE(ua.preGMValues()[15], (char) 0);
fader.write(&ua);
QCOMPARE(ua.preGMValues()[15], (char) 255);
}
示例12: adjustIntensity
void GenericFader_Test::adjustIntensity()
{
UniverseArray ua(512);
GenericFader fader(m_doc);
FadeChannel fc;
// HTP channel
fc.setFixture(0);
fc.setChannel(5);
fc.setStart(0);
fc.setTarget(250);
fc.setFadeTime(1000);
fader.add(fc);
// LTP channel
fc.setChannel(0);
fader.add(fc);
qreal intensity = 0.5;
fader.adjustIntensity(intensity);
QCOMPARE(fader.intensity(), intensity);
int expected = 0;
for (int i = MasterTimer::tick(); i <= 1000; i += MasterTimer::tick())
{
ua.zeroIntensityChannels();
fader.write(&ua);
expected += 5;
// GenericFader should apply intensity only to HTP channels
int actual = uchar(ua.preGMValues()[15]);
int expectedWithIntensity = floor((qreal(expected) * intensity) + 0.5);
QVERIFY(actual == expectedWithIntensity);
// No intensity adjustment on LTP channels
actual = uchar(ua.preGMValues()[10]);
QVERIFY(actual == expected);
}
}
示例13: value
QMap <quint32,FadeChannel>
ChaserRunner::createFadeChannels(const UniverseArray* universes,
QMap <quint32,FadeChannel>& zeroChannels) const
{
QMap <quint32,FadeChannel> map;
if (m_currentStep >= m_steps.size() || m_currentStep < 0)
return map;
Scene* scene = qobject_cast<Scene*> (m_steps.at(m_currentStep));
Q_ASSERT(scene != NULL);
// Put all current channels to a map of channels that will be faded to zero.
// If the same channels are added to the new channel map, they are removed
// from this zero map.
zeroChannels = m_channelMap;
QListIterator <SceneValue> it(scene->values());
while (it.hasNext() == true)
{
SceneValue value(it.next());
Fixture* fxi = m_doc->fixture(value.fxi);
if (fxi == NULL || fxi->channel(value.channel) == NULL)
continue;
FadeChannel channel;
channel.setAddress(fxi->universeAddress() + value.channel);
channel.setGroup(fxi->channel(value.channel)->group());
channel.setTarget(value.value);
// Get starting value from universes. For HTP channels it's always 0.
channel.setStart(uchar(universes->preGMValues()[channel.address()]));
// Transfer last step's current value to current step's starting value.
if (m_channelMap.contains(channel.address()) == true)
channel.setStart(m_channelMap[channel.address()].current());
channel.setCurrent(channel.start());
// Append the channel to the channel map
map[channel.address()] = channel;
// Remove the channel from a map of to-be-zeroed channels since now it
// has a new value to fade to.
zeroChannels.remove(channel.address());
}
// All channels that were present in the previous step but are not present
// in the current step will go through this zeroing process.
QMutableMapIterator <quint32,FadeChannel> zit(zeroChannels);
while (zit.hasNext() == true)
{
zit.next();
FadeChannel& channel(zit.value());
if (channel.current() == 0 || channel.group() != QLCChannel::Intensity)
{
// Remove all non-HTP channels and such HTP channels that are
// already at zero. There's nothing to do for them.
zit.remove();
}
else
{
// This HTP channel was present in the previous step, but is absent
// in the current. It's nicer that we fade it back to zero, rather
// than just let it drop straight to zero.
channel.setStart(channel.current());
channel.setTarget(0);
}
}
return map;
}
示例14: calculateCurrent
void FadeChannel_Test::calculateCurrent()
{
FadeChannel fch;
fch.setStart(0);
fch.setTarget(255);
// Simple: 255 ticks to fade from 0 to 255
for (uint time = 0; time < 255; time++)
QCOMPARE(fch.calculateCurrent(255, time), uchar(time));
// Same thing, but the value should stay at 255 same after 255 ticks
for (uint time = 0; time <= 512; time++)
QCOMPARE(fch.calculateCurrent(255, time), uchar(MIN(time, 255)));
// Simple reverse: 255 ticks to fade from 255 to 0
fch.setStart(255);
fch.setTarget(0);
for (uint time = 0; time <= 255; time++)
QCOMPARE(fch.calculateCurrent(255, time), uchar(255 - time));
// A bit more complex involving decimals that don't produce round integers
fch.setStart(13);
fch.setTarget(147);
QCOMPARE(fch.calculateCurrent(13, 0), uchar(13));
QCOMPARE(fch.calculateCurrent(13, 1), uchar(23));
QCOMPARE(fch.calculateCurrent(13, 2), uchar(33));
QCOMPARE(fch.calculateCurrent(13, 3), uchar(43));
QCOMPARE(fch.calculateCurrent(13, 4), uchar(54));
QCOMPARE(fch.calculateCurrent(13, 5), uchar(64));
QCOMPARE(fch.calculateCurrent(13, 6), uchar(74));
QCOMPARE(fch.calculateCurrent(13, 7), uchar(85));
QCOMPARE(fch.calculateCurrent(13, 8), uchar(95));
QCOMPARE(fch.calculateCurrent(13, 9), uchar(105));
QCOMPARE(fch.calculateCurrent(13, 10), uchar(116));
QCOMPARE(fch.calculateCurrent(13, 11), uchar(126));
QCOMPARE(fch.calculateCurrent(13, 12), uchar(136));
QCOMPARE(fch.calculateCurrent(13, 13), uchar(147));
// One more to check slower operation (200 ticks for 144 steps)
fch.setStart(245);
fch.setTarget(101);
QCOMPARE(fch.calculateCurrent(200, 0), uchar(245));
QCOMPARE(fch.calculateCurrent(200, 1), uchar(245));
QCOMPARE(fch.calculateCurrent(200, 2), uchar(244));
QCOMPARE(fch.calculateCurrent(200, 3), uchar(243));
QCOMPARE(fch.calculateCurrent(200, 4), uchar(243));
QCOMPARE(fch.calculateCurrent(200, 5), uchar(242));
QCOMPARE(fch.calculateCurrent(200, 6), uchar(241));
QCOMPARE(fch.calculateCurrent(200, 7), uchar(240));
QCOMPARE(fch.calculateCurrent(200, 8), uchar(240));
QCOMPARE(fch.calculateCurrent(200, 9), uchar(239));
QCOMPARE(fch.calculateCurrent(200, 10), uchar(238));
QCOMPARE(fch.calculateCurrent(200, 11), uchar(238));
// Skip...
QCOMPARE(fch.calculateCurrent(200, 100), uchar(173));
QCOMPARE(fch.calculateCurrent(200, 101), uchar(173));
QCOMPARE(fch.calculateCurrent(200, 102), uchar(172));
// Skip...
QCOMPARE(fch.calculateCurrent(200, 198), uchar(103));
QCOMPARE(fch.calculateCurrent(200, 199), uchar(102));
QCOMPARE(fch.calculateCurrent(200, 200), uchar(101));
}
示例15: nextStep
void FadeChannel_Test::nextStep()
{
FadeChannel fc;
fc.setStart(0);
fc.setTarget(250);
fc.setFadeTime(1000);
for (int i = 5; i < 250; i += 5)
{
int value = fc.nextStep(MasterTimer::tick());
QCOMPARE(value, i);
}
fc.setCurrent(0);
fc.setReady(false);
fc.setFadeTime(0);
fc.setElapsed(0);
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(250));
fc.setCurrent(0);
fc.setReady(false);
fc.setFadeTime(MasterTimer::tick() / 5);
fc.setElapsed(0);
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(250));
fc.setCurrent(0);
fc.setReady(false);
fc.setFadeTime(1 * MasterTimer::tick());
fc.setElapsed(0);
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(250));
fc.setCurrent(0);
fc.setReady(false);
fc.setFadeTime(2 * MasterTimer::tick());
fc.setElapsed(0);
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(125));
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(250));
fc.setCurrent(0);
fc.setReady(false);
fc.setFadeTime(5 * MasterTimer::tick());
fc.setElapsed(0);
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(50));
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(100));
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(150));
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(200));
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(250));
// Maximum elapsed() reached
fc.setCurrent(0);
fc.setTarget(255);
fc.setReady(false);
fc.setElapsed(UINT_MAX);
fc.setFadeTime(5 * MasterTimer::tick());
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(255));
QCOMPARE(fc.elapsed(), UINT_MAX);
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(255));
QCOMPARE(fc.elapsed(), UINT_MAX);
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(255));
QCOMPARE(fc.elapsed(), UINT_MAX);
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(255));
QCOMPARE(fc.elapsed(), UINT_MAX);
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(255));
QCOMPARE(fc.elapsed(), UINT_MAX);
// Channel marked as ready
fc.setReady(true);
fc.setElapsed(0);
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(255));
QCOMPARE(fc.elapsed(), MasterTimer::tick() * 1);
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(255));
QCOMPARE(fc.elapsed(), MasterTimer::tick() * 2);
QCOMPARE(fc.nextStep(MasterTimer::tick()), uchar(255));
QCOMPARE(fc.elapsed(), MasterTimer::tick() * 3);
}