Elaztek Developer Hub
Blamite Game Engine - Keystone  00390.07.02.23.1947.blamite
A library that enables the use of Qt in Blamite's editing tools.
qhexcursor.h
Go to the documentation of this file.
1 #ifndef QHEXCURSOR_H
2 #define QHEXCURSOR_H
3 
4 #include <QObject>
5 
6 #define DEFAULT_HEX_LINE_LENGTH 0x10
7 #define DEFAULT_AREA_IDENTATION 0x01
8 
9 struct QHexPosition {
10  quint64 line;
11  int column;
12  quint8 lineWidth;
14 
15  QHexPosition() = default;
16  inline qint64 offset() const { return static_cast<qint64>(line * lineWidth) + column; }
17  inline int operator-(const QHexPosition& rhs) const { return this->offset() - rhs.offset(); }
18  inline bool operator==(const QHexPosition& rhs) const { return (line == rhs.line) && (column == rhs.column) && (nibbleindex == rhs.nibbleindex); }
19  inline bool operator!=(const QHexPosition& rhs) const { return (line != rhs.line) || (column != rhs.column) || (nibbleindex != rhs.nibbleindex); }
20 };
21 
22 class QHexCursor : public QObject
23 {
24  Q_OBJECT
25 
26  public:
28 
29  public:
30  explicit QHexCursor(QObject *parent = nullptr);
31 
32  public:
33  const QHexPosition& selectionStart() const;
34  const QHexPosition& selectionEnd() const;
35  const QHexPosition& position() const;
37  int selectionLength() const;
38  quint64 currentLine() const;
39  int currentColumn() const;
40  int currentNibble() const;
41  quint64 selectionLine() const;
42  int selectionColumn() const;
43  int selectionNibble() const;
44  bool atEnd() const;
45  bool isLineSelected(quint64 line) const;
46  bool hasSelection() const;
47  void clearSelection();
48 
49  public:
50  void moveTo(const QHexPosition& pos);
51  void moveTo(quint64 line, int column, int nibbleindex = 1);
52  void moveTo(qint64 offset);
53  void select(const QHexPosition& pos);
54  void select(quint64 line, int column, int nibbleindex = 1);
55  void select(int length);
56  void selectOffset(qint64 offset, int length);
58  void setLineWidth(quint8 width);
59  void switchInsertionMode();
60 
61  signals:
62  void positionChanged();
63  void insertionModeChanged();
64 
65  private:
66  InsertionMode m_insertionmode;
67  quint8 m_lineWidth;
68  QHexPosition m_position, m_selection;
69 };
70 
71 #endif // QHEXCURSOR_H
QHexCursor::isLineSelected
bool isLineSelected(quint64 line) const
Definition: qhexcursor.cpp:54
DEFAULT_HEX_LINE_LENGTH
#define DEFAULT_HEX_LINE_LENGTH
Definition: qhexcursor.h:6
QHexCursor::currentColumn
int currentColumn() const
Definition: qhexcursor.cpp:48
QHexCursor::moveTo
void moveTo(const QHexPosition &pos)
Definition: qhexcursor.cpp:76
QHexPosition
Definition: qhexcursor.h:9
QHexPosition::lineWidth
quint8 lineWidth
Definition: qhexcursor.h:12
QHexCursor::position
const QHexPosition & position() const
Definition: qhexcursor.cpp:44
QHexCursor::insertionMode
InsertionMode insertionMode() const
Definition: qhexcursor.cpp:45
QHexPosition::operator==
bool operator==(const QHexPosition &rhs) const
Definition: qhexcursor.h:18
QHexPosition::offset
qint64 offset() const
Definition: qhexcursor.h:16
QHexPosition::column
int column
Definition: qhexcursor.h:11
QHexPosition::nibbleindex
int nibbleindex
Definition: qhexcursor.h:13
QHexCursor::clearSelection
void clearSelection()
Definition: qhexcursor.cpp:70
QHexCursor::InsertionMode
InsertionMode
Definition: qhexcursor.h:27
QHexCursor::selectionEnd
const QHexPosition & selectionEnd() const
Definition: qhexcursor.cpp:30
QHexCursor::QHexCursor
QHexCursor(QObject *parent=nullptr)
Definition: qhexcursor.cpp:4
QHexCursor::atEnd
bool atEnd() const
QHexCursor::setInsertionMode
void setInsertionMode(InsertionMode mode)
Definition: qhexcursor.cpp:111
QHexPosition::operator-
int operator-(const QHexPosition &rhs) const
Definition: qhexcursor.h:17
QHexPosition::QHexPosition
QHexPosition()=default
QHexCursor::positionChanged
void positionChanged()
QHexCursor::selectionStart
const QHexPosition & selectionStart() const
Definition: qhexcursor.cpp:16
QHexCursor
Definition: qhexcursor.h:22
QHexCursor::selectionLength
int selectionLength() const
Definition: qhexcursor.cpp:46
QHexCursor::selectionColumn
int selectionColumn() const
Definition: qhexcursor.cpp:51
QHexPosition::operator!=
bool operator!=(const QHexPosition &rhs) const
Definition: qhexcursor.h:19
QHexCursor::currentNibble
int currentNibble() const
Definition: qhexcursor.cpp:49
QHexCursor::setLineWidth
void setLineWidth(quint8 width)
Definition: qhexcursor.cpp:120
QHexCursor::switchInsertionMode
void switchInsertionMode()
Definition: qhexcursor.cpp:127
QHexCursor::selectOffset
void selectOffset(qint64 offset, int length)
Definition: qhexcursor.cpp:105
QHexPosition::line
quint64 line
Definition: qhexcursor.h:10
QHexCursor::insertionModeChanged
void insertionModeChanged()
QHexCursor::selectionLine
quint64 selectionLine() const
Definition: qhexcursor.cpp:50
qhexcursor.h
QHexCursor::currentLine
quint64 currentLine() const
Definition: qhexcursor.cpp:47
QHexCursor::select
void select(const QHexPosition &pos)
Definition: qhexcursor.cpp:77
QHexCursor::InsertMode
@ InsertMode
Definition: qhexcursor.h:27
QHexCursor::hasSelection
bool hasSelection() const
Definition: qhexcursor.cpp:68
QHexCursor::selectionNibble
int selectionNibble() const
Definition: qhexcursor.cpp:52
QHexCursor::OverwriteMode
@ OverwriteMode
Definition: qhexcursor.h:27