Changeset 8370:736db067a9a8 in orange


Ignore:
Timestamp:
07/06/11 12:28:46 (3 years ago)
Author:
Noughmad <Noughmad@…>
Branch:
default
Convert:
073e8307b657ba3c18c73479c34aa78be12301c7
Message:

Add a NetworkCurve in C++

Location:
source/orangeplot
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • source/orangeplot/orangeplot.sip

    r8369 r8370  
    22 
    33%Import QtGui/QtGuimod.sip 
    4  
    5 // QPair<double, double> is implemented as a Python 2-element tuple. 
    6 %MappedType QPair<double, double> /DocType="tuple-of-float-float"/ 
    7 { 
    8 %TypeHeaderCode 
    9 #include <QtCore/QPair> 
    10 %End 
    11  
    12 %ConvertFromTypeCode 
    13     // Create the tuple. 
    14     return Py_BuildValue((char *)"dd", sipCpp->first, sipCpp->second); 
    15 %End 
    16  
    17 %ConvertToTypeCode 
    18     // Check the type if that is all that is required. 
    19     if (sipIsErr == NULL) 
    20         return (PyTuple_Size(sipPy) == 2); 
    21      
    22     QPair<double,double>* qp = new QPair<double,double>(); 
    23  
    24     PyArg_ParseTuple(sipPy, "dd", &qp->first, &qp->second); 
    25     *sipCppPtr = qp; 
    26      
    27     return sipGetState(sipTransferObj); 
    28 %End 
    29 }; 
    30  
    314 
    325%Include plot.sip 
  • source/orangeplot/plot.cpp

    r8369 r8370  
    109109 
    110110#include "plot.moc" 
    111 #include "plot.h" 
    112 #include "plotitem.h" 
    113  
    114 #include <QtCore/QDebug> 
    115  
    116 Plot::Plot(QWidget* parent):  
    117 QGraphicsView(parent),  
    118 graph_item(new QGraphicsRectItem()) 
    119 { 
    120     setScene(new QGraphicsScene(this)); 
    121     scene()->addItem(graph_item); 
    122 } 
    123  
    124 Plot::~Plot() 
    125 { 
    126  
    127 } 
    128  
    129 void Plot::addItem(PlotItem* item) 
    130 { 
    131     if (m_items.contains(item)) 
    132     { 
    133         qWarning() << "Item is already in this graph"; 
    134         return; 
    135     } 
    136     item->m_plot = this; 
    137     item->setParentItem(graph_item); 
    138     m_items << item; 
    139 } 
    140  
    141 void Plot::removeItem(PlotItem* item) 
    142 { 
    143     qDebug() << "Removing item" << item << "with parent" << item->parentItem(); 
    144     if (m_items.contains(item)) 
    145     { 
    146         item->setParentItem(0); 
    147         m_items.removeAll(item); 
    148         item->m_plot = 0; 
    149     } 
    150     else 
    151     { 
    152         qWarning() << "Trying to remove an item that doesn't belong to this graph"; 
    153     } 
    154 } 
    155  
    156 QList< PlotItem* > Plot::itemList() 
    157 { 
    158     qDebug() << "Returning itemlist with" << m_items.size() << "items"; 
    159     return m_items; 
    160 } 
    161  
    162 QRectF Plot::dataRectForAxes(int xAxis, int yAxis) 
    163 { 
    164     QRectF r; 
    165     QPair<int,int> axes = qMakePair(xAxis, yAxis); 
    166     foreach (PlotItem* item, m_items) 
    167     { 
    168         if (item->isAutoScale() && item->axes() == axes) 
    169         { 
    170             r |= item->dataRect(); 
    171         } 
    172     } 
    173     return r; 
    174 } 
    175  
    176 QPair< double, double > Plot::boundsForAxis(int axis) 
    177 { 
    178     QRectF y_r; 
    179     QRectF x_r; 
    180     foreach (PlotItem* item, m_items) 
    181     { 
    182         if (item->isAutoScale()) 
    183         { 
    184             if (item->axes().first == axis) 
    185             { 
    186                x_r |= item->dataRect();  
    187             } 
    188             else if (item->axes().second == axis) 
    189             { 
    190                 y_r |= item->dataRect(); 
    191             } 
    192         } 
    193     } 
    194     if (x_r.isValid()) 
    195     { 
    196         return qMakePair(x_r.left(), x_r.right()); 
    197     } 
    198     else if (y_r.isValid()) 
    199     { 
    200         return qMakePair(y_r.top(), y_r.bottom()); 
    201     } 
    202     return qMakePair(0.0, 0.0); 
    203 } 
    204  
    205 void Plot::setDirty()  
    206 { 
    207     m_dirty = true; 
    208 } 
    209  
    210 void Plot::setClean()  
    211 { 
    212     m_dirty = false; 
    213 } 
    214  
    215 bool Plot::isDirty()  
    216 { 
    217     return m_dirty; 
    218 } 
    219  
    220 #include "plot.moc" 
Note: See TracChangeset for help on using the changeset viewer.