Changeset 9057:0b552a863af1 in orange


Ignore:
Timestamp:
10/04/11 23:11:54 (3 years ago)
Author:
matejd <matejd@…>
Branch:
default
Convert:
45e4f17a6b0e84a695c9c7322ad15a16c0f83101
Message:

Added canvas3d (c++ part behind netexplorer3d) to orangeqt

Location:
source/orangeqt
Files:
4 added
4 edited

Legend:

Unmodified
Added
Removed
  • source/orangeqt/CMakeLists.txt

    r9048 r9057  
    2525    plot.cpp  
    2626    plot3d.cpp 
     27    canvas3d.cpp 
    2728) 
    2829qt4_automoc(${orangeqt_SRCS}) 
  • source/orangeqt/orangeqt.sip

    r8780 r9057  
    77%Include plot.sip 
    88%Include plot3d.sip 
     9%Include canvas3d.sip 
    910%Include plotitem.sip 
    1011%Include point.sip 
  • source/orangeqt/plot3d.cpp

    r9014 r9057  
    123123        delete [] this->valid_data; 
    124124 
    125     this->valid_data = valid_data;//reinterpret_cast<bool*>(valid_data_address); // TODO: the same as the TODO above 
     125    this->valid_data = valid_data; 
    126126} 
    127127 
     
    161161    int sib_edges      = 0; 
    162162 
    163     QMap<int, QList<QVector3D> >& geometry = use_2d_symbols ? geometry_data_2d : geometry_data_3d; 
     163    QMap<int, QList<QVector3D> >& geometry =       use_2d_symbols ? geometry_data_2d      : geometry_data_3d; 
    164164    QMap<int, QList<QVector3D> >& geometry_edges = use_2d_symbols ? geometry_data_edges_2d : geometry_data_edges_3d; 
    165165 
  • source/orangeqt/types.sip

    r8171 r9057  
    353353 
    354354 
     355// QMap<int, Triple<double, double, double> > is implemented as a Python dictionary of 3-tuples. 
     356%MappedType QMap<int, Triple<double, double, double> > /DocType="dict-of-int-tuple"/ 
     357{ 
     358%TypeHeaderCode 
     359#include <qmap.h> 
     360#include "triple.h" 
     361%End 
     362 
     363%ConvertFromTypeCode 
     364    // Create the dictionary. 
     365    PyObject *d = PyDict_New(); 
     366 
     367    if (!d) 
     368        return NULL; 
     369 
     370    // Set the dictionary elements. 
     371    QMap<int, Triple<double, double, double> >::const_iterator i = sipCpp->constBegin(); 
     372 
     373    while (i != sipCpp->constEnd()) 
     374    { 
     375        PyObject *kobj = SIPLong_FromLong(i.key()); 
     376        PyObject *tobj; 
     377        if ((tobj = PyTuple_New(3)) == NULL) 
     378            return NULL; 
     379         
     380        PyTuple_SET_ITEM(tobj, 0, PyFloat_FromDouble((double)i.value().first)); 
     381        PyTuple_SET_ITEM(tobj, 1, PyFloat_FromDouble((double)i.value().second)); 
     382        PyTuple_SET_ITEM(tobj, 2, PyFloat_FromDouble((double)i.value().third)); 
     383     
     384        if (kobj == NULL || tobj == NULL || PyDict_SetItem(d, kobj, tobj) < 0) 
     385        { 
     386            Py_DECREF(d); 
     387            if (kobj) 
     388            { 
     389                Py_DECREF(kobj); 
     390            } 
     391            if (tobj) 
     392            { 
     393                Py_DECREF(tobj); 
     394            } 
     395            return NULL; 
     396        } 
     397 
     398        Py_DECREF(kobj); 
     399        Py_DECREF(tobj); 
     400 
     401        ++i; 
     402    } 
     403 
     404    return d; 
     405%End 
     406 
     407%ConvertToTypeCode 
     408    PyObject *kobj, *tobj; 
     409    SIP_SSIZE_T i = 0; 
     410 
     411    // Check the type if that is all that is required. 
     412    if (sipIsErr == NULL) 
     413    { 
     414        if (!PyDict_Check(sipPy)) 
     415            return 0; 
     416        return 1; 
     417    } 
     418 
     419    QMap<int, Triple<double, double, double> > *qm = new QMap<int, Triple<double, double, double> >; 
     420  
     421    while (PyDict_Next(sipPy, &i, &kobj, &tobj)) 
     422    { 
     423        int k = SIPLong_AsLong(kobj); 
     424        double fst = PyFloat_AsDouble(PyTuple_GET_ITEM(tobj, 0)); 
     425        double sec = PyFloat_AsDouble(PyTuple_GET_ITEM(tobj, 1)); 
     426        double thr = PyFloat_AsDouble(PyTuple_GET_ITEM(tobj, 2)); 
     427         
     428        Triple<double, double, double> t(fst, sec, thr); 
     429  
     430        if (*sipIsErr) 
     431        { 
     432            delete qm; 
     433            return 0; 
     434        } 
     435 
     436        qm->insert(k, t); 
     437    } 
     438  
     439    *sipCppPtr = qm; 
     440  
     441    return sipGetState(sipTransferObj); 
     442%End 
     443}; 
     444 
     445 
     446// Triple<double, double, double> 
     447%MappedType Triple<double, double, double> /DocType="triple"/ 
     448{ 
     449%TypeHeaderCode 
     450#include "triple.h" 
     451%End 
     452 
     453%ConvertFromTypeCode 
     454    PyObject *t = PyTuple_New(3); 
     455 
     456    if (!t) 
     457        return NULL; 
     458 
     459    PyTuple_SET_ITEM(t, 0, PyFloat_FromDouble((double)(sipCpp->first))); 
     460    PyTuple_SET_ITEM(t, 1, PyFloat_FromDouble((double)(sipCpp->second))); 
     461    PyTuple_SET_ITEM(t, 2, PyFloat_FromDouble((double)(sipCpp->third))); 
     462 
     463    // TODO: any DECREF needed? 
     464 
     465    return t; 
     466%End 
     467 
     468%ConvertToTypeCode 
     469    if (sipIsErr == NULL) 
     470    { 
     471        // TODO 
     472        return 1; 
     473    } 
     474 
     475    Triple<double, double, double> *tr = new Triple<double, double, double>( 
     476        PyFloat_AsDouble(PyTuple_GET_ITEM(sipPy, 0)), 
     477        PyFloat_AsDouble(PyTuple_GET_ITEM(sipPy, 1)), 
     478        PyFloat_AsDouble(PyTuple_GET_ITEM(sipPy, 2))); 
     479  
     480    if (*sipIsErr) 
     481    { 
     482        delete tr; 
     483        return 0; 
     484    } 
     485 
     486    *sipCppPtr = tr; 
     487  
     488    return sipGetState(sipTransferObj); 
     489%End 
     490}; 
     491 
     492 
    355493%MappedType QList<bool> /DocType="list-of-int"/ 
    356494{ 
Note: See TracChangeset for help on using the changeset viewer.