static void
draw_background (ply_throbber_t *throbber)
{
- ply_frame_buffer_fill_with_gradient (throbber->frame_buffer, &throbber->frame_area,
- PLYMOUTH_BACKGROUND_START_COLOR,
- PLYMOUTH_BACKGROUND_END_COLOR);
+ ply_window_erase_area (throbber->window,
+ throbber->x, throbber->y,
+ throbber->frame_area.width,
+ throbber->frame_area.height);
}
static void
static void
draw_background (ply_boot_splash_plugin_t *plugin,
- ply_frame_buffer_area_t *area)
+ ply_frame_buffer_area_t *area)
{
-#if 0
- ply_frame_buffer_fill_with_hex_color (plugin->frame_buffer, area,
- PLYMOUTH_BACKGROUND_COLOR);
-#else
- ply_frame_buffer_fill_with_gradient (plugin->frame_buffer, area,
- 0x807c71, 0x3a362f);
-#endif
+ ply_frame_buffer_area_t screen_area;
+
+ if (area == NULL)
+ {
+ ply_frame_buffer_get_size (plugin->frame_buffer, &screen_area);
+ area = &screen_area;
+ }
+
+ ply_window_erase_area (plugin->window, area->x, area->y,
+ area->width, area->height);
}
static void
start_animation (plugin);
}
+void
+on_draw (ply_boot_splash_plugin_t *plugin,
+ int x,
+ int y,
+ int width,
+ int height)
+{
+ ply_frame_buffer_area_t area;
+
+ area.x = x;
+ area.y = y;
+ area.width = width;
+ area.height = height;
+
+ draw_background (plugin, &area);
+
+ if (plugin->pending_password_answer != NULL)
+ draw_password_entry (plugin);
+ else
+ animate_at_time (plugin, plugin->now);
+}
+
+void
+on_erase (ply_boot_splash_plugin_t *plugin,
+ int x,
+ int y,
+ int width,
+ int height)
+{
+ ply_frame_buffer_area_t area;
+
+ area.x = x;
+ area.y = y;
+ area.width = width;
+ area.height = height;
+
+ ply_frame_buffer_fill_with_gradient (plugin->frame_buffer, &area,
+ 0x807c71, 0x3a362f);
+}
+
bool
show_splash_screen (ply_boot_splash_plugin_t *plugin,
ply_event_loop_t *loop,
(ply_window_enter_handler_t)
on_enter, plugin);
+ ply_window_set_draw_handler (window,
+ (ply_window_draw_handler_t)
+ on_draw, plugin);
+
+ ply_window_set_erase_handler (window,
+ (ply_window_erase_handler_t)
+ on_erase, plugin);
+
plugin->loop = loop;
ply_trace ("loading logo image");