summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDave Chapman <dave@dchapman.com>2006-01-24 23:24:58 +0000
committerDave Chapman <dave@dchapman.com>2006-01-24 23:24:58 +0000
commit01ab727b43fb5d71417394840b940190a119f343 (patch)
treeb917a133d6cca67a99e994eb2069390b6c52c04d
parent4b0da6d57e9ceb54e1b7019b05805d52d6b36719 (diff)
downloadrockbox-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
-rw-r--r--apps/plugins/sudoku.c19
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 }