SVN checkout 11/12/2010
[monav:monav.git] / plugins / osmrenderer / mapnikrenderer.h
1 /*
2 Copyright 2010  Christian Vetter veaac.fdirct@gmail.com
3
4 This file is part of MoNav.
5
6 MoNav is free software: you can redistribute it and/or modify
7 it under the terms of the GNU General Public License as published by
8 the Free Software Foundation, either version 3 of the License, or
9 (at your option) any later version.
10
11 MoNav is distributed in the hope that it will be useful,
12 but WITHOUT ANY WARRANTY; without even the implied warranty of
13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
14 GNU General Public License for more details.
15
16 You should have received a copy of the GNU General Public License
17 along with MoNav.  If not, see <http://www.gnu.org/licenses/>.
18 */
19
20 #ifndef MAPNIKRENDERER_H
21 #define MAPNIKRENDERER_H
22
23 #include <QObject>
24 #include <QFile>
25 #include "interfaces/ipreprocessor.h"
26 #include "mrsettingsdialog.h"
27
28 class MapnikRenderer : public QObject, public IPreprocessor
29 {
30         Q_OBJECT
31         Q_INTERFACES( IPreprocessor )
32
33 public:
34          MapnikRenderer();
35         virtual QString GetName();
36         virtual int GetFileFormatVersion();
37         virtual Type GetType();
38         virtual QWidget* GetSettings();
39         virtual bool LoadSettings( QSettings* settings );
40         virtual bool SaveSettings( QSettings* settings );
41         virtual bool Preprocess( IImporter* importer, QString dir );
42         virtual ~MapnikRenderer();
43
44 signals:
45         void changed();
46
47 protected:
48         struct MetaTile {
49                 int zoom;
50                 int x;
51                 int y;
52                 int metaTileSizeX;
53                 int metaTileSizeY;
54         };
55         struct IndexElement {
56                 qint64 start;
57                 int size;
58         };
59         struct ZoomInfo {
60                 int minX;
61                 int maxX;
62                 int minY;
63                 int maxY;
64                 std::vector< IndexElement > index;
65                 QFile* tilesFile;
66         };
67
68         MRSettingsDialog* m_settingsDialog;
69 };
70
71 #endif // MAPNIKRENDERER_H