PxCrypt v0.2.2
Encrypt data within an image
Loading...
Searching...
No Matches
canvas.h
1#ifndef CANVAS_H
2#define CANVAS_H
3
4// Qt Includes
5#include <QImage>
6#include <QIODevice>
7
8// Project Includes
9#include "pxcrypt/codec/encoder.h"
10#include "medium_io/operate/meta_access.h"
11#include "medium_io/operate/px_access.h"
12#include "medium_io/operate/data_translator.h"
13
14using namespace Qt::StringLiterals;
15
16namespace PxCryptPrivate
17{
18
19class Canvas final : public QIODevice
20{
21//-Aliases----------------------------------------------------------------------------------------------------------
22private:
23 using Encoding = PxCrypt::Encoder::Encoding;
24
25public:
26 using metavalue_t = quint8;
27
28//-Class Variables----------------------------------------------------------------------------------------------
29private:
30 static inline const QByteArray DEFAULT_SEED = "The best and most secure seed that is possible to exist!"_ba;
31
32//-Instance Variables----------------------------------------------------------------------------------------------
33private:
34 QSize mSize;
35 MetaAccess mMetaAccess;
36 PxAccess mPxAccess;
37 DataTranslator mTranslator;
38
39//-Constructor---------------------------------------------------------------------------------------------------
40public:
41 Canvas(QImage& image, const QByteArray& psk = {});
42
43//-Destructor---------------------------------------------------------------------------------------------------
44public:
45 ~Canvas();
46
47//-Instance Functions----------------------------------------------------------------------------------------------
48private:
49 void _reset(); // Don't overlap with QIODevice::reset()
50
51protected:
52 qint64 readData(char* data, qint64 maxlen) override;
53 qint64 skipData(qint64 maxSize) override;
54 qint64 writeData(const char* data, qint64 len) override;
55
56public:
57 // IO
58 bool isSequential() const override;
59 bool open(OpenMode mode) override;
60 void close() override;
61 bool atEnd() const override;
62
63 // Other
64 metavalue_t bpc() const;
65 Encoding encoding() const;
66
67 void setBpc(metavalue_t bpc);
68 void setEncoding(Encoding enc);
69 void setReference(const QImage* ref = nullptr);
70};
71
72}
73
74#endif // CANVAS_H
Encoding
Definition encoder.h:25
virtual bool atEnd() const const
virtual void close()
virtual bool isSequential() const const
virtual bool open(QIODeviceBase::OpenMode mode)
virtual qint64 readData(char *data, qint64 maxSize)=0
virtual qint64 skipData(qint64 maxSize)
virtual qint64 writeData(const char *data, qint64 maxSize)=0
typedef OpenMode