Screen* meh_screen_starting_new(App* app) { g_assert(app != NULL); Screen* screen = meh_screen_new(app->window); screen->name = g_strdup("Starting screen"); screen->messages_handler = &meh_screen_starting_messages_handler; screen->destroy_data = &meh_screen_starting_destroy_data; /* * Custom data */ StartingData* data = g_new(StartingData, 1); /* Splashscreen */ gchar* tmp = g_strdup_printf("%s/splashscreen.png", app->res_dir); data->splash_texture = meh_image_load_file(app->window->sdl_renderer, tmp); g_free(tmp); tmp = NULL; data->splash = meh_widget_image_new(data->splash_texture, 0, 0, MEH_FAKE_WIDTH, MEH_FAKE_HEIGHT); data->done = FALSE; screen->data = data; return screen; }
Screen* meh_screen_launch_new(App* app, Screen* src_screen, Platform* platform, Executable* executable, WidgetImage* src_widget) { g_assert(app != NULL); g_assert(src_screen != NULL); g_assert(platform != NULL); g_assert(executable != NULL); Screen* screen = meh_screen_new(app->window); screen->name = g_strdup("Launch screen"); screen->messages_handler = &meh_screen_launch_messages_handler; screen->destroy_data = &meh_screen_launch_destroy_data; /* * custom data */ LaunchData* data = g_new(LaunchData, 1); data->src_screen = src_screen; data->image_widget = NULL; data->executable = executable; data->platform = platform; data->src_widget = src_widget; data->zoom_logo = FALSE; /* fading rect */ SDL_Color black = { 0, 0, 0 ,0 }; data->fade_widget = meh_widget_rect_new(0, 0, MEH_FAKE_WIDTH, MEH_FAKE_HEIGHT, black, TRUE); data->fade_widget->a = meh_transition_start(MEH_TRANSITION_LINEAR, 1, 254, app->settings.fade_duration*4); meh_screen_add_rect_transitions(screen, data->fade_widget); if (app->settings.zoom_logo && src_widget != NULL) { /* cover image */ data->image_widget = meh_widget_image_new( src_widget->texture, src_widget->x.value, src_widget->y.value, src_widget->h.value, src_widget->w.value); /* starts the cover transitions */ data->image_widget->x = meh_transition_start(MEH_TRANSITION_CUBIC, src_widget->x.value, -(MEH_FAKE_WIDTH), app->settings.fade_duration*4); data->image_widget->y = meh_transition_start(MEH_TRANSITION_CUBIC, src_widget->y.value, -(MEH_FAKE_HEIGHT), app->settings.fade_duration*4); data->image_widget->w = meh_transition_start(MEH_TRANSITION_CUBIC, src_widget->w.value, MEH_FAKE_WIDTH*3, app->settings.fade_duration*4); data->image_widget->h = meh_transition_start(MEH_TRANSITION_CUBIC, src_widget->h.value, MEH_FAKE_HEIGHT*3, app->settings.fade_duration*4); meh_screen_add_image_transitions(screen, data->image_widget); data->zoom_logo = TRUE; } screen->data = data; return screen; }
/* * meh_widget_video_new allocates a new widget video. * and prepares its internal texture. */ WidgetVideo* meh_widget_video_new(Window* window, gchar* filename, float x, float y, float w, float h) { /* create the embedded image widget */ WidgetImage* i = meh_widget_image_new(NULL, x, y, w, h); WidgetVideo* v = g_new(WidgetVideo, 1); v->video = NULL; v->w_image = i; meh_widget_video_set(window, v, filename); return v; }