00001
00002
00003
00004
00005
00006
00007
00008
00009
00010 #include "PSQt/DragCenter.h"
00011
00012 namespace PSQt {
00013
00014
00015
00016 DragCenter::DragCenter(WdgImage* wimg, const QPointF* points)
00017 : DragBase(wimg, points, 1)
00018 {
00019
00020
00021
00022
00023
00024 connect(this, SIGNAL(centerIsChanged(const QPointF&)),
00025 this, SLOT(testSignalCenterIsChanged(const QPointF&)));
00026 }
00027
00028
00029 void
00030 DragCenter::draw(const DRAGMODE& mode)
00031 {
00032
00033
00034 setImagePointsFromRaw();
00035
00036 float rad = 20;
00037 float dev = 5;
00038
00039 QPointF pc = m_points_img[0];
00040
00041
00042
00043 QPointF points[6] = {
00044 pc,
00045 pc + QPointF(0,-rad),
00046 pc + QPointF(0,rad),
00047 pc + QPointF(-dev,dev),
00048 pc + QPointF(-rad,0),
00049 pc + QPointF(rad,0)
00050 };
00051
00052 QPainter* painter = m_wimg->getPainter();
00053 if (mode == MOVE) painter->setPen(m_pen_move);
00054 else painter->setPen(m_pen_draw);
00055 painter->drawPolyline(&points[0], 6);
00056 }
00057
00058
00059 void
00060 DragCenter::create()
00061 {
00062 std::cout << "DragCenter::create()\n";
00063 }
00064
00065
00066 bool
00067 DragCenter::contains(const QPointF& p)
00068 {
00069 QPointF d = p - m_points_img[0];
00070
00071 if (d.manhattanLength() < m_rpick) return true;
00072 return false;
00073 }
00074
00075
00076 void
00077 DragCenter::moveToRaw(const QPointF& p)
00078 {
00079
00080
00081 m_points_raw[0].setX(p.x());
00082 m_points_raw[0].setY(p.y());
00083
00084 setImagePointsFromRaw();
00085 emit centerIsChanged(m_points_raw[0]);
00086 }
00087
00088
00089 void
00090 DragCenter::move(const QPointF& p)
00091 {
00092
00093
00094 m_points_img[0].setX(p.x());
00095 m_points_img[0].setY(p.y());
00096
00097 setRawPointsFromImage();
00098 emit centerIsMoved(m_points_raw[0]);
00099 }
00100
00101
00102 void
00103 DragCenter::moveIsCompleted(const QPointF& p)
00104 {
00105 this->move(p);
00106
00107 stringstream ss; ss << "Set center in position x=" << fixed << std::setprecision(1)
00108 << m_points_raw[0].x() << ", y=" << m_points_raw[0].y();
00109 MsgInLog(_name_(), INFO, ss.str() );
00110
00111 emit centerIsChanged(m_points_raw[0]);
00112 }
00113
00114
00115
00116 void
00117 DragCenter::forceToEmitSignal()
00118 {
00119 emit centerIsChanged(m_points_raw[0]);
00120 }
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130 void
00131 DragCenter::print()
00132 {
00133 stringstream ss; ss << strTimeStamp() << " DragCenter::print():";
00134 std::cout << ss.str() << '\n';
00135 }
00136
00137
00138 void
00139 DragCenter::testSignalCenterIsMoved(const QPointF& pc)
00140 {
00141 stringstream ss; ss << "::testSignalCenterIsMoved() x: " << fixed << std::setprecision(1) << pc.x() << " y: " << pc.y();
00142 MsgInLog(_name_(), DEBUG, ss.str());
00143 }
00144
00145
00146 void
00147 DragCenter::testSignalCenterIsChanged(const QPointF& pc)
00148 {
00149 stringstream ss; ss << "::testSignalCenterIsChanged() x: " << fixed << std::setprecision(1) << pc.x() << " y: " << pc.y();
00150 MsgInLog(_name_(), DEBUG, ss.str());
00151 }
00152
00153
00154
00155 }
00156
00157
00158
00159