KDChart::ReverseMapper Class Reference

#include <ReverseMapper.h>

Collaboration diagram for KDChart::ReverseMapper:

Collaboration graph
[legend]
List of all members.

Detailed Description

The ReverseMapper stores information about objects on a chart and their respective model indexes.

Definition at line 47 of file ReverseMapper.h.

Public Member Functions

void addCircle (int row, int column, const QPointF &location, const QSizeF &diameter)
void addItem (ChartGraphicsItem *item)
void addLine (int row, int column, const QPointF &from, const QPointF &to)
void addPolygon (int row, int column, const QPolygonF &polygon)
void addRect (int row, int column, const QRectF &rect)
void clear ()
QModelIndexList indexesAt (const QPointF &point) const
QModelIndexList indexesIn (const QRect &rect) const
 ReverseMapper (AbstractDiagram *diagram)
 ReverseMapper ()
void setDiagram (AbstractDiagram *diagram)
 ~ReverseMapper ()


Constructor & Destructor Documentation

ReverseMapper::ReverseMapper (  ) 

Definition at line 44 of file ReverseMapper.cpp.

00045     : m_scene( 0 )
00046     , m_diagram( 0 )
00047 {
00048 }

ReverseMapper::ReverseMapper ( AbstractDiagram diagram  )  [explicit]

Definition at line 50 of file ReverseMapper.cpp.

00051     : m_scene( 0 )
00052     , m_diagram( diagram )
00053 {
00054 }

ReverseMapper::~ReverseMapper (  ) 

Definition at line 56 of file ReverseMapper.cpp.

00057 {
00058     delete m_scene; m_scene = 0;
00059 }


Member Function Documentation

void ReverseMapper::addCircle ( int  row,
int  column,
const QPointF &  location,
const QSizeF &  diameter 
)

Definition at line 129 of file ReverseMapper.cpp.

References addPolygon().

00130 {
00131     QPainterPath path;
00132     QPointF ossfet( -0.5*diameter.width(), -0.5*diameter.height() );
00133     path.addEllipse( QRectF( location + ossfet, diameter ) );
00134     addPolygon( row, column, QPolygonF( path.toFillPolygon() ) );
00135 }

void ReverseMapper::addItem ( ChartGraphicsItem item  ) 

Definition at line 111 of file ReverseMapper.cpp.

Referenced by addPolygon().

00112 {
00113     Q_ASSERT( m_scene );
00114     m_scene->addItem( item );
00115 }

void ReverseMapper::addLine ( int  row,
int  column,
const QPointF &  from,
const QPointF &  to 
)

Definition at line 137 of file ReverseMapper.cpp.

References addPolygon().

00138 {
00139     // lines do not make good polygons to click on. we calculate a 2
00140     // pixel wide rectangle, where the original line is excatly
00141     // centered in.
00142     // make a 3 pixel wide polygon from the line:
00143     static const QPointF pixel( 1.0, 1.0 );
00144     QPointF left, right;
00145     if ( from.x() < to.x() ) {
00146         left = from;
00147         right = to;
00148     } else {
00149         right = from;
00150         left = to;
00151     }
00152     const QPointF lineVector( right - left );
00153     const qreal lineVectorLength = sqrt( lineVector.x() * lineVector.x() + lineVector.y() * lineVector.y() );
00154     const QPointF lineVectorUnit( lineVector / lineVectorLength );
00155     const QPointF normOfLineVectorUnit( -lineVectorUnit.y(), lineVectorUnit.x() );
00156     // now the four polygon end points:
00157     const QPointF one( left - lineVectorUnit + normOfLineVectorUnit );
00158     const QPointF two( left - lineVectorUnit - normOfLineVectorUnit );
00159     const QPointF three( right + lineVectorUnit - normOfLineVectorUnit );
00160     const QPointF four( right + lineVectorUnit + normOfLineVectorUnit );
00161     addPolygon( row, column, QPolygonF() << one << two << three << four );
00162 }

void ReverseMapper::addPolygon ( int  row,
int  column,
const QPolygonF &  polygon 
)

Definition at line 122 of file ReverseMapper.cpp.

References addItem().

Referenced by addCircle(), addLine(), and addRect().

00123 {
00124     ChartGraphicsItem* item = new ChartGraphicsItem( row, column );
00125     item->setPolygon( polygon );
00126     addItem( item );
00127 }

void ReverseMapper::addRect ( int  row,
int  column,
const QRectF &  rect 
)

Definition at line 117 of file ReverseMapper.cpp.

References addPolygon().

00118 {
00119     addPolygon( row, column, QPolygonF( rect ) );
00120 }

void ReverseMapper::clear (  ) 

Definition at line 67 of file ReverseMapper.cpp.

00068 {
00069     delete m_scene;
00070     m_scene = new QGraphicsScene();
00071 }

QModelIndexList ReverseMapper::indexesAt ( const QPointF &  point  )  const

Definition at line 92 of file ReverseMapper.cpp.

References KDChart::ChartGraphicsItem::column(), and KDChart::ChartGraphicsItem::row().

00093 {
00094     Q_ASSERT( m_diagram );
00095     if ( m_scene && m_scene->sceneRect().contains( point ) ) {
00096         QList<QGraphicsItem *> items = m_scene->items( point );
00097         QModelIndexList indexes;
00098         Q_FOREACH( QGraphicsItem* item, items ) {
00099             ChartGraphicsItem* i = qgraphicsitem_cast<ChartGraphicsItem*>( item );
00100             if ( i ) {
00101                 QModelIndex index ( m_diagram->model()->index( i->row(), i->column() ) );
00102                 indexes << index;
00103             }
00104         }
00105         return indexes;
00106     } else {
00107         return QModelIndexList();
00108     }
00109 }

QModelIndexList ReverseMapper::indexesIn ( const QRect &  rect  )  const

Definition at line 73 of file ReverseMapper.cpp.

References KDChart::ChartGraphicsItem::column(), and KDChart::ChartGraphicsItem::row().

00074 {
00075     Q_ASSERT( m_diagram );
00076     if ( m_scene && m_scene->sceneRect().intersects( rect ) ) {
00077         QList<QGraphicsItem *> items = m_scene->items( rect );
00078         QModelIndexList indexes;
00079         Q_FOREACH( QGraphicsItem* item, items ) {
00080             ChartGraphicsItem* i = qgraphicsitem_cast<ChartGraphicsItem*>( item );
00081             if ( i ) {
00082                 QModelIndex index ( m_diagram->model()->index( i->row(), i->column() ) );
00083                 indexes << index;
00084             }
00085         }
00086         return indexes;
00087     } else {
00088         return QModelIndexList();
00089     }
00090 }

void ReverseMapper::setDiagram ( AbstractDiagram diagram  ) 

Definition at line 61 of file ReverseMapper.cpp.

00062 {
00063 
00064     m_diagram = diagram;
00065 }


The documentation for this class was generated from the following files:
Generated on Mon Sep 17 16:18:27 2007 for KD Chart 2 by  doxygen 1.5.1