tools/diagram-viewer/diagram.h
author Christos Mantoulidis <cmad@stanford.edu>
Tue, 04 Aug 2009 13:23:16 -0700
branchdev
changeset 156 f75fb57d2831
parent 99 6c0da7931e4d
permissions -rw-r--r--
Changed implementation of WeightedRips to store simplex values (max distance between simplices' vertices) as an invisible layer on top of each simplex object, so that the data() field of WeightedRips has been freed for use by the users again.

#ifndef __DIAGRAM_H__
#define __DIAGRAM_H__

#include <QtGui>
#include <QObject>
#include <QColor>

#include <map>

#include <utilities/types.h>
#include <topology/persistence-diagram.h>

typedef         PersistenceDiagram<>                PDiagram;
typedef         std::map<Dimension, PDiagram>       Diagrams;

class DgmPoint;

class DgmViewer: public QGraphicsView
{
    Q_OBJECT

    public:
        typedef             std::vector<DgmPoint*>          PointsVector;

                            DgmViewer(const PDiagram& dgm);
                            ~DgmViewer();

        void                addDgmPoints();

    private:
        PointsVector        points;
        QGraphicsScene      scene;
        RealType            min_x, min_y, max_x, max_y;
};


class DgmPoint: public PDPoint<>, public QGraphicsItem
{
    public:
        typedef             PDPoint<>                                       Parent;

                            DgmPoint(QGraphicsItem* parent = 0);
                            DgmPoint(const Parent& pt, qreal size, QGraphicsItem *parent = 0); 
                            DgmPoint(RealType b, RealType d, qreal size, QGraphicsItem *parent = 0); 
        
        void                paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget = 0);
        QRectF                 boundingRect() const;
        
        qreal               getX() const                    { return Parent::x(); }
        qreal               getY() const                    { return Parent::y(); }

        int                 type() const                                    { return QGraphicsItem::UserType + 1; }

    private:
        // size of rectangle containing ellipses
        qreal                 ellipse_size;
};


#endif // __DIAGRAM_H__