fix <modulo> feature (required for the compass tape)
This commit is contained in:
parent
6c8ae0df1f
commit
5000731c03
3 changed files with 19 additions and 12 deletions
|
@ -457,18 +457,17 @@ public:
|
|||
virtual void draw ( void ) {} // No-op here. Defined in derived classes.
|
||||
|
||||
protected:
|
||||
inline unsigned int modulo() const { return _modulo; }
|
||||
inline float factor() const { return _display_factor; }
|
||||
inline float range_to_show() const { return _range_shown; }
|
||||
|
||||
Input _input;
|
||||
float _major_divs; // major division marker units
|
||||
float _minor_divs; // minor division marker units
|
||||
float _major_divs; // major division marker units
|
||||
float _minor_divs; // minor division marker units
|
||||
unsigned int _modulo; // Roll over point
|
||||
|
||||
private:
|
||||
float _range_shown; // Width Units.
|
||||
float _display_factor; // factor => screen units/range values.
|
||||
unsigned int _modulo; // Roll over point
|
||||
};
|
||||
|
||||
|
||||
|
|
|
@ -219,7 +219,7 @@ void HUD::Gauge::draw(void)
|
|||
i = (int)vmin;
|
||||
for (; i <last ; i++) {
|
||||
condition = true;
|
||||
if (!modulo() && i < _input.min())
|
||||
if (!_modulo && i < _input.min())
|
||||
condition = false;
|
||||
|
||||
if (condition) {
|
||||
|
@ -246,12 +246,12 @@ void HUD::Gauge::draw(void)
|
|||
|
||||
if (_major_divs) {
|
||||
if (!(i % (int)_major_divs)) {
|
||||
if (modulo()) {
|
||||
if (_modulo) {
|
||||
if (disp_val < 0) {
|
||||
while (disp_val < 0)
|
||||
disp_val += modulo();
|
||||
disp_val += _modulo;
|
||||
}
|
||||
disp_val = i % (int)modulo();
|
||||
disp_val = i % (int)_modulo;
|
||||
} else {
|
||||
disp_val = i;
|
||||
}
|
||||
|
|
|
@ -274,7 +274,7 @@ void HUD::Tape::draw(void) // (HUD_scale * pscale)
|
|||
for (int i = 0; ; i++) {
|
||||
float v = vstart + i * _minor_divs;
|
||||
|
||||
if (!modulo() && (v < _input.min() || v > _input.max()))
|
||||
if (!_modulo && (v < _input.min() || v > _input.max()))
|
||||
continue;
|
||||
|
||||
float y = _y + (v - vmin) * factor();
|
||||
|
@ -342,7 +342,11 @@ void HUD::Tape::draw(void) // (HUD_scale * pscale)
|
|||
} // end huds both
|
||||
|
||||
} else { // major div
|
||||
lenstr = snprintf(buf, BUFSIZE, "%d", int(v));
|
||||
int display_value = int(v);
|
||||
if (_modulo)
|
||||
display_value %= _modulo;
|
||||
|
||||
lenstr = snprintf(buf, BUFSIZE, "%d", display_value);
|
||||
|
||||
if (option_both()) {
|
||||
// draw_line(_x, y, marker_xs, y);
|
||||
|
@ -501,7 +505,7 @@ void HUD::Tape::draw(void) // (HUD_scale * pscale)
|
|||
for (int i = 0; ; i++) {
|
||||
float v = vstart + i * _minor_divs;
|
||||
|
||||
if (!modulo() && (v < _input.min() || v > _input.max()))
|
||||
if (!_modulo && (v < _input.min() || v > _input.max()))
|
||||
continue;
|
||||
|
||||
float x = _x + (v - vmin) * factor();
|
||||
|
@ -543,7 +547,11 @@ void HUD::Tape::draw(void) // (HUD_scale * pscale)
|
|||
}
|
||||
|
||||
} else { // major divs
|
||||
lenstr = snprintf(buf, BUFSIZE, "%d", int(v));
|
||||
int display_value = int(v);
|
||||
if (_modulo)
|
||||
display_value %= _modulo;
|
||||
|
||||
lenstr = snprintf(buf, BUFSIZE, "%d", display_value);
|
||||
|
||||
// Draw major ticks and text only if far enough from the edge. // FIXME
|
||||
if (x < _x + 10 || x + 10 > _x + _w)
|
||||
|
|
Loading…
Add table
Reference in a new issue