Skip to content

Commit

Permalink
Merge pull request #68 from audetto/master
Browse files Browse the repository at this point in the history
Fix last character in ASCII selection.
Dax89 authored Nov 29, 2021
2 parents 05d1cf7 + 7b3af83 commit b3c0e4a
Showing 2 changed files with 18 additions and 14 deletions.
24 changes: 13 additions & 11 deletions document/qhexrenderer.cpp
Original file line number Diff line number Diff line change
@@ -215,7 +215,7 @@ void QHexRenderer::applyDocumentStyles(QPainter *painter, QTextDocument* textdoc
textdocument->setDefaultFont(painter->font());
}

void QHexRenderer::applyBasicStyle(QTextCursor &textcursor, const QByteArray &rawline, int factor) const
void QHexRenderer::applyBasicStyle(QTextCursor &textcursor, const QByteArray &rawline, Factor factor) const
{
QPalette palette = qApp->palette();
QColor color = palette.color(QPalette::WindowText);
@@ -242,7 +242,7 @@ void QHexRenderer::applyBasicStyle(QTextCursor &textcursor, const QByteArray &ra
}
}

void QHexRenderer::applyMetadata(QTextCursor &textcursor, quint64 line, int factor) const
void QHexRenderer::applyMetadata(QTextCursor &textcursor, quint64 line, Factor factor) const
{
QHexMetadata* metadata = m_document->metadata();

@@ -264,7 +264,7 @@ void QHexRenderer::applyMetadata(QTextCursor &textcursor, quint64 line, int fact
}
}

void QHexRenderer::applySelection(QTextCursor &textcursor, quint64 line, int factor) const
void QHexRenderer::applySelection(QTextCursor &textcursor, quint64 line, Factor factor) const
{
QHexCursor* cursor = m_document->cursor();
if(!cursor->isLineSelected(line)) return;
@@ -275,17 +275,19 @@ void QHexRenderer::applySelection(QTextCursor &textcursor, quint64 line, int fac
if(startsel.line == endsel.line)
{
textcursor.setPosition(startsel.column * factor);
textcursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, ((endsel.column - startsel.column + 1) * factor) - 1);
textcursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, ((endsel.column - startsel.column + 1) * factor));
}
else
{
if(line == startsel.line) textcursor.setPosition(startsel.column * factor);
else textcursor.setPosition(0);

if(line == endsel.line) textcursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, ((endsel.column + 1) * factor) - 1);
if(line == endsel.line) textcursor.movePosition(QTextCursor::Right, QTextCursor::KeepAnchor, ((endsel.column + 1) * factor));
else textcursor.movePosition(QTextCursor::EndOfLine, QTextCursor::KeepAnchor);
}

if(factor == Hex) textcursor.movePosition(QTextCursor::Left, QTextCursor::KeepAnchor, 1);

QPalette palette = qApp->palette();

QTextCharFormat charformat;
@@ -379,9 +381,9 @@ void QHexRenderer::drawHex(QPainter *painter, const QPalette &palette, const QRe
hexrect.setX(this->getHexColumnX() + this->borderSize());

this->applyDocumentStyles(painter, &textdocument);
this->applyBasicStyle(textcursor, rawline, 3);
this->applyMetadata(textcursor, line, 3);
this->applySelection(textcursor, line, 3);
this->applyBasicStyle(textcursor, rawline, Hex);
this->applyMetadata(textcursor, line, Hex);
this->applySelection(textcursor, line, Hex);
this->applyCursorHex(textcursor, line);

painter->save();
@@ -405,9 +407,9 @@ void QHexRenderer::drawAscii(QPainter *painter, const QPalette &palette, const Q
asciirect.setX(this->getAsciiColumnX() + this->borderSize());

this->applyDocumentStyles(painter, &textdocument);
this->applyBasicStyle(textcursor, rawline);
this->applyMetadata(textcursor, line);
this->applySelection(textcursor, line);
this->applyBasicStyle(textcursor, rawline, Ascii);
this->applyMetadata(textcursor, line, Ascii);
this->applySelection(textcursor, line, Ascii);
this->applyCursorAscii(textcursor, line);

painter->save();
8 changes: 5 additions & 3 deletions document/qhexrenderer.h
Original file line number Diff line number Diff line change
@@ -56,10 +56,12 @@ class QHexRenderer : public QObject
void unprintableChars(QByteArray &ascii) const;

private:
enum Factor {Ascii = 1, Hex = 3};

void applyDocumentStyles(QPainter* painter, QTextDocument *textdocument) const;
void applyBasicStyle(QTextCursor& textcursor, const QByteArray& rawline, int factor = 1) const;
void applyMetadata(QTextCursor& textcursor, quint64 line, int factor = 1) const;
void applySelection(QTextCursor& textcursor, quint64 line, int factor = 1) const;
void applyBasicStyle(QTextCursor& textcursor, const QByteArray& rawline, Factor factor) const;
void applyMetadata(QTextCursor& textcursor, quint64 line, Factor factor) const;
void applySelection(QTextCursor& textcursor, quint64 line, Factor factor) const;
void applyCursorAscii(QTextCursor& textcursor, quint64 line) const;
void applyCursorHex(QTextCursor& textcursor, quint64 line) const;
void drawAddress(QPainter *painter, const QPalette &palette, const QRect &linerect, quint64 line);

0 comments on commit b3c0e4a

Please sign in to comment.