void ToyFlickerGrid::onValueChanged(ToyFlickerWidget *flicker, float value) { if( m_pClient && flicker && !flicker->GetPath().isEmpty() ) { QString path( flicker->GetPath() ); bool local = Utils::MakeLocalOSCPath(false, path); OSCPacketWriter packetWriter( path.toUtf8().constData() ); if( flicker->GetMin().isEmpty() ) { if( !flicker->GetMax().isEmpty() ) packetWriter.AddFloat32( flicker->GetMax().toFloat() ); } else if( flicker->GetMax().isEmpty() ) { packetWriter.AddFloat32( flicker->GetMin().toFloat() ); } else { float minValue = flicker->GetMin().toFloat(); float maxValue = flicker->GetMax().toFloat(); value = (minValue + (maxValue-minValue)*value); packetWriter.AddFloat32(value); } size_t size; char *packet = packetWriter.Create(size); if( packet ) m_pClient->ToyClient_Send(local, packet, size); } }
void ToyMetroGrid::onTick(ToyMetroWidget *metro, int pos) { if( m_pClient && metro && !metro->GetPath().isEmpty() ) { float value = 0; bool hasValue = false; if( metro->GetMin().isEmpty() ) { if(pos == FadeMetro::TICK_POS_CENTER) { if( !metro->GetMax().isEmpty() ) { value = metro->GetMax().toFloat(); hasValue = true; } } else return; } else if( metro->GetMax().isEmpty() ) { if(pos == FadeMetro::TICK_POS_CENTER) value = metro->GetMin().toFloat(); else return; } else if(metro->GetMin() == metro->GetMax()) { if(pos == FadeMetro::TICK_POS_CENTER) value = value = metro->GetMax().toFloat(); else return; } else if(pos==FadeMetro::TICK_POS_LEFT || pos==FadeMetro::TICK_POS_RIGHT) { value = ((pos==FadeMetro::TICK_POS_LEFT) ? metro->GetMin().toFloat() : metro->GetMax().toFloat() ); } else return; QString path( metro->GetPath() ); bool local = Utils::MakeLocalOSCPath(false, path); OSCPacketWriter packetWriter( path.toUtf8().constData() ); if( hasValue ) packetWriter.AddFloat32(value); size_t size; char *data = packetWriter.Create(size); if( data ) m_pClient->ToyClient_Send(local, data, size); } }
void ToyPedalGrid::onTick(ToyPedalWidget *pedal, float value) { if( m_pClient && pedal && !pedal->GetPath().isEmpty() ) { QString path( pedal->GetPath() ); bool local = Utils::MakeLocalOSCPath(false, path); OSCPacketWriter packetWriter( path.toUtf8().constData() ); if(!pedal->GetMin().isEmpty() || !pedal->GetMax().isEmpty()) { float minValue = pedal->GetMin().toFloat(); float maxValue = pedal->GetMax().toFloat(); value = (minValue + (maxValue-minValue)*value); packetWriter.AddFloat32(value); } size_t size; char *data = packetWriter.Create(size); if( data ) m_pClient->ToyClient_Send(local, data, size); } }
void ToyMetroGrid::onTick(ToyMetroWidget *metro, int pos) { if( m_pClient && metro && !metro->GetPath().isEmpty() ) { QString value; bool forceStrArg = false; if( metro->GetMin().isEmpty() ) { if(pos == FadeMetro::TICK_POS_CENTER) { if( !metro->GetMax().isEmpty() ) value = metro->GetMax(); } else return; } else if( metro->GetMax().isEmpty() ) { if(pos == FadeMetro::TICK_POS_CENTER) value = metro->GetMin(); else return; } else if(metro->GetMin() == metro->GetMax()) { if(pos == FadeMetro::TICK_POS_CENTER) { value = metro->GetMax(); if(!OSCArgument::IsFloatString(metro->GetMin().toUtf8().constData()) || !OSCArgument::IsFloatString(metro->GetMax().toUtf8().constData())) forceStrArg = true; // if either is non-numeric, send both as strings } else return; } else if(pos==FadeMetro::TICK_POS_LEFT || pos==FadeMetro::TICK_POS_RIGHT) { value = ((pos==FadeMetro::TICK_POS_LEFT) ? metro->GetMin() : metro->GetMax() ); if(!OSCArgument::IsFloatString(metro->GetMin().toUtf8().constData()) || !OSCArgument::IsFloatString(metro->GetMax().toUtf8().constData())) forceStrArg = true; // if either is non-numeric, send both as strings } else return; QString path( metro->GetPath() ); bool local = Utils::MakeLocalOSCPath(false, path); OSCPacketWriter packetWriter( path.toUtf8().constData() ); if( !value.isEmpty() ) { QByteArray ba( value.toUtf8() ); if(!forceStrArg && OSCArgument::IsFloatString(ba.constData())) packetWriter.AddFloat32( value.toFloat() ); else packetWriter.AddString( ba.constData() ); } size_t size; char *data = packetWriter.Create(size); if( data ) m_pClient->ToyClient_Send(local, data, size); } }
bool ToyButtonGrid::SendButtonCommand(ToyButtonWidget *button, bool press) { if( m_pClient && button && !button->GetPath().isEmpty() ) { const QString &minStr = button->GetMin(); const QString &maxStr = button->GetMax(); int edgeCount = 0; float value = 0; if( minStr.isEmpty() ) { if( !maxStr.isEmpty() ) { // only have max field, so always send it bool ok = false; value = maxStr.toFloat(&ok); if( ok ) edgeCount = 1; } } else if( maxStr.isEmpty() ) { // only have min field, so always send it bool ok = false; value = minStr.toFloat(&ok); if( ok ) edgeCount = 1; } else { // have both min & max fields bool minOk = false; float nMin = minStr.toFloat(&minOk); bool maxOk = false; float nMax = maxStr.toFloat(&maxOk); if( minOk ) { if( maxOk ) { edgeCount = 2; value = (press ? nMax : nMin); } else { value = nMin; edgeCount = 1; } } else if( maxOk ) { value = nMax; edgeCount = 1; } } if(press || edgeCount>1) { QString path( button->GetPath() ); bool local = Utils::MakeLocalOSCPath(false, path); OSCPacketWriter packetWriter( path.toUtf8().constData() ); if(edgeCount > 0) packetWriter.AddFloat32(value); size_t size; char *data = packetWriter.Create(size); if(data && m_pClient->ToyClient_Send(local,data,size)) return true; } } return false; }