#ifndef GRAPHICSELEMENT_H
#define GRAPHICSELEMENT_H
+#include <QtCore/QObject>
#include <QtCore/QMap>
-#include "location.h"
class QString;
class QByteArray;
+class QFont;
+class QGraphicsItem;
class GraphicsScene;
+class QGraphicsEffect;
class Reader;
-class QFont;
+class Effect;
-class GraphicsElement
+class GraphicsElement : public QObject
{
+ Q_OBJECT
+
public:
struct AttributeDetails
virtual bool setAttribute(QString const& name, QString const& value) = 0;
virtual void addToScene(GraphicsScene* scene) = 0;
virtual void update() = 0;
+ virtual QGraphicsItem* getElement() const = 0;
QString const& getError() const;
+ bool setEffect(QString const& effect);
+ bool setEffectAttribute(QString const& name, QString const& value);
+ void applyEffect();
+ bool canBeVisible() const;
protected:
+ enum VisibleWhen {ALWAYS, POI_VISIBLE, SPEED_EXCEEDED};
+
int getAttribute(QString const& name, QString const& value, const AttributeDetails details[], int count, int& intValue);
void setError(QString const& error);
bool readFile(QString const& name, QByteArray& data);
bool getFont(QString const& name, QFont& font);
+ void setVisibleWhen(VisibleWhen when);
+ VisibleWhen strToVisibleWhen(QString const& str) const;
+
+private slots:
+ void updateVisibility(bool visible);
private:
Reader* reader_;
QString error_;
+ Effect* effect_;
QMap<QString, QString> loadedFonts_;
+ VisibleWhen visibleWhen_;
+ bool canBeVisible_;
};
#endif