#ifndef RAWRECTREADER_H
#define RAWRECTREADER_H

#include <QObject>
#include <QIODevice>
#include <QState>
#include <QRect>

class ByteReader;

class NativeRawRectReader : public QState
{
Q_OBJECT
public:
    explicit NativeRawRectReader(QIODevice *device, QState *parent);

    bool hasError() const;
    void configure( const QRect &fbSize, int bpp, uchar *framebuffer, const QRect &rect);

private slots:
    void readFramebufferLine();
    void onReadFramebufferLineDone();

signals:
    void startRead( );
    void performRead( );
    void readMore( );
    void readDone( );
    void readError( );

private:
    ByteReader *m_byteReader;
    QIODevice *m_device;
    uchar *m_framebuffer;
    QRect m_rect;
    QRect m_fbSize;
    int m_bpp;
    bool m_hasError;
    int m_idx;
    int m_line;
    int m_pixelDataLine;
    uchar *m_dst;

};

#endif // RAWRECTREADER_H

