mirror of
https://bitbucket.org/librepilot/librepilot.git
synced 2025-02-20 10:54:14 +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
|
||||
SUBDIRS = core
|
||||
SUBDIRS += internals
|
||||
SUBDIRS += mapwidget
|
||||
CONFIG += ordered
|
||||
SUBDIRS +=teste
|
||||
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)
|
||||
{
|
||||
mousewheelzoomtype=MouseWheelZoomType::MousePositionAndCenter;
|
||||
|
||||
this->setAutoDelete(false);
|
||||
}
|
||||
void Core::run()
|
||||
{
|
||||
@ -19,7 +19,7 @@ void Core::run()
|
||||
task = tileLoadQueue.dequeue();
|
||||
{
|
||||
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;
|
||||
{
|
||||
//QThread::usleep(1111);
|
||||
QWaitCondition wait;
|
||||
QMutex m;
|
||||
m.lock();
|
||||
wait.wait(&m,1111);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -476,33 +479,79 @@ void Core::CancelAsyncTasks()
|
||||
}
|
||||
}
|
||||
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)
|
||||
{
|
||||
LoadTask task = LoadTask(p, Zoom());
|
||||
{
|
||||
foreach(Point p,tileDrawingList)
|
||||
{
|
||||
LoadTask task = LoadTask(p, Zoom());
|
||||
{
|
||||
MtileLoadQueue.lock();
|
||||
{
|
||||
if(!tileLoadQueue.contains(task))
|
||||
{
|
||||
tileLoadQueue.enqueue(task);
|
||||
//this->.QueueUserWorkItem(ProcessLoadTaskCallback);
|
||||
}
|
||||
if(!tileLoadQueue.contains(task))
|
||||
{
|
||||
tileLoadQueue.enqueue(task);
|
||||
ProcessLoadTaskCallback.start(this);
|
||||
}
|
||||
}
|
||||
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 FindTilesAround(QList<Point> &list);
|
||||
|
||||
void UpdateGroundResolution();
|
||||
signals:
|
||||
void OnCurrentPositionChanged(PointLatLng point);
|
||||
void OnTileLoadComplete();
|
||||
@ -196,6 +199,8 @@ private:
|
||||
|
||||
QSemaphore loaderLimit;
|
||||
|
||||
QThreadPool ProcessLoadTaskCallback;
|
||||
|
||||
protected:
|
||||
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