PSQt/src/DragCenter.cpp

Go to the documentation of this file.
00001 //---------------------------------------------------------------------
00002 // File and Version Information:
00003 //   $Id: DragCenter.cpp 9841 2015-03-26 18:35:44Z dubrovin@SLAC.STANFORD.EDU $
00004 //
00005 // Author: Mikhail S. Dubrovin
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   //std::cout << "c-tor DragCenter()  xc:" << points[0].x() << "  yc:" << points[0].y() << '\n';
00020   //std::cout << "DragCenter() c-tor\n";
00021 
00022   //connect(this, SIGNAL(centerIsMoved(const QPointF&)), 
00023   //        this, SLOT(testSignalCenterIsMoved(const QPointF&)));
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   //std::cout << "DragCenter::draw()\n";
00033 
00034   setImagePointsFromRaw();
00035 
00036   float rad = 20;
00037   float dev = 5;
00038 
00039   QPointF pc = m_points_img[0];
00040 
00041   //std::cout << "DragCenter::draw()  xc:" << pc.x() << "  yc:" << pc.y() << '\n';
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   //std::cout << "DragCenter::move()\n";
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   //std::cout << "DragCenter::move()\n";
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); // last move
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 //const QPointF& 
00124 //DragCenter::getCenter()
00125 //{ 
00126 //  return m_points_raw[0]; 
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 } // namespace PSQt
00156 
00157 //--------------------------
00158 
00159 

Generated on 19 Dec 2016 for PSANAmodules by  doxygen 1.4.7