summaryrefslogtreecommitdiff
path: root/uisimulator/sdl/lcd-sdl.c
diff options
context:
space:
mode:
authorThomas Martitz <kugel@rockbox.org>2010-05-15 21:02:47 +0000
committerThomas Martitz <kugel@rockbox.org>2010-05-15 21:02:47 +0000
commit3d0cee8abbaf764958743e8a7851eee94e60a913 (patch)
treea96b1ec825003a71643a7da4707c300f64824f82 /uisimulator/sdl/lcd-sdl.c
parentdcf442e61f21fb2aef5ce7de0547f733557b156e (diff)
downloadrockbox-3d0cee8abbaf764958743e8a7851eee94e60a913.tar.gz
rockbox-3d0cee8abbaf764958743e8a7851eee94e60a913.zip
- Move uisimulator/sdl/*.[ch] into the target tree, under firmware/target/hosted/sdl, uisdl.c is split up across button-sdl.c and system-sdl.c.
- Refactor the program startup. main() is now in main.c like on target, and the implicit application thread will now act as our main thread (previously a separate one was created for this in thread initialization). This is part of Rockbox as an application and is the first step to make an application port from the uisimulator. In a further step the sim bits from the sdl build will be separated out. git-svn-id: svn://svn.rockbox.org/rockbox/trunk@26065 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'uisimulator/sdl/lcd-sdl.c')
-rw-r--r--uisimulator/sdl/lcd-sdl.c112
1 files changed, 0 insertions, 112 deletions
diff --git a/uisimulator/sdl/lcd-sdl.c b/uisimulator/sdl/lcd-sdl.c
deleted file mode 100644
index f1ffe8a76a..0000000000
--- a/uisimulator/sdl/lcd-sdl.c
+++ /dev/null
@@ -1,112 +0,0 @@
1/***************************************************************************
2 * __________ __ ___.
3 * Open \______ \ ____ ____ | | _\_ |__ _______ ___
4 * Source | _// _ \_/ ___\| |/ /| __ \ / _ \ \/ /
5 * Jukebox | | ( <_> ) \___| < | \_\ ( <_> > < <
6 * Firmware |____|_ /\____/ \___ >__|_ \|___ /\____/__/\_ \
7 * \/ \/ \/ \/ \/
8 * $Id$
9 *
10 * Copyright (C) 2006 Dan Everton
11 *
12 * This program is free software; you can redistribute it and/or
13 * modify it under the terms of the GNU General Public License
14 * as published by the Free Software Foundation; either version 2
15 * of the License, or (at your option) any later version.
16 *
17 * This software is distributed on an "AS IS" basis, WITHOUT WARRANTY OF ANY
18 * KIND, either express or implied.
19 *
20 ****************************************************************************/
21
22#include "lcd-sdl.h"
23#include "uisdl.h"
24#include "system.h" /* for MIN() and MAX() */
25
26int display_zoom = 1;
27
28void sdl_update_rect(SDL_Surface *surface, int x_start, int y_start, int width,
29 int height, int max_x, int max_y,
30 unsigned long (*getpixel)(int, int))
31{
32 int x, y;
33 int xmax, ymax;
34 SDL_Rect dest;
35
36 ymax = y_start + height;
37 xmax = x_start + width;
38
39 if(xmax > max_x)
40 xmax = max_x;
41 if(ymax >= max_y)
42 ymax = max_y;
43
44 SDL_LockSurface(surface);
45
46 dest.w = display_zoom;
47 dest.h = display_zoom;
48
49 for (x = x_start; x < xmax; x++) {
50 dest.x = x * display_zoom;
51
52#ifdef HAVE_LCD_SPLIT
53 for (y = y_start; y < MIN(ymax, LCD_SPLIT_POS); y++) {
54 dest.y = y * display_zoom;
55
56 SDL_FillRect(surface, &dest, (Uint32)(getpixel(x, y) | 0x80));
57 }
58 for (y = MAX(y_start, LCD_SPLIT_POS); y < ymax; y++) {
59 dest.y = (y + LCD_SPLIT_LINES) * display_zoom ;
60
61 SDL_FillRect(surface, &dest, (Uint32)getpixel(x, y));
62 }
63#else
64 for (y = y_start; y < ymax; y++) {
65 dest.y = y * display_zoom;
66
67 SDL_FillRect(surface, &dest, (Uint32)getpixel(x, y));
68 }
69#endif
70 }
71
72 SDL_UnlockSurface(surface);
73}
74
75void sdl_gui_update(SDL_Surface *surface, int x_start, int y_start, int width,
76 int height, int max_x, int max_y, int ui_x, int ui_y)
77{
78 if (x_start + width > max_x)
79 width = max_x - x_start;
80 if (y_start + height > max_y)
81 height = max_y - y_start;
82
83 SDL_Rect src = {x_start * display_zoom, y_start * display_zoom,
84 width * display_zoom, height * display_zoom};
85 SDL_Rect dest= {(ui_x + x_start) * display_zoom,
86 (ui_y + y_start) * display_zoom,
87 width * display_zoom, height * display_zoom};
88
89 if (surface->flags & SDL_SRCALPHA) /* alpha needs a black background */
90 SDL_FillRect(gui_surface, &dest, 0);
91
92 SDL_BlitSurface(surface, &src, gui_surface, &dest);
93
94 SDL_Flip(gui_surface);
95}
96
97/* set a range of bitmap indices to a gradient from startcolour to endcolour */
98void sdl_set_gradient(SDL_Surface *surface, SDL_Color *start, SDL_Color *end,
99 int first, int steps)
100{
101 int i;
102 SDL_Color palette[steps];
103
104 for (i = 0; i < steps; i++) {
105 palette[i].r = start->r + (end->r - start->r) * i / (steps - 1);
106 palette[i].g = start->g + (end->g - start->g) * i / (steps - 1);
107 palette[i].b = start->b + (end->b - start->b) * i / (steps - 1);
108 }
109
110 SDL_SetPalette(surface, SDL_LOGPAL|SDL_PHYSPAL, palette, first, steps);
111}
112