-
Notifications
You must be signed in to change notification settings - Fork 0
/
scene.cpp
68 lines (60 loc) · 2.21 KB
/
scene.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
#include "scene.h"
#include <QColor>
#include <QPainter>
Scene::Scene( QObject *parent ) : QGraphicsScene( parent ) {
m_gridSize = 16;
}
Scene::Scene( const QRectF &sceneRect, QObject *parent ) : QGraphicsScene( sceneRect, parent ) {
m_gridSize = 16;
}
Scene::Scene( qreal x, qreal y, qreal width, qreal height, QObject *parent ) : QGraphicsScene( x,
y,
width,
height,
parent ) {
m_gridSize = 16;
}
int Scene::gridSize( ) const {
return( m_gridSize );
}
void Scene::drawBackground( QPainter *painter, const QRectF &rect ) {
painter->setRenderHint( QPainter::Antialiasing, true );
QGraphicsScene::drawBackground( painter, rect );
painter->setPen( m_dots );
qreal left = int( rect.left( ) ) - ( int( rect.left( ) ) % m_gridSize );
qreal top = int( rect.top( ) ) - ( int( rect.top( ) ) % m_gridSize );
QVector< QPointF > points;
for( qreal x = left; x < rect.right( ); x += m_gridSize ) {
for( qreal y = top; y < rect.bottom( ); y += m_gridSize ) {
points.append( QPointF( x, y ) );
}
}
painter->drawPoints( points.data( ), points.size( ) );
}
void Scene::setDots( const QPen &dots ) {
m_dots = dots;
}
QVector< GraphicElement* > Scene::getElements( ) {
QVector< GraphicElement* > elements;
QList< QGraphicsItem* > myItems = items( );
for( QGraphicsItem *item : myItems ) {
GraphicElement *elm = qgraphicsitem_cast< GraphicElement* >( item );
if( elm ) {
elements.append( elm );
}
}
return( elements );
}
QVector< GraphicElement* > Scene::selectedElements( ) {
QVector< GraphicElement* > elements;
QList< QGraphicsItem* > myItems = selectedItems( );
for( QGraphicsItem *item : myItems ) {
if( item->type( ) == GraphicElement::Type ) {
GraphicElement *elm = qgraphicsitem_cast< GraphicElement* >( item );
if( elm ) {
elements.append( elm );
}
}
}
return( elements );
}