NCL Composer  0.1.5
 All Classes Functions Variables Pages
qncggraphicsnode.cpp
1 #include "qncggraphicsnode.h"
2 
3 QncgGraphicsNode::QncgGraphicsNode(QncgGraphicsEntity* parent)
4  : QncgGraphicsEntity(parent)
5 {
6  setncgType(Qncg::Node);
7 }
8 
9 QncgGraphicsNode::~QncgGraphicsNode()
10 {
11 
12 }
13 
14 void QncgGraphicsNode::adjust(bool avoidCollision)
15 {
16  if (scene() != NULL){
17  scene()->update();
18  }
19 }
20 
21 void QncgGraphicsNode::move(QGraphicsSceneMouseEvent* event)
22 {
23  // setting
24  qreal x = getLeft();
25  qreal y = getTop();
26 
27  QncgGraphicsEntity* parent = getncgGraphicsParent();
28 
29  // setting minimal position
30  qreal minx;
31  qreal miny;
32 
33  if (parent != NULL){
34  minx = 4;
35  miny = 4;
36  }else{
37  minx = 0;
38  miny = 0;
39  }
40 
41  // setting maximal position
42  qreal maxx;
43  qreal maxy;
44 
45  if (parent != NULL){
46  maxx = parent->getWidth() - getWidth() - 4;
47  maxy = parent->getHeight() - getHeight() - 4;
48  }else{
49  maxx = scene()->width() - getWidth();
50  maxy = scene()->height() - getHeight();
51  }
52 
53  // setting delta
54  qreal dx = event->pos().x() - getPressLeft(); // (x1 - x0)
55  qreal dy = event->pos().y() - getPressTop(); // (y1 - y0)
56 
57  // setting next position
58  qreal nextx = x + dx;
59  qreal nexty = y + dy;
60 
61  // moving
62  setMoveTop(nexty);
63  setMoveLeft(nextx);
64 
65  scene()->update();
66 }
67 
68 void QncgGraphicsNode::resize(QGraphicsSceneMouseEvent* event)
69 {
70  // setting
71  qreal x = getLeft();
72  qreal y = getTop();
73  qreal w = getWidth();
74  qreal h = getHeight();
75 
76  QncgGraphicsEntity* parent = getncgGraphicsParent();
77 
78  // setting minimal bounds
79  qreal minx;
80  qreal miny;
81  qreal minw;
82  qreal minh;
83 
84  if (parentItem() != NULL){
85  minx = 4;
86  miny = 4;
87  minw = -1; // not used
88  minh = -1; // not used
89  }else{
90  minx = 0;
91  miny = 0;
92  minw = -1; // not used
93  minh = -1; // not used
94  }
95 
96  // setting maximal bounds
97  qreal maxx;
98  qreal maxy;
99  qreal maxw;
100  qreal maxh;
101 
102  if (parentItem() != NULL){
103  maxx = parent->getWidth() - getWidth() - 4;
104  maxy = parent->getHeight() - getHeight() - 4;
105  maxw = parent->getWidth() - 4;
106  maxh = parent->getHeight() - 4;
107  }else{
108  maxx = scene()->width() - getWidth();
109  maxy = scene()->height() - getHeight();
110  maxw = scene()->width();
111  maxh = scene()->height();
112  }
113 
114  // setting delta
115  qreal dx = event->pos().x() - getPressLeft(); // (x1 - x0)
116  qreal dy = event->pos().y() - getPressTop(); // (y1 - y0)
117  qreal dw = -dx;
118  qreal dh = -dy;
119 
120  // setting next bounds
121  qreal nextx = x + dx;
122  qreal nexty = y + dy;
123  qreal nextw = w + dw;
124  qreal nexth = h + dh;
125 
126  // adjusting
127  switch(getncgResize()){
128 
129  case Qncg::TopLeft:{
130  break;
131  }
132 
133  case Qncg::Top:{
134  nextx = x; // fixed x
135  nextw = w; // fixed width
136 
137  break;
138  }
139 
140  case Qncg::TopRight:{
141  nextx = x; // fixed x
142 
143  nextw = w - dw;
144 
145  break;
146  }
147 
148  case Qncg::Right:{
149  nextx = x; // fixed x
150 
151  nextw = w - dw;
152 
153  nexty = y; // fixed y
154  nexth = h; // fixed height
155 
156  break;
157  }
158 
159  case Qncg::BottomRight:{
160  nextx = x; // fixed x
161 
162  nextw = w - dw;
163 
164  nexty = y; // fixed y
165 
166  nexth = h - dh;
167 
168  break;
169  }
170 
171  case Qncg::Bottom:{
172  nextx = x; // fixed x
173  nextw = w; // fixed width
174 
175  nexty = y; // fixed y
176 
177  nexth = h - dh;
178 
179  break;
180  }
181 
182  case Qncg::BottomLeft:{
183  nexty = y; // fixed y
184 
185  nexth = h - dh;
186 
187  break;
188  }
189 
190  case Qncg::Left:{
191  nexty = y; // fixed y
192  nexth = h; // fixed height
193 
194  break;
195  }
196  }
197 
198  // resizing
199  setResizeTop(nexty);
200  setResizeLeft(nextx);
201  setResizeWidth(nextw);
202  setResizeHeight(nexth);
203 
204  scene()->update();
205 }