Slight tweaks to ppu palette views to make more eye appealing.

This commit is contained in:
mjbudd77 2021-05-07 21:12:42 -04:00
parent a4fa6225a0
commit f4d590dd83
3 changed files with 131 additions and 118 deletions

View File

@ -1980,6 +1980,10 @@ void ppuNameTablePaletteView_t::paintEvent(QPaintEvent *event)
}
painter.drawText( xx+i, yy+h-j, tr(c) );
painter.setPen( black );
painter.drawRect( xx, yy, w-1, h-1 );
painter.setPen( white );
painter.drawRect( xx+1, yy+1, w-3, h-3 );
xx += w;
}
}

View File

@ -148,7 +148,7 @@ ppuViewerDialog_t::ppuViewerDialog_t(QWidget *parent)
QMenuBar *menuBar;
QVBoxLayout *mainLayout, *vbox;
QVBoxLayout *patternVbox[2];
QHBoxLayout *hbox;
QHBoxLayout *hbox, *hbox1, *hbox2;
QGridLayout *grid;
QActionGroup *group;
QMenu *fileMenu, *viewMenu, *colorMenu, *optMenu, *subMenu;
@ -231,10 +231,30 @@ ppuViewerDialog_t::ppuViewerDialog_t(QWidget *parent)
grid->addLayout( hbox, 1, 1, Qt::AlignRight );
vbox = new QVBoxLayout();
//paletteFrame = new QGroupBox( tr("Palettes: ---- Top Row: Background ---- Bottom Row: Sprites") );
paletteFrame = new QGroupBox( tr("Palettes:") );
paletteView = new ppuPalatteView_t(this);
//paletteView = new ppuPalatteView_t(this);
vbox->addWidget( paletteView, 1 );
hbox1 = new QHBoxLayout();
hbox2 = new QHBoxLayout();
for (int i=0; i<8; i++)
{
tilePalView[i] = new tilePaletteView_t(this);
if ( i < 4 )
{
hbox1->addWidget( tilePalView[i] );
}
else
{
hbox2->addWidget( tilePalView[i] );
}
tilePalView[i]->setIndex(i);
}
vbox->addLayout( hbox1, 1 );
vbox->addLayout( hbox2, 1 );
paletteFrame->setLayout( vbox );
mainLayout->addWidget( paletteFrame, 1 );
@ -243,7 +263,6 @@ ppuViewerDialog_t::ppuViewerDialog_t(QWidget *parent)
patternView[1]->setPattern( &pattern1 );
patternView[0]->setTileLabel( tileLabel[0] );
patternView[1]->setTileLabel( tileLabel[1] );
paletteView->setTileLabel( paletteFrame );
scanLineEdit->setRange( 0, 255 );
scanLineEdit->setValue( PPUViewScanline );
@ -1599,147 +1618,132 @@ void FCEUD_UpdatePPUView(int scanline, int refreshchr)
redrawWindow = true;
}
//----------------------------------------------------
ppuPalatteView_t::ppuPalatteView_t(QWidget *parent)
//-- Tile Palette View
//----------------------------------------------------
tilePaletteView_t::tilePaletteView_t(QWidget *parent)
: QWidget(parent)
{
this->setFocusPolicy(Qt::StrongFocus);
this->setMouseTracking(true);
setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Expanding);
viewHeight = 32;
viewWidth = viewHeight*4;
setMinimumWidth( viewWidth );
setMinimumHeight( viewHeight );
setMinimumWidth( 32 * PALETTEWIDTH );
setMinimumHeight( 32 * PALETTEHEIGHT );
viewWidth = 32 * PALETTEWIDTH;
viewHeight = 32 * PALETTEHEIGHT;
boxWidth = viewWidth / PALETTEWIDTH;
boxHeight = viewHeight / PALETTEHEIGHT;
frame = NULL;
palIdx = 0;
}
//----------------------------------------------------
ppuPalatteView_t::~ppuPalatteView_t(void)
tilePaletteView_t::~tilePaletteView_t(void)
{
}
//----------------------------------------------------
void ppuPalatteView_t::setTileLabel( QGroupBox *l )
void tilePaletteView_t::setIndex( int val )
{
frame = l;
palIdx = val;
}
//----------------------------------------------------
QPoint ppuPalatteView_t::convPixToTile( QPoint p )
int tilePaletteView_t::heightForWidth(int w) const
{
QPoint t(0,0);
t.setX( p.x() / boxWidth );
t.setY( p.y() / boxHeight );
return t;
return w/4;
}
//----------------------------------------------------
void ppuPalatteView_t::resizeEvent(QResizeEvent *event)
QSize tilePaletteView_t::minimumSizeHint(void) const
{
return QSize(48,12);
}
//----------------------------------------------------
QSize tilePaletteView_t::maximumSizeHint(void) const
{
return QSize(256,64);
}
//----------------------------------------------------
QSize tilePaletteView_t::sizeHint(void) const
{
return QSize(128,32);
}
//----------------------------------------------------
void tilePaletteView_t::resizeEvent(QResizeEvent *event)
{
viewWidth = event->size().width();
viewHeight = event->size().height();
boxWidth = viewWidth / PALETTEWIDTH;
boxHeight = viewHeight / PALETTEHEIGHT;
}
//----------------------------------------------------
void ppuPalatteView_t::mouseMoveEvent(QMouseEvent *event)
void tilePaletteView_t::paintEvent(QPaintEvent *event)
{
QPoint tile = convPixToTile( event->pos() );
if ( (tile.x() < PALETTEWIDTH) && (tile.y() < PALETTEHEIGHT) )
{
char stmp[64];
int ix = (tile.y()<<4)|tile.x();
sprintf( stmp, "Palette: $%02X", palcache[ix]);
frame->setTitle( tr(stmp) );
}
}
//----------------------------------------------------------------------------
void ppuPalatteView_t::mousePressEvent(QMouseEvent * event)
{
//QPoint tile = convPixToTile( event->pos() );
//if ( event->button() == Qt::LeftButton )
//{
//}
//else if ( event->button() == Qt::RightButton )
//{
//}
}
//----------------------------------------------------
void ppuPalatteView_t::paintEvent(QPaintEvent *event)
{
int x,y,w,h,xx,yy,i,j,p,ii;
int x,w,h,xx,yy,p,p2,i,j;
QPainter painter(this);
QColor color( 0, 0, 0);
QColor white(255,255,255), black(0,0,0);
//QPen pen;
//char showSelector;
char c[4];
//pen = painter.pen();
viewWidth = event->rect().width();
viewHeight = event->rect().height();
QColor color, black(0,0,0), white(255,255,255);
QPen pen;
char c[4];
pen = painter.pen();
w = viewWidth / 4;
h = viewHeight;
//printf("PPU PatternView %ix%i \n", viewWidth, viewHeight );
w = viewWidth / PALETTEWIDTH;
h = viewHeight / PALETTEHEIGHT;
//if ( w < h )
//{
// h = w;
//}
//else
//{
// w = h;
//}
i = w / 4;
j = h / 4;
p2 = palIdx * 4;
yy = 0;
for (y=0; y < PALETTEHEIGHT; y++)
xx = 0;
for (x=0; x < 4; x++)
{
xx = 0;
for (x=0; x < PALETTEWIDTH; x++)
if ( palo != NULL )
{
ii = (y*PALETTEWIDTH) + x;
p = palcache[ii];
color = ppuv_palette[y][x];
p = palcache[p2 | x];
color.setBlue( palo[p].b );
color.setGreen( palo[p].g );
color.setRed( palo[p].r );
c[0] = conv2hex( (p & 0xF0) >> 4 );
c[1] = conv2hex( p & 0x0F);
c[2] = 0;
painter.fillRect( xx, yy, w, h, color );
if ( qGray( color.red(), color.green(), color.blue() ) > 128 )
{
painter.setPen( black );
}
else
{
painter.setPen( white );
}
painter.drawText( xx+i, yy+h-j, tr(c) );
xx += w;
}
yy += h;
}
painter.fillRect( xx, yy, w, h, color );
y = PALETTEHEIGHT*h;
for (int i=0; i<=PALETTEWIDTH; i++)
{
x = i*w;
painter.drawLine( x, 0 , x, y );
if ( qGray( color.red(), color.green(), color.blue() ) > 128 )
{
painter.setPen( black );
}
else
{
painter.setPen( white );
}
painter.drawText( xx+i, yy+h-j, tr(c) );
painter.setPen( black );
painter.drawRect( xx, yy, w-1, h-1 );
painter.setPen( white );
painter.drawRect( xx+1, yy+1, w-3, h-3 );
xx += w;
}
x = PALETTEWIDTH*w;
for (int i=0; i<=PALETTEHEIGHT; i++)
{
y = i*h;
painter.drawLine( 0, y, x, y );
}
//painter.setPen( black );
//painter.drawLine( 0, 0 , w*4, 0 );
//painter.drawLine( 0, h-1 , w*4, h-1 );
//xx = 0;
//for (int i=0; i < 5; i++)
//{
// painter.drawLine( xx, 0 , xx, h );
// xx += w;
//}
}
//----------------------------------------------------
//----------------------------------------------------
@ -3460,6 +3464,10 @@ void oamPaletteView_t::paintEvent(QPaintEvent *event)
}
painter.drawText( xx+i, yy+h-j, tr(c) );
painter.setPen( black );
painter.drawRect( xx, yy, w-1, h-1 );
painter.setPen( white );
painter.drawRect( xx+1, yy+1, w-3, h-3 );
xx += w;
}
}

