From 77fb2e55435b5c36b095b2b7941ae6224e5de77e Mon Sep 17 00:00:00 2001 From: goldenhawking Date: Thu, 13 Sep 2018 07:22:00 +0800 Subject: [PATCH] Code Struct optimise. --- .gitignore | 220 ++++++++++++++++++ qtviewer_planetosm/interface_utils.h | 46 ++++ qtviewer_planetosm/osm_frame_widget.cpp | 2 +- .../osmtiles/cProjectionMercator.h | 2 +- qtviewer_planetosm/osmtiles/layer_interface.h | 7 +- qtviewer_planetosm/osmtiles/tilesviewer.cpp | 5 +- qtviewer_planetosm/qtaxviewer_planetosm.cpp | 31 +-- qtviewer_planetosm/qtaxviewer_planetosm.h | 3 - qtviewer_planetosm/qtviewer_planetosm.pro | 3 +- qtviewer_planetosm/qtwidget_planetosm.cpp | 30 +-- qtviewer_planetosm/qtwidget_planetosm.h | 3 +- qtvplugin_geomarker/qtvplugin_geomarker.cpp | 1 + qtvplugin_grid/qtvplugin_grid.cpp | 5 +- test_container/testcontainer.cpp | 52 +---- test_container/testcontainer.h | 5 - test_container/testcontainer_linux.cpp | 48 +--- 16 files changed, 286 insertions(+), 177 deletions(-) create mode 100644 qtviewer_planetosm/interface_utils.h diff --git a/.gitignore b/.gitignore index e53ff5a..91e8312 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,223 @@ +__pycache__ +/network +*.qm + +# User-specific files +*.suo *.user +*.sln.docstates + +# Build results +[Dd]ebug/ +[Dd]ebugPublic/ +[Rr]elease/ +[Rr]eleases/ +x64/ +build/ +bld/ +[Bb]in/ +[Oo]bj/ + +# Roslyn cache directories +*.ide/ + +# MSTest test Results +[Tt]est[Rr]esult*/ +[Bb]uild[Ll]og.* + +#NUNIT +*.VisualState.xml +TestResult.xml + +# Build Results of an ATL Project +[Dd]ebugPS/ +[Rr]eleasePS/ +dlldata.c + +*_i.c +*_p.c +*_i.h +*.ilk +*.meta +*.obj +*.pch +*.pdb +*.pgc +*.pgd +*.rsp +*.sbr +*.tlb +*.tli +*.tlh +*.tmp +*.tmp_proj +*.log +*.vspscc +*.vssscc +.builds +*.pidb +*.svclog +*.scc + +# Chutzpah Test files +_Chutzpah* + +# Visual C++ cache files +ipch/ +*.aps +*.ncb +*.opensdf +*.sdf +*.cachefile + +# Visual Studio profiler +*.psess +*.vsp +*.vspx + +# TFS 2012 Local Workspace +$tf/ + +# Guidance Automation Toolkit +*.gpState + +# ReSharper is a .NET coding add-in +_ReSharper*/ +*.[Rr]e[Ss]harper +*.DotSettings.user + +# JustCode is a .NET coding addin-in +.JustCode + +# TeamCity is a build add-in +_TeamCity* + +# DotCover is a Code Coverage Tool +*.dotCover + +# NCrunch +_NCrunch_* +.*crunch*.local.xml + +# MightyMoose +*.mm.* +AutoTest.Net/ + +# Web workbench (sass) +.sass-cache/ + +# Installshield output folder +[Ee]xpress/ + +# DocProject is a documentation generator add-in +DocProject/buildhelp/ +DocProject/Help/*.HxT +DocProject/Help/*.HxC +DocProject/Help/*.hhc +DocProject/Help/*.hhk +DocProject/Help/*.hhp +DocProject/Help/Html2 +DocProject/Help/html + +# Click-Once directory +publish/ + +# Publish Web Output +*.[Pp]ublish.xml +*.azurePubxml +## TODO: Comment the next line if you want to checkin your +## web deploy settings but do note that will include unencrypted +## passwords +*.pubxml + +# NuGet Packages +packages/* +*.nupkg +## TODO: If the tool you use requires repositories.config +## uncomment the next line +#!packages/repositories.config + +# Enable "build/" folder in the NuGet Packages folder since +# NuGet packages use it for MSBuild targets. +# This line needs to be after the ignore of the build folder +# (and the packages folder if the line above has been uncommented) +!packages/build/ + +# Windows Azure Build Output +csx/ +*.build.csdef + +# Windows Store app package directory +AppPackages/ + +# Others +sql/ +*.Cache +ClientBin/ +[Ss]tyle[Cc]op.* +~$* +*~ +*.dbmdl +*.dbproj.schemaview +*.pfx +*.publishsettings +node_modules/ + +# RIA/Silverlight projects +Generated_Code/ + +# Backup & report files from converting an old project file +# to a newer Visual Studio version. Backup files are not needed, +# because we have git ;-) +_UpgradeReport_Files/ +Backup*/ +UpgradeLog*.XML +UpgradeLog*.htm + +# SQL Server files +*.mdf +*.ldf + +# Business Intelligence projects +*.rdl.data +*.bim.layout +*.bim_*.settings + +# Microsoft Fakes +FakesAssemblies/ + +# C++ objects and libs + +*.slo +*.lo +*.o +*.a +*.la +*.lai +*.so +*.dll +*.dylib + +# Qt-es + +/.qmake.cache +/.qmake.stash +*.pro.user +*.pro.user.* +*.moc +moc_*.cpp +qrc_*.cpp +ui_*.h +Makefile* +*-build-* + +# QtCreator + +*.autosave +build-*-Debug +build-*-Release +*.bak +*.qm +*_Saved \ No newline at end of file diff --git a/qtviewer_planetosm/interface_utils.h b/qtviewer_planetosm/interface_utils.h new file mode 100644 index 0000000..834f562 --- /dev/null +++ b/qtviewer_planetosm/interface_utils.h @@ -0,0 +1,46 @@ +#pragma once +#include +#include +#include +#include +#define QTVOSM_DEBUG(MSG) qDebug()<<"QTVOSM Debug>"<< MSG <<"\n\t"<<__FUNCTION__<<":"<<__FILE__<<__LINE__ +#define QTVOSM_WARNING(MSG) qWarning()<<"QTVOSM Debug>"<< MSG <<"\n\t"<<__FUNCTION__<<":"<<__FILE__<<__LINE__ +#define QTVOSM_FATAL(MSG) qFatal()<<"QTVOSM Debug>"<< MSG <<"\n\t"<<__FUNCTION__<<":"<<__FILE__<<__LINE__ +/** + * @brief map_to_string Convert QMap key-value paires to string + * @param m map. m["A"]=12, m["B"] = "Yes" + * @return string , eg: "A=12;B=Yes;" + */ +inline QString map_to_string(const QMap & m) +{ + QString s; + for(QMap::const_iterator p = m.begin();p!=m.end();++p) + { + s += p.key(); + s += "="; + s += p.value().toString(); + s += ";"; + } + return /*std::move*/(s); +} +/*! + * \brief string_to_map Convert string to key-value map + * \param s string, eg: "A=12;B=Yes;" + * \return map. map["A"]=12, map["B"] = "Yes" + */ +inline QMap string_to_map(const QString & s) +{ + QMap res; + QStringList lst = s.split(";"); + foreach (QString s, lst) + { + int t = s.indexOf("="); + if (t>0 && t< s.size()) + { + QString name = s.left(t).trimmed(); + QString value = s.mid(t+1).trimmed(); + res[name] = value; + } + } + return /*std::move*/(res); +} diff --git a/qtviewer_planetosm/osm_frame_widget.cpp b/qtviewer_planetosm/osm_frame_widget.cpp index 660d385..f754b82 100644 --- a/qtviewer_planetosm/osm_frame_widget.cpp +++ b/qtviewer_planetosm/osm_frame_widget.cpp @@ -11,7 +11,7 @@ #include #include #include "osmtiles/viewer_interface.h" - +#include "interface_utils.h" QMutex osm_frame_widget::m_mutex_proteced; /*! diff --git a/qtviewer_planetosm/osmtiles/cProjectionMercator.h b/qtviewer_planetosm/osmtiles/cProjectionMercator.h index 3717d71..5452782 100644 --- a/qtviewer_planetosm/osmtiles/cProjectionMercator.h +++ b/qtviewer_planetosm/osmtiles/cProjectionMercator.h @@ -2,7 +2,7 @@ #include namespace QTVOSM { - /*! cProjectionMercator is a toolkit class that turns coordinates between LLA(4326) and Mercator(900913) + /*! cProjectionMercator is a toolkit class that turns coordinates between LLA(4326) and Mercator(3857 ) cProjectionMercator cProjectionMercator.h "qtviewer_planetosm/osmtiles/cProjectionMercator.h" \author goldenhawking \date 2015-12-11 */ diff --git a/qtviewer_planetosm/osmtiles/layer_interface.h b/qtviewer_planetosm/osmtiles/layer_interface.h index 66963ac..04bf06f 100644 --- a/qtviewer_planetosm/osmtiles/layer_interface.h +++ b/qtviewer_planetosm/osmtiles/layer_interface.h @@ -7,9 +7,6 @@ #include #include #define OSMLayerInterface_iid "org.goldenhawkingStudio.OSMViewer_iid.LayerInterface" -#define QTVOSM_DEBUG(MSG) qDebug()<<"QTVOSM Debug>"<< MSG <<"\n\t"<<__FUNCTION__<<":"<<__FILE__<<__LINE__ -#define QTVOSM_WARNING(MSG) qWarning()<<"QTVOSM Debug>"<< MSG <<"\n\t"<<__FUNCTION__<<":"<<__FILE__<<__LINE__ -#define QTVOSM_FATAL(MSG) qFatal()<<"QTVOSM Debug>"<< MSG <<"\n\t"<<__FUNCTION__<<":"<<__FILE__<<__LINE__ class osm_frame_widget; class qtaxviewer_planetosm; class qtwidget_planetosm; @@ -95,9 +92,9 @@ namespace QTVOSM public: //user-def direct function calls virtual QMap call_func(const QMap & /*paras*/){return ( QMap());} - }; - } Q_DECLARE_INTERFACE(QTVOSM::layer_interface, OSMLayerInterface_iid) + + #endif // LAYER_BASE_H diff --git a/qtviewer_planetosm/osmtiles/tilesviewer.cpp b/qtviewer_planetosm/osmtiles/tilesviewer.cpp index f73869d..1a617c5 100644 --- a/qtviewer_planetosm/osmtiles/tilesviewer.cpp +++ b/qtviewer_planetosm/osmtiles/tilesviewer.cpp @@ -8,6 +8,7 @@ #include #include #include "layer_interface.h" +#include "interface_utils.h" namespace QTVOSM{ tilesviewer::tilesviewer(QWidget *parent) : QWidget(parent) @@ -707,7 +708,7 @@ namespace QTVOSM{ } /*! - \brief convert Mercator to LLA.Mercator coord is a projection with ID 900913. + \brief convert Mercator to LLA.Mercator coord is a projection with ID 3857 . this method is NOT Level releated. \fn tilesviewer::CV_MK2LLA @@ -726,7 +727,7 @@ namespace QTVOSM{ } /*! - \brief convert LLA to Mercator .Mercator coord is a projection with ID 900913. + \brief convert LLA to Mercator .Mercator coord is a projection with ID 3857 . this method is NOT Level releated. \fn tilesviewer::CV_LLA2MK diff --git a/qtviewer_planetosm/qtaxviewer_planetosm.cpp b/qtviewer_planetosm/qtaxviewer_planetosm.cpp index 804d002..b46b611 100644 --- a/qtviewer_planetosm/qtaxviewer_planetosm.cpp +++ b/qtviewer_planetosm/qtaxviewer_planetosm.cpp @@ -8,6 +8,7 @@ #include #include "osmtiles/tilesviewer.h" #include "osmtiles/layer_tiles.h" +#include "interface_utils.h" qtaxviewer_planetosm::qtaxviewer_planetosm(QWidget *parent ) :osm_frame_widget(parent) { @@ -406,36 +407,6 @@ int qtaxviewer_planetosm::osm_layer_move_bottom(QString layerName) } return 0; } -QString qtaxviewer_planetosm::map_to_string(const QMap & m) -{ - QString s; - for(QMap::const_iterator p = m.begin();p!=m.end();++p) - { - s += p.key(); - s += "="; - s += p.value().toString(); - s += ";"; - } - return /*std::move*/(s); -} - -QMap qtaxviewer_planetosm::string_to_map(const QString & s) -{ - QMap res; - QStringList lst = s.split(";"); - foreach (QString s, lst) - { - int t = s.indexOf("="); - if (t>0 && t< s.size()) - { - QString name = s.left(t).trimmed(); - QString value = s.mid(t+1).trimmed(); - res[name] = value; - } - } - return /*std::move*/(res); -} - /** * @brief osm_layer_call_function call layers' call_func method from * outside the ocx ctrl. Please MAKE SURE that this function is called from UI thread, diff --git a/qtviewer_planetosm/qtaxviewer_planetosm.h b/qtviewer_planetosm/qtaxviewer_planetosm.h index 4a9271f..f8320ee 100644 --- a/qtviewer_planetosm/qtaxviewer_planetosm.h +++ b/qtviewer_planetosm/qtaxviewer_planetosm.h @@ -17,9 +17,6 @@ class qtaxviewer_planetosm :public osm_frame_widget, public QAxBindable { Q_OBJECT -private: - QString map_to_string(const QMap & m); - QMap string_to_map(const QString & s); protected: QTranslator qtTranslator; QTranslator appTranslator; diff --git a/qtviewer_planetosm/qtviewer_planetosm.pro b/qtviewer_planetosm/qtviewer_planetosm.pro index 6ea05bd..e717b57 100644 --- a/qtviewer_planetosm/qtviewer_planetosm.pro +++ b/qtviewer_planetosm/qtviewer_planetosm.pro @@ -30,7 +30,8 @@ HEADERS += osm_frame_widget.h \ osmtiles/layer_browser.h \ osmtiles/layer_interface.h \ osmtiles/viewer_interface.h \ - osmtiles/layer_tiles_page.h + osmtiles/layer_tiles_page.h \ + interface_utils.h FORMS += osm_frame_widget.ui \ osmtiles/layer_tiles_page.ui diff --git a/qtviewer_planetosm/qtwidget_planetosm.cpp b/qtviewer_planetosm/qtwidget_planetosm.cpp index cc6542a..cf5d9df 100644 --- a/qtviewer_planetosm/qtwidget_planetosm.cpp +++ b/qtviewer_planetosm/qtwidget_planetosm.cpp @@ -8,7 +8,7 @@ #include #include "osmtiles/tilesviewer.h" #include "osmtiles/layer_tiles.h" - +#include "interface_utils.h" qtwidget_planetosm::qtwidget_planetosm(QWidget *parent ) :QWidget(parent) ,m_map_widget(0) @@ -381,35 +381,7 @@ int qtwidget_planetosm::osm_layer_move_bottom(QString layerName) } return 0; } -QString qtwidget_planetosm::map_to_string(const QMap & m) -{ - QString s; - for(QMap::const_iterator p = m.begin();p!=m.end();++p) - { - s += p.key(); - s += "="; - s += p.value().toString(); - s += ";"; - } - return /*std::move*/(s); -} -QMap qtwidget_planetosm::string_to_map(const QString & s) -{ - QMap res; - QStringList lst = s.split(";"); - foreach (QString s, lst) - { - int t = s.indexOf("="); - if (t>0 && t< s.size()) - { - QString name = s.left(t).trimmed(); - QString value = s.mid(t+1).trimmed(); - res[name] = value; - } - } - return /*std::move*/(res); -} /** * @brief osm_layer_call_function call layers' call_func method from * outside the ocx ctrl. Please MAKE SURE that this function is called from UI thread, diff --git a/qtviewer_planetosm/qtwidget_planetosm.h b/qtviewer_planetosm/qtwidget_planetosm.h index aeb4c44..031718d 100644 --- a/qtviewer_planetosm/qtwidget_planetosm.h +++ b/qtviewer_planetosm/qtwidget_planetosm.h @@ -35,8 +35,7 @@ public: //! slots below is designed for widget interfaces public: QTVOSM::viewer_interface * viewer(); - QString map_to_string(const QMap & m); - QMap string_to_map(const QString & s); + QString osm_get_remote_address(QString layerName) const; void osm_set_remote_address (QString layerName, QString addr); QString osm_get_local_cache(QString layerName) const; diff --git a/qtvplugin_geomarker/qtvplugin_geomarker.cpp b/qtvplugin_geomarker/qtvplugin_geomarker.cpp index 408eafb..1656c80 100644 --- a/qtvplugin_geomarker/qtvplugin_geomarker.cpp +++ b/qtvplugin_geomarker/qtvplugin_geomarker.cpp @@ -18,6 +18,7 @@ #include "geographicspolygonitem.h" #include "geographicspixmapitem.h" #include "geographicsmultilineitem.h" +#include "../qtviewer_planetosm/interface_utils.h" QMutex mutex_instances; QMap map_instances; QMap count_instances; diff --git a/qtvplugin_grid/qtvplugin_grid.cpp b/qtvplugin_grid/qtvplugin_grid.cpp index 53e4e6e..a09b76b 100644 --- a/qtvplugin_grid/qtvplugin_grid.cpp +++ b/qtvplugin_grid/qtvplugin_grid.cpp @@ -13,6 +13,7 @@ #include #include #include +#include "../qtviewer_planetosm/interface_utils.h" /*! * The plugin dynamic library (.dll in windows or .so in linux) will be loaded into memory only once. * for example, a windows app like test_container will contain 2 qtaxviewer_planetosm OCX ctrls , @@ -450,8 +451,8 @@ void qtvplugin_grid::CalArea() PointX [i] = dLonCurr; PointY [i] = dLatCurr; } - str_Polygon += (")\n)',4326),900913)\n"); - str_LineString += (")',4326),900913)\n"); + str_Polygon += (")\n)',4326),3857 )\n"); + str_LineString += (")',4326),3857 )\n"); if (Valid==true) { diff --git a/test_container/testcontainer.cpp b/test_container/testcontainer.cpp index 5ba74bd..8eb3b2b 100644 --- a/test_container/testcontainer.cpp +++ b/test_container/testcontainer.cpp @@ -3,6 +3,7 @@ #include #include #include +#include "../qtviewer_planetosm/interface_utils.h" testcontainer::testcontainer(QWidget *parent) : QDialog(parent), ui(new Ui::testcontainer) @@ -26,27 +27,8 @@ testcontainer::testcontainer(QWidget *parent) : connect (ui->axWidget_map1,SIGNAL(evt_Message(QString)),this,SLOT(slot_message(QString))); connect (ui->axWidget_map2,SIGNAL(evt_Message(QString)),this,SLOT(slot_message(QString))); m_nAnTimer = startTimer(150); - - //confirmLayerNames(); } -//void testcontainer::confirmLayerNames() -//{ -// //Get Total layers -// QVariant vt_num = ui->axWidget_map1->dynamicCall("osm_layer_get_count()"); -// int n_num = vt_num.toInt(); - -// //Get Layer names -// for (int i=0;iaxWidget_map1->dynamicCall("osm_layer_get_name(int)",i); -// QString strname = vt_name.toString(); -// if (strname.indexOf("grid")>=0) -// m_str_gridLayerName = strname; -// else if (strname.indexOf("geomarker")>=0) -// m_str_markerLayerName = strname; -// } - -//} + void testcontainer::show_message(QString message) { QList list_newrow; @@ -237,35 +219,7 @@ void testcontainer::on_pushButton_QTV_test_layer_move_clicked() av = ui->axWidget_map1->dynamicCall("osm_layer_set_active(QString,int)","OSM",av==0?-1:0).toInt(); QMessageBox::information(this,"active",QString("osm_layer_set_active(\"OSM\") returns %1").arg(av)); } -QString testcontainer::map_to_string(const QMap & m) -{ - QString s; - for(QMap::const_iterator p = m.begin();p!=m.end();++p) - { - s += p.key(); - s += "="; - s += p.value().toString(); - s += ";"; - } - return /*std::move*/(s); -} -QMap testcontainer::string_to_map(const QString & s) -{ - QMap res; - QStringList lst = s.split(";"); - foreach (QString s, lst) - { - int t = s.indexOf("="); - if (t>0 && t< s.size()) - { - QString name = s.left(t).trimmed(); - QString value = s.mid(t+1).trimmed(); - res[name] = value; - } - } - return /*std::move*/(res); -} void testcontainer::on_pushButton_QTV_test_grid_enable_clicked() { //Get the grid plugin's ruler status @@ -563,7 +517,7 @@ void testcontainer::on_osmmap_map_event(QMap p) { QList list_newrow; list_newrow << new QStandardItem(QString("%1").arg((quint64)ui->osmmap)); - QString message = this->map_to_string(p); + QString message = map_to_string(p); if (message.contains("MOUSE_MOVE")) { diff --git a/test_container/testcontainer.h b/test_container/testcontainer.h index 433c53f..94a3231 100644 --- a/test_container/testcontainer.h +++ b/test_container/testcontainer.h @@ -12,8 +12,6 @@ class testcontainer : public QDialog Q_OBJECT private: QStandardItemModel * m_pModel; - QString map_to_string(const QMap & m); - QMap string_to_map(const QString & s); public: explicit testcontainer(QWidget *parent = 0); ~testcontainer(); @@ -23,9 +21,6 @@ protected: private: Ui::testcontainer *ui; int m_nAnTimer; - //QString m_str_gridLayerName; - //QString m_str_markerLayerName; - //void confirmLayerNames(); void show_message(QString); protected slots: void slot_message(QString); diff --git a/test_container/testcontainer_linux.cpp b/test_container/testcontainer_linux.cpp index 91598b1..4c3201c 100644 --- a/test_container/testcontainer_linux.cpp +++ b/test_container/testcontainer_linux.cpp @@ -2,6 +2,7 @@ #include "ui_testcontainer_linux.h" #include #include +#include "../qtviewer_planetosm/interface_utils.h" testcontainer::testcontainer(QWidget *parent) : QDialog(parent), ui(new Ui::testcontainer) @@ -22,26 +23,7 @@ testcontainer::testcontainer(QWidget *parent) : m_nAnTimer = startTimer(150); - //confirmLayerNames(); } -//void testcontainer::confirmLayerNames() -//{ -// //Get Total layers -// int n_num = ui->osmmap->osm_layer_get_count(); - -// //Get Layer names -// for (int i=0;iosmmap->osm_layer_get_name(i); - -// if (strname.indexOf("grid")>=0) -// m_str_gridLayerName = strname; -// else if (strname.indexOf("geomarker")>=0) -// m_str_markerLayerName = strname; -// } - -//} - testcontainer::~testcontainer() { delete ui; @@ -185,35 +167,7 @@ void testcontainer::on_pushButton_QTV_test_layer_move_clicked() av = ui->osmmap->osm_layer_set_active("OSM",av==0?-1:0); QMessageBox::information(this,"active",QString("osm_layer_set_active(\"OSM\") returns %1").arg(av)); } -QString testcontainer::map_to_string(const QMap & m) -{ - QString s; - for(QMap::const_iterator p = m.begin();p!=m.end();++p) - { - s += p.key(); - s += "="; - s += p.value().toString(); - s += ";"; - } - return /*std::move*/(s); -} -QMap testcontainer::string_to_map(const QString & s) -{ - QMap res; - QStringList lst = s.split(";"); - foreach (QString s, lst) - { - int t = s.indexOf("="); - if (t>0 && t< s.size()) - { - QString name = s.left(t).trimmed(); - QString value = s.mid(t+1).trimmed(); - res[name] = value; - } - } - return /*std::move*/(res); -} void testcontainer::on_pushButton_QTV_test_grid_enable_clicked() { //Get the grid plugin's ruler status -- GitLab