/// \brief Processeur de message OSC
///
/// Le processeur s'attend à ce que la command soit :
///     'position [i][i]?', 'position [f][f]?' ou 'taille [if]'
///
/// \param command const string& La commande OSC
/// \param m const ofxOscMessage& La(es) valeur(s) associée(s) à la commande
/// \return void
///
///
void Danseur::processOscCommand(const string& command, const ofxOscMessage& m)
{
    if(isMatch(command, "position"))
    {
        if(validateOscSignature("([i][i]?)", m)) /**< Position absolue en pixel sur l'écran */
        {
            if(m.getNumArgs() == 1)
            {
                ofVec2f::set(getArgAsIntUnchecked(m, 0)); /**< Défini la position avec X=Y */
            }
            else
            {
                ofVec2f::set(getArgAsIntUnchecked(m, 0), getArgAsIntUnchecked(m, 1)); /**< Défini la position par les attributs OSC */
            }
        }
        else if(validateOscSignature("([if][if]?)", m)) /**< Position proportionnelle à la taille de l'écran */
        {
            if(m.getNumArgs() == 1)
            {
                ofVec2f::set(getArgAsFloatUnchecked(m, 0)); /**< Défini la position avec X=Y */
            }
            else
            {
                ofVec2f::set(getArgAsFloatUnchecked(m, 0) * ofGetWidth(), getArgAsFloatUnchecked(m, 1) * ofGetHeight()); /**< Défini la position par les attributs OSC */
            }
        }
    }
    else if(isMatch(command, "dessinable"))
    {
        if(validateOscSignature("([TFif])", m))
        {
            Dessinable(getArgAsBoolUnchecked(m, 0));
        }
    }
    else if(isMatch(command, "animable"))
    {
        if(validateOscSignature("([TFif])", m))
        {
            Animable(getArgAsBoolUnchecked(m, 0));
        }
    }
    else if(isMatch(command, "apparait"))
    {
        if(validateOscSignature("([TFif][if]?[if]?)", m))
        {
            if(getArgAsBoolUnchecked(m, 0))
            {
                if(m.getNumArgs() >= 2)
                {
                    if(m.getNumArgs() == 3)
                    {
                        _alpha.setDuration(getArgAsFloatUnchecked(m, 2));
                    }

                    apparait(getArgAsFloatUnchecked(m, 1));
                }
                else
                {
                    apparait();
                }
            }
            else
            {
                if(m.getNumArgs() == 2)
                {
                    _alpha.setDuration(getArgAsFloatUnchecked(m, 1));
                }

                disparait();
            }
        }
    }
    else if(isMatch(command, "disparait"))
    {
        if(validateOscSignature("([TFif])", m))
        {
            if(getArgAsBoolUnchecked(m, 0))
            {
                disparait();
            }
        }
    }
    else if(isMatch(command, "alpha"))
    {
        if(validateOscSignature("([if])", m))
        {
            Alpha(getArgAsFloatUnchecked(m, 0));
        }
    }
    else if(isMatch(command, "duration"))
    {
        if(validateOscSignature("([if])", m))
        {
            _alpha.setDuration(getArgAsFloatUnchecked(m, 0));
        }
    }
    else if(isMatch(command, "offset"))
    {
        if(validateOscSignature("([if])", m))
        {
            offset(getArgAsIntUnchecked(m, 0));
        }
    }
    else if(isMatch(command, "grand"))
    {
        if(validateOscSignature("([TFif])", m))
        {
            bHugeText = getArgAsBoolUnchecked(m, 0);
        }
    }
    else if(isMatch(command, "afficherTemps"))
    {
        if(validateOscSignature("([TFif])", m))
        {
            if(getArgAsBoolUnchecked(m, 0))
            {
                toBeDrawn |= DANSEUR_TIME;
            }
            else
            {
                toBeDrawn &= ~DANSEUR_TIME;
            }
        }
    }
    else if(isMatch(command, "afficherXPos"))
    {
        if(validateOscSignature("([TFif])", m))
        {
            if(getArgAsBoolUnchecked(m, 0))
            {
                toBeDrawn |= DANSEUR_XPOS;
            }
            else
            {
                toBeDrawn &= ~DANSEUR_XPOS;
            }
        }
    }
    else if(isMatch(command, "afficherYPos"))
    {
        if(validateOscSignature("([TFif])", m))
        {
            if(getArgAsBoolUnchecked(m, 0))
            {
                toBeDrawn |= DANSEUR_YPOS;
            }
            else
            {
                toBeDrawn &= ~DANSEUR_YPOS;
            }
        }
    }
    else if(isMatch(command, "afficherAngle"))
    {
        if(validateOscSignature("([TFif])", m))
        {
            if(getArgAsBoolUnchecked(m, 0))
            {
                toBeDrawn |= DANSEUR_ANGLE;
            }
            else
            {
                toBeDrawn &= ~DANSEUR_ANGLE;
            }
        }
    }
    else if(isMatch(command, "afficherConstante"))
    {
        if(validateOscSignature("([TFif])", m))
        {
            if(getArgAsBoolUnchecked(m, 0))
            {
                toBeDrawn |= DANSEUR_CONSTANTE;
            }
            else
            {
                toBeDrawn &= ~DANSEUR_CONSTANTE;
            }
        }
    }
    else if(isMatch(command, "afficherAll"))
    {
        if(validateOscSignature("([TFif])", m))
        {
            if(getArgAsBoolUnchecked(m, 0))
            {
                toBeDrawn = DANSEUR_ALL;
            }
            else
            {
                toBeDrawn = DANSEUR_TIME;
            }
        }
    }
    else if(isMatch(command, "stopCounter"))
    {
        if(validateOscSignature("([TFif])", m))
        {
            bStopCounter = getArgAsBoolUnchecked(m, 0);
        }
    }
    else if(isMatch(command, "vitesseRotation"))
    {
        if(validateOscSignature("([if])", m))
        {
            _coteAngle.setDuration(getArgAsFloatUnchecked(m, 0));
        }
    }
}
Esempio n. 2
0
Fenetre::Fenetre(const char *titre, int large, int haut, int x, int y, int r, int v, int b) {
// construction complète avec titre, taille, position et couleur de fond
     existe=FALSE;
     apparait(titre, large, haut, x, y, r, v, b);
}