static struct cliptest * cliptest_create(struct display *display) { struct cliptest *cliptest; cliptest = xzalloc(sizeof *cliptest); cliptest->view.geometry = &cliptest->geometry; cliptest->view.transform.enabled = 0; geometry_init(&cliptest->geometry); geometry_init(&cliptest->ui.geometry); cliptest->window = window_create(display); cliptest->widget = window_frame_create(cliptest->window, cliptest); window_set_title(cliptest->window, "cliptest"); cliptest->display = display; window_set_user_data(cliptest->window, cliptest); widget_set_redraw_handler(cliptest->widget, redraw_handler); widget_set_button_handler(cliptest->widget, button_handler); widget_set_motion_handler(cliptest->widget, motion_handler); widget_set_axis_handler(cliptest->widget, axis_handler); window_set_keyboard_focus_handler(cliptest->window, keyboard_focus_handler); window_set_key_handler(cliptest->window, key_handler); window_set_fullscreen_handler(cliptest->window, fullscreen_handler); /* set minimum size */ widget_schedule_resize(cliptest->widget, 200, 100); /* set current size */ widget_schedule_resize(cliptest->widget, 500, 400); return cliptest; }
/* Switches between visualization modes */ void fsv_set_mode( FsvMode mode ) { boolean first_init = FALSE; switch (globals.fsv_mode) { case FSV_SPLASH: /* Queue desired mode */ initial_fsv_mode = mode; return; case FSV_NONE: /* Filesystem's first appearance */ first_init = TRUE; break; default: /* Set initial mode for next time */ initial_fsv_mode = mode; break; } /* Generate appropriate visualization geometry */ geometry_init( mode ); /* Set up initial camera state */ camera_init( mode, first_init ); globals.fsv_mode = mode; /* Ensure that About presentation is not up */ about( ABOUT_END ); /* Render one frame before performing the initial camera pan. * There are two separate reasons for doing this: */ if (first_init) { /* 1. Practical limitations make the first frame take an * unusually long time to render, so this avoids a really * unpleasant camera jump */ schedule_event( initial_camera_pan, "new_fs", 1 ); } else { /* 2. In order to do a camera pan, the geometry needs to * be defined. We just called geometry_init( ), but if the * camera's going to a non-root node, it may very well not * have been laid out yet (but it will be when drawn) */ schedule_event( initial_camera_pan, "", 1 ); } }