Changeset 8330:6a702d12a6ef in orange


Ignore:
Timestamp:
06/23/11 19:08:48 (3 years ago)
Author:
Noughmad <Noughmad@…>
Branch:
default
Convert:
8969c49e87e8b6d3312b5cefce16674f91292843
Message:

Add methods for calculating bound (min and max values) to the Curve class in C++

Location:
source/orangegraph
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • source/orangegraph/curve.cpp

    r8329 r8330  
    1111} 
    1212   
    13 Curve::Curve(const Data& data, QGraphicsItem* parent) : QGraphicsObject(parent), m_data(data) 
     13Curve::Curve(const Data& data, QGraphicsItem* parent) : QGraphicsObject(parent) 
    1414{ 
    1515  m_continuous = false; 
    1616  m_lineItem = 0; 
     17  setData(data); 
    1718} 
    1819 
     
    118119    int n = m_data.size(); 
    119120    QPointF p; 
    120     qDebug() << "Creating a continuous curve with" << n << "data points"; 
    121121    for (int i = 1; i < n; ++i) 
    122122    { 
     
    201201  m_data = data; 
    202202  m_needsUpdate |= UpdatePosition; 
     203  updateBounds(); 
    203204  checkForUpdate(); 
    204205} 
     
    221222  } 
    222223  m_needsUpdate |= UpdatePosition; 
     224  updateBounds(); 
    223225  checkForUpdate(); 
    224226} 
     
    354356} 
    355357 
     358void Curve::updateBounds() 
     359{ 
     360    int n = m_data.size(); 
     361    if (!n) 
     362    { 
     363        m_xBounds.min = 0; 
     364        m_xBounds.max = 0; 
     365        m_yBounds.min = 0; 
     366        m_yBounds.max = 0; 
     367    } 
     368 
     369    m_xBounds.min = m_xBounds.max = m_data[0].x; 
     370    m_yBounds.min = m_yBounds.max = m_data[0].y; 
     371    for (int i = 0; i < n; ++i) 
     372    { 
     373        m_xBounds.min = qMin(m_xBounds.min, m_data[i].x); 
     374        m_xBounds.max = qMax(m_xBounds.max, m_data[i].x); 
     375        m_yBounds.min = qMin(m_yBounds.min, m_data[i].y); 
     376        m_yBounds.max = qMax(m_yBounds.max, m_data[i].y); 
     377    } 
     378} 
     379 
     380qreal Curve::max_x_value() const 
     381{ 
     382    return m_xBounds.max; 
     383} 
     384 
     385qreal Curve::min_x_value() const 
     386{ 
     387    return m_yBounds.min; 
     388} 
     389 
     390 
     391qreal Curve::max_y_value() const 
     392{ 
     393    return m_yBounds.max; 
     394} 
     395 
     396qreal Curve::min_y_value() const 
     397{ 
     398    return m_yBounds.min; 
     399} 
    356400 
    357401#include "curve.moc" 
  • source/orangegraph/curve.h

    r8325 r8330  
    3838   **/ 
    3939  Q_PROPERTY(bool autoUpdate READ autoUpdate WRITE setAutoUpdate) 
    40   Q_PROPERTY(QRectF graphArea READ graphArea WRITE setGraphArea) 
    4140   
    4241public: 
     
    144143  void setAutoUpdate(bool autoUpdate); 
    145144   
     145  qreal max_x_value() const; 
     146  qreal min_x_value() const; 
     147  qreal max_y_value() const; 
     148  qreal min_y_value() const; 
     149   
    146150  /** 
    147151   * Creates a path from a symbol and a size 
     
    164168    UpdateAll = 0xFF 
    165169  }; 
     170   
     171  struct Bounds 
     172  { 
     173      qreal min; 
     174      qreal max; 
     175  }; 
     176   
    166177  Q_DECLARE_FLAGS(UpdateFlags, UpdateFlag) 
     178   
    167179  void updateNumberOfItems(); 
    168180  inline void checkForUpdate(); 
    169181  void changeContinuous(); 
     182  void updateBounds(); 
    170183   
    171184  QColor m_color; 
     
    182195    QGraphicsPathItem* m_lineItem; 
    183196    QPainterPath m_line; 
     197     
     198    Bounds m_xBounds; 
     199    Bounds m_yBounds; 
    184200}; 
    185201 
  • source/orangegraph/curve.sip

    r8325 r8330  
    9797  void setGraphTransform(const QTransform& transform); 
    9898   
    99   QRectF graphArea() const; 
    100   void setGraphArea(const QRectF& area); 
    101    
    10299  bool autoUpdate() const; 
    103100  void setAutoUpdate(bool autoUpdate); 
     
    105102  static QPainterPath pathForSymbol(int symbol, int size); 
    106103   
     104  qreal max_x_value() const; 
     105  qreal min_x_value() const; 
     106  qreal max_y_value() const; 
     107  qreal min_y_value() const; 
    107108}; 
Note: See TracChangeset for help on using the changeset viewer.