Added palette dialog

Allow the user to change the palette.
This commit is contained in:
mkwong98 2014-07-05 01:23:35 +08:00
parent 649dedc1a5
commit 8ef154ccdd
10 changed files with 937 additions and 8 deletions

View file

@ -1,6 +1,7 @@
#include "StdAfx.h"
#include "fraHDNesImp.h"
#include "batchMapImp.h"
#include "paletteDialogImp.h"
#include "sysState.h"
#include <wx/rawbmp.h>
#include <Shlwapi.h>
@ -893,7 +894,7 @@ void fraHDNesImp::confirmImgSelection( wxCommandEvent& event ){
offsetx = imagetileX + ((b->x - screentileX) * vid->packScale);
offsety = imagetileY + ((b->y - screentileY) * vid->packScale);
if(offsety + (8 * vid->packScale) < objImageImg.GetHeight() && offsetx + (8 * vid->packScale) < objImageImg.GetWidth()
if(offsety + (8 * vid->packScale) <= objImageImg.GetHeight() && offsetx + (8 * vid->packScale) <= objImageImg.GetWidth()
&& offsety >= 0 && offsetx >= 0){
//check if the tile has a custom tile
if(vid->packData[b->patternAddress] == BAD_ADDRESS){
@ -1543,4 +1544,15 @@ void fraHDNesImp::AddDarkMapping( wxCommandEvent& event ){
vid->CleanHiResPack();
vid->ReadHiResPack();
refreshGraphicsPackGUI();
}
}
void fraHDNesImp::customizePaletteClicked( wxCommandEvent& event ) {
pDialog = new paletteDialogImp();
if(pDialog->ShowModal()){
vid->SaveHiResPack();
vid->CleanHiResPack();
vid->ReadHiResPack();
refreshGraphicsPackGUI();
}
delete pDialog;
}

View file

@ -14,6 +14,7 @@ protected:
wxImage objImageImg;
wxBitmap objImageBmp;
batchMap* bmDialog;
paletteDialog* pDialog;
void powerButtonClicked( wxCommandEvent& event );
void input1UP( wxCommandEvent& event );
@ -65,6 +66,7 @@ protected:
void inputContCap( wxCommandEvent& event );
void addBatchMapping( wxCommandEvent& event );
void optimizeScreenEdit( wxCommandEvent& event );
void customizePaletteClicked( wxCommandEvent& event );
Sint16 editingMusic;
void loadAudioPack( wxCommandEvent& event );

View file

@ -128,6 +128,7 @@
<ClInclude Include="mapper9.h" />
<ClInclude Include="mapperList.h" />
<ClInclude Include="memory.h" />
<ClInclude Include="paletteDialogImp.h" />
<ClInclude Include="ppu.h" />
<ClInclude Include="stdafx.h" />
<ClInclude Include="sysSetting.h" />
@ -158,6 +159,7 @@
<ClCompile Include="mapper7.cpp" />
<ClCompile Include="mapper9.cpp" />
<ClCompile Include="memory.cpp" />
<ClCompile Include="paletteDialogImp.cpp" />
<ClCompile Include="ppu.cpp" />
<ClCompile Include="stdafx.cpp">
<PrecompiledHeader Condition="'$(Configuration)|$(Platform)'=='Debug|Win32'">Create</PrecompiledHeader>

View file

@ -111,6 +111,9 @@
<ClInclude Include="mapper10.h">
<Filter>Header Files</Filter>
</ClInclude>
<ClInclude Include="paletteDialogImp.h">
<Filter>Header Files</Filter>
</ClInclude>
</ItemGroup>
<ItemGroup>
<ClCompile Include="stdafx.cpp">
@ -194,5 +197,8 @@
<ClCompile Include="mapper10.cpp">
<Filter>Source Files</Filter>
</ClCompile>
<ClCompile Include="paletteDialogImp.cpp">
<Filter>Source Files</Filter>
</ClCompile>
</ItemGroup>
</Project>

124
hdnes/paletteDialogImp.cpp Normal file
View file

@ -0,0 +1,124 @@
#include "StdAfx.h"
#include "sysState.h"
#include <wx/rawbmp.h>
#include <Shlwapi.h>
#include "paletteDialogImp.h"
paletteDialogImp::paletteDialogImp():paletteDialog(NULL){
selectedX = 0;
selectedY = 0;
showSelectedCellColor();
}
paletteDialogImp::~paletteDialogImp(){
}
void paletteDialogImp::paletteCellSelected( wxMouseEvent& event ){
int selectX;
int selectY;
float scale;
scale = 16.0f / (float)pnlPalette->GetSize().GetWidth();
selectX = event.GetPosition().x * scale;
selectX = selectX - (selectX % (8 * vid->packScale));
selectY = event.GetPosition().y * scale;
selectY = selectY - (selectY % (8 * vid->packScale));
if(selectX < objImageImg.GetWidth() && selectY < objImageImg.GetHeight()){
txtMapX->SetValue(wxString(to_string((long double)(selectX)).c_str(), wxConvUTF8));
txtMapY->SetValue(wxString(to_string((long double)(selectY)).c_str(), wxConvUTF8));
refreshImageBitmap();
displayImageBitmap();
}
wxClientDC* objDC;
objDC = new wxClientDC(pnlPalette);
refreshPalette(objDC);
delete objDC;
showSelectedCellColor();
}
void paletteDialogImp::newColorSelected( wxColourPickerEvent& event ){
}
void paletteDialogImp::paletteFileSelected( wxFileDirPickerEvent& event ){
}
void paletteDialogImp::refreshPalette(wxDC* dc){
wxImage* img;
wxImage scaledImg;
wxBitmap bmp;
Uint16 offX;
Uint16 offY;
Uint16 boxWidth;
Uint16 boxHeight;
img = new wxImage(16, 4, true);
img->InitAlpha();
for(int i = 0; i < 4; i++){
for(int j = 0; j < 16; j++){
img->SetAlpha(j, i, 255);
img->SetRGB(j, i, (vid->colourList[i * 16 + j] & 0xFF000000) >> 24, (vid->colourList[i * 16 + j] & 0x00FF0000) >> 16, (vid->colourList[i * 16 + j] & 0x0000FF00) >> 8);
}
}
scaledImg = img->Scale(pnlPalette->GetSize().GetWidth(), pnlPalette->GetSize().GetHeight());
offX = selectedX * pnlPalette->GetSize().GetWidth() / 16;
offY = selectedY * pnlPalette->GetSize().GetHeight() / 4;
boxWidth = pnlPalette->GetSize().GetWidth() / 16;
boxHeight = pnlPalette->GetSize().GetHeight() / 4;
for(int i = 0; i < boxHeight - 1; i++){
scaledImg.SetAlpha(offX, offY + i, 255);
scaledImg.SetRGB(offX, offY + i, 255, 255 , 255);
scaledImg.SetAlpha(offX + 1, offY + i + 1, 255);
scaledImg.SetRGB(offX + 1, offY + i + 1, 0, 0, 0);
scaledImg.SetAlpha(offX + boxWidth - 2, offY + i, 255);
scaledImg.SetRGB(offX + boxWidth - 2, offY + i, 255, 255 , 255);
scaledImg.SetAlpha(offX + boxWidth - 1, offY + i + 1, 255);
scaledImg.SetRGB(offX + boxWidth - 1, offY + i + 1, 0, 0, 0);
}
for(int i = 0; i < boxWidth - 1; i++){
scaledImg.SetAlpha(offX + i, offY, 255);
scaledImg.SetRGB(offX + i, offY, 255, 255 , 255);
scaledImg.SetAlpha(offX + i + 1, offY + 1, 255);
scaledImg.SetRGB(offX + i + 1, offY + 1, 0, 0, 0);
scaledImg.SetAlpha(offX + i, offY + boxHeight - 2, 255);
scaledImg.SetRGB(offX + i, offY + boxHeight - 2, 255, 255 , 255);
scaledImg.SetAlpha(offX + i + 1, offY + boxHeight - 1, 255);
scaledImg.SetRGB(offX + i + 1, offY + boxHeight - 1, 0, 0, 0);
}
bmp = wxBitmap(scaledImg);
dc->DrawBitmap(bmp, 0, 0);
delete img;
}
void paletteDialogImp::paletteRepaint( wxPaintEvent& event ){
wxPaintDC dc((wxWindow*)(event.GetEventObject()));
refreshPalette(&dc);
}
void paletteDialogImp::showSelectedCellColor(){
Uint32 color = vid->colourList[selectedY * 16 + selectedX];
wxColour c((color & 0xFF000000) >> 24, (color & 0x00FF0000) >> 16, (color & 0x0000FF00) >> 8, 255);
colorPicker->SetColour(c);
}

22
hdnes/paletteDialogImp.h Normal file
View file

@ -0,0 +1,22 @@
#pragma once
#include "..\wxwidget\formhdnes.h"
#include "video.h"
class paletteDialogImp :
public paletteDialog
{
private:
int selectedX;
int selectedY;
public:
paletteDialogImp(void);
~paletteDialogImp(void);
void paletteCellSelected( wxMouseEvent& event );
void newColorSelected( wxColourPickerEvent& event );
void paletteFileSelected( wxFileDirPickerEvent& event );
void paletteRepaint( wxPaintEvent& event );
void refreshPalette(wxDC* dc);
void showSelectedCellColor();
};

View file

@ -461,7 +461,7 @@ void video::update_texture(GLuint uniformID, GLuint textureRef, GLuint samplerRe
void video::initColour(){
Uint8 colourDish[64][3];
/*
colourDish[0][0] = 0x80;
colourDish[0][1] = 0x80;
colourDish[0][2] = 0x80;
@ -560,8 +560,8 @@ void video::initColour(){
colourDish[31][1] = 0x09;
colourDish[31][2] = 0x09;
colourDish[32][0] = 0xFF;
colourDish[32][1] = 0xFF;
colourDish[32][0] = 0xFE;
colourDish[32][1] = 0xFE;
colourDish[32][2] = 0xFF;
colourDish[33][0] = 0x0F;
colourDish[33][1] = 0xD7;
@ -657,7 +657,7 @@ void video::initColour(){
colourDish[63][0] = 0x11;
colourDish[63][1] = 0x11;
colourDish[63][2] = 0x11;
*/
/*
colourDish[0][0] = 0x46;
colourDish[0][1] = 0x46;
colourDish[0][2] = 0x46;
@ -853,7 +853,7 @@ void video::initColour(){
colourDish[63][0] = 0x00;
colourDish[63][1] = 0x00;
colourDish[63][2] = 0x00;
*/
for(Uint8 i = 0; i < 64; i++){
colourList[i] = (colourDish[i][0] << 24) | (colourDish[i][1] << 16) | (colourDish[i][2] << 8) | 0xFF;
}
@ -2096,7 +2096,7 @@ bool video::IsDarkerColor(Uint16 color, Uint16 refColor){
else if(((color & 0x000F) == 0x0000) || ((color & 0x000F) == 0x000D)){
//monochrome matching
if(((refColor & 0x000F) == 0x0000) || ((refColor & 0x000F) == 0x000D)){
return (colourList[refColor] > colourList[color]);
return (colourList[refColor] >= colourList[color]);
}
else{
return false;

View file

@ -832,6 +832,9 @@ fraHDNes::fraHDNes( wxWindow* parent, wxWindowID id, const wxString& title, cons
btn_MapDarkPalette = new wxButton( m_panel7, wxID_ANY, wxT("Map dark palette"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer511->Add( btn_MapDarkPalette, 0, wxALL, 5 );
btn_CustomizePalette = new wxButton( m_panel7, wxID_ANY, wxT("Customize palette"), wxDefaultPosition, wxDefaultSize, 0 );
bSizer511->Add( btn_CustomizePalette, 0, wxALL, 5 );
bSizer37->Add( bSizer511, 1, wxEXPAND, 5 );
@ -1108,6 +1111,7 @@ fraHDNes::fraHDNes( wxWindow* parent, wxWindowID id, const wxString& title, cons
m_button6->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( fraHDNes::genHDPack ), NULL, this );
btn_Swap->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( fraHDNes::addBatchMapping ), NULL, this );
btn_MapDarkPalette->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( fraHDNes::AddDarkMapping ), NULL, this );
btn_CustomizePalette->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( fraHDNes::customizePaletteClicked ), NULL, this );
pnlImage->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( fraHDNes::ImageTileSelected ), NULL, this );
btnLoadAudioPack->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( fraHDNes::loadAudioPack ), NULL, this );
btnSaveAudioPack->Connect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( fraHDNes::saveAudioPack ), NULL, this );
@ -1173,6 +1177,7 @@ fraHDNes::~fraHDNes()
m_button6->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( fraHDNes::genHDPack ), NULL, this );
btn_Swap->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( fraHDNes::addBatchMapping ), NULL, this );
btn_MapDarkPalette->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( fraHDNes::AddDarkMapping ), NULL, this );
btn_CustomizePalette->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( fraHDNes::customizePaletteClicked ), NULL, this );
pnlImage->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( fraHDNes::ImageTileSelected ), NULL, this );
btnLoadAudioPack->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( fraHDNes::loadAudioPack ), NULL, this );
btnSaveAudioPack->Disconnect( wxEVT_COMMAND_BUTTON_CLICKED, wxCommandEventHandler( fraHDNes::saveAudioPack ), NULL, this );
@ -1406,3 +1411,62 @@ batchMap::~batchMap()
pnlNewImage->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( batchMap::ImageTileSelected ), NULL, this );
}
paletteDialog::paletteDialog( wxWindow* parent, wxWindowID id, const wxString& title, const wxPoint& pos, const wxSize& size, long style ) : wxDialog( parent, id, title, pos, size, style )
{
this->SetSizeHints( wxDefaultSize, wxDefaultSize );
wxBoxSizer* bSizer84;
bSizer84 = new wxBoxSizer( wxVERTICAL );
pnlPalette = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
pnlPalette->SetMinSize( wxSize( 128,32 ) );
bSizer84->Add( pnlPalette, 4, wxEXPAND | wxALL, 5 );
m_panel13 = new wxPanel( this, wxID_ANY, wxDefaultPosition, wxDefaultSize, wxTAB_TRAVERSAL );
wxBoxSizer* bSizer86;
bSizer86 = new wxBoxSizer( wxHORIZONTAL );
m_staticText67 = new wxStaticText( m_panel13, wxID_ANY, wxT("Click on a cell and select a new color:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText67->Wrap( -1 );
bSizer86->Add( m_staticText67, 0, wxALL, 5 );
colorPicker = new wxColourPickerCtrl( m_panel13, wxID_ANY, *wxBLACK, wxDefaultPosition, wxDefaultSize, wxCLRP_SHOW_LABEL );
bSizer86->Add( colorPicker, 0, wxALL, 5 );
m_staticText68 = new wxStaticText( m_panel13, wxID_ANY, wxT("or import a palette from a file:"), wxDefaultPosition, wxDefaultSize, 0 );
m_staticText68->Wrap( -1 );
bSizer86->Add( m_staticText68, 0, wxALL, 5 );
selectPalette = new wxFilePickerCtrl( m_panel13, wxID_ANY, wxEmptyString, wxT("Import palette from a file"), wxT("*.*"), wxDefaultPosition, wxDefaultSize, wxFLP_CHANGE_DIR|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN );
bSizer86->Add( selectPalette, 0, wxALL, 5 );
m_panel13->SetSizer( bSizer86 );
m_panel13->Layout();
bSizer86->Fit( m_panel13 );
bSizer84->Add( m_panel13, 0, wxEXPAND | wxALL, 5 );
this->SetSizer( bSizer84 );
this->Layout();
this->Centre( wxBOTH );
// Connect Events
pnlPalette->Connect( wxEVT_LEFT_UP, wxMouseEventHandler( paletteDialog::paletteCellSelected ), NULL, this );
pnlPalette->Connect( wxEVT_PAINT, wxPaintEventHandler( paletteDialog::paletteRepaint ), NULL, this );
colorPicker->Connect( wxEVT_COMMAND_COLOURPICKER_CHANGED, wxColourPickerEventHandler( paletteDialog::newColorSelected ), NULL, this );
selectPalette->Connect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( paletteDialog::paletteFileSelected ), NULL, this );
}
paletteDialog::~paletteDialog()
{
// Disconnect Events
pnlPalette->Disconnect( wxEVT_LEFT_UP, wxMouseEventHandler( paletteDialog::paletteCellSelected ), NULL, this );
pnlPalette->Disconnect( wxEVT_PAINT, wxPaintEventHandler( paletteDialog::paletteRepaint ), NULL, this );
colorPicker->Disconnect( wxEVT_COMMAND_COLOURPICKER_CHANGED, wxColourPickerEventHandler( paletteDialog::newColorSelected ), NULL, this );
selectPalette->Disconnect( wxEVT_COMMAND_FILEPICKER_CHANGED, wxFileDirPickerEventHandler( paletteDialog::paletteFileSelected ), NULL, this );
}

View file

@ -9884,6 +9884,94 @@
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxButton" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default">0</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Customize palette</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">btn_CustomizePalette</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnButtonClick">customizePaletteClicked</event>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
</object>
</object>
</object>
@ -15009,5 +15097,582 @@
</object>
</object>
</object>
<object class="Dialog" expanded="1">
<property name="aui_managed">0</property>
<property name="aui_manager_style">wxAUI_MGR_DEFAULT</property>
<property name="bg"></property>
<property name="center">wxBOTH</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="enabled">1</property>
<property name="event_handler">impl_virtual</property>
<property name="extra_style"></property>
<property name="fg"></property>
<property name="font"></property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="maximum_size"></property>
<property name="minimum_size"></property>
<property name="name">paletteDialog</property>
<property name="pos"></property>
<property name="size">641,351</property>
<property name="style">wxDEFAULT_DIALOG_STYLE</property>
<property name="subclass"></property>
<property name="title"></property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnActivate"></event>
<event name="OnActivateApp"></event>
<event name="OnAuiFindManager"></event>
<event name="OnAuiPaneButton"></event>
<event name="OnAuiPaneClose"></event>
<event name="OnAuiPaneMaximize"></event>
<event name="OnAuiPaneRestore"></event>
<event name="OnAuiRender"></event>
<event name="OnChar"></event>
<event name="OnClose"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnHibernate"></event>
<event name="OnIconize"></event>
<event name="OnIdle"></event>
<event name="OnInitDialog"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizer84</property>
<property name="orient">wxVERTICAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND | wxALL</property>
<property name="proportion">4</property>
<object class="wxPanel" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size">128,32</property>
<property name="moveable">1</property>
<property name="name">pnlPalette</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style">wxTAB_TRAVERSAL</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp">paletteCellSelected</event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint">paletteRepaint</event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxEXPAND | wxALL</property>
<property name="proportion">0</property>
<object class="wxPanel" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_panel13</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style">wxTAB_TRAVERSAL</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
<object class="wxBoxSizer" expanded="1">
<property name="minimum_size"></property>
<property name="name">bSizer86</property>
<property name="orient">wxHORIZONTAL</property>
<property name="permission">none</property>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">Click on a cell and select a new color:</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_staticText67</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxColourPickerCtrl" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="colour"></property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">colorPicker</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxCLRP_SHOW_LABEL</property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnColourChanged">newColorSelected</event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxStaticText" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="label">or import a palette from a file:</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">m_staticText68</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style"></property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<property name="wrap">-1</property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
<object class="sizeritem" expanded="1">
<property name="border">5</property>
<property name="flag">wxALL</property>
<property name="proportion">0</property>
<object class="wxFilePickerCtrl" expanded="1">
<property name="BottomDockable">1</property>
<property name="LeftDockable">1</property>
<property name="RightDockable">1</property>
<property name="TopDockable">1</property>
<property name="aui_layer"></property>
<property name="aui_name"></property>
<property name="aui_position"></property>
<property name="aui_row"></property>
<property name="best_size"></property>
<property name="bg"></property>
<property name="caption"></property>
<property name="caption_visible">1</property>
<property name="center_pane">0</property>
<property name="close_button">1</property>
<property name="context_help"></property>
<property name="context_menu">1</property>
<property name="default_pane">0</property>
<property name="dock">Dock</property>
<property name="dock_fixed">0</property>
<property name="docking">Left</property>
<property name="enabled">1</property>
<property name="fg"></property>
<property name="floatable">1</property>
<property name="font"></property>
<property name="gripper">0</property>
<property name="hidden">0</property>
<property name="id">wxID_ANY</property>
<property name="max_size"></property>
<property name="maximize_button">0</property>
<property name="maximum_size"></property>
<property name="message">Import palette from a file</property>
<property name="min_size"></property>
<property name="minimize_button">0</property>
<property name="minimum_size"></property>
<property name="moveable">1</property>
<property name="name">selectPalette</property>
<property name="pane_border">1</property>
<property name="pane_position"></property>
<property name="pane_size"></property>
<property name="permission">protected</property>
<property name="pin_button">1</property>
<property name="pos"></property>
<property name="resize">Resizable</property>
<property name="show">1</property>
<property name="size"></property>
<property name="style">wxFLP_CHANGE_DIR|wxFLP_FILE_MUST_EXIST|wxFLP_OPEN</property>
<property name="subclass"></property>
<property name="toolbar_pane">0</property>
<property name="tooltip"></property>
<property name="validator_data_type"></property>
<property name="validator_style">wxFILTER_NONE</property>
<property name="validator_type">wxDefaultValidator</property>
<property name="validator_variable"></property>
<property name="value"></property>
<property name="wildcard">*.*</property>
<property name="window_extra_style"></property>
<property name="window_name"></property>
<property name="window_style"></property>
<event name="OnChar"></event>
<event name="OnEnterWindow"></event>
<event name="OnEraseBackground"></event>
<event name="OnFileChanged">paletteFileSelected</event>
<event name="OnKeyDown"></event>
<event name="OnKeyUp"></event>
<event name="OnKillFocus"></event>
<event name="OnLeaveWindow"></event>
<event name="OnLeftDClick"></event>
<event name="OnLeftDown"></event>
<event name="OnLeftUp"></event>
<event name="OnMiddleDClick"></event>
<event name="OnMiddleDown"></event>
<event name="OnMiddleUp"></event>
<event name="OnMotion"></event>
<event name="OnMouseEvents"></event>
<event name="OnMouseWheel"></event>
<event name="OnPaint"></event>
<event name="OnRightDClick"></event>
<event name="OnRightDown"></event>
<event name="OnRightUp"></event>
<event name="OnSetFocus"></event>
<event name="OnSize"></event>
<event name="OnUpdateUI"></event>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</object>
</wxFormBuilder_Project>

View file

@ -34,6 +34,7 @@
#include <wx/notebook.h>
#include <wx/frame.h>
#include <wx/dialog.h>
#include <wx/clrpicker.h>
///////////////////////////////////////////////////////////////////////////
@ -153,6 +154,7 @@ class fraHDNes : public wxFrame
wxButton* m_button6;
wxButton* btn_Swap;
wxButton* btn_MapDarkPalette;
wxButton* btn_CustomizePalette;
wxPanel* pnlImage;
wxPanel* m_panel8;
wxButton* btnLoadAudioPack;
@ -236,6 +238,7 @@ class fraHDNes : public wxFrame
virtual void genHDPack( wxCommandEvent& event ) { event.Skip(); }
virtual void addBatchMapping( wxCommandEvent& event ) { event.Skip(); }
virtual void AddDarkMapping( wxCommandEvent& event ) { event.Skip(); }
virtual void customizePaletteClicked( wxCommandEvent& event ) { event.Skip(); }
virtual void ImageTileSelected( wxMouseEvent& event ) { event.Skip(); }
virtual void loadAudioPack( wxCommandEvent& event ) { event.Skip(); }
virtual void saveAudioPack( wxCommandEvent& event ) { event.Skip(); }
@ -306,4 +309,33 @@ class batchMap : public wxDialog
};
///////////////////////////////////////////////////////////////////////////////
/// Class paletteDialog
///////////////////////////////////////////////////////////////////////////////
class paletteDialog : public wxDialog
{
private:
protected:
wxPanel* pnlPalette;
wxPanel* m_panel13;
wxStaticText* m_staticText67;
wxColourPickerCtrl* colorPicker;
wxStaticText* m_staticText68;
wxFilePickerCtrl* selectPalette;
// Virtual event handlers, overide them in your derived class
virtual void paletteCellSelected( wxMouseEvent& event ) { event.Skip(); }
virtual void paletteRepaint( wxPaintEvent& event ) { event.Skip(); }
virtual void newColorSelected( wxColourPickerEvent& event ) { event.Skip(); }
virtual void paletteFileSelected( wxFileDirPickerEvent& event ) { event.Skip(); }
public:
paletteDialog( wxWindow* parent, wxWindowID id = wxID_ANY, const wxString& title = wxEmptyString, const wxPoint& pos = wxDefaultPosition, const wxSize& size = wxSize( 641,351 ), long style = wxDEFAULT_DIALOG_STYLE );
~paletteDialog();
};
#endif //__FORMHDNES_H__