PxCrypt v0.2.2
Encrypt data within an image
Loading...
Searching...
No Matches
px_access.h
1#ifndef PX_ACCESS_H
2#define PX_ACCESS_H
3
4// Project Includes
5#include "medium_io/traverse/canvas_traverser.h"
6
7namespace PxCryptPrivate
8{
9
10class MetaAccess;
11
12class PxAccess
13{
14//-Instance Variables------------------------------------------------------------------------------------------------------
15private:
16 QRgb* mPixels;
17 const QRgb* mRefPixels;
18 CanvasTraverser mTraverser;
19
20 std::array<quint8, 4> mBuffer;
21 bool mNeedFlush;
22
23//-Constructor---------------------------------------------------------------------------------------------------------
24public:
25 PxAccess(QImage& canvas, MetaAccess& metaAccess);
26
27//-Instance Functions----------------------------------------------------------------------------------------------
28private:
29 // Original canvas pixel access
30 QRgb& canvasPixel();
31 const QRgb& constCanvasPixel() const;
32 quint8 canvasRed() const;
33 quint8 canvasGreen() const;
34 quint8 canvasBlue() const;
35 quint8 canvasAlpha() const;
36
37 // Reference canvas pixel access
38 const QRgb& referencePixel() const;
39 quint8 referenceRed() const;
40 quint8 referenceGreen() const;
41 quint8 referenceBlue() const;
42
43 // Buffer
44 void fillBuffer();
45 void flushBuffer();
46
47public:
48 // Stat
49 bool hasReferenceImage() const;
50 int availableBits() const;
51 int bitIndex() const;
52 bool atEnd() const;
53
54 // Manipulation
55 void setReferenceImage(const QImage* ref);
56 void reset();
57 qint64 skip(qint64 bytes);
58 void advanceBits(int bitCount);
59 void flush();
60
61 // Pixel Access
62 quint8& bufferedValue();
63 quint8 constBufferedValue() const;
64 quint8 originalValue() const;
65 quint8 referenceValue() const;
66};
67
68}
69
70#endif // PX_ACCESS_H
QTextStream & flush(QTextStream &stream)
QTextStream & reset(QTextStream &stream)