void VCSlider::writeDMXLevel(MasterTimer* timer, UniverseArray* universes) { Q_UNUSED(timer); m_levelValueMutex.lock(); QListIterator <LevelChannel> it(m_levelChannels); while (it.hasNext() == true) { LevelChannel lch(it.next()); Fixture* fxi = m_doc->fixture(lch.fixture); if (fxi != NULL) { const QLCChannel* qlcch = fxi->channel(lch.channel); if (qlcch == NULL) continue; if (qlcch->group() != QLCChannel::Intensity && m_levelValueChanged == false) { /* Value has not changed and this is not an intensity channel. LTP in effect. */ continue; } quint32 dmx_ch = fxi->channelAddress(lch.channel); universes->write(dmx_ch, m_levelValue, qlcch->group()); } } m_levelValueChanged = false; m_levelValueMutex.unlock(); }
void VCSlider::writeDMXLevel(MasterTimer* timer, UniverseArray* universes) { Q_UNUSED(timer); m_levelValueMutex.lock(); uchar modLevel = m_levelValue; int r = 0, g = 0, b = 0, c = 0, m = 0, y = 0; if (m_cngType == ClickAndGoWidget::RGB) { float f = 0; if (m_slider) f = SCALE(float(m_levelValue), float(m_slider->minimum()), float(m_slider->maximum()), float(0), float(200)); if ((uchar)f != 0) { QColor modColor = m_cngRGBvalue.lighter((uchar)f); r = modColor.red(); g = modColor.green(); b = modColor.blue(); } } else if (m_cngType == ClickAndGoWidget::CMY) { float f = 0; if (m_slider) f = SCALE(float(m_levelValue), float(m_slider->minimum()), float(m_slider->maximum()), float(0), float(200)); if ((uchar)f != 0) { QColor modColor = m_cngRGBvalue.lighter((uchar)f); c = modColor.cyan(); m = modColor.magenta(); y = modColor.yellow(); } } QListIterator <LevelChannel> it(m_levelChannels); while (it.hasNext() == true) { LevelChannel lch(it.next()); Fixture* fxi = m_doc->fixture(lch.fixture); if (fxi != NULL) { const QLCChannel* qlcch = fxi->channel(lch.channel); if (qlcch == NULL) continue; if (qlcch->group() != QLCChannel::Intensity && m_levelValueChanged == false) { /* Value has not changed and this is not an intensity channel. LTP in effect. */ continue; } if (qlcch->group() == QLCChannel::Intensity) { if (m_cngType == ClickAndGoWidget::RGB) { if (qlcch->colour() == QLCChannel::Red) modLevel = (uchar)r; else if (qlcch->colour() == QLCChannel::Green) modLevel = (uchar)g; else if (qlcch->colour() == QLCChannel::Blue) modLevel = (uchar)b; } else if (m_cngType == ClickAndGoWidget::CMY) { if (qlcch->colour() == QLCChannel::Cyan) modLevel = (uchar)c; else if (qlcch->colour() == QLCChannel::Magenta) modLevel = (uchar)m; else if (qlcch->colour() == QLCChannel::Yellow) modLevel = (uchar)y; } } quint32 dmx_ch = fxi->channelAddress(lch.channel); universes->write(dmx_ch, modLevel, qlcch->group()); } } m_levelValueChanged = false; m_levelValueMutex.unlock(); }