本文整理汇总了C++中QLCFixtureHead::rgbChannels方法的典型用法代码示例。如果您正苦于以下问题:C++ QLCFixtureHead::rgbChannels方法的具体用法?C++ QLCFixtureHead::rgbChannels怎么用?C++ QLCFixtureHead::rgbChannels使用的例子?那么, 这里精选的方法代码示例或许可以为您提供帮助。您也可以进一步了解该方法所在类QLCFixtureHead
的用法示例。
在下文中一共展示了QLCFixtureHead::rgbChannels方法的4个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于系统推荐出更棒的C++代码示例。
示例1: cacheChannelsPanTilt
void QLCFixtureHead_Test::cacheChannelsPanTilt()
{
QLCFixtureMode mode(m_fixtureDef);
QCOMPARE(mode.channels().size(), 0);
m_ch1->setGroup(QLCChannel::Pan);
m_ch1->setControlByte(QLCChannel::MSB);
mode.insertChannel(m_ch1, 0);
m_ch2->setGroup(QLCChannel::Pan);
m_ch2->setControlByte(QLCChannel::LSB);
mode.insertChannel(m_ch2, 1);
m_ch3->setGroup(QLCChannel::Tilt);
m_ch3->setControlByte(QLCChannel::MSB);
mode.insertChannel(m_ch3, 2);
m_ch4->setGroup(QLCChannel::Tilt);
m_ch4->setControlByte(QLCChannel::LSB);
mode.insertChannel(m_ch4, 3);
QLCFixtureHead head;
head.addChannel(0);
head.addChannel(1);
head.addChannel(2);
head.addChannel(3);
head.cacheChannels(&mode);
QCOMPARE(head.panMsbChannel(), quint32(0));
QCOMPARE(head.panLsbChannel(), quint32(1));
QCOMPARE(head.tiltMsbChannel(), quint32(2));
QCOMPARE(head.tiltLsbChannel(), quint32(3));
QCOMPARE(head.rgbChannels(), QVector <quint32> ());
QCOMPARE(head.cmyChannels(), QVector <quint32> ());
QCOMPARE(head.masterIntensityChannel(), QLCChannel::invalid());
head.cacheChannels((QLCFixtureMode*) 0xDEADBEEF);
QCOMPARE(head.panMsbChannel(), quint32(0));
QCOMPARE(head.panLsbChannel(), quint32(1));
QCOMPARE(head.tiltMsbChannel(), quint32(2));
QCOMPARE(head.tiltLsbChannel(), quint32(3));
QCOMPARE(head.rgbChannels(), QVector <quint32> ());
QCOMPARE(head.cmyChannels(), QVector <quint32> ());
QCOMPARE(head.masterIntensityChannel(), QLCChannel::invalid());
}
示例2: cacheChannelsCmyMaster
void QLCFixtureHead_Test::cacheChannelsCmyMaster()
{
QLCFixtureMode mode(m_fixtureDef);
QCOMPARE(mode.channels().size(), 0);
m_ch1->setGroup(QLCChannel::Intensity);
m_ch1->setColour(QLCChannel::Cyan);
mode.insertChannel(m_ch1, 0);
m_ch2->setGroup(QLCChannel::Intensity);
m_ch2->setColour(QLCChannel::Magenta);
mode.insertChannel(m_ch2, 1);
m_ch3->setGroup(QLCChannel::Intensity);
m_ch3->setColour(QLCChannel::NoColour);
mode.insertChannel(m_ch3, 2);
m_ch4->setGroup(QLCChannel::Intensity);
m_ch4->setColour(QLCChannel::Yellow);
mode.insertChannel(m_ch4, 3);
QLCFixtureHead head;
head.addChannel(0);
head.addChannel(1);
head.addChannel(2);
head.addChannel(3);
head.cacheChannels(&mode);
QCOMPARE(head.panMsbChannel(), QLCChannel::invalid());
QCOMPARE(head.panLsbChannel(), QLCChannel::invalid());
QCOMPARE(head.tiltMsbChannel(), QLCChannel::invalid());
QCOMPARE(head.tiltLsbChannel(), QLCChannel::invalid());
QCOMPARE(head.rgbChannels(), QVector <quint32> ());
QCOMPARE(head.cmyChannels(), QVector <quint32> () << 0 << 1 << 3);
QCOMPARE(head.masterIntensityChannel(), quint32(2));
}
示例3: updateMapChannels
void RGBMatrix::updateMapChannels(const RGBMap& map, const FixtureGroup* grp)
{
quint32 mdAssigned = QLCChannel::invalid();
quint32 mdFxi = Fixture::invalidId();
uint fadeTime = 0;
if (overrideFadeInSpeed() == defaultSpeed())
fadeTime = fadeInSpeed();
else
fadeTime = overrideFadeInSpeed();
// Create/modify fade channels for ALL pixels in the color map.
for (int y = 0; y < map.size(); y++)
{
for (int x = 0; x < map[y].size(); x++)
{
QLCPoint pt(x, y);
GroupHead grpHead(grp->head(pt));
Fixture* fxi = doc()->fixture(grpHead.fxi);
if (fxi == NULL)
continue;
if (grpHead.fxi != mdFxi)
{
mdAssigned = QLCChannel::invalid();
mdFxi = grpHead.fxi;
}
QLCFixtureHead head = fxi->head(grpHead.head);
QVector <quint32> rgb = head.rgbChannels();
QVector <quint32> cmy = head.cmyChannels();
if (rgb.size() == 3)
{
// RGB color mixing
FadeChannel fc;
fc.setFixture(doc(), grpHead.fxi);
fc.setChannel(rgb.at(0));
fc.setTarget(qRed(map[y][x]));
insertStartValues(fc, fadeTime);
m_fader->add(fc);
fc.setChannel(rgb.at(1));
fc.setTarget(qGreen(map[y][x]));
insertStartValues(fc, fadeTime);
m_fader->add(fc);
fc.setChannel(rgb.at(2));
fc.setTarget(qBlue(map[y][x]));
insertStartValues(fc, fadeTime);
m_fader->add(fc);
}
else if (cmy.size() == 3)
{
// CMY color mixing
QColor col(map[y][x]);
FadeChannel fc;
fc.setFixture(doc(), grpHead.fxi);
fc.setChannel(cmy.at(0));
fc.setTarget(col.cyan());
insertStartValues(fc, fadeTime);
m_fader->add(fc);
fc.setChannel(cmy.at(1));
fc.setTarget(col.magenta());
insertStartValues(fc, fadeTime);
m_fader->add(fc);
fc.setChannel(cmy.at(2));
fc.setTarget(col.yellow());
insertStartValues(fc, fadeTime);
m_fader->add(fc);
}
if (m_dimmerControl &&
head.masterIntensityChannel() != QLCChannel::invalid())
{
//qDebug() << "RGBMatrix: found dimmer at" << head.masterIntensityChannel();
// Simple intensity (dimmer) channel
QColor col(map[y][x]);
FadeChannel fc;
fc.setFixture(doc(), grpHead.fxi);
fc.setChannel(head.masterIntensityChannel());
if (col.value() == 0 && mdAssigned != head.masterIntensityChannel())
fc.setTarget(0);
else
{
fc.setTarget(255);
if (mdAssigned == QLCChannel::invalid())
mdAssigned = head.masterIntensityChannel();
}
insertStartValues(fc, fadeTime);
m_fader->add(fc);
}
}
}
}
示例4: updateMapChannels
void RGBMatrix::updateMapChannels(const RGBMap& map, const FixtureGroup* grp)
{
uint fadeTime = (overrideFadeInSpeed() == defaultSpeed()) ? fadeInSpeed() : overrideFadeInSpeed();
// Create/modify fade channels for ALL pixels in the color map.
for (int y = 0; y < map.size(); y++)
{
for (int x = 0; x < map[y].size(); x++)
{
QLCPoint pt(x, y);
GroupHead grpHead(grp->head(pt));
Fixture* fxi = doc()->fixture(grpHead.fxi);
if (fxi == NULL)
continue;
QLCFixtureHead head = fxi->head(grpHead.head);
QVector <quint32> rgb = head.rgbChannels();
QVector <quint32> cmy = head.cmyChannels();
quint32 masterDim = fxi->masterIntensityChannel();
quint32 headDim = head.channelNumber(QLCChannel::Intensity, QLCChannel::MSB);
// Collect all dimmers that affect current head:
// They are the master dimmer (affects whole fixture)
// and per-head dimmer.
//
// If there are no RGB or CMY channels, the least important* dimmer channel
// is used to create grayscale image.
//
// The rest of the dimmer channels are set to full if dimmer control is
// enabled and target color is > 0 (see
// http://www.qlcplus.org/forum/viewtopic.php?f=29&t=11090)
//
// Note: If there is only one head, and only one dimmer channel,
// make it a master dimmer in fixture definition.
//
// *least important - per head dimmer if present,
// otherwise per fixture dimmer if present
QVector <quint32> dim;
if (masterDim != QLCChannel::invalid())
dim << masterDim;
if (headDim != QLCChannel::invalid())
dim << headDim;
uint col = map[y][x];
if (rgb.size() == 3)
{
// RGB color mixing
{
FadeChannel fc(doc(), grpHead.fxi, rgb.at(0));
fc.setTarget(qRed(col));
insertStartValues(fc, fadeTime);
m_fader->add(fc);
}
{
FadeChannel fc(doc(), grpHead.fxi, rgb.at(1));
fc.setTarget(qGreen(col));
insertStartValues(fc, fadeTime);
m_fader->add(fc);
}
{
FadeChannel fc(doc(), grpHead.fxi, rgb.at(2));
fc.setTarget(qBlue(col));
insertStartValues(fc, fadeTime);
m_fader->add(fc);
}
}
else if (cmy.size() == 3)
{
// CMY color mixing
QColor cmyCol(col);
{
FadeChannel fc(doc(), grpHead.fxi, cmy.at(0));
fc.setTarget(cmyCol.cyan());
insertStartValues(fc, fadeTime);
m_fader->add(fc);
}
{
FadeChannel fc(doc(), grpHead.fxi, cmy.at(1));
fc.setTarget(cmyCol.magenta());
insertStartValues(fc, fadeTime);
m_fader->add(fc);
}
{
FadeChannel fc(doc(), grpHead.fxi, cmy.at(2));
fc.setTarget(cmyCol.yellow());
insertStartValues(fc, fadeTime);
m_fader->add(fc);
}
}
else if (!dim.empty())
{
//.........这里部分代码省略.........