diff options
author | Dave Chapman <dave@dchapman.com> | 2006-01-24 23:24:58 +0000 |
---|---|---|
committer | Dave Chapman <dave@dchapman.com> | 2006-01-24 23:24:58 +0000 |
commit | 01ab727b43fb5d71417394840b940190a119f343 (patch) | |
tree | b917a133d6cca67a99e994eb2069390b6c52c04d /apps/plugins/sudoku.c | |
parent | 4b0da6d57e9ceb54e1b7019b05805d52d6b36719 (diff) | |
download | rockbox-01ab727b43fb5d71417394840b940190a119f343.tar.gz rockbox-01ab727b43fb5d71417394840b940190a119f343.zip |
Fix bug caused by change to external bitmaps - use the correct stride value for lcd_bitmap_part()
git-svn-id: svn://svn.rockbox.org/rockbox/trunk@8440 a1c6a512-1295-4272-9138-f99709370657
Diffstat (limited to 'apps/plugins/sudoku.c')
-rw-r--r-- | apps/plugins/sudoku.c | 19 |
1 files changed, 11 insertions, 8 deletions
diff --git a/apps/plugins/sudoku.c b/apps/plugins/sudoku.c index 39741ce19c..767a33fec7 100644 --- a/apps/plugins/sudoku.c +++ b/apps/plugins/sudoku.c | |||
@@ -141,6 +141,7 @@ static unsigned char cellypos[9]={ 2, 15, 28, 42, 55, 68, 82, 95, 108 }; | |||
141 | 141 | ||
142 | /* The height of one cell in the bitmap */ | 142 | /* The height of one cell in the bitmap */ |
143 | #define BITMAP_HEIGHT 12 | 143 | #define BITMAP_HEIGHT 12 |
144 | #define BITMAP_STRIDE 12 | ||
144 | 145 | ||
145 | #elif (LCD_HEIGHT==64) && (LCD_WIDTH==112) | 146 | #elif (LCD_HEIGHT==64) && (LCD_WIDTH==112) |
146 | /* For Archos Recorder, FM and Ondio (112x64): | 147 | /* For Archos Recorder, FM and Ondio (112x64): |
@@ -165,6 +166,7 @@ static unsigned char cellypos[9]={ 1, 8, 15, 22, 29, 36, 43, 50, 57 }; | |||
165 | 166 | ||
166 | /* The height of one cell in the bitmap */ | 167 | /* The height of one cell in the bitmap */ |
167 | #define BITMAP_HEIGHT 8 | 168 | #define BITMAP_HEIGHT 8 |
169 | #define BITMAP_STRIDE 8 | ||
168 | 170 | ||
169 | #elif (LCD_HEIGHT>=176) && (LCD_WIDTH>=220) | 171 | #elif (LCD_HEIGHT>=176) && (LCD_WIDTH>=220) |
170 | /* iriver h300 */ | 172 | /* iriver h300 */ |
@@ -187,6 +189,7 @@ static unsigned char cellypos[9]={ 2, 19, 36, 54, 71, 88, 106, 123, 140 }; | |||
187 | 189 | ||
188 | /* The height of one cell in the bitmap */ | 190 | /* The height of one cell in the bitmap */ |
189 | #define BITMAP_HEIGHT 16 | 191 | #define BITMAP_HEIGHT 16 |
192 | #define BITMAP_STRIDE 16 | ||
190 | 193 | ||
191 | #else | 194 | #else |
192 | #error SUDOKU: Unsupported LCD size | 195 | #error SUDOKU: Unsupported LCD size |
@@ -658,14 +661,14 @@ void update_cell(struct sudoku_state_t* state, int r, int c) | |||
658 | */ | 661 | */ |
659 | 662 | ||
660 | if ((r==state->y) && (c==state->x)) { | 663 | if ((r==state->y) && (c==state->x)) { |
661 | rb->lcd_bitmap_part(sudoku_inverse,0,BITMAP_HEIGHT*(state->currentboard[r][c]-'0'),0, | 664 | rb->lcd_bitmap_part(sudoku_inverse,0,BITMAP_HEIGHT*(state->currentboard[r][c]-'0'),BITMAP_STRIDE, |
662 | XOFS+cellxpos[c],YOFS+cellypos[r],CELL_WIDTH,CELL_HEIGHT); | 665 | XOFS+cellxpos[c],YOFS+cellypos[r],CELL_WIDTH,CELL_HEIGHT); |
663 | } else { | 666 | } else { |
664 | if (state->startboard[r][c]!='0') { | 667 | if (state->startboard[r][c]!='0') { |
665 | rb->lcd_bitmap_part(sudoku_start,0,BITMAP_HEIGHT*(state->startboard[r][c]-'0'),0, | 668 | rb->lcd_bitmap_part(sudoku_start,0,BITMAP_HEIGHT*(state->startboard[r][c]-'0'),BITMAP_STRIDE, |
666 | XOFS+cellxpos[c],YOFS+cellypos[r],CELL_WIDTH,CELL_HEIGHT); | 669 | XOFS+cellxpos[c],YOFS+cellypos[r],CELL_WIDTH,CELL_HEIGHT); |
667 | } else { | 670 | } else { |
668 | rb->lcd_bitmap_part(sudoku_normal,0,BITMAP_HEIGHT*(state->currentboard[r][c]-'0'),0, | 671 | rb->lcd_bitmap_part(sudoku_normal,0,BITMAP_HEIGHT*(state->currentboard[r][c]-'0'),BITMAP_STRIDE, |
669 | XOFS+cellxpos[c],YOFS+cellypos[r],CELL_WIDTH,CELL_HEIGHT); | 672 | XOFS+cellxpos[c],YOFS+cellypos[r],CELL_WIDTH,CELL_HEIGHT); |
670 | } | 673 | } |
671 | } | 674 | } |
@@ -745,7 +748,7 @@ void display_board(struct sudoku_state_t* state) | |||
745 | } | 748 | } |
746 | #endif | 749 | #endif |
747 | if ((r>0) && state->possiblevals[state->y][state->x]&(1<<(r))) | 750 | if ((r>0) && state->possiblevals[state->y][state->x]&(1<<(r))) |
748 | rb->lcd_bitmap_part(sudoku_normal,0,BITMAP_HEIGHT*r,0, | 751 | rb->lcd_bitmap_part(sudoku_normal,0,BITMAP_HEIGHT*r,BITMAP_STRIDE, |
749 | XOFSSCRATCHPAD+1,YOFS+cellypos[r-1], | 752 | XOFSSCRATCHPAD+1,YOFS+cellypos[r-1], |
750 | CELL_WIDTH,CELL_HEIGHT); | 753 | CELL_WIDTH,CELL_HEIGHT); |
751 | } | 754 | } |
@@ -756,7 +759,7 @@ void display_board(struct sudoku_state_t* state) | |||
756 | YOFS+cellypos[8]+CELL_HEIGHT+1); | 759 | YOFS+cellypos[8]+CELL_HEIGHT+1); |
757 | #endif | 760 | #endif |
758 | if (state->possiblevals[state->y][state->x]&(1<<(r))) | 761 | if (state->possiblevals[state->y][state->x]&(1<<(r))) |
759 | rb->lcd_bitmap_part(sudoku_normal,0,BITMAP_HEIGHT*r,0, | 762 | rb->lcd_bitmap_part(sudoku_normal,0,BITMAP_HEIGHT*r,BITMAP_STRIDE, |
760 | XOFSSCRATCHPAD+1,YOFS+cellypos[8], | 763 | XOFSSCRATCHPAD+1,YOFS+cellypos[8], |
761 | CELL_WIDTH,CELL_HEIGHT); | 764 | CELL_WIDTH,CELL_HEIGHT); |
762 | #endif | 765 | #endif |
@@ -771,14 +774,14 @@ void display_board(struct sudoku_state_t* state) | |||
771 | */ | 774 | */ |
772 | 775 | ||
773 | if ((r==state->y) && (c==state->x)) { | 776 | if ((r==state->y) && (c==state->x)) { |
774 | rb->lcd_bitmap_part(sudoku_inverse,0,BITMAP_HEIGHT*(state->currentboard[r][c]-'0'),0, | 777 | rb->lcd_bitmap_part(sudoku_inverse,0,BITMAP_HEIGHT*(state->currentboard[r][c]-'0'),BITMAP_STRIDE, |
775 | XOFS+cellxpos[c],YOFS+cellypos[r],CELL_WIDTH,CELL_HEIGHT); | 778 | XOFS+cellxpos[c],YOFS+cellypos[r],CELL_WIDTH,CELL_HEIGHT); |
776 | } else { | 779 | } else { |
777 | if (state->startboard[r][c]!='0') { | 780 | if (state->startboard[r][c]!='0') { |
778 | rb->lcd_bitmap_part(sudoku_start,0,BITMAP_HEIGHT*(state->startboard[r][c]-'0'),0, | 781 | rb->lcd_bitmap_part(sudoku_start,0,BITMAP_HEIGHT*(state->startboard[r][c]-'0'),BITMAP_STRIDE, |
779 | XOFS+cellxpos[c],YOFS+cellypos[r],CELL_WIDTH,CELL_HEIGHT); | 782 | XOFS+cellxpos[c],YOFS+cellypos[r],CELL_WIDTH,CELL_HEIGHT); |
780 | } else { | 783 | } else { |
781 | rb->lcd_bitmap_part(sudoku_normal,0,BITMAP_HEIGHT*(state->currentboard[r][c]-'0'),0, | 784 | rb->lcd_bitmap_part(sudoku_normal,0,BITMAP_HEIGHT*(state->currentboard[r][c]-'0'),BITMAP_STRIDE, |
782 | XOFS+cellxpos[c],YOFS+cellypos[r],CELL_WIDTH,CELL_HEIGHT); | 785 | XOFS+cellxpos[c],YOFS+cellypos[r],CELL_WIDTH,CELL_HEIGHT); |
783 | } | 786 | } |
784 | } | 787 | } |