diff options
author | CEnnis91 <cennis91@gmail.com> | 2013-05-02 13:29:53 -0400 |
---|---|---|
committer | Tom Marshall <tdm@cyngn.com> | 2015-11-20 15:46:40 -0800 |
commit | 9dc02b1f906832f2e741d7a73469e1f874dd52da (patch) | |
tree | 6e9cae0aba6e6383345075effa9bc52df6219920 /minui | |
parent | 27b1a0ff456b7a21923aea866976cdd8b00c8379 (diff) | |
download | bootable_recovery-9dc02b1f906832f2e741d7a73469e1f874dd52da.zip bootable_recovery-9dc02b1f906832f2e741d7a73469e1f874dd52da.tar.gz bootable_recovery-9dc02b1f906832f2e741d7a73469e1f874dd52da.tar.bz2 |
OMGRainbows
No longer will we get bad reviews on CWM recovery for its lack
of rainbows! Originally design by gweedo767, this patch brings
back the wrap count mechanism from v2.0.2.4 to toggle Rainbow
Mode for the user. In the original design, every character has
a different color, but that method requires modifying graphics.c
which will cause breakage in devices with custom graphics.c.
This Rainbow Mode has a different color for each line, instead.
The wrap_count has been set to 5 instead of the previous 3 so
the toggle won't occur as often, if on accident.
(port to CM12.1 by cyanogen)
Change-Id: Ie9f6f1b6ed94ee69d4d8d9fe27f9a5417cc3f212
improve Rainbow Mode
* Require 5 consecutive menu "wraps" in the same direction to help
prevent accidental toggling
* Align colors into stripes (i.e. columns)
a) less prone to induce dizziness in some people when they change
b) better resembles a rainbow
* Move the stripes to the right when the selection moves up and
move the stripes to the left when the selection moves down
Change-Id: I3feae173b22f5703c554ca33e634881749ff54cf
Diffstat (limited to 'minui')
-rw-r--r-- | minui/graphics.cpp | 32 | ||||
-rw-r--r-- | minui/minui.h | 3 |
2 files changed, 35 insertions, 0 deletions
diff --git a/minui/graphics.cpp b/minui/graphics.cpp index c0eea9e..43c28ce 100644 --- a/minui/graphics.cpp +++ b/minui/graphics.cpp @@ -103,6 +103,36 @@ static void text_blend(unsigned char* src_p, int src_row_bytes, } } +static int rainbow_index = 0; +static int rainbow_enabled = 0; +static int rainbow_colors[] = { 255, 0, 0, // red + 255, 127, 0, // orange + 255, 255, 0, // yellow + 0, 255, 0, // green + 60, 80, 255, // blue + 143, 0, 255 }; // violet +static int num_rb_colors = + (sizeof(rainbow_colors)/sizeof(rainbow_colors[0])) / 3; + +static void rainbow(int col) { + int rainbow_color = ((rainbow_index + col) % num_rb_colors) * 3; + gr_color(rainbow_colors[rainbow_color], rainbow_colors[rainbow_color+1], + rainbow_colors[rainbow_color+2], 255); +} + +void set_rainbow_mode(int enabled) { + rainbow_enabled = enabled; +} + +void move_rainbow(int x) { + rainbow_index += x; + if (rainbow_index < 0) { + rainbow_index = num_rb_colors - 1; + } else if (rainbow_index >= num_rb_colors) { + rainbow_index = 0; + } +} + void gr_text(int x, int y, const char *s, bool bold) { GRFont* font = gr_font; @@ -116,6 +146,8 @@ void gr_text(int x, int y, const char *s, bool bold) unsigned char ch; while ((ch = *s++)) { + if (rainbow_enabled) rainbow(x / font->cwidth); + if (outside(x, y) || outside(x+font->cwidth-1, y+font->cheight-1)) break; if (ch < ' ' || ch > '~') { diff --git a/minui/minui.h b/minui/minui.h index bdde083..d714632 100644 --- a/minui/minui.h +++ b/minui/minui.h @@ -120,4 +120,7 @@ int res_create_localized_alpha_surface(const char* name, const char* locale, // functions. void res_free_surface(GRSurface* surface); +void set_rainbow_mode(int enabled); +void move_rainbow(int x); + #endif |