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);
	}
}
Ejemplo n.º 2
0
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);
	}
}
Ejemplo n.º 3
0
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);
	}
}
Ejemplo n.º 4
0
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);
	}
}
Ejemplo n.º 5
0
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;
}