]> Git trees. - libqmvoc.git/commitdiff
Convert plotting data to floating-point variants (QPoint-->QPointF, v3.80.2
authorJason Harris <kstars@30doradus.org>
Wed, 25 Oct 2006 01:17:21 +0000 (01:17 +0000)
committerJason Harris <kstars@30doradus.org>
Wed, 25 Oct 2006 01:17:21 +0000 (01:17 +0000)
QPolygon-->QPolygonF, etc).  Moved mapToPoint() definition from
kplotwidget.h to kplotwidget.cpp.

CCMAIL: kde-edu@kde.org

svn path=/trunk/KDE/kdeedu/libkdeedu/; revision=598923

kdeeduplot/kplotwidget.cpp
kdeeduplot/kplotwidget.h

index dff2dbcaa538998a3afbb3e79882c79f5b7ddcb1..557dd37c6e2968d6dec73368f7d47be50512259f 100644 (file)
@@ -190,7 +190,7 @@ QList<KPlotObject*> KPlotWidget::pointsUnderPoint( const QPoint& p ) const {
                        continue;
 
                for ( QList<QPointF*>::ConstIterator dpit = po->points()->begin(); dpit != po->points()->constEnd(); ++dpit ) {
-                       if ( ( p - mapToPoint( **dpit ) ).manhattanLength() <= 4 )
+                       if ( ( p - mapToPoint( **dpit ).toPoint() ).manhattanLength() <= 4 )
                                pts << po;
                }
        }
@@ -226,6 +226,12 @@ void KPlotWidget::setPixRect() {
        PixRect = QRect( 0, 0, newWidth, newHeight );
 }
 
+QPointF KPlotWidget::mapToPoint( const QPointF& p ) const {
+       float px = PixRect.left() + PixRect.width()*( p.x() -  DataRect.x() )/DataRect.width();
+       float py = PixRect.top() + PixRect.height()*( DataRect.y() + DataRect.height() - p.y() )/DataRect.height();
+       return QPointF( px, py );
+}
+
 void KPlotWidget::paintEvent( QPaintEvent *e ) {
        // let QFrame draw its default stuff (like the frame)
        QFrame::paintEvent( e );
@@ -260,9 +266,9 @@ void KPlotWidget::drawObjects( QPainter *p ) {
 
                                        for ( QList<QPointF*>::ConstIterator dpit = po->points()->begin(); dpit != po->points()->constEnd(); ++dpit )
                                        {
-                                               QPoint q = mapToPoint( **dpit );
-                                               int x1 = q.x() - po->size()/2;
-                                               int y1 = q.y() - po->size()/2;
+                                               QPointF q = mapToPoint( **dpit );
+                                               float x1 = q.x() - 0.5*po->size();
+                                               float y1 = q.y() - 0.5*po->size();
 
                                                switch( po->param() ) {
                                                        case KPlotObject::CIRCLE : p->drawEllipse( x1, y1, po->size(), po->size() ); break;
@@ -279,16 +285,17 @@ void KPlotWidget::drawObjects( QPainter *p ) {
                                case KPlotObject::CURVE :
                                {
                                        p->setPen( QPen( po->color(), po->size(), (Qt::PenStyle)po->param() ) );
-                                       QPolygon poly;
+                                       QPolygonF poly;
                                        for ( QList<QPointF*>::ConstIterator dpit = po->points()->begin(); dpit != po->points()->constEnd(); ++dpit )
                                                poly << mapToPoint( **dpit );
                                        p->drawPolyline( poly );
                                        break;
                                }
 
+                               //FIXME: implement non-overlapping labels
                                case KPlotObject::LABEL : //draw label centered at point in x, and slightly below point in y.
                                {
-                                       QPoint q = mapToPoint( *(po->points()->first()) );
+                                       QPointF q = mapToPoint( *(po->points()->first()) );
                                        p->drawText( q.x()-20, q.y()+6, 40, 10, Qt::AlignCenter | Qt::TextDontClip, po->name() );
                                        break;
                                }
@@ -298,7 +305,7 @@ void KPlotWidget::drawObjects( QPainter *p ) {
                                        p->setPen( QPen( po->color(), po->size(), (Qt::PenStyle)po->param() ) );
                                        p->setBrush( po->color() );
 
-                                       QPolygon a( po->count() );
+                                       QPolygonF a( po->count() );
 
                                        for ( QList<QPointF*>::ConstIterator dpit = po->points()->begin(); dpit != po->points()->constEnd(); ++dpit )
                                                a << mapToPoint( **dpit );
index c1339e3a4ccc065b272e0739cb8848dec87c781a..a4a198b1bdca57cc9bd4ee6558a4c1905c69ca98 100644 (file)
@@ -292,11 +292,7 @@ public:
         * Used mainly when drawing.
         * @return the coordinate in the pixel coordinate system
         */
-       QPoint mapToPoint( const QPointF& p ) const {
-               int px = PixRect.left() + int( PixRect.width()*( p.x() -  DataRect.x() )/DataRect.width() );
-               int py = PixRect.top() + int( PixRect.height()*( DataRect.y() + DataRect.height() - p.y() )/DataRect.height() );
-               return QPoint( px, py );
-       }
+       QPointF mapToPoint( const QPointF& p ) const;
 
        /**
         * Retrieve the pointer to the axis of type @p a.