source: subversion/applications/editors/merkaartor/PaintStyle/PaintStyle.h @ 13989

Last change on this file since 13989 was 13158, checked in by Chris Browet, 11 years ago

FIX : Allow port number in WMS/TMS server address (fixes #1479)

  • Property svn:eol-style set to native
File size: 5.6 KB
Line 
1#ifndef MERKAARTOR_PAINTSTYLE_H_
2#define MERKAARTOR_PAINTSTYLE_H_
3
4#include <QtCore/QString>
5#include <QtGui/QColor>
6#include <QFont>
7
8#include <vector>
9
10#include "PaintStyle/TagSelector.h"
11
12class MapFeature;
13class Projection;
14class Relation;
15class Road;
16class TagSelector;
17class TrackPoint;
18class QPainter;
19class QPainterPath;
20class QFont;
21class QDomElement;
22
23class LineParameters
24{
25        public:
26                bool Draw;
27                bool Dashed;
28                QColor Color;
29                double Proportional;
30                double Fixed;
31                double DashOn;
32                double DashOff;
33};
34
35class IconParameters
36{
37        public:
38                bool Draw;
39                QString Name;
40                double Proportional;
41                double Fixed;
42};
43
44class FeaturePainter
45{
46        public:
47                typedef enum {NoZoomLimit, GlobalZoom, RegionalZoom, LocalZoom } ZoomType;
48
49                FeaturePainter();
50                FeaturePainter(const FeaturePainter& f);
51                FeaturePainter& operator=(const FeaturePainter& F);
52                ~FeaturePainter();
53
54                void setSelector(const QString& aName);
55                void setSelector(TagSelector* aSelector);
56                bool isFilled() const;
57                TagSelectorMatchResult matchesTag(const MapFeature* F) const;
58                bool matchesZoom(double PixelPerM) const;
59                FeaturePainter& backgroundActive(bool b);
60                FeaturePainter& background(QColor Color, double Scale, double Offset);
61                FeaturePainter& foregroundActive(bool b);
62                FeaturePainter& foreground(QColor Color, double Scale, double Offset);
63                FeaturePainter& foregroundDash(double Dash, double White);
64                FeaturePainter& touchupActive(bool b);
65                FeaturePainter& touchup(QColor Color, double Scale, double Offset);
66                FeaturePainter& touchupDash(double Dash, double White);
67                FeaturePainter& foregroundFill(QColor FillColor);
68                FeaturePainter& zoomBoundary(double anUnder, double anUpper);
69                FeaturePainter& drawTrafficDirectionMarks();
70                FeaturePainter& trackPointIcon(const QString& Filename);
71                FeaturePainter& fillActive(bool b);
72                FeaturePainter& iconActive(bool b);
73                FeaturePainter& setIcon(const QString& Name, double Scale, double Offset);
74                FeaturePainter& labelActive(bool b);
75                FeaturePainter& labelTag(const QString& val);
76                FeaturePainter& label(QColor Color, double Scale, double Offset);
77                FeaturePainter& setLabelFont(const QString& descFont);
78                FeaturePainter& labelBackgroundActive(bool b);
79                FeaturePainter& labelBackground(QColor bgColor);
80                FeaturePainter& labelBackgroundTag(const QString& val);
81                FeaturePainter& labelHalo(bool b);
82                FeaturePainter& labelArea(bool b);
83
84                QString userName() const;
85                std::pair<double, double> zoomBoundaries() const;
86                LineParameters backgroundBoundary() const;
87                LineParameters foregroundBoundary() const;
88                LineParameters labelBoundary() const;
89                IconParameters icon() const;
90                void clearForegroundDash();
91                LineParameters touchupBoundary() const;
92                void clearTouchupDash();
93                QColor fillColor() const;
94                QColor labelBackgroundColor() const;
95                QFont getLabelFont() const;
96                QString getLabelTag() const;
97                QString getLabelBackgroundTag() const;
98                bool getLabelHalo() const;
99                bool getLabelArea() const;
100
101                QString toXML(QString filename) const;
102                static FeaturePainter fromXML(const QDomElement& e, QString filename);
103
104                void drawBackground(Road* R, QPainter& thePainter, const Projection& theProjection) const;
105                void drawBackground(Relation* R, QPainter& thePainter, const Projection& theProjection) const;
106                void drawForeground(Road* R, QPainter& thePainter, const Projection& theProjection) const;
107                void drawForeground(Relation* R, QPainter& thePainter, const Projection& theProjection) const;
108                void drawTouchup(Road* R, QPainter& thePainter, const Projection& theProjection) const;
109                void drawTouchup(TrackPoint* R, QPainter& thePainter, const Projection& theProjection) const;
110                void drawLabel(Road* R, QPainter& thePainter, const Projection& theProjection) const;
111                void drawPointLabel(QPoint C, QString str, QString strBG, QPainter& thePainter, const Projection& theProjection) const;
112                void drawLabel(TrackPoint* Pt, QPainter& thePainter, const Projection& theProjection) const;
113
114        public:
115                TagSelector* theSelector;
116                bool ZoomLimitSet;
117                double ZoomUnder, ZoomUpper;
118                bool DrawBackground;
119                QColor BackgroundColor;
120                double BackgroundScale;
121                double BackgroundOffset;
122                bool DrawForeground;
123                QColor ForegroundColor;
124                double ForegroundScale;
125                double ForegroundOffset;
126                bool ForegroundDashSet;
127                double ForegroundDash, ForegroundWhite;
128                bool DrawTouchup;
129                QColor TouchupColor;
130                double TouchupScale;
131                double TouchupOffset;
132                bool TouchupDashSet;
133                double TouchupDash, TouchupWhite;
134                bool ForegroundFill;
135                QColor ForegroundFillFillColor;
136                bool DrawTrafficDirectionMarks;
137                bool DrawIcon;
138                QString IconName;
139                double IconScale;
140                double IconOffset;
141                bool DrawLabel;
142                QString LabelTag;
143                QColor LabelColor;
144                double LabelScale;
145                double LabelOffset;
146                bool DrawLabelBackground;
147                QColor LabelBackgroundColor;
148                QString LabelBackgroundTag;
149                QFont LabelFont;
150                bool LabelHalo;
151                bool LabelArea;
152};
153
154class GlobalPainter
155{
156        public:
157                GlobalPainter();
158                GlobalPainter(const GlobalPainter& f);
159                GlobalPainter& operator=(const GlobalPainter& F);
160                ~GlobalPainter();
161
162                GlobalPainter& backgroundActive(bool b);
163                GlobalPainter& background(QColor Color);
164
165                bool getDrawBackground() const;
166                QColor getBackgroundColor() const;
167
168                QString toXML() const;
169                static GlobalPainter fromXML(const QDomElement& e);
170
171        public:
172                bool DrawBackground;
173                QColor BackgroundColor;
174};
175
176class PaintStyleLayer
177{
178        public:
179                virtual ~PaintStyleLayer() = 0;
180                virtual void draw(Road* R) = 0;
181                virtual void draw(TrackPoint* Pt) = 0;
182                virtual void draw(Relation* R) = 0;
183};
184
185class PaintStyle
186{
187        public:
188                void add(PaintStyleLayer* aLayer);
189                unsigned int size() const;
190                PaintStyleLayer* get(unsigned int i);
191        protected:
192                QVector<PaintStyleLayer*> Layers;
193};
194
195#endif
196
Note: See TracBrowser for help on using the repository browser.