diff options
author | Slávek Banko <[email protected]> | 2015-07-11 12:19:58 +0200 |
---|---|---|
committer | Slávek Banko <[email protected]> | 2015-07-11 12:19:58 +0200 |
commit | 27d8f6a925c6f999b8f616e605d8b028222703ad (patch) | |
tree | 2ce86e54803c72a2fa9316a187daadba88f2fa06 /ubuntu/maverick/defaultsettings/desktop-base/usplash/moreblue-orbit/theme.c | |
parent | 072cf6f0c854389f3304edb39ed8ea7987e16c63 (diff) | |
download | tde-packaging-27d8f6a925c6f999b8f616e605d8b028222703ad.tar.gz tde-packaging-27d8f6a925c6f999b8f616e605d8b028222703ad.zip |
Move common files of defaultsettings packages on Debian and Ubuntu to common folder
Signed-off-by: Slávek Banko <[email protected]>
Diffstat (limited to 'ubuntu/maverick/defaultsettings/desktop-base/usplash/moreblue-orbit/theme.c')
-rw-r--r-- | ubuntu/maverick/defaultsettings/desktop-base/usplash/moreblue-orbit/theme.c | 178 |
1 files changed, 178 insertions, 0 deletions
diff --git a/ubuntu/maverick/defaultsettings/desktop-base/usplash/moreblue-orbit/theme.c b/ubuntu/maverick/defaultsettings/desktop-base/usplash/moreblue-orbit/theme.c new file mode 100644 index 000000000..59632522e --- /dev/null +++ b/ubuntu/maverick/defaultsettings/desktop-base/usplash/moreblue-orbit/theme.c @@ -0,0 +1,178 @@ +/* usplash + * + * theme.c - theme definition + * + * Copyright © 2006 David Härdeman <[email protected]> + * based on example-theme from usplash which is + * Copyright © 2006 Dennis Kaarsemaker <[email protected]> + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2 of the License, or + * (at your option) any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + */ + +#include <usplash-theme.h> +#include <usplash_backend.h> + +void t_init(struct usplash_theme *theme); +void t_draw_progressbar(struct usplash_theme *theme, int percentage); +void t_clear_progressbar(struct usplash_theme *theme); +void t_clear_text(struct usplash_theme *theme); +void t_animate_step(struct usplash_theme* theme, int pulsating); + +/* Auto-generated theme definitions */ +#include "theme.h" + +static struct private_hack *phack = NULL; + +void +t_init(struct usplash_theme *theme) +{ + int x, y; + + /* START - HACKS R US */ + phack = (struct private_hack *)theme->font; + theme->font = NULL; + /* FINISH - HACKS R US */ + usplash_getdimensions(&x, &y); + theme->progressbar_x = (x - theme->pixmap->width)/2 + theme->progressbar_x; + theme->progressbar_y = (y - theme->pixmap->height)/2 + theme->progressbar_y; +} + +void +t_draw_progressbar(struct usplash_theme *theme, int percentage) +{ + int w = (phack->progress_bg->width * percentage / 100); + static int last_w = 0; + + if (w != 0 && w == last_w) + return; + + /* Check if we're changing mode between startup and shutdown */ + if (last_w >= 0 && w < 0) { + usplash_put(theme->progressbar_x, + theme->progressbar_y, + phack->progress_fg); + last_w = 0; + } else if (last_w < 0 && w > 0) { + usplash_put(theme->progressbar_x, + theme->progressbar_y, + phack->progress_bg); + last_w = 0; + } + + /* Draw only the part which has changed since last time */ + if (percentage == 0) { + usplash_put(theme->progressbar_x, + theme->progressbar_y, + phack->progress_bg); + } else if (percentage < 0) { + usplash_put_part(theme->progressbar_x - last_w, + theme->progressbar_y, + -w + last_w, + phack->progress_bg->height, + phack->progress_bg, + -last_w, 0); + } else if (percentage > 0) { + usplash_put_part(theme->progressbar_x + last_w, + theme->progressbar_y, + w - last_w, + phack->progress_fg->height, + phack->progress_fg, + last_w, 0); + } + + last_w = w; +} + +void +t_clear_progressbar(struct usplash_theme *theme) +{ + t_draw_progressbar(theme, 0); +} + +void +t_clear_text(struct usplash_theme *theme) +{ + int x, y, x1, y1, x2, y2; + usplash_getdimensions(&x, &y); + + /* Draw outer border */ + x1 = (x - theme->pixmap->width)/2 + theme->text_x - TEXT_EXTRA_PX; + y1 = (y - theme->pixmap->height)/2 + theme->text_y - TEXT_EXTRA_PX; + x2 = x1 + theme->text_width + 2 * TEXT_EXTRA_PX; + y2 = y1 + theme->text_height + 2 * TEXT_EXTRA_PX; + usplash_clear(x1, y1, x2, y2, theme->text_foreground); + + /* Draw main text area with TEXT_BORDER_PX pixels padding */ + x1 += TEXT_BORDER_PX; + y1 += TEXT_BORDER_PX; + x2 -= TEXT_BORDER_PX; + y2 -= TEXT_BORDER_PX; + usplash_clear(x1, y1, x2, y2, theme->text_background); +} + +void +t_animate_step(struct usplash_theme* theme, int pulsating) +{ + static int pulsate_step = 0; + static int pulse_width = 70; + static int step_width = 1; + static int prev_step = 0; + static int reset = 1; + int num_steps = (phack->progress_fg->width - pulse_width)/step_width; + int x1; + + if (!pulsating) { + reset = 1; + return; + } + + if (reset) { + /* Reset pulse */ + t_clear_progressbar(theme); + reset = 0; + pulsate_step = 0; + usplash_put_part(theme->progressbar_x, + theme->progressbar_y, + pulse_width, + phack->progress_fg->height, + phack->progress_fg, + 0, 0); + } else { + /* Remove from left hand side of pulse */ + x1 = step_width * prev_step; + usplash_put_part(theme->progressbar_x + x1, + theme->progressbar_y, + step_width, + phack->progress_bg->height, + phack->progress_bg, + x1, 0); + } + + /* Add to right hand side of pulse */ + x1 = step_width * pulsate_step + pulse_width; + usplash_put_part(theme->progressbar_x + x1, + theme->progressbar_y, + step_width, + phack->progress_fg->height, + phack->progress_fg, + x1, 0); + + /* Check for wraparound */ + prev_step = pulsate_step; + pulsate_step++; + if (pulsate_step >= num_steps) + reset = 1; +} + |