Skip to content
Snippets Groups Projects
HSIDisplay.cc 37.1 KiB
Newer Older
  • Learn to ignore specific revisions
  •         //qDebug() << "DRAWING POS SETPOINT X:" << posXSet << "Y:" << posYSet << angle;
        }
    
    void HSIDisplay::drawAttitudeDirection(float xRef, float yRef, float radius, const QColor& color, QPainter* painter)
    
        if (attControlKnown && attControlEnabled)
        {
            // Draw the needle
            const float maxWidth = radius / 10.0f;
            const float minWidth = maxWidth * 0.3f;
    
            float angle = atan2(attXSet, attYSet);
            angle -= M_PI/2.0f;
    
    lm's avatar
    lm committed
    
    
            radius *= sqrt(pow(attXSet, 2) + pow(attYSet, 2)) / sqrt(attXSaturation + attYSaturation);
    
            p.replace(0, QPointF(xRef-maxWidth/2.0f, yRef-radius * 0.4f));
            p.replace(1, QPointF(xRef-minWidth/2.0f, yRef-radius * 0.9f));
            p.replace(2, QPointF(xRef+minWidth/2.0f, yRef-radius * 0.9f));
            p.replace(3, QPointF(xRef+maxWidth/2.0f, yRef-radius * 0.4f));
            p.replace(4, QPointF(xRef,               yRef-radius * 0.36f));
            p.replace(5, QPointF(xRef-maxWidth/2.0f, yRef-radius * 0.4f));
    
            rotatePolygonClockWiseRad(p, angle, QPointF(xRef, yRef));
    
            QBrush indexBrush;
            indexBrush.setColor(color);
            indexBrush.setStyle(Qt::SolidPattern);
            painter->setPen(Qt::SolidLine);
            painter->setPen(color);
            painter->setBrush(indexBrush);
            drawPolygon(p, painter);
    
    lm's avatar
    lm committed
    
    
            //qDebug() << "DRAWING ATT SETPOINT X:" << attXSet << "Y:" << attYSet << angle;
        }
    
    }
    
    void HSIDisplay::drawAltitudeSetpoint(float xRef, float yRef, float radius, const QColor& color, QPainter* painter)
    {
    
        if (zControlKnown && zControlEnabled)
        {
            // Draw the circle
            QPen circlePen(Qt::SolidLine);
            circlePen.setWidth(refLineWidthToPen(0.5f));
            circlePen.setColor(color);
            painter->setBrush(Qt::NoBrush);
            painter->setPen(circlePen);
            drawCircle(xRef, yRef, radius, 200.0f, color, painter);
            //drawCircle(xRef, yRef, radius, 200.0f, 170.0f, 1.0f, color, painter);
    
            //    // Draw the value
            //    QString label;
            //    label.sprintf("%05.1f", value);
            //    paintText(label, color, 4.5f, xRef-7.5f, yRef-2.0f, painter);
        }
    
    void HSIDisplay::wheelEvent(QWheelEvent* event)
    {
        double zoomScale = 0.005; // Scaling of zoom value
        if(event->delta() > 0)
        {
            // Reduce width -> Zoom in
            metricWidth -= event->delta() * zoomScale;
        }
        else
        {
            // Increase width -> Zoom out
            metricWidth -= event->delta() * zoomScale;
        }
        metricWidth = qBound(0.1, metricWidth, 9999.0);
        emit metricWidthChanged(metricWidth);
    }
    
    void HSIDisplay::showEvent(QShowEvent* event)
    {
        // React only to internal (pre-display)
        // events
    
            refreshTimer->start(updateInterval);
        }
    }
    
    void HSIDisplay::hideEvent(QHideEvent* event)
    {
        // React only to internal (post-display)
        // events
        Q_UNUSED(event)
        {
            refreshTimer->stop();
    
    void HSIDisplay::updateJoystick(double roll, double pitch, double yaw, double thrust, int xHat, int yHat)
    {
    
        Q_UNUSED(roll);
        Q_UNUSED(pitch);
        Q_UNUSED(yaw);
        Q_UNUSED(thrust);
        Q_UNUSED(xHat);
        Q_UNUSED(yHat);
    
    }
    
    void HSIDisplay::pressKey(int key)
    {
    
        Q_UNUSED(key);