RasterProcessTool/RasterMainWidgetGUI/RasterMainWidget/maptooldrawline.cpp

48 lines
1.3 KiB
C++

#include "maptooldrawline.h"
#include <QDebug>
#include "mapline.h"
#include "mapcanvas.h"
#include "maplayer.h"
#pragma execution_character_set("utf-8")
void LAMPMainWidget::MapToolDrawline::execute(QMouseEvent *event)
{
QPointF scene_point=this->mMapCanvas->mapToScene(event->pos());
QPointF mkt_point=scene_point*this->mMapCanvas->currentLayer()->resolution();
if(event->type()==QEvent::MouseMove&&isDrawing){
this->current_line->lastMktpoint()=mkt_point;
}
if( event->type() != QEvent::MouseButtonPress) return;
if(event->button()==Qt::LeftButton){
if(!isDrawing){
qDebug()<<"begin drawline";
isDrawing=true;
this->current_line=new Mapline(this->mMapCanvas->currentLayer());
this->mMapCanvas->scene()->addItem(current_line);
this->current_line->append(mkt_point);
}
this->current_line->append(mkt_point);
}
if(event->button()==Qt::RightButton){
isDrawing=false;
qDebug()<<"end drawline";
}
}
void LAMPMainWidget::MapToolDrawline::setup()
{
mMapCanvas->setCursor(Qt::CrossCursor);
}
void LAMPMainWidget::MapToolDrawline::deSetup()
{
mMapCanvas->setCursor(Qt::ArrowCursor);
}
QString LAMPMainWidget::MapToolDrawline::id()
{
return QString("drawline_tool");
}