27 #include "../../../dataaccess/dataset/ObjectId.h"
28 #include "../../../qt/widgets/canvas/MapDisplay.h"
29 #include "../../../qt/widgets/Utils.h"
30 #include "../../Feature.h"
31 #include "../../RepositoryManager.h"
32 #include "../../Utils.h"
33 #include "../Renderer.h"
38 #include <QMessageBox>
39 #include <QMouseEvent>
48 : AbstractTool(display, parent),
68 if(e->button() != Qt::LeftButton)
88 QPointF currentPosition = m_display->transform(
GetPosition(e));
91 m_delta = currentPosition - m_origin;
94 MoveGeometry(m_feature->getGeometry(), m_delta.x(), m_delta.y());
100 m_origin = currentPosition;
107 m_moveStarted =
false;
122 m_moveStarted =
false;
136 m_feature =
PickFeature(m_layer, env, m_display->getSRID());
140 catch(std::exception& e)
142 QMessageBox::critical(m_display, tr(
"Error"), QString(tr(
"The geometry cannot be selected from the layer. Details:") +
" %1.").arg(e.what()));
148 QPointF pixelOffset(4.0, 4.0);
150 QRectF rect(pos - pixelOffset, pos + pixelOffset);
153 QPointF ll(rect.left(), rect.bottom());
154 QPointF ur(rect.right(), rect.top());
155 ll = m_display->transform(ll);
156 ur = m_display->transform(ur);
170 QPixmap* draft = m_display->getDraftPixmap();
171 draft->fill(Qt::transparent);
175 renderer.
begin(draft, env, m_display->getSRID());
178 renderer.
drawRepository(m_layer->getId(), env, m_display->getSRID());
183 m_display->repaint();
189 renderer.
draw(m_feature->getGeometry(),
true);
195 m_display->repaint();
200 m_display->setCursor(Qt::ArrowCursor);
void addGeometry(const std::string &source, te::gm::Geometry *geom)
static Renderer & getInstance()
It returns a reference to the singleton instance.
An Envelope defines a 2D rectangular region.
TEEDITEXPORT Feature * PickFeature(const te::map::AbstractLayerPtr &layer, const te::gm::Envelope &env, int srid)
TEEDITQTEXPORT QPointF GetPosition(QMouseEvent *e)
void draw(te::gm::Geometry *geom, bool showVertexes=false)
Geometry is the root class of the geometries hierarchy, it follows OGC and ISO standards.
TEEDITEXPORT void MoveGeometry(te::gm::Geometry *geom, const double &deltax, const double &deltay)
This is a singleton for rendering geometries and features.
void drawVertexes(te::gm::Geometry *geom)
void begin(QPaintDevice *device, const te::gm::Envelope &e, int srid)
void drawRepository(const std::string &source, const te::gm::Envelope &e, int srid)
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
bool isValid() const
It tells if the rectangle is valid or not.