From: Ray Strode Date: Wed, 16 Sep 2009 19:08:59 +0000 (-0400) Subject: [entry] Use pixel display instead of window X-Git-Tag: 0.8.0~188^2~28 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=d27523ddcfebd3c26eb33420a314ce5547deb3a6;p=thirdparty%2Fplymouth.git [entry] Use pixel display instead of window --- diff --git a/src/libplybootsplash/ply-entry.c b/src/libplybootsplash/ply-entry.c index d59d9207..1940b368 100644 --- a/src/libplybootsplash/ply-entry.c +++ b/src/libplybootsplash/ply-entry.c @@ -45,10 +45,10 @@ #include "ply-array.h" #include "ply-label.h" #include "ply-logger.h" -#include "ply-frame-buffer.h" #include "ply-image.h" +#include "ply-pixel-buffer.h" +#include "ply-pixel-display.h" #include "ply-utils.h" -#include "ply-window.h" #include @@ -60,9 +60,8 @@ struct _ply_entry { ply_event_loop_t *loop; - ply_window_t *window; - ply_frame_buffer_t *frame_buffer; - ply_frame_buffer_area_t area; + ply_pixel_display_t *display; + ply_rectangle_t area; ply_image_t *text_field_image; ply_image_t *bullet_image; ply_label_t *label; @@ -148,33 +147,36 @@ ply_entry_load (ply_entry_t *entry) } static void -erase_entry_area (ply_entry_t *entry) +ply_entry_draw (ply_entry_t *entry) { - ply_window_erase_area (entry->window, - entry->area.x, entry->area.y, - entry->area.width, entry->area.height); + ply_pixel_display_draw_area (entry->display, + entry->area.x, + entry->area.y, + entry->area.width, + entry->area.height); } void -ply_entry_draw (ply_entry_t *entry) +ply_entry_draw_area (ply_entry_t *entry, + ply_pixel_buffer_t *pixel_buffer, + long x, + long y, + unsigned long width, + unsigned long height) { - ply_frame_buffer_area_t bullet_area; + ply_rectangle_t bullet_area; uint32_t *text_field_data, *bullet_data; int i, number_of_visible_bullets; if (entry->is_hidden) return; - ply_frame_buffer_pause_updates (entry->frame_buffer); - text_field_data = ply_image_get_data (entry->text_field_image); - erase_entry_area (entry); - - ply_frame_buffer_fill_with_argb32_data (entry->frame_buffer, + ply_pixel_buffer_fill_with_argb32_data (pixel_buffer, &entry->area, 0, 0, text_field_data); - + if (entry->is_password) { bullet_data = ply_image_get_data (entry->bullet_image); @@ -193,7 +195,7 @@ ply_entry_draw (ply_entry_t *entry) bullet_area.x = entry->area.x; bullet_area.y = entry->area.y + entry->area.height / 2.0 - bullet_area.height / 2.0; - ply_frame_buffer_fill_with_argb32_data (entry->frame_buffer, + ply_pixel_buffer_fill_with_argb32_data (pixel_buffer, &bullet_area, bullet_area.width / 2.0, 0, bullet_data); } @@ -203,7 +205,7 @@ ply_entry_draw (ply_entry_t *entry) bullet_area.x = entry->area.x + i * bullet_area.width + bullet_area.width / 2.0; bullet_area.y = entry->area.y + entry->area.height / 2.0 - bullet_area.height / 2.0; - ply_frame_buffer_fill_with_argb32_data (entry->frame_buffer, + ply_pixel_buffer_fill_with_argb32_data (pixel_buffer, &bullet_area, 0, 0, bullet_data); } @@ -211,10 +213,10 @@ ply_entry_draw (ply_entry_t *entry) else { ply_label_set_text (entry->label, entry->text); - ply_label_show (entry->label, entry->window, entry->area.x, entry->area.y); - + ply_label_draw_area (entry->label, pixel_buffer, + entry->area.x, entry->area.y, + entry->area.width, entry->area.height); } - ply_frame_buffer_unpause_updates (entry->frame_buffer); } void @@ -266,18 +268,17 @@ ply_entry_set_text (ply_entry_t *entry, const char* text) } void -ply_entry_show (ply_entry_t *entry, - ply_event_loop_t *loop, - ply_window_t *window, - long x, - long y) +ply_entry_show (ply_entry_t *entry, + ply_event_loop_t *loop, + ply_pixel_display_t *display, + long x, + long y) { assert (entry != NULL); assert (entry->loop == NULL); entry->loop = loop; - entry->window = window; - entry->frame_buffer = ply_window_get_frame_buffer (window);; + entry->display = display; entry->area.x = x; entry->area.y = y; @@ -290,13 +291,11 @@ ply_entry_show (ply_entry_t *entry, void ply_entry_hide (ply_entry_t *entry) { - erase_entry_area (entry); + entry->is_hidden = true; + ply_entry_draw (entry); - entry->frame_buffer = NULL; - entry->window = NULL; + entry->display = NULL; entry->loop = NULL; - - entry->is_hidden = true; } bool diff --git a/src/libplybootsplash/ply-entry.h b/src/libplybootsplash/ply-entry.h index 76bf2adb..658e2db2 100644 --- a/src/libplybootsplash/ply-entry.h +++ b/src/libplybootsplash/ply-entry.h @@ -27,8 +27,8 @@ #include #include "ply-event-loop.h" -#include "ply-frame-buffer.h" -#include "ply-window.h" +#include "ply-pixel-buffer.h" +#include "ply-pixel-display.h" typedef struct _ply_entry ply_entry_t; @@ -39,11 +39,16 @@ bool ply_entry_load (ply_entry_t *entry); void ply_entry_show (ply_entry_t *entry, ply_event_loop_t *loop, - ply_window_t *window, + ply_pixel_display_t *display, long x, long y); void ply_entry_hide (ply_entry_t *entry); -void ply_entry_draw (ply_entry_t *entry); +void ply_entry_draw_area (ply_entry_t *entry, + ply_pixel_buffer_t *buffer, + long x, + long y, + unsigned long width, + unsigned long height); bool ply_entry_is_hidden (ply_entry_t *entry); long ply_entry_get_width (ply_entry_t *entry);