Rev 13 | Rev 19 | Go to most recent revision | Show entire file | Ignore whitespace | Details | Blame | Last modification | View Log | RSS feed
| Rev 13 | Rev 15 | ||
|---|---|---|---|
| Line 195... | Line 195... | ||
| 195 | { |
195 | { |
| 196 | return ((ascii_lucida_bits[(y*ascii_lucida_width)/8+(x/8)])>>(x&7)) & 1 ; |
196 | return ((ascii_lucida_bits[(y*ascii_lucida_width)/8+(x/8)])>>(x&7)) & 1 ; |
| 197 | } |
197 | } |
| 198 | 198 | ||
| 199 | 199 | ||
| 200 | void font_digits( uint8_t digits,uint8_t dp_pos, int val) |
200 | static uint8_t format_num(char * buff, uint8_t digits,uint8_t dp_pos,int val) |
| 201 | { |
201 | { |
| 202 | char buff[9] = " "; |
202 | digits++; |
| 203 | uint8_t pos = digits; |
203 | uint8_t pos = digits; |
| - | 204 | uint8_t dp_loc = pos - dp_pos; |
|
| - | 205 | uint8_t sign = 0; |
|
| - | 206 | if(val<0) |
|
| - | 207 | { |
|
| - | 208 | sign = 1; |
|
| - | 209 | val = -val; |
|
| - | 210 | } |
|
| - | 211 | ||
| 204 | buff[pos]=0; |
212 | buff[pos]=0; |
| 205 | while (pos) |
213 | while (pos) |
| - | 214 | { |
|
| - | 215 | if(pos == dp_loc ) |
|
| 206 | { |
216 | { |
| 207 | if(pos==dp_pos) |
- | |
| 208 | { |
217 | |
| 209 | buff[--pos]='.'; |
218 | buff[--pos]='.'; |
| 210 | } |
- | |
| 211 | else |
- | |
| 212 | { |
- | |
| 213 | buff[--pos] = val%10 + '0'; |
- | |
| 214 | val/=10; |
- | |
| 215 | if(val==0 && pos<dp_pos) |
- | |
| 216 | break; |
- | |
| 217 | } |
- | |
| 218 | } |
219 | } |
| - | 220 | else |
|
| - | 221 | { |
|
| - | 222 | buff[--pos] = val%10 + '0'; |
|
| - | 223 | val/=10; |
|
| - | 224 | if(val==0 && pos< dp_loc) |
|
| - | 225 | break; |
|
| - | 226 | } |
|
| - | 227 | } |
|
| - | 228 | if(sign) |
|
| - | 229 | { |
|
| - | 230 | buff[--pos] = '-'; |
|
| - | 231 | } |
|
| - | 232 | return digits; |
|
| - | 233 | } |
|
| - | 234 | ||
| - | 235 | ||
| - | 236 | void font_digits( uint8_t digits,uint8_t dp_pos, int val) |
|
| - | 237 | { |
|
| - | 238 | char buff[10] = " "; |
|
| - | 239 | uint8_t len = format_num(buff, digits,dp_pos,val); |
|
| 219 | font_puts(buff); |
240 | font_puts(buff); |
| 220 | } |
241 | } |
| 221 | 242 | ||
| - | 243 | ||
| 222 | void font_sig_digits(uint8_t x, uint8_t y,uint8_t justify,int val) |
244 | void font_sig_digits(uint8_t x, uint8_t y,uint8_t right_justify,uint8_t dp_pos, int val) |
| 223 | { |
245 | { |
| 224 | int digits=1; |
246 | char digits; |
| - | 247 | char sign = 0; |
|
| - | 248 | int uval; |
|
| - | 249 | if (val < 0) |
|
| - | 250 | { |
|
| - | 251 | uval = -val; |
|
| - | 252 | sign = 1; // mark as negative |
|
| - | 253 | } |
|
| - | 254 | else |
|
| - | 255 | { |
|
| - | 256 | uval = val; |
|
| - | 257 | } |
|
| - | 258 | if(uval<10) // always one digit for a sign or space, one for a digit |
|
| - | 259 | { |
|
| - | 260 | digits = 1; |
|
| - | 261 | } |
|
| 225 | if(val>=10 && val <100) |
262 | if(uval>=10 && uval <100) |
| 226 | { |
263 | { |
| 227 | if(justify) x-=1; |
- | |
| 228 | digits = 2; |
264 | digits = 2; |
| 229 | } |
265 | } |
| 230 | if(val>=100 && val < 1000) |
266 | if(uval>=100 && uval < 1000) |
| 231 | { |
267 | { |
| 232 | if(justify) x-=2; |
- | |
| 233 | digits =3; |
268 | digits =3; |
| 234 | } |
269 | } |
| 235 | if(val>=1000) |
270 | if(uval>=1000) |
| 236 | { |
271 | { |
| 237 | if(justify) x-=3; |
- | |
| 238 | digits=4; |
272 | digits=4; |
| 239 | } |
273 | } |
| - | 274 | // backup for the - sign if right justified |
|
| - | 275 | if(right_justify) |
|
| - | 276 | { |
|
| - | 277 | if(dp_pos<10) |
|
| - | 278 | { |
|
| - | 279 | digits+=2; |
|
| - | 280 | } |
|
| - | 281 | else |
|
| - | 282 | { |
|
| - | 283 | digits+=1; |
|
| - | 284 | } |
|
| - | 285 | x-=(digits); |
|
| - | 286 | } |
|
| - | 287 | ||
| - | 288 | ||
| 240 | font_gotoxy(x,y); |
289 | font_gotoxy(x,y); |
| 241 | font_digits(digits,10,val); |
290 | font_digits(digits,dp_pos,val); |
| 242 | } |
291 | } |
| 243 | 292 | ||
| 244 | 293 | ||
| 245 | #define FONTX 10 |
294 | #define FONTX 10 |
| 246 | #define FONTY 18 |
295 | #define FONTY 18 |
| Line 280... | Line 329... | ||
| 280 | 329 | ||
| 281 | } |
330 | } |
| 282 | 331 | ||
| 283 | void print_digits(uint8_t x, uint8_t y, uint8_t digits,uint8_t dp_pos, int val) |
332 | void print_digits(uint8_t x, uint8_t y, uint8_t digits,uint8_t dp_pos, int val) |
| 284 | { |
333 | { |
| 285 | char buff[9] = " "; |
- | |
| 286 | uint8_t pos = digits; |
- | |
| 287 | buff[pos]=0; |
- | |
| 288 | while (pos) |
- | |
| 289 | { |
- | |
| 290 | if(pos==dp_pos) |
- | |
| 291 | { |
- | |
| 292 | buff[--pos]='.'; |
- | |
| 293 | } |
- | |
| 294 | else |
- | |
| 295 | { |
- | |
| 296 | buff[--pos] = val%10 + '0'; |
- | |
| 297 | val/=10; |
- | |
| 298 | if(val==0 && pos<dp_pos) |
- | |
| 299 | break; |
- | |
| 300 | } |
- | |
| 301 | } |
- | |
| 302 | 334 | ||
| - | 335 | ||
| - | 336 | char buff[10] = " "; |
|
| - | 337 | uint8_t len = format_num(buff, digits+1,dp_pos,val); |
|
| 303 | print_large_string(buff,x,y,digits); |
338 | print_large_string(buff,x,y,len); |
| 304 | } |
339 | } |
| 305 | 340 | ||
| 306 | 341 | ||
| 307 | 342 | ||
| 308 | 343 | ||
| 309 | 344 | ||