增加界面
|
@ -17,21 +17,21 @@
|
||||||
mono_crash.*
|
mono_crash.*
|
||||||
|
|
||||||
# Build results
|
# Build results
|
||||||
**/[Dd]ebug/
|
**/**/[Dd]ebug/
|
||||||
**/[Dd]ebugPublic/
|
**/**/[Dd]ebugPublic/
|
||||||
**/[Rr]elease/
|
**/**/[Rr]elease/
|
||||||
**/[Rr]eleases/
|
**/**/[Rr]eleases/
|
||||||
**/x64/
|
**/**/x64/
|
||||||
**/x86/
|
**/**/x86/
|
||||||
**/[Ww][Ii][Nn]32/
|
**/**/[Ww][Ii][Nn]32/
|
||||||
**/[Aa][Rr][Mm]/
|
**/**/[Aa][Rr][Mm]/
|
||||||
**/[Aa][Rr][Mm]64/
|
**/**/[Aa][Rr][Mm]64/
|
||||||
**/bld/
|
**/**/bld/
|
||||||
**/[Bb]in/
|
**/**/[Bb]in/
|
||||||
**/[Oo]bj/
|
**/**/[Oo]bj/
|
||||||
**/[Oo]ut/
|
**/**/[Oo]ut/
|
||||||
**/[Ll]og/
|
**/**/[Ll]og/
|
||||||
**/[Ll]ogs/
|
**/**/[Ll]ogs/
|
||||||
|
|
||||||
**/Releases
|
**/Releases
|
||||||
# Visual Studio 2015/2017 cache/options directory
|
# Visual Studio 2015/2017 cache/options directory
|
||||||
|
|
|
@ -1,2 +0,0 @@
|
||||||
PlatformToolSet=v143:VCToolArchitecture=Native64Bit:VCToolsVersion=14.40.33807:TargetPlatformVersion=10.0.22621.0:VcpkgTriplet=x64-windows:
|
|
||||||
Release|x64|C:\Users\30453\Desktop\RasterTool\RasterProcessTool\LAMPSARProcessProgram\|
|
|
|
@ -1,15 +0,0 @@
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\BaseTool\BaseTool.cpp;C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\BaseTool.obj
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\BaseTool\EchoDataFormat.cpp;C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\EchoDataFormat.obj
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\BaseTool\FileOperator.cpp;C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\FileOperator.obj
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\BaseTool\GeoOperator.cpp;C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\GeoOperator.obj
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\BaseTool\ImageOperatorBase.cpp;C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\ImageOperatorBase.obj
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\BaseTool\LogInfoCls.cpp;C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\LogInfoCls.obj
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\BaseTool\QToolProcessBarDialog.cpp;C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\QToolProcessBarDialog.obj
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\BaseTool\RasterToolBase.cpp;C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\RasterToolBase.obj
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\BaseTool\SARSimulationImageL1.cpp;C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\SARSimulationImageL1.obj
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\BaseTool\stdafx.cpp;C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\stdafx.obj
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\dllmain.cpp;C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\dllmain.obj
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\pch.cpp;C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\pch.obj
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\ToolAbstract\QToolAbstract.cpp;C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\QToolAbstract.obj
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\qt\moc\moc_QToolAbstract.cpp;C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\moc_QToolAbstract.obj
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\qt\moc\moc_QToolProcessBarDialog.cpp;C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\moc_QToolProcessBarDialog.obj
|
|
|
@ -1,5 +0,0 @@
|
||||||
^C:\USERS\30453\DESKTOP\RASTERTOOL\RASTERPROCESSTOOL\BASECOMMONLIBRARY\X64\RELEASE\BASETOOL.OBJ|C:\USERS\30453\DESKTOP\RASTERTOOL\RASTERPROCESSTOOL\BASECOMMONLIBRARY\X64\RELEASE\DLLMAIN.OBJ|C:\USERS\30453\DESKTOP\RASTERTOOL\RASTERPROCESSTOOL\BASECOMMONLIBRARY\X64\RELEASE\ECHODATAFORMAT.OBJ|C:\USERS\30453\DESKTOP\RASTERTOOL\RASTERPROCESSTOOL\BASECOMMONLIBRARY\X64\RELEASE\FILEOPERATOR.OBJ|C:\USERS\30453\DESKTOP\RASTERTOOL\RASTERPROCESSTOOL\BASECOMMONLIBRARY\X64\RELEASE\GEOOPERATOR.OBJ|C:\USERS\30453\DESKTOP\RASTERTOOL\RASTERPROCESSTOOL\BASECOMMONLIBRARY\X64\RELEASE\IMAGEOPERATORBASE.OBJ|C:\USERS\30453\DESKTOP\RASTERTOOL\RASTERPROCESSTOOL\BASECOMMONLIBRARY\X64\RELEASE\LOGINFOCLS.OBJ|C:\USERS\30453\DESKTOP\RASTERTOOL\RASTERPROCESSTOOL\BASECOMMONLIBRARY\X64\RELEASE\MOC_QTOOLABSTRACT.OBJ|C:\USERS\30453\DESKTOP\RASTERTOOL\RASTERPROCESSTOOL\BASECOMMONLIBRARY\X64\RELEASE\MOC_QTOOLPROCESSBARDIALOG.OBJ|C:\USERS\30453\DESKTOP\RASTERTOOL\RASTERPROCESSTOOL\BASECOMMONLIBRARY\X64\RELEASE\PCH.OBJ|C:\USERS\30453\DESKTOP\RASTERTOOL\RASTERPROCESSTOOL\BASECOMMONLIBRARY\X64\RELEASE\QTOOLABSTRACT.OBJ|C:\USERS\30453\DESKTOP\RASTERTOOL\RASTERPROCESSTOOL\BASECOMMONLIBRARY\X64\RELEASE\QTOOLPROCESSBARDIALOG.OBJ|C:\USERS\30453\DESKTOP\RASTERTOOL\RASTERPROCESSTOOL\BASECOMMONLIBRARY\X64\RELEASE\RASTERTOOLBASE.OBJ|C:\USERS\30453\DESKTOP\RASTERTOOL\RASTERPROCESSTOOL\BASECOMMONLIBRARY\X64\RELEASE\SARSIMULATIONIMAGEL1.OBJ|C:\USERS\30453\DESKTOP\RASTERTOOL\RASTERPROCESSTOOL\BASECOMMONLIBRARY\X64\RELEASE\STDAFX.OBJ
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\LAMPSARProcessProgram\x64\Release\BaseCommonLibrary.lib
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\LAMPSARProcessProgram\x64\Release\BaseCommonLibrary.EXP
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\BaseCommonLibrary.IPDB
|
|
||||||
C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\BaseCommonLibrary.iobj
|
|
|
@ -1,11 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project>
|
|
||||||
<ProjectOutputs>
|
|
||||||
<ProjectOutput>
|
|
||||||
<FullPath>C:\Users\30453\Desktop\RasterTool\RasterProcessTool\LAMPSARProcessProgram\x64\Release\BaseCommonLibrary.dll</FullPath>
|
|
||||||
</ProjectOutput>
|
|
||||||
</ProjectOutputs>
|
|
||||||
<ContentFiles />
|
|
||||||
<SatelliteDlls />
|
|
||||||
<NonRecipeFileRefs />
|
|
||||||
</Project>
|
|
|
@ -1,97 +0,0 @@
|
||||||
/****************************************************************************
|
|
||||||
** Meta object code from reading C++ file 'QToolProcessBarDialog.h'
|
|
||||||
**
|
|
||||||
** Created by: The Qt Meta Object Compiler version 67 (Qt 5.15.13)
|
|
||||||
**
|
|
||||||
** WARNING! All changes made in this file will be lost!
|
|
||||||
*****************************************************************************/
|
|
||||||
|
|
||||||
#include <memory>
|
|
||||||
#include "../../../../BaseTool/QToolProcessBarDialog.h"
|
|
||||||
#include <QtCore/qbytearray.h>
|
|
||||||
#include <QtCore/qmetatype.h>
|
|
||||||
#if !defined(Q_MOC_OUTPUT_REVISION)
|
|
||||||
#error "The header file 'QToolProcessBarDialog.h' doesn't include <QObject>."
|
|
||||||
#elif Q_MOC_OUTPUT_REVISION != 67
|
|
||||||
#error "This file was generated using the moc from 5.15.13. It"
|
|
||||||
#error "cannot be used with the include files from this version of Qt."
|
|
||||||
#error "(The moc has changed too much.)"
|
|
||||||
#endif
|
|
||||||
|
|
||||||
QT_BEGIN_MOC_NAMESPACE
|
|
||||||
QT_WARNING_PUSH
|
|
||||||
QT_WARNING_DISABLE_DEPRECATED
|
|
||||||
struct qt_meta_stringdata_QToolProcessBarDialog_t {
|
|
||||||
QByteArrayData data[1];
|
|
||||||
char stringdata0[22];
|
|
||||||
};
|
|
||||||
#define QT_MOC_LITERAL(idx, ofs, len) \
|
|
||||||
Q_STATIC_BYTE_ARRAY_DATA_HEADER_INITIALIZER_WITH_OFFSET(len, \
|
|
||||||
qptrdiff(offsetof(qt_meta_stringdata_QToolProcessBarDialog_t, stringdata0) + ofs \
|
|
||||||
- idx * sizeof(QByteArrayData)) \
|
|
||||||
)
|
|
||||||
static const qt_meta_stringdata_QToolProcessBarDialog_t qt_meta_stringdata_QToolProcessBarDialog = {
|
|
||||||
{
|
|
||||||
QT_MOC_LITERAL(0, 0, 21) // "QToolProcessBarDialog"
|
|
||||||
|
|
||||||
},
|
|
||||||
"QToolProcessBarDialog"
|
|
||||||
};
|
|
||||||
#undef QT_MOC_LITERAL
|
|
||||||
|
|
||||||
static const uint qt_meta_data_QToolProcessBarDialog[] = {
|
|
||||||
|
|
||||||
// content:
|
|
||||||
8, // revision
|
|
||||||
0, // classname
|
|
||||||
0, 0, // classinfo
|
|
||||||
0, 0, // methods
|
|
||||||
0, 0, // properties
|
|
||||||
0, 0, // enums/sets
|
|
||||||
0, 0, // constructors
|
|
||||||
0, // flags
|
|
||||||
0, // signalCount
|
|
||||||
|
|
||||||
0 // eod
|
|
||||||
};
|
|
||||||
|
|
||||||
void QToolProcessBarDialog::qt_static_metacall(QObject *_o, QMetaObject::Call _c, int _id, void **_a)
|
|
||||||
{
|
|
||||||
(void)_o;
|
|
||||||
(void)_id;
|
|
||||||
(void)_c;
|
|
||||||
(void)_a;
|
|
||||||
}
|
|
||||||
|
|
||||||
QT_INIT_METAOBJECT const QMetaObject QToolProcessBarDialog::staticMetaObject = { {
|
|
||||||
QMetaObject::SuperData::link<QDialog::staticMetaObject>(),
|
|
||||||
qt_meta_stringdata_QToolProcessBarDialog.data,
|
|
||||||
qt_meta_data_QToolProcessBarDialog,
|
|
||||||
qt_static_metacall,
|
|
||||||
nullptr,
|
|
||||||
nullptr
|
|
||||||
} };
|
|
||||||
|
|
||||||
|
|
||||||
const QMetaObject *QToolProcessBarDialog::metaObject() const
|
|
||||||
{
|
|
||||||
return QObject::d_ptr->metaObject ? QObject::d_ptr->dynamicMetaObject() : &staticMetaObject;
|
|
||||||
}
|
|
||||||
|
|
||||||
void *QToolProcessBarDialog::qt_metacast(const char *_clname)
|
|
||||||
{
|
|
||||||
if (!_clname) return nullptr;
|
|
||||||
if (!strcmp(_clname, qt_meta_stringdata_QToolProcessBarDialog.stringdata0))
|
|
||||||
return static_cast<void*>(this);
|
|
||||||
if (!strcmp(_clname, "ShowProessAbstract"))
|
|
||||||
return static_cast< ShowProessAbstract*>(this);
|
|
||||||
return QDialog::qt_metacast(_clname);
|
|
||||||
}
|
|
||||||
|
|
||||||
int QToolProcessBarDialog::qt_metacall(QMetaObject::Call _c, int _id, void **_a)
|
|
||||||
{
|
|
||||||
_id = QDialog::qt_metacall(_c, _id, _a);
|
|
||||||
return _id;
|
|
||||||
}
|
|
||||||
QT_WARNING_POP
|
|
||||||
QT_END_MOC_NAMESPACE
|
|
|
@ -1,26 +0,0 @@
|
||||||
QMAKE_CXX.QT_COMPILER_STDCXX = 199711L
|
|
||||||
QMAKE_CXX.QMAKE_MSC_VER = 1940
|
|
||||||
QMAKE_CXX.QMAKE_MSC_FULL_VER = 194033813
|
|
||||||
QMAKE_CXX.COMPILER_MACROS = \
|
|
||||||
QT_COMPILER_STDCXX \
|
|
||||||
QMAKE_MSC_VER \
|
|
||||||
QMAKE_MSC_FULL_VER
|
|
||||||
QMAKE_CXX.INCDIRS = \
|
|
||||||
./BaseTool \
|
|
||||||
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.40.33807\\include" \
|
|
||||||
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.40.33807\\atlmfc\\include" \
|
|
||||||
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\VS\\include" \
|
|
||||||
"C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\ucrt" \
|
|
||||||
"C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\um" \
|
|
||||||
"C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\shared" \
|
|
||||||
"C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\winrt" \
|
|
||||||
"C:\\Program Files (x86)\\Windows Kits\\10\\Include\\10.0.22621.0\\cppwinrt" \
|
|
||||||
"C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\Include\\um" \
|
|
||||||
C:\\vcpkg\\installed\\x64-windows\\include
|
|
||||||
QMAKE_CXX.LIBDIRS = \
|
|
||||||
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.40.33807\\lib\\x64" \
|
|
||||||
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Tools\\MSVC\\14.40.33807\\atlmfc\\lib\\x64" \
|
|
||||||
"C:\\Program Files\\Microsoft Visual Studio\\2022\\Community\\VC\\Auxiliary\\VS\\lib\\x64" \
|
|
||||||
"C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.22621.0\\ucrt\\x64" \
|
|
||||||
"C:\\Program Files (x86)\\Windows Kits\\10\\lib\\10.0.22621.0\\um\\x64" \
|
|
||||||
"C:\\Program Files (x86)\\Windows Kits\\NETFXSDK\\4.8\\lib\\um\\x64"
|
|
|
@ -1 +0,0 @@
|
||||||
This is a dummy file needed to create ./moc_predefs.h
|
|
|
@ -1,25 +0,0 @@
|
||||||
QT_SYSROOT:
|
|
||||||
QT_INSTALL_PREFIX:C:/vcpkg/installed/x64-windows
|
|
||||||
QT_INSTALL_ARCHDATA:C:/vcpkg/installed/x64-windows/tools/qt5
|
|
||||||
QT_INSTALL_DATA:C:/vcpkg/installed/x64-windows/share/qt5
|
|
||||||
QT_INSTALL_DOCS:C:/vcpkg/installed/x64-windows/share/qt5/doc
|
|
||||||
QT_INSTALL_HEADERS:C:/vcpkg/installed/x64-windows/include/qt5
|
|
||||||
QT_INSTALL_LIBS:C:/vcpkg/installed/x64-windows/lib
|
|
||||||
QT_INSTALL_LIBEXECS:C:/vcpkg/installed/x64-windows/tools/qt5
|
|
||||||
QT_INSTALL_BINS:C:/vcpkg/installed/x64-windows/bin
|
|
||||||
QT_INSTALL_TESTS:C:/vcpkg/installed/x64-windows/tests
|
|
||||||
QT_INSTALL_PLUGINS:C:/vcpkg/installed/x64-windows/plugins
|
|
||||||
QT_INSTALL_IMPORTS:C:/vcpkg/installed/x64-windows/tools/qt5/imports
|
|
||||||
QT_INSTALL_QML:C:/vcpkg/installed/x64-windows/qml
|
|
||||||
QT_INSTALL_TRANSLATIONS:C:/vcpkg/installed/x64-windows/share/qt5/translations
|
|
||||||
QT_INSTALL_CONFIGURATION:
|
|
||||||
QT_INSTALL_EXAMPLES:C:/vcpkg/installed/x64-windows/share/qt5/examples
|
|
||||||
QT_INSTALL_DEMOS:C:/vcpkg/installed/x64-windows/share/qt5/examples
|
|
||||||
QT_HOST_PREFIX:C:/vcpkg/installed/x64-windows/tools/qt5
|
|
||||||
QT_HOST_DATA:C:/vcpkg/installed/x64-windows/tools/qt5
|
|
||||||
QT_HOST_BINS:C:/vcpkg/installed/x64-windows/tools/qt5/bin
|
|
||||||
QT_HOST_LIBS:C:/vcpkg/installed/x64-windows/tools/qt5/lib
|
|
||||||
QMAKE_SPEC:win32-msvc
|
|
||||||
QMAKE_XSPEC:win32-msvc
|
|
||||||
QMAKE_VERSION:3.1
|
|
||||||
QT_VERSION:5.15.13
|
|
|
@ -1,36 +0,0 @@
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
||||||
CONFIG += no_fixpath
|
|
||||||
QT = core xml sql opengl gui svg xmlpatterns widgets location positioning openglextensions charts
|
|
|
@ -1,88 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup Label="ProjectConfigurations">
|
|
||||||
<ProjectConfiguration Include="Release|x64">
|
|
||||||
<Configuration>Release</Configuration>
|
|
||||||
<Platform>x64</Platform>
|
|
||||||
</ProjectConfiguration>
|
|
||||||
</ItemGroup>
|
|
||||||
<PropertyGroup Label="Globals">
|
|
||||||
<ProjectGuid></ProjectGuid>
|
|
||||||
<RootNamespace>qtvars</RootNamespace>
|
|
||||||
<Keyword>Qt4VSv1.0</Keyword>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
|
||||||
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
|
||||||
<PlatformToolset>v143</PlatformToolset>
|
|
||||||
<OutputDirectory>.\</OutputDirectory>
|
|
||||||
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
|
|
||||||
<CharacterSet>NotSet</CharacterSet>
|
|
||||||
<ConfigurationType>Application</ConfigurationType>
|
|
||||||
<PrimaryOutput>qtvars</PrimaryOutput>
|
|
||||||
</PropertyGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
|
||||||
<ImportGroup Label="ExtensionSettings" />
|
|
||||||
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
|
||||||
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
|
|
||||||
</ImportGroup>
|
|
||||||
<PropertyGroup Label="UserMacros" />
|
|
||||||
<PropertyGroup>
|
|
||||||
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">.\</OutDir>
|
|
||||||
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">qtvars</TargetName>
|
|
||||||
<IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</IgnoreImportLibrary>
|
|
||||||
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
|
||||||
</PropertyGroup>
|
|
||||||
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
|
||||||
<ClCompile>
|
|
||||||
<AdditionalIncludeDirectories>C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\qt\qmake;C:\vcpkg\installed\x64-windows\include\qt5;C:\vcpkg\installed\x64-windows\include\qt5\QtXml;C:\vcpkg\installed\x64-windows\include\qt5\QtSql;C:\vcpkg\installed\x64-windows\include\qt5\QtOpenGL;C:\vcpkg\installed\x64-windows\include\qt5\QtSvg;C:\vcpkg\installed\x64-windows\include\qt5\QtCharts;C:\vcpkg\installed\x64-windows\include\qt5\QtWidgets;C:\vcpkg\installed\x64-windows\include\qt5\QtLocation;C:\vcpkg\installed\x64-windows\include\qt5\QtPositioningQuick;C:\vcpkg\installed\x64-windows\include\qt5\QtQuick;C:\vcpkg\installed\x64-windows\include\qt5\QtOpenGLExtensions;C:\vcpkg\installed\x64-windows\include\qt5\QtGui;C:\vcpkg\installed\x64-windows\include\qt5\QtXmlPatterns;C:\vcpkg\installed\x64-windows\include\qt5\QtQmlModels;C:\vcpkg\installed\x64-windows\include\qt5\QtQml;C:\vcpkg\installed\x64-windows\include\qt5\QtNetwork;C:\vcpkg\installed\x64-windows\include\qt5\QtPositioning;C:\vcpkg\installed\x64-windows\include\qt5\QtCore;C:\Users\30453\Desktop\RasterTool\RasterProcessTool\BaseCommonLibrary\x64\Release\qt\qmake;C:\vcpkg\installed\x64-windows\tools\qt5\mkspecs\win32-msvc;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
|
||||||
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus %(AdditionalOptions)</AdditionalOptions>
|
|
||||||
<AssemblerListingLocation>.\</AssemblerListingLocation>
|
|
||||||
<BrowseInformation>false</BrowseInformation>
|
|
||||||
<DebugInformationFormat>None</DebugInformationFormat>
|
|
||||||
<ExceptionHandling>Sync</ExceptionHandling>
|
|
||||||
<ObjectFileName>.\</ObjectFileName>
|
|
||||||
<Optimization>MaxSpeed</Optimization>
|
|
||||||
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;QT_NO_DEBUG;QT_XML_LIB;QT_SQL_LIB;QT_OPENGL_LIB;QT_SVG_LIB;QT_CHARTS_LIB;QT_WIDGETS_LIB;QT_LOCATION_LIB;QT_POSITIONINGQUICK_LIB;QT_QUICK_LIB;QT_OPENGLEXTENSIONS_LIB;QT_GUI_LIB;QT_XMLPATTERNS_LIB;QT_QMLMODELS_LIB;QT_QML_LIB;QT_NETWORK_LIB;QT_POSITIONING_LIB;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
<PreprocessToFile>false</PreprocessToFile>
|
|
||||||
<ProgramDataBaseFileName></ProgramDataBaseFileName>
|
|
||||||
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
|
||||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
|
||||||
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
|
||||||
<UseFullPaths>false</UseFullPaths>
|
|
||||||
<WarningLevel>TurnOffAllWarnings</WarningLevel>
|
|
||||||
</ClCompile>
|
|
||||||
<Link>
|
|
||||||
<AdditionalDependencies>C:\vcpkg\installed\x64-windows\lib\Qt5Xml.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Sql.lib;C:\vcpkg\installed\x64-windows\lib\Qt5OpenGL.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Svg.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Charts.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Widgets.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Location.lib;C:\vcpkg\installed\x64-windows\lib\Qt5PositioningQuick.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Quick.lib;C:\vcpkg\installed\x64-windows\lib\Qt5OpenGLExtensions.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;C:\vcpkg\installed\x64-windows\lib\bz2.lib;C:\vcpkg\installed\x64-windows\lib\libpng16.lib;C:\vcpkg\installed\x64-windows\lib\zlib.lib;C:\vcpkg\installed\x64-windows\lib\zstd.lib;C:\vcpkg\installed\x64-windows\lib\icuin.lib;C:\vcpkg\installed\x64-windows\lib\icuuc.lib;C:\vcpkg\installed\x64-windows\lib\icuio.lib;C:\vcpkg\installed\x64-windows\lib\icudt.lib;advapi32.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Gui.lib;C:\vcpkg\installed\x64-windows\lib\Qt5XmlPatterns.lib;C:\vcpkg\installed\x64-windows\lib\Qt5QmlModels.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Qml.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Network.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Positioning.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Core.lib;C:\vcpkg\installed\x64-windows\lib\manual-link\qtmain.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;C:\vcpkg\installed\x64-windows\lib\bz2.lib;C:\vcpkg\installed\x64-windows\lib\libpng16.lib;C:\vcpkg\installed\x64-windows\lib\zlib.lib;C:\vcpkg\installed\x64-windows\lib\zstd.lib;C:\vcpkg\installed\x64-windows\lib\icuin.lib;C:\vcpkg\installed\x64-windows\lib\icuuc.lib;C:\vcpkg\installed\x64-windows\lib\icuio.lib;C:\vcpkg\installed\x64-windows\lib\icudt.lib;advapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
|
||||||
<AdditionalLibraryDirectories>C:\vcpkg\installed\x64-windows\lib;C:\vcpkg\installed\x64-windows\lib\manual-link;C:\vcpkg\installed\x64-windows\lib;C:\vcpkg\installed\x64-windows\lib\manual-link;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
|
||||||
<AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
|
|
||||||
<DataExecutionPrevention>true</DataExecutionPrevention>
|
|
||||||
<GenerateDebugInformation>false</GenerateDebugInformation>
|
|
||||||
<IgnoreImportLibrary>true</IgnoreImportLibrary>
|
|
||||||
<LinkIncremental>false</LinkIncremental>
|
|
||||||
<OptimizeReferences>true</OptimizeReferences>
|
|
||||||
<OutputFile>$(OutDir)\qtvars.exe</OutputFile>
|
|
||||||
<RandomizedBaseAddress>true</RandomizedBaseAddress>
|
|
||||||
<SubSystem>Windows</SubSystem>
|
|
||||||
<SuppressStartupBanner>true</SuppressStartupBanner>
|
|
||||||
</Link>
|
|
||||||
<Midl>
|
|
||||||
<DefaultCharType>Unsigned</DefaultCharType>
|
|
||||||
<EnableErrorChecks>None</EnableErrorChecks>
|
|
||||||
<WarningLevel>0</WarningLevel>
|
|
||||||
</Midl>
|
|
||||||
<ResourceCompile>
|
|
||||||
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;QT_NO_DEBUG;QT_XML_LIB;QT_SQL_LIB;QT_OPENGL_LIB;QT_SVG_LIB;QT_CHARTS_LIB;QT_WIDGETS_LIB;QT_LOCATION_LIB;QT_POSITIONINGQUICK_LIB;QT_QUICK_LIB;QT_OPENGLEXTENSIONS_LIB;QT_GUI_LIB;QT_XMLPATTERNS_LIB;QT_QMLMODELS_LIB;QT_QML_LIB;QT_NETWORK_LIB;QT_POSITIONING_LIB;QT_CORE_LIB;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
|
||||||
</ResourceCompile>
|
|
||||||
</ItemDefinitionGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<CustomBuild Include="moc_predefs.h.cbt">
|
|
||||||
<FileType>Document</FileType>
|
|
||||||
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">C:\vcpkg\installed\x64-windows\tools\qt5\mkspecs\features\data\dummy.cpp;%(AdditionalInputs)</AdditionalInputs>
|
|
||||||
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">cl -BxC:\vcpkg\installed\x64-windows\tools\qt5\bin\qmake.exe -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -O2 -MD -W0 -E C:\vcpkg\installed\x64-windows\tools\qt5\mkspecs\features\data\dummy.cpp 2>NUL >moc_predefs.h</Command>
|
|
||||||
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate moc_predefs.h</Message>
|
|
||||||
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">moc_predefs.h;%(Outputs)</Outputs>
|
|
||||||
</CustomBuild>
|
|
||||||
</ItemGroup>
|
|
||||||
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
|
||||||
<ImportGroup Label="ExtensionTargets" />
|
|
||||||
</Project>
|
|
|
@ -1,14 +0,0 @@
|
||||||
<?xml version="1.0" encoding="utf-8"?>
|
|
||||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<ItemGroup>
|
|
||||||
<Filter Include="Generated Files">
|
|
||||||
<UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>
|
|
||||||
<Extensions>cpp;c;cxx;moc;h;def;odl;idl;res;</Extensions>
|
|
||||||
</Filter>
|
|
||||||
</ItemGroup>
|
|
||||||
<ItemGroup>
|
|
||||||
<CustomBuild Include="moc_predefs.h.cbt">
|
|
||||||
<Filter>Generated Files</Filter>
|
|
||||||
</CustomBuild>
|
|
||||||
</ItemGroup>
|
|
||||||
</Project>
|
|
|
@ -1,41 +0,0 @@
|
||||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<Qt_DEFINES_>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;QT_NO_DEBUG;QT_XML_LIB;QT_SQL_LIB;QT_OPENGL_LIB;QT_SVG_LIB;QT_CHARTS_LIB;QT_WIDGETS_LIB;QT_LOCATION_LIB;QT_POSITIONINGQUICK_LIB;QT_QUICK_LIB;QT_OPENGLEXTENSIONS_LIB;QT_GUI_LIB;QT_XMLPATTERNS_LIB;QT_QMLMODELS_LIB;QT_QML_LIB;QT_NETWORK_LIB;QT_POSITIONING_LIB;QT_CORE_LIB</Qt_DEFINES_>
|
|
||||||
<Qt_INCLUDEPATH_>C:\vcpkg\installed\x64-windows\include\qt5;C:\vcpkg\installed\x64-windows\include\qt5\QtXml;C:\vcpkg\installed\x64-windows\include\qt5\QtSql;C:\vcpkg\installed\x64-windows\include\qt5\QtOpenGL;C:\vcpkg\installed\x64-windows\include\qt5\QtSvg;C:\vcpkg\installed\x64-windows\include\qt5\QtCharts;C:\vcpkg\installed\x64-windows\include\qt5\QtWidgets;C:\vcpkg\installed\x64-windows\include\qt5\QtLocation;C:\vcpkg\installed\x64-windows\include\qt5\QtPositioningQuick;C:\vcpkg\installed\x64-windows\include\qt5\QtQuick;C:\vcpkg\installed\x64-windows\include\qt5\QtOpenGLExtensions;C:\vcpkg\installed\x64-windows\include\qt5\QtGui;C:\vcpkg\installed\x64-windows\include\qt5\QtXmlPatterns;C:\vcpkg\installed\x64-windows\include\qt5\QtQmlModels;C:\vcpkg\installed\x64-windows\include\qt5\QtQml;C:\vcpkg\installed\x64-windows\include\qt5\QtNetwork;C:\vcpkg\installed\x64-windows\include\qt5\QtPositioning;C:\vcpkg\installed\x64-windows\include\qt5\QtCore;C:\vcpkg\installed\x64-windows\tools\qt5\mkspecs\win32-msvc</Qt_INCLUDEPATH_>
|
|
||||||
<Qt_STDCPP_></Qt_STDCPP_>
|
|
||||||
<Qt_RUNTIME_>MultiThreadedDLL</Qt_RUNTIME_>
|
|
||||||
<Qt_CL_OPTIONS_>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus</Qt_CL_OPTIONS_>
|
|
||||||
<Qt_LIBS_>C:\vcpkg\installed\x64-windows\lib\Qt5Xml.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Sql.lib;C:\vcpkg\installed\x64-windows\lib\Qt5OpenGL.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Svg.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Charts.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Widgets.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Location.lib;C:\vcpkg\installed\x64-windows\lib\Qt5PositioningQuick.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Quick.lib;C:\vcpkg\installed\x64-windows\lib\Qt5OpenGLExtensions.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;C:\vcpkg\installed\x64-windows\lib\bz2.lib;C:\vcpkg\installed\x64-windows\lib\libpng16.lib;C:\vcpkg\installed\x64-windows\lib\zlib.lib;C:\vcpkg\installed\x64-windows\lib\zstd.lib;C:\vcpkg\installed\x64-windows\lib\icuin.lib;C:\vcpkg\installed\x64-windows\lib\icuuc.lib;C:\vcpkg\installed\x64-windows\lib\icuio.lib;C:\vcpkg\installed\x64-windows\lib\icudt.lib;advapi32.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Gui.lib;C:\vcpkg\installed\x64-windows\lib\Qt5XmlPatterns.lib;C:\vcpkg\installed\x64-windows\lib\Qt5QmlModels.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Qml.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Network.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Positioning.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Core.lib;C:\vcpkg\installed\x64-windows\lib\manual-link\qtmain.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;C:\vcpkg\installed\x64-windows\lib\bz2.lib;C:\vcpkg\installed\x64-windows\lib\libpng16.lib;C:\vcpkg\installed\x64-windows\lib\zlib.lib;C:\vcpkg\installed\x64-windows\lib\zstd.lib;C:\vcpkg\installed\x64-windows\lib\icuin.lib;C:\vcpkg\installed\x64-windows\lib\icuuc.lib;C:\vcpkg\installed\x64-windows\lib\icuio.lib;C:\vcpkg\installed\x64-windows\lib\icudt.lib;advapi32.lib</Qt_LIBS_>
|
|
||||||
<Qt_LINK_OPTIONS_>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'"</Qt_LINK_OPTIONS_>
|
|
||||||
<QMake_QT_SYSROOT_></QMake_QT_SYSROOT_>
|
|
||||||
<QMake_QT_INSTALL_PREFIX_>C:/vcpkg/installed/x64-windows</QMake_QT_INSTALL_PREFIX_>
|
|
||||||
<QMake_QT_INSTALL_ARCHDATA_>C:/vcpkg/installed/x64-windows/tools/qt5</QMake_QT_INSTALL_ARCHDATA_>
|
|
||||||
<QMake_QT_INSTALL_DATA_>C:/vcpkg/installed/x64-windows/share/qt5</QMake_QT_INSTALL_DATA_>
|
|
||||||
<QMake_QT_INSTALL_DOCS_>C:/vcpkg/installed/x64-windows/share/qt5/doc</QMake_QT_INSTALL_DOCS_>
|
|
||||||
<QMake_QT_INSTALL_HEADERS_>C:/vcpkg/installed/x64-windows/include/qt5</QMake_QT_INSTALL_HEADERS_>
|
|
||||||
<QMake_QT_INSTALL_LIBS_>C:/vcpkg/installed/x64-windows/lib</QMake_QT_INSTALL_LIBS_>
|
|
||||||
<QMake_QT_INSTALL_LIBEXECS_>C:/vcpkg/installed/x64-windows/tools/qt5</QMake_QT_INSTALL_LIBEXECS_>
|
|
||||||
<QMake_QT_INSTALL_BINS_>C:/vcpkg/installed/x64-windows/bin</QMake_QT_INSTALL_BINS_>
|
|
||||||
<QMake_QT_INSTALL_TESTS_>C:/vcpkg/installed/x64-windows/tests</QMake_QT_INSTALL_TESTS_>
|
|
||||||
<QMake_QT_INSTALL_PLUGINS_>C:/vcpkg/installed/x64-windows/plugins</QMake_QT_INSTALL_PLUGINS_>
|
|
||||||
<QMake_QT_INSTALL_IMPORTS_>C:/vcpkg/installed/x64-windows/tools/qt5/imports</QMake_QT_INSTALL_IMPORTS_>
|
|
||||||
<QMake_QT_INSTALL_QML_>C:/vcpkg/installed/x64-windows/qml</QMake_QT_INSTALL_QML_>
|
|
||||||
<QMake_QT_INSTALL_TRANSLATIONS_>C:/vcpkg/installed/x64-windows/share/qt5/translations</QMake_QT_INSTALL_TRANSLATIONS_>
|
|
||||||
<QMake_QT_INSTALL_CONFIGURATION_></QMake_QT_INSTALL_CONFIGURATION_>
|
|
||||||
<QMake_QT_INSTALL_EXAMPLES_>C:/vcpkg/installed/x64-windows/share/qt5/examples</QMake_QT_INSTALL_EXAMPLES_>
|
|
||||||
<QMake_QT_INSTALL_DEMOS_>C:/vcpkg/installed/x64-windows/share/qt5/examples</QMake_QT_INSTALL_DEMOS_>
|
|
||||||
<QMake_QT_HOST_PREFIX_>C:/vcpkg/installed/x64-windows/tools/qt5</QMake_QT_HOST_PREFIX_>
|
|
||||||
<QMake_QT_HOST_DATA_>C:/vcpkg/installed/x64-windows/tools/qt5</QMake_QT_HOST_DATA_>
|
|
||||||
<QMake_QT_HOST_BINS_>C:/vcpkg/installed/x64-windows/tools/qt5/bin</QMake_QT_HOST_BINS_>
|
|
||||||
<QMake_QT_HOST_LIBS_>C:/vcpkg/installed/x64-windows/tools/qt5/lib</QMake_QT_HOST_LIBS_>
|
|
||||||
<QMake_QMAKE_SPEC_>win32-msvc</QMake_QMAKE_SPEC_>
|
|
||||||
<QMake_QMAKE_XSPEC_>win32-msvc</QMake_QMAKE_XSPEC_>
|
|
||||||
<QMake_QMAKE_VERSION_>3.1</QMake_QMAKE_VERSION_>
|
|
||||||
<QMake_QT_VERSION_>5.15.13</QMake_QT_VERSION_>
|
|
||||||
<QtBkup_QtHash>jVJBbsMwDPuKfpDTjj24suZqUyRXUrYWw9D//2JOkKHALsvBgCGTFEn4iytpct5PaSbxuOYLoDnBbRaIq4B10ibQFob4aOu4l0xyDfjk2igDxLAkm0K34PXC2nYe3ZI0xigAL8UH+My6nUqvrBSnqbu9EebESfM23CSa29InFLS5s9BA0QAiRZg/UQGsKEul4elyVKrUuq0ospMr+zBgzhQQWbH3o1JStC2lUWTRWryCL6PMmY7yd7jw2YvfAeVhfS3wcC3PLDsRhtY/7BH7fXoSR3mk4xPgGn99O+bhj8rveiehEvT9Aw==</QtBkup_QtHash>
|
|
||||||
<QtVersion>5.15.13</QtVersion>
|
|
||||||
<QtVersionMajor>5</QtVersionMajor>
|
|
||||||
<QtVersionMinor>15</QtVersionMinor>
|
|
||||||
<QtVersionPatch>13</QtVersionPatch>
|
|
||||||
</PropertyGroup>
|
|
||||||
</Project>
|
|
|
@ -1,41 +0,0 @@
|
||||||
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
|
||||||
<PropertyGroup>
|
|
||||||
<Qt_DEFINES_>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;QT_NO_DEBUG;QT_XML_LIB;QT_SQL_LIB;QT_OPENGL_LIB;QT_SVG_LIB;QT_CHARTS_LIB;QT_WIDGETS_LIB;QT_LOCATION_LIB;QT_POSITIONINGQUICK_LIB;QT_QUICK_LIB;QT_OPENGLEXTENSIONS_LIB;QT_GUI_LIB;QT_XMLPATTERNS_LIB;QT_QMLMODELS_LIB;QT_QML_LIB;QT_NETWORK_LIB;QT_POSITIONING_LIB;QT_CORE_LIB</Qt_DEFINES_>
|
|
||||||
<Qt_INCLUDEPATH_>C:\vcpkg\installed\x64-windows\include\qt5;C:\vcpkg\installed\x64-windows\include\qt5\QtXml;C:\vcpkg\installed\x64-windows\include\qt5\QtSql;C:\vcpkg\installed\x64-windows\include\qt5\QtOpenGL;C:\vcpkg\installed\x64-windows\include\qt5\QtSvg;C:\vcpkg\installed\x64-windows\include\qt5\QtCharts;C:\vcpkg\installed\x64-windows\include\qt5\QtWidgets;C:\vcpkg\installed\x64-windows\include\qt5\QtLocation;C:\vcpkg\installed\x64-windows\include\qt5\QtPositioningQuick;C:\vcpkg\installed\x64-windows\include\qt5\QtQuick;C:\vcpkg\installed\x64-windows\include\qt5\QtOpenGLExtensions;C:\vcpkg\installed\x64-windows\include\qt5\QtGui;C:\vcpkg\installed\x64-windows\include\qt5\QtXmlPatterns;C:\vcpkg\installed\x64-windows\include\qt5\QtQmlModels;C:\vcpkg\installed\x64-windows\include\qt5\QtQml;C:\vcpkg\installed\x64-windows\include\qt5\QtNetwork;C:\vcpkg\installed\x64-windows\include\qt5\QtPositioning;C:\vcpkg\installed\x64-windows\include\qt5\QtCore;C:\vcpkg\installed\x64-windows\tools\qt5\mkspecs\win32-msvc</Qt_INCLUDEPATH_>
|
|
||||||
<Qt_STDCPP_></Qt_STDCPP_>
|
|
||||||
<Qt_RUNTIME_>MultiThreadedDLL</Qt_RUNTIME_>
|
|
||||||
<Qt_CL_OPTIONS_>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus</Qt_CL_OPTIONS_>
|
|
||||||
<Qt_LIBS_>C:\vcpkg\installed\x64-windows\lib\Qt5Xml.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Sql.lib;C:\vcpkg\installed\x64-windows\lib\Qt5OpenGL.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Svg.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Charts.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Widgets.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Location.lib;C:\vcpkg\installed\x64-windows\lib\Qt5PositioningQuick.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Quick.lib;C:\vcpkg\installed\x64-windows\lib\Qt5OpenGLExtensions.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;C:\vcpkg\installed\x64-windows\lib\bz2.lib;C:\vcpkg\installed\x64-windows\lib\libpng16.lib;C:\vcpkg\installed\x64-windows\lib\zlib.lib;C:\vcpkg\installed\x64-windows\lib\zstd.lib;C:\vcpkg\installed\x64-windows\lib\icuin.lib;C:\vcpkg\installed\x64-windows\lib\icuuc.lib;C:\vcpkg\installed\x64-windows\lib\icuio.lib;C:\vcpkg\installed\x64-windows\lib\icudt.lib;advapi32.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Gui.lib;C:\vcpkg\installed\x64-windows\lib\Qt5XmlPatterns.lib;C:\vcpkg\installed\x64-windows\lib\Qt5QmlModels.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Qml.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Network.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Positioning.lib;C:\vcpkg\installed\x64-windows\lib\Qt5Core.lib;C:\vcpkg\installed\x64-windows\lib\manual-link\qtmain.lib;kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;C:\vcpkg\installed\x64-windows\lib\bz2.lib;C:\vcpkg\installed\x64-windows\lib\libpng16.lib;C:\vcpkg\installed\x64-windows\lib\zlib.lib;C:\vcpkg\installed\x64-windows\lib\zstd.lib;C:\vcpkg\installed\x64-windows\lib\icuin.lib;C:\vcpkg\installed\x64-windows\lib\icuuc.lib;C:\vcpkg\installed\x64-windows\lib\icuio.lib;C:\vcpkg\installed\x64-windows\lib\icudt.lib;advapi32.lib</Qt_LIBS_>
|
|
||||||
<Qt_LINK_OPTIONS_>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'"</Qt_LINK_OPTIONS_>
|
|
||||||
<QMake_QT_SYSROOT_></QMake_QT_SYSROOT_>
|
|
||||||
<QMake_QT_INSTALL_PREFIX_>C:/vcpkg/installed/x64-windows</QMake_QT_INSTALL_PREFIX_>
|
|
||||||
<QMake_QT_INSTALL_ARCHDATA_>C:/vcpkg/installed/x64-windows/tools/qt5</QMake_QT_INSTALL_ARCHDATA_>
|
|
||||||
<QMake_QT_INSTALL_DATA_>C:/vcpkg/installed/x64-windows/share/qt5</QMake_QT_INSTALL_DATA_>
|
|
||||||
<QMake_QT_INSTALL_DOCS_>C:/vcpkg/installed/x64-windows/share/qt5/doc</QMake_QT_INSTALL_DOCS_>
|
|
||||||
<QMake_QT_INSTALL_HEADERS_>C:/vcpkg/installed/x64-windows/include/qt5</QMake_QT_INSTALL_HEADERS_>
|
|
||||||
<QMake_QT_INSTALL_LIBS_>C:/vcpkg/installed/x64-windows/lib</QMake_QT_INSTALL_LIBS_>
|
|
||||||
<QMake_QT_INSTALL_LIBEXECS_>C:/vcpkg/installed/x64-windows/tools/qt5</QMake_QT_INSTALL_LIBEXECS_>
|
|
||||||
<QMake_QT_INSTALL_BINS_>C:/vcpkg/installed/x64-windows/bin</QMake_QT_INSTALL_BINS_>
|
|
||||||
<QMake_QT_INSTALL_TESTS_>C:/vcpkg/installed/x64-windows/tests</QMake_QT_INSTALL_TESTS_>
|
|
||||||
<QMake_QT_INSTALL_PLUGINS_>C:/vcpkg/installed/x64-windows/plugins</QMake_QT_INSTALL_PLUGINS_>
|
|
||||||
<QMake_QT_INSTALL_IMPORTS_>C:/vcpkg/installed/x64-windows/tools/qt5/imports</QMake_QT_INSTALL_IMPORTS_>
|
|
||||||
<QMake_QT_INSTALL_QML_>C:/vcpkg/installed/x64-windows/qml</QMake_QT_INSTALL_QML_>
|
|
||||||
<QMake_QT_INSTALL_TRANSLATIONS_>C:/vcpkg/installed/x64-windows/share/qt5/translations</QMake_QT_INSTALL_TRANSLATIONS_>
|
|
||||||
<QMake_QT_INSTALL_CONFIGURATION_></QMake_QT_INSTALL_CONFIGURATION_>
|
|
||||||
<QMake_QT_INSTALL_EXAMPLES_>C:/vcpkg/installed/x64-windows/share/qt5/examples</QMake_QT_INSTALL_EXAMPLES_>
|
|
||||||
<QMake_QT_INSTALL_DEMOS_>C:/vcpkg/installed/x64-windows/share/qt5/examples</QMake_QT_INSTALL_DEMOS_>
|
|
||||||
<QMake_QT_HOST_PREFIX_>C:/vcpkg/installed/x64-windows/tools/qt5</QMake_QT_HOST_PREFIX_>
|
|
||||||
<QMake_QT_HOST_DATA_>C:/vcpkg/installed/x64-windows/tools/qt5</QMake_QT_HOST_DATA_>
|
|
||||||
<QMake_QT_HOST_BINS_>C:/vcpkg/installed/x64-windows/tools/qt5/bin</QMake_QT_HOST_BINS_>
|
|
||||||
<QMake_QT_HOST_LIBS_>C:/vcpkg/installed/x64-windows/tools/qt5/lib</QMake_QT_HOST_LIBS_>
|
|
||||||
<QMake_QMAKE_SPEC_>win32-msvc</QMake_QMAKE_SPEC_>
|
|
||||||
<QMake_QMAKE_XSPEC_>win32-msvc</QMake_QMAKE_XSPEC_>
|
|
||||||
<QMake_QMAKE_VERSION_>3.1</QMake_QMAKE_VERSION_>
|
|
||||||
<QMake_QT_VERSION_>5.15.13</QMake_QT_VERSION_>
|
|
||||||
<QtBkup_QtHash>jVJBbsMwDPuKfpDTjj24suZqUyRXUrYWw9D//2JOkKHALsvBgCGTFEn4iytpct5PaSbxuOYLoDnBbRaIq4B10ibQFob4aOu4l0xyDfjk2igDxLAkm0K34PXC2nYe3ZI0xigAL8UH+My6nUqvrBSnqbu9EebESfM23CSa29InFLS5s9BA0QAiRZg/UQGsKEul4elyVKrUuq0ospMr+zBgzhQQWbH3o1JStC2lUWTRWryCL6PMmY7yd7jw2YvfAeVhfS3wcC3PLDsRhtY/7BH7fXoSR3mk4xPgGn99O+bhj8rveiehEvT9Aw==</QtBkup_QtHash>
|
|
||||||
<QtVersion>5.15.13</QtVersion>
|
|
||||||
<QtVersionMajor>5</QtVersionMajor>
|
|
||||||
<QtVersionMinor>15</QtVersionMinor>
|
|
||||||
<QtVersionPatch>13</QtVersionPatch>
|
|
||||||
</PropertyGroup>
|
|
||||||
</Project>
|
|
|
@ -1,111 +0,0 @@
|
||||||
/********************************************************************************
|
|
||||||
** Form generated from reading UI file 'QToolProcessBarDialog.ui'
|
|
||||||
**
|
|
||||||
** Created by: Qt User Interface Compiler version 5.15.13
|
|
||||||
**
|
|
||||||
** WARNING! All changes made in this file will be lost when recompiling UI file!
|
|
||||||
********************************************************************************/
|
|
||||||
|
|
||||||
#ifndef UI_QTOOLPROCESSBARDIALOG_H
|
|
||||||
#define UI_QTOOLPROCESSBARDIALOG_H
|
|
||||||
|
|
||||||
#include <QtCore/QVariant>
|
|
||||||
#include <QtWidgets/QApplication>
|
|
||||||
#include <QtWidgets/QDialog>
|
|
||||||
#include <QtWidgets/QGridLayout>
|
|
||||||
#include <QtWidgets/QGroupBox>
|
|
||||||
#include <QtWidgets/QLabel>
|
|
||||||
#include <QtWidgets/QProgressBar>
|
|
||||||
#include <QtWidgets/QPushButton>
|
|
||||||
#include <QtWidgets/QTextEdit>
|
|
||||||
#include <QtWidgets/QVBoxLayout>
|
|
||||||
#include <QtWidgets/QWidget>
|
|
||||||
|
|
||||||
QT_BEGIN_NAMESPACE
|
|
||||||
|
|
||||||
class Ui_QToolProcessBarDialogClass
|
|
||||||
{
|
|
||||||
public:
|
|
||||||
QVBoxLayout *verticalLayout;
|
|
||||||
QWidget *widget;
|
|
||||||
QGridLayout *gridLayout;
|
|
||||||
QPushButton *OKpushButton;
|
|
||||||
QLabel *labelTip;
|
|
||||||
QProgressBar *progressBar;
|
|
||||||
QGroupBox *groupBox;
|
|
||||||
QVBoxLayout *verticalLayout_2;
|
|
||||||
QTextEdit *textEditTip;
|
|
||||||
|
|
||||||
void setupUi(QDialog *QToolProcessBarDialogClass)
|
|
||||||
{
|
|
||||||
if (QToolProcessBarDialogClass->objectName().isEmpty())
|
|
||||||
QToolProcessBarDialogClass->setObjectName(QString::fromUtf8("QToolProcessBarDialogClass"));
|
|
||||||
QToolProcessBarDialogClass->resize(600, 400);
|
|
||||||
verticalLayout = new QVBoxLayout(QToolProcessBarDialogClass);
|
|
||||||
verticalLayout->setSpacing(6);
|
|
||||||
verticalLayout->setContentsMargins(11, 11, 11, 11);
|
|
||||||
verticalLayout->setObjectName(QString::fromUtf8("verticalLayout"));
|
|
||||||
widget = new QWidget(QToolProcessBarDialogClass);
|
|
||||||
widget->setObjectName(QString::fromUtf8("widget"));
|
|
||||||
gridLayout = new QGridLayout(widget);
|
|
||||||
gridLayout->setSpacing(6);
|
|
||||||
gridLayout->setContentsMargins(11, 11, 11, 11);
|
|
||||||
gridLayout->setObjectName(QString::fromUtf8("gridLayout"));
|
|
||||||
OKpushButton = new QPushButton(widget);
|
|
||||||
OKpushButton->setObjectName(QString::fromUtf8("OKpushButton"));
|
|
||||||
OKpushButton->setMinimumSize(QSize(120, 26));
|
|
||||||
OKpushButton->setMaximumSize(QSize(120, 26));
|
|
||||||
|
|
||||||
gridLayout->addWidget(OKpushButton, 1, 2, 1, 1);
|
|
||||||
|
|
||||||
labelTip = new QLabel(widget);
|
|
||||||
labelTip->setObjectName(QString::fromUtf8("labelTip"));
|
|
||||||
|
|
||||||
gridLayout->addWidget(labelTip, 1, 0, 1, 1);
|
|
||||||
|
|
||||||
progressBar = new QProgressBar(widget);
|
|
||||||
progressBar->setObjectName(QString::fromUtf8("progressBar"));
|
|
||||||
progressBar->setValue(24);
|
|
||||||
|
|
||||||
gridLayout->addWidget(progressBar, 2, 0, 1, 2);
|
|
||||||
|
|
||||||
|
|
||||||
verticalLayout->addWidget(widget);
|
|
||||||
|
|
||||||
groupBox = new QGroupBox(QToolProcessBarDialogClass);
|
|
||||||
groupBox->setObjectName(QString::fromUtf8("groupBox"));
|
|
||||||
verticalLayout_2 = new QVBoxLayout(groupBox);
|
|
||||||
verticalLayout_2->setSpacing(6);
|
|
||||||
verticalLayout_2->setContentsMargins(11, 11, 11, 11);
|
|
||||||
verticalLayout_2->setObjectName(QString::fromUtf8("verticalLayout_2"));
|
|
||||||
textEditTip = new QTextEdit(groupBox);
|
|
||||||
textEditTip->setObjectName(QString::fromUtf8("textEditTip"));
|
|
||||||
|
|
||||||
verticalLayout_2->addWidget(textEditTip);
|
|
||||||
|
|
||||||
|
|
||||||
verticalLayout->addWidget(groupBox);
|
|
||||||
|
|
||||||
|
|
||||||
retranslateUi(QToolProcessBarDialogClass);
|
|
||||||
|
|
||||||
QMetaObject::connectSlotsByName(QToolProcessBarDialogClass);
|
|
||||||
} // setupUi
|
|
||||||
|
|
||||||
void retranslateUi(QDialog *QToolProcessBarDialogClass)
|
|
||||||
{
|
|
||||||
QToolProcessBarDialogClass->setWindowTitle(QCoreApplication::translate("QToolProcessBarDialogClass", "QToolProcessBarDialog", nullptr));
|
|
||||||
OKpushButton->setText(QCoreApplication::translate("QToolProcessBarDialogClass", "\351\200\200\345\207\272", nullptr));
|
|
||||||
labelTip->setText(QCoreApplication::translate("QToolProcessBarDialogClass", "\346\217\220\347\244\272", nullptr));
|
|
||||||
groupBox->setTitle(QString());
|
|
||||||
} // retranslateUi
|
|
||||||
|
|
||||||
};
|
|
||||||
|
|
||||||
namespace Ui {
|
|
||||||
class QToolProcessBarDialogClass: public Ui_QToolProcessBarDialogClass {};
|
|
||||||
} // namespace Ui
|
|
||||||
|
|
||||||
QT_END_NAMESPACE
|
|
||||||
|
|
||||||
#endif // UI_QTOOLPROCESSBARDIALOG_H
|
|
|
@ -0,0 +1,63 @@
|
||||||
|
###############################################################################
|
||||||
|
# Set default behavior to automatically normalize line endings.
|
||||||
|
###############################################################################
|
||||||
|
* text=auto
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set default behavior for command prompt diff.
|
||||||
|
#
|
||||||
|
# This is need for earlier builds of msysgit that does not have it on by
|
||||||
|
# default for csharp files.
|
||||||
|
# Note: This is only used by command line
|
||||||
|
###############################################################################
|
||||||
|
#*.cs diff=csharp
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# Set the merge driver for project and solution files
|
||||||
|
#
|
||||||
|
# Merging from the command prompt will add diff markers to the files if there
|
||||||
|
# are conflicts (Merging from VS is not affected by the settings below, in VS
|
||||||
|
# the diff markers are never inserted). Diff markers may cause the following
|
||||||
|
# file extensions to fail to load in VS. An alternative would be to treat
|
||||||
|
# these files as binary and thus will always conflict and require user
|
||||||
|
# intervention with every merge. To do so, just uncomment the entries below
|
||||||
|
###############################################################################
|
||||||
|
#*.sln merge=binary
|
||||||
|
#*.csproj merge=binary
|
||||||
|
#*.vbproj merge=binary
|
||||||
|
#*.vcxproj merge=binary
|
||||||
|
#*.vcproj merge=binary
|
||||||
|
#*.dbproj merge=binary
|
||||||
|
#*.fsproj merge=binary
|
||||||
|
#*.lsproj merge=binary
|
||||||
|
#*.wixproj merge=binary
|
||||||
|
#*.modelproj merge=binary
|
||||||
|
#*.sqlproj merge=binary
|
||||||
|
#*.wwaproj merge=binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# behavior for image files
|
||||||
|
#
|
||||||
|
# image files are treated as binary by default.
|
||||||
|
###############################################################################
|
||||||
|
#*.jpg binary
|
||||||
|
#*.png binary
|
||||||
|
#*.gif binary
|
||||||
|
|
||||||
|
###############################################################################
|
||||||
|
# diff behavior for common document formats
|
||||||
|
#
|
||||||
|
# Convert binary document formats to text before diffing them. This feature
|
||||||
|
# is only available from the command line. Turn it on by uncommenting the
|
||||||
|
# entries below.
|
||||||
|
###############################################################################
|
||||||
|
#*.doc diff=astextplain
|
||||||
|
#*.DOC diff=astextplain
|
||||||
|
#*.docx diff=astextplain
|
||||||
|
#*.DOCX diff=astextplain
|
||||||
|
#*.dot diff=astextplain
|
||||||
|
#*.DOT diff=astextplain
|
||||||
|
#*.pdf diff=astextplain
|
||||||
|
#*.PDF diff=astextplain
|
||||||
|
#*.rtf diff=astextplain
|
||||||
|
#*.RTF diff=astextplain
|
|
@ -0,0 +1,464 @@
|
||||||
|
CMakeCache.txt
|
||||||
|
CMakeFiles
|
||||||
|
CMakeScripts
|
||||||
|
Testing
|
||||||
|
Makefile
|
||||||
|
cmake_install.cmake
|
||||||
|
install_manifest.txt
|
||||||
|
compile_commands.json
|
||||||
|
CTestTestfile.cmake
|
||||||
|
/cmake-build-debug
|
||||||
|
/.idea
|
||||||
|
/.vs
|
||||||
|
*.swp
|
||||||
|
*.stash
|
||||||
|
*.user
|
||||||
|
.DS_Store
|
||||||
|
# ---> C++
|
||||||
|
# Prerequisites
|
||||||
|
*.d
|
||||||
|
|
||||||
|
# Compiled Object files
|
||||||
|
*.slo
|
||||||
|
*.lo
|
||||||
|
*.o
|
||||||
|
*.obj
|
||||||
|
|
||||||
|
# Precompiled Headers
|
||||||
|
*.gch
|
||||||
|
*.pch
|
||||||
|
|
||||||
|
# Compiled Dynamic libraries
|
||||||
|
*.so
|
||||||
|
*.dylib
|
||||||
|
*.dll
|
||||||
|
|
||||||
|
# Fortran module files
|
||||||
|
*.mod
|
||||||
|
*.smod
|
||||||
|
|
||||||
|
# Compiled Static libraries
|
||||||
|
*.lai
|
||||||
|
*.la
|
||||||
|
*.a
|
||||||
|
*.lib
|
||||||
|
|
||||||
|
# Executables
|
||||||
|
*.exe
|
||||||
|
*.out
|
||||||
|
*.app
|
||||||
|
|
||||||
|
# ---> VisualStudio
|
||||||
|
## Ignore Visual Studio temporary files, build results, and
|
||||||
|
## files generated by popular Visual Studio add-ons.
|
||||||
|
##
|
||||||
|
## Get latest from https://github.com/github/gitignore/blob/main/VisualStudio.gitignore
|
||||||
|
|
||||||
|
# User-specific files
|
||||||
|
*.rsuser
|
||||||
|
*.suo
|
||||||
|
*.user
|
||||||
|
*.userosscache
|
||||||
|
*.sln.docstates
|
||||||
|
|
||||||
|
# User-specific files (MonoDevelop/Xamarin Studio)
|
||||||
|
*.userprefs
|
||||||
|
|
||||||
|
# Mono auto generated files
|
||||||
|
mono_crash.*
|
||||||
|
|
||||||
|
# Build results
|
||||||
|
[Dd]ebug/
|
||||||
|
[Dd]ebugPublic/
|
||||||
|
[Rr]elease/
|
||||||
|
[Rr]eleases/
|
||||||
|
x64/
|
||||||
|
x86/
|
||||||
|
[Ww][Ii][Nn]32/
|
||||||
|
[Aa][Rr][Mm]/
|
||||||
|
[Aa][Rr][Mm]64/
|
||||||
|
bld/
|
||||||
|
[Bb]in/
|
||||||
|
[Oo]bj/
|
||||||
|
[Ll]og/
|
||||||
|
[Ll]ogs/
|
||||||
|
|
||||||
|
# Visual Studio 2015/2017 cache/options directory
|
||||||
|
.vs/
|
||||||
|
# Uncomment if you have tasks that create the project's static files in wwwroot
|
||||||
|
#wwwroot/
|
||||||
|
|
||||||
|
# Visual Studio 2017 auto generated files
|
||||||
|
Generated\ Files/
|
||||||
|
|
||||||
|
# MSTest test Results
|
||||||
|
[Tt]est[Rr]esult*/
|
||||||
|
[Bb]uild[Ll]og.*
|
||||||
|
|
||||||
|
# NUnit
|
||||||
|
*.VisualState.xml
|
||||||
|
TestResult.xml
|
||||||
|
nunit-*.xml
|
||||||
|
|
||||||
|
# Build Results of an ATL Project
|
||||||
|
[Dd]ebugPS/
|
||||||
|
[Rr]eleasePS/
|
||||||
|
dlldata.c
|
||||||
|
|
||||||
|
# Benchmark Results
|
||||||
|
BenchmarkDotNet.Artifacts/
|
||||||
|
|
||||||
|
# .NET Core
|
||||||
|
project.lock.json
|
||||||
|
project.fragment.lock.json
|
||||||
|
artifacts/
|
||||||
|
|
||||||
|
# ASP.NET Scaffolding
|
||||||
|
ScaffoldingReadMe.txt
|
||||||
|
|
||||||
|
# StyleCop
|
||||||
|
StyleCopReport.xml
|
||||||
|
|
||||||
|
# Files built by Visual Studio
|
||||||
|
*_i.c
|
||||||
|
*_p.c
|
||||||
|
*_h.h
|
||||||
|
*.ilk
|
||||||
|
*.meta
|
||||||
|
*.obj
|
||||||
|
*.iobj
|
||||||
|
*.pch
|
||||||
|
*.pdb
|
||||||
|
*.ipdb
|
||||||
|
*.pgc
|
||||||
|
*.pgd
|
||||||
|
*.rsp
|
||||||
|
*.sbr
|
||||||
|
*.tlb
|
||||||
|
*.tli
|
||||||
|
*.tlh
|
||||||
|
*.tmp
|
||||||
|
*.tmp_proj
|
||||||
|
*_wpftmp.csproj
|
||||||
|
*.log
|
||||||
|
*.tlog
|
||||||
|
*.vspscc
|
||||||
|
*.vssscc
|
||||||
|
.builds
|
||||||
|
*.pidb
|
||||||
|
*.svclog
|
||||||
|
*.scc
|
||||||
|
|
||||||
|
# Chutzpah Test files
|
||||||
|
_Chutzpah*
|
||||||
|
|
||||||
|
# Visual C++ cache files
|
||||||
|
ipch/
|
||||||
|
*.aps
|
||||||
|
*.ncb
|
||||||
|
*.opendb
|
||||||
|
*.opensdf
|
||||||
|
*.sdf
|
||||||
|
*.cachefile
|
||||||
|
*.VC.db
|
||||||
|
*.VC.VC.opendb
|
||||||
|
|
||||||
|
# Visual Studio profiler
|
||||||
|
*.psess
|
||||||
|
*.vsp
|
||||||
|
*.vspx
|
||||||
|
*.sap
|
||||||
|
|
||||||
|
# Visual Studio Trace Files
|
||||||
|
*.e2e
|
||||||
|
|
||||||
|
# TFS 2012 Local Workspace
|
||||||
|
$tf/
|
||||||
|
|
||||||
|
# Guidance Automation Toolkit
|
||||||
|
*.gpState
|
||||||
|
|
||||||
|
# ReSharper is a .NET coding add-in
|
||||||
|
_ReSharper*/
|
||||||
|
*.[Rr]e[Ss]harper
|
||||||
|
*.DotSettings.user
|
||||||
|
|
||||||
|
# TeamCity is a build add-in
|
||||||
|
_TeamCity*
|
||||||
|
|
||||||
|
# DotCover is a Code Coverage Tool
|
||||||
|
*.dotCover
|
||||||
|
|
||||||
|
# AxoCover is a Code Coverage Tool
|
||||||
|
.axoCover/*
|
||||||
|
!.axoCover/settings.json
|
||||||
|
|
||||||
|
# Coverlet is a free, cross platform Code Coverage Tool
|
||||||
|
coverage*.json
|
||||||
|
coverage*.xml
|
||||||
|
coverage*.info
|
||||||
|
|
||||||
|
# Visual Studio code coverage results
|
||||||
|
*.coverage
|
||||||
|
*.coveragexml
|
||||||
|
|
||||||
|
# NCrunch
|
||||||
|
_NCrunch_*
|
||||||
|
.*crunch*.local.xml
|
||||||
|
nCrunchTemp_*
|
||||||
|
|
||||||
|
# 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
|
||||||
|
# Note: Comment the next line if you want to checkin your web deploy settings,
|
||||||
|
# but database connection strings (with potential passwords) will be unencrypted
|
||||||
|
*.pubxml
|
||||||
|
*.publishproj
|
||||||
|
|
||||||
|
# Microsoft Azure Web App publish settings. Comment the next line if you want to
|
||||||
|
# checkin your Azure Web App publish settings, but sensitive information contained
|
||||||
|
# in these scripts will be unencrypted
|
||||||
|
PublishScripts/
|
||||||
|
|
||||||
|
# NuGet Packages
|
||||||
|
*.nupkg
|
||||||
|
# NuGet Symbol Packages
|
||||||
|
*.snupkg
|
||||||
|
# The packages folder can be ignored because of Package Restore
|
||||||
|
**/[Pp]ackages/*
|
||||||
|
# except build/, which is used as an MSBuild target.
|
||||||
|
!**/[Pp]ackages/build/
|
||||||
|
# Uncomment if necessary however generally it will be regenerated when needed
|
||||||
|
#!**/[Pp]ackages/repositories.config
|
||||||
|
# NuGet v3's project.json files produces more ignorable files
|
||||||
|
*.nuget.props
|
||||||
|
*.nuget.targets
|
||||||
|
|
||||||
|
# Microsoft Azure Build Output
|
||||||
|
csx/
|
||||||
|
*.build.csdef
|
||||||
|
|
||||||
|
# Microsoft Azure Emulator
|
||||||
|
ecf/
|
||||||
|
rcf/
|
||||||
|
|
||||||
|
# Windows Store app package directories and files
|
||||||
|
AppPackages/
|
||||||
|
BundleArtifacts/
|
||||||
|
Package.StoreAssociation.xml
|
||||||
|
_pkginfo.txt
|
||||||
|
*.appx
|
||||||
|
*.appxbundle
|
||||||
|
*.appxupload
|
||||||
|
|
||||||
|
# Visual Studio cache files
|
||||||
|
# files ending in .cache can be ignored
|
||||||
|
*.[Cc]ache
|
||||||
|
# but keep track of directories ending in .cache
|
||||||
|
!?*.[Cc]ache/
|
||||||
|
|
||||||
|
# Others
|
||||||
|
ClientBin/
|
||||||
|
~$*
|
||||||
|
*~
|
||||||
|
*.dbmdl
|
||||||
|
*.dbproj.schemaview
|
||||||
|
*.jfm
|
||||||
|
*.pfx
|
||||||
|
*.publishsettings
|
||||||
|
orleans.codegen.cs
|
||||||
|
|
||||||
|
# Including strong name files can present a security risk
|
||||||
|
# (https://github.com/github/gitignore/pull/2483#issue-259490424)
|
||||||
|
#*.snk
|
||||||
|
|
||||||
|
# Since there are multiple workflows, uncomment next line to ignore bower_components
|
||||||
|
# (https://github.com/github/gitignore/pull/1529#issuecomment-104372622)
|
||||||
|
#bower_components/
|
||||||
|
|
||||||
|
# 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
|
||||||
|
ServiceFabricBackup/
|
||||||
|
*.rptproj.bak
|
||||||
|
|
||||||
|
# SQL Server files
|
||||||
|
*.mdf
|
||||||
|
*.ldf
|
||||||
|
*.ndf
|
||||||
|
|
||||||
|
# Business Intelligence projects
|
||||||
|
*.rdl.data
|
||||||
|
*.bim.layout
|
||||||
|
*.bim_*.settings
|
||||||
|
*.rptproj.rsuser
|
||||||
|
*- [Bb]ackup.rdl
|
||||||
|
*- [Bb]ackup ([0-9]).rdl
|
||||||
|
*- [Bb]ackup ([0-9][0-9]).rdl
|
||||||
|
|
||||||
|
# Microsoft Fakes
|
||||||
|
FakesAssemblies/
|
||||||
|
|
||||||
|
# GhostDoc plugin setting file
|
||||||
|
*.GhostDoc.xml
|
||||||
|
|
||||||
|
# Node.js Tools for Visual Studio
|
||||||
|
.ntvs_analysis.dat
|
||||||
|
node_modules/
|
||||||
|
|
||||||
|
# Visual Studio 6 build log
|
||||||
|
*.plg
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace options file
|
||||||
|
*.opt
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated workspace file (contains which files were open etc.)
|
||||||
|
*.vbw
|
||||||
|
|
||||||
|
# Visual Studio 6 auto-generated project file (contains which files were open etc.)
|
||||||
|
*.vbp
|
||||||
|
|
||||||
|
# Visual Studio 6 workspace and project file (working project files containing files to include in project)
|
||||||
|
*.dsw
|
||||||
|
*.dsp
|
||||||
|
|
||||||
|
# Visual Studio 6 technical files
|
||||||
|
*.ncb
|
||||||
|
*.aps
|
||||||
|
|
||||||
|
# Visual Studio LightSwitch build output
|
||||||
|
**/*.HTMLClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/GeneratedArtifacts
|
||||||
|
**/*.DesktopClient/ModelManifest.xml
|
||||||
|
**/*.Server/GeneratedArtifacts
|
||||||
|
**/*.Server/ModelManifest.xml
|
||||||
|
_Pvt_Extensions
|
||||||
|
|
||||||
|
# Paket dependency manager
|
||||||
|
.paket/paket.exe
|
||||||
|
paket-files/
|
||||||
|
|
||||||
|
# FAKE - F# Make
|
||||||
|
.fake/
|
||||||
|
|
||||||
|
# CodeRush personal settings
|
||||||
|
.cr/personal
|
||||||
|
|
||||||
|
# Python Tools for Visual Studio (PTVS)
|
||||||
|
__pycache__/
|
||||||
|
*.pyc
|
||||||
|
|
||||||
|
# Cake - Uncomment if you are using it
|
||||||
|
# tools/**
|
||||||
|
# !tools/packages.config
|
||||||
|
|
||||||
|
# Tabs Studio
|
||||||
|
*.tss
|
||||||
|
|
||||||
|
# Telerik's JustMock configuration file
|
||||||
|
*.jmconfig
|
||||||
|
|
||||||
|
# BizTalk build output
|
||||||
|
*.btp.cs
|
||||||
|
*.btm.cs
|
||||||
|
*.odx.cs
|
||||||
|
*.xsd.cs
|
||||||
|
|
||||||
|
# OpenCover UI analysis results
|
||||||
|
OpenCover/
|
||||||
|
|
||||||
|
# Azure Stream Analytics local run output
|
||||||
|
ASALocalRun/
|
||||||
|
|
||||||
|
# MSBuild Binary and Structured Log
|
||||||
|
*.binlog
|
||||||
|
|
||||||
|
# NVidia Nsight GPU debugger configuration file
|
||||||
|
*.nvuser
|
||||||
|
|
||||||
|
# MFractors (Xamarin productivity tool) working folder
|
||||||
|
.mfractor/
|
||||||
|
|
||||||
|
# Local History for Visual Studio
|
||||||
|
.localhistory/
|
||||||
|
|
||||||
|
# Visual Studio History (VSHistory) files
|
||||||
|
.vshistory/
|
||||||
|
|
||||||
|
# BeatPulse healthcheck temp database
|
||||||
|
healthchecksdb
|
||||||
|
|
||||||
|
# Backup folder for Package Reference Convert tool in Visual Studio 2017
|
||||||
|
MigrationBackup/
|
||||||
|
|
||||||
|
# Ionide (cross platform F# VS Code tools) working folder
|
||||||
|
.ionide/
|
||||||
|
|
||||||
|
# Fody - auto-generated XML schema
|
||||||
|
FodyWeavers.xsd
|
||||||
|
|
||||||
|
# VS Code files for those working on multiple tools
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
*.code-workspace
|
||||||
|
|
||||||
|
# Local History for Visual Studio Code
|
||||||
|
.history/
|
||||||
|
|
||||||
|
# Windows Installer files from build outputs
|
||||||
|
*.cab
|
||||||
|
*.msi
|
||||||
|
*.msix
|
||||||
|
*.msm
|
||||||
|
*.msp
|
||||||
|
|
||||||
|
# JetBrains Rider
|
||||||
|
*.sln.iml
|
||||||
|
|
||||||
|
# ---> VisualStudioCode
|
||||||
|
.vscode/*
|
||||||
|
!.vscode/settings.json
|
||||||
|
!.vscode/tasks.json
|
||||||
|
!.vscode/launch.json
|
||||||
|
!.vscode/extensions.json
|
||||||
|
!.vscode/*.code-snippets
|
||||||
|
|
||||||
|
# Local History for Visual Studio Code
|
||||||
|
.history/
|
||||||
|
|
||||||
|
# Built Visual Studio Code Extensions
|
||||||
|
*.vsix
|
||||||
|
|
|
@ -0,0 +1,99 @@
|
||||||
|
######################################################################
|
||||||
|
# Modified by ZLY 2022 01 15 22:08
|
||||||
|
######################################################################
|
||||||
|
|
||||||
|
TEMPLATE = app
|
||||||
|
TARGET = LAMPMainWidget
|
||||||
|
QT += core gui
|
||||||
|
QT += widgets sql
|
||||||
|
|
||||||
|
|
||||||
|
# Input
|
||||||
|
HEADERS += \
|
||||||
|
include/crs.h \
|
||||||
|
include/layerprovider.h \
|
||||||
|
include/mapcanvas.h \
|
||||||
|
include/mapcanvasmap.h \
|
||||||
|
include/maplayer.h \
|
||||||
|
include/maptool.h \
|
||||||
|
include/pointxy.h \
|
||||||
|
include/crs/webmercator.h \
|
||||||
|
include/gui/mainwindow.h \
|
||||||
|
include/gui/sponsorwindow.h \
|
||||||
|
include/gui/taskwindow.h \
|
||||||
|
include/layer/tmslayer.h \
|
||||||
|
include/provider/tmsprovider.h \
|
||||||
|
include/tools/maptoolpan.h \
|
||||||
|
include/tools/maptoolselect.h \
|
||||||
|
include/tools/maptoolzoomin.h \
|
||||||
|
include/tools/maptoolzoomout.h \
|
||||||
|
include/utils/LAMPMainWidget.h \
|
||||||
|
include/utils/imgwriter.h \
|
||||||
|
include/utils/network.h \
|
||||||
|
include/provider/tms/gaodenormalprovider.h \
|
||||||
|
include/provider/tms/gaodesatelliteprovider.h \
|
||||||
|
include/provider/tms/googlechinanormalprovider.h \
|
||||||
|
include/provider/tms/googlechinasatelliteprovider.h \
|
||||||
|
include/provider/tms/ostnormalprovider.h \
|
||||||
|
include/provider/tms/tmsproviderfactory.h \
|
||||||
|
include/tools/maptooldrawline.h \
|
||||||
|
maparea.h \
|
||||||
|
mapautoplane.h \
|
||||||
|
mapline.h \
|
||||||
|
include/tools/maptooladdplane.h \
|
||||||
|
include/tools/maptooldrawarea.h
|
||||||
|
|
||||||
|
FORMS += include/gui/mainwindow.ui \
|
||||||
|
include/gui/sponsorwindow.ui \
|
||||||
|
include/gui/taskwindow.ui
|
||||||
|
SOURCES += crs.cpp \
|
||||||
|
egmain.cpp \
|
||||||
|
maparea.cpp \
|
||||||
|
mapautoplane.cpp \
|
||||||
|
mapcanvas.cpp \
|
||||||
|
mapcanvasmap.cpp \
|
||||||
|
maplayer.cpp \
|
||||||
|
mapline.cpp \
|
||||||
|
maptool.cpp \
|
||||||
|
pointxy.cpp \
|
||||||
|
crs/webmercator.cpp \
|
||||||
|
gui/mainwindow.cpp \
|
||||||
|
gui/sponsorwindow.cpp \
|
||||||
|
gui/taskwindow.cpp \
|
||||||
|
layer/tmslayer.cpp \
|
||||||
|
provider/tmsprovider.cpp \
|
||||||
|
tools/maptooldrawline.cpp \
|
||||||
|
tools/maptoolpan.cpp \
|
||||||
|
tools/maptoolselect.cpp \
|
||||||
|
tools/maptoolzoomin.cpp \
|
||||||
|
tools/maptoolzoomout.cpp \
|
||||||
|
tools/maptooldrawarea.cpp \
|
||||||
|
tools/maptooladdplane.cpp \
|
||||||
|
utils/imgwriter.cpp \
|
||||||
|
utils/network.cpp \
|
||||||
|
provider/tms/gaodenormalprovider.cpp \
|
||||||
|
provider/tms/ostnormalprovider.cpp \
|
||||||
|
provider/tms/tmsproviderfactory.cpp
|
||||||
|
RESOURCES += resources/res.qrc
|
||||||
|
|
||||||
|
#LIBS += -LE:/PROJ/lib/ -lproj
|
||||||
|
#LIBS += -LE:/PROJ/lib/ -lproj_i
|
||||||
|
#LIBS += -LE:/curl7.80/lib/x64/ -llibcurl
|
||||||
|
|
||||||
|
#INCLUDEPATH += E:/curl7.80/include
|
||||||
|
#DEPENDPATH += E:/curl7.80/include
|
||||||
|
|
||||||
|
#INCLUDEPATH += E:/PROJ/include
|
||||||
|
#DEPENDPATH += E:/PROJ/include
|
||||||
|
|
||||||
|
win32: LIBS += -L$$PWD/curl_7.80/lib/x64/ -llibcurl
|
||||||
|
INCLUDEPATH += $$PWD/curl_7.80/include
|
||||||
|
DEPENDPATH += $$PWD/curl_7.80/include
|
||||||
|
|
||||||
|
win32: LIBS += -L$$PWD/proj4_5.2.0/lib/ -lproj
|
||||||
|
INCLUDEPATH += $$PWD/proj4_5.2.0/include
|
||||||
|
DEPENDPATH += $$PWD/proj4_5.2.0/include
|
||||||
|
|
||||||
|
win32: LIBS += -L$$PWD/proj4_5.2.0/lib/ -lproj_i
|
||||||
|
INCLUDEPATH += $$PWD/proj4_5.2.0/include
|
||||||
|
DEPENDPATH += $$PWD/proj4_5.2.0/include
|
|
@ -0,0 +1,244 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<!DOCTYPE QtCreatorProject>
|
||||||
|
<!-- Written by QtCreator 2.7.2, 2022-01-15T21:57:03. -->
|
||||||
|
<qtcreator>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.ActiveTarget</variable>
|
||||||
|
<value type="int">0</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.EditorSettings</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<value type="bool" key="EditorConfiguration.AutoIndent">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.AutoSpacesForTabs">false</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.CamelCaseNavigation">true</value>
|
||||||
|
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.0">
|
||||||
|
<value type="QByteArray" key="language">Cpp</value>
|
||||||
|
<valuemap type="QVariantMap" key="value">
|
||||||
|
<value type="QString" key="CurrentPreferences">CppGlobal</value>
|
||||||
|
</valuemap>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="EditorConfiguration.CodeStyle.1">
|
||||||
|
<value type="QByteArray" key="language">QmlJS</value>
|
||||||
|
<valuemap type="QVariantMap" key="value">
|
||||||
|
<value type="QString" key="CurrentPreferences">QmlJSGlobal</value>
|
||||||
|
</valuemap>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="EditorConfiguration.CodeStyle.Count">2</value>
|
||||||
|
<value type="QByteArray" key="EditorConfiguration.Codec">UTF-8</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ConstrainTooltips">false</value>
|
||||||
|
<value type="int" key="EditorConfiguration.IndentSize">4</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.KeyboardTooltips">false</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.MouseNavigation">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.PaddingMode">1</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.ScrollWheelZooming">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.SmartBackspaceBehavior">0</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.SpacesForTabs">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.TabKeyBehavior">0</value>
|
||||||
|
<value type="int" key="EditorConfiguration.TabSize">8</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.UseGlobal">true</value>
|
||||||
|
<value type="int" key="EditorConfiguration.Utf8BomBehavior">0</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.addFinalNewLine">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.cleanIndentation">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.cleanWhitespace">true</value>
|
||||||
|
<value type="bool" key="EditorConfiguration.inEntireDocument">false</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.PluginSettings</variable>
|
||||||
|
<valuemap type="QVariantMap"/>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Target.0</variable>
|
||||||
|
<valuemap type="QVariantMap">
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Desktop Qt 5.1.0 MSVC2010 32bit</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName">Desktop Qt 5.1.0 MSVC2010 32bit</value>
|
||||||
|
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">qt.510.win32_msvc2010.essentials_kit</value>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.ActiveBuildConfiguration">1</value>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.ActiveDeployConfiguration">0</value>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.ActiveRunConfiguration">0</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
|
||||||
|
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清理</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Debug</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">2</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">C:/Users/Administrator/Desktop/%{JS: Util.asciify("build-LAMPMainWidget-Desktop_Qt_5_1_0_MSVC2010_32bit-Debug")}</value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.BuildConfiguration.1">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">qmake</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">QtProjectManager.QMakeBuildStep</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibrary">false</value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.LinkQmlDebuggingLibraryAuto">true</value>
|
||||||
|
<value type="QString" key="QtProjectManager.QMakeBuildStep.QMakeArguments"></value>
|
||||||
|
<value type="bool" key="QtProjectManager.QMakeBuildStep.QMakeForced">false</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.1">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">false</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments"></value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">2</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">构建</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Build</value>
|
||||||
|
</valuemap>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.1">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildStepList.Step.0">
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildStep.Enabled">true</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Make</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.MakeStep</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.MakeStep.AutomaticallyAddedMakeArguments"/>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.MakeStep.Clean">true</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeArguments">clean</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.MakeStep.MakeCommand"></value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">清理</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Clean</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">2</value>
|
||||||
|
<value type="bool" key="ProjectExplorer.BuildConfiguration.ClearSystemEnvironment">false</value>
|
||||||
|
<valuelist type="QVariantList" key="ProjectExplorer.BuildConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">Release</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4BuildConfiguration</value>
|
||||||
|
<value type="int" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildConfiguration">0</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.Qt4BuildConfiguration.BuildDirectory">C:/Users/Administrator/Desktop/%{JS: Util.asciify("build-LAMPMainWidget-Desktop_Qt_5_1_0_MSVC2010_32bit-Release")}</value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.Qt4BuildConfiguration.UseShadowBuild">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.BuildConfigurationCount">2</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.DeployConfiguration.0">
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.BuildConfiguration.BuildStepList.0">
|
||||||
|
<value type="int" key="ProjectExplorer.BuildStepList.StepsCount">0</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">部署</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.BuildSteps.Deploy</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.BuildConfiguration.BuildStepListCount">1</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">在本地部署</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">ProjectExplorer.DefaultDeployConfiguration</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.DeployConfigurationCount">1</value>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.PluginSettings"/>
|
||||||
|
<valuemap type="QVariantMap" key="ProjectExplorer.Target.RunConfiguration.0">
|
||||||
|
<value type="bool" key="Analyzer.Project.UseGlobal">true</value>
|
||||||
|
<valuelist type="QVariantList" key="Analyzer.Valgrind.AddedSuppressionFiles"/>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectBusEvents">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.CollectSystime">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableBranchSim">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableCacheSim">false</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.Callgrind.EnableEventToolTips">true</value>
|
||||||
|
<value type="double" key="Analyzer.Valgrind.Callgrind.MinimumCostRatio">0.01</value>
|
||||||
|
<value type="double" key="Analyzer.Valgrind.Callgrind.VisualisationMinimumCostRatio">10</value>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.FilterExternalIssues">true</value>
|
||||||
|
<value type="int" key="Analyzer.Valgrind.NumCallers">25</value>
|
||||||
|
<valuelist type="QVariantList" key="Analyzer.Valgrind.RemovedSuppressionFiles"/>
|
||||||
|
<value type="bool" key="Analyzer.Valgrind.TrackOrigins">true</value>
|
||||||
|
<value type="QString" key="Analyzer.Valgrind.ValgrindExecutable">valgrind</value>
|
||||||
|
<valuelist type="QVariantList" key="Analyzer.Valgrind.VisibleErrorKinds">
|
||||||
|
<value type="int">0</value>
|
||||||
|
<value type="int">1</value>
|
||||||
|
<value type="int">2</value>
|
||||||
|
<value type="int">3</value>
|
||||||
|
<value type="int">4</value>
|
||||||
|
<value type="int">5</value>
|
||||||
|
<value type="int">6</value>
|
||||||
|
<value type="int">7</value>
|
||||||
|
<value type="int">8</value>
|
||||||
|
<value type="int">9</value>
|
||||||
|
<value type="int">10</value>
|
||||||
|
<value type="int">11</value>
|
||||||
|
<value type="int">12</value>
|
||||||
|
<value type="int">13</value>
|
||||||
|
<value type="int">14</value>
|
||||||
|
</valuelist>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DefaultDisplayName">LAMPMainWidget</value>
|
||||||
|
<value type="QString" key="ProjectExplorer.ProjectConfiguration.DisplayName"></value>
|
||||||
|
<value type="QByteArray" key="ProjectExplorer.ProjectConfiguration.Id">Qt4ProjectManager.Qt4RunConfiguration:C:/Users/Administrator/Desktop/LAMPMainWidget-master/LAMPMainWidget.pro</value>
|
||||||
|
<value type="int" key="Qt4ProjectManager.Qt4RunConfiguration.BaseEnvironmentBase">2</value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.CommandLineArguments"></value>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.ProFile">LAMPMainWidget.pro</value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseDyldImageSuffix">false</value>
|
||||||
|
<value type="bool" key="Qt4ProjectManager.Qt4RunConfiguration.UseTerminal">false</value>
|
||||||
|
<valuelist type="QVariantList" key="Qt4ProjectManager.Qt4RunConfiguration.UserEnvironmentChanges"/>
|
||||||
|
<value type="QString" key="Qt4ProjectManager.Qt4RunConfiguration.UserWorkingDirectory"></value>
|
||||||
|
<value type="uint" key="RunConfiguration.QmlDebugServerPort">3768</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseCppDebugger">true</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseMultiProcess">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseQmlDebugger">false</value>
|
||||||
|
<value type="bool" key="RunConfiguration.UseQmlDebuggerAuto">true</value>
|
||||||
|
</valuemap>
|
||||||
|
<value type="int" key="ProjectExplorer.Target.RunConfigurationCount">1</value>
|
||||||
|
</valuemap>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.TargetCount</variable>
|
||||||
|
<value type="int">1</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Updater.EnvironmentId</variable>
|
||||||
|
<value type="QString">{eb13e5e2-0535-44b1-b74d-6dffbc511dad}</value>
|
||||||
|
</data>
|
||||||
|
<data>
|
||||||
|
<variable>ProjectExplorer.Project.Updater.FileVersion</variable>
|
||||||
|
<value type="int">12</value>
|
||||||
|
</data>
|
||||||
|
</qtcreator>
|
|
@ -0,0 +1,299 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project DefaultTargets="Build" xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup Label="ProjectConfigurations">
|
||||||
|
<ProjectConfiguration Include="Release|x64">
|
||||||
|
<Configuration>Release</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
<ProjectConfiguration Include="Debug|x64">
|
||||||
|
<Configuration>Debug</Configuration>
|
||||||
|
<Platform>x64</Platform>
|
||||||
|
</ProjectConfiguration>
|
||||||
|
</ItemGroup>
|
||||||
|
<PropertyGroup Label="Globals">
|
||||||
|
<ProjectGuid>{D50E4F7D-D021-36B9-A36A-7E4442AE70A5}</ProjectGuid>
|
||||||
|
<RootNamespace>LAMPMainWidget</RootNamespace>
|
||||||
|
<Keyword>QtVS_v304</Keyword>
|
||||||
|
<WindowsTargetPlatformVersion>10.0.22621.0</WindowsTargetPlatformVersion>
|
||||||
|
<WindowsTargetPlatformMinVersion>10.0.22621.0</WindowsTargetPlatformMinVersion>
|
||||||
|
<QtMsBuild Condition="'$(QtMsBuild)'=='' OR !Exists('$(QtMsBuild)\qt.targets')">$(MSBuildProjectDirectory)\QtMsBuild</QtMsBuild>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.Default.props" />
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="Configuration">
|
||||||
|
<PlatformToolset>v143</PlatformToolset>
|
||||||
|
<OutputDirectory>release\</OutputDirectory>
|
||||||
|
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
|
||||||
|
<CharacterSet>NotSet</CharacterSet>
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<IntermediateDirectory>release\</IntermediateDirectory>
|
||||||
|
<PrimaryOutput>LAMPMainWidget</PrimaryOutput>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="Configuration">
|
||||||
|
<PlatformToolset>v141</PlatformToolset>
|
||||||
|
<OutputDirectory>debug\</OutputDirectory>
|
||||||
|
<ATLMinimizesCRunTimeLibraryUsage>false</ATLMinimizesCRunTimeLibraryUsage>
|
||||||
|
<CharacterSet>NotSet</CharacterSet>
|
||||||
|
<ConfigurationType>Application</ConfigurationType>
|
||||||
|
<IntermediateDirectory>debug\</IntermediateDirectory>
|
||||||
|
<PrimaryOutput>LAMPMainWidget</PrimaryOutput>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.props" />
|
||||||
|
<Import Project="$(QtMsBuild)\qt_defaults.props" Condition="Exists('$(QtMsBuild)\qt_defaults.props')" />
|
||||||
|
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<QtInstall>tools_qt5</QtInstall>
|
||||||
|
<QtModules>core;sql;gui;widgets</QtModules>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup Label="QtSettings" Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<QtInstall>tools_qt5</QtInstall>
|
||||||
|
<QtModules>core;sql;gui;widgets</QtModules>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Target Name="QtMsBuildNotFound" BeforeTargets="CustomBuild;ClCompile" Condition="!Exists('$(QtMsBuild)\qt.targets') OR !Exists('$(QtMsBuild)\Qt.props')">
|
||||||
|
<Message Importance="High" Text="QtMsBuild: could not locate qt.targets, qt.props; project may not build correctly." />
|
||||||
|
</Target>
|
||||||
|
<ImportGroup Label="ExtensionSettings" />
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
|
||||||
|
<Import Project="$(QtMsBuild)\Qt.props" />
|
||||||
|
</ImportGroup>
|
||||||
|
<ImportGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'" Label="PropertySheets">
|
||||||
|
<Import Project="$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props" Condition="exists('$(UserRootDir)\Microsoft.Cpp.$(Platform).user.props')" />
|
||||||
|
<Import Project="$(QtMsBuild)\Qt.props" />
|
||||||
|
</ImportGroup>
|
||||||
|
<PropertyGroup Label="UserMacros" />
|
||||||
|
<PropertyGroup>
|
||||||
|
<OutDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">release\</OutDir>
|
||||||
|
<IntDir Condition="'$(Configuration)|$(Platform)'=='Release|x64'">release\</IntDir>
|
||||||
|
<TargetName Condition="'$(Configuration)|$(Platform)'=='Release|x64'">LAMPMainWidget</TargetName>
|
||||||
|
<IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Release|x64'">true</IgnoreImportLibrary>
|
||||||
|
<LinkIncremental Condition="'$(Configuration)|$(Platform)'=='Release|x64'">false</LinkIncremental>
|
||||||
|
<OutDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">debug\</OutDir>
|
||||||
|
<IntDir Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">debug\</IntDir>
|
||||||
|
<TargetName Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">LAMPMainWidget</TargetName>
|
||||||
|
<IgnoreImportLibrary Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">true</IgnoreImportLibrary>
|
||||||
|
</PropertyGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<AdditionalIncludeDirectories>GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;curl_7.80\include;proj4_5.2.0\include;C:\vcpkg\installed\x64-windows\include\qt5;C:\vcpkg\installed\x64-windows\include\qt5\QtWidgets;C:\vcpkg\installed\x64-windows\include\qt5\QtGui;C:\vcpkg\installed\x64-windows\include\qt5\QtSql;C:\vcpkg\installed\x64-windows\include\qt5\QtCore;release;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<AssemblerListingLocation>release\</AssemblerListingLocation>
|
||||||
|
<BrowseInformation>false</BrowseInformation>
|
||||||
|
<DebugInformationFormat>EditAndContinue</DebugInformationFormat>
|
||||||
|
<DisableSpecificWarnings>4577;4467;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||||
|
<ExceptionHandling>Sync</ExceptionHandling>
|
||||||
|
<ObjectFileName>release\</ObjectFileName>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<PreprocessToFile>false</PreprocessToFile>
|
||||||
|
<ProgramDataBaseFileName>
|
||||||
|
</ProgramDataBaseFileName>
|
||||||
|
<RuntimeLibrary>MultiThreadedDLL</RuntimeLibrary>
|
||||||
|
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||||
|
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||||
|
<UseFullPaths>false</UseFullPaths>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>kernel32.lib;user32.lib;gdi32.lib;winspool.lib;shell32.lib;ole32.lib;oleaut32.lib;uuid.lib;comdlg32.lib;advapi32.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<AdditionalLibraryDirectories>.\curl_7.80\lib\x64;.\proj4_5.2.0\lib;C:\vcpkg\installed\x64-windows\lib;C:\vcpkg\installed\x64-windows\lib\manual-link;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
|
<AdditionalOptions>"/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<DataExecutionPrevention>true</DataExecutionPrevention>
|
||||||
|
<GenerateDebugInformation>DebugFull</GenerateDebugInformation>
|
||||||
|
<IgnoreImportLibrary>true</IgnoreImportLibrary>
|
||||||
|
<LinkIncremental>false</LinkIncremental>
|
||||||
|
<OptimizeReferences>true</OptimizeReferences>
|
||||||
|
<OutputFile>$(OutDir)\LAMPMainWidget.exe</OutputFile>
|
||||||
|
<RandomizedBaseAddress>true</RandomizedBaseAddress>
|
||||||
|
<SubSystem>Console</SubSystem>
|
||||||
|
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||||
|
</Link>
|
||||||
|
<Midl>
|
||||||
|
<DefaultCharType>Unsigned</DefaultCharType>
|
||||||
|
<EnableErrorChecks>None</EnableErrorChecks>
|
||||||
|
<WarningLevel>0</WarningLevel>
|
||||||
|
</Midl>
|
||||||
|
<ResourceCompile>
|
||||||
|
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;NDEBUG;QT_NO_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
</ResourceCompile>
|
||||||
|
<QtMoc>
|
||||||
|
<CompilerFlavor>msvc</CompilerFlavor>
|
||||||
|
<Include>./$(Configuration)/moc_predefs.h</Include>
|
||||||
|
<ExecutionDescription>Moc'ing %(Identity)...</ExecutionDescription>
|
||||||
|
<DynamicSource>output</DynamicSource>
|
||||||
|
<QtMocDir>$(Configuration)</QtMocDir>
|
||||||
|
<QtMocFileName>moc_%(Filename).cpp</QtMocFileName>
|
||||||
|
</QtMoc>
|
||||||
|
<QtRcc>
|
||||||
|
<Compression>default</Compression>
|
||||||
|
<InitFuncName>res</InitFuncName>
|
||||||
|
<ExecutionDescription>Rcc'ing %(Identity)...</ExecutionDescription>
|
||||||
|
<QtRccDir>$(Configuration)</QtRccDir>
|
||||||
|
<QtRccFileName>qrc_%(Filename).cpp</QtRccFileName>
|
||||||
|
</QtRcc>
|
||||||
|
<QtUic>
|
||||||
|
<ExecutionDescription>Uic'ing %(Identity)...</ExecutionDescription>
|
||||||
|
<QtUicDir>$(ProjectDir)</QtUicDir>
|
||||||
|
<QtUicFileName>ui_%(Filename).h</QtUicFileName>
|
||||||
|
</QtUic>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemDefinitionGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
|
||||||
|
<ClCompile>
|
||||||
|
<AdditionalIncludeDirectories>GeneratedFiles\$(ConfigurationName);GeneratedFiles;.;curl_7.80\include;proj4_5.2.0\include;C:\vcpkg\installed\x64-windows\include\qt5;C:\vcpkg\installed\x64-windows\include\qt5\QtWidgets;C:\vcpkg\installed\x64-windows\include\qt5\QtGui;C:\vcpkg\installed\x64-windows\include\qt5\QtSql;C:\vcpkg\installed\x64-windows\include\qt5\QtCore;debug;%(AdditionalIncludeDirectories)</AdditionalIncludeDirectories>
|
||||||
|
<AdditionalOptions>-Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<AssemblerListingLocation>debug\</AssemblerListingLocation>
|
||||||
|
<BrowseInformation>false</BrowseInformation>
|
||||||
|
<DebugInformationFormat>ProgramDatabase</DebugInformationFormat>
|
||||||
|
<DisableSpecificWarnings>4577;4467;%(DisableSpecificWarnings)</DisableSpecificWarnings>
|
||||||
|
<ExceptionHandling>Sync</ExceptionHandling>
|
||||||
|
<ObjectFileName>debug\</ObjectFileName>
|
||||||
|
<Optimization>Disabled</Optimization>
|
||||||
|
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
<PreprocessToFile>false</PreprocessToFile>
|
||||||
|
<RuntimeLibrary>MultiThreadedDebugDLL</RuntimeLibrary>
|
||||||
|
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||||
|
<TreatWChar_tAsBuiltInType>true</TreatWChar_tAsBuiltInType>
|
||||||
|
<UseFullPaths>false</UseFullPaths>
|
||||||
|
<WarningLevel>Level3</WarningLevel>
|
||||||
|
<MultiProcessorCompilation>true</MultiProcessorCompilation>
|
||||||
|
</ClCompile>
|
||||||
|
<Link>
|
||||||
|
<AdditionalDependencies>.\curl_7.80\lib\x64\libcurl.lib;.\proj4_5.2.0\lib\proj.lib;.\proj4_5.2.0\lib\proj_i.lib;%(AdditionalDependencies)</AdditionalDependencies>
|
||||||
|
<AdditionalLibraryDirectories>.\curl_7.80\lib\x64;.\proj4_5.2.0\lib;%(AdditionalLibraryDirectories)</AdditionalLibraryDirectories>
|
||||||
|
<AdditionalOptions>/DEBUG "/MANIFESTDEPENDENCY:type='win32' name='Microsoft.Windows.Common-Controls' version='6.0.0.0' publicKeyToken='6595b64144ccf1df' language='*' processorArchitecture='*'" %(AdditionalOptions)</AdditionalOptions>
|
||||||
|
<DataExecutionPrevention>true</DataExecutionPrevention>
|
||||||
|
<GenerateDebugInformation>false</GenerateDebugInformation>
|
||||||
|
<IgnoreImportLibrary>true</IgnoreImportLibrary>
|
||||||
|
<OutputFile>$(OutDir)\LAMPMainWidget.exe</OutputFile>
|
||||||
|
<RandomizedBaseAddress>true</RandomizedBaseAddress>
|
||||||
|
<SubSystem>Windows</SubSystem>
|
||||||
|
<SuppressStartupBanner>true</SuppressStartupBanner>
|
||||||
|
</Link>
|
||||||
|
<Midl>
|
||||||
|
<DefaultCharType>Unsigned</DefaultCharType>
|
||||||
|
<EnableErrorChecks>None</EnableErrorChecks>
|
||||||
|
<WarningLevel>0</WarningLevel>
|
||||||
|
</Midl>
|
||||||
|
<ResourceCompile>
|
||||||
|
<PreprocessorDefinitions>_WINDOWS;UNICODE;_UNICODE;WIN32;_ENABLE_EXTENDED_ALIGNED_STORAGE;WIN64;_DEBUG;%(PreprocessorDefinitions)</PreprocessorDefinitions>
|
||||||
|
</ResourceCompile>
|
||||||
|
<QtRcc>
|
||||||
|
<Compression>default</Compression>
|
||||||
|
<InitFuncName>res</InitFuncName>
|
||||||
|
<ExecutionDescription>Rcc'ing %(Identity)...</ExecutionDescription>
|
||||||
|
<QtRccDir>$(Configuration)</QtRccDir>
|
||||||
|
<QtRccFileName>qrc_%(Filename).cpp</QtRccFileName>
|
||||||
|
</QtRcc>
|
||||||
|
<QtMoc>
|
||||||
|
<CompilerFlavor>msvc</CompilerFlavor>
|
||||||
|
<Include>./$(Configuration)/moc_predefs.h</Include>
|
||||||
|
<ExecutionDescription>Moc'ing %(Identity)...</ExecutionDescription>
|
||||||
|
<DynamicSource>output</DynamicSource>
|
||||||
|
<QtMocDir>$(Configuration)</QtMocDir>
|
||||||
|
<QtMocFileName>moc_%(Filename).cpp</QtMocFileName>
|
||||||
|
</QtMoc>
|
||||||
|
<QtUic>
|
||||||
|
<ExecutionDescription>Uic'ing %(Identity)...</ExecutionDescription>
|
||||||
|
<QtUicDir>$(ProjectDir)</QtUicDir>
|
||||||
|
<QtUicFileName>ui_%(Filename).h</QtUicFileName>
|
||||||
|
</QtUic>
|
||||||
|
</ItemDefinitionGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="crs.cpp" />
|
||||||
|
<ClCompile Include="egmain.cpp" />
|
||||||
|
<ClCompile Include="provider\tms\gaodenormalprovider.cpp" />
|
||||||
|
<ClCompile Include="utils\imgwriter.cpp" />
|
||||||
|
<ClCompile Include="gui\mainwindow.cpp" />
|
||||||
|
<ClCompile Include="maparea.cpp" />
|
||||||
|
<ClCompile Include="mapautoplane.cpp" />
|
||||||
|
<ClCompile Include="mapcanvas.cpp" />
|
||||||
|
<ClCompile Include="mapcanvasmap.cpp" />
|
||||||
|
<ClCompile Include="maplayer.cpp" />
|
||||||
|
<ClCompile Include="mapline.cpp" />
|
||||||
|
<ClCompile Include="maptool.cpp" />
|
||||||
|
<ClCompile Include="tools\maptooladdplane.cpp" />
|
||||||
|
<ClCompile Include="tools\maptooldrawarea.cpp" />
|
||||||
|
<ClCompile Include="tools\maptooldrawline.cpp" />
|
||||||
|
<ClCompile Include="tools\maptoolpan.cpp" />
|
||||||
|
<ClCompile Include="tools\maptoolselect.cpp" />
|
||||||
|
<ClCompile Include="tools\maptoolzoomin.cpp" />
|
||||||
|
<ClCompile Include="tools\maptoolzoomout.cpp" />
|
||||||
|
<ClCompile Include="utils\network.cpp" />
|
||||||
|
<ClCompile Include="provider\tms\ostnormalprovider.cpp" />
|
||||||
|
<ClCompile Include="pointxy.cpp" />
|
||||||
|
<ClCompile Include="gui\sponsorwindow.cpp" />
|
||||||
|
<ClCompile Include="gui\taskwindow.cpp" />
|
||||||
|
<ClCompile Include="layer\tmslayer.cpp" />
|
||||||
|
<ClCompile Include="provider\tmsprovider.cpp" />
|
||||||
|
<ClCompile Include="provider\tms\tmsproviderfactory.cpp" />
|
||||||
|
<ClCompile Include="crs\webmercator.cpp" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="include\crs.h" />
|
||||||
|
<ClInclude Include="include\utils\LAMPMainWidget.h" />
|
||||||
|
<QtMoc Include="include\provider\tms\gaodenormalprovider.h" />
|
||||||
|
<ClInclude Include="include\provider\tms\gaodesatelliteprovider.h" />
|
||||||
|
<ClInclude Include="include\provider\tms\googlechinanormalprovider.h" />
|
||||||
|
<ClInclude Include="include\provider\tms\googlechinasatelliteprovider.h" />
|
||||||
|
<ClInclude Include="include\utils\imgwriter.h" />
|
||||||
|
<QtMoc Include="include\layerprovider.h" />
|
||||||
|
<QtMoc Include="include\gui\mainwindow.h" />
|
||||||
|
<ClInclude Include="maparea.h" />
|
||||||
|
<ClInclude Include="mapautoplane.h" />
|
||||||
|
<QtMoc Include="include\mapcanvas.h" />
|
||||||
|
<ClInclude Include="include\mapcanvasmap.h" />
|
||||||
|
<ClInclude Include="include\maplayer.h" />
|
||||||
|
<ClInclude Include="mapline.h" />
|
||||||
|
<ClInclude Include="include\maptool.h" />
|
||||||
|
<ClInclude Include="include\tools\maptooladdplane.h" />
|
||||||
|
<ClInclude Include="include\tools\maptooldrawarea.h" />
|
||||||
|
<ClInclude Include="include\tools\maptooldrawline.h" />
|
||||||
|
<ClInclude Include="include\tools\maptoolpan.h" />
|
||||||
|
<ClInclude Include="include\tools\maptoolselect.h" />
|
||||||
|
<ClInclude Include="include\tools\maptoolzoomin.h" />
|
||||||
|
<ClInclude Include="include\tools\maptoolzoomout.h" />
|
||||||
|
<ClInclude Include="include\utils\network.h" />
|
||||||
|
<QtMoc Include="include\provider\tms\ostnormalprovider.h" />
|
||||||
|
<ClInclude Include="include\pointxy.h" />
|
||||||
|
<QtMoc Include="include\gui\sponsorwindow.h" />
|
||||||
|
<QtMoc Include="include\gui\taskwindow.h" />
|
||||||
|
<ClInclude Include="include\layer\tmslayer.h" />
|
||||||
|
<QtMoc Include="include\provider\tmsprovider.h" />
|
||||||
|
<ClInclude Include="include\provider\tms\tmsproviderfactory.h" />
|
||||||
|
<ClInclude Include="include\crs\webmercator.h" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<CustomBuild Include="debug\moc_predefs.h.cbt">
|
||||||
|
<FileType>Document</FileType>
|
||||||
|
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs)</AdditionalInputs>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -Zi -MDd -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2>NUL >$(IntDir)\moc_predefs.h</Command>
|
||||||
|
<Message Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">Generate moc_predefs.h</Message>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">$(IntDir)\moc_predefs.h;%(Outputs)</Outputs>
|
||||||
|
</CustomBuild>
|
||||||
|
<CustomBuild Include="release\moc_predefs.h.cbt">
|
||||||
|
<FileType>Document</FileType>
|
||||||
|
<AdditionalInputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(QTDIR)\mkspecs\features\data\dummy.cpp;%(AdditionalInputs)</AdditionalInputs>
|
||||||
|
<Command Condition="'$(Configuration)|$(Platform)'=='Release|x64'">cl -Bx"$(QTDIR)\bin\qmake.exe" -nologo -Zc:wchar_t -FS -Zc:rvalueCast -Zc:inline -Zc:strictStrings -Zc:throwingNew -Zc:referenceBinding -Zc:__cplusplus -O2 -MD -W3 -w34100 -w34189 -w44996 -w44456 -w44457 -w44458 -wd4577 -wd4467 -E $(QTDIR)\mkspecs\features\data\dummy.cpp 2>NUL >$(IntDir)\moc_predefs.h</Command>
|
||||||
|
<Message Condition="'$(Configuration)|$(Platform)'=='Release|x64'">Generate moc_predefs.h</Message>
|
||||||
|
<Outputs Condition="'$(Configuration)|$(Platform)'=='Release|x64'">$(IntDir)\moc_predefs.h;%(Outputs)</Outputs>
|
||||||
|
</CustomBuild>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<QtUic Include="include\gui\mainwindow.ui" />
|
||||||
|
<QtUic Include="include\gui\sponsorwindow.ui" />
|
||||||
|
<QtUic Include="include\gui\taskwindow.ui" />
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="resources\theme\mActionDownload.svg" />
|
||||||
|
<None Include="resources\theme\mActionPan.svg" />
|
||||||
|
<None Include="resources\theme\mActionRefresh.svg" />
|
||||||
|
<None Include="resources\theme\mActionSelect.svg" />
|
||||||
|
<None Include="resources\theme\mActionZoomIn.svg" />
|
||||||
|
<None Include="resources\theme\mActionZoomOut.svg" />
|
||||||
|
<None Include="resources\plane-black.png" />
|
||||||
|
<None Include="resources\plane-red.png" />
|
||||||
|
<QtRcc Include="resources\res.qrc" />
|
||||||
|
</ItemGroup>
|
||||||
|
<Import Project="$(VCTargetsPath)\Microsoft.Cpp.targets" />
|
||||||
|
<Import Project="$(QtMsBuild)\qt.targets" Condition="Exists('$(QtMsBuild)\qt.targets')" />
|
||||||
|
<ImportGroup Label="ExtensionTargets" />
|
||||||
|
</Project>
|
|
@ -0,0 +1,281 @@
|
||||||
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
|
<Project xmlns="http://schemas.microsoft.com/developer/msbuild/2003">
|
||||||
|
<ItemGroup>
|
||||||
|
<Filter Include="Form Files">
|
||||||
|
<UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>
|
||||||
|
<Extensions>ui</Extensions>
|
||||||
|
<ParseFiles>false</ParseFiles>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Form Files">
|
||||||
|
<UniqueIdentifier>{99349809-55BA-4b9d-BF79-8FDBB0286EB3}</UniqueIdentifier>
|
||||||
|
<Extensions>ui</Extensions>
|
||||||
|
<ParseFiles>false</ParseFiles>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Generated Files">
|
||||||
|
<UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cxx;moc;h;def;odl;idl;res;</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Generated Files">
|
||||||
|
<UniqueIdentifier>{71ED8ED8-ACB9-4CE9-BBE1-E00B30144E11}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cxx;moc;h;def;odl;idl;res;</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Header Files">
|
||||||
|
<UniqueIdentifier>{93995380-89BD-4b04-88EB-625FBE52EBFB}</UniqueIdentifier>
|
||||||
|
<Extensions>h;hpp;hxx;hm;inl;inc;xsd</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Resource Files">
|
||||||
|
<UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
|
||||||
|
<Extensions>qrc;*</Extensions>
|
||||||
|
<ParseFiles>false</ParseFiles>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Resource Files">
|
||||||
|
<UniqueIdentifier>{D9D6E242-F8AF-46E4-B9FD-80ECBC20BA3E}</UniqueIdentifier>
|
||||||
|
<Extensions>qrc;*</Extensions>
|
||||||
|
<ParseFiles>false</ParseFiles>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
<Filter Include="Source Files">
|
||||||
|
<UniqueIdentifier>{4FC737F1-C7A5-4376-A066-2A32D752A2FF}</UniqueIdentifier>
|
||||||
|
<Extensions>cpp;c;cxx;def;odl;idl;hpj;bat;asm;asmx</Extensions>
|
||||||
|
</Filter>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClCompile Include="crs.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="egmain.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="provider\tms\gaodenormalprovider.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="utils\imgwriter.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="gui\mainwindow.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="maparea.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="mapautoplane.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="mapcanvas.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="mapcanvasmap.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="maplayer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="mapline.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="maptool.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="tools\maptooladdplane.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="tools\maptooldrawarea.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="tools\maptooldrawline.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="tools\maptoolpan.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="tools\maptoolselect.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="tools\maptoolzoomin.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="tools\maptoolzoomout.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="utils\network.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="provider\tms\ostnormalprovider.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="pointxy.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="gui\sponsorwindow.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="gui\taskwindow.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="layer\tmslayer.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="provider\tmsprovider.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="provider\tms\tmsproviderfactory.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
<ClCompile Include="crs\webmercator.cpp">
|
||||||
|
<Filter>Source Files</Filter>
|
||||||
|
</ClCompile>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<ClInclude Include="include\crs.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\utils\LAMPMainWidget.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<QtMoc Include="include\provider\tms\gaodenormalprovider.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</QtMoc>
|
||||||
|
<ClInclude Include="include\provider\tms\gaodesatelliteprovider.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\provider\tms\googlechinanormalprovider.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\provider\tms\googlechinasatelliteprovider.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\utils\imgwriter.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<QtMoc Include="include\layerprovider.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</QtMoc>
|
||||||
|
<QtMoc Include="include\gui\mainwindow.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</QtMoc>
|
||||||
|
<ClInclude Include="maparea.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="mapautoplane.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<QtMoc Include="include\mapcanvas.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</QtMoc>
|
||||||
|
<ClInclude Include="include\mapcanvasmap.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\maplayer.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="mapline.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\maptool.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\tools\maptooladdplane.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\tools\maptooldrawarea.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\tools\maptooldrawline.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\tools\maptoolpan.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\tools\maptoolselect.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\tools\maptoolzoomin.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\tools\maptoolzoomout.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\utils\network.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<QtMoc Include="include\provider\tms\ostnormalprovider.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</QtMoc>
|
||||||
|
<ClInclude Include="include\pointxy.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<QtMoc Include="include\gui\sponsorwindow.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</QtMoc>
|
||||||
|
<QtMoc Include="include\gui\taskwindow.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</QtMoc>
|
||||||
|
<ClInclude Include="include\layer\tmslayer.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<QtMoc Include="include\provider\tmsprovider.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</QtMoc>
|
||||||
|
<ClInclude Include="include\provider\tms\tmsproviderfactory.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
<ClInclude Include="include\crs\webmercator.h">
|
||||||
|
<Filter>Header Files</Filter>
|
||||||
|
</ClInclude>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<CustomBuild Include="debug\moc_predefs.h.cbt">
|
||||||
|
<Filter>Generated Files</Filter>
|
||||||
|
</CustomBuild>
|
||||||
|
<CustomBuild Include="release\moc_predefs.h.cbt">
|
||||||
|
<Filter>Generated Files</Filter>
|
||||||
|
</CustomBuild>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<QtUic Include="include\gui\mainwindow.ui">
|
||||||
|
<Filter>Form Files</Filter>
|
||||||
|
</QtUic>
|
||||||
|
<QtUic Include="include\gui\sponsorwindow.ui">
|
||||||
|
<Filter>Form Files</Filter>
|
||||||
|
</QtUic>
|
||||||
|
<QtUic Include="include\gui\taskwindow.ui">
|
||||||
|
<Filter>Form Files</Filter>
|
||||||
|
</QtUic>
|
||||||
|
</ItemGroup>
|
||||||
|
<ItemGroup>
|
||||||
|
<None Include="resources\theme\mActionDownload.svg">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</None>
|
||||||
|
<None Include="resources\theme\mActionPan.svg">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</None>
|
||||||
|
<None Include="resources\theme\mActionRefresh.svg">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</None>
|
||||||
|
<None Include="resources\theme\mActionSelect.svg">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</None>
|
||||||
|
<None Include="resources\theme\mActionZoomIn.svg">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</None>
|
||||||
|
<None Include="resources\theme\mActionZoomOut.svg">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</None>
|
||||||
|
<None Include="resources\plane-black.png">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</None>
|
||||||
|
<None Include="resources\plane-red.png">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</None>
|
||||||
|
<QtRcc Include="resources\res.qrc">
|
||||||
|
<Filter>Resource Files</Filter>
|
||||||
|
</QtRcc>
|
||||||
|
</ItemGroup>
|
||||||
|
</Project>
|
|
@ -0,0 +1,199 @@
|
||||||
|
//#include <QDebug>
|
||||||
|
//#include <proj_api.h>
|
||||||
|
//
|
||||||
|
//#include <include/crs.h>
|
||||||
|
//#pragma execution_character_set("utf-8")
|
||||||
|
//
|
||||||
|
//namespace LAMPMainWidget {
|
||||||
|
//
|
||||||
|
//PointXY
|
||||||
|
//CRS::forward(const PointXY &point) const {
|
||||||
|
// auto pjCtx = pj_ctx_alloc();
|
||||||
|
// auto pjLonlat = pj_init_plus_ctx(pjCtx, "+proj=longlat +datum=WGS84 +no_defs");
|
||||||
|
// if (!pjLonlat) {
|
||||||
|
// qWarning() << "初始化wgs84坐标系失败=>" << pj_strerrno(pj_ctx_get_errno(pjCtx));
|
||||||
|
// pj_ctx_free(pjCtx);
|
||||||
|
// return PointXY{};
|
||||||
|
// }
|
||||||
|
// auto pjDest = pj_init_plus_ctx(pjCtx, proj4Def().toStdString().c_str());
|
||||||
|
// if (!pjDest) {
|
||||||
|
// qWarning() << "初始化目标坐标系失败=>" << pj_strerrno(pj_ctx_get_errno(pjCtx));
|
||||||
|
// pj_free(pjLonlat);
|
||||||
|
// pj_ctx_free(pjCtx);
|
||||||
|
// return PointXY{};
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// double x{point.x() * DEG_TO_RAD}, y{point.y() * DEG_TO_RAD};
|
||||||
|
// auto err = pj_transform(pjLonlat, pjDest, 1, 1, &x, &y, nullptr);
|
||||||
|
// if (err) {
|
||||||
|
// qWarning() << "坐标转换失败=>" << point;
|
||||||
|
// pj_free(pjDest);
|
||||||
|
// pj_free(pjLonlat);
|
||||||
|
// pj_ctx_free(pjCtx);
|
||||||
|
// return PointXY{};
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// pj_free(pjDest);
|
||||||
|
// pj_free(pjLonlat);
|
||||||
|
// pj_ctx_free(pjCtx);
|
||||||
|
//
|
||||||
|
// return PointXY{x, y};
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//PointXY
|
||||||
|
//CRS::inverse(const PointXY &point) const {
|
||||||
|
// auto pjCtx = pj_ctx_alloc();
|
||||||
|
// auto pjLonlat = pj_init_plus_ctx(pjCtx, "+proj=longlat +datum=WGS84 +no_defs");
|
||||||
|
// if (!pjLonlat) {
|
||||||
|
// qWarning() << "初始化wgs84坐标系失败=>" << pj_strerrno(pj_ctx_get_errno(pjCtx));
|
||||||
|
// pj_ctx_free(pjCtx);
|
||||||
|
// return PointXY{};
|
||||||
|
// }
|
||||||
|
// auto pjDest = pj_init_plus_ctx(pjCtx, proj4Def().toStdString().c_str());
|
||||||
|
// if (!pjDest) {
|
||||||
|
// qWarning() << "初始化目标坐标系失败=>" << pj_strerrno(pj_ctx_get_errno(pjCtx));
|
||||||
|
// pj_free(pjLonlat);
|
||||||
|
// pj_ctx_free(pjCtx);
|
||||||
|
// return PointXY{};
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// double x{point.x()}, y{point.y()};
|
||||||
|
// auto err = pj_transform(pjDest, pjLonlat, 1, 1, &x, &y, nullptr);
|
||||||
|
// if (err) {
|
||||||
|
// qWarning() << "坐标转换失败=>" << point;
|
||||||
|
// pj_free(pjDest);
|
||||||
|
// pj_free(pjLonlat);
|
||||||
|
// pj_ctx_free(pjCtx);
|
||||||
|
// return PointXY{};
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
// pj_free(pjDest);
|
||||||
|
// pj_free(pjLonlat);
|
||||||
|
// pj_ctx_free(pjCtx);
|
||||||
|
//
|
||||||
|
// return PointXY{x * RAD_TO_DEG, y * RAD_TO_DEG};
|
||||||
|
//}
|
||||||
|
//
|
||||||
|
//}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#include <QDebug>
|
||||||
|
#include <proj.h>
|
||||||
|
|
||||||
|
#include <include/crs.h>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
|
||||||
|
PointXY
|
||||||
|
CRS::forward(const PointXY& point) const {
|
||||||
|
const double DEG_TO_RAD = 0.017453292519943295;
|
||||||
|
PJ_CONTEXT* pjCtx = proj_context_create();
|
||||||
|
if (!pjCtx) {
|
||||||
|
qWarning() << u8"Create proj context failed";
|
||||||
|
return PointXY{};
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// PJ* target_crs = proj_create(pjCtx, proj4Def().toStdString().c_str());
|
||||||
|
// if (!target_crs) {
|
||||||
|
// qWarning() << "Failed to create target CRS from PROJ string";
|
||||||
|
// return PointXY{};
|
||||||
|
// }
|
||||||
|
//
|
||||||
|
//
|
||||||
|
//const char* wkt = proj_as_wkt(pjCtx, target_crs, PJ_WKT2_2019, nullptr);
|
||||||
|
// if (wkt) {
|
||||||
|
// printf("CRS (WKT):\n%s\n", wkt);
|
||||||
|
// //return PointXY{};
|
||||||
|
// }
|
||||||
|
qWarning() << "create target_crs sucessfully";
|
||||||
|
|
||||||
|
PJ* pjLonlat = proj_create_crs_to_crs(pjCtx,
|
||||||
|
"EPSG:4326", // WGS84
|
||||||
|
proj4Def().toStdString().c_str(),
|
||||||
|
nullptr);
|
||||||
|
|
||||||
|
if (!pjLonlat) {
|
||||||
|
qWarning() << u8"convert unsucessfully from EPSG:4326 to target project coodination =>" << proj_errno_string(proj_context_errno(pjCtx));
|
||||||
|
//proj_destroy(target_crs);
|
||||||
|
proj_context_destroy(pjCtx);
|
||||||
|
return PointXY{};
|
||||||
|
}
|
||||||
|
|
||||||
|
PJ_COORD coordIn, coordOut;
|
||||||
|
coordIn.lpzt.lam = point.x() * DEG_TO_RAD;
|
||||||
|
coordIn.lpzt.phi = point.y() * DEG_TO_RAD;
|
||||||
|
|
||||||
|
coordOut = proj_trans(pjLonlat, PJ_FWD, coordIn);
|
||||||
|
if (proj_errno(pjLonlat)) {
|
||||||
|
qWarning() << u8"convert unsucessfully point from EPSG:4326 to point in EPSG:4326=>" << point;
|
||||||
|
proj_destroy(pjLonlat);
|
||||||
|
//proj_destroy(target_crs);
|
||||||
|
proj_context_destroy(pjCtx);
|
||||||
|
return PointXY{};
|
||||||
|
}
|
||||||
|
|
||||||
|
proj_destroy(pjLonlat);
|
||||||
|
//proj_destroy(target_crs);
|
||||||
|
proj_context_destroy(pjCtx);
|
||||||
|
|
||||||
|
return PointXY{ coordOut.xy.x, coordOut.xy.y };
|
||||||
|
}
|
||||||
|
|
||||||
|
PointXY
|
||||||
|
CRS::inverse(const PointXY& point) const {
|
||||||
|
const double RAD_TO_DEG = 57.29577951308232;
|
||||||
|
PJ_CONTEXT* pjCtx = proj_context_create();
|
||||||
|
if (!pjCtx) {
|
||||||
|
qWarning() << u8"create proj context ";
|
||||||
|
return PointXY{};
|
||||||
|
}
|
||||||
|
|
||||||
|
//PJ* target_crs = proj_create(pjCtx, proj4Def().toStdString().c_str());
|
||||||
|
//if (!target_crs) {
|
||||||
|
// qWarning() << "Failed to create target CRS from PROJ string";
|
||||||
|
// return PointXY{};
|
||||||
|
//}
|
||||||
|
|
||||||
|
//qWarning() << "create target_crs sucessfully";
|
||||||
|
|
||||||
|
//const char* wkt = proj_as_wkt(pjCtx, target_crs, PJ_WKT2_2019, nullptr);
|
||||||
|
//if (wkt) {
|
||||||
|
// printf("CRS (WKT):\n%s\n", wkt);
|
||||||
|
// return PointXY{};
|
||||||
|
//}
|
||||||
|
qWarning() << "create target_crs sucessfully";
|
||||||
|
|
||||||
|
PJ* pjLonlat = proj_create_crs_to_crs(pjCtx,
|
||||||
|
"EPSG:4326", // WGS84
|
||||||
|
proj4Def().toStdString().c_str(),
|
||||||
|
nullptr);
|
||||||
|
|
||||||
|
if (!pjLonlat) {
|
||||||
|
qWarning() << u8"=>" << proj_errno_string(proj_context_errno(pjCtx));
|
||||||
|
//proj_destroy(target_crs);
|
||||||
|
proj_context_destroy(pjCtx);
|
||||||
|
return PointXY{};
|
||||||
|
}
|
||||||
|
|
||||||
|
PJ_COORD coordIn, coordOut;
|
||||||
|
coordIn.xy.x = point.x();
|
||||||
|
coordIn.xy.y = point.y();
|
||||||
|
|
||||||
|
coordOut = proj_trans(pjLonlat, PJ_INV, coordIn);
|
||||||
|
if (proj_errno(pjLonlat)) {
|
||||||
|
qWarning() << u8"convert unsucessfully from point in target project coodination to point in EPSG:4326=>" << point;
|
||||||
|
proj_destroy(pjLonlat);
|
||||||
|
//proj_destroy(target_crs);
|
||||||
|
proj_context_destroy(pjCtx);
|
||||||
|
return PointXY{};
|
||||||
|
}
|
||||||
|
//proj_destroy(target_crs);
|
||||||
|
proj_destroy(pjLonlat);
|
||||||
|
proj_context_destroy(pjCtx);
|
||||||
|
|
||||||
|
return PointXY{ coordOut.lpzt.lam * RAD_TO_DEG, coordOut.lpzt.phi * RAD_TO_DEG };
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,135 @@
|
||||||
|
#include <include/crs.h>
|
||||||
|
#include <include/crs/webmercator.h>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
namespace LAMPMainWidget
|
||||||
|
{
|
||||||
|
PointXY
|
||||||
|
WebMercator::forward(const LAMPMainWidget::PointXY& point) const
|
||||||
|
{
|
||||||
|
PointXY result{};
|
||||||
|
PointXY originXy = CRS::forward(point);
|
||||||
|
|
||||||
|
QSizeF sz = extent().size();
|
||||||
|
result.setX(sz.width() / 2 + originXy.x());
|
||||||
|
result.setY(sz.height() / 2 - originXy.y());
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointXY
|
||||||
|
WebMercator::inverse(const LAMPMainWidget::PointXY& point) const
|
||||||
|
{
|
||||||
|
PointXY originXy{};
|
||||||
|
QSizeF sz = extent().size();
|
||||||
|
|
||||||
|
originXy.setX(point.x() - sz.width() / 2);
|
||||||
|
originXy.setY(sz.height() / 2 - point.y());
|
||||||
|
|
||||||
|
return CRS::inverse(originXy);
|
||||||
|
}
|
||||||
|
|
||||||
|
QString
|
||||||
|
WebMercator::proj4Cvt() const
|
||||||
|
{
|
||||||
|
return QString{"+proj=webmerc +datum=WGS84"};
|
||||||
|
}
|
||||||
|
|
||||||
|
QString
|
||||||
|
WebMercator::wktDef() const
|
||||||
|
{
|
||||||
|
return QString{
|
||||||
|
R"(
|
||||||
|
PROJCS["WGS 84 / Pseudo-Mercator",
|
||||||
|
GEOGCS["WGS 84",
|
||||||
|
DATUM["WGS_1984",
|
||||||
|
SPHEROID["WGS 84",6378137,298.257223563,
|
||||||
|
AUTHORITY["EPSG","7030"]],
|
||||||
|
AUTHORITY["EPSG","6326"]],
|
||||||
|
PRIMEM["Greenwich",0,
|
||||||
|
AUTHORITY["EPSG","8901"]],
|
||||||
|
UNIT["degree",0.0174532925199433,
|
||||||
|
AUTHORITY["EPSG","9122"]],
|
||||||
|
AUTHORITY["EPSG","4326"]],
|
||||||
|
PROJECTION["Mercator_1SP"],
|
||||||
|
PARAMETER["central_meridian",0],
|
||||||
|
PARAMETER["scale_factor",1],
|
||||||
|
PARAMETER["false_easting",0],
|
||||||
|
PARAMETER["false_northing",0],
|
||||||
|
UNIT["metre",1,
|
||||||
|
AUTHORITY["EPSG","9001"]],
|
||||||
|
AXIS["X",EAST],
|
||||||
|
AXIS["Y",NORTH],
|
||||||
|
EXTENSION["PROJ4",
|
||||||
|
"+proj=merc
|
||||||
|
+a=6378137
|
||||||
|
+b=6378137
|
||||||
|
+lat_ts=0.0
|
||||||
|
+lon_0=0.0
|
||||||
|
+x_0=0.0
|
||||||
|
+y_0=0
|
||||||
|
+k=1.0
|
||||||
|
+units=m
|
||||||
|
+nadgrids=@null
|
||||||
|
+wktext
|
||||||
|
+no_defs"],
|
||||||
|
AUTHORITY["EPSG","3857"]
|
||||||
|
])"
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
QRectF
|
||||||
|
WebMercator::extent() const
|
||||||
|
{
|
||||||
|
return QRectF{0, 0, 40075016.686, 40075016.686};
|
||||||
|
}
|
||||||
|
|
||||||
|
QString
|
||||||
|
WebMercator::proj4Def() const
|
||||||
|
{
|
||||||
|
/* return QString{
|
||||||
|
R"(
|
||||||
|
+proj=merc
|
||||||
|
+a=6378137
|
||||||
|
+b=6378137
|
||||||
|
+lat_ts=0.0
|
||||||
|
+lon_0=0.0
|
||||||
|
+x_0=0.0
|
||||||
|
+y_0=0
|
||||||
|
+k=1.0
|
||||||
|
+units=m
|
||||||
|
+nadgrids=@null
|
||||||
|
+wktext
|
||||||
|
+no_defs)"
|
||||||
|
};
|
||||||
|
*/
|
||||||
|
|
||||||
|
return QString{
|
||||||
|
R"(
|
||||||
|
PROJCS["unnamed",
|
||||||
|
GEOGCS["WGS 84",
|
||||||
|
DATUM["WGS_1984",
|
||||||
|
SPHEROID["WGS 84",6378137,298.257223563,
|
||||||
|
AUTHORITY["EPSG","7030"]],
|
||||||
|
AUTHORITY["EPSG","6326"]],
|
||||||
|
PRIMEM["Greenwich",0,
|
||||||
|
AUTHORITY["EPSG","8901"]],
|
||||||
|
UNIT["degree",0.0174532925199433,
|
||||||
|
AUTHORITY["EPSG","9122"]],
|
||||||
|
AUTHORITY["EPSG","4326"]],
|
||||||
|
PROJECTION["Mercator_1SP"],
|
||||||
|
PARAMETER["central_meridian",0],
|
||||||
|
PARAMETER["scale_factor",1],
|
||||||
|
PARAMETER["false_easting",0],
|
||||||
|
PARAMETER["false_northing",0],
|
||||||
|
UNIT["metre",1,
|
||||||
|
AUTHORITY["EPSG","9001"]],
|
||||||
|
AXIS["Easting",EAST],
|
||||||
|
AXIS["Northing",NORTH]]
|
||||||
|
)"
|
||||||
|
};
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QApplication>
|
||||||
|
#include <QVector>
|
||||||
|
|
||||||
|
#include <include/provider/tmsprovider.h>
|
||||||
|
#include <include/gui/mainwindow.h>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
using namespace LAMPMainWidget;
|
||||||
|
|
||||||
|
int
|
||||||
|
main(int argc, char **argv) {
|
||||||
|
qRegisterMetaType<TileInfo>("TileInfo");
|
||||||
|
qRegisterMetaType<QVector<int>>("QVector<int>");
|
||||||
|
QApplication app{argc, argv};
|
||||||
|
|
||||||
|
MainWindow window{};
|
||||||
|
window.show();
|
||||||
|
|
||||||
|
return QApplication::exec();
|
||||||
|
}
|
|
@ -0,0 +1,303 @@
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QDesktopServices>
|
||||||
|
#include <QMessageBox>
|
||||||
|
#include <QTableWidgetItem>
|
||||||
|
|
||||||
|
#include <include/gui/mainwindow.h>
|
||||||
|
#include <include/gui/sponsorwindow.h>
|
||||||
|
#include <include/gui/taskwindow.h>
|
||||||
|
#include <include/layer/tmslayer.h>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
|
||||||
|
QString
|
||||||
|
MainWindow::tutorialUrl() {
|
||||||
|
return QString{R"(https://gitee.com/qizr_admin/LAMPMainWidget)"};
|
||||||
|
}
|
||||||
|
|
||||||
|
QString
|
||||||
|
MainWindow::srcUrl() {
|
||||||
|
return QString{R"(https://gitee.com/qizr_admin/LAMPMainWidget)"};
|
||||||
|
}
|
||||||
|
|
||||||
|
QHash<QString, MapLayer *>MainWindow::mMaps{};
|
||||||
|
|
||||||
|
MainWindow::MainWindow(QWidget *parent)
|
||||||
|
: mUi(new Ui::MainWindow),
|
||||||
|
mMapConvas(new MapCanvas),
|
||||||
|
mScaleText(new QLineEdit),
|
||||||
|
mScaleLabel(new QLabel),
|
||||||
|
mCenterText(new QLineEdit),
|
||||||
|
mCenterLabel(new QLabel),
|
||||||
|
mZoomText(new QLineEdit),
|
||||||
|
mZoomLabel(new QLabel),
|
||||||
|
mMapActionGroup(new QActionGroup(dynamic_cast<QObject *>(this))),
|
||||||
|
mSetLeftTop(true),
|
||||||
|
mLayerList(),
|
||||||
|
mLeftTop(),
|
||||||
|
mRightBottom() {
|
||||||
|
mUi->setupUi(dynamic_cast<QMainWindow *>(this));
|
||||||
|
setupWindow();
|
||||||
|
setupTaskWindow();
|
||||||
|
setupLayers();
|
||||||
|
setupStatusBar();
|
||||||
|
setupActions();
|
||||||
|
|
||||||
|
mUi->panAction->trigger();
|
||||||
|
mUi->layerList->setCurrentItem(mLayerList.first());
|
||||||
|
}
|
||||||
|
|
||||||
|
MainWindow::~MainWindow() {
|
||||||
|
delete mUi;
|
||||||
|
delete mMapConvas;
|
||||||
|
delete mScaleText;
|
||||||
|
delete mScaleLabel;
|
||||||
|
delete mCenterText;
|
||||||
|
delete mCenterLabel;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::setupTaskWindow() {
|
||||||
|
mUi->taskTable->setColumnCount(5);
|
||||||
|
mUi->taskTable->setHorizontalHeaderLabels(QStringList{
|
||||||
|
"名称", "范围", "zoom值", "数据源", "进度"
|
||||||
|
});
|
||||||
|
mUi->taskTable->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::setupActions() {
|
||||||
|
mMapActionGroup->addAction(mUi->panAction);
|
||||||
|
mMapActionGroup->addAction(mUi->zoomInAction);
|
||||||
|
mMapActionGroup->addAction(mUi->zoomOutAction);
|
||||||
|
mMapActionGroup->addAction(mUi->selectAction);
|
||||||
|
|
||||||
|
mUi->selectAction->setEnabled(false);
|
||||||
|
|
||||||
|
QObject::connect(mUi->panAction, &QAction::triggered, this, &MainWindow::panHandle);
|
||||||
|
QObject::connect(mUi->zoomInAction, &QAction::triggered, this, &MainWindow::zoomInHandle);
|
||||||
|
QObject::connect(mUi->zoomOutAction, &QAction::triggered, this, &MainWindow::zoomOutHandle);
|
||||||
|
QObject::connect(mUi->tutorialAction, &QAction::triggered, this, &MainWindow::tutorialHanle);
|
||||||
|
QObject::connect(mUi->srcAction, &QAction::triggered, this, &MainWindow::srcHandle);
|
||||||
|
QObject::connect(mUi->refreshAction, &QAction::triggered, this, &MainWindow::refreshHandle);
|
||||||
|
QObject::connect(mUi->sponsorAction, &QAction::triggered, this, &MainWindow::sponsorHandle);
|
||||||
|
QObject::connect(mUi->selectAction, &QAction::triggered, this, &MainWindow::selectHandle);
|
||||||
|
QObject::connect(mUi->downloadAction, &QAction::triggered, this, &MainWindow::createDownloadTask);
|
||||||
|
QObject::connect(mUi->drawlineAction, &QAction::triggered, this, &MainWindow::drawlineHandle);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::setupWindow() {
|
||||||
|
mUi->mapCanvasLayout->addWidget(mMapConvas);
|
||||||
|
setFixedSize(size());
|
||||||
|
setWindowFlags(windowFlags() & ~Qt::WindowMaximizeButtonHint);
|
||||||
|
|
||||||
|
QObject::connect(mMapConvas, &MapCanvas::zoomChanged, this, &MainWindow::zoomChangedHandle);
|
||||||
|
QObject::connect(mMapConvas, &MapCanvas::clicked, this, &MainWindow::clickedHandle);
|
||||||
|
QObject::connect(mMapConvas, &MapCanvas::mapCenterChanged, this, &MainWindow::centerChangedHandle);
|
||||||
|
QObject::connect(mUi->layerList, &QListWidget::currentItemChanged, this, &MainWindow::layerChanged);
|
||||||
|
QObject::connect(mUi->leftTopBtn, &QPushButton::clicked, this, &MainWindow::leftTopClickedHandle);
|
||||||
|
QObject::connect(mUi->rightBottomBtn, &QPushButton::clicked, this, &MainWindow::rightBottomClickedHandle);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::setupStatusBar() {
|
||||||
|
/// 比例尺
|
||||||
|
mScaleLabel->setText("比例尺");
|
||||||
|
mScaleText->setText(QString("1cm : %1m").arg(mMapConvas->scale()));
|
||||||
|
mScaleText->setFixedWidth(150);
|
||||||
|
mScaleText->setReadOnly(true);
|
||||||
|
mUi->statusbar->addWidget(mScaleLabel);
|
||||||
|
mUi->statusbar->addWidget(mScaleText);
|
||||||
|
|
||||||
|
/// 空白间隔
|
||||||
|
mUi->statusbar->addWidget(spacerWiget(30));
|
||||||
|
|
||||||
|
/// zoom值
|
||||||
|
mZoomLabel->setText("Zoom值=>");
|
||||||
|
mZoomText->setText(QString("%1").arg(mMapConvas->zoomValue()));
|
||||||
|
mZoomText->setFixedWidth(80);
|
||||||
|
mZoomText->setReadOnly(true);
|
||||||
|
mUi->statusbar->addWidget(mZoomLabel);
|
||||||
|
mUi->statusbar->addWidget(mZoomText);
|
||||||
|
|
||||||
|
/// 空白间隔
|
||||||
|
mUi->statusbar->addWidget(spacerWiget(30));
|
||||||
|
|
||||||
|
/// 视图中心坐标
|
||||||
|
mCenterLabel->setText("视图中心坐标=>");
|
||||||
|
PointXY center = mMapConvas->mapCenter();
|
||||||
|
mCenterText->setText(QString("lon:%1, lat:%2").arg(center.x()).arg(center.y()));
|
||||||
|
mCenterText->setFixedWidth(300);
|
||||||
|
mCenterText->setReadOnly(true);
|
||||||
|
mUi->statusbar->addWidget(mCenterLabel);
|
||||||
|
mUi->statusbar->addWidget(mCenterText);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::setupLayers() {
|
||||||
|
initMaps();
|
||||||
|
auto i = mMaps.constBegin();
|
||||||
|
for (; i != mMaps.constEnd(); ++i) {
|
||||||
|
mLayerList.append(new QListWidgetItem(i.key(), mUi->layerList));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::initMaps() {
|
||||||
|
if (mMaps.isEmpty()) {
|
||||||
|
mMaps = QHash<QString, MapLayer *>{
|
||||||
|
{"Openstreet地图", new TmsLayer(OSTNormalMap, "ostnormalmap", mMapConvas)},
|
||||||
|
{"高德地图", new TmsLayer(GaodeNormapMap, "gaodenormalmap", mMapConvas)}
|
||||||
|
};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QWidget *MainWindow::spacerWiget(int width) const {
|
||||||
|
auto spacer = new QWidget{};
|
||||||
|
spacer->setHidden(true);
|
||||||
|
spacer->setVisible(true);
|
||||||
|
spacer->setFixedWidth(width);
|
||||||
|
|
||||||
|
return spacer;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::panHandle(bool checked) {
|
||||||
|
mMapConvas->selectTool(QString{"pan_tool"});
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::zoomInHandle(bool checked) {
|
||||||
|
mMapConvas->selectTool(QString{"zoomin_tool"});
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::zoomOutHandle(bool checked) {
|
||||||
|
mMapConvas->selectTool(QString{"zoomout_tool"});
|
||||||
|
}
|
||||||
|
|
||||||
|
void MainWindow::drawlineHandle(bool checked)
|
||||||
|
{
|
||||||
|
mMapConvas->selectTool("drawline_tool");
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::tutorialHanle(bool checked) {
|
||||||
|
if (!QDesktopServices::openUrl(tutorialUrl())) {
|
||||||
|
QMessageBox::critical(dynamic_cast<QWidget *>(this), "异常", "未能打开系统浏览器");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::srcHandle(bool checked) {
|
||||||
|
if (!QDesktopServices::openUrl(srcUrl())) {
|
||||||
|
QMessageBox::critical(dynamic_cast<QWidget *>(this), "异常", "未能打开系统浏览器");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::sponsorHandle(bool checked) {
|
||||||
|
auto *window = new SponsorWindow(dynamic_cast<QWidget *>(this));
|
||||||
|
window->exec();
|
||||||
|
window->deleteLater();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::refreshHandle(bool checked) {
|
||||||
|
mMapConvas->refreshMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::selectHandle(bool checked) {
|
||||||
|
mMapConvas->selectTool(QString{"select_tool"});
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::centerChangedHandle(LAMPMainWidget::PointXY pos) {
|
||||||
|
mCenterText->setText(QString("lon:%1, lat:%2").arg(pos.x()).arg(pos.y()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::zoomChangedHandle(int zoom) {
|
||||||
|
mZoomText->setText(QString("%1").arg(zoom));
|
||||||
|
mScaleText->setText(QString("1cm:%1m").arg(this->mMapConvas->scale()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::clickedHandle(LAMPMainWidget::PointXY pos) {
|
||||||
|
QString posText = QString("%1, %2").arg(pos.x()).arg(pos.y());
|
||||||
|
if (mSetLeftTop) {
|
||||||
|
mUi->leftTopText->setText(posText);
|
||||||
|
mLeftTop = pos;
|
||||||
|
} else {
|
||||||
|
mUi->rightBottomText->setText(posText);
|
||||||
|
mRightBottom = pos;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::leftTopClickedHandle() {
|
||||||
|
mSetLeftTop = true;
|
||||||
|
mUi->selectAction->trigger();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::rightBottomClickedHandle() {
|
||||||
|
mSetLeftTop = false;
|
||||||
|
mUi->selectAction->trigger();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::layerChanged(QListWidgetItem *current, QListWidgetItem *previous) {
|
||||||
|
auto mapName = current->text();
|
||||||
|
if (!mMaps.contains(mapName)) {
|
||||||
|
qDebug() << mapName << "不支持";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto layer = mMaps.value(mapName);
|
||||||
|
auto i = mMaps.begin();
|
||||||
|
for (; i != mMaps.end(); ++i) {
|
||||||
|
if (i.key() == mapName) {
|
||||||
|
i.value()->setVisiblity(true);
|
||||||
|
qDebug() << i.key() << i.value()->isVisible();
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
i.value()->setVisiblity(false);
|
||||||
|
}
|
||||||
|
|
||||||
|
mMapConvas->addLayer(layer);
|
||||||
|
mMapConvas->setCurrentLayer(layer->id());
|
||||||
|
mMapConvas->refreshMap();
|
||||||
|
|
||||||
|
zoomChangedHandle(mMapConvas->zoomValue());
|
||||||
|
centerChangedHandle(mMapConvas->mapCenter());
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::createDownloadTask() {
|
||||||
|
auto taskWindow = new TaskWindow(dynamic_cast<QWidget *>(this));
|
||||||
|
taskWindow->exec();
|
||||||
|
taskWindow->deleteLater();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MainWindow::changeTaskTable(int row, int col, QString text) {
|
||||||
|
mUi->taskTable->takeItem(row, col);
|
||||||
|
mUi->taskTable->setItem(row, col, new QTableWidgetItem(text));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::on_drawArea_triggered()
|
||||||
|
{
|
||||||
|
mMapConvas->selectTool("drawarea_tool");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void MainWindow::on_addPlaneaction_triggered()
|
||||||
|
{
|
||||||
|
mMapConvas->selectTool("addplane_tool");
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,66 @@
|
||||||
|
#include <QtGui/QPixmap>
|
||||||
|
#include <QtWidgets/QMessageBox>
|
||||||
|
#include <QtCore/QDebug>
|
||||||
|
|
||||||
|
#include <include/gui/sponsorwindow.h>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
SponsorWindow::SponsorWindow(QWidget *parent) :
|
||||||
|
QDialog(parent),
|
||||||
|
ui(new Ui::SponsorWindow) {
|
||||||
|
ui->setupUi(this);
|
||||||
|
UiSetup();
|
||||||
|
Initialize();
|
||||||
|
}
|
||||||
|
|
||||||
|
SponsorWindow::~SponsorWindow() {
|
||||||
|
delete ui;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 窗口相关属性设置
|
||||||
|
*/
|
||||||
|
void SponsorWindow::UiSetup() {
|
||||||
|
setFixedSize(size());
|
||||||
|
setWindowFlags(windowFlags() & ~Qt::WindowContextHelpButtonHint);
|
||||||
|
ui->payLbl->setScaledContents(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 窗口初始化
|
||||||
|
*/
|
||||||
|
void SponsorWindow::Initialize() {
|
||||||
|
connect(ui->aliPayBtn, &QPushButton::clicked, this, &SponsorWindow::AliPayClickedHandle);
|
||||||
|
connect(ui->wxPayBtn, &QPushButton::clicked, this, &SponsorWindow::WxPayClickedHandle);
|
||||||
|
|
||||||
|
ui->wxPayBtn->click();
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 支付宝支付
|
||||||
|
*/
|
||||||
|
void SponsorWindow::AliPayClickedHandle() {
|
||||||
|
QPixmap img{};
|
||||||
|
if (!img.load(":/alipay")) {
|
||||||
|
QMessageBox::critical(this, "错误", "支付码载入错误!");
|
||||||
|
deleteLater();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
img.scaled(ui->payLbl->size(), Qt::KeepAspectRatio);
|
||||||
|
ui->payLbl->setPixmap(img);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief 微信支付
|
||||||
|
*/
|
||||||
|
void SponsorWindow::WxPayClickedHandle() {
|
||||||
|
QPixmap img{};
|
||||||
|
if (!img.load(":/wxpay")) {
|
||||||
|
QMessageBox::critical(this, "错误", "支付码载入错误!");
|
||||||
|
deleteLater();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
img.scaled(ui->payLbl->size(), Qt::KeepAspectRatio);
|
||||||
|
ui->payLbl->setPixmap(img);
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,204 @@
|
||||||
|
#include <utility>
|
||||||
|
#include <QObject>
|
||||||
|
#include <QFileDialog>
|
||||||
|
#include <QMessageBox>
|
||||||
|
#include <QHash>
|
||||||
|
#include <QImage>
|
||||||
|
#include <QThreadPool>
|
||||||
|
|
||||||
|
#include <include/gui/taskwindow.h>
|
||||||
|
#include <include/layer/tmslayer.h>
|
||||||
|
#include <include/utils/network.h>
|
||||||
|
#include <include/utils/imgwriter.h>
|
||||||
|
#include <include/provider/tmsprovider.h>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
namespace LAMPMainWidget
|
||||||
|
{
|
||||||
|
void
|
||||||
|
DownloadTask::run()
|
||||||
|
{
|
||||||
|
auto currentLayer = dynamic_cast<const TmsLayer *>(mTaskInfo.layer);
|
||||||
|
auto provider = dynamic_cast<const TmsProvider*>(¤tLayer->provider());
|
||||||
|
auto tileSize = provider->tileSize();
|
||||||
|
|
||||||
|
QHash<QPoint, QString> tiles{};
|
||||||
|
QSize imgSize{};
|
||||||
|
if (!currentLayer->parseTiles(mTaskInfo.extent, mTaskInfo.zoom, tiles, imgSize)) {
|
||||||
|
qCritical() << "瓦片路径解析错误";
|
||||||
|
generateErrorRow();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
generateSuccessRow();
|
||||||
|
|
||||||
|
ImgWriter imgWriter{mTaskInfo.taskPath, imgSize};
|
||||||
|
QByteArray tileData{};
|
||||||
|
Network web{};
|
||||||
|
auto item = tiles.constBegin();
|
||||||
|
auto count = tiles.count();
|
||||||
|
int completed{0};
|
||||||
|
for (; item != tiles.constEnd(); ++item) {
|
||||||
|
tileData = web.httpsRequest(item.value());
|
||||||
|
if (tileData.isEmpty()) {
|
||||||
|
qCritical() << item.value() << "下载数据为空";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
++completed;
|
||||||
|
auto pos = QPoint(item.key().x() * tileSize.width(), item.key().y() * tileSize.height());
|
||||||
|
if (!imgWriter.write(pos, tileData)) {
|
||||||
|
qCritical() << "瓦片写出失败";
|
||||||
|
}
|
||||||
|
double progress = static_cast<double>(completed) / count;
|
||||||
|
auto progessStr = QString("%1").arg(progress * 100);
|
||||||
|
mTaskInfo.display->takeItem(mRowId, 4);
|
||||||
|
mTaskInfo.display->setItem(mRowId, 4,
|
||||||
|
new QTableWidgetItem(QString("%1").arg(progress * 100)));
|
||||||
|
// mTaskInfo.display->resizeColumnsToContents();
|
||||||
|
// mTaskInfo.display->horizontalHeader()->setStretchLastSection(true);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
DownloadTask::generateCommonRow()
|
||||||
|
{
|
||||||
|
auto provider = dynamic_cast<const TmsProvider*>(&mTaskInfo.layer->provider());
|
||||||
|
mRowId = mTaskInfo.display->rowCount();
|
||||||
|
mTaskInfo.display->insertRow(mRowId);
|
||||||
|
mTaskInfo.display->setItem(mRowId, 0, new QTableWidgetItem(mTaskInfo.taskName));
|
||||||
|
mTaskInfo.display->setItem(mRowId, 1, new QTableWidgetItem(getExtentStr()));
|
||||||
|
mTaskInfo.display->setItem(mRowId, 2, new QTableWidgetItem(QString("%1").arg(mTaskInfo.zoom)));
|
||||||
|
mTaskInfo.display->setItem(mRowId, 3, new QTableWidgetItem(provider->id()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
DownloadTask::generateErrorRow()
|
||||||
|
{
|
||||||
|
generateCommonRow();
|
||||||
|
mTaskInfo.display->setItem(mRowId, 4, new QTableWidgetItem("任务新建失败"));
|
||||||
|
mTaskInfo.display->resizeColumnsToContents();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
DownloadTask::generateSuccessRow()
|
||||||
|
{
|
||||||
|
generateCommonRow();
|
||||||
|
mTaskInfo.display->setItem(mRowId, 4, new QTableWidgetItem("0.0%"));
|
||||||
|
mTaskInfo.display->resizeColumnsToContents();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString
|
||||||
|
DownloadTask::getExtentStr()
|
||||||
|
{
|
||||||
|
auto leftTop = mTaskInfo.extent.topLeft();
|
||||||
|
auto rightBottom = mTaskInfo.extent.bottomRight();
|
||||||
|
return QString("[%1, %2], [%3, %4]").arg(leftTop.x()).arg(leftTop.y())
|
||||||
|
.arg(rightBottom.x()).arg(rightBottom.y());
|
||||||
|
}
|
||||||
|
|
||||||
|
TaskWindow::TaskWindow(QWidget* parent)
|
||||||
|
: mUi(new Ui::TaskWindow),
|
||||||
|
mParent(dynamic_cast<MainWindow *>(parent)),
|
||||||
|
mSavePath(),
|
||||||
|
QDialog(parent)
|
||||||
|
{
|
||||||
|
mUi->setupUi(this);
|
||||||
|
setupWindow();
|
||||||
|
setupAction();
|
||||||
|
}
|
||||||
|
|
||||||
|
TaskWindow::~TaskWindow()
|
||||||
|
{
|
||||||
|
delete mUi;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TaskWindow::setupWindow()
|
||||||
|
{
|
||||||
|
setFixedSize(size());
|
||||||
|
auto currentLayer = dynamic_cast<const TmsLayer *>(mParent->mMapConvas->currentLayer());
|
||||||
|
|
||||||
|
auto minZoom = currentLayer->minZoom();
|
||||||
|
auto maxZoom = currentLayer->maxZoom();
|
||||||
|
for (auto i = minZoom; i <= maxZoom; ++i) {
|
||||||
|
mUi->zoomValueCbx->addItem(QString("%1").arg(i), i);
|
||||||
|
}
|
||||||
|
mUi->leftTopText->setText(
|
||||||
|
QString("%1, %2").arg(mParent->mLeftTop.x()).arg(mParent->mLeftTop.y()));
|
||||||
|
mUi->rightBottomText->setText(
|
||||||
|
QString("%1, %2").arg(mParent->mRightBottom.x()).arg(mParent->mRightBottom.y()));
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TaskWindow::setupAction()
|
||||||
|
{
|
||||||
|
QObject::connect(mUi->exitBtn, &QPushButton::clicked, this, &TaskWindow::close);
|
||||||
|
QObject::connect(mUi->createBtn, &QPushButton::clicked, this, &TaskWindow::createTask);
|
||||||
|
QObject::connect(mUi->saveDirBtn, &QPushButton::clicked, this, &TaskWindow::setupSaveDir);
|
||||||
|
QObject::connect(mUi->taskNameText, &QLineEdit::textChanged, this, &TaskWindow::setupTaskName);
|
||||||
|
QObject::connect(mUi->zoomValueCbx, QOverload<int>::of(&QComboBox::currentIndexChanged),
|
||||||
|
this, &TaskWindow::setupZoomValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TaskWindow::createTask()
|
||||||
|
{
|
||||||
|
if (!taskInfoCheck()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mSavePath.append("/").append(mTaskName).append(".tiff");
|
||||||
|
auto savePath = QDir::toNativeSeparators(mSavePath);
|
||||||
|
auto extent = QRectF(QPointF(mParent->mLeftTop.x(), mParent->mLeftTop.y()),
|
||||||
|
QPointF(mParent->mRightBottom.x(), mParent->mRightBottom.y()));
|
||||||
|
auto tileInfo = TaskInfo{mTaskName, savePath, extent,
|
||||||
|
mZoomValue, mParent->mMapConvas->currentLayer(),mParent->mUi->taskTable};
|
||||||
|
|
||||||
|
auto task = new DownloadTask(tileInfo);
|
||||||
|
QThreadPool::globalInstance()->start(task);
|
||||||
|
close();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TaskWindow::setupSaveDir()
|
||||||
|
{
|
||||||
|
auto saveDir = QFileDialog::getExistingDirectory(dynamic_cast<QWidget *>(this), "存储路径选择");
|
||||||
|
if (saveDir.isEmpty()) {
|
||||||
|
qWarning() << "未选择存储路径";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mSavePath = saveDir;
|
||||||
|
mUi->saveDirText->setText(mSavePath);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TaskWindow::setupTaskName(const QString& text)
|
||||||
|
{
|
||||||
|
qDebug() << "任务名=>" << text;
|
||||||
|
mTaskName = text;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
TaskWindow::taskInfoCheck()
|
||||||
|
{
|
||||||
|
if (mTaskName.isEmpty()) {
|
||||||
|
QMessageBox::critical(dynamic_cast<QWidget *>(this), "错误", "任务名称为空");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (mSavePath.isEmpty()) {
|
||||||
|
QMessageBox::critical(dynamic_cast<QWidget *>(this), "错误", "存储路径为空");
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TaskWindow::setupZoomValue(int index)
|
||||||
|
{
|
||||||
|
auto zoom = mUi->zoomValueCbx->itemData(index).toInt();
|
||||||
|
qDebug() << "设置下载任务zoom值=>" << zoom;
|
||||||
|
mZoomValue = zoom;
|
||||||
|
}
|
||||||
|
}
|
|
@ -0,0 +1,55 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QRectF>
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
|
#include <include/pointxy.h>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget
|
||||||
|
{
|
||||||
|
class CRS
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
CRS() = default;
|
||||||
|
virtual ~CRS() = default;
|
||||||
|
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* 将wgs84的经纬度坐标装换为该坐标系坐标
|
||||||
|
* @param point 点坐标
|
||||||
|
* @return wgs84坐标
|
||||||
|
*/
|
||||||
|
virtual PointXY forward(const PointXY& point) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将该坐标系坐标转换为wgs84的经纬度坐标
|
||||||
|
* @param point 点坐标
|
||||||
|
* @return wgs84坐标
|
||||||
|
*/
|
||||||
|
virtual PointXY inverse(const PointXY& point) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回该坐标系在proj4中的转换公式
|
||||||
|
* @return 转换公式的字符串
|
||||||
|
*/
|
||||||
|
virtual QString proj4Cvt() const = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回该坐标系的wkt定义
|
||||||
|
* @return 坐标系的wkt定义字符串
|
||||||
|
*/
|
||||||
|
virtual QString wktDef() const = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回该坐标系的proj4定义
|
||||||
|
* @return proj4的定义字符串
|
||||||
|
*/
|
||||||
|
virtual QString proj4Def() const = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回该坐标系的整个投影大小
|
||||||
|
* @return 投影的整个大小
|
||||||
|
*/
|
||||||
|
virtual QRectF extent() const = 0;
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,56 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QtCore/QRectF>
|
||||||
|
#include <QtCore/QString>
|
||||||
|
|
||||||
|
#include <include/crs.h>
|
||||||
|
#include <include/pointxy.h>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* Web莫卡托投影,一般用于web地图投影坐标系。
|
||||||
|
* google地图,openstreetmap等,将原点移至了左上角。
|
||||||
|
*/
|
||||||
|
class WebMercator : public CRS
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* 返回该坐标系在proj4中的转换公式
|
||||||
|
* @return 转换公式的字符串
|
||||||
|
*/
|
||||||
|
QString proj4Cvt() const override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回该坐标系的wkt定义
|
||||||
|
* @return 坐标系的wkt定义字符串
|
||||||
|
*/
|
||||||
|
QString wktDef() const override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回该坐标系的proj4定义
|
||||||
|
* @return proj4的定义字符串
|
||||||
|
*/
|
||||||
|
QString proj4Def() const override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 返回该坐标系的整个投影大小
|
||||||
|
* @return 投影的整个大小
|
||||||
|
*/
|
||||||
|
QRectF extent() const override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将wgs84的经纬度坐标装换为该坐标系坐标
|
||||||
|
* @param point 点坐标
|
||||||
|
* @return wgs84坐标
|
||||||
|
*/
|
||||||
|
PointXY forward(const PointXY& point) const override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将该坐标系坐标转换为wgs84的经纬度坐标
|
||||||
|
* @param point 点坐标
|
||||||
|
* @return wgs84坐标
|
||||||
|
*/
|
||||||
|
PointXY inverse(const PointXY& point) const override;
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,95 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "ui_mainwindow.h"
|
||||||
|
#include <QMainWindow>
|
||||||
|
#include <QVector>
|
||||||
|
#include <QLabel>
|
||||||
|
#include <QLineEdit>
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QActionGroup>
|
||||||
|
#include <QListWidgetItem>
|
||||||
|
#include <QHash>
|
||||||
|
|
||||||
|
#include <include/mapcanvas.h>
|
||||||
|
#include <include/maplayer.h>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class MainWindow;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
|
||||||
|
class MainWindow : public QMainWindow {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
friend class TaskWindow;
|
||||||
|
friend class DownloadTask;
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
void changeTaskTable(int row, int col, QString text);
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit MainWindow(QWidget *parent = nullptr);
|
||||||
|
~MainWindow() override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void setupWindow();
|
||||||
|
void setupActions();
|
||||||
|
void setupStatusBar();
|
||||||
|
void setupLayers();
|
||||||
|
void setupTaskWindow();
|
||||||
|
void initMaps();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
/// 各处处理函数
|
||||||
|
void panHandle(bool checked);
|
||||||
|
void zoomInHandle(bool checked);
|
||||||
|
void zoomOutHandle(bool checked);
|
||||||
|
void drawlineHandle(bool checked);
|
||||||
|
void tutorialHanle(bool checked);
|
||||||
|
void srcHandle(bool checked);
|
||||||
|
void sponsorHandle(bool checked);
|
||||||
|
void refreshHandle(bool checked);
|
||||||
|
void selectHandle(bool checked);
|
||||||
|
void zoomChangedHandle(int zoom);
|
||||||
|
void clickedHandle(PointXY pos);
|
||||||
|
void centerChangedHandle(PointXY pos);
|
||||||
|
void leftTopClickedHandle();
|
||||||
|
void rightBottomClickedHandle();
|
||||||
|
void createDownloadTask();
|
||||||
|
void layerChanged(QListWidgetItem *current, QListWidgetItem *previous);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
private:
|
||||||
|
QWidget *spacerWiget(int width) const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
static QString tutorialUrl();
|
||||||
|
static QString srcUrl();
|
||||||
|
|
||||||
|
private slots:
|
||||||
|
void on_drawArea_triggered();
|
||||||
|
|
||||||
|
void on_addPlaneaction_triggered();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::MainWindow *mUi;
|
||||||
|
MapCanvas *mMapConvas;
|
||||||
|
QLineEdit *mScaleText;
|
||||||
|
QLabel *mScaleLabel;
|
||||||
|
QLineEdit *mCenterText;
|
||||||
|
QLabel *mCenterLabel;
|
||||||
|
QLineEdit *mZoomText;
|
||||||
|
QLabel *mZoomLabel;
|
||||||
|
QActionGroup *mMapActionGroup;
|
||||||
|
bool mSetLeftTop;
|
||||||
|
QVector<QListWidgetItem*> mLayerList;
|
||||||
|
PointXY mLeftTop;
|
||||||
|
PointXY mRightBottom;
|
||||||
|
|
||||||
|
private:
|
||||||
|
static QHash<QString, MapLayer*> mMaps;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,419 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>MainWindow</class>
|
||||||
|
<widget class="QMainWindow" name="MainWindow">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>1450</width>
|
||||||
|
<height>1000</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="sizePolicy">
|
||||||
|
<sizepolicy hsizetype="Expanding" vsizetype="Expanding">
|
||||||
|
<horstretch>0</horstretch>
|
||||||
|
<verstretch>0</verstretch>
|
||||||
|
</sizepolicy>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>地图下载器</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="centralwidget">
|
||||||
|
<widget class="QWidget" name="gridLayoutWidget">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>1441</width>
|
||||||
|
<height>911</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="mainLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QTabWidget" name="tabWidget">
|
||||||
|
<property name="currentIndex">
|
||||||
|
<number>0</number>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="mapTab">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>地图</string>
|
||||||
|
</attribute>
|
||||||
|
<widget class="QWidget" name="gridLayoutWidget_2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>1241</width>
|
||||||
|
<height>881</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="mapCanvasLayout"/>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="gridLayoutWidget_3">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>1250</x>
|
||||||
|
<y>-1</y>
|
||||||
|
<width>191</width>
|
||||||
|
<height>881</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="infoLayout">
|
||||||
|
<item row="0" column="1">
|
||||||
|
<widget class="QGroupBox" name="layersListGbx">
|
||||||
|
<property name="title">
|
||||||
|
<string/>
|
||||||
|
</property>
|
||||||
|
<widget class="QGroupBox" name="layersGbx">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>10</y>
|
||||||
|
<width>171</width>
|
||||||
|
<height>611</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>图层列表</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QWidget" name="gridLayoutWidget_4">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>9</x>
|
||||||
|
<y>30</y>
|
||||||
|
<width>151</width>
|
||||||
|
<height>571</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="layersLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QListWidget" name="layerList"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<widget class="QGroupBox" name="downloadGbx">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>650</y>
|
||||||
|
<width>171</width>
|
||||||
|
<height>221</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>下载区域</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QLineEdit" name="leftTopText">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>40</y>
|
||||||
|
<width>151</width>
|
||||||
|
<height>31</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" name="leftTopBtn">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>80</y>
|
||||||
|
<width>151</width>
|
||||||
|
<height>25</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>点击开始选择左上角点</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>选择左上角</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" name="rightBottomText">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>12</x>
|
||||||
|
<y>140</y>
|
||||||
|
<width>151</width>
|
||||||
|
<height>31</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" name="rightBottomBtn">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>180</y>
|
||||||
|
<width>151</width>
|
||||||
|
<height>25</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>点击开始选择右下角点</string>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>选择右下角</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="taskTab">
|
||||||
|
<attribute name="title">
|
||||||
|
<string>任务</string>
|
||||||
|
</attribute>
|
||||||
|
<widget class="QWidget" name="gridLayoutWidget_5">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>1431</width>
|
||||||
|
<height>871</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QGridLayout" name="taskLayout">
|
||||||
|
<item row="0" column="0">
|
||||||
|
<widget class="QTableWidget" name="taskTable"/>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<widget class="QMenuBar" name="menubar">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>1450</width>
|
||||||
|
<height>23</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<widget class="QMenu" name="projectMenu">
|
||||||
|
<property name="title">
|
||||||
|
<string>项目</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QMenu" name="editMenu">
|
||||||
|
<property name="title">
|
||||||
|
<string>编辑</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QMenu" name="viewMenu">
|
||||||
|
<property name="title">
|
||||||
|
<string>视图</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QMenu" name="layersMenu">
|
||||||
|
<property name="title">
|
||||||
|
<string>图层</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QMenu" name="optionsMenu">
|
||||||
|
<property name="title">
|
||||||
|
<string>设置</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QMenu" name="toolsMenu">
|
||||||
|
<property name="title">
|
||||||
|
<string>工具</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QMenu" name="helpMenu">
|
||||||
|
<property name="title">
|
||||||
|
<string>帮助</string>
|
||||||
|
</property>
|
||||||
|
<addaction name="tutorialAction"/>
|
||||||
|
<addaction name="srcAction"/>
|
||||||
|
<addaction name="separator"/>
|
||||||
|
</widget>
|
||||||
|
<addaction name="projectMenu"/>
|
||||||
|
<addaction name="editMenu"/>
|
||||||
|
<addaction name="viewMenu"/>
|
||||||
|
<addaction name="layersMenu"/>
|
||||||
|
<addaction name="optionsMenu"/>
|
||||||
|
<addaction name="toolsMenu"/>
|
||||||
|
<addaction name="helpMenu"/>
|
||||||
|
</widget>
|
||||||
|
<widget class="QStatusBar" name="statusbar"/>
|
||||||
|
<widget class="QToolBar" name="toolBar">
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>toolBar</string>
|
||||||
|
</property>
|
||||||
|
<attribute name="toolBarArea">
|
||||||
|
<enum>TopToolBarArea</enum>
|
||||||
|
</attribute>
|
||||||
|
<attribute name="toolBarBreak">
|
||||||
|
<bool>false</bool>
|
||||||
|
</attribute>
|
||||||
|
<addaction name="selectAction"/>
|
||||||
|
<addaction name="panAction"/>
|
||||||
|
<addaction name="zoomInAction"/>
|
||||||
|
<addaction name="zoomOutAction"/>
|
||||||
|
<addaction name="refreshAction"/>
|
||||||
|
<addaction name="drawArea"/>
|
||||||
|
<addaction name="drawlineAction"/>
|
||||||
|
<addaction name="separator"/>
|
||||||
|
<addaction name="addPlaneaction"/>
|
||||||
|
<addaction name="downloadAction"/>
|
||||||
|
<addaction name="separator"/>
|
||||||
|
</widget>
|
||||||
|
<action name="tutorialAction">
|
||||||
|
<property name="text">
|
||||||
|
<string>使用教程</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="srcAction">
|
||||||
|
<property name="text">
|
||||||
|
<string>源码</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>源码</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="sponsorAction">
|
||||||
|
<property name="text">
|
||||||
|
<string>捐赠</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="panAction">
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="default" resource="../../resources/res.qrc">
|
||||||
|
<normaloff>:/themes/mActionPan</normaloff>:/themes/mActionPan</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>拖动</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>拖动图层,查看不同地方</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="zoomInAction">
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="default" resource="../../resources/res.qrc">
|
||||||
|
<normaloff>:/themes/mActionZoomIn</normaloff>:/themes/mActionZoomIn</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>放大</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>增大zoom值</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="zoomOutAction">
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="default" resource="../../resources/res.qrc">
|
||||||
|
<normaloff>:/themes/mActionZoomOut</normaloff>:/themes/mActionZoomOut</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>缩小</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>减小zoom值</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="refreshAction">
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="default" resource="../../resources/res.qrc">
|
||||||
|
<normaloff>:/themes/mActionRefresh</normaloff>:/themes/mActionRefresh</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>刷新地图</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>刷新地图显示内容</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="downloadAction">
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="default" resource="../../resources/res.qrc">
|
||||||
|
<normaloff>:/themes/mActionDownload</normaloff>:/themes/mActionDownload</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>下载</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>创建下载任务</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="selectAction">
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset theme="default" resource="../../resources/res.qrc">
|
||||||
|
<normaloff>:/themes/mActionSelect</normaloff>:/themes/mActionSelect</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>选择</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>选择地图中点</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="drawlineAction">
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="checked">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>航线</string>
|
||||||
|
</property>
|
||||||
|
<property name="toolTip">
|
||||||
|
<string>绘制航线</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="drawArea">
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>区域</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
<action name="addPlaneaction">
|
||||||
|
<property name="checkable">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="icon">
|
||||||
|
<iconset resource="../../resources/res.qrc">
|
||||||
|
<normaloff>:/plane-red.png</normaloff>:/plane-red.png</iconset>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>飞机</string>
|
||||||
|
</property>
|
||||||
|
</action>
|
||||||
|
</widget>
|
||||||
|
<resources>
|
||||||
|
<include location="../../resources/res.qrc"/>
|
||||||
|
</resources>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
|
@ -0,0 +1,26 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "ui_sponsorwindow.h"
|
||||||
|
#include <QtWidgets/QDialog>
|
||||||
|
|
||||||
|
namespace Ui {
|
||||||
|
class SponsorWindow;
|
||||||
|
}
|
||||||
|
|
||||||
|
class SponsorWindow : public QDialog {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit SponsorWindow(QWidget *parent = 0);
|
||||||
|
~SponsorWindow();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void UiSetup();
|
||||||
|
void Initialize();
|
||||||
|
|
||||||
|
void WxPayClickedHandle();
|
||||||
|
void AliPayClickedHandle();
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::SponsorWindow *ui;
|
||||||
|
};
|
|
@ -0,0 +1,77 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>SponsorWindow</class>
|
||||||
|
<widget class="QDialog" name="SponsorWindow">
|
||||||
|
<property name="windowModality">
|
||||||
|
<enum>Qt::NonModal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>283</width>
|
||||||
|
<height>338</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="contextMenuPolicy">
|
||||||
|
<enum>Qt::DefaultContextMenu</enum>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>赞助作者</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel" name="payLbl">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>20</y>
|
||||||
|
<width>261</width>
|
||||||
|
<height>261</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>支付码</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QWidget" name="horizontalLayoutWidget">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>30</x>
|
||||||
|
<y>290</y>
|
||||||
|
<width>221</width>
|
||||||
|
<height>41</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<layout class="QHBoxLayout" name="horizontalLayout">
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="wxPayBtn">
|
||||||
|
<property name="text">
|
||||||
|
<string>微信支付</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<spacer name="horizontalSpacer">
|
||||||
|
<property name="orientation">
|
||||||
|
<enum>Qt::Horizontal</enum>
|
||||||
|
</property>
|
||||||
|
<property name="sizeHint" stdset="0">
|
||||||
|
<size>
|
||||||
|
<width>40</width>
|
||||||
|
<height>20</height>
|
||||||
|
</size>
|
||||||
|
</property>
|
||||||
|
</spacer>
|
||||||
|
</item>
|
||||||
|
<item>
|
||||||
|
<widget class="QPushButton" name="aliPayBtn">
|
||||||
|
<property name="text">
|
||||||
|
<string>支付宝支付</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</item>
|
||||||
|
</layout>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
|
@ -0,0 +1,76 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include "ui_taskwindow.h"
|
||||||
|
#include <QDialog>
|
||||||
|
#include <QWidget>
|
||||||
|
#include <QString>
|
||||||
|
#include <QRunnable>
|
||||||
|
|
||||||
|
#include <include/gui/mainwindow.h>
|
||||||
|
#include <include/layerprovider.h>
|
||||||
|
#include <include/pointxy.h>
|
||||||
|
|
||||||
|
namespace Ui{
|
||||||
|
class TaskWindow;
|
||||||
|
}
|
||||||
|
|
||||||
|
namespace LAMPMainWidget{
|
||||||
|
struct TaskInfo{
|
||||||
|
QString taskName;
|
||||||
|
QString taskPath;
|
||||||
|
QRectF extent;
|
||||||
|
int zoom;
|
||||||
|
const MapLayer *layer;
|
||||||
|
QTableWidget *display;
|
||||||
|
};
|
||||||
|
|
||||||
|
class DownloadTask : public QObject, public QRunnable {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void progressChanged(int row, int column, QString text);
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit DownloadTask(TaskInfo task, QObject *parent = nullptr)
|
||||||
|
: mTaskInfo(std::move(task)), mRowId(), QObject(parent), QRunnable() {}
|
||||||
|
~DownloadTask() override = default;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void run() override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void generateCommonRow();
|
||||||
|
void generateErrorRow();
|
||||||
|
void generateSuccessRow();
|
||||||
|
QString getExtentStr();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
TaskInfo mTaskInfo;
|
||||||
|
int mRowId;
|
||||||
|
};
|
||||||
|
|
||||||
|
class TaskWindow: public QDialog{
|
||||||
|
Q_OBJECT
|
||||||
|
public:
|
||||||
|
explicit TaskWindow(QWidget * parent= nullptr);
|
||||||
|
~TaskWindow() override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void setupWindow();
|
||||||
|
void setupAction();
|
||||||
|
void createTask();
|
||||||
|
void setupSaveDir();
|
||||||
|
void setupTaskName(const QString &text);
|
||||||
|
bool taskInfoCheck();
|
||||||
|
void setupZoomValue(int index);
|
||||||
|
|
||||||
|
private:
|
||||||
|
Ui::TaskWindow *mUi;
|
||||||
|
MainWindow *mParent;
|
||||||
|
|
||||||
|
QString mSavePath;
|
||||||
|
QString mTaskName;
|
||||||
|
int mZoomValue;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,208 @@
|
||||||
|
<?xml version="1.0" encoding="UTF-8"?>
|
||||||
|
<ui version="4.0">
|
||||||
|
<class>TaskWindow</class>
|
||||||
|
<widget class="QDialog" name="TaskWindow">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>0</x>
|
||||||
|
<y>0</y>
|
||||||
|
<width>640</width>
|
||||||
|
<height>400</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="windowTitle">
|
||||||
|
<string>创建任务</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QGroupBox" name="groupBox">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>10</x>
|
||||||
|
<y>10</y>
|
||||||
|
<width>621</width>
|
||||||
|
<height>311</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>任务信息</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QLineEdit" name="saveDirText">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>100</x>
|
||||||
|
<y>40</y>
|
||||||
|
<width>391</width>
|
||||||
|
<height>30</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" name="saveDirBtn">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>510</x>
|
||||||
|
<y>40</y>
|
||||||
|
<width>89</width>
|
||||||
|
<height>30</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>选择路径</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QGroupBox" name="groupBox_2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>20</x>
|
||||||
|
<y>130</y>
|
||||||
|
<width>581</width>
|
||||||
|
<height>161</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="title">
|
||||||
|
<string>下载区域</string>
|
||||||
|
</property>
|
||||||
|
<widget class="QLabel" name="label">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>20</x>
|
||||||
|
<y>40</y>
|
||||||
|
<width>67</width>
|
||||||
|
<height>30</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>左上角</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_2">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>320</x>
|
||||||
|
<y>40</y>
|
||||||
|
<width>67</width>
|
||||||
|
<height>30</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>右下角</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" name="leftTopText">
|
||||||
|
<property name="enabled">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>100</x>
|
||||||
|
<y>40</y>
|
||||||
|
<width>141</width>
|
||||||
|
<height>30</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" name="rightBottomText">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>400</x>
|
||||||
|
<y>40</y>
|
||||||
|
<width>141</width>
|
||||||
|
<height>30</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="readOnly">
|
||||||
|
<bool>true</bool>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_5">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>20</x>
|
||||||
|
<y>100</y>
|
||||||
|
<width>67</width>
|
||||||
|
<height>30</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>Zoom值</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QComboBox" name="zoomValueCbx">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>100</x>
|
||||||
|
<y>100</y>
|
||||||
|
<width>441</width>
|
||||||
|
<height>30</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_3">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>20</x>
|
||||||
|
<y>40</y>
|
||||||
|
<width>67</width>
|
||||||
|
<height>30</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>保存路径</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLabel" name="label_4">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>20</x>
|
||||||
|
<y>90</y>
|
||||||
|
<width>67</width>
|
||||||
|
<height>30</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>任务名</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QLineEdit" name="taskNameText">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>100</x>
|
||||||
|
<y>90</y>
|
||||||
|
<width>391</width>
|
||||||
|
<height>30</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" name="createBtn">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>420</x>
|
||||||
|
<y>350</y>
|
||||||
|
<width>89</width>
|
||||||
|
<height>30</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>创建</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
<widget class="QPushButton" name="exitBtn">
|
||||||
|
<property name="geometry">
|
||||||
|
<rect>
|
||||||
|
<x>540</x>
|
||||||
|
<y>350</y>
|
||||||
|
<width>89</width>
|
||||||
|
<height>30</height>
|
||||||
|
</rect>
|
||||||
|
</property>
|
||||||
|
<property name="text">
|
||||||
|
<string>取消</string>
|
||||||
|
</property>
|
||||||
|
</widget>
|
||||||
|
</widget>
|
||||||
|
<resources/>
|
||||||
|
<connections/>
|
||||||
|
</ui>
|
|
@ -0,0 +1,70 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QString>
|
||||||
|
#include <QRectF>
|
||||||
|
|
||||||
|
#include <include/maplayer.h>
|
||||||
|
#include <include/mapcanvas.h>
|
||||||
|
#include <include/crs/webmercator.h>
|
||||||
|
#include <include/provider/tms/tmsproviderfactory.h>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* tms服务所用图层
|
||||||
|
*/
|
||||||
|
class TmsLayer : public MapLayer
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
TmsLayer(TmsProviders provider,
|
||||||
|
const QString& id,
|
||||||
|
MapCanvas* mapCanvas,
|
||||||
|
CRS* crs = new WebMercator{});
|
||||||
|
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* 获取图层在当前zoom值的分辨率
|
||||||
|
* @return 图层分辨率
|
||||||
|
*/
|
||||||
|
double resolution() const override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取图层的整个显示边界,一般情况下等同于坐标系的边界
|
||||||
|
* @return 图层的显示区域
|
||||||
|
*/
|
||||||
|
QRectF extent() const override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置图层的zoom值
|
||||||
|
* @param zoom 图层zoom值
|
||||||
|
*/
|
||||||
|
void setZoomValue(int zoom) override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 由rect和zoom值解析出该区域内的所有瓦片url路径,
|
||||||
|
* 并将结果存储在tiles中
|
||||||
|
* @param rect 区域(经纬度坐标)
|
||||||
|
* @param zoom zoom值
|
||||||
|
* @param tiles 结果
|
||||||
|
* @param size 下载的瓦片大小
|
||||||
|
* @return 是否解析成功
|
||||||
|
*/
|
||||||
|
bool parseTiles(const QRectF& rect, int zoom, QHash<QPoint, QString>& tiles, QSize& size) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图层所能支持的最大zoom值
|
||||||
|
* @return 最大zoom值
|
||||||
|
*/
|
||||||
|
virtual int maxZoom() const { return kMaxZoom; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图层所能支持的最小zoom值
|
||||||
|
* @return 最小zoom值
|
||||||
|
*/
|
||||||
|
virtual int minZoom() const { return kMinZoom; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
static const int kMinZoom{4};
|
||||||
|
static const int kMaxZoom{18};
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QtGui/QImage>
|
||||||
|
#include <QtCore/QMap>
|
||||||
|
#include <QtCore/QPointF>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
/**
|
||||||
|
* 用于图层的渲染数据提供,每个图层必须包含与其对应的provider。
|
||||||
|
*/
|
||||||
|
class LayerProvider : public QObject {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
virtual void createTask(const QRectF &rect, int zoom) = 0;
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit LayerProvider(QObject *parent = nullptr)
|
||||||
|
: QObject(parent) {}
|
||||||
|
~LayerProvider() override = default;
|
||||||
|
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* 返回可显示的图像内容
|
||||||
|
* @return 图像对象
|
||||||
|
*/
|
||||||
|
virtual const QImage preparedImage() const = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 判断是否有数据可以使用
|
||||||
|
* @return 有数据时为true,否则fasle
|
||||||
|
*/
|
||||||
|
virtual bool hasContent() const = 0;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,189 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QWheelEvent>
|
||||||
|
#include <QPaintEvent>
|
||||||
|
#include <QGraphicsView>
|
||||||
|
#include <QGraphicsScene>
|
||||||
|
#include <QTimer>
|
||||||
|
#include <QEvent>
|
||||||
|
#include <QKeyEvent>
|
||||||
|
#include <QMouseEvent>
|
||||||
|
#include <QResizeEvent>
|
||||||
|
#include <QDragEnterEvent>
|
||||||
|
#include <QRectF>
|
||||||
|
#include <QMarginsF>
|
||||||
|
#include <QHash>
|
||||||
|
|
||||||
|
#include <include/crs.h>
|
||||||
|
#include <include/pointxy.h>
|
||||||
|
#include <include/mapcanvasmap.h>
|
||||||
|
#include <include/maptool.h>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
class MapLayer;
|
||||||
|
class MapTool;
|
||||||
|
/**
|
||||||
|
* 地图容器类,继承自QGraphicsView。
|
||||||
|
* 整个地图的渲染都是基于“Qt GraphicsView Framework”设计。
|
||||||
|
*/
|
||||||
|
class MapCanvas : public QGraphicsView {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void zoomChanged(int zoom);
|
||||||
|
void crsChanged();
|
||||||
|
void clicked(PointXY pos);
|
||||||
|
void mapCenterChanged(PointXY pos);
|
||||||
|
|
||||||
|
friend class MapToolPan;
|
||||||
|
friend class MapToolZoomIn;
|
||||||
|
friend class MapToolZoomOut;
|
||||||
|
friend class MapToolSelect;
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit MapCanvas(QWidget *parent = nullptr);
|
||||||
|
~MapCanvas() override;
|
||||||
|
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* 刷新地图容器,这会更新每一个显示的图层的内容
|
||||||
|
*/
|
||||||
|
void refreshMap();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 向容器中添加图层,默认情况下容器会使用首个图层的坐标系作为自身的坐标系
|
||||||
|
* @param layer 图层对象
|
||||||
|
*/
|
||||||
|
void addLayer(MapLayer *layer);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取地图容器的比例尺
|
||||||
|
* @return 容器的比例尺
|
||||||
|
*/
|
||||||
|
double scale() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取地图容器的解析度
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
double resolution() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取容器的zoom值
|
||||||
|
* @return 容器的zoom值
|
||||||
|
*/
|
||||||
|
int zoomValue() const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置容器的zoom值
|
||||||
|
* @param zoom zoom值
|
||||||
|
*/
|
||||||
|
void setZoomValue(int zoom);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取容器当前所显示的地图区域
|
||||||
|
* @return 当前所显示地图区域
|
||||||
|
*/
|
||||||
|
const QRectF &viewExtent() const { return mViewExtent; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置容器坐标系,设置过后会更新所有图层坐标系。
|
||||||
|
* 默认会对容器中的图层做投影变换处理
|
||||||
|
* @param crs 坐标系
|
||||||
|
*/
|
||||||
|
void setCrs(const CRS *crs);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取地图容器的坐标系
|
||||||
|
* @return 地图容器坐标系
|
||||||
|
*/
|
||||||
|
const CRS &crs() const { return *mCrs; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置地图容器的当前选中图层
|
||||||
|
* @param id 图层的id
|
||||||
|
*/
|
||||||
|
void setCurrentLayer(const QString &id);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取地图容器当前选中图层
|
||||||
|
* @return 当前选中图层
|
||||||
|
*/
|
||||||
|
const MapLayer *currentLayer() { return mCurrentLayer; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取地图当前视图中心点经纬度坐标
|
||||||
|
* @return 视图中心点经纬度坐标
|
||||||
|
*/
|
||||||
|
const PointXY &mapCenter() const { return mMapCenter; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 选择地图工具
|
||||||
|
* @param tool 工具名称
|
||||||
|
* @return 是否选择成功
|
||||||
|
*/
|
||||||
|
bool selectTool(const QString &tool);
|
||||||
|
|
||||||
|
|
||||||
|
void timerEvent(QTimerEvent *event);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
/**
|
||||||
|
* 更新容器的可视化区域。
|
||||||
|
* 每次拖动操作和resize事件会调用该方法
|
||||||
|
*/
|
||||||
|
void updateViewExtent(bool reset = false);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 将屏幕坐标转换为经纬度坐标
|
||||||
|
* @param point 屏幕上点
|
||||||
|
* @return 经纬度坐标
|
||||||
|
*/
|
||||||
|
PointXY pixel2Lonlat(const QPointF &point) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 初始设置地图必须具备的工具
|
||||||
|
*/
|
||||||
|
void setupTools();
|
||||||
|
|
||||||
|
private:
|
||||||
|
/**
|
||||||
|
* 确保zoom值在限定的范围之内
|
||||||
|
* @param zoom 待设置zoom值
|
||||||
|
* @return 可使用zoom值
|
||||||
|
*/
|
||||||
|
int normalizeZoom(int zoom) const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
void mousePressEvent(QMouseEvent *event) override;
|
||||||
|
void mouseReleaseEvent(QMouseEvent *event) override;
|
||||||
|
void wheelEvent(QWheelEvent *event) override;
|
||||||
|
void resizeEvent(QResizeEvent *event) override;
|
||||||
|
void mouseMoveEvent(QMouseEvent *event) override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
QGraphicsScene *mScene;
|
||||||
|
QRectF mMapExtent;
|
||||||
|
QRectF mViewExtent;
|
||||||
|
QRectF mDragRect;
|
||||||
|
bool mIsDragging;
|
||||||
|
QMap<QString, MapLayer *> mLayers;
|
||||||
|
MapLayer *mCurrentLayer;
|
||||||
|
const CRS *mCrs;
|
||||||
|
PointXY mMapCenter;
|
||||||
|
int mZoomValue;
|
||||||
|
PointXY mLastXY;
|
||||||
|
QTimer *mMapUpdateTimer;
|
||||||
|
MapTool *mCurrentTool;
|
||||||
|
QHash<QString, MapTool *> mMapTools;
|
||||||
|
|
||||||
|
private:
|
||||||
|
const static int kDefaultZoomValue{8};
|
||||||
|
static const int kMaxZoomValue{20};
|
||||||
|
static const int kMinZoomValue{1};
|
||||||
|
|
||||||
|
protected:
|
||||||
|
static PointXY defaultMapCenter();
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QGraphicsItem>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
|
||||||
|
class MapLayer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 地图容器中的地图
|
||||||
|
*/
|
||||||
|
class MapCanvasMap : public QGraphicsItem {
|
||||||
|
public:
|
||||||
|
explicit MapCanvasMap(MapLayer *layer, QGraphicsItem *parent = nullptr)
|
||||||
|
: mLayer(layer), QGraphicsItem(parent) {}
|
||||||
|
~MapCanvasMap() override = default;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
|
||||||
|
|
||||||
|
QRectF boundingRect() const override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置图层显示区域
|
||||||
|
* @param rect
|
||||||
|
*/
|
||||||
|
void setViewExtent(const QRectF &rect);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
/**
|
||||||
|
* 所属图层
|
||||||
|
*/
|
||||||
|
const MapLayer *mLayer;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 图层的显示区域
|
||||||
|
*/
|
||||||
|
QRectF mViewExtent;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,149 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QtCore/QString>
|
||||||
|
#include <QtCore/QDebug>
|
||||||
|
#include <QtCore/QRectF>
|
||||||
|
|
||||||
|
#include <include/crs.h>
|
||||||
|
#include <include/layerprovider.h>
|
||||||
|
#include <include/mapcanvasmap.h>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
class MapCanvas;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 地图容器中的图层,属于数据的集合并不包含任何显示需要的数据
|
||||||
|
*/
|
||||||
|
class MapLayer {
|
||||||
|
public:
|
||||||
|
MapLayer(const QString &id, CRS *crs, MapCanvas *mapCanvas);
|
||||||
|
MapLayer(const MapLayer &other);
|
||||||
|
MapLayer(MapLayer &&other) noexcept;
|
||||||
|
virtual ~MapLayer();
|
||||||
|
MapLayer &operator=(const MapLayer &other);
|
||||||
|
MapLayer &operator=(MapLayer &&other) noexcept;
|
||||||
|
|
||||||
|
public:
|
||||||
|
/*
|
||||||
|
* 获取图层的id
|
||||||
|
* @return 图层id字符串
|
||||||
|
*/
|
||||||
|
const QString &id() const { return mId; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 获取图层的显示z值
|
||||||
|
* @return z值
|
||||||
|
*/
|
||||||
|
const int zValue() const { return mZValue; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 获取图层的坐标系
|
||||||
|
* @return 图层的坐标系
|
||||||
|
*/
|
||||||
|
const CRS &crs() const { return *mCrs; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 获取图层所属的map容器
|
||||||
|
* @return 图层所属的map容器
|
||||||
|
*/
|
||||||
|
const MapCanvas &mapCanvas() const { return *mMapCanvas; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 获取图层的数据提供对象
|
||||||
|
* @return 图层的数据提供对象
|
||||||
|
*/
|
||||||
|
const LayerProvider &provider() const { return *mProvider; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 设置图层的id
|
||||||
|
* @param id 图层id
|
||||||
|
*/
|
||||||
|
void setId(const QString &id) { mId = id; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 设置图层的z值
|
||||||
|
* @param zValue 图层z值
|
||||||
|
*/
|
||||||
|
void setZValue(const int zValue) { mZValue = zValue; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 设置图层的坐标系
|
||||||
|
* @param crs 图层坐标系
|
||||||
|
*/
|
||||||
|
void setCrs(CRS *const crs) { mCrs = crs; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 设置图层的数据提供对象
|
||||||
|
* @param provider 图层的数据提供对象
|
||||||
|
*/
|
||||||
|
void setProvider(LayerProvider *const provider) { mProvider = provider; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 获取图层的pixel:m比例尺
|
||||||
|
* @return 图层的分辨率
|
||||||
|
*/
|
||||||
|
virtual double resolution() const = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 获取图层的整个显示边界
|
||||||
|
* @return 图层的显示边界
|
||||||
|
*/
|
||||||
|
virtual QRectF extent() const = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 获取图层的当前zoom值
|
||||||
|
* @return 图层的当前zoom值
|
||||||
|
*/
|
||||||
|
int zoomValue() const { return mZoomValue; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 设置图层的当前zoom值
|
||||||
|
* @param zoom 图层zoom值
|
||||||
|
*/
|
||||||
|
virtual void setZoomValue(int zoom) { mZoomValue = zoom; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 设置图层所属的地图容器
|
||||||
|
* @param map 图层所属的地图容器
|
||||||
|
*/
|
||||||
|
void setMap(MapCanvasMap *map) { mMapCanvasMap = map; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 获取图层的显示图元,这是图层最终的显示对象
|
||||||
|
* @return 图层的显示图元
|
||||||
|
*/
|
||||||
|
MapCanvasMap *map() const { return mMapCanvasMap; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 判断图层是否可显示
|
||||||
|
* @return 图层是否可显示,true显示,false则不显示
|
||||||
|
*/
|
||||||
|
bool isVisible() const {return mIsVisible;}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 设值图层的可显示属性
|
||||||
|
* @param visible true为显示,false则不显示
|
||||||
|
*/
|
||||||
|
void setVisiblity(bool visible) {mIsVisible = visible;}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 刷新图层内容
|
||||||
|
* @return 刷新图层内容,true则成功,否则为失败
|
||||||
|
*/
|
||||||
|
virtual void update();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
QString mId;
|
||||||
|
CRS *mCrs;
|
||||||
|
int mZValue;
|
||||||
|
int mZoomValue;
|
||||||
|
LayerProvider *mProvider;
|
||||||
|
MapCanvasMap *mMapCanvasMap;
|
||||||
|
const MapCanvas *mMapCanvas;
|
||||||
|
bool mIsVisible{false};
|
||||||
|
|
||||||
|
private:
|
||||||
|
const static int kDefaultZoomValue{10};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,42 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QtGui/QMouseEvent>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
class MapCanvas;
|
||||||
|
/**
|
||||||
|
* 地图的处理工具
|
||||||
|
*/
|
||||||
|
class MapTool {
|
||||||
|
public:
|
||||||
|
MapTool(MapCanvas *mapCanvas) : mMapCanvas(mapCanvas) {}
|
||||||
|
virtual ~MapTool();
|
||||||
|
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* 具体的工具处理程序
|
||||||
|
* @param event 鼠标事件
|
||||||
|
*/
|
||||||
|
virtual void execute(QMouseEvent *event) = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 提示将使用工具,此方法中可以为工具的环境做一些准备
|
||||||
|
*/
|
||||||
|
virtual void setup() = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 当工具不使用时,将相关环境还原至原先状态
|
||||||
|
*/
|
||||||
|
virtual void deSetup() = 0;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取工具的名称
|
||||||
|
* @return 工具名称
|
||||||
|
*/
|
||||||
|
virtual QString id() = 0;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
MapCanvas *mMapCanvas;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,99 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QtCore/QtGlobal>
|
||||||
|
#include <QtCore/QPoint>
|
||||||
|
#include <QtCore/QPointF>
|
||||||
|
#include <QtCore/QDebug>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
class PointXY {
|
||||||
|
public:
|
||||||
|
PointXY() = default;
|
||||||
|
PointXY(double x, double y) : mX(x), mY(y) {}
|
||||||
|
PointXY(const PointXY &other) = default;
|
||||||
|
PointXY(PointXY &&other) = default;
|
||||||
|
explicit PointXY(const QPointF &other) : mX(other.x()), mY(other.y()) {}
|
||||||
|
explicit PointXY(const QPoint &other) : mX(double(other.x())), mY(double(other.y())) {}
|
||||||
|
~PointXY() = default;
|
||||||
|
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* 设置x坐标
|
||||||
|
* @param x x轴坐标值
|
||||||
|
*/
|
||||||
|
void setX(double const x) { mX = x; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置y坐标
|
||||||
|
* @param y y轴坐标值
|
||||||
|
*/
|
||||||
|
void
|
||||||
|
setY(double const y) { mY = y; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 设置x和y坐标
|
||||||
|
* @param x x轴坐标值
|
||||||
|
* @param y y轴坐标值
|
||||||
|
*/
|
||||||
|
void set(double const x, double const y) {
|
||||||
|
mX = x;
|
||||||
|
mY = y;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取点的x轴坐标值
|
||||||
|
* @return x轴坐标值
|
||||||
|
*/
|
||||||
|
double x() const { return mX; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取点的y轴坐标值
|
||||||
|
* @return y轴坐标值
|
||||||
|
*/
|
||||||
|
double y() const { return mY; }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* (mX, mY)距离(x,y)的距离
|
||||||
|
* @param x x轴坐标
|
||||||
|
* @param y y轴坐标
|
||||||
|
* @return 两点间距离
|
||||||
|
*/
|
||||||
|
double distance(double x, double y) const;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* (mX, mY)距离点p的距离
|
||||||
|
* @param p 点坐标
|
||||||
|
* @return 两点间距离
|
||||||
|
*/
|
||||||
|
double distance(const PointXY &p) const { return distance(p.mX, p.mY); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* “缩放”点,x轴和y轴乘以scalar
|
||||||
|
* @param scalar “缩放”因子
|
||||||
|
*/
|
||||||
|
void multiply(double scalar) {
|
||||||
|
mX *= scalar;
|
||||||
|
mY *= scalar;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 输出为WKT格式字符串
|
||||||
|
* @return WKT数据
|
||||||
|
*/
|
||||||
|
QString toWKT() const;
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool operator==(const PointXY &other);
|
||||||
|
bool operator!=(const PointXY &other) { return !(*this == other); }
|
||||||
|
PointXY &operator=(const PointXY &other);
|
||||||
|
PointXY &operator=(const QPointF &other);
|
||||||
|
PointXY &operator=(const QPoint &other);
|
||||||
|
|
||||||
|
private:
|
||||||
|
double mX;
|
||||||
|
double mY;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QDebug operator<<(QDebug debug, const LAMPMainWidget::PointXY &point);
|
|
@ -0,0 +1,55 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QtCore/QSize>
|
||||||
|
#include <QtCore/QString>
|
||||||
|
|
||||||
|
#include <include/pointxy.h>
|
||||||
|
#include <include/provider/tmsprovider.h>
|
||||||
|
#include <include/utils/LAMPMainWidget.h>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 高德地图基础地图
|
||||||
|
*/
|
||||||
|
class GaodeNormalProvider : public TmsProvider {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit GaodeNormalProvider(QObject *parent = nullptr);
|
||||||
|
~GaodeNormalProvider() override = default;
|
||||||
|
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* 获取瓦片的大小
|
||||||
|
* @return 瓦片大小,一般为256*256
|
||||||
|
*/
|
||||||
|
const QSize tileSize() const override {
|
||||||
|
return QSize{256, 256};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取高德地图的瓦片服务器编号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
QString server() const { return QString("0%1").arg(randomInt(1, 4)); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取瓦片url路径
|
||||||
|
* @param pos 瓦片位置
|
||||||
|
* @param zoom zoom值
|
||||||
|
* @return 瓦片url,失败时为空字符串
|
||||||
|
*/
|
||||||
|
QString tileUrl(const PointXY &pos, int zoom) const override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取高德地图的id
|
||||||
|
* @return 高德地图id
|
||||||
|
*/
|
||||||
|
const QString &id() const override { return mId; }
|
||||||
|
|
||||||
|
private:
|
||||||
|
const QString mId{"gaodenormalmap"};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,8 @@
|
||||||
|
//
|
||||||
|
// Created by jackie on 18-7-30.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef LAMPMainWidget_GOOGLECHINANORMALPROVIDER_H
|
||||||
|
#define LAMPMainWidget_GOOGLECHINANORMALPROVIDER_H
|
||||||
|
|
||||||
|
#endif //LAMPMainWidget_GOOGLECHINANORMALPROVIDER_H
|
|
@ -0,0 +1,8 @@
|
||||||
|
//
|
||||||
|
// Created by jackie on 18-7-30.
|
||||||
|
//
|
||||||
|
|
||||||
|
#ifndef LAMPMainWidget_GOOGLECHINASATELLITEPROVIDER_H
|
||||||
|
#define LAMPMainWidget_GOOGLECHINASATELLITEPROVIDER_H
|
||||||
|
|
||||||
|
#endif //LAMPMainWidget_GOOGLECHINASATELLITEPROVIDER_H
|
|
@ -0,0 +1,54 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QtCore/QSize>
|
||||||
|
|
||||||
|
#include <include/pointxy.h>
|
||||||
|
#include <include/provider/tmsprovider.h>
|
||||||
|
#include <include/utils/LAMPMainWidget.h>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
|
||||||
|
/**
|
||||||
|
* OpenStreetMap基础地图
|
||||||
|
*/
|
||||||
|
class OSTNormalProvider : public TmsProvider {
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit OSTNormalProvider(QObject *parent= nullptr);
|
||||||
|
~OSTNormalProvider() override = default;
|
||||||
|
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* 获取瓦片的大小
|
||||||
|
* @return 瓦片大小,一般为256*256
|
||||||
|
*/
|
||||||
|
const QSize tileSize() const override {
|
||||||
|
return QSize{256, 256};
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取openstreetmap的瓦片服务器编号
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
char server() const { return static_cast<char>('a' + randomInt(0, 3)); }
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取瓦片url路径
|
||||||
|
* @param pos 瓦片位置
|
||||||
|
* @param zoom zoom值
|
||||||
|
* @return 瓦片url,失败时为空字符串
|
||||||
|
*/
|
||||||
|
QString tileUrl(const PointXY &pos, int zoom) const override;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取opensteet地图id
|
||||||
|
* @return opensteet地图id
|
||||||
|
*/
|
||||||
|
const QString& id() const override{return mId;}
|
||||||
|
|
||||||
|
private:
|
||||||
|
const QString mId{"ostnormalmap"};
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,32 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QHash>
|
||||||
|
|
||||||
|
#include <include/layerprovider.h>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
/**
|
||||||
|
* 支持的图层Provider类型
|
||||||
|
*/
|
||||||
|
enum TmsProviders {
|
||||||
|
OSTNormalMap,
|
||||||
|
GaodeNormapMap
|
||||||
|
};
|
||||||
|
|
||||||
|
/**
|
||||||
|
* TMS图层创建工厂
|
||||||
|
*/
|
||||||
|
class TmsProviderFactory {
|
||||||
|
public:
|
||||||
|
TmsProviderFactory() = delete;
|
||||||
|
~TmsProviderFactory() = default;
|
||||||
|
|
||||||
|
static LayerProvider *
|
||||||
|
create(TmsProviders provider);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
static QHash<TmsProviders, LayerProvider *> mProviders;
|
||||||
|
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,174 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QtMath>
|
||||||
|
#include <QSize>
|
||||||
|
#include <QString>
|
||||||
|
#include <QRunnable>
|
||||||
|
#include <QByteArray>
|
||||||
|
#include <QPointF>
|
||||||
|
#include <QImage>
|
||||||
|
#include <QObject>
|
||||||
|
#include <QSqlDatabase>
|
||||||
|
|
||||||
|
#include <include/layerprovider.h>
|
||||||
|
#include <include/pointxy.h>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget
|
||||||
|
{
|
||||||
|
/*
|
||||||
|
* 瓦片的信息描述,用于在线程之间传递瓦片数据
|
||||||
|
*/
|
||||||
|
struct TileInfo
|
||||||
|
{
|
||||||
|
QPointF index;
|
||||||
|
QPoint position;
|
||||||
|
int zoom;
|
||||||
|
QPoint coord;
|
||||||
|
QString url;
|
||||||
|
QByteArray data;
|
||||||
|
};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 异步执行的瓦片下载任务
|
||||||
|
*/
|
||||||
|
class TileDownloadTask : public QObject, public QRunnable
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
signals:
|
||||||
|
void tileReady(TileInfo tile);
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit TileDownloadTask(TileInfo tile, QObject* parent = nullptr);
|
||||||
|
TileDownloadTask(const TileDownloadTask& other) = delete;
|
||||||
|
TileDownloadTask(TileDownloadTask&& other) = delete;
|
||||||
|
TileDownloadTask& operator=(const TileDownloadTask& other) = delete;
|
||||||
|
TileDownloadTask& operator=(TileDownloadTask&& other) = delete;
|
||||||
|
|
||||||
|
~TileDownloadTask() override = default;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void run() override;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
TileInfo mTile;
|
||||||
|
};
|
||||||
|
|
||||||
|
class TmsProvider : public LayerProvider
|
||||||
|
{
|
||||||
|
Q_OBJECT
|
||||||
|
|
||||||
|
public:
|
||||||
|
explicit TmsProvider(QObject* parent = nullptr);
|
||||||
|
~TmsProvider() override;
|
||||||
|
|
||||||
|
public:
|
||||||
|
/*
|
||||||
|
* 获取瓦片的像素大小
|
||||||
|
* @return 瓦片大小,一般为256*256
|
||||||
|
*/
|
||||||
|
virtual const QSize tileSize() const = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 获取瓦片的url
|
||||||
|
* @param pos 瓦片的坐标
|
||||||
|
* @param zoom zoom值
|
||||||
|
* @return 瓦片的url,失败时则为空字符串
|
||||||
|
*/
|
||||||
|
virtual QString tileUrl(const PointXY& pos, int zoom) const = 0;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 返回可显示的图像内容
|
||||||
|
* @return 图像对象
|
||||||
|
*/
|
||||||
|
const QImage preparedImage() const override { return *mImage; }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 判断是否有可显示图像内容
|
||||||
|
* @return 有则为true,否则false
|
||||||
|
*/
|
||||||
|
bool hasContent() const override { return static_cast<bool>(mImage); }
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 获取tms提供者的名称
|
||||||
|
* @return
|
||||||
|
*/
|
||||||
|
virtual const QString& id() const = 0;
|
||||||
|
|
||||||
|
public slots:
|
||||||
|
/*
|
||||||
|
* 创建下载任务
|
||||||
|
* @param rect 下载区域
|
||||||
|
* @param zoom zoom值
|
||||||
|
*/
|
||||||
|
void createTask(const QRectF& rect, int zoom) override;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 瓦片下载成功时处理函数
|
||||||
|
* @param tile 瓦片对象
|
||||||
|
*/
|
||||||
|
void tileReady(TileInfo tile);
|
||||||
|
|
||||||
|
protected:
|
||||||
|
/*
|
||||||
|
* 创建一个新的绘制对象
|
||||||
|
* @param rect
|
||||||
|
*/
|
||||||
|
void newImage(const QRectF& rect);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 从文件缓存获取瓦片
|
||||||
|
* @param pos 瓦片位置
|
||||||
|
* @param zoom 瓦片zoom值
|
||||||
|
* @return 瓦片数据
|
||||||
|
*/
|
||||||
|
virtual QByteArray getCache(const QPoint& pos, int zoom);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 添加瓦片进文件缓存
|
||||||
|
* @param pos 瓦片位置
|
||||||
|
* @param zoom 瓦片zoom值
|
||||||
|
* @return 是否成功
|
||||||
|
*/
|
||||||
|
virtual bool addCache(const QPoint& pos, int zoom, QByteArray data);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 判断缓存是否存在指定的瓦片数据
|
||||||
|
* @param pos 瓦片位置
|
||||||
|
* @param zoom zoom值
|
||||||
|
* @return 是否存在,true则存在,否则false
|
||||||
|
*/
|
||||||
|
virtual bool cacheContains(const QPoint& pos, int zoom);
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 初始化文件缓存数据库
|
||||||
|
*/
|
||||||
|
virtual bool initCache();
|
||||||
|
|
||||||
|
protected:
|
||||||
|
/*
|
||||||
|
* 瓦片渲染对象,每次新建任务时都会重新构建该对象
|
||||||
|
*/
|
||||||
|
QImage* mImage;
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 缓存数据库名称
|
||||||
|
*/
|
||||||
|
const QString mDbName{"LAMPMainWidget.sqlite"};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 缓存表名称
|
||||||
|
*/
|
||||||
|
const QString mTableName{"tiles"};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 缓存数据库的连接
|
||||||
|
*/
|
||||||
|
QSqlDatabase mDbConn;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
inline uint qHash(const QPoint& p)
|
||||||
|
{
|
||||||
|
return qHash(qPow(p.x(), p.y()));
|
||||||
|
}
|
|
@ -0,0 +1,25 @@
|
||||||
|
#ifndef MAPTOOLADDPLANE_H
|
||||||
|
#define MAPTOOLADDPLANE_H
|
||||||
|
#include "include/maptool.h"
|
||||||
|
#include <QList>
|
||||||
|
namespace LAMPMainWidget{
|
||||||
|
class MapAutoplane;
|
||||||
|
class MapToolAddplane:public MapTool
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit MapToolAddplane(MapCanvas *mapCanvas):MapTool(mapCanvas){}
|
||||||
|
~MapToolAddplane() override = default;
|
||||||
|
void execute(QMouseEvent *event) override;
|
||||||
|
void setup() override;
|
||||||
|
void deSetup() override;
|
||||||
|
QString id() override;
|
||||||
|
inline QList<MapAutoplane*> getPlanes(){return planes;};
|
||||||
|
private:
|
||||||
|
void addPlane(MapAutoplane*plane);
|
||||||
|
void delePlane(MapAutoplane* plane);
|
||||||
|
private:
|
||||||
|
QList<MapAutoplane*> planes;
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
#endif // MAPTOOLADDPLANE_H
|
|
@ -0,0 +1,23 @@
|
||||||
|
#ifndef MAPTOOLDRAWAREA_H
|
||||||
|
#define MAPTOOLDRAWAREA_H
|
||||||
|
#include <include/maptool.h>
|
||||||
|
namespace LAMPMainWidget{
|
||||||
|
class MapCanvas;
|
||||||
|
class Maparea;
|
||||||
|
class MapToolDrawarea:public MapTool
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit MapToolDrawarea(MapCanvas *mapCanvas):MapTool(mapCanvas),isDrawing(false),current_area(nullptr){}
|
||||||
|
~MapToolDrawarea() override = default;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void execute(QMouseEvent *event) override;
|
||||||
|
void setup() override;
|
||||||
|
void deSetup() override;
|
||||||
|
QString id() override;
|
||||||
|
private:
|
||||||
|
bool isDrawing;
|
||||||
|
Maparea * current_area;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
#endif // MAPTOOLDRAWAREA_H
|
|
@ -0,0 +1,31 @@
|
||||||
|
#ifndef MAPTOOLDRAWLINE_H
|
||||||
|
#define MAPTOOLDRAWLINE_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <include/maptool.h>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
class Mapline;
|
||||||
|
class MapCanvas;
|
||||||
|
/**
|
||||||
|
* @brief 绘制航线工具
|
||||||
|
*/
|
||||||
|
class MapToolDrawline: public MapTool
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit MapToolDrawline(MapCanvas *mapCanvas):MapTool(mapCanvas),isDrawing(false),current_line(nullptr){}
|
||||||
|
~MapToolDrawline() override = default;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void execute(QMouseEvent *event) override;
|
||||||
|
void setup() override;
|
||||||
|
void deSetup() override;
|
||||||
|
QString id() override;
|
||||||
|
private:
|
||||||
|
bool isDrawing;
|
||||||
|
Mapline* current_line;
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // MAPTOOLDRAWLINE_H
|
|
@ -0,0 +1,31 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QtCore/QRect>
|
||||||
|
#include <QtGui/QMouseEvent>
|
||||||
|
#include <QtCore/QString>
|
||||||
|
|
||||||
|
#include <include/mapcanvas.h>
|
||||||
|
#include <include/maptool.h>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
/**
|
||||||
|
* 地图拖动工具
|
||||||
|
*/
|
||||||
|
class MapToolPan : public MapTool {
|
||||||
|
public:
|
||||||
|
explicit MapToolPan(MapCanvas *mapCanvas):MapTool(mapCanvas){}
|
||||||
|
~MapToolPan() override = default;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void execute(QMouseEvent *event) override;
|
||||||
|
void setup() override;
|
||||||
|
void deSetup() override;
|
||||||
|
QString id() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QPoint mDragStartPos;
|
||||||
|
QPoint mDragEndPos;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,32 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QtCore/QRect>
|
||||||
|
#include <QtGui/QMouseEvent>
|
||||||
|
#include <QtCore/QString>
|
||||||
|
|
||||||
|
#include <include/mapcanvas.h>
|
||||||
|
#include <include/maptool.h>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
/**
|
||||||
|
* 地图拖动工具
|
||||||
|
*/
|
||||||
|
class MapToolSelect : public MapTool {
|
||||||
|
public:
|
||||||
|
explicit MapToolSelect(MapCanvas *mapCanvas):MapTool(mapCanvas){}
|
||||||
|
~MapToolSelect() override = default;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void execute(QMouseEvent *event) override;
|
||||||
|
void setup() override;
|
||||||
|
void deSetup() override;
|
||||||
|
QString id() override;
|
||||||
|
|
||||||
|
private:
|
||||||
|
QPoint mDragStartPos;
|
||||||
|
QPoint mDragEndPos;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QtCore/QRect>
|
||||||
|
#include <QtGui/QMouseEvent>
|
||||||
|
#include <QtCore/QString>
|
||||||
|
|
||||||
|
#include <include/mapcanvas.h>
|
||||||
|
#include <include/maptool.h>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
/**
|
||||||
|
* 地图缩放工具
|
||||||
|
*/
|
||||||
|
class MapToolZoomIn : public MapTool {
|
||||||
|
public:
|
||||||
|
MapToolZoomIn(MapCanvas *mapCanvas):MapTool(mapCanvas){}
|
||||||
|
virtual ~MapToolZoomIn() = default;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void execute(QMouseEvent *event) override;
|
||||||
|
void setup() override;
|
||||||
|
void deSetup() override;
|
||||||
|
QString id() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,29 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QtCore/QRect>
|
||||||
|
#include <QtGui/QMouseEvent>
|
||||||
|
#include <QtCore/QString>
|
||||||
|
|
||||||
|
#include <include/mapcanvas.h>
|
||||||
|
#include <include/maptool.h>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
/**
|
||||||
|
* 地图缩放工具
|
||||||
|
*/
|
||||||
|
class MapToolZoomOut : public MapTool {
|
||||||
|
public:
|
||||||
|
MapToolZoomOut(MapCanvas *mapCanvas):MapTool(mapCanvas){}
|
||||||
|
virtual ~MapToolZoomOut() = default;
|
||||||
|
|
||||||
|
public:
|
||||||
|
void execute(QMouseEvent *event) override;
|
||||||
|
void setup() override;
|
||||||
|
void deSetup() override;
|
||||||
|
QString id() override;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,53 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QtCore/QtGlobal>
|
||||||
|
#include <QtCore/QDebug>
|
||||||
|
#include <QtCore/QTime>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
/*
|
||||||
|
* 浮点数判断的精度值
|
||||||
|
*/
|
||||||
|
const double DoublePrecision{0.00000001};
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 判断的d1和d2是否符合精度要求
|
||||||
|
* @param d1 浮点数
|
||||||
|
* @param d2 浮点数
|
||||||
|
* @param precision 精度要求
|
||||||
|
* @return 小于进度要求返回true,否则返回false
|
||||||
|
*/
|
||||||
|
inline bool
|
||||||
|
isDoubleNearby(double d1, double d2, double precision = DoublePrecision) {
|
||||||
|
return qAbs(d1 - d2) < precision;
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 获取min和max间的随机整数
|
||||||
|
* @param min 最小值
|
||||||
|
* @param max 最大值
|
||||||
|
* @return 随机的整数
|
||||||
|
*/
|
||||||
|
inline int
|
||||||
|
randomInt(int min, int max) {
|
||||||
|
if (max <= min) {
|
||||||
|
qDebug() << "随机数的最大值大于最小值";
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
qsrand(static_cast<uint>(QTime{0, 0}.msecsTo(QTime::currentTime())));
|
||||||
|
|
||||||
|
return min + qrand() % (max - min);
|
||||||
|
}
|
||||||
|
|
||||||
|
/*
|
||||||
|
* 快速计算2的阶乘
|
||||||
|
* @param n 阶数
|
||||||
|
* @return 返回结果
|
||||||
|
*/
|
||||||
|
inline int
|
||||||
|
power2(int n) {
|
||||||
|
return 1u << static_cast<unsigned>(n);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,24 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QString>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget
|
||||||
|
{
|
||||||
|
class ImgWriter
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
ImgWriter(QString file, const QSize& size);
|
||||||
|
ImgWriter(const ImgWriter& other) = delete;
|
||||||
|
ImgWriter(ImgWriter&& other) = delete;
|
||||||
|
ImgWriter operator =(const ImgWriter& other) = delete;
|
||||||
|
ImgWriter operator =(ImgWriter&& other) = delete;
|
||||||
|
|
||||||
|
virtual ~ImgWriter() = default;
|
||||||
|
|
||||||
|
public:
|
||||||
|
bool write(const QPoint& pos, const QByteArray& data) const;
|
||||||
|
|
||||||
|
protected:
|
||||||
|
QString mFile;
|
||||||
|
};
|
||||||
|
}
|
|
@ -0,0 +1,45 @@
|
||||||
|
#pragma once
|
||||||
|
|
||||||
|
#include <QtCore/QString>
|
||||||
|
#include <QtCore/QByteArray>
|
||||||
|
#include <curl/curl.h>
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
/**
|
||||||
|
* http或https请求使用的返回数据接收函数
|
||||||
|
* @param content 返回数据
|
||||||
|
* @param size 大小
|
||||||
|
* @param nmemb 内存字节数
|
||||||
|
* @param userp 数据存储位置
|
||||||
|
* @return 成功写入多少字节
|
||||||
|
*/
|
||||||
|
size_t
|
||||||
|
writeData(void *content, size_t size, size_t nmemb, void *userp);
|
||||||
|
|
||||||
|
class Network {
|
||||||
|
public:
|
||||||
|
Network() { curl_global_init(CURL_GLOBAL_DEFAULT); }
|
||||||
|
~Network() { curl_global_cleanup(); }
|
||||||
|
|
||||||
|
public:
|
||||||
|
/**
|
||||||
|
* http的Get请求
|
||||||
|
* @param url 需要访问的地址
|
||||||
|
* @return 返回的数据
|
||||||
|
*/
|
||||||
|
QByteArray
|
||||||
|
httpRequest(const QString &url);
|
||||||
|
|
||||||
|
/**
|
||||||
|
* https的Get请求
|
||||||
|
* @param url 请求的地址
|
||||||
|
* @return 返回的数据
|
||||||
|
*/
|
||||||
|
QByteArray
|
||||||
|
httpsRequest(const QString &url);
|
||||||
|
|
||||||
|
private:
|
||||||
|
static const QString kUserAgent;
|
||||||
|
};
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,97 @@
|
||||||
|
#include <QSize>
|
||||||
|
#include <QRectF>
|
||||||
|
#include <QObject>
|
||||||
|
#include <QHash>
|
||||||
|
|
||||||
|
#include <include/layer/tmslayer.h>
|
||||||
|
#include <include/provider/tmsprovider.h>
|
||||||
|
#include <include/utils/LAMPMainWidget.h>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
|
||||||
|
TmsLayer::TmsLayer(LAMPMainWidget::TmsProviders provider,
|
||||||
|
const QString &id,
|
||||||
|
LAMPMainWidget::MapCanvas *mapCanvas,
|
||||||
|
LAMPMainWidget::CRS *crs)
|
||||||
|
: MapLayer(id, crs, mapCanvas) {
|
||||||
|
setProvider(TmsProviderFactory::create(provider));
|
||||||
|
}
|
||||||
|
|
||||||
|
double
|
||||||
|
TmsLayer::resolution() const {
|
||||||
|
auto pd = dynamic_cast<const TmsProvider *>(&provider());
|
||||||
|
auto sz = pd->tileSize();
|
||||||
|
double length = crs().extent().width();
|
||||||
|
double result = length / ((power2(zoomValue())) * sz.width());
|
||||||
|
|
||||||
|
#ifdef DEBUG
|
||||||
|
qDebug() << "resolution=>" << result;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
QRectF
|
||||||
|
TmsLayer::extent() const {
|
||||||
|
auto pd = dynamic_cast<const TmsProvider *>(&provider());
|
||||||
|
QSize sz = pd->tileSize();
|
||||||
|
|
||||||
|
int width = power2(zoomValue()) * sz.width();
|
||||||
|
int height = power2(zoomValue()) * sz.height();
|
||||||
|
|
||||||
|
//#ifdef DEBUG
|
||||||
|
// qDebug() << "layer extent=>{width:" << width << ", height:" << height << "}";
|
||||||
|
//#endif
|
||||||
|
|
||||||
|
return {0, 0, static_cast<qreal>(width), static_cast<qreal>(height)};
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TmsLayer::setZoomValue(int zoom) {
|
||||||
|
int zoomValue{};
|
||||||
|
if (zoom <= minZoom()) {
|
||||||
|
zoomValue = minZoom();
|
||||||
|
} else if (zoom >= maxZoom()) {
|
||||||
|
zoomValue = maxZoom();
|
||||||
|
} else {
|
||||||
|
zoomValue = zoom;
|
||||||
|
}
|
||||||
|
|
||||||
|
mZoomValue = zoomValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
TmsLayer::parseTiles(const QRectF &rect, int zoom, QHash<QPoint, QString> &tiles, QSize &size) const {
|
||||||
|
auto pd = dynamic_cast<const TmsProvider *>(&provider());
|
||||||
|
auto tileSize = pd->tileSize();
|
||||||
|
auto resolution = mCrs->extent().width() / ((power2(zoom)) * tileSize.width());
|
||||||
|
|
||||||
|
auto crsLeftTop = mCrs->forward(PointXY(rect.topLeft()));
|
||||||
|
auto crsRightBottom = mCrs->forward(PointXY(rect.bottomRight()));
|
||||||
|
|
||||||
|
auto mapLeftTop = QPointF(crsLeftTop.x() / resolution, crsLeftTop.y() / resolution);
|
||||||
|
auto mapRightBottom = QPointF(crsRightBottom.x() / resolution, crsRightBottom.y() / resolution);
|
||||||
|
auto xMin = qFloor(mapLeftTop.x() / tileSize.width());
|
||||||
|
auto xMax = qFloor(mapRightBottom.x() / tileSize.width());
|
||||||
|
auto yMin = qFloor(mapLeftTop.y() / tileSize.height());
|
||||||
|
auto yMax = qFloor(mapRightBottom.y() / tileSize.height());
|
||||||
|
if((xMin > xMax) || (yMin > yMax)){
|
||||||
|
qDebug() << "下载区边界错误";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
size.setWidth((xMax - xMin + 1) * tileSize.width());
|
||||||
|
size.setHeight((yMax - yMin + 1) * tileSize.height());
|
||||||
|
|
||||||
|
for (int i = xMin; i <= xMax; ++i) {
|
||||||
|
for (int j = yMin; j <= yMax; ++j) {
|
||||||
|
auto url = pd->tileUrl(PointXY(i, j), zoom);
|
||||||
|
tiles.insert(QPoint(i - xMin, j - yMin), url);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,39 @@
|
||||||
|
#include "maparea.h"
|
||||||
|
#include "include/maplayer.h"
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QDateTime>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
void LAMPMainWidget::Maparea::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
|
||||||
|
{
|
||||||
|
|
||||||
|
|
||||||
|
painter->setPen(this->pen());
|
||||||
|
painter->setBrush(this->brush());
|
||||||
|
double r=mLayer->resolution();
|
||||||
|
QPolygonF scene_points;
|
||||||
|
foreach(QPointF point,this->mkt_points){
|
||||||
|
scene_points.append(point/r);
|
||||||
|
}
|
||||||
|
painter->drawPolygon(scene_points);
|
||||||
|
}
|
||||||
|
|
||||||
|
QRectF LAMPMainWidget::Maparea::boundingRect() const
|
||||||
|
{
|
||||||
|
if(this->mkt_points.size()==0){
|
||||||
|
return QRectF();
|
||||||
|
}
|
||||||
|
double r=mLayer->resolution();
|
||||||
|
QRectF rect= this->mkt_points.boundingRect();
|
||||||
|
return QRectF(rect.x()/r,rect.y()/r,rect.width()/r,rect.height()/r);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LAMPMainWidget::Maparea::append(QPointF mkt_point)
|
||||||
|
{
|
||||||
|
this->mkt_points.append(mkt_point);
|
||||||
|
}
|
||||||
|
|
||||||
|
QPointF &LAMPMainWidget::Maparea::lastMktpoint()
|
||||||
|
{
|
||||||
|
return this->mkt_points.last();
|
||||||
|
}
|
|
@ -0,0 +1,36 @@
|
||||||
|
#ifndef MAPAREA_H
|
||||||
|
#define MAPAREA_H
|
||||||
|
|
||||||
|
|
||||||
|
#include <QAbstractGraphicsShapeItem>
|
||||||
|
#include <QPolygonF>
|
||||||
|
#include <QPen>
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
class MapLayer;
|
||||||
|
/**
|
||||||
|
* @brief 绘制区域
|
||||||
|
*/
|
||||||
|
class Maparea : public QAbstractGraphicsShapeItem
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit Maparea(const MapLayer *layer, QGraphicsItem *parent = nullptr)
|
||||||
|
: mLayer(layer), QAbstractGraphicsShapeItem(parent) {
|
||||||
|
QPen pen(Qt::red);
|
||||||
|
pen.setWidth(2);
|
||||||
|
this->setPen(pen);
|
||||||
|
QColor color(Qt::red);
|
||||||
|
color.setAlpha(50);
|
||||||
|
this->setBrush(color);
|
||||||
|
}
|
||||||
|
~Maparea() override = default;
|
||||||
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
|
||||||
|
QRectF boundingRect() const override;
|
||||||
|
void append(QPointF mkt_point);
|
||||||
|
QPointF& lastMktpoint();
|
||||||
|
private:
|
||||||
|
const MapLayer *mLayer;
|
||||||
|
QPolygonF mkt_points;
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
#endif // MAPAREA_H
|
|
@ -0,0 +1,35 @@
|
||||||
|
#include "mapautoplane.h"
|
||||||
|
#include "include/maplayer.h"
|
||||||
|
#include <QRandomGenerator>
|
||||||
|
#include <QDebug>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
LAMPMainWidget::MapAutoplane::MapAutoplane(const MapLayer *layer,QPointF pos,QGraphicsItem *parent):mLayer(layer), current_mktpoint(pos),QGraphicsPixmapItem(parent)
|
||||||
|
{
|
||||||
|
QPixmap pix(":/plane-red.png");
|
||||||
|
this->setPixmap(pix);
|
||||||
|
QPointF scene_point=this->current_mktpoint/this->mLayer->resolution();
|
||||||
|
this->setOffset(scene_point);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LAMPMainWidget::MapAutoplane::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
|
||||||
|
{
|
||||||
|
QPointF scene_point=this->current_mktpoint/this->mLayer->resolution();
|
||||||
|
this->setOffset(scene_point);
|
||||||
|
QGraphicsPixmapItem::paint(painter,option,widget);
|
||||||
|
}
|
||||||
|
|
||||||
|
QRectF LAMPMainWidget::MapAutoplane::boundingRect() const
|
||||||
|
{
|
||||||
|
QPointF scene_point=this->current_mktpoint/this->mLayer->resolution();
|
||||||
|
return QRectF(scene_point.x(),scene_point.y(),16,16);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LAMPMainWidget::MapAutoplane::updatePos()
|
||||||
|
{
|
||||||
|
qreal x=QRandomGenerator::global()->bounded(-1000, 1000);
|
||||||
|
qreal y=QRandomGenerator::global()->bounded(-1000, 1000);
|
||||||
|
this->current_mktpoint+=QPointF(x,y);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,24 @@
|
||||||
|
#ifndef MAPAUTOPLANE_H
|
||||||
|
#define MAPAUTOPLANE_H
|
||||||
|
|
||||||
|
#include <QGraphicsPixmapItem>
|
||||||
|
#include <QPointF>
|
||||||
|
namespace LAMPMainWidget{
|
||||||
|
class MapLayer;
|
||||||
|
class MapAutoplane : public QGraphicsPixmapItem
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit MapAutoplane(const MapLayer *layer,QPointF pos,QGraphicsItem *parent = nullptr);
|
||||||
|
~MapAutoplane() override = default;
|
||||||
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
|
||||||
|
QRectF boundingRect() const override;
|
||||||
|
void append(QPointF mkt_point);
|
||||||
|
void updatePos();
|
||||||
|
private:
|
||||||
|
const MapLayer *mLayer;
|
||||||
|
QPointF current_mktpoint;
|
||||||
|
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // MAPAUTOPLANE_H
|
|
@ -0,0 +1,301 @@
|
||||||
|
#include <QDebug>
|
||||||
|
#include <QTimer>
|
||||||
|
|
||||||
|
#include <include/maptool.h>
|
||||||
|
#include <include/maplayer.h>
|
||||||
|
#include <include/tools/maptoolpan.h>
|
||||||
|
#include <include/tools/maptoolselect.h>
|
||||||
|
#include <include/tools/maptoolzoomin.h>
|
||||||
|
#include <include/tools/maptoolzoomout.h>
|
||||||
|
#include <include/tools/maptooldrawline.h>
|
||||||
|
#include <include/tools/maptooldrawarea.h>
|
||||||
|
#include <include/tools/maptooladdplane.h>
|
||||||
|
#include "mapautoplane.h"
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
|
||||||
|
PointXY
|
||||||
|
MapCanvas::defaultMapCenter() {
|
||||||
|
return PointXY{116.4074, 39.9042};
|
||||||
|
}
|
||||||
|
|
||||||
|
MapCanvas::MapCanvas(QWidget *parent)
|
||||||
|
: QGraphicsView(parent),
|
||||||
|
mScene(nullptr),
|
||||||
|
mMapExtent(),
|
||||||
|
mViewExtent(),
|
||||||
|
mDragRect(),
|
||||||
|
mIsDragging(false),
|
||||||
|
mLayers(),
|
||||||
|
mCurrentLayer(nullptr),
|
||||||
|
mCrs(nullptr),
|
||||||
|
mMapCenter(defaultMapCenter()),
|
||||||
|
mZoomValue(kDefaultZoomValue),
|
||||||
|
mLastXY(),
|
||||||
|
mMapUpdateTimer(nullptr),
|
||||||
|
mCurrentTool(nullptr),
|
||||||
|
mMapTools() {
|
||||||
|
setAutoFillBackground(true);
|
||||||
|
setHorizontalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||||
|
setVerticalScrollBarPolicy(Qt::ScrollBarAlwaysOff);
|
||||||
|
setMouseTracking(true);
|
||||||
|
setFocusPolicy(Qt::StrongFocus);
|
||||||
|
mScene = new QGraphicsScene();
|
||||||
|
setScene(mScene);
|
||||||
|
mMapUpdateTimer = new QTimer();
|
||||||
|
QObject::connect(mMapUpdateTimer, &QTimer::timeout, [this]() {
|
||||||
|
this->mScene->update();
|
||||||
|
});
|
||||||
|
mMapUpdateTimer->start(200);
|
||||||
|
setupTools();
|
||||||
|
this->startTimer(1000);
|
||||||
|
}
|
||||||
|
|
||||||
|
MapCanvas::~MapCanvas() {
|
||||||
|
mLayers.clear();
|
||||||
|
delete mScene;
|
||||||
|
delete mCurrentLayer;
|
||||||
|
delete mMapUpdateTimer;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MapCanvas::mousePressEvent(QMouseEvent *event) {
|
||||||
|
if (mCurrentTool) {
|
||||||
|
mCurrentTool->execute(event);
|
||||||
|
}
|
||||||
|
QGraphicsView::mousePressEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MapCanvas::mouseReleaseEvent(QMouseEvent *event) {
|
||||||
|
if (mCurrentTool) {
|
||||||
|
mCurrentTool->execute(event);
|
||||||
|
}
|
||||||
|
QGraphicsView::mouseReleaseEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MapCanvas::wheelEvent(QWheelEvent *event) {
|
||||||
|
int delta = event->delta() / 120;
|
||||||
|
int zoom = zoomValue();
|
||||||
|
zoom += delta;
|
||||||
|
setZoomValue(zoom);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MapCanvas::resizeEvent(QResizeEvent *event) {
|
||||||
|
updateViewExtent(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MapCanvas::mouseMoveEvent(QMouseEvent *event)
|
||||||
|
{
|
||||||
|
if (mCurrentTool) {
|
||||||
|
mCurrentTool->execute(event);
|
||||||
|
}
|
||||||
|
QGraphicsView::mouseMoveEvent(event);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MapCanvas::refreshMap() {
|
||||||
|
QMapIterator<QString, MapLayer *> iterator(mLayers);
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
iterator.next();
|
||||||
|
iterator.value()->map()->setViewExtent(mViewExtent);
|
||||||
|
iterator.value()->update();
|
||||||
|
}
|
||||||
|
mScene->update();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MapCanvas::addLayer(MapLayer *const layer) {
|
||||||
|
if (!layer)
|
||||||
|
return;
|
||||||
|
|
||||||
|
if (mLayers.contains(layer->id())) {
|
||||||
|
qWarning() << layer->id() << "图层已存在";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
mLayers.insert(layer->id(), layer);
|
||||||
|
if (mLayers.count() == 1) {
|
||||||
|
setCurrentLayer(layer->id());
|
||||||
|
}
|
||||||
|
mScene->addItem(layer->map());
|
||||||
|
refreshMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MapCanvas::setZoomValue(const int zoom) {
|
||||||
|
mZoomValue = normalizeZoom(zoom);
|
||||||
|
zoomChanged(mZoomValue);
|
||||||
|
|
||||||
|
/// 更新每个图层的zoom值
|
||||||
|
QMapIterator<QString, MapLayer *> iterator(mLayers);
|
||||||
|
while (iterator.hasNext()) {
|
||||||
|
iterator.next();
|
||||||
|
iterator.value()->setZoomValue(mZoomValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 更新可视区域的内容
|
||||||
|
updateViewExtent(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MapCanvas::updateViewExtent(bool reset) {
|
||||||
|
if (!mCurrentLayer) {
|
||||||
|
qDebug() << "未设置当前图层,视图区域无法更新";
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (reset) {
|
||||||
|
/// 重置视图区域
|
||||||
|
mScene->setSceneRect(mCurrentLayer->extent());
|
||||||
|
QRectF testrect=mCurrentLayer->extent();
|
||||||
|
mViewExtent.setRect(0, 0, 0, 0);
|
||||||
|
mViewExtent.setSize(size());
|
||||||
|
PointXY crsCenter = mCrs->forward(mMapCenter);
|
||||||
|
QPointF mapCenter{crsCenter.x() / resolution(), crsCenter.y() / resolution()};
|
||||||
|
QPointF offset = mapCenter - mViewExtent.center();
|
||||||
|
mViewExtent.translate(offset.x(), offset.y());
|
||||||
|
} else {
|
||||||
|
/// 视图偏移并重置偏移属性
|
||||||
|
mViewExtent.translate(-mDragRect.width(), -mDragRect.height());
|
||||||
|
mDragRect.setRect(0, 0, 0, 0);
|
||||||
|
|
||||||
|
/// 更新地图可视区域中心点
|
||||||
|
QPointF mapCenter = mViewExtent.center();
|
||||||
|
PointXY crsCenter{mapCenter.x() * resolution(), mapCenter.y() * resolution()};
|
||||||
|
mMapCenter = mCrs->inverse(crsCenter);
|
||||||
|
mapCenterChanged(mMapCenter);
|
||||||
|
}
|
||||||
|
|
||||||
|
/// 刷新地图
|
||||||
|
centerOn(mViewExtent.center());
|
||||||
|
refreshMap();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MapCanvas::setCrs(const CRS *const crs) {
|
||||||
|
mCrs = crs;
|
||||||
|
crsChanged();
|
||||||
|
updateViewExtent(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MapCanvas::setCurrentLayer(const QString &id) {
|
||||||
|
if (!mLayers.contains(id)) {
|
||||||
|
qWarning() << "未添加图层=>" << id;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
mCurrentLayer = mLayers[id];
|
||||||
|
if (!mCrs) {
|
||||||
|
setCrs(&mCurrentLayer->crs());
|
||||||
|
}
|
||||||
|
updateViewExtent(true);
|
||||||
|
}
|
||||||
|
|
||||||
|
double
|
||||||
|
MapCanvas::scale() const {
|
||||||
|
return logicalDpiX() * resolution() * 39.37 / 100;;
|
||||||
|
}
|
||||||
|
|
||||||
|
double
|
||||||
|
MapCanvas::resolution() const {
|
||||||
|
if (!mCurrentLayer) {
|
||||||
|
qWarning() << "未设置当前图层,无法获取分辨率";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mCurrentLayer->resolution();
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
MapCanvas::zoomValue() const {
|
||||||
|
if (!mCurrentLayer) {
|
||||||
|
qWarning() << "未设置当前图层,默认返回zoom值为0";
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
return mCurrentLayer->zoomValue();
|
||||||
|
}
|
||||||
|
|
||||||
|
int
|
||||||
|
MapCanvas::normalizeZoom(const int zoom) const {
|
||||||
|
int z{};
|
||||||
|
if (zoom <= kMinZoomValue) {
|
||||||
|
z = kMinZoomValue;
|
||||||
|
} else if (z >= kMaxZoomValue) {
|
||||||
|
z = kMaxZoomValue;
|
||||||
|
} else {
|
||||||
|
z = zoom;
|
||||||
|
}
|
||||||
|
|
||||||
|
return z;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointXY
|
||||||
|
MapCanvas::pixel2Lonlat(const QPointF &point) const {
|
||||||
|
QPointF scenePoint = mapToScene(QPoint{static_cast<int>(point.x()), static_cast<int>(point.y())});
|
||||||
|
QPointF mapPoint{scenePoint.x() * resolution(), scenePoint.y() * resolution()};
|
||||||
|
PointXY crsPoint = mCrs->inverse(PointXY{mapPoint});
|
||||||
|
qDebug() << "坐标装换=>{" << point << "=>" << crsPoint << "}";
|
||||||
|
return crsPoint;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
MapCanvas::selectTool(const QString &tool) {
|
||||||
|
if (!mMapTools.contains(tool)) {
|
||||||
|
qWarning() << QString("%1工具不存在").arg(tool);
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto toolPtr = mMapTools.value(tool);
|
||||||
|
if (mCurrentTool) {
|
||||||
|
mCurrentTool->deSetup();
|
||||||
|
}
|
||||||
|
mCurrentTool = toolPtr;
|
||||||
|
toolPtr->setup();
|
||||||
|
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
void MapCanvas::timerEvent(QTimerEvent *event)
|
||||||
|
{
|
||||||
|
MapToolAddplane *maptoolAddplane=dynamic_cast<MapToolAddplane*>(mMapTools["addplane_tool"]);
|
||||||
|
QList<MapAutoplane*> planes=maptoolAddplane->getPlanes();
|
||||||
|
foreach(MapAutoplane *plane,planes){
|
||||||
|
plane->updatePos();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MapCanvas::setupTools() {
|
||||||
|
auto panTool = new MapToolPan(this);
|
||||||
|
mMapTools.insert(panTool->id(), panTool);
|
||||||
|
|
||||||
|
auto zoominTool = new MapToolZoomIn(this);
|
||||||
|
mMapTools.insert(zoominTool->id(), zoominTool);
|
||||||
|
|
||||||
|
auto zoomoutTool = new MapToolZoomOut(this);
|
||||||
|
mMapTools.insert(zoomoutTool->id(), zoomoutTool);
|
||||||
|
|
||||||
|
auto selectTool = new MapToolSelect(this);
|
||||||
|
mMapTools.insert(selectTool->id(), selectTool);
|
||||||
|
|
||||||
|
auto drawlineTool=new MapToolDrawline(this);
|
||||||
|
mMapTools.insert(drawlineTool->id(),drawlineTool);
|
||||||
|
|
||||||
|
auto drawareTool=new MapToolDrawarea(this);
|
||||||
|
mMapTools.insert(drawareTool->id(),drawareTool);
|
||||||
|
|
||||||
|
auto addplaneTool=new MapToolAddplane(this);
|
||||||
|
mMapTools.insert(addplaneTool->id(),addplaneTool);
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,37 @@
|
||||||
|
#include <QtCore/QDebug>
|
||||||
|
#include <QtGui/QPainter>
|
||||||
|
#include <QtWidgets/QGraphicsSceneMouseEvent>
|
||||||
|
|
||||||
|
#include <include/mapcanvasmap.h>
|
||||||
|
#include <include/mapcanvas.h>
|
||||||
|
#include <include/maplayer.h>
|
||||||
|
#include <QDateTime>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
|
||||||
|
void
|
||||||
|
MapCanvasMap::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) {
|
||||||
|
if (!mLayer->provider().hasContent()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
painter->drawImage(mViewExtent.topLeft(), mLayer->provider().preparedImage());
|
||||||
|
}
|
||||||
|
|
||||||
|
QRectF
|
||||||
|
MapCanvasMap::boundingRect() const {
|
||||||
|
auto width = mViewExtent.size().width();
|
||||||
|
auto height = mViewExtent.size().height();
|
||||||
|
return mViewExtent + QMarginsF(1024, 1024, 1024, 1024);
|
||||||
|
}
|
||||||
|
|
||||||
|
void MapCanvasMap::setViewExtent(const QRectF &rect) {
|
||||||
|
//qDebug() << "更新图层显示对象边界=>" << rect;
|
||||||
|
if (rect != mViewExtent) {
|
||||||
|
prepareGeometryChange();
|
||||||
|
mViewExtent = rect;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,90 @@
|
||||||
|
#include <QObject>
|
||||||
|
|
||||||
|
#include <include/maplayer.h>
|
||||||
|
#include <include/mapcanvas.h>
|
||||||
|
#include <QDateTime>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
|
||||||
|
MapLayer::MapLayer(
|
||||||
|
const QString &id,
|
||||||
|
LAMPMainWidget::CRS *crs,
|
||||||
|
LAMPMainWidget::MapCanvas *mapCanvas)
|
||||||
|
: mId(id),
|
||||||
|
mCrs(crs),
|
||||||
|
mZValue(-1),
|
||||||
|
mZoomValue(kDefaultZoomValue),
|
||||||
|
mProvider(nullptr),
|
||||||
|
mMapCanvasMap(new MapCanvasMap(this)),
|
||||||
|
mMapCanvas(mapCanvas) {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
MapLayer::~MapLayer() {
|
||||||
|
delete mCrs;
|
||||||
|
delete mProvider;
|
||||||
|
}
|
||||||
|
|
||||||
|
MapLayer::MapLayer(const MapLayer &other) {
|
||||||
|
mId = other.mId;
|
||||||
|
mZValue = other.mZValue;
|
||||||
|
mCrs = other.mCrs;
|
||||||
|
mMapCanvas = other.mMapCanvas;
|
||||||
|
}
|
||||||
|
|
||||||
|
MapLayer::MapLayer(MapLayer &&other) noexcept {
|
||||||
|
mId = other.mId;
|
||||||
|
mZValue = other.mZValue;
|
||||||
|
mCrs = other.mCrs;
|
||||||
|
mMapCanvas = other.mMapCanvas;
|
||||||
|
|
||||||
|
other.mId = QString{};
|
||||||
|
other.mCrs = nullptr;
|
||||||
|
other.mZValue = 0;
|
||||||
|
other.mMapCanvas = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
MapLayer &
|
||||||
|
MapLayer::operator=(const MapLayer &other) {
|
||||||
|
if (this != &other) {
|
||||||
|
mId = other.mId;
|
||||||
|
mZValue = other.mZValue;
|
||||||
|
mCrs = other.mCrs;
|
||||||
|
mMapCanvas = other.mMapCanvas;
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
MapLayer &
|
||||||
|
MapLayer::operator=(MapLayer &&other) noexcept {
|
||||||
|
if (this != &other) {
|
||||||
|
mId = other.mId;
|
||||||
|
mZValue = other.mZValue;
|
||||||
|
mCrs = other.mCrs;
|
||||||
|
mMapCanvas = other.mMapCanvas;
|
||||||
|
|
||||||
|
other.mId = QString{};
|
||||||
|
other.mCrs = nullptr;
|
||||||
|
other.mZValue = 0;
|
||||||
|
other.mMapCanvas = nullptr;
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
MapLayer::update() {
|
||||||
|
if(!isVisible()){
|
||||||
|
qDebug() << id() << "=>图层不显示,跳过刷新操作";
|
||||||
|
mMapCanvasMap->hide();
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
//qDebug() << "刷新图层内容=>" << mMapCanvas->viewExtent()<<QDateTime::currentDateTime()<<"zoom"<<mZoomValue;
|
||||||
|
mProvider->createTask(mMapCanvas->viewExtent(), mZoomValue);
|
||||||
|
mMapCanvasMap->show();
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,35 @@
|
||||||
|
#include "mapline.h"
|
||||||
|
#include "include/maplayer.h"
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QDebug>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
void LAMPMainWidget::Mapline::paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget)
|
||||||
|
{
|
||||||
|
painter->setPen(this->pen());
|
||||||
|
painter->setBrush(this->brush());
|
||||||
|
double r=mLayer->resolution();
|
||||||
|
for(int i=0;i<(mkt_points.size()-1);i++){
|
||||||
|
painter->drawLine(mkt_points[i]/r,mkt_points[i+1]/r);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
QRectF LAMPMainWidget::Mapline::boundingRect() const
|
||||||
|
{
|
||||||
|
if(this->mkt_points.size()==0){
|
||||||
|
return QRectF();
|
||||||
|
}
|
||||||
|
double r=mLayer->resolution();
|
||||||
|
QRectF rect= this->mkt_points.boundingRect();
|
||||||
|
return QRectF(rect.x()/r,rect.y()/r,rect.width()/r,rect.height()/r);
|
||||||
|
}
|
||||||
|
|
||||||
|
void LAMPMainWidget::Mapline::append(QPointF mkt_point)
|
||||||
|
{
|
||||||
|
this->mkt_points.append(mkt_point);
|
||||||
|
}
|
||||||
|
|
||||||
|
QPointF &LAMPMainWidget::Mapline::lastMktpoint()
|
||||||
|
{
|
||||||
|
return this->mkt_points.last();
|
||||||
|
}
|
|
@ -0,0 +1,30 @@
|
||||||
|
#ifndef MAPLINE_H
|
||||||
|
#define MAPLINE_H
|
||||||
|
|
||||||
|
#include <QAbstractGraphicsShapeItem>
|
||||||
|
#include <QPolygonF>
|
||||||
|
#include <QPen>
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
class MapLayer;
|
||||||
|
class Mapline:public QAbstractGraphicsShapeItem
|
||||||
|
{
|
||||||
|
public:
|
||||||
|
explicit Mapline(const MapLayer *layer, QGraphicsItem *parent = nullptr)
|
||||||
|
: mLayer(layer), QAbstractGraphicsShapeItem(parent) {
|
||||||
|
QPen pen(Qt::red);
|
||||||
|
pen.setWidth(2);
|
||||||
|
this->setPen(pen);
|
||||||
|
this->setBrush(QBrush(Qt::black));
|
||||||
|
}
|
||||||
|
~Mapline() override = default;
|
||||||
|
void paint(QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) override;
|
||||||
|
QRectF boundingRect() const override;
|
||||||
|
void append(QPointF mkt_point);
|
||||||
|
QPointF& lastMktpoint();
|
||||||
|
private:
|
||||||
|
const MapLayer *mLayer;
|
||||||
|
QPolygonF mkt_points;
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
#endif // MAPLINE_H
|
|
@ -0,0 +1,11 @@
|
||||||
|
#include <include/maptool.h>
|
||||||
|
#include <include/mapcanvas.h>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
|
||||||
|
MapTool::~MapTool() {
|
||||||
|
delete mMapCanvas;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,57 @@
|
||||||
|
#include <QtCore/QtMath>
|
||||||
|
#include <QtCore/QString>
|
||||||
|
#include <QtCore/QDebug>
|
||||||
|
|
||||||
|
#include <include/pointxy.h>
|
||||||
|
#include <include/utils/LAMPMainWidget.h>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
|
||||||
|
double
|
||||||
|
PointXY::distance(double x, double y) const {
|
||||||
|
return qSqrt(qPow(mX - x, 2) + qPow(mY - y, 2));
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
PointXY::operator==(const LAMPMainWidget::PointXY &other) {
|
||||||
|
return isDoubleNearby(mX, other.mX) && isDoubleNearby(mY, other.mY);
|
||||||
|
}
|
||||||
|
|
||||||
|
PointXY &
|
||||||
|
PointXY::operator=(const LAMPMainWidget::PointXY &other) {
|
||||||
|
if (this != &other) {
|
||||||
|
mX = other.mX;
|
||||||
|
mY = other.mY;
|
||||||
|
}
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointXY &
|
||||||
|
PointXY::operator=(const QPointF &other) {
|
||||||
|
mX = other.x();
|
||||||
|
mY = other.y();
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
PointXY &
|
||||||
|
PointXY::operator=(const QPoint &other) {
|
||||||
|
mX = double(other.x());
|
||||||
|
mY = double(other.y());
|
||||||
|
|
||||||
|
return *this;
|
||||||
|
}
|
||||||
|
|
||||||
|
QString
|
||||||
|
PointXY::toWKT() const {
|
||||||
|
return QString("POINT(%1 %2)").arg(mX, 0, 'g', 8).arg(mY, 0, 'g', 8);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
QDebug operator<<(QDebug debug, const LAMPMainWidget::PointXY &point) {
|
||||||
|
debug << QString("PointXY(%1, %2)").arg(point.x()).arg(point.y());
|
||||||
|
return debug;
|
||||||
|
}
|
|
@ -0,0 +1,21 @@
|
||||||
|
#include <QtCore/QString>
|
||||||
|
#include <include/provider/tms/gaodenormalprovider.h>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
|
||||||
|
GaodeNormalProvider::GaodeNormalProvider(QObject *parent)
|
||||||
|
: TmsProvider(parent) {
|
||||||
|
initCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString
|
||||||
|
GaodeNormalProvider::tileUrl(const LAMPMainWidget::PointXY &pos, int zoom) const {
|
||||||
|
QString urlFmt = {R"(http://wprd01.is.autonavi.com/appmaptile?style=6&x=%1&y=%2&z=%3)"};
|
||||||
|
return QString(urlFmt).arg(pos.x()).arg(pos.y()).arg(zoom);
|
||||||
|
}
|
||||||
|
//http://wprd01.is.autonavi.com/appmaptile?x={x}&y={y}&z={z}&lang=zh_cn&size=1&scl=1&style=6
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -0,0 +1,19 @@
|
||||||
|
#include <QtCore/QString>
|
||||||
|
#include <include/provider/tms/ostnormalprovider.h>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
|
||||||
|
OSTNormalProvider::OSTNormalProvider(QObject *parent)
|
||||||
|
: TmsProvider(parent) {
|
||||||
|
initCache();
|
||||||
|
}
|
||||||
|
|
||||||
|
QString
|
||||||
|
OSTNormalProvider::tileUrl(const LAMPMainWidget::PointXY &pos, int zoom) const {
|
||||||
|
QString urlFmt = {"https://tile.openstreetmap.org/%1/%2/%3.png"};
|
||||||
|
return QString(urlFmt).arg(zoom).arg(pos.y()).arg(pos.x());
|
||||||
|
}
|
||||||
|
//https://tile.openstreetmap.org/{z}/{x}/{y}.png
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,37 @@
|
||||||
|
#include <include/provider/tms/tmsproviderfactory.h>
|
||||||
|
#include <include/provider/tms/ostnormalprovider.h>
|
||||||
|
#include <include/provider/tms/gaodenormalprovider.h>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
namespace LAMPMainWidget {
|
||||||
|
|
||||||
|
QHash<TmsProviders, LayerProvider *> TmsProviderFactory::mProviders{};
|
||||||
|
|
||||||
|
LayerProvider *
|
||||||
|
TmsProviderFactory::create(LAMPMainWidget::TmsProviders provider) {
|
||||||
|
LayerProvider *result = nullptr;
|
||||||
|
switch (provider) {
|
||||||
|
case OSTNormalMap:
|
||||||
|
if (mProviders.contains(OSTNormalMap)) {
|
||||||
|
result = mProviders.value(OSTNormalMap);
|
||||||
|
} else {
|
||||||
|
result = new OSTNormalProvider();
|
||||||
|
mProviders.insert(OSTNormalMap, result);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case GaodeNormapMap:
|
||||||
|
if (mProviders.contains(GaodeNormapMap)) {
|
||||||
|
result = mProviders.value(GaodeNormapMap);
|
||||||
|
} else {
|
||||||
|
result = new GaodeNormalProvider();
|
||||||
|
mProviders.insert(GaodeNormapMap, result);
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:break;
|
||||||
|
}
|
||||||
|
|
||||||
|
return result;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
|
@ -0,0 +1,202 @@
|
||||||
|
#include <QImage>
|
||||||
|
#include <QPainter>
|
||||||
|
#include <QThreadPool>
|
||||||
|
#include <QDir>
|
||||||
|
#include <QSqlQuery>
|
||||||
|
#include <QSqlError>
|
||||||
|
|
||||||
|
#include <include/provider/tmsprovider.h>
|
||||||
|
#include <include/utils/network.h>
|
||||||
|
#pragma execution_character_set("utf-8")
|
||||||
|
|
||||||
|
namespace LAMPMainWidget
|
||||||
|
{
|
||||||
|
TileDownloadTask::TileDownloadTask(TileInfo tile, QObject* parent)
|
||||||
|
: QObject(parent),
|
||||||
|
mTile(std::move(tile))
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TileDownloadTask::run()
|
||||||
|
{
|
||||||
|
Network web{};
|
||||||
|
QByteArray data = web.httpsRequest(mTile.url);
|
||||||
|
mTile.data = data;
|
||||||
|
tileReady(mTile);
|
||||||
|
}
|
||||||
|
|
||||||
|
TmsProvider::TmsProvider(QObject* parent)
|
||||||
|
: LayerProvider(parent),
|
||||||
|
mImage(nullptr)
|
||||||
|
{
|
||||||
|
if (!QFile::exists(mDbName)) {
|
||||||
|
QFile dbFile{mDbName};
|
||||||
|
dbFile.open(QIODevice::ReadWrite);
|
||||||
|
dbFile.close();
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
TmsProvider::~TmsProvider()
|
||||||
|
{
|
||||||
|
delete mImage;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
TmsProvider::initCache()
|
||||||
|
{
|
||||||
|
mDbConn = QSqlDatabase::addDatabase("QSQLITE", id());
|
||||||
|
mDbConn.setDatabaseName(mDbName);
|
||||||
|
if (!mDbConn.open()) {
|
||||||
|
qCritical() << "缓存数据库打开失败";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
QSqlQuery sql{mDbConn};
|
||||||
|
if (!mDbConn.tables().contains(mTableName)) {
|
||||||
|
sql.prepare(QString("create table %1 ("
|
||||||
|
"id integer primary key autoincrement,"
|
||||||
|
"provider text not null,"
|
||||||
|
"zoom integer not null,"
|
||||||
|
"position text not null,"
|
||||||
|
"data blob not null"
|
||||||
|
")").arg(mTableName));
|
||||||
|
if (!sql.exec()) {
|
||||||
|
qCritical() << "缓存表创建失败" << sql.lastError().text();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
mDbConn.close();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
QByteArray
|
||||||
|
TmsProvider::getCache(const QPoint& pos, int zoom)
|
||||||
|
{
|
||||||
|
QByteArray res{};
|
||||||
|
mDbConn.open();
|
||||||
|
QSqlQuery select{mDbConn};
|
||||||
|
select.prepare(QString("select data from %1 "
|
||||||
|
"where provider = :provider "
|
||||||
|
"and zoom = :zoom "
|
||||||
|
"and position = :position "
|
||||||
|
"order by id desc limit 1"
|
||||||
|
).arg(mTableName));
|
||||||
|
select.bindValue(":provider", id());
|
||||||
|
select.bindValue(":zoom", zoom);
|
||||||
|
select.bindValue(":position", QString("%1:%2").arg(pos.x()).arg(pos.y()));
|
||||||
|
if (!select.exec()) {
|
||||||
|
qDebug() << pos << "查询失败=>" << select.lastError().text();
|
||||||
|
mDbConn.close();
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
if (!select.seek(0)) {
|
||||||
|
mDbConn.close();
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
res = select.value(0).toByteArray();
|
||||||
|
mDbConn.close();
|
||||||
|
return res;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
TmsProvider::addCache(const QPoint& pos, int zoom, QByteArray data)
|
||||||
|
{
|
||||||
|
if (data.isEmpty()) {
|
||||||
|
qWarning() << "瓦片数据为空";
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
mDbConn.open();
|
||||||
|
QSqlQuery sql{mDbConn};
|
||||||
|
sql.prepare(QString{
|
||||||
|
"insert into %1 (provider, zoom, position, data)"
|
||||||
|
"values( :provider, :zoom, :position, :data)"
|
||||||
|
}.arg(mTableName));
|
||||||
|
sql.bindValue(":tbname", mTableName);
|
||||||
|
sql.bindValue(":provider", id());
|
||||||
|
sql.bindValue(":zoom", zoom);
|
||||||
|
sql.bindValue(":position", QString("%1:%2").arg(pos.x()).arg(pos.y()));
|
||||||
|
sql.bindValue(":data", data);
|
||||||
|
|
||||||
|
if (!sql.exec()) {
|
||||||
|
qCritical() << pos << "=>" << sql.lastError().text();
|
||||||
|
mDbConn.close();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
mDbConn.close();
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
bool
|
||||||
|
TmsProvider::cacheContains(const QPoint& pos, int zoom)
|
||||||
|
{
|
||||||
|
QByteArray res = getCache(pos, zoom);
|
||||||
|
return !res.isEmpty();
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TmsProvider::createTask(const QRectF& rect, int zoom)
|
||||||
|
{
|
||||||
|
newImage(rect);
|
||||||
|
|
||||||
|
/// 创建下载瓦片任务
|
||||||
|
const QSize sz = tileSize();
|
||||||
|
int xMin = qFloor(rect.topLeft().x() / sz.width());
|
||||||
|
double xOffset = rect.topLeft().x() / sz.width() - xMin;
|
||||||
|
int xMax = qFloor(rect.bottomRight().x() / sz.width());
|
||||||
|
int yMin = qFloor(rect.topLeft().y() / sz.height());
|
||||||
|
double yOffset = rect.topLeft().y() / sz.height() - yMin;
|
||||||
|
int yMax = qFloor(rect.bottomRight().y() / sz.height());
|
||||||
|
for (int i = xMin; i <= xMax; ++i) {
|
||||||
|
for (int j = yMin; j <= yMax; ++j) {
|
||||||
|
TileInfo tile{};
|
||||||
|
tile.index = QPointF{i - xMin - xOffset, j - yMin - yOffset};
|
||||||
|
tile.position = QPoint{i, j};
|
||||||
|
tile.zoom = zoom;
|
||||||
|
tile.coord = QPoint{i - xMin, j - yMin};
|
||||||
|
tile.url = tileUrl(PointXY{static_cast<double>(i), static_cast<double>(j)}, zoom);
|
||||||
|
auto tileData = getCache(tile.position, tile.zoom);
|
||||||
|
if (!tileData.isEmpty()) {
|
||||||
|
tile.data = tileData;
|
||||||
|
tileReady(tile);
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
auto* task = new TileDownloadTask(tile);
|
||||||
|
QObject::connect(task, &TileDownloadTask::tileReady, this, &TmsProvider::tileReady);
|
||||||
|
QThreadPool::globalInstance()->start(task);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TmsProvider::tileReady(TileInfo tile)
|
||||||
|
{
|
||||||
|
if (!cacheContains(tile.position, tile.zoom)) {
|
||||||
|
addCache(tile.position, tile.zoom, tile.data);
|
||||||
|
}
|
||||||
|
QPainter painter{mImage};
|
||||||
|
QImage img = QImage::fromData(tile.data);
|
||||||
|
if (img.isNull()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
double xPos = tile.index.x() * tileSize().width();
|
||||||
|
double yPos = tile.index.y() * tileSize().height();
|
||||||
|
|
||||||
|
painter.drawImage(QPointF(xPos, yPos), img);
|
||||||
|
}
|
||||||
|
|
||||||
|
void
|
||||||
|
TmsProvider::newImage(const QRectF& rect)
|
||||||
|
{
|
||||||
|
QSize imgSize{int(rect.width()), int(rect.height())};
|
||||||
|
if (!mImage || imgSize != mImage->size()) {
|
||||||
|
mImage = new QImage(imgSize, QImage::Format_RGB32);
|
||||||
|
}
|
||||||
|
mImage->fill(Qt::white);
|
||||||
|
}
|
||||||
|
}
|
After Width: | Height: | Size: 361 B |
After Width: | Height: | Size: 496 B |
|
@ -0,0 +1,14 @@
|
||||||
|
<RCC>
|
||||||
|
<qresource prefix="/themes">
|
||||||
|
<file alias="mActionPan">theme/mActionPan.svg</file>
|
||||||
|
<file alias="mActionRefresh">theme/mActionRefresh.svg</file>
|
||||||
|
<file alias="mActionZoomIn">theme/mActionZoomIn.svg</file>
|
||||||
|
<file alias="mActionZoomOut">theme/mActionZoomOut.svg</file>
|
||||||
|
<file alias="mActionSelect">theme/mActionSelect.svg</file>
|
||||||
|
<file alias="mActionDownload">theme/mActionDownload.svg</file>
|
||||||
|
</qresource>
|
||||||
|
<qresource prefix="/">
|
||||||
|
<file>plane-red.png</file>
|
||||||
|
<file>plane-black.png</file>
|
||||||
|
</qresource>
|
||||||
|
</RCC>
|
|
@ -0,0 +1 @@
|
||||||
|
<?xml version="1.0" ?><!DOCTYPE svg PUBLIC '-//W3C//DTD SVG 1.1//EN' 'http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd'><svg enable-background="new 0 0 800 800" version="1.1" viewBox="0 0 800 800" xml:space="preserve" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><g id="Layer_1"><path d="M771.9,400c0,205.3-166.6,371.9-371.9,371.9S28.1,605.3,28.1,400S194.7,28.1,400,28.1 S771.9,194.7,771.9,400z" fill="#F06292"/></g><g id="Layer_2"><path d=" M468.2,497.4c0,0,81,0,88.6,0c42.5,0,77-34.5,77-77s-34.5-77-77-77c-0.2,0-0.4,0-0.6,0c0.6-4.8,1-9.7,1-14.7 c0-65.4-53-118.4-118.4-118.4c-50.9,0-94.2,32.2-110.9,77.4c-10.6-10.6-25.2-17.2-41.4-17.2c-32.3,0-58.5,26.2-58.5,58.5 c0,0.8,0.1,1.6,0.1,2.4c-35.7,9.9-62,42.5-62,81.3c0,46.7,37.8,84.5,84.5,84.5c8.1,0,81.2,0,81.2,0" fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" stroke-width="16"/><g><polyline fill="none" points="448.7,557.7 400,606.4 351.3,557.7 " stroke="#FFFFFF" stroke-linecap="round" stroke-miterlimit="10" stroke-width="16"/><line fill="none" stroke="#FFFFFF" stroke-linecap="round" stroke-miterlimit="10" stroke-width="16" x1="400" x2="400" y1="411.5" y2="603.1"/></g></g></svg>
|
After Width: | Height: | Size: 1.2 KiB |
|
@ -0,0 +1,6 @@
|
||||||
|
<svg height="24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<path d="m9.3797641.75499793c-.982122 0-1.8925021.62609527-1.8925021 1.49615247-.0000027.00101-.0000027.00202 0 .00303l.0582614 8.1966126-.9338533-2.0915926c-.0251985-.0571285-.0597716-.11122-.1023871-.16019-.3676306-.417893-.8495781-.7054664-1.3558261-.7768027-.5063017-.0713838-.9215368.0295376-1.3222488.1148398-.6076399.1293725-.9562193.5700338-1.0945572.9853708-.1314355.394696-.114703.820638.061796 1.2331811h-.00177l2.0284108 6.0814056c.01635.04943.039516.09723.068864.14206l3.4071564 5.182189.8226844 2.369697c.094212.270356.4118979.471091.7414497.468494l7.8153118-.05439c.346661-.0029.672884-.232329.743219-.522935l2.127319-8.753353c.0027-.01052.0051-.02109.0071-.03171.105254-.57349.06782-1.537511.04235-2.531403-.01276-.496946-.029-.978127-.04059-1.351097-.01166-.372921-.0087-.72369-.01414-.654387.0012-.01508.0018-.03019.0018-.0453v-2.933438c.000163-.047717-.0058-.095447-.01768-.1420631-.092603-.3569701-.222213-.6929683-.519046-.9868387-.275902-.2731347-.762435-.4452061-1.219864-.4231944v-.00601c-.02104 0-.04092.00535-.0618.00601-.01403.00129-.02844-.00161-.04235 0v .00455c-.319316.017561-.619681.1108161-.866813.256946v-.1934672c0-.8705782-.911708-1.4961849-1.894267-1.4961849h-.0053c-.560586 0-1.091519.2088514-1.449377.5456083v-.8810871c0-.8691577-.911321-1.4946719-1.892446-1.4946719-.487525 0-.957875.1537523-1.308166.4156202v-.4754938c0-.8686375-.908617-1.49615727-1.8907353-1.49615727z" fill="#ccc" stroke-width="1.14897895"/>
|
||||||
|
<path d="m9.7362401.34032241c-.9821192 0-1.8925026.62609028-1.8925026 1.49614789-.0000027.00101-.0000027.00202 0 .00303l.0582638 8.091862-.9339086-2.0915934c-.0251988-.0571275-.0597719-.111218-.1023871-.1601873-.3675777-.4178937-.8495256-.7054681-1.355827-.7768045-.5062455-.0713838-.9215377.0295385-1.3222488.1148407-.6075849.1293714-.9562192.5700329-1.0945027.9853708-.1314906.3946961-.1147024.8206367.0617414 1.2331791h-.00171l2.02841 6.0814083c.016334.04944.039481.09723.068811.142057l3.4072099 5.182189.8226855 2.369699c.094211.270357.4118967.471092.7414491.468497l7.815316-.05439c.346662-.0029.672882-.232329.743217-.522935l2.127266-8.753304c.0027-.01054.005-.02112.0071-.03177.105314-.57344.06787-1.537511.04242-2.531401-.01276-.496944-.029-.978127-.04064-1.351096-.01159-.3729232-.0086-.7236913-.01414-.6543431.0012-.015094.0018-.03023.0018-.045354v-2.9333886c.000175-.047714-.0058-.095444-.01765-.1420597-.09261-.3570071-.222215-.693006-.519106-.9868753-.275904-.273137-.762436-.4452072-1.219864-.423147v-.00607c-.02099 0-.04087.00534-.0618.00607-.01403.00124-.02839-.00166-.04236 0v .00449c-.319254.017566-.61962.1108193-.866807.2569483v-.1934654c0-.8705792-.911656-1.4961397-1.894215-1.4961397h-.0053c-.56059 0-1.091575.2088052-1.449377.545561v-.8810851c0-.8691588-.911377-1.4946719-1.892503-1.4946719-.487472 0-.957874.1537505-1.308111.4156202v-.3707439c0-.86863692-.90867-1.49615338-1.8907349-1.49615338z" fill="#999" stroke-width="1.14897895"/>
|
||||||
|
<path d="m10.291029.06303052c-.960084 0-1.8500346.61286024-1.8500346 1.46449338-.0000027.0009965-.0000027.00199 0 .00299l.0569371 7.9963521-.9129231-2.0473325c-.0246403-.0559304-.0584487-.1088866-.1001219-.1568272-.3593471-.4090401-.830471-.6905081-1.3253975-.7603303-.4949252-.0698686-.9008822.0289246-1.2925935.1124254-.5939995.126628-.9347919.5579643-1.0699824.9644949-.1285082.3863195-.1121064.8032633.0604158 1.2070975h-.00176l1.9829592 5.9526482c.015968.04838.038596.09516.067265.139031l3.3307772 5.07251.8041867 2.319522c.09211.264626.40267.461099.724825.458552l7.640031-.05326c.338866-.0028.657758-.227376.726541-.511808l2.079606-8.568028c.0026-.01032.0049-.02069.0069-.0311.102885-.561323.06632-1.504945.04142-2.47777-.01248-.486435-.02833-.957442-.03971-1.3225051-.01138-.3650653-.0083-.7084011-.0138-.6405203.0011-.014778.0018-.029589.0018-.044401v-2.8712826c.000159-.046695-.0057-.093404-.01728-.1390223-.090559-.3494454-.217244-.6783447-.507454-.966011-.26972-.2673614-.745316-.4357397-1.192525-.4142017v-.00591c-.02049 0-.03998.00525-.06037.00591-.01375.00124-.02782-.00161-.04142 0v .00445c-.312129.017184-.60576.1084513-.847371.2514559v-.1893483c0-.8521168-.891217-1.4644708-1.851746-1.4644708h-.0052c-.548052 0-1.067054.2044019-1.41685.5340109v-.8624354c0-.850744-.890942-1.4630026-1.850033-1.4630026-.476591 0-.936393.1505313-1.278842.4068156v-.438697c0-.85024612-.888238-1.46449341-1.848268-1.46449341l0 0z" stroke="#000" stroke-width=".03530137"/>
|
||||||
|
<path d="m10.290257.80959703c-.6092983 0-1.1004663.36643757-1.1004663.82210417l.06555 9.3816458c-.0171747.388827-.6921882.457749-.8194258.173302l-1.5494454-3.4774835c-.5773206-.6572292-1.070203-.5749111-1.8378279-.4112659-.5216001.1112418-.7375848.8098446-.4726154 1.372541l1.9816346 5.9526974 3.3723074 5.13613.8292568 2.387969 7.639094-.0533 2.080598-8.56883c.137012-.747173-.04247-4.0967016-.01938-4.3864068v-2.8705721c-.152148-.5875495-.437495-.9467901-.969091-.8838806-.6104 0-.923911.4282129-.923911.8838795v2.8411758c.106528.3851373-.813685.4854894-.774364-.00194v-4.2914437c0-.4556679-.491777-.8227677-1.102179-.8227677h-.0052c-.610401 0-1.101295.3670998-1.101295.8227677v3.4464279c.111221.4166163-1.09003.53846-1.063467-.00194v-5.2372416c0-.4556676-.491779-.8221511-1.102179-.8221511-.610456 0-1.102232.3664835-1.102232.8221511v5.5051713c.04827.3819148-.901381.4781515-.925792-.00129v-6.8953548c0-.4556666-.490286-.82210383-1.09958-.82210383l0 0 0 0 0 0 0 0z" fill="#fff" stroke="#000" stroke-width=".01642426"/>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 5.3 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<svg height="24" width="24" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"><linearGradient id="b"><stop offset="0" stop-color="#fff"/><stop offset="1" stop-color="#fff" stop-opacity="0"/></linearGradient><linearGradient id="a"><stop offset="0" stop-color="#3465a4"/><stop offset="1" stop-color="#3465a4"/></linearGradient><linearGradient id="g" gradientUnits="userSpaceOnUse" x1="16.431" x2="18.865" y1="17.169" y2="13.958"><stop offset="0" stop-color="#c4d7eb"/><stop offset="1" stop-color="#c4d7eb" stop-opacity="0"/></linearGradient><linearGradient id="h" gradientUnits="userSpaceOnUse" x1="18.642" x2="18.865" y1="17.554" y2="13.958"><stop offset="0" stop-color="#2b5b95"/><stop offset="1" stop-color="#5c8fce" stop-opacity="0"/></linearGradient><linearGradient id="c" gradientUnits="userSpaceOnUse" x1="6.262" x2="7.318" y1="5.295" y2="9.918"><stop offset="0" stop-color="#264976"/><stop offset=".333" stop-color="#3f689d"/><stop offset="1" stop-color="#5689ca" stop-opacity="0"/></linearGradient><linearGradient id="d" gradientTransform="matrix(-.54367 0 0 -.54367 24.52 24.602)" gradientUnits="userSpaceOnUse" x1="37.128" x2="37.065" y1="29.73" y2="26.194"><stop offset="0" stop-color="#3465a4"/><stop offset="1" stop-color="#3465a4" stop-opacity="0"/></linearGradient><linearGradient id="e" gradientTransform="matrix(-.31481 -.26598 -.26598 .31481 29.625 6.946)" gradientUnits="userSpaceOnUse" x1="62.514" x2="15.985" y1="36.061" y2="20.609"><stop offset="0" stop-color="#8cb0d8"/><stop offset="1" stop-color="#4580bf"/></linearGradient><linearGradient id="f" gradientTransform="matrix(-.31481 -.26598 -.26598 .31481 29.625 6.946)" gradientUnits="userSpaceOnUse" x1="46.835" x2="45.38" xlink:href="#a" y1="45.264" y2="50.94"/><linearGradient id="l" gradientTransform="matrix(-.27647 -.23359 -.23359 .27647 27.523 6.943)" gradientUnits="userSpaceOnUse" x1="5.965" x2="52.854" xlink:href="#b" y1="26.048" y2="26.048"/><linearGradient id="i" gradientTransform="matrix(.31481 .26598 .26598 -.31481 -5.625 17.054)" gradientUnits="userSpaceOnUse" x1="18.936" x2="53.589" y1="23.668" y2="26.649"><stop offset="0" stop-color="#4580bf"/><stop offset="1" stop-color="#376da5"/></linearGradient><linearGradient id="j" gradientTransform="matrix(.31481 .26598 .26598 -.31481 -5.625 17.054)" gradientUnits="userSpaceOnUse" x1="46.835" x2="45.38" xlink:href="#a" y1="45.264" y2="50.94"/><linearGradient id="k" gradientUnits="userSpaceOnUse" x1="5.965" x2="52.854" xlink:href="#b" y1="26.048" y2="26.048"/><path d="M9.638 5.336s-4.859-.34-3.364 5.369h-4.18s.273-6.456 7.544-5.369z" display="block" fill="url(#c)" overflow="visible" stroke="url(#d)" stroke-width=".544"/><path d="M2.317 10.975C.32 1.513 10.423-2.041 19.229 4.906l2.596-2.85-.052 9.315-8.134-.008 2.707-3.044C10.153 3.625 2.22 3.977 2.316 10.975z" display="block" fill="url(#e)" overflow="visible" stroke="url(#f)" stroke-width=".544"/><path d="M14.108 18.631s4.86.34 3.364-5.369H21.7c0 .817-.32 6.456-7.592 5.37z" display="block" fill="url(#g)" overflow="visible" stroke="url(#h)" stroke-width=".544"/><path d="M21.683 13.025c1.996 9.462-8.106 13.016-16.912 6.069l-2.528 2.951.018-9.348 7.965-.06-2.572 3.044c6.193 4.694 14.126 4.342 14.03-2.656z" display="block" fill="url(#i)" overflow="visible" stroke="url(#j)" stroke-width=".544"/><path d="M2.521 21.214l.034-8.088 7.034-.203-2.386 2.815 2.102 1.29c-1.63 1.224-2.473 1.317-3.017 2.71l-1.531-1.147-2.236 2.623z" fill="#e6e6e6" opacity=".272" overflow="visible"/><path d="M51.09 45.944c9.12-15.22-4.458-33.743-31.605-33.995l.028-8.246L6.534 19.297l12.834 10.972.055-9.007c17.528-.224 35.195 10.103 31.667 24.682z" transform="matrix(.27647 .23359 .23359 -.27647 -3.478 17.056)" fill="none" stroke-width="1.502" display="block" overflow="visible" stroke="url(#k)" opacity=".5"/><path d="M2.451 7.797c1.034-6.338 9.16-8.407 16.825-2.102l1.953-2.15.014 7.275-6.383.002 2.258-2.571C11.985 4.094 4.95 3.146 2.451 7.797z" opacity=".5" fill="none" stroke-width=".544" display="block" overflow="visible" stroke="url(#l)"/><path d="M2.385 8.647c1.954-5.676 8.94-3.34 10.976-2.446 2.27.115 3.085-1.541 4.893-1.631C10.615-.753 2.589 1.036 2.385 8.647z" fill="#fff" opacity=".272" overflow="visible"/></svg>
|
After Width: | Height: | Size: 4.1 KiB |
|
@ -0,0 +1 @@
|
||||||
|
<svg xmlns="http://www.w3.org/2000/svg" height="24" width="24"><path d="M2.5 2.5h17v17h-17z" fill="none" stroke="#727272" stroke-dasharray="1, 2"/><path d="M2.5 2.5h3v3h-3zm14 0h3v3h-3zm0 14h3v3h-3zm-14 0h3v3h-3z" fill="#e5e5e5" stroke="#727272"/><path d="M19.5 14.636L5.5 2.5l2.357 17.59 4.022-3.44 3.92 6.85 2.648-1.346-4.06-6.83z" fill="#fff" fill-rule="evenodd" stroke="#000" stroke-linecap="round" stroke-linejoin="round"/></svg>
|
After Width: | Height: | Size: 435 B |
|
@ -0,0 +1,16 @@
|
||||||
|
<svg height="24" width="24" xmlns="http://www.w3.org/2000/svg">
|
||||||
|
<g transform="translate(0 -8)">
|
||||||
|
<path d="m17.96122 7c0 3.354712-2.668929 6.074244-5.96122 6.074244-3.292291 0-5.9612203-2.719532-5.9612203-6.074244 0-3.3547121 2.6689293-6.07424355 5.9612203-6.07424355 3.292291 0 5.96122 2.71953145 5.96122 6.07424355z" style="opacity:.8;fill:#e6e6e6;stroke:#505050;stroke-width:.75218332;stroke-linecap:round;stroke-linejoin:round;stroke-dashoffset:7" transform="matrix(1.3420071 0 0 1.3170365 -1.6040853 8.2791092)"/>
|
||||||
|
<path d="m10 13c2-3 4.442248-3.398055 6-2 1.557752 1.398055-2 1-4 3-2 2 0 6-2 6-1.9999999 0-1.9999999-4 0-7z" fill="#fcffff" fill-rule="evenodd" opacity=".7"/>
|
||||||
|
<path d="m14.5 13.2l0 8.6" style="fill:none;stroke:#000;stroke-width:2.9000001;stroke-linecap:round;stroke-linejoin:round;overflow:visible"/>
|
||||||
|
<path d="m2.0000001 29l4-4" opacity=".5" overflow="visible" stroke="#fcffff" stroke-linecap="round" stroke-linejoin="round"/>
|
||||||
|
<path d="m10.2 17.5l8.6 0" style="fill:none;stroke:#000;stroke-width:2.9000001;stroke-linecap:round;stroke-linejoin:round;overflow:visible"/>
|
||||||
|
<path d="m10.2 17.5l8.6 0" style="fill:none;stroke:#6d97c4;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;overflow:visible"/>
|
||||||
|
<g stroke-linejoin="round" transform="translate(8.7360334 4.906424)">
|
||||||
|
<path d="m-1.2360334 17.593576c0 2 2.00000001 2 2.00000001 2 0 0-7.00000001 7-7.00000001 7l-2-2z" fill="#ffcc30" fill-rule="evenodd" stroke="#505050"/>
|
||||||
|
<path d="m-2.7360334 19.093576l2.00000001-2 1.99999989 2-1.99999989 2z" fill-rule="evenodd" stroke="#505050"/>
|
||||||
|
<path d="m-6.7360334 24.093576l4-4" opacity=".5" overflow="visible" stroke="#fcffff" stroke-linecap="round"/>
|
||||||
|
</g>
|
||||||
|
<path d="m14.5 13.2l0 8.6" style="fill:none;stroke:#6d97c4;stroke-width:2.5;stroke-linecap:round;stroke-linejoin:round;overflow:visible"/>
|
||||||
|
</g>
|
||||||
|
</svg>
|
After Width: | Height: | Size: 1.8 KiB |