environment.h Example File
script/context2d/environment.h
 
 
 #ifndef ENVIRONMENT_H
 #define ENVIRONMENT_H
 #include <qobject.h>
 #include <qlist.h>
 #include <qhash.h>
 #include <QTimerEvent>
 #include <QMouseEvent>
 #include <QKeyEvent>
 #include <QScriptEngine>
 #include <QScriptable>
 class QContext2DCanvas;
 class Environment : public QObject
 {
     Q_OBJECT
     Q_PROPERTY(QScriptValue document READ document)
 public:
     Environment(QObject *parent = 0);
     ~Environment();
     QScriptValue document() const;
     void addCanvas(QContext2DCanvas *canvas);
     QContext2DCanvas *canvasByName(const QString &name) const;
     QList<QContext2DCanvas*> canvases() const;
     QScriptValue evaluate(const QString &code,
                           const QString &fileName = QString());
     QScriptValue toWrapper(QObject *object);
     void handleEvent(QContext2DCanvas *canvas, QMouseEvent *e);
     void handleEvent(QContext2DCanvas *canvas, QKeyEvent *e);
     void reset();
     QScriptEngine *engine() const;
     bool hasIntervalTimers() const;
     void triggerTimers();
 public slots:
     int setInterval(const QScriptValue &expression, int delay);
     void clearInterval(int timerId);
     int setTimeout(const QScriptValue &expression, int delay);
     void clearTimeout(int timerId);
 signals:
     void scriptError(const QScriptValue &error);
 protected:
     void timerEvent(QTimerEvent *event);
 private:
     QScriptValue eventHandler(QContext2DCanvas *canvas,
                               const QString &type, QScriptValue *who);
     QScriptValue newFakeDomEvent(const QString &type,
                                  const QScriptValue &target);
     void maybeEmitScriptError();
     QScriptEngine *m_engine;
     QScriptValue m_originalGlobalObject;
     QScriptValue m_document;
     QList<QContext2DCanvas*> m_canvases;
     QHash<int, QScriptValue> m_intervalHash;
     QHash<int, QScriptValue> m_timeoutHash;
 };
 class Document : public QObject
 {
     Q_OBJECT
 public:
     Document(Environment *env);
     ~Document();
 public slots:
     QScriptValue getElementById(const QString &id) const;
     QScriptValue getElementsByTagName(const QString &name) const;
     
     void addEventListener(const QString &type, const QScriptValue &listener,
                           bool useCapture);
 };
 class CanvasGradientPrototype : public QObject, public QScriptable
 {
     Q_OBJECT
 protected:
     CanvasGradientPrototype(QObject *parent = 0);
 public:
     static void setup(QScriptEngine *engine);
 public slots:
     void addColorStop(qreal offset, const QString &color);
 };
 #endif