mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-21 11:54:15 +01:00
OP-37 GCS/MapPlugin Core done, started widget part.
git-svn-id: svn://svn.openpilot.org/OpenPilot/trunk@667 ebee16cc-31ac-478f-84a7-5cbb03baadba
This commit is contained in:
parent
80956a2766
commit
ac80771774
@ -1,8 +1,9 @@
|
|||||||
TEMPLATE = subdirs
|
TEMPLATE = subdirs
|
||||||
SUBDIRS = core
|
SUBDIRS = core
|
||||||
SUBDIRS += internals
|
SUBDIRS += internals
|
||||||
|
SUBDIRS += mapwidget
|
||||||
CONFIG += ordered
|
CONFIG += ordered
|
||||||
SUBDIRS +=teste
|
SUBDIRS +=teste
|
||||||
SUBDIRS +=gettilestest
|
SUBDIRS +=gettilestest
|
||||||
|
SUBDIRS +=widgettest
|
||||||
|
|
||||||
|
@ -4,7 +4,7 @@ Core::Core():currentPosition(0,0),currentPositionPixel(0,0),LastLocationInBounds
|
|||||||
,minOfTiles(0,0),maxOfTiles(0,0),started(false),isDragging(false),TooltipTextPadding(10,10),MouseWheelZooming(false),loaderLimit(5)
|
,minOfTiles(0,0),maxOfTiles(0,0),started(false),isDragging(false),TooltipTextPadding(10,10),MouseWheelZooming(false),loaderLimit(5)
|
||||||
{
|
{
|
||||||
mousewheelzoomtype=MouseWheelZoomType::MousePositionAndCenter;
|
mousewheelzoomtype=MouseWheelZoomType::MousePositionAndCenter;
|
||||||
|
this->setAutoDelete(false);
|
||||||
}
|
}
|
||||||
void Core::run()
|
void Core::run()
|
||||||
{
|
{
|
||||||
@ -19,7 +19,7 @@ void Core::run()
|
|||||||
task = tileLoadQueue.dequeue();
|
task = tileLoadQueue.dequeue();
|
||||||
{
|
{
|
||||||
last = tileLoadQueue.count() == 0;
|
last = tileLoadQueue.count() == 0;
|
||||||
//Debug.WriteLine("TileLoadQueue: " + tileLoadQueue.Count);
|
qDebug()<<"TileLoadQueue: " << tileLoadQueue.count();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -69,7 +69,10 @@ void Core::run()
|
|||||||
{
|
{
|
||||||
qDebug()<<"ProcessLoadTask: " << task.ToString()<< " -> empty tile, retry " << retry;
|
qDebug()<<"ProcessLoadTask: " << task.ToString()<< " -> empty tile, retry " << retry;
|
||||||
{
|
{
|
||||||
//QThread::usleep(1111);
|
QWaitCondition wait;
|
||||||
|
QMutex m;
|
||||||
|
m.lock();
|
||||||
|
wait.wait(&m,1111);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -476,33 +479,79 @@ void Core::CancelAsyncTasks()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
void Core::UpdateBounds()
|
void Core::UpdateBounds()
|
||||||
|
{
|
||||||
|
MtileDrawingList.lock();
|
||||||
{
|
{
|
||||||
MtileDrawingList.lock();
|
FindTilesAround(tileDrawingList);
|
||||||
{
|
|
||||||
//FindTilesAround(tileDrawingList);
|
|
||||||
|
|
||||||
qDebug()<<"OnTileLoadStart: " << tileDrawingList.count() << " tiles to load at zoom " << Zoom() << ", time: " << QDateTime::currentDateTime().date();
|
qDebug()<<"OnTileLoadStart: " << tileDrawingList.count() << " tiles to load at zoom " << Zoom() << ", time: " << QDateTime::currentDateTime().date();
|
||||||
|
|
||||||
emit OnTileLoadStart();
|
emit OnTileLoadStart();
|
||||||
|
|
||||||
|
|
||||||
foreach(Point p,tileDrawingList)
|
foreach(Point p,tileDrawingList)
|
||||||
{
|
{
|
||||||
LoadTask task = LoadTask(p, Zoom());
|
LoadTask task = LoadTask(p, Zoom());
|
||||||
{
|
{
|
||||||
MtileLoadQueue.lock();
|
MtileLoadQueue.lock();
|
||||||
{
|
{
|
||||||
if(!tileLoadQueue.contains(task))
|
if(!tileLoadQueue.contains(task))
|
||||||
{
|
{
|
||||||
tileLoadQueue.enqueue(task);
|
tileLoadQueue.enqueue(task);
|
||||||
//this->.QueueUserWorkItem(ProcessLoadTaskCallback);
|
ProcessLoadTaskCallback.start(this);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
MtileLoadQueue.unlock();
|
MtileLoadQueue.unlock();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
//UpdateGroundResolution();
|
|
||||||
}
|
}
|
||||||
|
MtileDrawingList.unlock();
|
||||||
|
UpdateGroundResolution();
|
||||||
|
}
|
||||||
|
void Core::FindTilesAround(QList<Point> &list)
|
||||||
|
{
|
||||||
|
list.clear();;
|
||||||
|
for(int i = -sizeOfMapArea.Width(); i <= sizeOfMapArea.Width(); i++)
|
||||||
|
{
|
||||||
|
for(int j = -sizeOfMapArea.Height(); j <= sizeOfMapArea.Height(); j++)
|
||||||
|
{
|
||||||
|
Point p = centerTileXYLocation;
|
||||||
|
p.SetX(p.X() + i);
|
||||||
|
p.SetY(p.Y() + j);
|
||||||
|
|
||||||
|
//if(p.X < minOfTiles.Width)
|
||||||
|
//{
|
||||||
|
// p.X += (maxOfTiles.Width + 1);
|
||||||
|
//}
|
||||||
|
|
||||||
|
//if(p.X > maxOfTiles.Width)
|
||||||
|
//{
|
||||||
|
// p.X -= (maxOfTiles.Width + 1);
|
||||||
|
//}
|
||||||
|
|
||||||
|
if(p.X() >= minOfTiles.Width() && p.Y() >= minOfTiles.Height() && p.X() <= maxOfTiles.Width() && p.Y() <= maxOfTiles.Height())
|
||||||
|
{
|
||||||
|
if(!list.contains(p))
|
||||||
|
{
|
||||||
|
list.append(p);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
// if(GMaps::Instance()->ShuffleTilesOnLoad)
|
||||||
|
// {
|
||||||
|
// Stuff.Shuffle<Point>(list);
|
||||||
|
// }
|
||||||
|
}
|
||||||
|
void Core::UpdateGroundResolution()
|
||||||
|
{
|
||||||
|
double rez = Projection()->GetGroundResolution(Zoom(), CurrentPosition().Lat());
|
||||||
|
pxRes100m = (int) (100.0 / rez); // 100 meters
|
||||||
|
pxRes1000m = (int) (1000.0 / rez); // 1km
|
||||||
|
pxRes10km = (int) (10000.0 / rez); // 10km
|
||||||
|
pxRes100km = (int) (100000.0 / rez); // 100km
|
||||||
|
pxRes1000km = (int) (1000000.0 / rez); // 1000km
|
||||||
|
pxRes5000km = (int) (5000000.0 / rez); // 5000km
|
||||||
|
}
|
||||||
|
@ -140,6 +140,9 @@ public:
|
|||||||
|
|
||||||
void CancelAsyncTasks();
|
void CancelAsyncTasks();
|
||||||
|
|
||||||
|
void FindTilesAround(QList<Point> &list);
|
||||||
|
|
||||||
|
void UpdateGroundResolution();
|
||||||
signals:
|
signals:
|
||||||
void OnCurrentPositionChanged(PointLatLng point);
|
void OnCurrentPositionChanged(PointLatLng point);
|
||||||
void OnTileLoadComplete();
|
void OnTileLoadComplete();
|
||||||
@ -196,6 +199,8 @@ private:
|
|||||||
|
|
||||||
QSemaphore loaderLimit;
|
QSemaphore loaderLimit;
|
||||||
|
|
||||||
|
QThreadPool ProcessLoadTaskCallback;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool started;
|
bool started;
|
||||||
|
|
||||||
|
@ -0,0 +1,6 @@
|
|||||||
|
include (../common.pri)
|
||||||
|
SOURCES += opmapcontrol.cpp
|
||||||
|
LIBS += -L../build \
|
||||||
|
-lcore \
|
||||||
|
-linternals
|
||||||
|
HEADERS += opmapcontrol.h
|
@ -0,0 +1,27 @@
|
|||||||
|
#include "opmapcontrol.h"
|
||||||
|
|
||||||
|
OPMapControl::OPMapControl(QWidget *parent):QWidget(parent)
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
void OPMapControl::paintEvent(QPaintEvent* evnt)
|
||||||
|
{
|
||||||
|
QWidget::paintEvent(evnt);
|
||||||
|
QPainter painter(this);
|
||||||
|
painter.drawText(10,10,"TESTE");
|
||||||
|
}
|
||||||
|
|
||||||
|
void OPMapControl::mousePressEvent ( QMouseEvent* evnt )
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void OPMapControl::mouseReleaseEvent ( QMouseEvent* evnt )
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
void OPMapControl::mouseMoveEvent ( QMouseEvent* evnt )
|
||||||
|
{
|
||||||
|
|
||||||
|
}
|
24
ground/src/experimental/OPMapWidget/mapwidget/opmapcontrol.h
Normal file
24
ground/src/experimental/OPMapWidget/mapwidget/opmapcontrol.h
Normal file
@ -0,0 +1,24 @@
|
|||||||
|
#ifndef OPMAPCONTROL_H
|
||||||
|
#define OPMAPCONTROL_H
|
||||||
|
|
||||||
|
#include "../internals/core.h"
|
||||||
|
#include <QtGui>
|
||||||
|
|
||||||
|
#include <QWidget>
|
||||||
|
class OPMapControl:public QWidget
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
OPMapControl(QWidget *parent=0);
|
||||||
|
protected:
|
||||||
|
void paintEvent ( QPaintEvent* evnt );
|
||||||
|
void mousePressEvent ( QMouseEvent* evnt );
|
||||||
|
void mouseReleaseEvent ( QMouseEvent* evnt );
|
||||||
|
void mouseMoveEvent ( QMouseEvent* evnt );
|
||||||
|
private:
|
||||||
|
Core core;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // OPMAPCONTROL_H
|
15
ground/src/experimental/OPMapWidget/widgettest/main.cpp
Normal file
15
ground/src/experimental/OPMapWidget/widgettest/main.cpp
Normal file
@ -0,0 +1,15 @@
|
|||||||
|
#include <QApplication>
|
||||||
|
#include "map.h"
|
||||||
|
|
||||||
|
int main(int argc, char *argv[])
|
||||||
|
{
|
||||||
|
QApplication app(argc, argv);
|
||||||
|
map * mw = new map();
|
||||||
|
|
||||||
|
mw->resize(400,590);
|
||||||
|
mw->setWindowTitle("Map");
|
||||||
|
mw->show();
|
||||||
|
return app.exec();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
12
ground/src/experimental/OPMapWidget/widgettest/map.cpp
Normal file
12
ground/src/experimental/OPMapWidget/widgettest/map.cpp
Normal file
@ -0,0 +1,12 @@
|
|||||||
|
#include "map.h"
|
||||||
|
|
||||||
|
map::map(QWidget* parent)
|
||||||
|
{
|
||||||
|
mc= new OPMapControl();
|
||||||
|
QVBoxLayout* layout = new QVBoxLayout;
|
||||||
|
layout->addWidget(mc);
|
||||||
|
|
||||||
|
QWidget* w = new QWidget();
|
||||||
|
w->setLayout(layout);
|
||||||
|
setCentralWidget(w);
|
||||||
|
}
|
13
ground/src/experimental/OPMapWidget/widgettest/map.h
Normal file
13
ground/src/experimental/OPMapWidget/widgettest/map.h
Normal file
@ -0,0 +1,13 @@
|
|||||||
|
#ifndef MAP_H
|
||||||
|
#define MAP_H
|
||||||
|
#include "../mapwidget/opmapcontrol.h"
|
||||||
|
#include <QtGui>
|
||||||
|
class map:public QMainWindow
|
||||||
|
{Q_OBJECT
|
||||||
|
public:
|
||||||
|
map(QWidget* parent = 0);
|
||||||
|
private:
|
||||||
|
OPMapControl* mc;
|
||||||
|
};
|
||||||
|
|
||||||
|
#endif // MAP_H
|
@ -0,0 +1,14 @@
|
|||||||
|
DESTDIR = ../build
|
||||||
|
PROJECT = gettilestest
|
||||||
|
TEMPLATE = app
|
||||||
|
QT += network
|
||||||
|
QT += sql
|
||||||
|
CONFIG += console
|
||||||
|
CONFIG -= app_bundle
|
||||||
|
DEPENDPATH += .
|
||||||
|
INCLUDEPATH += ../core
|
||||||
|
SOURCES += main.cpp \
|
||||||
|
map.cpp
|
||||||
|
LIBS += -L../build \
|
||||||
|
-lmapwidget -lcore -linternals
|
||||||
|
HEADERS += map.h
|
Loading…
x
Reference in New Issue
Block a user