/* call-seq:
 *   VideoMode.new()                            -> mode
 *   VideoMode.new( width, height, bpp = 32 )   -> mode
 *
 * Create a new mode.
 */
static VALUE VideoMode_New( int argc, VALUE *args, VALUE aKlass )
{
        sf::VideoMode *object = NULL;
        switch( argc )
        {
                case 0:
                        object = new sf::VideoMode();
                        break;
                case 2:
                        object = new sf::VideoMode( FIX2UINT( args[0] ), FIX2UINT( args[1] ) );
                        break;
                case 3:
                        object = new sf::VideoMode( FIX2UINT( args[0] ), FIX2UINT( args[1] ),FIX2UINT( args[2] ) );
                        break;
                default:
                        rb_raise( rb_eArgError, "Expected 0, 2 or 3 arguments but was given %d", argc );
                        break;
        }
        VALUE rbData = Data_Wrap_Struct( aKlass, 0, VideoMode_Free, object );
        rb_obj_call_init( rbData, 0, 0 );
        return rbData;
}