Size redux, and fix a few bugs in Scroll90().

This commit is contained in:
root
2013-08-30 08:49:06 +00:00
parent 26638bb958
commit 246d97edab
2 changed files with 20 additions and 28 deletions
+17 -21
View File
@@ -51,7 +51,7 @@ PROGMEM uint8_t figuresData[][14] = {
* @param x,y coordinates,
* @param set is 1 or 0 to draw or clear it
*/
void Figure::Draw(int figure,int x,int y,int set) {
void Figure::Draw(uint8_t figure, int x, int y, uint8_t c) {
const uint8_t* character = figuresData[figure];
for (;;) {
uint8_t data = pgm_read_byte_near(character++);
@@ -64,7 +64,7 @@ void Figure::Draw(int figure,int x,int y,int set) {
charRow+y<DISPLAY_ROWS &&
charRow+y>=0
) {
LedSign::Set(charCol+x,charRow+y,set);
LedSign::Set(charCol+x, charRow+y, c);
}
}
}
@@ -78,7 +78,7 @@ void Figure::Draw(int figure,int x,int y,int set) {
* @param x,y coordinates,
* @param set is 1 or 0 to draw or clear it
*/
void Figure::Draw90(int figure,int x,int y,int set) {
void Figure::Draw90(uint8_t figure, int x, int y, uint8_t c) {
const uint8_t* character = figuresData[figure];
for (;;) {
uint8_t data = pgm_read_byte_near(character++);
@@ -91,7 +91,7 @@ void Figure::Draw90(int figure,int x,int y,int set) {
charCol+y<DISPLAY_ROWS &&
charCol+y>=0
) {
LedSign::Set((5-charRow)+x,charCol+y,set);
LedSign::Set((5-charRow)+x, charCol+y, c);
}
}
}
@@ -105,25 +105,21 @@ void Figure::Draw90(int figure,int x,int y,int set) {
* @param x is the coordinate where we put the top of the figure [0-13]
*/
void Figure::Scroll90(unsigned long value,uint8_t x) {
int i,j,k;
uint8_t figures[]={
(value%10000000)/1000000,
(value%1000000)/100000,
(value%100000)/10000,
(value%10000)/1000,
(value%1000)/100,
(value%100)/10,
(value%10)
};
j=0;
while (figures[j]==0 && j<6) j++;
int8_t i,j,k;
uint8_t figures[10];
for(i=0;i<9+(7-j)*5;i++) {
for(k=j;k<=6;k++)
Figure::Draw90(figures[k],3,-i+9+4*(k-j) ,1);
j = 0;
do {
figures[j++] = value%10;
value/=10;
} while (value);
for (i=9+4*j; i>=0; i--) {
for (k=j; k>0; k--)
Figure::Draw90(figures[k-1], x, i-4*k, SHADES-1);
delay(100);
for(k=j;k<=6;k++)
Figure::Draw90(figures[k],3,-i+9+4*(k-j) ,0);
for (k=j; k>0; k--)
Figure::Draw90(figures[k-1], x, i-4*k, 0);
}
}
+3 -7
View File
@@ -29,13 +29,9 @@
namespace Figure
{
extern void Draw(int figure,int x,int y,int set=1);
extern void Draw90(int figure,int x,int y,int set=1);
extern void Scroll90(unsigned long value,uint8_t x=3);
extern void Draw(uint8_t figure, int x, int y, uint8_t c=1);
extern void Draw90(uint8_t figure, int x, int y, uint8_t c=1);
extern void Scroll90(unsigned long value, uint8_t x=3);
}
#endif