...
[jspeed] / src / graphicselement.h
index 8880c07..3bc9756 100644 (file)
 #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 Effect;
 
-class GraphicsElement
+class GraphicsElement : public QObject
 {
+    Q_OBJECT
+
 public:
 
     struct AttributeDetails
@@ -43,18 +48,33 @@ public:
     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