Added a function to pre-calculate pixel locations for the nametable viewer in order to save computation time during Qt paint events.
This commit is contained in:
parent
97990b671a
commit
04bd1ffcf6
|
@ -931,6 +931,8 @@ void ppuNameTableView_t::setViewScale( int reqScale )
|
||||||
}
|
}
|
||||||
|
|
||||||
redrawtables = 1;
|
redrawtables = 1;
|
||||||
|
|
||||||
|
calcPixelLocations();
|
||||||
}
|
}
|
||||||
//----------------------------------------------------
|
//----------------------------------------------------
|
||||||
void ppuNameTableView_t::resizeEvent(QResizeEvent *event)
|
void ppuNameTableView_t::resizeEvent(QResizeEvent *event)
|
||||||
|
@ -941,6 +943,8 @@ void ppuNameTableView_t::resizeEvent(QResizeEvent *event)
|
||||||
//printf("%ix%i\n", event->size().width(), event->size().height() );
|
//printf("%ix%i\n", event->size().width(), event->size().height() );
|
||||||
|
|
||||||
redrawtables = 1;
|
redrawtables = 1;
|
||||||
|
|
||||||
|
calcPixelLocations();
|
||||||
}
|
}
|
||||||
//----------------------------------------------------
|
//----------------------------------------------------
|
||||||
int ppuNameTableView_t::convertXY2TableTile( int x, int y, int *tableIdxOut, int *tileXout, int *tileYout )
|
int ppuNameTableView_t::convertXY2TableTile( int x, int y, int *tableIdxOut, int *tileXout, int *tileYout )
|
||||||
|
@ -1294,10 +1298,57 @@ void ppuNameTableView_t::openPpuAddrHexEdit(void)
|
||||||
hexEditorOpenFromDebugger( QHexEdit::MODE_NES_PPU, ppuAddr );
|
hexEditorOpenFromDebugger( QHexEdit::MODE_NES_PPU, ppuAddr );
|
||||||
}
|
}
|
||||||
//----------------------------------------------------
|
//----------------------------------------------------
|
||||||
|
void ppuNameTableView_t::calcPixelLocations(void)
|
||||||
|
{
|
||||||
|
ppuNameTable_t *nt;
|
||||||
|
int n,i,j,ii,jj,w,h,x,y,xx,yy;
|
||||||
|
|
||||||
|
w = viewWidth / (256*2);
|
||||||
|
h = viewHeight / (240*2);
|
||||||
|
|
||||||
|
//printf("(%i,%i) %ix%i\n", event->rect().x(), event->rect().y(), event->rect().width(), event->rect().height() );
|
||||||
|
|
||||||
|
xx = 0; yy = 0;
|
||||||
|
|
||||||
|
for (n=0; n<4; n++)
|
||||||
|
{
|
||||||
|
nt = &nameTable[n];
|
||||||
|
|
||||||
|
nt->w = w; nt->h = h;
|
||||||
|
|
||||||
|
nt->x = xx = (n%2) * (viewWidth / 2);
|
||||||
|
nt->y = yy = (n/2) * (viewHeight / 2);
|
||||||
|
|
||||||
|
jj = 0;
|
||||||
|
|
||||||
|
for (j=0; j<30; j++)
|
||||||
|
{
|
||||||
|
ii = 0;
|
||||||
|
|
||||||
|
for (i=0; i<32; i++)
|
||||||
|
{
|
||||||
|
nt->tile[j][i].x = xx+(ii*w);
|
||||||
|
nt->tile[j][i].y = yy+(jj*h);
|
||||||
|
|
||||||
|
for (y=0; y<8; y++)
|
||||||
|
{
|
||||||
|
for (x=0; x<8; x++)
|
||||||
|
{
|
||||||
|
nt->tile[j][i].pixel[y][x].x = xx+(ii+x)*w;
|
||||||
|
nt->tile[j][i].pixel[y][x].y = yy+(jj+y)*h;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
ii += 8;
|
||||||
|
}
|
||||||
|
jj += 8;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
//----------------------------------------------------
|
||||||
void ppuNameTableView_t::paintEvent(QPaintEvent *event)
|
void ppuNameTableView_t::paintEvent(QPaintEvent *event)
|
||||||
{
|
{
|
||||||
ppuNameTable_t *nt;
|
ppuNameTable_t *nt;
|
||||||
int n,i,j,ii,jj,w,h,x,y,xx,yy,ww,hh;
|
int n,i,j,w,h,x,y,xx,yy,ww,hh;
|
||||||
QPainter painter(this);
|
QPainter painter(this);
|
||||||
QColor scanLineColor(255,255,255);
|
QColor scanLineColor(255,255,255);
|
||||||
QPen pen;
|
QPen pen;
|
||||||
|
@ -1322,20 +1373,13 @@ void ppuNameTableView_t::paintEvent(QPaintEvent *event)
|
||||||
|
|
||||||
for (j=0; j<30; j++)
|
for (j=0; j<30; j++)
|
||||||
{
|
{
|
||||||
jj = (j*8);
|
|
||||||
|
|
||||||
for (i=0; i<32; i++)
|
for (i=0; i<32; i++)
|
||||||
{
|
{
|
||||||
ii = (i*8);
|
|
||||||
|
|
||||||
nt->tile[j][i].x = xx+(ii*w);
|
|
||||||
nt->tile[j][i].y = yy+(jj*h);
|
|
||||||
|
|
||||||
for (y=0; y<8; y++)
|
for (y=0; y<8; y++)
|
||||||
{
|
{
|
||||||
for (x=0; x<8; x++)
|
for (x=0; x<8; x++)
|
||||||
{
|
{
|
||||||
painter.fillRect( xx+(ii+x)*w, yy+(jj+y)*h, w, h, nt->tile[j][i].pixel[y][x].color );
|
painter.fillRect( nt->tile[j][i].pixel[y][x].x, nt->tile[j][i].pixel[y][x].y, w, h, nt->tile[j][i].pixel[y][x].color );
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,14 @@
|
||||||
|
|
||||||
struct ppuNameTablePixel_t
|
struct ppuNameTablePixel_t
|
||||||
{
|
{
|
||||||
|
int x;
|
||||||
|
int y;
|
||||||
QColor color;
|
QColor color;
|
||||||
|
|
||||||
|
ppuNameTablePixel_t(void)
|
||||||
|
{
|
||||||
|
x = y = 0;
|
||||||
|
}
|
||||||
};
|
};
|
||||||
|
|
||||||
struct ppuNameTableTile_t
|
struct ppuNameTableTile_t
|
||||||
|
@ -76,6 +83,8 @@ class ppuNameTableView_t : public QWidget
|
||||||
void setHoverFocus( bool hoverFocus );
|
void setHoverFocus( bool hoverFocus );
|
||||||
bool getHoverFocus( void ){ return hover2Focus; };
|
bool getHoverFocus( void ){ return hover2Focus; };
|
||||||
|
|
||||||
|
void calcPixelLocations(void);
|
||||||
|
|
||||||
int getSelTable(void){ return selTable; };
|
int getSelTable(void){ return selTable; };
|
||||||
QPoint getSelTile(void){ return selTile; };
|
QPoint getSelTile(void){ return selTile; };
|
||||||
|
|
||||||
|
@ -146,6 +155,7 @@ class ppuNameTableViewerDialog_t : public QDialog
|
||||||
~ppuNameTableViewerDialog_t(void);
|
~ppuNameTableViewerDialog_t(void);
|
||||||
|
|
||||||
void setPropertyLabels( int TileID, int TileX, int TileY, int NameTable, int PPUAddress, int AttAddress, int Attrib, int palAddr );
|
void setPropertyLabels( int TileID, int TileX, int TileY, int NameTable, int PPUAddress, int AttAddress, int Attrib, int palAddr );
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
void closeEvent(QCloseEvent *bar);
|
void closeEvent(QCloseEvent *bar);
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue