Added activity color options to hex editor menu.

This commit is contained in:
Matthew Budd 2020-08-22 19:54:11 -04:00
parent 6aacaa5595
commit 6a425f61d1
2 changed files with 87 additions and 5 deletions

View File

@ -288,10 +288,10 @@ HexEditorDialog_t::HexEditorDialog_t(QWidget *parent)
//QVBoxLayout *mainLayout;
QGridLayout *grid;
QMenuBar *menuBar;
QMenu *fileMenu;
QMenu *viewMenu;
QMenu *fileMenu, *viewMenu, *hlgtMenu;
QAction *saveROM;
QAction *viewRAM, *viewPPU, *viewOAM, *viewROM;
QAction *actHlgt, *actHlgtRV;
QActionGroup *group;
setWindowTitle("Hex Editor");
@ -362,6 +362,30 @@ HexEditorDialog_t::HexEditorDialog_t(QWidget *parent)
viewMenu->addAction(viewROM);
viewRAM->setChecked(true); // Set default view
// Highlighting
hlgtMenu = menuBar->addMenu(tr("Highlight"));
// Highlighting -> Highlight Activity
actHlgt = new QAction(tr("Highlight Activity"), this);
//actHlgt->setShortcuts(QKeySequence::Open);
actHlgt->setStatusTip(tr("Highlight Activity"));
actHlgt->setCheckable(true);
actHlgt->setChecked(true);
connect(actHlgt, SIGNAL(triggered(bool)), this, SLOT(actvHighlightCB(bool)) );
hlgtMenu->addAction(actHlgt);
// Highlighting -> Highlight Reverse Video
actHlgtRV = new QAction(tr("Highlight Reverse Video"), this);
//actHlgtRV->setShortcuts(QKeySequence::Open);
actHlgtRV->setStatusTip(tr("Highlight Reverse Video"));
actHlgtRV->setCheckable(true);
actHlgtRV->setChecked(false);
connect(actHlgtRV, SIGNAL(triggered(bool)), this, SLOT(actvHighlightRVCB(bool)) );
hlgtMenu->addAction(actHlgtRV);
//-----------------------------------------------------------------------
// Menu End
//-----------------------------------------------------------------------
@ -458,6 +482,18 @@ void HexEditorDialog_t::setViewROM(void)
setMode( MODE_NES_ROM );
}
//----------------------------------------------------------------------------
void HexEditorDialog_t::actvHighlightCB(bool enable)
{
//printf("Highlight: %i \n", enable );
editor->setHighlightActivity( enable );
}
//----------------------------------------------------------------------------
void HexEditorDialog_t::actvHighlightRVCB(bool enable)
{
//printf("Highlight: %i \n", enable );
editor->setHighlightReverseVideo( enable );
}
//----------------------------------------------------------------------------
void HexEditorDialog_t::showMemViewResults (bool reset)
{
int memSize;
@ -587,6 +623,8 @@ QHexEdit::QHexEdit(memBlock_t *blkPtr, QWidget *parent)
editAddr = -1;
editValue = 0;
editMask = 0;
reverseVideo = false;
actvHighlightEnable = true;
highLightColor[ 0].setRgb( 0x00, 0x00, 0x00 );
highLightColor[ 1].setRgb( 0x35, 0x40, 0x00 );
@ -605,6 +643,26 @@ QHexEdit::QHexEdit(memBlock_t *blkPtr, QWidget *parent)
highLightColor[14].setRgb( 0xCF, 0x72, 0x00 );
highLightColor[15].setRgb( 0xC7, 0x8B, 0x3C );
for (int i=0; i<HIGHLIGHT_ACTIVITY_NUM_COLORS; i++)
{
float red, green, blue, avg, grayScale;
red = highLightColor[i].redF();
green = highLightColor[i].greenF();
blue = highLightColor[i].blueF();
avg = (red + green + blue) / 3.0;
if ( avg >= 0.5 )
{
grayScale = 0.0;
}
else
{
grayScale = 1.0;
}
rvActvTextColor[i].setRgbF( grayScale, grayScale, grayScale );
}
}
//----------------------------------------------------------------------------
QHexEdit::~QHexEdit(void)
@ -636,6 +694,16 @@ void QHexEdit::calcFontData(void)
viewLines = (viewHeight - pxLineSpacing) / pxLineSpacing;
}
//----------------------------------------------------------------------------
void QHexEdit::setHighlightActivity( int enable )
{
actvHighlightEnable = enable;
}
//----------------------------------------------------------------------------
void QHexEdit::setHighlightReverseVideo( int enable )
{
reverseVideo = enable;
}
//----------------------------------------------------------------------------
void QHexEdit::setMode( int mode )
{
viewMode = mode;
@ -1042,9 +1110,17 @@ void QHexEdit::paintEvent(QPaintEvent *event)
}
else
{
if ( mb->buf[addr].actv > 0 )
if ( actvHighlightEnable && (mb->buf[addr].actv > 0) )
{
painter.setPen( highLightColor[ mb->buf[addr].actv ] );
if ( reverseVideo )
{
painter.setPen( rvActvTextColor[ mb->buf[addr].actv ] );
painter.fillRect( x - (0.5*pxCharWidth) , y-pxLineSpacing+pxLineLead, 3*pxCharWidth, pxLineSpacing, highLightColor[ mb->buf[addr].actv ] );
}
else
{
painter.setPen( highLightColor[ mb->buf[addr].actv ] );
}
}
else
{

View File

@ -53,6 +53,8 @@ class QHexEdit : public QWidget
void setLine( int newLineOffset );
void setAddr( int newAddrOffset );
void setScrollBars( QScrollBar *h, QScrollBar *v );
void setHighlightActivity( int enable );
void setHighlightReverseVideo( int enable );
static const int HIGHLIGHT_ACTIVITY_NUM_COLORS = 16;
protected:
@ -73,6 +75,7 @@ class QHexEdit : public QWidget
QScrollBar *vbar;
QScrollBar *hbar;
QColor highLightColor[ HIGHLIGHT_ACTIVITY_NUM_COLORS ];
QColor rvActvTextColor[ HIGHLIGHT_ACTIVITY_NUM_COLORS ];
int viewMode;
int lineOffset;
@ -97,6 +100,8 @@ class QHexEdit : public QWidget
int editMask;
bool cursorBlink;
bool reverseVideo;
bool actvHighlightEnable;
};
class HexEditorDialog_t : public QDialog
@ -150,5 +155,6 @@ class HexEditorDialog_t : public QDialog
void setViewPPU(void);
void setViewOAM(void);
void setViewROM(void);
void actvHighlightCB(bool value);
void actvHighlightRVCB(bool value);
};