From dbecc014b7b61def6d31b044cb1de1ef1f48fc50 Mon Sep 17 00:00:00 2001 From: edouard Date: Tue, 13 Apr 2010 21:22:32 +0000 Subject: [PATCH] Performance update, the previous version kept reloading the svg files and was a bit stupid, sorry. Now only updates when the value is changed. git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@497 ebee16cc-31ac-478f-84a7-5cbb03baadba --- .../experimental/DialTest/basicsvgdial.cpp | 42 +++++++++---------- 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/ground/src/experimental/DialTest/basicsvgdial.cpp b/ground/src/experimental/DialTest/basicsvgdial.cpp index 6619e35f3..e6f49cfbb 100644 --- a/ground/src/experimental/DialTest/basicsvgdial.cpp +++ b/ground/src/experimental/DialTest/basicsvgdial.cpp @@ -24,27 +24,6 @@ void BasicSvgDial::setRenderer(RendererType type) void BasicSvgDial::paintEvent(QPaintEvent *event) { qDebug() << "in painEvent()"; - QGraphicsScene *s = scene(); - s->clear(); - m_backgroundItem = new QGraphicsSvgItem(backgroundFile); - m_backgroundItem->setZValue(-1); - - m_needleItem = new QGraphicsSvgItem(needleFile); - QRectF rect = m_needleItem->boundingRect(); - m_needleItem->translate(rect.width()/2,rect.height()/2); - m_needleItem->rotate(angle); - m_needleItem->translate(-rect.width()/2,-rect.height()/2); - m_needleItem->setZValue(0); - - m_foregroundItem = new QGraphicsSvgItem(foregroundFile); - m_foregroundItem->setZValue(1); - - s->addItem(m_backgroundItem); - s->addItem(m_needleItem); - s->addItem(m_foregroundItem); - - s->setSceneRect(m_backgroundItem->boundingRect()); - QGraphicsView::paintEvent(event); qDebug() << "out paintEvent()"; @@ -58,6 +37,7 @@ void BasicSvgDial::paintEvent(QPaintEvent *event) { void BasicSvgDial::setAngle(int i) { qDebug() << "BasicDial::setAngle()"; angle = value2angle(i); + update(); } @@ -79,6 +59,26 @@ qreal BasicSvgDial::value2angle(qreal value) { void BasicSvgDial::setValue(qreal value) { angle = value2angle(value); currentValue = value; + QGraphicsScene *s = scene(); + s->clear(); + m_backgroundItem = new QGraphicsSvgItem(backgroundFile); + m_backgroundItem->setZValue(-1); + + m_needleItem = new QGraphicsSvgItem(needleFile); + QRectF rect = m_needleItem->boundingRect(); + m_needleItem->translate(rect.width()/2,rect.height()/2); + m_needleItem->rotate(angle); + m_needleItem->translate(-rect.width()/2,-rect.height()/2); + m_needleItem->setZValue(0); + + m_foregroundItem = new QGraphicsSvgItem(foregroundFile); + m_foregroundItem->setZValue(1); + + s->addItem(m_backgroundItem); + s->addItem(m_needleItem); + s->addItem(m_foregroundItem); + + s->setSceneRect(m_backgroundItem->boundingRect()); update(); }