ubb-la/gui.c |
74 | 74 | |
75 | 75 | #define UNIT_GAP 2 /* space between number and unit */ |
76 | 76 | |
| 77 | #define POS_X 168 |
| 78 | #define POS_Y (MEAS_DIV_Y-8-3) |
| 79 | |
| 80 | #define MEAS_DIV_Y (FREQ_Y-3-1) |
| 81 | |
77 | 82 | #define FREQ_X 0 |
78 | | #define FREQ_Y 220 |
| 83 | #define FREQ_Y 222 |
79 | 84 | #define INTERVAL_X 0 |
80 | | #define INTERVAL_Y 230 |
| 85 | #define INTERVAL_Y (FREQ_Y+8+2) |
81 | 86 | #define DIV_SAMP_X (DIV_INT_X-8) |
82 | 87 | #define DIV_SAMP_Y FREQ_Y |
83 | 88 | #define DIV_INT_X 80 |
... | ... | |
333 | 338 | /* ----- Display the sample frequency -------------------------------------- */ |
334 | 339 | |
335 | 340 | |
336 | | static void si_text(int x, int y, double v, const char *unit) |
| 341 | static void si_text(int x, int y, double v, const char *unit, int digits) |
337 | 342 | { |
338 | 343 | const char *pfx; |
339 | 344 | |
... | ... | |
355 | 360 | v *= 1e9; |
356 | 361 | pfx = "n"; |
357 | 362 | } |
358 | | if (v >= 10) |
| 363 | if (v >= 10 && digits == 3) |
359 | 364 | textf(x, y, TEXT_RGBA, "%3d", (int) (v+0.5)); |
| 365 | else if (v >= 100 && digits == 4) |
| 366 | textf(x, y, TEXT_RGBA, "%4d", (int) (v+0.5)); |
| 367 | else if (v >= 100) |
| 368 | textf(x, y, TEXT_RGBA, "%*.*f", digits, digits-4, v); |
| 369 | else if (v >= 10) |
| 370 | textf(x, y, TEXT_RGBA, "%*.*f", digits, digits-3, v); |
360 | 371 | else |
361 | | textf(x, y, TEXT_RGBA, "%3.1f", v); |
362 | | textf(x+3*8+UNIT_GAP, y, UNIT_RGBA, "%s%s", pfx, unit); |
| 372 | textf(x, y, TEXT_RGBA, "%*.*f", digits, digits-2, v); |
| 373 | textf(x+digits*8+UNIT_GAP, y, UNIT_RGBA, "%s%s", pfx, unit); |
363 | 374 | } |
364 | 375 | |
365 | 376 | |
... | ... | |
367 | 378 | { |
368 | 379 | int div; |
369 | 380 | |
370 | | si_text(FREQ_X, FREQ_Y, freq, "Sa/s"); |
371 | | si_text(INTERVAL_X, INTERVAL_Y, 1/freq, "s/Sa"); |
| 381 | si_text(FREQ_X, FREQ_Y, freq, "Sa/s", 3); |
| 382 | si_text(INTERVAL_X, INTERVAL_Y, 1/freq, "s/Sa", 3); |
372 | 383 | div = (DIV_X >> MAX_ZOOM) << (MAX_ZOOM-zoom); |
373 | 384 | textf(DIV_SAMP_X, DIV_SAMP_Y, TEXT_RGBA, "%4d", div); |
374 | 385 | textf(DIV_SAMP_X+4*8+UNIT_GAP, DIV_SAMP_Y, UNIT_RGBA, "Sa/div", div); |
375 | | si_text(DIV_INT_X, DIV_INT_Y, div/freq, "s/div"); |
| 386 | si_text(DIV_INT_X, DIV_INT_Y, div/freq, "s/div", 3); |
376 | 387 | } |
377 | 388 | |
378 | 389 | |
... | ... | |
421 | 432 | XCENTER+CENTER_W/2, CENTER_Y0, CENTER_RGBA); |
422 | 433 | show_buffer(buf, skip, nibbles, CH_XOFF, XRES, zoom, pos); |
423 | 434 | show_freq(freq, zoom); |
| 435 | si_text(POS_X, POS_Y, pos/freq, "s", 7); |
| 436 | hlineColor(surf, 0, XRES-1, MEAS_DIV_Y, DIV_RGBA); |
424 | 437 | update(); |
425 | 438 | |
426 | 439 | while (1) { |