mirror of
https://github.com/tumic0/GPXSee.git
synced 2024-11-24 03:35:53 +01:00
Do not make unnecessary checks when loading IMG maps and TrekBuddy atlases
This commit is contained in:
parent
ca0089e486
commit
e7d6c3f76a
@ -149,18 +149,3 @@ GMAPData::~GMAPData()
|
|||||||
{
|
{
|
||||||
qDeleteAll(_files);
|
qDeleteAll(_files);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool GMAPData::isGMAP(const QString &path)
|
|
||||||
{
|
|
||||||
QFile file(path);
|
|
||||||
|
|
||||||
if (!file.open(QFile::ReadOnly | QFile::Text))
|
|
||||||
return false;
|
|
||||||
|
|
||||||
QXmlStreamReader reader(&file);
|
|
||||||
if (reader.readNextStartElement()
|
|
||||||
&& reader.name() == QLatin1String("MapProduct"))
|
|
||||||
return true;
|
|
||||||
|
|
||||||
return false;
|
|
||||||
}
|
|
||||||
|
@ -14,8 +14,6 @@ public:
|
|||||||
GMAPData(const QString &fileName);
|
GMAPData(const QString &fileName);
|
||||||
~GMAPData();
|
~GMAPData();
|
||||||
|
|
||||||
static bool isGMAP(const QString &path);
|
|
||||||
|
|
||||||
private:
|
private:
|
||||||
bool readXML(const QString &path, QString &dataDir, QString &typFile,
|
bool readXML(const QString &path, QString &dataDir, QString &typFile,
|
||||||
QString &baseMap);
|
QString &baseMap);
|
||||||
|
@ -77,25 +77,23 @@ void Atlas::computeBounds()
|
|||||||
QRectF(offsets.at(i), _maps.at(i)->bounds().size()));
|
QRectF(offsets.at(i), _maps.at(i)->bounds().size()));
|
||||||
}
|
}
|
||||||
|
|
||||||
Atlas::Atlas(const QString &fileName, QObject *parent)
|
Atlas::Atlas(const QString &fileName, bool TAR, QObject *parent)
|
||||||
: Map(fileName, parent), _zoom(0), _mapIndex(-1), _valid(false)
|
: Map(fileName, parent), _zoom(0), _mapIndex(-1), _valid(false)
|
||||||
{
|
{
|
||||||
QFileInfo fi(fileName);
|
QFileInfo fi(fileName);
|
||||||
QByteArray ba;
|
QByteArray ba;
|
||||||
QString suffix = fi.suffix().toLower();
|
|
||||||
Tar tar(fileName);
|
Tar tar(fileName);
|
||||||
|
|
||||||
|
|
||||||
_name = fi.dir().dirName();
|
_name = fi.dir().dirName();
|
||||||
|
|
||||||
if (suffix == "tar") {
|
if (TAR) {
|
||||||
if (!tar.open()) {
|
if (!tar.open()) {
|
||||||
_errorString = "Error reading tar file";
|
_errorString = "Error reading tar file";
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
QString tbaFileName = fi.completeBaseName() + ".tba";
|
QString tbaFileName = fi.completeBaseName() + ".tba";
|
||||||
ba = tar.file(tbaFileName);
|
ba = tar.file(tbaFileName);
|
||||||
} else if (suffix == "tba") {
|
} else {
|
||||||
QFile tbaFile(fileName);
|
QFile tbaFile(fileName);
|
||||||
if (!tbaFile.open(QIODevice::ReadOnly)) {
|
if (!tbaFile.open(QIODevice::ReadOnly)) {
|
||||||
_errorString = QString("Error opening tba file: %1")
|
_errorString = QString("Error opening tba file: %1")
|
||||||
@ -293,10 +291,18 @@ void Atlas::unload()
|
|||||||
_maps.at(i)->unload();
|
_maps.at(i)->unload();
|
||||||
}
|
}
|
||||||
|
|
||||||
Map *Atlas::create(const QString &path, const Projection &, bool *isDir)
|
Map *Atlas::createTAR(const QString &path, const Projection &, bool *isDir)
|
||||||
{
|
{
|
||||||
if (isDir)
|
if (isDir)
|
||||||
*isDir = true;
|
*isDir = true;
|
||||||
|
|
||||||
return new Atlas(path);
|
return new Atlas(path, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
Map *Atlas::createTBA(const QString &path, const Projection &, bool *isDir)
|
||||||
|
{
|
||||||
|
if (isDir)
|
||||||
|
*isDir = true;
|
||||||
|
|
||||||
|
return new Atlas(path, false);
|
||||||
}
|
}
|
||||||
|
@ -11,7 +11,7 @@ class Atlas : public Map
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
Atlas(const QString &fileName, QObject *parent = 0);
|
Atlas(const QString &fileName, bool TAR, QObject *parent = 0);
|
||||||
|
|
||||||
QString name() const {return _name;}
|
QString name() const {return _name;}
|
||||||
|
|
||||||
@ -34,7 +34,8 @@ public:
|
|||||||
bool isValid() const {return _valid;}
|
bool isValid() const {return _valid;}
|
||||||
QString errorString() const {return _errorString;}
|
QString errorString() const {return _errorString;}
|
||||||
|
|
||||||
static Map *create(const QString &path, const Projection &, bool *isDir);
|
static Map *createTAR(const QString &path, const Projection &, bool *isDir);
|
||||||
|
static Map *createTBA(const QString &path, const Projection &, bool *isDir);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
struct Zoom {
|
struct Zoom {
|
||||||
|
@ -40,11 +40,11 @@ static QList<MapData*> overlays(const QString &fileName)
|
|||||||
return list;
|
return list;
|
||||||
}
|
}
|
||||||
|
|
||||||
IMGMap::IMGMap(const QString &fileName, QObject *parent)
|
IMGMap::IMGMap(const QString &fileName, bool GMAP, QObject *parent)
|
||||||
: Map(fileName, parent), _projection(PCS::pcs(3857)), _tileRatio(1.0),
|
: Map(fileName, parent), _projection(PCS::pcs(3857)), _tileRatio(1.0),
|
||||||
_valid(false)
|
_valid(false)
|
||||||
{
|
{
|
||||||
if (GMAPData::isGMAP(fileName))
|
if (GMAP)
|
||||||
_data.append(new GMAPData(fileName));
|
_data.append(new GMAPData(fileName));
|
||||||
else {
|
else {
|
||||||
_data.append(new IMGData(fileName));
|
_data.append(new IMGData(fileName));
|
||||||
@ -291,10 +291,18 @@ void IMGMap::setOutputProjection(const Projection &projection)
|
|||||||
QPixmapCache::clear();
|
QPixmapCache::clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
Map* IMGMap::create(const QString &path, const Projection &, bool *isDir)
|
Map* IMGMap::createIMG(const QString &path, const Projection &, bool *isDir)
|
||||||
{
|
{
|
||||||
if (isDir)
|
if (isDir)
|
||||||
*isDir = GMAPData::isGMAP(path);
|
*isDir = false;
|
||||||
|
|
||||||
return new IMGMap(path);
|
return new IMGMap(path, false);
|
||||||
|
}
|
||||||
|
|
||||||
|
Map* IMGMap::createGMAP(const QString &path, const Projection &, bool *isDir)
|
||||||
|
{
|
||||||
|
if (isDir)
|
||||||
|
*isDir = true;
|
||||||
|
|
||||||
|
return new IMGMap(path, true);
|
||||||
}
|
}
|
||||||
|
@ -49,7 +49,7 @@ class IMGMap : public Map
|
|||||||
Q_OBJECT
|
Q_OBJECT
|
||||||
|
|
||||||
public:
|
public:
|
||||||
IMGMap(const QString &fileName, QObject *parent = 0);
|
IMGMap(const QString &fileName, bool GMAP, QObject *parent = 0);
|
||||||
~IMGMap() {qDeleteAll(_data);}
|
~IMGMap() {qDeleteAll(_data);}
|
||||||
|
|
||||||
QString name() const {return _data.first()->name();}
|
QString name() const {return _data.first()->name();}
|
||||||
@ -79,7 +79,8 @@ public:
|
|||||||
bool isValid() const {return _valid;}
|
bool isValid() const {return _valid;}
|
||||||
QString errorString() const {return _errorString;}
|
QString errorString() const {return _errorString;}
|
||||||
|
|
||||||
static Map* create(const QString &path, const Projection &, bool *isDir);
|
static Map* createIMG(const QString &path, const Projection &, bool *isDir);
|
||||||
|
static Map* createGMAP(const QString &path, const Projection &, bool *isDir);
|
||||||
|
|
||||||
private slots:
|
private slots:
|
||||||
void jobFinished(IMGMapJob *job);
|
void jobFinished(IMGMapJob *job);
|
||||||
|
@ -24,12 +24,12 @@ MapList::ParserMap MapList::parsers()
|
|||||||
{
|
{
|
||||||
MapList::ParserMap map;
|
MapList::ParserMap map;
|
||||||
|
|
||||||
map.insert("tar", &Atlas::create);
|
map.insert("tar", &Atlas::createTAR);
|
||||||
map.insert("tar", &OziMap::create);
|
map.insert("tar", &OziMap::create);
|
||||||
map.insert("tba", &Atlas::create);
|
map.insert("tba", &Atlas::createTBA);
|
||||||
map.insert("xml", &MapSource::create);
|
map.insert("xml", &MapSource::create);
|
||||||
map.insert("xml", &IMGMap::create);
|
map.insert("xml", &IMGMap::createGMAP);
|
||||||
map.insert("img", &IMGMap::create);
|
map.insert("img", &IMGMap::createIMG);
|
||||||
map.insert("jnx", &JNXMap::create);
|
map.insert("jnx", &JNXMap::create);
|
||||||
map.insert("tif", &GeoTIFFMap::create);
|
map.insert("tif", &GeoTIFFMap::create);
|
||||||
map.insert("tiff", &GeoTIFFMap::create);
|
map.insert("tiff", &GeoTIFFMap::create);
|
||||||
|
Loading…
Reference in New Issue
Block a user