View File

@ -102,26 +102,27 @@ class ppuPatternView_t : public QWidget
void cycleNextPalette(void);
};
class ppuPalatteView_t : public QWidget
class tilePaletteView_t : public QWidget
{
Q_OBJECT
public:
ppuPalatteView_t(QWidget *parent = 0);
~ppuPalatteView_t(void);
tilePaletteView_t( QWidget *parent = 0);
~tilePaletteView_t(void);
void setTileLabel( QGroupBox *l );
QPoint convPixToTile( QPoint p );
void setIndex( int val );
protected:
void paintEvent(QPaintEvent *event);
void resizeEvent(QResizeEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void mousePressEvent(QMouseEvent * event);
int viewWidth;
int viewHeight;
int boxWidth;
int boxHeight;
QGroupBox *frame;
int heightForWidth(int w) const;
QSize minimumSizeHint(void) const;
QSize maximumSizeHint(void) const;
QSize sizeHint(void) const;
private:
int viewWidth;
int viewHeight;
int palIdx;
};
class ppuTileView_t : public QWidget
@ -253,8 +254,8 @@ class ppuViewerDialog_t : public QDialog
ppuViewerDialog_t(QWidget *parent = 0);
~ppuViewerDialog_t(void);
ppuPatternView_t *patternView[2];
ppuPalatteView_t *paletteView;
ppuPatternView_t *patternView[2];
tilePaletteView_t *tilePalView[8];
protected:
void closeEvent(QCloseEvent *bar);