From ed28c4d6eaf610e31b5d3324da97e4247ec771a6 Mon Sep 17 00:00:00 2001 From: Liam Bowen Date: Sun, 21 May 2023 21:21:36 -0400 Subject: [PATCH] feat: add setting for numerical base of addresses --- src/hobbits-plugins/displays/Hex/hex.cpp | 5 ++++- src/hobbits-plugins/displays/Hex/hexform.cpp | 2 ++ src/hobbits-widgets/displayhelper.cpp | 20 +++++++++++++------- src/hobbits-widgets/displayhelper.h | 6 ++++-- 4 files changed, 23 insertions(+), 10 deletions(-) diff --git a/src/hobbits-plugins/displays/Hex/hex.cpp b/src/hobbits-plugins/displays/Hex/hex.cpp index 2e9e97ed..af5d6fcf 100644 --- a/src/hobbits-plugins/displays/Hex/hex.cpp +++ b/src/hobbits-plugins/displays/Hex/hex.cpp @@ -12,6 +12,7 @@ Hex::Hex() : QList infos = { {"font_size", ParameterDelegate::ParameterType::Integer}, {"column_grouping", ParameterDelegate::ParameterType::Integer}, + {"address_display_base", ParameterDelegate::ParameterType::Integer}, {"show_headers", ParameterDelegate::ParameterType::Boolean} }; @@ -130,6 +131,7 @@ QSharedPointer Hex::renderOverlay(QSize viewportSize, const Param QSize fontSize = DisplayHelper::textSize(DisplayHelper::monoFont(m_lastParams.value("font_size").toInt()), "0"); int columnGrouping = m_lastParams.value("column_grouping").toInt(); + int addressDisplayBase = m_lastParams.value("address_display_base").toInt(); auto overlay = DisplayHelper::drawHeadersFull( viewportSize, @@ -137,7 +139,8 @@ QSharedPointer Hex::renderOverlay(QSize viewportSize, const Param m_handle, QSizeF(double(fontSize.width()) / 4.0, DisplayHelper::textRowHeight(fontSize.height())), columnGrouping, - columnGrouping > 1 ? 1 : 0); + columnGrouping > 1 ? 1 : 0, + addressDisplayBase); return DisplayResult::result(overlay, parameters); } diff --git a/src/hobbits-plugins/displays/Hex/hexform.cpp b/src/hobbits-plugins/displays/Hex/hexform.cpp index 46ca8699..b8532f20 100644 --- a/src/hobbits-plugins/displays/Hex/hexform.cpp +++ b/src/hobbits-plugins/displays/Hex/hexform.cpp @@ -8,12 +8,14 @@ HexForm::HexForm(QSharedPointer delegate): ui->setupUi(this); connect(ui->sb_columnGrouping, SIGNAL(valueChanged(int)), this, SIGNAL(changed())); + connect(ui->sb_addressDisplayBase, SIGNAL(valueChanged(int)), this, SIGNAL(changed())); connect(ui->hs_fontSize, SIGNAL(valueChanged(int)), this, SIGNAL(changed())); connect(ui->cb_showHeaders, SIGNAL(stateChanged(int)), this, SIGNAL(changed())); m_paramHelper->addSliderIntParameter("font_size", ui->hs_fontSize); m_paramHelper->addCheckBoxBoolParameter("show_headers", ui->cb_showHeaders); m_paramHelper->addSpinBoxIntParameter("column_grouping", ui->sb_columnGrouping); + m_paramHelper->addSpinBoxIntParameter("address_display_base", ui->sb_addressDisplayBase); } HexForm::~HexForm() diff --git a/src/hobbits-widgets/displayhelper.cpp b/src/hobbits-widgets/displayhelper.cpp index 10c7d2ae..60997ac4 100644 --- a/src/hobbits-widgets/displayhelper.cpp +++ b/src/hobbits-widgets/displayhelper.cpp @@ -300,7 +300,8 @@ QImage DisplayHelper::drawHeadersFull(QSize viewportSize, QSharedPointer handle, QSizeF bitSize, int columnGrouping, - int groupMargin) + int groupMargin, + int addressDisplayBase) { if (offset.x() == 0 && offset.y() == 0) { return QImage(); @@ -315,7 +316,11 @@ QImage DisplayHelper::drawHeadersFull(QSize viewportSize, DisplayHelper::drawFramesHeader(&painter, QSize(offset.x(), viewportSize.height() - offset.y()), handle, - bitSize.height()); + bitSize.height(), + Qt::Vertical, + 1, + 0, + addressDisplayBase); DisplayHelper::drawFramesHeader(&painter, QSize(viewportSize.width() - offset.x(), offset.y()), @@ -323,7 +328,8 @@ QImage DisplayHelper::drawHeadersFull(QSize viewportSize, bitSize.width(), Qt::Horizontal, columnGrouping, - groupMargin); + groupMargin, + addressDisplayBase); return headers; } @@ -334,7 +340,8 @@ void DisplayHelper::drawFramesHeader(QPainter *painter, double frameHeight, int orientation, int grouping, - int groupMargin) + int groupMargin, + int addressDisplayBase) { painter->save(); @@ -395,7 +402,7 @@ void DisplayHelper::drawFramesHeader(QPainter *painter, textSize, fontSize.height(), textAlign, - QString("%1").arg(i + offset)); + QString("%1").arg(i + offset, 0, addressDisplayBase)); } if (highlightOffset >= 0) { @@ -429,7 +436,7 @@ void DisplayHelper::drawFramesHeader(QPainter *painter, painter->drawText( textRect, textAlign, - QString("%1").arg(highlightOffset)); + QString("%1").arg(highlightOffset, 0, addressDisplayBase)); } painter->restore(); @@ -662,4 +669,3 @@ void DisplayHelper::sendHoverUpdate(QSharedPointer handle, QPoint handle->setBitHover(true, diff.x(), diff.y()); } - diff --git a/src/hobbits-widgets/displayhelper.h b/src/hobbits-widgets/displayhelper.h index 536e5e41..baa7b230 100644 --- a/src/hobbits-widgets/displayhelper.h +++ b/src/hobbits-widgets/displayhelper.h @@ -58,7 +58,8 @@ namespace DisplayHelper QSharedPointer displayHandle, QSizeF bitSize, int columnGrouping = 1, - int groupMargin = 0); + int groupMargin = 0, + int addressDisplayBase = 10); void HOBBITSWIDGETSSHARED_EXPORT drawFramesHeader(QPainter *painter, QSize viewportSize, @@ -66,7 +67,8 @@ namespace DisplayHelper double frameHeight, int orientation = Qt::Vertical, int grouping = 1, - int groupMargin = 0); + int groupMargin = 0, + int addressDisplayBase = 10); void HOBBITSWIDGETSSHARED_EXPORT drawHoverBox(QPainter *painter,