#ifndef STFREADER_H #define STFREADER_H #include #include "bitreader.h" class StfReader { public: class StrokeHandler { public: virtual ~StrokeHandler(); virtual bool startStroke(const QPoint& p, int force, qint64 time) = 0; virtual bool strokePoint(const QPoint& p, int force, qint64 time) = 0; virtual bool endStroke() = 0; }; protected: struct CodeTable { int bits; int size; qint8 * data; }; StrokeHandler *handler; int speed; bool parseV1(BitReader& br); void syncV1(BitReader& br); qint8 decodeV1(BitReader& br, CodeTable* tab, int tab_size); qint8 readForce(BitReader& br); qint8 readHeader(BitReader& br); qint8 readHeader2(BitReader& br); qint8 readHeader3(BitReader& br); qint8 readTime(BitReader& br); qint8 readDeltaX(BitReader& br); qint8 readDeltaY(BitReader& br); qint8 readDeltaF(BitReader& br); public: StfReader(); ~StfReader(); bool parse(QIODevice *device); bool parse(const QString &filename); void setStrokeHandler(StrokeHandler *newHandler); }; #endif // STFREADER_H