Skip to content

Commit ff1be93

Browse files
authored
Merge pull request #8 from robbycandra/Enable_Right_Align_for_GUI_Disp_Float
Enable Mode and Right Align option for GUI DIsp Float
2 parents 16d981a + 9628f43 commit ff1be93

File tree

3 files changed

+52
-28
lines changed

3 files changed

+52
-28
lines changed

TFT/src/User/API/UI/GUI.c

Lines changed: 49 additions & 25 deletions
Original file line numberDiff line numberDiff line change
@@ -648,20 +648,23 @@ const uint32_t GUI_Pow10[10] = {
648648

649649
void GUI_DispDec(int16_t x, int16_t y,int32_t num, uint8_t len, uint8_t mode, uint8_t leftOrRight)
650650
{
651-
uint8_t t,temp,i=0;
652-
uint8_t enshow=0;
653-
char isNegative = 0;
651+
uint8_t i;
652+
uint8_t bit_value;
653+
uint8_t blank_bit_len = 0;
654+
uint8_t notZero = 0;
655+
char isNegative = 0;
656+
654657
if(num<0)
655658
{
656659
num = -num;
657660
isNegative = 1;
658661
}
659-
for(t=0;t<len;t++)
662+
for(i=0;i<len;i++)
660663
{
661-
temp=(num/GUI_Pow10[len-t-1])%10;
662-
if(enshow==0)
664+
bit_value=(num/GUI_Pow10[len-i-1])%10;
665+
if(notZero == 0)
663666
{
664-
if(temp==0 && t<(len-1))
667+
if(bit_value == 0 && i<(len-1))
665668
{
666669
if(leftOrRight==RIGHT)
667670
{
@@ -670,65 +673,86 @@ void GUI_DispDec(int16_t x, int16_t y,int32_t num, uint8_t len, uint8_t mode, ui
670673
}
671674
else
672675
{
673-
i++;
676+
blank_bit_len++;
674677
}
675678
continue;
676679
}
677680
else
678681
{
679-
enshow=1;
682+
notZero = 1;
680683
if(isNegative)
681684
{
682685
GUI_DispChar(x-BYTE_WIDTH,y,'-',mode);
683686
}
684687
}
685688
}
686-
GUI_DispChar(x,y,temp+'0',mode);
689+
GUI_DispChar(x,y,bit_value+'0',mode);
687690
x += BYTE_WIDTH;
688691
}
689-
for(;i>0;i--)
692+
for(; blank_bit_len>0; blank_bit_len--)
690693
{
691694
GUI_DispChar(x,y,' ',mode);
692695
x += BYTE_WIDTH;
693696
}
694697
}
695698

696-
void GUI_DispFloat(int16_t x, int16_t y, float num, uint8_t llen, uint8_t rlen)
699+
void GUI_DispFloat(int16_t x, int16_t y, float num, uint8_t llen, uint8_t rlen, uint8_t mode, uint8_t leftOrRight)
697700
{
698701
uint8_t alen = 0;
699702
uint8_t i=0;
700703
uint8_t notZero = 0;
701-
GUI_DispChar(x,y,num>=0 ? ' ':'-',1);
702-
x += BYTE_WIDTH;
703-
num= num>=0 ? num : (-num);
704+
char isNegative = 0;
705+
706+
if(num<0)
707+
{
708+
num = -num;
709+
isNegative = 1;
710+
}
704711

705712
num *= GUI_Pow10[(unsigned)rlen];
706713
num += 0.5f;
707-
num = (float) floor (num);
708-
for(i=0;i<llen;i++)
714+
num = (float) floor(num);
715+
for(i=0; i<llen; i++)
709716
{
710717
uint8_t bit_value = ((uint32_t)(num/GUI_Pow10[llen+rlen-1-i]))%10;
711-
if(bit_value !=0 || notZero !=0 || i == llen-1)
718+
if(notZero == 0)
712719
{
713-
notZero = 1;
714-
GUI_DispChar(x,y,bit_value+'0',1);
715-
x += BYTE_WIDTH;
716-
alen++;
720+
if(bit_value == 0 && i<(llen-1))
721+
{
722+
if(leftOrRight==RIGHT)
723+
{
724+
GUI_DispChar(x,y,' ',mode);
725+
x += BYTE_WIDTH;
726+
alen++;
727+
}
728+
continue;
729+
}
730+
else
731+
{
732+
notZero = 1;
733+
if(isNegative)
734+
{
735+
GUI_DispChar(x-BYTE_WIDTH,y,'-',mode);
736+
}
737+
}
717738
}
739+
GUI_DispChar(x,y,bit_value+'0',mode);
740+
x += BYTE_WIDTH;
741+
alen++;
718742
}
719-
GUI_DispChar(x,y,'.',1);
743+
GUI_DispChar(x,y,'.',mode);
720744
x += BYTE_WIDTH;
721745
alen++;
722746

723747
for(i=0;i<rlen;i++)
724748
{
725-
GUI_DispChar(x,y,(int)(num/GUI_Pow10[rlen-1-i])%10+'0',1);
749+
GUI_DispChar(x,y,(int)(num/GUI_Pow10[rlen-1-i])%10+'0',mode);
726750
x += BYTE_WIDTH;
727751
alen++;
728752
}
729753
for(; alen < llen+rlen; alen++)
730754
{
731-
GUI_DispChar(x,y,' ',1);
755+
GUI_DispChar(x,y,' ',mode);
732756
x += BYTE_WIDTH;
733757
}
734758
}

TFT/src/User/API/UI/GUI.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ void GUI_DispStringInPrect(const GUI_RECT *rect, const uint8_t *p, uint8_t mode)
5757
void GUI_DispCharInPrect(const GUI_RECT *rect, uint16_t p, uint8_t mode);
5858

5959
void GUI_DispDec(int16_t x, int16_t y,int32_t num, uint8_t len, uint8_t mode, uint8_t leftOrRight);
60-
void GUI_DispFloat(int16_t x, int16_t y, float num, uint8_t llen, uint8_t rlen);
60+
void GUI_DispFloat(int16_t x, int16_t y, float num, uint8_t llen, uint8_t rlen, uint8_t mode, uint8_t leftOrRight);
6161

6262

6363
/**************************************************** Widget *******************************************************************/

TFT/src/User/Menu/BabyStep.c

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,11 +58,11 @@ static float baby_step_value=0.0;
5858

5959
void showBabyStep(void)
6060
{
61-
GUI_DispFloat(CENTER_X - 3*BYTE_WIDTH/2, CENTER_Y, baby_step_value,1,2);
61+
GUI_DispFloat(CENTER_X - 3*BYTE_WIDTH/2, CENTER_Y, baby_step_value,1,2,1,RIGHT);
6262
}
6363
void babyStepReDraw(void)
6464
{
65-
GUI_DispFloat(CENTER_X - 3*BYTE_WIDTH/2, CENTER_Y, baby_step_value,1,2);
65+
GUI_DispFloat(CENTER_X - 3*BYTE_WIDTH/2, CENTER_Y, baby_step_value,1,2,1,RIGHT);
6666
}
6767

6868

0 commit comments

Comments
 (0)