Isis 3 Programmer Reference
FindSpotGraphicsItem.cpp
1#include "FindSpotGraphicsItem.h"
2
3#include <float.h>
4#include <iostream>
5
6#include <QGraphicsScene>
7
8#include "MosaicGraphicsView.h"
9#include "MosaicSceneWidget.h"
10
11using namespace std;
12
13namespace Isis {
14 FindSpotGraphicsItem::FindSpotGraphicsItem(QPointF center,
15 MosaicSceneWidget *boundingRectSrc) {
16 m_centerPoint = new QPointF(center);
17 m_mosaicScene = boundingRectSrc;
18 setZValue(DBL_MAX);
19
20 setPen(Qt::NoPen);
21 setBrush(QBrush(Qt::red, Qt::SolidPattern));
22 setRect(calcRect());
23 }
24
25
26 FindSpotGraphicsItem::~FindSpotGraphicsItem() {
27 delete m_centerPoint;
28 m_centerPoint = NULL;
29 }
30
31
32 void FindSpotGraphicsItem::paint(QPainter *painter,
33 const QStyleOptionGraphicsItem *style, QWidget * widget) {
34 QRectF findRect = calcRect();
35
36 if(rect() != findRect)
37 setRect(findRect);
38 else
39 QGraphicsEllipseItem::paint(painter, style, widget);
40 }
41
42
43 QRectF FindSpotGraphicsItem::calcRect() const {
44 QRectF findRect;
45
46 if(m_centerPoint) {
47 static const int size = 8;
48 QPoint findSpotScreen =
49 m_mosaicScene->getView()->mapFromScene(*m_centerPoint);
50 QPoint findSpotTopLeftScreen =
51 findSpotScreen - QPoint(size / 2, size / 2);
52
53 QRect findRectScreen(findSpotTopLeftScreen, QSize(size, size));
54 findRect =
55 m_mosaicScene->getView()->mapToScene(findRectScreen).boundingRect();
56 }
57
58 return findRect;
59 }
60}
This is free and unencumbered software released into the public domain.
Definition Apollo.h:16
Namespace for the standard library.