mirror of
https://github.com/Rockbox/rockbox.git
synced 2025-12-08 12:45:26 -05:00
e200v2/Fuze: Correct and simplify clipping clipping code in lcd_update_rect().
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@24197 a1c6a512-1295-4272-9138-f99709370657
This commit is contained in:
parent
2f2213d63e
commit
5fd54dee4f
2 changed files with 39 additions and 39 deletions
|
|
@ -493,41 +493,41 @@ void lcd_update(void)
|
|||
void lcd_update_rect(int x, int y, int width, int height)
|
||||
{
|
||||
const fb_data *ptr;
|
||||
int xmax, ymax;
|
||||
|
||||
if (!display_on)
|
||||
return;
|
||||
|
||||
xmax = x + width;
|
||||
if (xmax >= LCD_WIDTH)
|
||||
xmax = LCD_WIDTH - 1; /* Clip right */
|
||||
/* nothing to draw? */
|
||||
if ((width <= 0) || (height <= 0) || (x >= LCD_WIDTH) ||
|
||||
(y >= LCD_HEIGHT) || (x + width <= 0) || (y + height <= 0))
|
||||
return;
|
||||
|
||||
if (x < 0)
|
||||
x = 0; /* Clip left */
|
||||
if (x >= xmax)
|
||||
return; /* nothing left to do */
|
||||
|
||||
width = xmax - x + 1; /* Fix width */
|
||||
|
||||
ymax = y + height;
|
||||
if (ymax >= LCD_HEIGHT)
|
||||
ymax = LCD_HEIGHT - 1; /* Clip bottom */
|
||||
{ /* clip left */
|
||||
width += x;
|
||||
x = 0;
|
||||
}
|
||||
if (y < 0)
|
||||
y = 0; /* Clip top */
|
||||
if (y >= ymax)
|
||||
return; /* nothing left to do */
|
||||
{ /* clip top */
|
||||
height += y;
|
||||
y = 0;
|
||||
}
|
||||
if (x + width > LCD_WIDTH)
|
||||
width = LCD_WIDTH - x; /* clip right */
|
||||
if (y + height > LCD_HEIGHT)
|
||||
height = LCD_HEIGHT - y; /* clip bottom */
|
||||
|
||||
lcd_write_reg(R_ENTRY_MODE, r_entry_mode);
|
||||
|
||||
lcd_window(x, y, xmax, ymax);
|
||||
lcd_window(x, y, x+width-1, y+height-1);
|
||||
lcd_write_cmd(R_WRITE_DATA_2_GRAM);
|
||||
|
||||
ptr = &lcd_framebuffer[y][x];
|
||||
|
||||
height = ymax - y; /* fix height */
|
||||
do
|
||||
{
|
||||
lcd_write_data(ptr, width);
|
||||
ptr += LCD_WIDTH;
|
||||
}
|
||||
while (--height >= 0);
|
||||
while (--height > 0);
|
||||
}
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue