forked from len0rd/rockbox
Adjusted grayscale demo plugin to H1x0: (1) Button assignment. (2) Variable screen resolution.
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@7248 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
05af28036e
commit
b65b52b1b9
1 changed files with 44 additions and 19 deletions
|
@ -22,7 +22,7 @@
|
|||
#ifndef SIMULATOR /* not for simulator by now */
|
||||
#include "plugin.h"
|
||||
|
||||
#if CONFIG_LCD == LCD_SSD1815 /* only for Recorder/Ondio displays */
|
||||
#if defined(HAVE_LCD_BITMAP) && (LCD_DEPTH < 4)
|
||||
#include "gray.h"
|
||||
|
||||
/* variable button definitions */
|
||||
|
@ -30,6 +30,17 @@
|
|||
#define GRAYSCALE_SHIFT BUTTON_ON
|
||||
#elif CONFIG_KEYPAD == ONDIO_PAD
|
||||
#define GRAYSCALE_SHIFT BUTTON_MENU
|
||||
#elif CONFIG_KEYPAD == IRIVER_H100_PAD
|
||||
#define GRAYSCALE_SHIFT BUTTON_ON
|
||||
#endif
|
||||
|
||||
#define GFX_HEIGHT (LCD_HEIGHT-8)
|
||||
#if LCD_WIDTH < 160
|
||||
#define GFX_GRAYTONE_WIDTH 86
|
||||
#define GFX_GRAYTONE_STEP 3
|
||||
#else
|
||||
#define GFX_GRAYTONE_WIDTH 128
|
||||
#define GFX_GRAYTONE_STEP 2
|
||||
#endif
|
||||
/******************************* Globals ***********************************/
|
||||
|
||||
|
@ -139,12 +150,15 @@ int main(void)
|
|||
gbuf = (unsigned char *) rb->plugin_get_buffer(&gbuf_size);
|
||||
|
||||
/* initialize the greyscale buffer:
|
||||
* 112 pixels wide, 7 rows (56 pixels) high, (try to) reserve
|
||||
* 32 bitplanes for 33 shades of grey. */
|
||||
shades = gray_init(rb, gbuf, gbuf_size, true, 112, 7, 32, NULL) + 1;
|
||||
Archos: 112 pixels wide, 7 rows (56 pixels) high, (try to) reserve
|
||||
32 bitplanes for 33 shades of grey.
|
||||
H1x0: 160 pixels wide, 30 rows (120 pixels) high, (try to) reserve
|
||||
32 bitplanes for 33 shades of grey. */
|
||||
shades = gray_init(rb, gbuf, gbuf_size, true, LCD_WIDTH,
|
||||
(GFX_HEIGHT*LCD_DEPTH/8), 32, NULL) + 1;
|
||||
|
||||
/* place greyscale overlay 1 row down */
|
||||
gray_set_position(0, 1);
|
||||
gray_set_position(0, LCD_DEPTH);
|
||||
|
||||
rb->snprintf(pbuf, sizeof(pbuf), "Shades: %d", shades);
|
||||
rb->lcd_puts(0, 0, pbuf);
|
||||
|
@ -159,36 +173,47 @@ int main(void)
|
|||
|
||||
/* draw a dark grey line star background */
|
||||
gray_set_foreground(80);
|
||||
for (y = 0; y < 56; y += 8) /* horizontal part */
|
||||
for (y = 0; y < GFX_HEIGHT; y += 8) /* horizontal part */
|
||||
{
|
||||
gray_drawline(0, y, 111, 55 - y); /* grey lines */
|
||||
gray_drawline(0, y, (LCD_WIDTH-1), (GFX_HEIGHT-1) - y); /*grey lines */
|
||||
}
|
||||
for (x = 10; x < 112; x += 10) /* vertical part */
|
||||
for (x = 10; x <= LCD_WIDTH; x += 10) /* vertical part */
|
||||
{
|
||||
gray_drawline(x, 0, 111 - x, 55); /* grey lines */
|
||||
gray_drawline(x, 0, (LCD_WIDTH-1) - x, (GFX_HEIGHT-1)); /*grey lines */
|
||||
}
|
||||
|
||||
gray_set_foreground(0);
|
||||
gray_drawrect(0, 0, 112, 56); /* black border */
|
||||
gray_drawrect(0, 0, LCD_WIDTH, GFX_HEIGHT); /* black border */
|
||||
|
||||
/* draw grey tones */
|
||||
for (i = 0; i < 86; i++)
|
||||
for (i = 0; i < GFX_GRAYTONE_WIDTH; i++)
|
||||
{
|
||||
x = 13 + i;
|
||||
gray_set_foreground(3 * i);
|
||||
gray_vline(x, 6, 49); /* vertical lines */
|
||||
x = ((LCD_WIDTH-GFX_GRAYTONE_WIDTH)/2) + i;
|
||||
gray_set_foreground(GFX_GRAYTONE_STEP * i);
|
||||
/* vertical lines */
|
||||
gray_vline(x, (GFX_HEIGHT/8), (GFX_HEIGHT-GFX_HEIGHT/8-1));
|
||||
}
|
||||
|
||||
gray_set_drawmode(DRMODE_COMPLEMENT);
|
||||
gray_fillrect(13, 29, 86, 21); /* invert rectangle (lower half) */
|
||||
gray_drawline(13, 27, 98, 27); /* invert a line */
|
||||
/* invert rectangle (lower half) */
|
||||
gray_fillrect((LCD_WIDTH-GFX_GRAYTONE_WIDTH)/2, (GFX_HEIGHT/2+1),
|
||||
GFX_GRAYTONE_WIDTH, (GFX_HEIGHT/2-GFX_HEIGHT/8-1));
|
||||
/* invert a line */
|
||||
gray_hline((LCD_WIDTH-GFX_GRAYTONE_WIDTH)/2,
|
||||
(LCD_WIDTH+GFX_GRAYTONE_WIDTH)/2, (GFX_HEIGHT/2-1));
|
||||
|
||||
/* show bitmaps (1 bit and 8 bit) */
|
||||
/* opaque */
|
||||
gray_set_drawinfo(DRMODE_SOLID, 255, 100);
|
||||
gray_mono_bitmap(rockbox, 14, 13, 43, 7); /* opaque */
|
||||
gray_mono_bitmap(rockbox,
|
||||
MAX((LCD_WIDTH/2-47), ((LCD_WIDTH-GFX_GRAYTONE_WIDTH)/2)),
|
||||
(5*GFX_HEIGHT/16-4), 43, 7);
|
||||
/* transparent */
|
||||
gray_set_drawinfo(DRMODE_FG, 0, 100);
|
||||
gray_mono_bitmap(showing, 58, 13, 39, 7); /* transparent */
|
||||
gray_gray_bitmap(grayscale_gray, 28, 35, 55, 7);
|
||||
gray_mono_bitmap(showing, (LCD_WIDTH/2+4) , (5*GFX_HEIGHT/16-4), 39, 7);
|
||||
/* greyscale */
|
||||
gray_gray_bitmap(grayscale_gray, ((LCD_WIDTH-55)/2), (11*GFX_HEIGHT/16-4),
|
||||
55, 7);
|
||||
|
||||
gray_update();
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue