示例#1
0
void rvGEWorkspace::AddModifiers ( EModifierType type, ... )
{
	va_list args;

	// Nothing to move if there is no selection
	if ( !mSelections.Num ( ) )
	{
		return;
	}
	// More than one selection requires a modifier group
	else if ( mSelections.Num ( ) > 1 )
	{
		rvGEModifierGroup*	group = new rvGEModifierGroup;
		int					i;

		for ( i = 0; i < mSelections.Num(); i ++ )
		{
			va_start(args,type);
			group->Append ( CreateModifier ( type, mSelections[i], args ) );
			va_end (args);
		}

		mModifiers.Append ( group );
	}
	// Single modifier
	else
	{
		va_start(args,type) ;
		mModifiers.Append ( CreateModifier ( type, mSelections[0], args ) );
		va_end (args) ;
	}

	SetModified ( true );
}
示例#2
0
/// [+ - obiekt
/// [% - modyfikator
IObject* ObjectFactory::Construct(std::istream & str)
{
    char lb;
    char mod;
    std::string name;
    IObject* object (NULL);

    str >> lb;
    if (lb != '[') throw MakeParserException("Expected '['");

    str >> mod;

    try
    {
        switch (mod)
        {
        case '+':// add object
            str >> name;
            toLowercase(name);
            object = CreateObject(name, str);
            break;
        case '%':// add modifier
            str >> name;
            toLowercase(name);
            object = CreateModifier(name, str);
            break;
        default:
            throw MakeParserException("Expected '%' or '+'");
        };
    } catch (ParserException& ex) {
        throw ex;
    }

    return object;
}
示例#3
0
/*
================
rvGEWorkspace::AddModifiers

Add the specific modifier for the given window
================
*/
void rvGEWorkspace::AddModifiers ( idWindow* window, EModifierType type, ... )
{
	va_list args;

	va_start(args,type) ;
	mModifiers.Append ( CreateModifier ( type, window, args ) );
	va_end (args) ;

	SetModified ( true );
}