00001
00002
00003
00004
00005
00006
00007
00008
00009 #include "PSQt/WdgImageFigs.h"
00010 #include "PSQt/Logger.h"
00011
00012
00013
00014 #include "PSQt/QGUtils.h"
00015 #include "PSQt/DragStore.h"
00016
00017 #include <iostream>
00018 #include <fstream>
00019
00020
00021
00022
00023 namespace PSQt {
00024
00025
00026
00027 WdgImageFigs::WdgImageFigs(QWidget *parent, const std::string& ifname)
00028 : WdgImage(parent, ifname)
00029 {
00030 this->setParameters();
00031 }
00032
00033
00034
00035 WdgImageFigs::WdgImageFigs( QWidget *parent, const QImage* image)
00036 : WdgImage(parent, image)
00037 {
00038 this->setParameters();
00039 }
00040
00041
00042
00043 WdgImageFigs::~WdgImageFigs()
00044 {
00045 }
00046
00047
00048
00049 void
00050 WdgImageFigs::setParameters()
00051 {
00052
00053 m_dragstore = new DragStore(this);
00054 m_dragmode = ZOOM;
00055
00056 QVector<qreal> dashes;
00057 qreal space = 5;
00058 dashes << 5 << space;
00059
00060 m_pen1 = new QPen(Qt::red, 2, Qt::DashLine);
00061 m_pen2 = new QPen(Qt::green, 2, Qt::DashLine);
00062 m_pen1->setDashPattern(dashes);
00063 m_pen2->setDashPattern(dashes);
00064 m_pen2->setDashOffset(5);
00065 }
00066
00067
00068
00069 void
00070 WdgImageFigs::paintEvent(QPaintEvent *e)
00071 {
00072 WdgImage::QLabel::paintEvent(e);
00073 WdgImage::paintEvent(e);
00074
00075 m_painter = WdgImage::getPainter();
00076 m_painter->begin(this);
00077
00078
00079 drawDragFigs();
00080
00081
00082
00083 m_painter->end();
00084
00085
00086
00087 }
00088
00089
00090
00091 void
00092 WdgImageFigs::drawDragFigs()
00093 {
00094 m_dragstore -> drawFigs(m_dragmode);
00095 }
00096
00097
00098
00099 void
00100 WdgImageFigs::addCircle(const float& rad_raw)
00101 {
00102 m_dragstore -> addCircle(rad_raw);
00103 update();
00104 }
00105
00106
00107 const QPointF&
00108 WdgImageFigs::getCenter()
00109 {
00110 return m_dragstore->getCenter();
00111 }
00112
00113
00114
00115
00116
00117
00118 void
00119 WdgImageFigs::drawDragFigsV0()
00120 {
00121 drawLine();
00122 drawRect();
00123
00124
00125 }
00126
00127
00128
00129 void
00130 WdgImageFigs::drawLine()
00131 {
00132 QPointF p1_raw(200,100);
00133 QPointF p2_raw(800,800);
00134
00135 QPointF p1 = WdgImage::pointInImage(p1_raw);
00136 QPointF p2 = WdgImage::pointInImage(p2_raw);
00137
00138 QPen pen(Qt::white, 2, Qt::SolidLine);
00139 m_painter->setPen(pen);
00140 m_painter->drawLine(p1, p2);
00141 }
00142
00143
00144
00145 void
00146 WdgImageFigs::drawRect()
00147 {
00148 QPointF p1_raw(100,200);
00149 QPointF p2_raw(200,500);
00150
00151 QPointF p1 = WdgImage::pointInImage(p1_raw);
00152 QPointF p2 = WdgImage::pointInImage(p2_raw);
00153
00154 QRectF m_rect(p1,p2);
00155 m_painter->setPen(*m_pen1); m_painter->drawRect(m_rect);
00156 m_painter->setPen(*m_pen2); m_painter->drawRect(m_rect);
00157 }
00158
00159
00160
00161
00162
00163
00164 void
00165 WdgImageFigs::moveEvent(QMoveEvent *e)
00166 {
00167 WdgImage::moveEvent(e);
00168
00169
00170
00171 }
00172
00173
00174
00175 void
00176 WdgImageFigs::resizeEvent(QResizeEvent *e)
00177 {
00178 WdgImage::resizeEvent(e);
00179
00180
00181
00182 }
00183
00184
00185
00186 void
00187 WdgImageFigs::closeEvent(QCloseEvent *e)
00188 {
00189 QWidget::closeEvent(e);
00190
00191
00192
00193 }
00194
00195
00196
00197 void
00198 WdgImageFigs::mousePressEvent(QMouseEvent *e)
00199 {
00200 bool click_on_fig = m_dragstore -> containFigs(e->posF());
00201
00202 if(click_on_fig) {
00203 if(e->button() == Qt::MidButton) m_dragmode = DELETE;
00204 else m_dragmode = MOVE;
00205 }
00206
00207 if(m_dragmode == ZOOM) WdgImage::mousePressEvent(e);
00208
00209 if(m_dragmode == MOVE) MsgInLog(_name_(), DEBUG, "MOVE mode is on");
00210
00211 if(m_dragmode == DELETE) MsgInLog(_name_(), DEBUG, "DELETE mode is on");
00212
00213
00214
00215
00216
00217
00218
00219
00220
00221
00222
00223
00224
00225
00226 this -> setCursor(Qt::ClosedHandCursor);
00227
00228
00229
00230
00231
00232
00233 update();
00234 }
00235
00236
00237
00238 void
00239 WdgImageFigs::mouseReleaseEvent(QMouseEvent *e)
00240 {
00241 if(m_dragmode == ZOOM) WdgImage::mouseReleaseEvent(e);
00242
00243 if(m_dragmode == DELETE) m_dragstore -> deleteFig();
00244
00245 if(m_dragmode == MOVE) m_dragstore -> moveFigsIsCompleted(e->posF());
00246
00247
00248
00249
00250
00251
00252
00253 this -> setCursor(Qt::PointingHandCursor);
00254
00255
00256
00257
00258
00259
00260
00261
00262
00263 update();
00264 m_dragmode = ZOOM;
00265 }
00266
00267
00268
00269 void
00270 WdgImageFigs::forceUpdate()
00271 {
00272 update();
00273 }
00274
00275
00276
00277 void
00278 WdgImageFigs::mouseMoveEvent(QMouseEvent *e)
00279 {
00280 if(m_dragmode == ZOOM) WdgImage::mouseMoveEvent(e);
00281
00282 if(m_dragmode == MOVE) m_dragstore -> moveFigs(e->posF());
00283
00284
00285
00286
00287
00288
00289 update();
00290 }
00291
00292
00293
00294
00295
00296
00297
00298 void
00299 WdgImageFigs::onTest()
00300 {
00301 MsgInLog(_name_(), INFO, "onTest() - slot");
00302
00303 }
00304
00305
00306
00307
00308
00309
00310
00311
00312 }
00313
00314