Skip to content

Commit ed28c4d

Browse files
committed
feat: add setting for numerical base of addresses
1 parent 1a6d569 commit ed28c4d

File tree

4 files changed

+23
-10
lines changed

4 files changed

+23
-10
lines changed

src/hobbits-plugins/displays/Hex/hex.cpp

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ Hex::Hex() :
1212
QList<ParameterDelegate::ParameterInfo> infos = {
1313
{"font_size", ParameterDelegate::ParameterType::Integer},
1414
{"column_grouping", ParameterDelegate::ParameterType::Integer},
15+
{"address_display_base", ParameterDelegate::ParameterType::Integer},
1516
{"show_headers", ParameterDelegate::ParameterType::Boolean}
1617
};
1718

@@ -130,14 +131,16 @@ QSharedPointer<DisplayResult> Hex::renderOverlay(QSize viewportSize, const Param
130131

131132
QSize fontSize = DisplayHelper::textSize(DisplayHelper::monoFont(m_lastParams.value("font_size").toInt()), "0");
132133
int columnGrouping = m_lastParams.value("column_grouping").toInt();
134+
int addressDisplayBase = m_lastParams.value("address_display_base").toInt();
133135

134136
auto overlay = DisplayHelper::drawHeadersFull(
135137
viewportSize,
136138
headerOffset(parameters),
137139
m_handle,
138140
QSizeF(double(fontSize.width()) / 4.0, DisplayHelper::textRowHeight(fontSize.height())),
139141
columnGrouping,
140-
columnGrouping > 1 ? 1 : 0);
142+
columnGrouping > 1 ? 1 : 0,
143+
addressDisplayBase);
141144

142145
return DisplayResult::result(overlay, parameters);
143146
}

src/hobbits-plugins/displays/Hex/hexform.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,12 +8,14 @@ HexForm::HexForm(QSharedPointer<ParameterDelegate> delegate):
88
ui->setupUi(this);
99

1010
connect(ui->sb_columnGrouping, SIGNAL(valueChanged(int)), this, SIGNAL(changed()));
11+
connect(ui->sb_addressDisplayBase, SIGNAL(valueChanged(int)), this, SIGNAL(changed()));
1112
connect(ui->hs_fontSize, SIGNAL(valueChanged(int)), this, SIGNAL(changed()));
1213
connect(ui->cb_showHeaders, SIGNAL(stateChanged(int)), this, SIGNAL(changed()));
1314

1415
m_paramHelper->addSliderIntParameter("font_size", ui->hs_fontSize);
1516
m_paramHelper->addCheckBoxBoolParameter("show_headers", ui->cb_showHeaders);
1617
m_paramHelper->addSpinBoxIntParameter("column_grouping", ui->sb_columnGrouping);
18+
m_paramHelper->addSpinBoxIntParameter("address_display_base", ui->sb_addressDisplayBase);
1719
}
1820

1921
HexForm::~HexForm()

src/hobbits-widgets/displayhelper.cpp

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,8 @@ QImage DisplayHelper::drawHeadersFull(QSize viewportSize,
300300
QSharedPointer<DisplayHandle> handle,
301301
QSizeF bitSize,
302302
int columnGrouping,
303-
int groupMargin)
303+
int groupMargin,
304+
int addressDisplayBase)
304305
{
305306
if (offset.x() == 0 && offset.y() == 0) {
306307
return QImage();
@@ -315,15 +316,20 @@ QImage DisplayHelper::drawHeadersFull(QSize viewportSize,
315316
DisplayHelper::drawFramesHeader(&painter,
316317
QSize(offset.x(), viewportSize.height() - offset.y()),
317318
handle,
318-
bitSize.height());
319+
bitSize.height(),
320+
Qt::Vertical,
321+
1,
322+
0,
323+
addressDisplayBase);
319324

320325
DisplayHelper::drawFramesHeader(&painter,
321326
QSize(viewportSize.width() - offset.x(), offset.y()),
322327
handle,
323328
bitSize.width(),
324329
Qt::Horizontal,
325330
columnGrouping,
326-
groupMargin);
331+
groupMargin,
332+
addressDisplayBase);
327333

328334
return headers;
329335
}
@@ -334,7 +340,8 @@ void DisplayHelper::drawFramesHeader(QPainter *painter,
334340
double frameHeight,
335341
int orientation,
336342
int grouping,
337-
int groupMargin)
343+
int groupMargin,
344+
int addressDisplayBase)
338345
{
339346
painter->save();
340347

@@ -395,7 +402,7 @@ void DisplayHelper::drawFramesHeader(QPainter *painter,
395402
textSize,
396403
fontSize.height(),
397404
textAlign,
398-
QString("%1").arg(i + offset));
405+
QString("%1").arg(i + offset, 0, addressDisplayBase));
399406
}
400407

401408
if (highlightOffset >= 0) {
@@ -429,7 +436,7 @@ void DisplayHelper::drawFramesHeader(QPainter *painter,
429436
painter->drawText(
430437
textRect,
431438
textAlign,
432-
QString("%1").arg(highlightOffset));
439+
QString("%1").arg(highlightOffset, 0, addressDisplayBase));
433440
}
434441

435442
painter->restore();
@@ -662,4 +669,3 @@ void DisplayHelper::sendHoverUpdate(QSharedPointer<DisplayHandle> handle, QPoint
662669

663670
handle->setBitHover(true, diff.x(), diff.y());
664671
}
665-

src/hobbits-widgets/displayhelper.h

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -58,15 +58,17 @@ namespace DisplayHelper
5858
QSharedPointer<DisplayHandle> displayHandle,
5959
QSizeF bitSize,
6060
int columnGrouping = 1,
61-
int groupMargin = 0);
61+
int groupMargin = 0,
62+
int addressDisplayBase = 10);
6263

6364
void HOBBITSWIDGETSSHARED_EXPORT drawFramesHeader(QPainter *painter,
6465
QSize viewportSize,
6566
QSharedPointer<DisplayHandle> displayHandle,
6667
double frameHeight,
6768
int orientation = Qt::Vertical,
6869
int grouping = 1,
69-
int groupMargin = 0);
70+
int groupMargin = 0,
71+
int addressDisplayBase = 10);
7072

7173

7274
void HOBBITSWIDGETSSHARED_EXPORT drawHoverBox(QPainter *painter,

0 commit comments

Comments
 (0)