_input(n->getNode("input", false)),
_fontsize(fgGetInt("/sim/startup/xsize") > 1000 ? FONT_LARGE : FONT_SMALL), // FIXME
_box(n->getBoolValue("box", false)),
+ _marker_offset(n->getFloatValue("marker-offset", 8)),
_blink_condition(0),
_blink_interval(n->getFloatValue("blinking/interval", -1.0f)),
_blink_target(0.0),
return;
if (_box) {
- draw_line(_x, _y, _x + _w, _y);
- draw_line(_x + _w, _y, _x + _w, _y + _h);
- draw_line(_x + _w, _y + _h, _x, _y + _h);
- draw_line(_x, _y + _h, _x, _y);
+ const float tan30 = 0.57735;
+ float base = _marker_offset * tan30;
+ float l, r, p;
+
+ l = _center_x - base;
+ r = _center_x + base;
+
+ if (option_bottom()) {
+ p = _y - _marker_offset;
+ draw_line(_x, _y, l, _y);
+ draw_line(l, _y, _center_x, p);
+ draw_line(_center_x, p, r, _y);
+ draw_line(r, _y, _x + _w, _y);
+ } else
+ draw_line(_x, _y, _x + _w, _y);
+
+ if (option_top()) {
+ p = _y + _h + _marker_offset;
+ draw_line(_x, _y + _h, l, _y + _h);
+ draw_line(l, _y + _h, _center_x, p);
+ draw_line(_center_x, p, r, _y + _h);
+ draw_line(r, _y + _h, _x + _w, _y + _h);
+ } else
+ draw_line(_x + _w, _y + _h, _x, _y + _h);
+
+ l = _center_y - base;
+ r = _center_y + base;
+
+ if (option_left()) {
+ p = _x - _marker_offset;
+ draw_line(_x, _y, _x, l);
+ draw_line(_x, l, p, _center_y);
+ draw_line(p, _center_y, _x, r);
+ draw_line(_x, r, _x, _y + _h);
+ } else
+ draw_line(_x, _y + _h, _x, _y);
+
+ if (option_right()) {
+ p = _x + _w + _marker_offset;
+ draw_line(_x + _w, _y, _x + _w, l);
+ draw_line(_x + _w, l, p, _center_y);
+ draw_line(p, _center_y, _x + _w, r);
+ draw_line(_x + _w, r, _x + _w, _y + _h);
+ } else
+ draw_line(_x + _w, _y, _x + _w, _y + _h);
}
const int BUFSIZE = 256;