10 #include "../../edit/Feature.h" 11 #include "../../edit/qt/Renderer.h" 12 #include "../../edit/qt/Utils.h" 13 #include "../../edit/Repository.h" 14 #include "../../edit/RepositoryManager.h" 15 #include "../../edit/Utils.h" 16 #include "../../geometry/Envelope.h" 17 #include "../../geometry/Geometry.h" 18 #include "../../geometry/MultiLineString.h" 19 #include "../../qt/af/ApplicationController.h" 20 #include "../../qt/af/BaseApplication.h" 21 #include "../../qt/widgets/canvas/Canvas.h" 22 #include "../../qt/widgets/canvas/MapDisplay.h" 23 #include "../../qt/widgets/Utils.h" 27 #include <QMessageBox> 31 :
te::edit::VertexTool(display, layer, parent),
74 for (
size_t j = 0; j < vet.size(); ++j)
77 for (
size_t i = 0; i <
m_lines.size(); ++i)
79 if (vet[j]->getGeometry() ==
m_lines[i])
88 vet.erase(vet.begin() + j);
93 for (
size_t i = 0; i <
m_lines.size(); ++i)
96 for (
size_t j = 0; j < vet.size(); ++j)
98 if (vet[j]->getGeometry() ==
m_lines[i])
115 e->setModifiers(Qt::ShiftModifier);
150 for (
size_t i = 0; i <
m_lines.size(); i++)
152 if (
m_lines[i]->intersects(&env_line))
154 std::unique_ptr<te::gm::Point> startPoint =
m_lines[i]->getStartPoint();
155 std::unique_ptr<te::gm::Point> endPoint =
m_lines[i]->getEndPoint();
160 canvas.setLineColor(green);
161 canvas.setLineWidth(3);
165 canvas.draw(startPoint.get());
167 canvas.draw(endPoint.get());
169 if (QMessageBox::question(
nullptr, tr(
"Profile"), tr(
"Invert this trajectory?")) == QMessageBox::Yes)
172 std::vector<te::gm::Coord2D> pts;
173 for (
size_t j = 0; j <
m_lines[i]->getNPoints(); j++)
175 pts.push_back(coords[j]);
177 std::reverse(pts.begin(),pts.end());
178 for (
size_t j = 0; j <
m_lines[i]->getNPoints(); j++)
180 coords[j].
x = pts[j].getX();
181 coords[j].
y = pts[j].getY();
203 for (
size_t i = 0; i <
m_lines.size(); i++)
205 if (
m_lines[i]->intersects(&env_line))
210 canvas.setLineColor(red);
211 canvas.setLineWidth(3);
215 if (QMessageBox::question(
nullptr, tr(
"Profile"), tr(
"Delete this trajectory?")) == QMessageBox::Yes)
222 for (
size_t j = 0; j < vet.size(); ++j)
224 if (vet[j]->getGeometry() == l)
227 vet.erase(vet.begin() + j);
void getRgba(int *r, int *g, int *b, int *a=0) const
It gets the color value.
virtual const std::string & getId() const
It returns the layer id.
void setStage(StageType stage)
const double & getUpperRightX() const
It returns a constant refernce to the x coordinate of the upper right corner.
double m_urx
Upper right corner x-coordinate.
bool mouseReleaseEvent(QMouseEvent *e)
This event handler can be reimplemented in a concrete tool class to receive mouse release events for ...
const double & getLowerLeftY() const
It returns a constant refernce to the y coordinate of the lower left corner.
An utility struct for representing 2D coordinates.
const double & getUpperRightY() const
It returns a constant refernce to the x coordinate of the upper right corner.
bool mousePressEvent(QMouseEvent *e)
This event handler can be reimplemented in a concrete tool class to receive mouse press events for th...
std::vector< te::gm::LineString * > m_lines
double m_llx
Lower left corner x-coordinate.
LineString is a curve with linear interpolation between points.
static RepositoryManager & getInstance()
It returns a reference to the singleton instance.
void setPoint(std::size_t i, const double &x, const double &y)
It sets the value of the specified point.
An Envelope defines a 2D rectangular region.
te::gm::Envelope buildEnvelope(const QPointF &pos)
bool mouseMoveEvent(QMouseEvent *e)
This event handler can be reimplemented in a concrete tool class to receive mouse move events for the...
TEEDITQTEXPORT QPointF GetPosition(QMouseEvent *e)
virtual const te::gm::Envelope & getExtent() const
It returns the world extent showned by the MapDisplay.
te::sam::rtree::Index< VertexIndex, 8 > m_rtree
double m_lly
Lower left corner y-coordinate.
double m_ury
Upper right corner y-coordinate.
const double & getLowerLeftX() const
It returns a constant reference to the x coordinate of the lower left corner.
bool mouseDoubleClickEvent(QMouseEvent *e)
This event handler can be reimplemented in a concrete tool class to receive mouse double click events...
A helper class for 32-bit RGBA (Red-Green-Blue-Alpha channel) color.
virtual int getSRID() const
It returns the Spatial Reference System ID associated to the Layer.
boost::intrusive_ptr< AbstractLayer > AbstractLayerPtr
void pickFeature(const te::map::AbstractLayerPtr &layer, const QPointF &pos)