Rev 4 | Rev 7 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
Rev 4 | Rev 5 | ||
---|---|---|---|
Line 55... | Line 55... | ||
55 | curr_x = 0; |
55 | curr_x = 0; |
56 | } |
56 | } |
57 | m_cursor_x = curr_x; |
57 | m_cursor_x = curr_x; |
58 | } |
58 | } |
59 | 59 | ||
- | 60 | uint8_t |
|
- | 61 | display_t::formatNum (char *buff, uint8_t siz, uint8_t digits, uint8_t dp_pos, int val) |
|
- | 62 | { |
|
- | 63 | digits++; |
|
- | 64 | uint8_t pos = digits; |
|
- | 65 | uint8_t dp_loc = pos - dp_pos; |
|
- | 66 | uint8_t sign = 0; |
|
- | 67 | if (val < 0) |
|
- | 68 | { |
|
- | 69 | sign = 1; |
|
- | 70 | val = -val; |
|
- | 71 | } |
|
- | 72 | ||
- | 73 | buff[pos] = 0; |
|
- | 74 | while (pos && pos < siz) |
|
- | 75 | { |
|
- | 76 | if (pos == dp_loc) |
|
- | 77 | { |
|
- | 78 | buff[--pos] = '.'; |
|
- | 79 | } |
|
- | 80 | else |
|
- | 81 | { |
|
- | 82 | buff[--pos] = val % 10 + '0'; |
|
- | 83 | val /= 10; |
|
- | 84 | if (val == 0 && pos < dp_loc) |
|
- | 85 | break; |
|
- | 86 | } |
|
- | 87 | } |
|
- | 88 | if (sign) |
|
- | 89 | { |
|
- | 90 | buff[--pos] = '-'; |
|
- | 91 | } |
|
- | 92 | return digits; |
|
- | 93 | } |
|
- | 94 | ||
- | 95 | void |
|
- | 96 | display_t::fontDigits (font_t &font, uint8_t digits, uint8_t dp_pos, int val) |
|
- | 97 | { |
|
- | 98 | char buff[10] = " "; |
|
- | 99 | uint8_t wid = formatNum (buff, sizeof(buff), digits, dp_pos, val); |
|
- | 100 | printString (font, buff, wid, WHITE ); |
|
- | 101 | } |
|
- | 102 | ||
- | 103 | void |
|
- | 104 | display_t::fontSigDigits (font_t &font,uint8_t x, uint8_t y, bool right_justify, uint8_t dp_pos, |
|
- | 105 | int val) |
|
- | 106 | { |
|
- | 107 | char digits; |
|
- | 108 | char sign = 0; |
|
- | 109 | int uval; |
|
- | 110 | if (val < 0) |
|
- | 111 | { |
|
- | 112 | uval = -val; |
|
- | 113 | sign = 1; // mark as negative |
|
- | 114 | } |
|
- | 115 | else |
|
- | 116 | { |
|
- | 117 | uval = val; |
|
- | 118 | } |
|
- | 119 | if (uval < 10) // always one digit for a sign or space, one for a digit |
|
- | 120 | { |
|
- | 121 | digits = 1; |
|
- | 122 | } |
|
- | 123 | if (uval >= 10 && uval < 100) |
|
- | 124 | { |
|
- | 125 | digits = 2; |
|
- | 126 | } |
|
- | 127 | if (uval >= 100 && uval < 1000) |
|
- | 128 | { |
|
- | 129 | digits = 3; |
|
- | 130 | } |
|
- | 131 | if (uval >= 1000) |
|
- | 132 | { |
|
- | 133 | digits = 4; |
|
- | 134 | } |
|
- | 135 | // backup for the - sign if right justified |
|
- | 136 | if (right_justify) |
|
- | 137 | { |
|
- | 138 | if (dp_pos < 10) |
|
- | 139 | { |
|
- | 140 | digits += 2; |
|
- | 141 | } |
|
- | 142 | else |
|
- | 143 | { |
|
- | 144 | digits += 1; |
|
- | 145 | } |
|
- | 146 | x -= digits * font.spacing(); |
|
- | 147 | } |
|
- | 148 | ||
- | 149 | gotoxy (x, y); |
|
- | 150 | fontDigits (font, digits, dp_pos, val); |
|
- | 151 | } |
|
- | 152 | ||
- | 153 |