Added an nes palette export as adobe color table feature to Qt GUI.

This commit is contained in:
mjbudd77 2021-05-14 20:18:09 -04:00
parent 25d1002648
commit 2f37a95e75
2 changed files with 100 additions and 1 deletions

View File

@ -54,7 +54,7 @@ PaletteEditorDialog_t::PaletteEditorDialog_t(QWidget *parent)
{
QVBoxLayout *mainLayout;
QMenuBar *menuBar;
QMenu *fileMenu, *memMenu;
QMenu *fileMenu, *memMenu, *subMenu;
QAction *act;
int useNativeMenuBar;
@ -92,6 +92,18 @@ PaletteEditorDialog_t::PaletteEditorDialog_t(QWidget *parent)
fileMenu->addSeparator();
// File -> Export
subMenu = fileMenu->addMenu( tr("E&xport As") );
act = new QAction(tr("&Adobe Color Table"), this);
//act->setShortcut( QKeySequence::Save );
act->setStatusTip(tr("Export Palette in ACT Format"));
connect(act, SIGNAL(triggered()), this, SLOT(exportPaletteFileDialog(void)) );
subMenu->addAction(act);
fileMenu->addSeparator();
// File -> Close
act = new QAction(tr("&Close"), this);
act->setShortcut( QKeySequence::Close );
@ -298,6 +310,56 @@ void PaletteEditorDialog_t::savePaletteFileDialog(void)
palView->saveToFile( filename.toStdString().c_str() );
}
//----------------------------------------------------------------------------
void PaletteEditorDialog_t::exportPaletteFileDialog(void)
{
int ret, useNativeFileDialogVal;
QString filename;
QFileDialog dialog(this, tr("Export Palette To File") );
const char *home;
dialog.setFileMode(QFileDialog::AnyFile);
dialog.setNameFilter(tr("Adobe Color Table Files (*.act *.ACT) ;; All files (*)"));
dialog.setViewMode(QFileDialog::List);
dialog.setFilter( QDir::AllEntries | QDir::AllDirs | QDir::Hidden );
dialog.setLabelText( QFileDialog::Accept, tr("Export") );
dialog.setDefaultSuffix( tr(".act") );
home = ::getenv("HOME");
if ( home )
{
dialog.setDirectory( tr(home) );
}
// Check config option to use native file dialog or not
g_config->getOption ("SDL.UseNativeFileDialog", &useNativeFileDialogVal);
dialog.setOption(QFileDialog::DontUseNativeDialog, !useNativeFileDialogVal);
ret = dialog.exec();
if ( ret )
{
QStringList fileList;
fileList = dialog.selectedFiles();
if ( fileList.size() > 0 )
{
filename = fileList[0];
}
}
if ( filename.isNull() )
{
return;
}
qDebug() << "selected file path : " << filename.toUtf8();
palView->exportToFileACT( filename.toStdString().c_str() );
}
//----------------------------------------------------------------------------
//---NES Color Palette Viewer
//----------------------------------------------------------------------------
nesPaletteView::nesPaletteView( QWidget *parent)
@ -448,6 +510,41 @@ int nesPaletteView::saveToFile( const char *filepath )
return ret;
}
//----------------------------------------------------------------------------
int nesPaletteView::exportToFileACT( const char *filepath )
{
FILE *fp;
int i=0, ret = 0, numBytes;
unsigned char buf[768];
fp = ::fopen( filepath, "wb");
if ( fp == NULL )
{
return -1;
}
memset( buf, 0, sizeof(buf) );
i = 0;
for (int p=0; p<NUM_COLORS; p++)
{
buf[i] = color[p].red(); i++;
buf[i] = color[p].green(); i++;
buf[i] = color[p].blue(); i++;
}
numBytes = ::fwrite( buf, 1, 768, fp );
if ( numBytes != 768 )
{
printf("Error Failed to Export Palette\n");
ret = -1;
}
::fclose(fp);
return ret;
}
//----------------------------------------------------------------------------
void nesPaletteView::resizeEvent(QResizeEvent *event)
{
//viewWidth = event->size().width();

View File

@ -65,6 +65,7 @@ class nesPaletteView : public QWidget
void openColorPicker(void);
int loadFromFile( const char *filepath );
int saveToFile( const char *filepath );
int exportToFileACT( const char *filepath );
protected:
void paintEvent(QPaintEvent *event);
@ -108,6 +109,7 @@ class PaletteEditorDialog_t : public QDialog
private slots:
void openPaletteFileDialog(void);
void savePaletteFileDialog(void);
void exportPaletteFileDialog(void);
void setActivePalette(void);
};