virtual void move_func() { vec x = state.x(); vec n = perturbation.x(); vec xnew; move_func(x, control, n, dt_or_dx, x, XNEW_x, XNEW_pert); state.x() = xnew; }
void _gevastwin_move_xxx(GtkgEvasObj * object, double x, double y) { GtkgEvasTwin *ev; gpointer d; d = gtk_object_get_data(GTK_OBJECT(object), GEVASTWIN_BACKWARD_LOOKUP_KEY); if (d) { ev = GTK_GEVASTWIN(d); /* printf("gevastwin_move_xxx(top) extra object. main:%lp aux:%lp obj:%lp\n", */ /* ev->mainobj, ev->auxobj, object ); */ if (ev->mainobj == object) { printf("gevastwin_move_xxx(MO) extra object. main:%p aux:%p obj:%p\n", ev->mainobj, ev->auxobj, object ); ev->main_obj_move(object, x, y); _gevastwin_sync_obj(ev, ev->auxobj); } else if (ev->auxobj == object) { printf("gevastwin_move_xxx(AO) extra object. main:%p aux:%p obj:%p\n", ev->mainobj, ev->auxobj, object ); ev->aux_obj_move(object, x, y); _gevastwin_sync_obj(ev, ev->mainobj); } else { /* printf("gevastwin_move_xxx() extra object. main:%lp aux:%lp obj:%lp\n", */ /* ev->mainobj, ev->auxobj, object ); */ Evas_Coord ox = 0, oy = 0, oh = 0, ow = 0; gevasobj_get_geometry( object, &ox, &oy, &ow, &oh); Evas_Coord main_x = 0, main_y = 0, main_w = 0, main_h = 0; gevasobj_get_geometry(ev->mainobj, &main_x, &main_y, &main_w, &main_h); /* printf("gevastwin_move_xxx(2) extra object. main:%lp aux:%lp obj:%lp\n", */ /* ev->mainobj, ev->auxobj, object ); */ Evas_Coord dx = ox - x; Evas_Coord dy = oy - y; /* printf("gevastwin_move_xxx(2.0) extra object. main:%lp aux:%lp obj:%lp dx:%ld dy:%ld\n", */ /* ev->mainobj, ev->auxobj, object, dx, dy ); */ /* gevasobj_move( ev->mainobj, main_x - dx, main_y - dy ); */ ev->main_obj_move(ev->mainobj, main_x - dx, main_y - dy ); /* printf("gevastwin_move_xxx(2.1) extra object. main:%lp aux:%lp obj:%lp\n", */ /* ev->mainobj, ev->auxobj, object ); */ ev->aux_obj_move (ev->auxobj, main_x - dx , main_y + main_h + 5 - dy ); /* printf("gevastwin_move_xxx(3) extra object. main:%lp aux:%lp obj:%lp\n", */ /* ev->mainobj, ev->auxobj, object ); */ Eina_List* li = gevas_obj_collection_to_list( ev->extra_objects ); for( ; li; li = li->next) if(li->data) { GtkgEvasObj* gobj = (GtkgEvasObj*)li->data; /* printf("gevastwin_move_xxx(5.t) extra object. main:%lp aux:%lp obj:%lp gobj:%lp\n", */ /* ev->mainobj, ev->auxobj, object, gobj ); */ // if( gobj != object ) { gpointer d; d = gtk_object_get_data(GTK_OBJECT(gobj), GEVASTWIN_EXTRA_OBJ_MOVE_FUNC_KEY ); /* printf("gevastwin_move_xxx(5.a) extra object. main:%lp aux:%lp obj:%lp\n", */ /* ev->mainobj, ev->auxobj, object ); */ void (*move_func) (GtkgEvasObj * object, double x, double y) = d; gevasobj_get_geometry( gobj, &ox, &oy, &ow, &oh); move_func( gobj, ox - dx, oy - dy ); /* printf("gevastwin_move_xxx(5.b) extra object. main:%lp aux:%lp obj:%lp\n", */ /* ev->mainobj, ev->auxobj, object ); */ } } gevasobj_queue_redraw(ev->mainobj); gevasobj_queue_redraw(ev->auxobj); } #if 0 else if( ev->sprite ) { /* The moved part of a sprite */ if( gevas_obj_collection_contains( ev->sprite->col, GTK_GEVASOBJ(object) )) { if( GTK_GEVASOBJ(ev->sprite)->original_move ) GTK_GEVASOBJ(ev->sprite)->original_move( ev->sprite, x, y ); else GTK_GEVASOBJ(ev->sprite)->move( ev->sprite, x, y ); _gevastwin_sync_obj(ev, ev->auxobj); } } #endif /* printf("gevastwin_move_xxx(bottom) extra object. main:%lp aux:%lp obj:%lp\n", */ /* ev->mainobj, ev->auxobj, object ); */ }