1
0
Fork 0
This commit is contained in:
mfranz 2006-07-31 19:25:41 +00:00
parent f3dd7c363c
commit 651861dfb1
2 changed files with 31 additions and 82 deletions

View file

@ -447,6 +447,7 @@ private:
bool _draw_cap_right; bool _draw_cap_right;
bool _draw_cap_left; bool _draw_cap_left;
float _marker_offset; float _marker_offset;
float _label_gap;
bool _pointer; bool _pointer;
int _zoom; int _zoom;

View file

@ -33,6 +33,7 @@ HUD::Tape::Tape(HUD *hud, const SGPropertyNode *n, float x, float y) :
_draw_cap_right(n->getBoolValue("cap-right", false)), _draw_cap_right(n->getBoolValue("cap-right", false)),
_draw_cap_left(n->getBoolValue("cap-left", false)), _draw_cap_left(n->getBoolValue("cap-left", false)),
_marker_offset(n->getFloatValue("marker-offset", 0.0)), _marker_offset(n->getFloatValue("marker-offset", 0.0)),
_label_gap(n->getFloatValue("label-gap-width", 0.0)),
_pointer(n->getBoolValue("enable-pointer", true)), _pointer(n->getBoolValue("enable-pointer", true)),
_zoom(n->getIntValue("zoom")) _zoom(n->getIntValue("zoom"))
{ {
@ -60,7 +61,7 @@ void HUD::Tape::draw(void) // (HUD_scale * pscale)
float marker_xe; float marker_xe;
float marker_ys; float marker_ys;
float marker_ye; float marker_ye;
float text_x = 0.0, text_y = 0.0; float text_y = 0.0;
const int BUFSIZE = 80; const int BUFSIZE = 80;
char buf[BUFSIZE]; char buf[BUFSIZE];
int oddtype; int oddtype;
@ -77,22 +78,18 @@ void HUD::Tape::draw(void) // (HUD_scale * pscale)
float right = _x + _w; float right = _x + _w;
if (_pointer) { if (!_pointer) {
if (_pointer_type == MOVING) { vmin = cur_value - _half_width_units; // width units == needle travel
vmin = _input.min(); vmax = cur_value + _half_width_units; // or picture unit span.
vmax = _input.max(); text_y = _center_y;
} else { // FIXED } else if (_pointer_type == MOVING) {
vmin = cur_value - _half_width_units; // width units == needle travel vmin = _input.min();
vmax = cur_value + _half_width_units; // or picture unit span. vmax = _input.max();
text_x = _center_x;
text_y = _center_y; } else { // FIXED
}
} else {
vmin = cur_value - _half_width_units; // width units == needle travel vmin = cur_value - _half_width_units; // width units == needle travel
vmax = cur_value + _half_width_units; // or picture unit span. vmax = cur_value + _half_width_units; // or picture unit span.
text_x = _center_x;
text_y = _center_y; text_y = _center_y;
} }
@ -116,18 +113,6 @@ void HUD::Tape::draw(void) // (HUD_scale * pscale)
marker_xe = right; // x extent marker_xe = right; // x extent
marker_ye = top; marker_ye = top;
// glBegin(GL_LINES);
// Bottom tick bar
// glVertex2f(marker_xs, _y);
// glVertex2f(marker_xe, _y);
// Top tick bar
// glVertex2f(marker_xs, marker_ye);
// glVertex2f(marker_xe, marker_ye);
// glEnd();
// We do not use else in the following so that combining the // We do not use else in the following so that combining the
// two options produces a "caged" display with double // two options produces a "caged" display with double
// carrots. The same is done for horizontal card indicators. // carrots. The same is done for horizontal card indicators.
@ -296,14 +281,6 @@ void HUD::Tape::draw(void) // (HUD_scale * pscale)
draw_bullet(_x, y, 3.0); draw_bullet(_x, y, 3.0);
} }
// glBegin(GL_LINES);
// glVertex2f(_x, y);
// glVertex2f(marker_xs, y);
// glVertex2f(marker_xe, y);
// glVertex2f(_x + _w, y);
// glEnd();
// anything other than huds_both
} else if (option_left()) { } else if (option_left()) {
if (_tick_type == LINE) { if (_tick_type == LINE) {
if (_tick_length == VARIABLE) { if (_tick_length == VARIABLE) {
@ -336,14 +313,9 @@ void HUD::Tape::draw(void) // (HUD_scale * pscale)
snprintf(buf, BUFSIZE, "%d", display_value); snprintf(buf, BUFSIZE, "%d", display_value);
if (option_both()) { if (option_both()) {
// draw_line(_x, y, marker_xs, y);
// draw_line(marker_xs, y, _x + _w, y);
if (_tick_type == LINE) { if (_tick_type == LINE) {
glBegin(GL_LINE_STRIP); draw_line(_x, y, marker_xs, y);
glVertex2f(_x, y); draw_line(marker_xs, y, right, y);
glVertex2f(marker_xs, y);
glVertex2f(right, y);
glEnd();
} else { // _tick_type == CIRCLE } else { // _tick_type == CIRCLE
draw_bullet(_x, y, 5.0); draw_bullet(_x, y, 5.0);
@ -389,16 +361,6 @@ void HUD::Tape::draw(void) // (HUD_scale * pscale)
marker_xe = right; marker_xe = right;
marker_xs = _x + ((cur_value - vmin) * factor()); marker_xs = _x + ((cur_value - vmin) * factor());
// glBegin(GL_LINES);
// left tick bar
// glVertex2f(_x, _y);
// glVertex2f(_x, marker_ye);
// right tick bar
// glVertex2f(marker_xe, _y);
// glVertex2f(marker_xe, marker_ye);
// glEnd();
if (option_top()) { if (option_top()) {
if (_draw_cap_bottom) if (_draw_cap_bottom)
draw_line(_x, _y, right, _y); draw_line(_x, _y, right, _y);
@ -504,12 +466,6 @@ void HUD::Tape::draw(void) // (HUD_scale * pscale)
draw_line(x, _y, x, marker_ys); draw_line(x, _y, x, marker_ys);
draw_line(x, marker_ye, x, top); draw_line(x, marker_ye, x, top);
} }
// glBegin(GL_LINES);
// glVertex2f(x, _y);
// glVertex2f(x, marker_ys - 4);
// glVertex2f(x, marker_ye + 4);
// glVertex2f(x, _y + _h);
// glEnd();
} else { } else {
if (option_top()) { if (option_top()) {
@ -538,15 +494,8 @@ void HUD::Tape::draw(void) // (HUD_scale * pscale)
continue; continue;
if (option_both()) { if (option_both()) {
// draw_line(x, _y, draw_line(x, _y, x, marker_ye);
// x, marker_ys); draw_line(x, marker_ye, x, _y + _h);
// draw_line(x, marker_ye,
// x, _y + _h);
glBegin(GL_LINE_STRIP);
glVertex2f(x, _y);
glVertex2f(x, marker_ye);
glVertex2f(x, top);
glEnd();
if (!option_notext()) if (!option_notext())
draw_text(x, marker_ys, buf, HUDText::CENTER); draw_text(x, marker_ys, buf, HUDText::CENTER);
@ -781,23 +730,23 @@ void HUD::Tape::zoomed_scale(int first, int last)
float factors = hgt1 / incr; float factors = hgt1 / incr;
//Code for Moving Type Pointer // Code for Moving Type Pointer
//begin float, xpoint, ypoint;
static float xcent, xpoint, ypoint; // FIXME really static? float xcent = _center_x;
xcent = _center_x; if (cur_value <= data[centre + 1]) {
if (cur_value <= data[centre + 1])
if (cur_value > data[centre]) { if (cur_value > data[centre]) {
xpoint = xcent + ((cur_value - data[centre]) * hgt / _major_divs); xpoint = xcent + ((cur_value - data[centre]) * hgt / _major_divs);
} }
}
if (cur_value >= data[centre - 1]) if (cur_value >= data[centre - 1]) {
if (cur_value <= data[centre]) { if (cur_value <= data[centre]) {
xpoint = xcent - ((data[centre] - cur_value) * hgt / _major_divs); xpoint = xcent - ((data[centre] - cur_value) * hgt / _major_divs);
} }
}
if (cur_value < data[centre - 1]) if (cur_value < data[centre - 1]) {
if (cur_value >= _input.min()) { if (cur_value >= _input.min()) {
float diff = _input.min() - data[centre - 1]; float diff = _input.min() - data[centre - 1];
float diff1 = cur_value - data[centre - 1]; float diff1 = cur_value - data[centre - 1];
@ -805,9 +754,9 @@ void HUD::Tape::zoomed_scale(int first, int last)
xpoint = xcent - hgt - val; xpoint = xcent - hgt - val;
} }
}
if (cur_value > data[centre + 1]) {
if (cur_value > data[centre + 1])
if (cur_value <= _input.max()) { if (cur_value <= _input.max()) {
float diff = _input.max() - data[centre + 1]; float diff = _input.max() - data[centre + 1];
float diff1 = cur_value - data[centre + 1]; float diff1 = cur_value - data[centre + 1];
@ -815,8 +764,9 @@ void HUD::Tape::zoomed_scale(int first, int last)
xpoint = xcent + hgt + val; xpoint = xcent + hgt + val;
} }
}
// end moving pointer
//end
if (option_top()) { if (option_top()) {
ystart = h; ystart = h;
draw_line(xcentre, ystart, xcentre, ystart - 5.0); //centre tick draw_line(xcentre, ystart, xcentre, ystart - 5.0); //centre tick
@ -853,9 +803,8 @@ void HUD::Tape::zoomed_scale(int first, int last)
xfirst -= factors; xfirst -= factors;
xsecond += factors; xsecond += factors;
} }
//this is for moving pointer for top option
//begin
// moving pointer for top option
ypoint = _y + _h + 10.0; ypoint = _y + _h + 10.0;
if (_pointer_type == MOVING) { if (_pointer_type == MOVING) {
@ -904,9 +853,8 @@ void HUD::Tape::zoomed_scale(int first, int last)
xfirst -= factors; xfirst -= factors;
xsecond += factors; xsecond += factors;
} }
//this is for movimg pointer for bottom option
//begin
// movimg pointer for bottom option
ypoint = _y - 10.0; ypoint = _y - 10.0;
if (_pointer_type == MOVING) { if (_pointer_type == MOVING) {
draw_line(xcent, ypoint, xpoint, ypoint); draw_line(xcent, ypoint, xpoint, ypoint);