mirror of
https://github.com/dolphin-emu/dolphin.git
synced 2025-07-31 01:59:52 -06:00
add *.user, Win32, and x64 build dir to ignore list for DebuggerUICommon and Unit Tests
add *.aps to ignore list for DolphinWX dir add eol-style native to 120 or so files git-svn-id: https://dolphin-emu.googlecode.com/svn/trunk@3689 8ced0084-cf51-0410-be5f-012b33b47a6e
This commit is contained in:
@ -1,288 +1,288 @@
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "NetWindow.h"
|
||||
|
||||
void ClientSide::OnClientData(unsigned char data)
|
||||
{
|
||||
unsigned char sent = 0;
|
||||
u32 buffer_size;
|
||||
size_t recv_size;
|
||||
char *buffer = NULL;
|
||||
|
||||
switch (data)
|
||||
{
|
||||
case 0x10: // Player joined server
|
||||
{
|
||||
// Read GameFound
|
||||
m_socket.Receive((char*)&sent, 1, recv_size);
|
||||
|
||||
// Read nickname
|
||||
m_socket.Receive((char*)&buffer_size, 4, recv_size);
|
||||
buffer = new char[buffer_size+1];
|
||||
m_socket.Receive(buffer, buffer_size+1, recv_size);
|
||||
Event->AppendText(wxString::Format(wxT("*Player : %s is now connected to Host...\n"), buffer));
|
||||
|
||||
if (sent != 0x1F)
|
||||
for (int i = 0; i < 4; i++)
|
||||
Event->AppendText(_("WARNING : Game Not Found on Client Side!\n"));
|
||||
|
||||
m_numplayers++;
|
||||
Event->SendEvent(HOST_NEWPLAYER);
|
||||
break;
|
||||
}
|
||||
case 0x11: // Player left server
|
||||
{
|
||||
// Read Nickname
|
||||
m_socket.Receive((char*)&buffer_size, 4, recv_size);
|
||||
buffer = new char[buffer_size+1];
|
||||
m_socket.Receive(buffer, buffer_size+1, recv_size);
|
||||
|
||||
Event->AppendText(wxString::Format(wxT("*Player : %s left the game\n\n"), buffer));
|
||||
|
||||
m_numplayers--;
|
||||
Event->SendEvent(HOST_PLAYERLEFT);
|
||||
break;
|
||||
}
|
||||
case 0x15: // Ping Player
|
||||
{
|
||||
m_socket.Receive((char*)&buffer_size, 4, recv_size);
|
||||
m_socket.Send((const char*)&buffer_size, 4);
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x20: // IP request
|
||||
{
|
||||
//buffer_size = m_addr.size();
|
||||
//m_socket.Send((const char*)&buffer_size, 4);
|
||||
m_socket.Send((const char*)&data, 1);
|
||||
m_socket.Send(m_addr.c_str(), m_addr.size() + 1);
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x30: // Chat message received from server
|
||||
{
|
||||
m_socket.Receive((char*)&buffer_size, 4, recv_size);
|
||||
buffer = new char[buffer_size+1];
|
||||
m_socket.Receive(buffer, buffer_size+1, recv_size);
|
||||
|
||||
if (recv_size > 1024)
|
||||
{
|
||||
//something wrong...
|
||||
delete[] buffer;
|
||||
return;
|
||||
}
|
||||
|
||||
Event->AppendText(wxString::FromAscii(buffer));
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x35: // ChangeGame message received
|
||||
{
|
||||
m_socket.Receive((char*)&buffer_size, 4, recv_size);
|
||||
buffer = new char[buffer_size+1];
|
||||
m_socket.Receive(buffer, buffer_size+1, recv_size);
|
||||
|
||||
m_selectedgame = std::string(buffer);
|
||||
Event->AppendText(wxString::Format(wxT("*Host changed Game to : %s\n"), buffer));
|
||||
|
||||
// Tell the server if the game's been found
|
||||
m_socket.Send((const char*)&data, 1);
|
||||
CheckGameFound();
|
||||
|
||||
Event->SendEvent(GUI_UPDATE);
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x40: // Ready message received
|
||||
{
|
||||
m_socket.Receive((char*)&buffer_size, 4, recv_size);
|
||||
buffer = new char[buffer_size+1];
|
||||
m_socket.Receive(buffer, buffer_size+1, recv_size);
|
||||
|
||||
if (recv_size > 1024)
|
||||
{
|
||||
delete[] buffer;
|
||||
return;
|
||||
}
|
||||
|
||||
Event->AppendText(wxString::FromAscii(buffer));
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x50: // Everyone is Ready message received
|
||||
{
|
||||
// Load the game and start synching
|
||||
m_netptr->LoadGame();
|
||||
|
||||
break;
|
||||
}
|
||||
case 0xA1: // Received pad data from host in versus mode
|
||||
{
|
||||
if (m_data_received)
|
||||
wxThread::Sleep(10);
|
||||
|
||||
m_socket.Receive((char*)m_netvalues[0], 8, recv_size);
|
||||
m_data_received = true;
|
||||
|
||||
#ifdef NET_DEBUG
|
||||
char sent[64];
|
||||
sprintf(sent, "Received Values: 0x%08x : 0x%08x \n", m_netvalues[0][0], m_netvalues[0][1]);
|
||||
Event->AppendText(wxString::FromAscii(sent));
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
delete[] buffer;
|
||||
}
|
||||
|
||||
void ServerSide::OnServerData(int sock, unsigned char data)
|
||||
{
|
||||
size_t recv_size;
|
||||
char *buffer = NULL;
|
||||
unsigned char sent;
|
||||
unsigned int four_bytes;
|
||||
|
||||
switch (data)
|
||||
{
|
||||
case 0x15: // Ping Request
|
||||
{
|
||||
m_client[sock].socket.Receive((char*)&four_bytes, 4, recv_size);
|
||||
m_client[sock].socket.Send((const char*)&four_bytes, 4);
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x20: // IP request response
|
||||
{
|
||||
buffer = new char[24];
|
||||
// Read IP Address
|
||||
m_client[sock].socket.Receive(buffer, 24, recv_size);
|
||||
|
||||
Event->AppendText(wxString::Format(wxT("> Your IP is : %s\n"), buffer));
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x30: // Chat message
|
||||
{
|
||||
buffer = new char[1024];
|
||||
|
||||
m_client[sock].socket.Receive((char*)&four_bytes, 4, recv_size);
|
||||
m_client[sock].socket.Receive((char*)buffer, four_bytes + 1, recv_size);
|
||||
|
||||
if (recv_size > 1024)
|
||||
{
|
||||
//something wrong...
|
||||
delete[] buffer;
|
||||
return;
|
||||
}
|
||||
|
||||
sent = 0x30;
|
||||
// Send to all
|
||||
for (int i=0; i < m_numplayers ; i++)
|
||||
{
|
||||
if (i == sock)
|
||||
continue;
|
||||
|
||||
m_client[i].socket.Send((const char*)&sent, 1);
|
||||
|
||||
m_client[1].socket.Send((const char*)&four_bytes, 4);
|
||||
m_client[i].socket.Send(buffer, recv_size);
|
||||
}
|
||||
|
||||
Event->AppendText(wxString::FromAscii(buffer));
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x35: // Change game response received
|
||||
{
|
||||
// Receive isGameFound response (0x1F / 0x1A)
|
||||
m_client[sock].socket.Receive((char*)&sent, 1, recv_size);
|
||||
|
||||
// If game is not found
|
||||
if (sent != 0x1F)
|
||||
{
|
||||
sent = 0x30;
|
||||
|
||||
wxString error_str = wxString::Format(
|
||||
wxT("WARNING : Player %s does Not have this Game !\n"), m_client[sock].nick.c_str());
|
||||
four_bytes = (int)error_str.size();
|
||||
|
||||
for (int i=0; i < 2; i++)
|
||||
Event->AppendText(error_str);
|
||||
|
||||
// Send to all
|
||||
for (int i=0; i < m_numplayers ; i++)
|
||||
{
|
||||
if (i == sock)
|
||||
continue;
|
||||
m_client[i].socket.Send((const char*)&sent, 1);
|
||||
|
||||
m_client[i].socket.Send((const char*)&four_bytes, 4);
|
||||
m_client[i].socket.Send(error_str.mb_str(), four_bytes + 1);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x40: // Ready message received
|
||||
{
|
||||
std::string buffer_str;
|
||||
|
||||
m_client[sock].ready = !m_client[sock].ready;
|
||||
|
||||
if (m_client[sock].ready)
|
||||
buffer_str = ">> "+m_client[sock].nick+" is now ready !\n";
|
||||
else
|
||||
buffer_str = ">> "+m_client[sock].nick+" is now Unready !\n";
|
||||
|
||||
four_bytes = (int)buffer_str.size();
|
||||
|
||||
// Send to all
|
||||
for (int i=0; i < m_numplayers ; i++)
|
||||
{
|
||||
m_client[i].socket.Send((const char*)&data, 1);
|
||||
|
||||
m_client[i].socket.Send((const char*)&four_bytes, 4);
|
||||
m_client[i].socket.Send(buffer_str.c_str(), four_bytes+1);
|
||||
}
|
||||
|
||||
Event->AppendText(wxString::FromAscii(buffer_str.c_str()));
|
||||
IsEveryoneReady();
|
||||
|
||||
break;
|
||||
}
|
||||
case 0xA1: // Received pad data from a client
|
||||
{
|
||||
if (m_data_received)
|
||||
wxThread::Sleep(10);
|
||||
|
||||
m_client[sock].socket.Receive((char*)m_netvalues[sock], 8, recv_size);
|
||||
m_data_received = true;
|
||||
|
||||
#ifdef NET_DEBUG
|
||||
char sent[64];
|
||||
sprintf(sent, "Received Values: 0x%08x : 0x%08x \n", m_netvalues[sock][0], m_netvalues[sock][1]);
|
||||
Event->AppendText(wxString::FromAscii(sent));
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
delete[] buffer;
|
||||
}
|
||||
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#include "NetWindow.h"
|
||||
|
||||
void ClientSide::OnClientData(unsigned char data)
|
||||
{
|
||||
unsigned char sent = 0;
|
||||
u32 buffer_size;
|
||||
size_t recv_size;
|
||||
char *buffer = NULL;
|
||||
|
||||
switch (data)
|
||||
{
|
||||
case 0x10: // Player joined server
|
||||
{
|
||||
// Read GameFound
|
||||
m_socket.Receive((char*)&sent, 1, recv_size);
|
||||
|
||||
// Read nickname
|
||||
m_socket.Receive((char*)&buffer_size, 4, recv_size);
|
||||
buffer = new char[buffer_size+1];
|
||||
m_socket.Receive(buffer, buffer_size+1, recv_size);
|
||||
Event->AppendText(wxString::Format(wxT("*Player : %s is now connected to Host...\n"), buffer));
|
||||
|
||||
if (sent != 0x1F)
|
||||
for (int i = 0; i < 4; i++)
|
||||
Event->AppendText(_("WARNING : Game Not Found on Client Side!\n"));
|
||||
|
||||
m_numplayers++;
|
||||
Event->SendEvent(HOST_NEWPLAYER);
|
||||
break;
|
||||
}
|
||||
case 0x11: // Player left server
|
||||
{
|
||||
// Read Nickname
|
||||
m_socket.Receive((char*)&buffer_size, 4, recv_size);
|
||||
buffer = new char[buffer_size+1];
|
||||
m_socket.Receive(buffer, buffer_size+1, recv_size);
|
||||
|
||||
Event->AppendText(wxString::Format(wxT("*Player : %s left the game\n\n"), buffer));
|
||||
|
||||
m_numplayers--;
|
||||
Event->SendEvent(HOST_PLAYERLEFT);
|
||||
break;
|
||||
}
|
||||
case 0x15: // Ping Player
|
||||
{
|
||||
m_socket.Receive((char*)&buffer_size, 4, recv_size);
|
||||
m_socket.Send((const char*)&buffer_size, 4);
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x20: // IP request
|
||||
{
|
||||
//buffer_size = m_addr.size();
|
||||
//m_socket.Send((const char*)&buffer_size, 4);
|
||||
m_socket.Send((const char*)&data, 1);
|
||||
m_socket.Send(m_addr.c_str(), m_addr.size() + 1);
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x30: // Chat message received from server
|
||||
{
|
||||
m_socket.Receive((char*)&buffer_size, 4, recv_size);
|
||||
buffer = new char[buffer_size+1];
|
||||
m_socket.Receive(buffer, buffer_size+1, recv_size);
|
||||
|
||||
if (recv_size > 1024)
|
||||
{
|
||||
//something wrong...
|
||||
delete[] buffer;
|
||||
return;
|
||||
}
|
||||
|
||||
Event->AppendText(wxString::FromAscii(buffer));
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x35: // ChangeGame message received
|
||||
{
|
||||
m_socket.Receive((char*)&buffer_size, 4, recv_size);
|
||||
buffer = new char[buffer_size+1];
|
||||
m_socket.Receive(buffer, buffer_size+1, recv_size);
|
||||
|
||||
m_selectedgame = std::string(buffer);
|
||||
Event->AppendText(wxString::Format(wxT("*Host changed Game to : %s\n"), buffer));
|
||||
|
||||
// Tell the server if the game's been found
|
||||
m_socket.Send((const char*)&data, 1);
|
||||
CheckGameFound();
|
||||
|
||||
Event->SendEvent(GUI_UPDATE);
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x40: // Ready message received
|
||||
{
|
||||
m_socket.Receive((char*)&buffer_size, 4, recv_size);
|
||||
buffer = new char[buffer_size+1];
|
||||
m_socket.Receive(buffer, buffer_size+1, recv_size);
|
||||
|
||||
if (recv_size > 1024)
|
||||
{
|
||||
delete[] buffer;
|
||||
return;
|
||||
}
|
||||
|
||||
Event->AppendText(wxString::FromAscii(buffer));
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x50: // Everyone is Ready message received
|
||||
{
|
||||
// Load the game and start synching
|
||||
m_netptr->LoadGame();
|
||||
|
||||
break;
|
||||
}
|
||||
case 0xA1: // Received pad data from host in versus mode
|
||||
{
|
||||
if (m_data_received)
|
||||
wxThread::Sleep(10);
|
||||
|
||||
m_socket.Receive((char*)m_netvalues[0], 8, recv_size);
|
||||
m_data_received = true;
|
||||
|
||||
#ifdef NET_DEBUG
|
||||
char sent[64];
|
||||
sprintf(sent, "Received Values: 0x%08x : 0x%08x \n", m_netvalues[0][0], m_netvalues[0][1]);
|
||||
Event->AppendText(wxString::FromAscii(sent));
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
delete[] buffer;
|
||||
}
|
||||
|
||||
void ServerSide::OnServerData(int sock, unsigned char data)
|
||||
{
|
||||
size_t recv_size;
|
||||
char *buffer = NULL;
|
||||
unsigned char sent;
|
||||
unsigned int four_bytes;
|
||||
|
||||
switch (data)
|
||||
{
|
||||
case 0x15: // Ping Request
|
||||
{
|
||||
m_client[sock].socket.Receive((char*)&four_bytes, 4, recv_size);
|
||||
m_client[sock].socket.Send((const char*)&four_bytes, 4);
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x20: // IP request response
|
||||
{
|
||||
buffer = new char[24];
|
||||
// Read IP Address
|
||||
m_client[sock].socket.Receive(buffer, 24, recv_size);
|
||||
|
||||
Event->AppendText(wxString::Format(wxT("> Your IP is : %s\n"), buffer));
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x30: // Chat message
|
||||
{
|
||||
buffer = new char[1024];
|
||||
|
||||
m_client[sock].socket.Receive((char*)&four_bytes, 4, recv_size);
|
||||
m_client[sock].socket.Receive((char*)buffer, four_bytes + 1, recv_size);
|
||||
|
||||
if (recv_size > 1024)
|
||||
{
|
||||
//something wrong...
|
||||
delete[] buffer;
|
||||
return;
|
||||
}
|
||||
|
||||
sent = 0x30;
|
||||
// Send to all
|
||||
for (int i=0; i < m_numplayers ; i++)
|
||||
{
|
||||
if (i == sock)
|
||||
continue;
|
||||
|
||||
m_client[i].socket.Send((const char*)&sent, 1);
|
||||
|
||||
m_client[1].socket.Send((const char*)&four_bytes, 4);
|
||||
m_client[i].socket.Send(buffer, recv_size);
|
||||
}
|
||||
|
||||
Event->AppendText(wxString::FromAscii(buffer));
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x35: // Change game response received
|
||||
{
|
||||
// Receive isGameFound response (0x1F / 0x1A)
|
||||
m_client[sock].socket.Receive((char*)&sent, 1, recv_size);
|
||||
|
||||
// If game is not found
|
||||
if (sent != 0x1F)
|
||||
{
|
||||
sent = 0x30;
|
||||
|
||||
wxString error_str = wxString::Format(
|
||||
wxT("WARNING : Player %s does Not have this Game !\n"), m_client[sock].nick.c_str());
|
||||
four_bytes = (int)error_str.size();
|
||||
|
||||
for (int i=0; i < 2; i++)
|
||||
Event->AppendText(error_str);
|
||||
|
||||
// Send to all
|
||||
for (int i=0; i < m_numplayers ; i++)
|
||||
{
|
||||
if (i == sock)
|
||||
continue;
|
||||
m_client[i].socket.Send((const char*)&sent, 1);
|
||||
|
||||
m_client[i].socket.Send((const char*)&four_bytes, 4);
|
||||
m_client[i].socket.Send(error_str.mb_str(), four_bytes + 1);
|
||||
}
|
||||
}
|
||||
|
||||
break;
|
||||
}
|
||||
case 0x40: // Ready message received
|
||||
{
|
||||
std::string buffer_str;
|
||||
|
||||
m_client[sock].ready = !m_client[sock].ready;
|
||||
|
||||
if (m_client[sock].ready)
|
||||
buffer_str = ">> "+m_client[sock].nick+" is now ready !\n";
|
||||
else
|
||||
buffer_str = ">> "+m_client[sock].nick+" is now Unready !\n";
|
||||
|
||||
four_bytes = (int)buffer_str.size();
|
||||
|
||||
// Send to all
|
||||
for (int i=0; i < m_numplayers ; i++)
|
||||
{
|
||||
m_client[i].socket.Send((const char*)&data, 1);
|
||||
|
||||
m_client[i].socket.Send((const char*)&four_bytes, 4);
|
||||
m_client[i].socket.Send(buffer_str.c_str(), four_bytes+1);
|
||||
}
|
||||
|
||||
Event->AppendText(wxString::FromAscii(buffer_str.c_str()));
|
||||
IsEveryoneReady();
|
||||
|
||||
break;
|
||||
}
|
||||
case 0xA1: // Received pad data from a client
|
||||
{
|
||||
if (m_data_received)
|
||||
wxThread::Sleep(10);
|
||||
|
||||
m_client[sock].socket.Receive((char*)m_netvalues[sock], 8, recv_size);
|
||||
m_data_received = true;
|
||||
|
||||
#ifdef NET_DEBUG
|
||||
char sent[64];
|
||||
sprintf(sent, "Received Values: 0x%08x : 0x%08x \n", m_netvalues[sock][0], m_netvalues[sock][1]);
|
||||
Event->AppendText(wxString::FromAscii(sent));
|
||||
#endif
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
delete[] buffer;
|
||||
}
|
||||
|
||||
|
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
@ -1,317 +1,317 @@
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _NETWINDOW_H_
|
||||
#define _NETWINDOW_H_
|
||||
|
||||
#include <SFML/Network.hpp>
|
||||
#include <string>
|
||||
#include <wx/wx.h>
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/dialog.h>
|
||||
#include <wx/notebook.h>
|
||||
#include <wx/gbsizer.h>
|
||||
#include <wx/listbox.h>
|
||||
|
||||
#include <wx/thread.h>
|
||||
|
||||
#include "Globals.h"
|
||||
#include "BootManager.h"
|
||||
#include "Common.h"
|
||||
#include "Core.h"
|
||||
#include "pluginspecs_pad.h"
|
||||
#include "HW/SI.h"
|
||||
#include "HW/SI_Device.h"
|
||||
#include "HW/SI_DeviceGCController.h"
|
||||
#include "Timer.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define NET_DEBUG
|
||||
#endif
|
||||
|
||||
// Use TCP instead of UDP to send pad data @ 60fps. Suitable and better for LAN netplay,
|
||||
// Unrealistic for Internet netplay, unless you have an uberfast connexion (<10ms ping)
|
||||
// #define USE_TCP
|
||||
|
||||
class NetPlay;
|
||||
|
||||
struct Netpads {
|
||||
int nHi[128];
|
||||
int nLow[128];
|
||||
};
|
||||
|
||||
struct Clients {
|
||||
std::string nick;
|
||||
sf::SocketTCP socket;
|
||||
unsigned short port;
|
||||
sf::IPAddress address;
|
||||
bool ready;
|
||||
};
|
||||
|
||||
class NetEvent
|
||||
{
|
||||
public:
|
||||
NetEvent(NetPlay* netptr) { m_netptr = netptr; }
|
||||
~NetEvent() {};
|
||||
|
||||
void SendEvent(int EventType, std::string="NULL", int=NULL);
|
||||
void AppendText(const wxString text);
|
||||
|
||||
private:
|
||||
NetPlay *m_netptr;
|
||||
};
|
||||
|
||||
class ServerSide : public wxThread
|
||||
{
|
||||
public:
|
||||
ServerSide(NetPlay* netptr, sf::SocketTCP, sf::SocketUDP, int netmodel, std::string nick);
|
||||
~ServerSide() {};
|
||||
|
||||
virtual void *Entry();
|
||||
|
||||
void Write(int socknb, const char *data, size_t size, long *ping=NULL);
|
||||
void WriteUDP(int socknb, const char *data, size_t size);
|
||||
bool isNewPadData(u32 *netValues, bool current, int client=0);
|
||||
|
||||
private:
|
||||
bool SyncValues(unsigned char, sf::IPAddress);
|
||||
bool RecvT(sf::SocketUDP Socket, char * Data, size_t Max, size_t& Recvd, float Time = 0);
|
||||
char GetSocket(sf::SocketTCP Socket);
|
||||
void OnServerData(int sock, unsigned char data);
|
||||
void IsEveryoneReady();
|
||||
|
||||
NetPlay *m_netptr;
|
||||
NetEvent *Event;
|
||||
|
||||
u32 m_netvalues[3][3];
|
||||
bool m_data_received; // New Pad data received ?
|
||||
|
||||
unsigned char m_numplayers;
|
||||
int m_netmodel;
|
||||
std::string m_nick;
|
||||
|
||||
Clients m_client[3]; // Connected client objects
|
||||
sf::SelectorTCP m_selector;
|
||||
sf::SocketTCP m_socket; // Server 'listening' socket
|
||||
sf::SocketUDP m_socketUDP;
|
||||
|
||||
wxCriticalSection m_CriticalSection;
|
||||
};
|
||||
|
||||
class ClientSide : public wxThread
|
||||
{
|
||||
public:
|
||||
ClientSide(NetPlay* netptr, sf::SocketTCP, sf::SocketUDP, std::string addr, std::string nick);
|
||||
~ClientSide() {}
|
||||
|
||||
virtual void *Entry();
|
||||
|
||||
void Write(const char *data, size_t size, long *ping=NULL);
|
||||
void WriteUDP(const char *data, size_t size);
|
||||
bool isNewPadData(u32 *netValues, bool current, bool isVersus=true);
|
||||
|
||||
private:
|
||||
bool SyncValues();
|
||||
void CheckGameFound();
|
||||
void OnClientData(unsigned char data);
|
||||
bool RecvT(sf::SocketUDP Socket, char * Data, size_t Max, size_t& Recvd, float Time=0);
|
||||
|
||||
NetPlay *m_netptr;
|
||||
NetEvent *Event;
|
||||
|
||||
u32 m_netvalues[3][3];
|
||||
bool m_data_received; // New Pad data received ?
|
||||
|
||||
unsigned char m_numplayers;
|
||||
int m_netmodel;
|
||||
std::string m_nick;
|
||||
std::string m_hostnick;
|
||||
std::string m_selectedgame;
|
||||
|
||||
sf::SelectorTCP m_selector;
|
||||
sf::SocketTCP m_socket; // Client I/O socket
|
||||
sf::SocketUDP m_socketUDP;
|
||||
unsigned short m_port;
|
||||
std::string m_addr; // Contains the server addr
|
||||
|
||||
wxCriticalSection m_CriticalSection;
|
||||
};
|
||||
|
||||
class NetPlay : public wxFrame
|
||||
{
|
||||
public:
|
||||
NetPlay(wxWindow* parent, std::string GamePath = "", std::string GameName = "");
|
||||
~NetPlay();
|
||||
|
||||
void UpdateNetWindow(bool update_infos, wxString=wxT("NULL"));
|
||||
void AppendText(const wxString text) { m_Logging->AppendText(text); }
|
||||
|
||||
// Send and receive pads values
|
||||
bool GetNetPads(u8 pad_nb, SPADStatus, u32 *netvalues);
|
||||
void ChangeSelectedGame(std::string game);
|
||||
void IsGameFound(unsigned char*, std::string);
|
||||
std::string GetSelectedGame() { wxCriticalSectionLocker lock(m_critical); return m_selectedGame; }
|
||||
|
||||
void LoadGame();
|
||||
|
||||
protected:
|
||||
// Protects our vars from being fuxored by threads
|
||||
wxCriticalSection m_critical;
|
||||
|
||||
// this draws the GUI, ya rly
|
||||
void DrawGUI();
|
||||
void DrawNetWindow();
|
||||
|
||||
// event handlers
|
||||
void OnGUIEvent(wxCommandEvent& event);
|
||||
void OnDisconnect(wxCommandEvent& event);
|
||||
void OnNetEvent(wxCommandEvent& event);
|
||||
void OnQuit(wxCloseEvent& event);
|
||||
|
||||
void OnJoin(wxCommandEvent& event);
|
||||
void OnHost(wxCommandEvent& event);
|
||||
|
||||
// Net play vars (used ingame)
|
||||
int m_frame;
|
||||
int m_lastframe;
|
||||
Common::Timer m_timer;
|
||||
int m_loopframe;
|
||||
int m_frameDelay;
|
||||
bool m_data_received;// True if first frame data received
|
||||
|
||||
// Basic vars
|
||||
std::string m_paths; // Game paths list
|
||||
std::string m_games; // Game names list
|
||||
|
||||
std::string m_selectedGame;// Selected game's string
|
||||
std::string m_hostaddr; // Used with OnGetIP to cache it
|
||||
bool m_ready, m_clients_ready;
|
||||
std::string m_nick;
|
||||
|
||||
int m_NetModel; // Using P2P model (0) or Server model (1)
|
||||
int m_isHosting; // 0 = false ; 1 = true ; 2 = Not set
|
||||
unsigned char m_numClients; // starting from 0, 4 players max thus 3 clients
|
||||
std::string m_address; // The address entered into connection box
|
||||
unsigned short m_port;
|
||||
|
||||
Netpads m_pads[4]; // this struct is used to save synced pad values
|
||||
IniFile ConfigIni;
|
||||
|
||||
// Sockets objects
|
||||
ServerSide *m_sock_server;
|
||||
ClientSide *m_sock_client;
|
||||
|
||||
// -----------
|
||||
// GUI objects
|
||||
// -----------
|
||||
wxNotebook *m_Notebook;
|
||||
wxPanel *m_Tab_Connect;
|
||||
wxPanel *m_Tab_Host;
|
||||
wxStaticText *m_SetNick_text;
|
||||
wxTextCtrl *m_SetNick;
|
||||
wxChoice *m_NetMode;
|
||||
|
||||
// Host tab :
|
||||
wxArrayString m_GameList_str;
|
||||
wxStaticText *m_GameList_text;
|
||||
wxListBox *m_GameList;
|
||||
wxStaticText *m_SetPort_text;
|
||||
wxTextCtrl *m_SetPort;
|
||||
wxButton *m_HostGame;
|
||||
|
||||
// Connect tab :
|
||||
wxTextCtrl *m_ConAddr;
|
||||
wxStaticText *m_ConAddr_text;
|
||||
wxButton *m_JoinGame;
|
||||
wxCheckBox *m_UseRandomPort;
|
||||
|
||||
// Connection window
|
||||
wxButton *m_Game_str;
|
||||
wxTextCtrl *m_Logging;
|
||||
wxTextCtrl *m_Chat;
|
||||
wxButton *m_Chat_ok;
|
||||
// Right part
|
||||
wxButton *m_wtfismyip;
|
||||
wxButton *m_ChangeGame;
|
||||
// Left Part
|
||||
wxButton *m_Disconnect;
|
||||
wxStaticText *m_ConInfo_text;
|
||||
wxButton *m_GetPing;
|
||||
wxCheckBox *m_Ready;
|
||||
wxCheckBox *m_RecordGame;
|
||||
|
||||
// wxWidgets event table
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
class GameListPopup : public wxDialog
|
||||
{
|
||||
public:
|
||||
GameListPopup(NetPlay *net_ptr, wxArrayString GameNames);
|
||||
~GameListPopup() {}
|
||||
protected:
|
||||
void OnButtons(wxCommandEvent& event);
|
||||
wxArrayString m_GameList_str;
|
||||
NetPlay* m_netParent;
|
||||
wxListBox *m_GameList;
|
||||
wxButton *m_Accept;
|
||||
wxButton *m_Cancel;
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
ID_NOTEBOOK,
|
||||
ID_TAB_HOST,
|
||||
ID_TAB_CONN,
|
||||
ID_BUTTON_HOST,
|
||||
ID_BUTTON_JOIN,
|
||||
ID_NETMODE,
|
||||
ID_GAMELIST,
|
||||
ID_LOGGING_TXT,
|
||||
ID_CHAT,
|
||||
ID_SETNICK,
|
||||
ID_SETPORT,
|
||||
ID_CONNADDR,
|
||||
ID_CONNINFO_TXT,
|
||||
ID_USE_RANDOMPORT,
|
||||
ID_BUTTON_GETPING,
|
||||
ID_BUTTON_GETIP,
|
||||
ID_CHANGEGAME,
|
||||
ID_BUTTON_QUIT,
|
||||
ID_BUTTON_CHAT,
|
||||
ID_READY,
|
||||
ID_RECORD,
|
||||
|
||||
ID_SOCKET,
|
||||
ID_SERVER,
|
||||
|
||||
HOST_FULL = 200, // ...
|
||||
HOST_ERROR, // Sent on socket error
|
||||
HOST_DISCONNECTED,
|
||||
HOST_NEWPLAYER,
|
||||
HOST_PLAYERLEFT,
|
||||
CLIENTS_READY,
|
||||
CLIENTS_NOTREADY,
|
||||
GUI_UPDATE, // Refresh the shown selectedgame on GUI
|
||||
ADD_TEXT, // Add text to m_Logging (string)
|
||||
ADD_INFO, // Sent when updating net infos (string)
|
||||
NET_EVENT
|
||||
};
|
||||
|
||||
#endif // _NETWINDOW_H_
|
||||
|
||||
// Copyright (C) 2003-2009 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef _NETWINDOW_H_
|
||||
#define _NETWINDOW_H_
|
||||
|
||||
#include <SFML/Network.hpp>
|
||||
#include <string>
|
||||
#include <wx/wx.h>
|
||||
#include <wx/sizer.h>
|
||||
#include <wx/dialog.h>
|
||||
#include <wx/notebook.h>
|
||||
#include <wx/gbsizer.h>
|
||||
#include <wx/listbox.h>
|
||||
|
||||
#include <wx/thread.h>
|
||||
|
||||
#include "Globals.h"
|
||||
#include "BootManager.h"
|
||||
#include "Common.h"
|
||||
#include "Core.h"
|
||||
#include "pluginspecs_pad.h"
|
||||
#include "HW/SI.h"
|
||||
#include "HW/SI_Device.h"
|
||||
#include "HW/SI_DeviceGCController.h"
|
||||
#include "Timer.h"
|
||||
|
||||
#ifdef _DEBUG
|
||||
#define NET_DEBUG
|
||||
#endif
|
||||
|
||||
// Use TCP instead of UDP to send pad data @ 60fps. Suitable and better for LAN netplay,
|
||||
// Unrealistic for Internet netplay, unless you have an uberfast connexion (<10ms ping)
|
||||
// #define USE_TCP
|
||||
|
||||
class NetPlay;
|
||||
|
||||
struct Netpads {
|
||||
int nHi[128];
|
||||
int nLow[128];
|
||||
};
|
||||
|
||||
struct Clients {
|
||||
std::string nick;
|
||||
sf::SocketTCP socket;
|
||||
unsigned short port;
|
||||
sf::IPAddress address;
|
||||
bool ready;
|
||||
};
|
||||
|
||||
class NetEvent
|
||||
{
|
||||
public:
|
||||
NetEvent(NetPlay* netptr) { m_netptr = netptr; }
|
||||
~NetEvent() {};
|
||||
|
||||
void SendEvent(int EventType, std::string="NULL", int=NULL);
|
||||
void AppendText(const wxString text);
|
||||
|
||||
private:
|
||||
NetPlay *m_netptr;
|
||||
};
|
||||
|
||||
class ServerSide : public wxThread
|
||||
{
|
||||
public:
|
||||
ServerSide(NetPlay* netptr, sf::SocketTCP, sf::SocketUDP, int netmodel, std::string nick);
|
||||
~ServerSide() {};
|
||||
|
||||
virtual void *Entry();
|
||||
|
||||
void Write(int socknb, const char *data, size_t size, long *ping=NULL);
|
||||
void WriteUDP(int socknb, const char *data, size_t size);
|
||||
bool isNewPadData(u32 *netValues, bool current, int client=0);
|
||||
|
||||
private:
|
||||
bool SyncValues(unsigned char, sf::IPAddress);
|
||||
bool RecvT(sf::SocketUDP Socket, char * Data, size_t Max, size_t& Recvd, float Time = 0);
|
||||
char GetSocket(sf::SocketTCP Socket);
|
||||
void OnServerData(int sock, unsigned char data);
|
||||
void IsEveryoneReady();
|
||||
|
||||
NetPlay *m_netptr;
|
||||
NetEvent *Event;
|
||||
|
||||
u32 m_netvalues[3][3];
|
||||
bool m_data_received; // New Pad data received ?
|
||||
|
||||
unsigned char m_numplayers;
|
||||
int m_netmodel;
|
||||
std::string m_nick;
|
||||
|
||||
Clients m_client[3]; // Connected client objects
|
||||
sf::SelectorTCP m_selector;
|
||||
sf::SocketTCP m_socket; // Server 'listening' socket
|
||||
sf::SocketUDP m_socketUDP;
|
||||
|
||||
wxCriticalSection m_CriticalSection;
|
||||
};
|
||||
|
||||
class ClientSide : public wxThread
|
||||
{
|
||||
public:
|
||||
ClientSide(NetPlay* netptr, sf::SocketTCP, sf::SocketUDP, std::string addr, std::string nick);
|
||||
~ClientSide() {}
|
||||
|
||||
virtual void *Entry();
|
||||
|
||||
void Write(const char *data, size_t size, long *ping=NULL);
|
||||
void WriteUDP(const char *data, size_t size);
|
||||
bool isNewPadData(u32 *netValues, bool current, bool isVersus=true);
|
||||
|
||||
private:
|
||||
bool SyncValues();
|
||||
void CheckGameFound();
|
||||
void OnClientData(unsigned char data);
|
||||
bool RecvT(sf::SocketUDP Socket, char * Data, size_t Max, size_t& Recvd, float Time=0);
|
||||
|
||||
NetPlay *m_netptr;
|
||||
NetEvent *Event;
|
||||
|
||||
u32 m_netvalues[3][3];
|
||||
bool m_data_received; // New Pad data received ?
|
||||
|
||||
unsigned char m_numplayers;
|
||||
int m_netmodel;
|
||||
std::string m_nick;
|
||||
std::string m_hostnick;
|
||||
std::string m_selectedgame;
|
||||
|
||||
sf::SelectorTCP m_selector;
|
||||
sf::SocketTCP m_socket; // Client I/O socket
|
||||
sf::SocketUDP m_socketUDP;
|
||||
unsigned short m_port;
|
||||
std::string m_addr; // Contains the server addr
|
||||
|
||||
wxCriticalSection m_CriticalSection;
|
||||
};
|
||||
|
||||
class NetPlay : public wxFrame
|
||||
{
|
||||
public:
|
||||
NetPlay(wxWindow* parent, std::string GamePath = "", std::string GameName = "");
|
||||
~NetPlay();
|
||||
|
||||
void UpdateNetWindow(bool update_infos, wxString=wxT("NULL"));
|
||||
void AppendText(const wxString text) { m_Logging->AppendText(text); }
|
||||
|
||||
// Send and receive pads values
|
||||
bool GetNetPads(u8 pad_nb, SPADStatus, u32 *netvalues);
|
||||
void ChangeSelectedGame(std::string game);
|
||||
void IsGameFound(unsigned char*, std::string);
|
||||
std::string GetSelectedGame() { wxCriticalSectionLocker lock(m_critical); return m_selectedGame; }
|
||||
|
||||
void LoadGame();
|
||||
|
||||
protected:
|
||||
// Protects our vars from being fuxored by threads
|
||||
wxCriticalSection m_critical;
|
||||
|
||||
// this draws the GUI, ya rly
|
||||
void DrawGUI();
|
||||
void DrawNetWindow();
|
||||
|
||||
// event handlers
|
||||
void OnGUIEvent(wxCommandEvent& event);
|
||||
void OnDisconnect(wxCommandEvent& event);
|
||||
void OnNetEvent(wxCommandEvent& event);
|
||||
void OnQuit(wxCloseEvent& event);
|
||||
|
||||
void OnJoin(wxCommandEvent& event);
|
||||
void OnHost(wxCommandEvent& event);
|
||||
|
||||
// Net play vars (used ingame)
|
||||
int m_frame;
|
||||
int m_lastframe;
|
||||
Common::Timer m_timer;
|
||||
int m_loopframe;
|
||||
int m_frameDelay;
|
||||
bool m_data_received;// True if first frame data received
|
||||
|
||||
// Basic vars
|
||||
std::string m_paths; // Game paths list
|
||||
std::string m_games; // Game names list
|
||||
|
||||
std::string m_selectedGame;// Selected game's string
|
||||
std::string m_hostaddr; // Used with OnGetIP to cache it
|
||||
bool m_ready, m_clients_ready;
|
||||
std::string m_nick;
|
||||
|
||||
int m_NetModel; // Using P2P model (0) or Server model (1)
|
||||
int m_isHosting; // 0 = false ; 1 = true ; 2 = Not set
|
||||
unsigned char m_numClients; // starting from 0, 4 players max thus 3 clients
|
||||
std::string m_address; // The address entered into connection box
|
||||
unsigned short m_port;
|
||||
|
||||
Netpads m_pads[4]; // this struct is used to save synced pad values
|
||||
IniFile ConfigIni;
|
||||
|
||||
// Sockets objects
|
||||
ServerSide *m_sock_server;
|
||||
ClientSide *m_sock_client;
|
||||
|
||||
// -----------
|
||||
// GUI objects
|
||||
// -----------
|
||||
wxNotebook *m_Notebook;
|
||||
wxPanel *m_Tab_Connect;
|
||||
wxPanel *m_Tab_Host;
|
||||
wxStaticText *m_SetNick_text;
|
||||
wxTextCtrl *m_SetNick;
|
||||
wxChoice *m_NetMode;
|
||||
|
||||
// Host tab :
|
||||
wxArrayString m_GameList_str;
|
||||
wxStaticText *m_GameList_text;
|
||||
wxListBox *m_GameList;
|
||||
wxStaticText *m_SetPort_text;
|
||||
wxTextCtrl *m_SetPort;
|
||||
wxButton *m_HostGame;
|
||||
|
||||
// Connect tab :
|
||||
wxTextCtrl *m_ConAddr;
|
||||
wxStaticText *m_ConAddr_text;
|
||||
wxButton *m_JoinGame;
|
||||
wxCheckBox *m_UseRandomPort;
|
||||
|
||||
// Connection window
|
||||
wxButton *m_Game_str;
|
||||
wxTextCtrl *m_Logging;
|
||||
wxTextCtrl *m_Chat;
|
||||
wxButton *m_Chat_ok;
|
||||
// Right part
|
||||
wxButton *m_wtfismyip;
|
||||
wxButton *m_ChangeGame;
|
||||
// Left Part
|
||||
wxButton *m_Disconnect;
|
||||
wxStaticText *m_ConInfo_text;
|
||||
wxButton *m_GetPing;
|
||||
wxCheckBox *m_Ready;
|
||||
wxCheckBox *m_RecordGame;
|
||||
|
||||
// wxWidgets event table
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
class GameListPopup : public wxDialog
|
||||
{
|
||||
public:
|
||||
GameListPopup(NetPlay *net_ptr, wxArrayString GameNames);
|
||||
~GameListPopup() {}
|
||||
protected:
|
||||
void OnButtons(wxCommandEvent& event);
|
||||
wxArrayString m_GameList_str;
|
||||
NetPlay* m_netParent;
|
||||
wxListBox *m_GameList;
|
||||
wxButton *m_Accept;
|
||||
wxButton *m_Cancel;
|
||||
DECLARE_EVENT_TABLE()
|
||||
};
|
||||
|
||||
enum
|
||||
{
|
||||
ID_NOTEBOOK,
|
||||
ID_TAB_HOST,
|
||||
ID_TAB_CONN,
|
||||
ID_BUTTON_HOST,
|
||||
ID_BUTTON_JOIN,
|
||||
ID_NETMODE,
|
||||
ID_GAMELIST,
|
||||
ID_LOGGING_TXT,
|
||||
ID_CHAT,
|
||||
ID_SETNICK,
|
||||
ID_SETPORT,
|
||||
ID_CONNADDR,
|
||||
ID_CONNINFO_TXT,
|
||||
ID_USE_RANDOMPORT,
|
||||
ID_BUTTON_GETPING,
|
||||
ID_BUTTON_GETIP,
|
||||
ID_CHANGEGAME,
|
||||
ID_BUTTON_QUIT,
|
||||
ID_BUTTON_CHAT,
|
||||
ID_READY,
|
||||
ID_RECORD,
|
||||
|
||||
ID_SOCKET,
|
||||
ID_SERVER,
|
||||
|
||||
HOST_FULL = 200, // ...
|
||||
HOST_ERROR, // Sent on socket error
|
||||
HOST_DISCONNECTED,
|
||||
HOST_NEWPLAYER,
|
||||
HOST_PLAYERLEFT,
|
||||
CLIENTS_READY,
|
||||
CLIENTS_NOTREADY,
|
||||
GUI_UPDATE, // Refresh the shown selectedgame on GUI
|
||||
ADD_TEXT, // Add text to m_Logging (string)
|
||||
ADD_INFO, // Sent when updating net infos (string)
|
||||
NET_EVENT
|
||||
};
|
||||
|
||||
#endif // _NETWINDOW_H_
|
||||
|
||||
|
@ -1,127 +1,127 @@
|
||||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef __SUMMARIZE_H__
|
||||
#define __SUMMARIZE_H__
|
||||
|
||||
std::string Summarize_Plug()
|
||||
{
|
||||
return StringFromFormat(
|
||||
"Plugin Information\n\n"
|
||||
"Default GFX Plugin: %s\n"
|
||||
"Default DSP Plugin: %s\n"
|
||||
"Default PAD Plugin: %s\n"
|
||||
"Default WiiMote Plugin: %s\n\n"
|
||||
"Current GFX Plugin: %s\n"
|
||||
"Current DSP Plugin: %s\n"
|
||||
"Current PAD Plugin[0]: %s\n"
|
||||
"Current PAD Plugin[1]: %s\n"
|
||||
"Current PAD Plugin[2]: %s\n"
|
||||
"Current PAD Plugin[3]: %s\n"
|
||||
"Current WiiMote Plugin[0]: %s\n",
|
||||
SConfig::GetInstance().m_DefaultGFXPlugin.c_str(),
|
||||
SConfig::GetInstance().m_DefaultDSPPlugin.c_str(),
|
||||
SConfig::GetInstance().m_DefaultPADPlugin.c_str(),
|
||||
SConfig::GetInstance().m_DefaultWiiMotePlugin.c_str(),
|
||||
Core::GetStartupParameter().m_strVideoPlugin.c_str(),
|
||||
Core::GetStartupParameter().m_strDSPPlugin.c_str(),
|
||||
Core::GetStartupParameter().m_strPadPlugin[0].c_str(),
|
||||
Core::GetStartupParameter().m_strPadPlugin[1].c_str(),
|
||||
Core::GetStartupParameter().m_strPadPlugin[2].c_str(),
|
||||
Core::GetStartupParameter().m_strPadPlugin[3].c_str(),
|
||||
Core::GetStartupParameter().m_strWiimotePlugin[0].c_str()
|
||||
);
|
||||
}
|
||||
|
||||
std::string Summarize_Settings()
|
||||
{
|
||||
return StringFromFormat(
|
||||
"Dolphin Settings\n\n"
|
||||
"Always HLE Bios: %s\n"
|
||||
"Use Dynarec: %s\n"
|
||||
"Use Dual Core: %s\n"
|
||||
"DSP Thread: %s\n"
|
||||
"Skip Idle: %s\n"
|
||||
"Lock Threads: %s\n"
|
||||
"Use Dual Core: %s\n"
|
||||
"Default GCM: %s\n"
|
||||
"DVD Root: %s\n"
|
||||
"Optimize Quantizers: %s\n"
|
||||
"Enable Cheats: %s\n"
|
||||
"Selected Language: %d\n"
|
||||
"Memcard A: %s\n"
|
||||
"Memcard B: %s\n"
|
||||
"Slot A: %d\n"
|
||||
"Slot B: %d\n"
|
||||
"Serial Port 1: %d\n"
|
||||
"Run Compare Server: %s\n"
|
||||
"Run Compare Client: %s\n"
|
||||
"TLB Hack: %s\n"
|
||||
"Frame Limit: %d\n"
|
||||
"[Wii]Widescreen: %s\n"
|
||||
"[Wii]Progressive Scan: %s\n",
|
||||
Core::GetStartupParameter().bHLEBios?"True":"False",
|
||||
Core::GetStartupParameter().bUseJIT?"True":"False",
|
||||
Core::GetStartupParameter().bUseDualCore?"True":"False",
|
||||
Core::GetStartupParameter().bDSPThread?"True":"False",
|
||||
Core::GetStartupParameter().bSkipIdle?"True":"False",
|
||||
Core::GetStartupParameter().bLockThreads?"True":"False",
|
||||
Core::GetStartupParameter().bUseDualCore?"True":"False",
|
||||
Core::GetStartupParameter().m_strDefaultGCM.c_str(),
|
||||
Core::GetStartupParameter().m_strDVDRoot.c_str(),
|
||||
Core::GetStartupParameter().bOptimizeQuantizers?"True":"False",
|
||||
Core::GetStartupParameter().bEnableCheats?"True":"False",
|
||||
Core::GetStartupParameter().SelectedLanguage, //FIXME show language based on index
|
||||
SConfig::GetInstance().m_strMemoryCardA.c_str(),
|
||||
SConfig::GetInstance().m_strMemoryCardB.c_str(),
|
||||
SConfig::GetInstance().m_EXIDevice[0], //FIXME
|
||||
SConfig::GetInstance().m_EXIDevice[1], //FIXME
|
||||
SConfig::GetInstance().m_EXIDevice[2], //FIXME
|
||||
Core::GetStartupParameter().bRunCompareServer?"True":"False",
|
||||
Core::GetStartupParameter().bRunCompareClient?"True":"False",
|
||||
Core::GetStartupParameter().iTLBHack?"True":"False",
|
||||
SConfig::GetInstance().m_Framelimit*5,
|
||||
Core::GetStartupParameter().bWidescreen?"True":"False",
|
||||
Core::GetStartupParameter().bProgressiveScan?"True":"False"
|
||||
);
|
||||
}
|
||||
|
||||
std::string Summarize_CPU()
|
||||
{
|
||||
return StringFromFormat(
|
||||
"Processor Information: \n%s\n",
|
||||
cpu_info.Summarize().c_str()
|
||||
);
|
||||
}
|
||||
|
||||
std::string Summarize_Drives()
|
||||
{
|
||||
char ** drives = cdio_get_devices();
|
||||
std::string drive;
|
||||
for (int i = 0; drives[i] != NULL && i < 24; i++)
|
||||
{
|
||||
|
||||
drive += StringFromFormat(
|
||||
"CD/DVD Drive%d: %s\n",
|
||||
i+1,
|
||||
drives[i]
|
||||
);
|
||||
}
|
||||
return drive;
|
||||
}
|
||||
|
||||
// Copyright (C) 2003-2008 Dolphin Project.
|
||||
|
||||
// This program is free software: you can redistribute it and/or modify
|
||||
// it under the terms of the GNU General Public License as published by
|
||||
// the Free Software Foundation, version 2.0.
|
||||
|
||||
// This program is distributed in the hope that it will be useful,
|
||||
// but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
// GNU General Public License 2.0 for more details.
|
||||
|
||||
// A copy of the GPL 2.0 should have been included with the program.
|
||||
// If not, see http://www.gnu.org/licenses/
|
||||
|
||||
// Official SVN repository and contact information can be found at
|
||||
// http://code.google.com/p/dolphin-emu/
|
||||
|
||||
#ifndef __SUMMARIZE_H__
|
||||
#define __SUMMARIZE_H__
|
||||
|
||||
std::string Summarize_Plug()
|
||||
{
|
||||
return StringFromFormat(
|
||||
"Plugin Information\n\n"
|
||||
"Default GFX Plugin: %s\n"
|
||||
"Default DSP Plugin: %s\n"
|
||||
"Default PAD Plugin: %s\n"
|
||||
"Default WiiMote Plugin: %s\n\n"
|
||||
"Current GFX Plugin: %s\n"
|
||||
"Current DSP Plugin: %s\n"
|
||||
"Current PAD Plugin[0]: %s\n"
|
||||
"Current PAD Plugin[1]: %s\n"
|
||||
"Current PAD Plugin[2]: %s\n"
|
||||
"Current PAD Plugin[3]: %s\n"
|
||||
"Current WiiMote Plugin[0]: %s\n",
|
||||
SConfig::GetInstance().m_DefaultGFXPlugin.c_str(),
|
||||
SConfig::GetInstance().m_DefaultDSPPlugin.c_str(),
|
||||
SConfig::GetInstance().m_DefaultPADPlugin.c_str(),
|
||||
SConfig::GetInstance().m_DefaultWiiMotePlugin.c_str(),
|
||||
Core::GetStartupParameter().m_strVideoPlugin.c_str(),
|
||||
Core::GetStartupParameter().m_strDSPPlugin.c_str(),
|
||||
Core::GetStartupParameter().m_strPadPlugin[0].c_str(),
|
||||
Core::GetStartupParameter().m_strPadPlugin[1].c_str(),
|
||||
Core::GetStartupParameter().m_strPadPlugin[2].c_str(),
|
||||
Core::GetStartupParameter().m_strPadPlugin[3].c_str(),
|
||||
Core::GetStartupParameter().m_strWiimotePlugin[0].c_str()
|
||||
);
|
||||
}
|
||||
|
||||
std::string Summarize_Settings()
|
||||
{
|
||||
return StringFromFormat(
|
||||
"Dolphin Settings\n\n"
|
||||
"Always HLE Bios: %s\n"
|
||||
"Use Dynarec: %s\n"
|
||||
"Use Dual Core: %s\n"
|
||||
"DSP Thread: %s\n"
|
||||
"Skip Idle: %s\n"
|
||||
"Lock Threads: %s\n"
|
||||
"Use Dual Core: %s\n"
|
||||
"Default GCM: %s\n"
|
||||
"DVD Root: %s\n"
|
||||
"Optimize Quantizers: %s\n"
|
||||
"Enable Cheats: %s\n"
|
||||
"Selected Language: %d\n"
|
||||
"Memcard A: %s\n"
|
||||
"Memcard B: %s\n"
|
||||
"Slot A: %d\n"
|
||||
"Slot B: %d\n"
|
||||
"Serial Port 1: %d\n"
|
||||
"Run Compare Server: %s\n"
|
||||
"Run Compare Client: %s\n"
|
||||
"TLB Hack: %s\n"
|
||||
"Frame Limit: %d\n"
|
||||
"[Wii]Widescreen: %s\n"
|
||||
"[Wii]Progressive Scan: %s\n",
|
||||
Core::GetStartupParameter().bHLEBios?"True":"False",
|
||||
Core::GetStartupParameter().bUseJIT?"True":"False",
|
||||
Core::GetStartupParameter().bUseDualCore?"True":"False",
|
||||
Core::GetStartupParameter().bDSPThread?"True":"False",
|
||||
Core::GetStartupParameter().bSkipIdle?"True":"False",
|
||||
Core::GetStartupParameter().bLockThreads?"True":"False",
|
||||
Core::GetStartupParameter().bUseDualCore?"True":"False",
|
||||
Core::GetStartupParameter().m_strDefaultGCM.c_str(),
|
||||
Core::GetStartupParameter().m_strDVDRoot.c_str(),
|
||||
Core::GetStartupParameter().bOptimizeQuantizers?"True":"False",
|
||||
Core::GetStartupParameter().bEnableCheats?"True":"False",
|
||||
Core::GetStartupParameter().SelectedLanguage, //FIXME show language based on index
|
||||
SConfig::GetInstance().m_strMemoryCardA.c_str(),
|
||||
SConfig::GetInstance().m_strMemoryCardB.c_str(),
|
||||
SConfig::GetInstance().m_EXIDevice[0], //FIXME
|
||||
SConfig::GetInstance().m_EXIDevice[1], //FIXME
|
||||
SConfig::GetInstance().m_EXIDevice[2], //FIXME
|
||||
Core::GetStartupParameter().bRunCompareServer?"True":"False",
|
||||
Core::GetStartupParameter().bRunCompareClient?"True":"False",
|
||||
Core::GetStartupParameter().iTLBHack?"True":"False",
|
||||
SConfig::GetInstance().m_Framelimit*5,
|
||||
Core::GetStartupParameter().bWidescreen?"True":"False",
|
||||
Core::GetStartupParameter().bProgressiveScan?"True":"False"
|
||||
);
|
||||
}
|
||||
|
||||
std::string Summarize_CPU()
|
||||
{
|
||||
return StringFromFormat(
|
||||
"Processor Information: \n%s\n",
|
||||
cpu_info.Summarize().c_str()
|
||||
);
|
||||
}
|
||||
|
||||
std::string Summarize_Drives()
|
||||
{
|
||||
char ** drives = cdio_get_devices();
|
||||
std::string drive;
|
||||
for (int i = 0; drives[i] != NULL && i < 24; i++)
|
||||
{
|
||||
|
||||
drive += StringFromFormat(
|
||||
"CD/DVD Drive%d: %s\n",
|
||||
i+1,
|
||||
drives[i]
|
||||
);
|
||||
}
|
||||
return drive;
|
||||
}
|
||||
|
||||
#endif //__SUMMARIZE_H__
|
@ -1,129 +1,129 @@
|
||||
/* XPM */
|
||||
static const char *Dolphin_xpm[] = {
|
||||
"32 32 94 2",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #1A496C",
|
||||
"@ c #091A27",
|
||||
"# c #3AA4F0",
|
||||
"$ c #3AA3EF",
|
||||
"% c #3CA1EA",
|
||||
"& c #1A4A6D",
|
||||
"* c #3AA2ED",
|
||||
"= c #F7FAFA",
|
||||
"- c #FFFFFF",
|
||||
"; c #FDFDFD",
|
||||
"> c #49A1E0",
|
||||
", c #3BA2EC",
|
||||
"' c #FBFDFC",
|
||||
") c #FEFFFD",
|
||||
"! c #4EA3E0",
|
||||
"~ c #3DA1E9",
|
||||
"{ c #D1E1EB",
|
||||
"] c #8ABBDE",
|
||||
"^ c #F2F6F7",
|
||||
"/ c #FAFBFC",
|
||||
"( c #CEDEEA",
|
||||
"_ c #E5EEF2",
|
||||
": c #BBD2E1",
|
||||
"< c #B3CFE5",
|
||||
"[ c #FFFFFE",
|
||||
"} c #FEFFFE",
|
||||
"| c #E8F0F3",
|
||||
"1 c #E4ECF1",
|
||||
"2 c #E5EDF0",
|
||||
"3 c #E9F0F3",
|
||||
"4 c #FEFEFE",
|
||||
"5 c #F9FBFB",
|
||||
"6 c #B0CCE0",
|
||||
"7 c #FEFEFF",
|
||||
"8 c #F9FAFB",
|
||||
"9 c #43A1E4",
|
||||
"0 c #EFF3F6",
|
||||
"a c #F0F5F7",
|
||||
"b c #97C1DE",
|
||||
"c c #FEFEFD",
|
||||
"d c #FDFDFC",
|
||||
"e c #97BEDB",
|
||||
"f c #FBFCFC",
|
||||
"g c #EDF3F6",
|
||||
"h c #6EADDA",
|
||||
"i c #F3F6F8",
|
||||
"j c #3BA1EA",
|
||||
"k c #6EADDB",
|
||||
"l c #F4F8F9",
|
||||
"m c #F1F6F7",
|
||||
"n c #3FA1E7",
|
||||
"o c #9BC1DD",
|
||||
"p c #FCFDFC",
|
||||
"q c #FBFDFB",
|
||||
"r c #B9D1E1",
|
||||
"s c #E0EBF2",
|
||||
"t c #D3E3EF",
|
||||
"u c #FFFEFE",
|
||||
"v c #F2F7F7",
|
||||
"w c #D5E4F0",
|
||||
"x c #F6F9F9",
|
||||
"y c #BDD5E5",
|
||||
"z c #EBF1F4",
|
||||
"A c #DEEAF2",
|
||||
"B c #AAC9DE",
|
||||
"C c #FEFFFF",
|
||||
"D c #EFF4F6",
|
||||
"E c #F8FAFB",
|
||||
"F c #A0C4E1",
|
||||
"G c #D6E5F0",
|
||||
"H c #FAFCFC",
|
||||
"I c #BDD5E7",
|
||||
"J c #EEF3F7",
|
||||
"K c #F3F7FA",
|
||||
"L c #C7D8E4",
|
||||
"M c #CDDEEC",
|
||||
"N c #DAE6ED",
|
||||
"O c #9AC2DF",
|
||||
"P c #E8EFF4",
|
||||
"Q c #ACCDE3",
|
||||
"R c #8DBBDC",
|
||||
"S c #D5E3EB",
|
||||
"T c #FDFFFE",
|
||||
"U c #FCFDFD",
|
||||
"V c #FEFDFD",
|
||||
"W c #F7F9FA",
|
||||
"X c #FDFEFD",
|
||||
"Y c #E7EFF4",
|
||||
"Z c #A4C7E0",
|
||||
"` c #F9FDFB",
|
||||
" . c #F6FBFC",
|
||||
".. c #B8D1E3",
|
||||
" . . + . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". @ . . # # # # # # # # # # # # # # # # # # # # # # # # . . ",
|
||||
". . # # # # # # # # # # # # $ . . . . . % # # # # # # # # # . ",
|
||||
"& . # # # # # # # # # # # * . = - - - ; . > # # # # # # # # . ",
|
||||
". # # # # # # # # # # # , . ' ) - - - - ) . ! # # # # # # # # . ",
|
||||
". # # # # # # $ . . # $ . ; - - - - - - - - . ~ # # # # # # # . ",
|
||||
". # # # # . . . { ] . . ^ ) - - - - - - - - / . # # # # # # # . ",
|
||||
". # # # . ( _ . : < . . [ } - - - - - - - - [ . # # # # # # # . ",
|
||||
". # # # # . | 1 2 3 . . 4 - - - - - - - - - 5 . $ # # # # # # . ",
|
||||
". # # # # . 6 [ } 7 . . 4 - - - - - - - - - 8 . 9 # # # # # # . ",
|
||||
". # # # # . 0 } - - - - - - - - - - - - - - - 4 . # # # # # # . ",
|
||||
". # # # # . a ) - [ - - - - - - - - - - - - - ; . # # # # # # . ",
|
||||
". # # # # . b = c 4 - - - - - - - - - - - - d . ~ # # # # # # . ",
|
||||
". # # # # # . . . e f - - - - - - - - - - g . , # # # # # # # . ",
|
||||
". # # # # # # # # . h i - - - - - - - - ) . j # # # # # # # # . ",
|
||||
". # # # # # # # # # . k l - - - - - - - } m . n # # # # # # # . ",
|
||||
". # # # # # # # # # # . o } - - - - - - - - p . , # # # # # # . ",
|
||||
". # # # # # # # # # # $ . } - - - - - - - - 4 q . # # # # # # . ",
|
||||
". # # # # # # # # # # . r - - - - - - - - - } 4 s . # # # # # . ",
|
||||
". # # # # # # # # # # . t - - - - - - - - - u v . # # # # # # . ",
|
||||
". # # # # # # # # # # . w - - - - - - - - - x . # # # # # # # . ",
|
||||
". # # # # # # # # # # . y [ - - - - - - - - z . # # # # # # # . ",
|
||||
". # # # # # # # # # # $ . ) - - [ - - - - - A . # # # # # # # . ",
|
||||
". # # # # # # # # # # . B C - - [ D E - - - F . # # # # # # # . ",
|
||||
". # # # # # # # # # # . G - - - H . I - - J . # # # # # # # # . ",
|
||||
". # # # # # # # # # # . K - - - L . M - [ N . # # # # # # # # . ",
|
||||
". # # # # # # # # # . O - - - - . . P - - 5 Q . $ # # # # # # . ",
|
||||
". # # # # # # # # . R q - - - - . . i - - - 7 l . # # # # # # . ",
|
||||
" . # # # # # # # . S T [ [ U V . . 5 W ; - X Y . # # # # # . ",
|
||||
" . # # # # # # # . Z ` .... . ~ , . . . . . . # # # # # # . ",
|
||||
" . . # # # # # # . . . . # # # # # # # # # # # # # # . . ",
|
||||
" . . . . . . . . . . . . . . . . . . . . . . . . "};
|
||||
/* XPM */
|
||||
static const char *Dolphin_xpm[] = {
|
||||
"32 32 94 2",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #1A496C",
|
||||
"@ c #091A27",
|
||||
"# c #3AA4F0",
|
||||
"$ c #3AA3EF",
|
||||
"% c #3CA1EA",
|
||||
"& c #1A4A6D",
|
||||
"* c #3AA2ED",
|
||||
"= c #F7FAFA",
|
||||
"- c #FFFFFF",
|
||||
"; c #FDFDFD",
|
||||
"> c #49A1E0",
|
||||
", c #3BA2EC",
|
||||
"' c #FBFDFC",
|
||||
") c #FEFFFD",
|
||||
"! c #4EA3E0",
|
||||
"~ c #3DA1E9",
|
||||
"{ c #D1E1EB",
|
||||
"] c #8ABBDE",
|
||||
"^ c #F2F6F7",
|
||||
"/ c #FAFBFC",
|
||||
"( c #CEDEEA",
|
||||
"_ c #E5EEF2",
|
||||
": c #BBD2E1",
|
||||
"< c #B3CFE5",
|
||||
"[ c #FFFFFE",
|
||||
"} c #FEFFFE",
|
||||
"| c #E8F0F3",
|
||||
"1 c #E4ECF1",
|
||||
"2 c #E5EDF0",
|
||||
"3 c #E9F0F3",
|
||||
"4 c #FEFEFE",
|
||||
"5 c #F9FBFB",
|
||||
"6 c #B0CCE0",
|
||||
"7 c #FEFEFF",
|
||||
"8 c #F9FAFB",
|
||||
"9 c #43A1E4",
|
||||
"0 c #EFF3F6",
|
||||
"a c #F0F5F7",
|
||||
"b c #97C1DE",
|
||||
"c c #FEFEFD",
|
||||
"d c #FDFDFC",
|
||||
"e c #97BEDB",
|
||||
"f c #FBFCFC",
|
||||
"g c #EDF3F6",
|
||||
"h c #6EADDA",
|
||||
"i c #F3F6F8",
|
||||
"j c #3BA1EA",
|
||||
"k c #6EADDB",
|
||||
"l c #F4F8F9",
|
||||
"m c #F1F6F7",
|
||||
"n c #3FA1E7",
|
||||
"o c #9BC1DD",
|
||||
"p c #FCFDFC",
|
||||
"q c #FBFDFB",
|
||||
"r c #B9D1E1",
|
||||
"s c #E0EBF2",
|
||||
"t c #D3E3EF",
|
||||
"u c #FFFEFE",
|
||||
"v c #F2F7F7",
|
||||
"w c #D5E4F0",
|
||||
"x c #F6F9F9",
|
||||
"y c #BDD5E5",
|
||||
"z c #EBF1F4",
|
||||
"A c #DEEAF2",
|
||||
"B c #AAC9DE",
|
||||
"C c #FEFFFF",
|
||||
"D c #EFF4F6",
|
||||
"E c #F8FAFB",
|
||||
"F c #A0C4E1",
|
||||
"G c #D6E5F0",
|
||||
"H c #FAFCFC",
|
||||
"I c #BDD5E7",
|
||||
"J c #EEF3F7",
|
||||
"K c #F3F7FA",
|
||||
"L c #C7D8E4",
|
||||
"M c #CDDEEC",
|
||||
"N c #DAE6ED",
|
||||
"O c #9AC2DF",
|
||||
"P c #E8EFF4",
|
||||
"Q c #ACCDE3",
|
||||
"R c #8DBBDC",
|
||||
"S c #D5E3EB",
|
||||
"T c #FDFFFE",
|
||||
"U c #FCFDFD",
|
||||
"V c #FEFDFD",
|
||||
"W c #F7F9FA",
|
||||
"X c #FDFEFD",
|
||||
"Y c #E7EFF4",
|
||||
"Z c #A4C7E0",
|
||||
"` c #F9FDFB",
|
||||
" . c #F6FBFC",
|
||||
".. c #B8D1E3",
|
||||
" . . + . . . . . . . . . . . . . . . . . . . . . . . . ",
|
||||
". @ . . # # # # # # # # # # # # # # # # # # # # # # # # . . ",
|
||||
". . # # # # # # # # # # # # $ . . . . . % # # # # # # # # # . ",
|
||||
"& . # # # # # # # # # # # * . = - - - ; . > # # # # # # # # . ",
|
||||
". # # # # # # # # # # # , . ' ) - - - - ) . ! # # # # # # # # . ",
|
||||
". # # # # # # $ . . # $ . ; - - - - - - - - . ~ # # # # # # # . ",
|
||||
". # # # # . . . { ] . . ^ ) - - - - - - - - / . # # # # # # # . ",
|
||||
". # # # . ( _ . : < . . [ } - - - - - - - - [ . # # # # # # # . ",
|
||||
". # # # # . | 1 2 3 . . 4 - - - - - - - - - 5 . $ # # # # # # . ",
|
||||
". # # # # . 6 [ } 7 . . 4 - - - - - - - - - 8 . 9 # # # # # # . ",
|
||||
". # # # # . 0 } - - - - - - - - - - - - - - - 4 . # # # # # # . ",
|
||||
". # # # # . a ) - [ - - - - - - - - - - - - - ; . # # # # # # . ",
|
||||
". # # # # . b = c 4 - - - - - - - - - - - - d . ~ # # # # # # . ",
|
||||
". # # # # # . . . e f - - - - - - - - - - g . , # # # # # # # . ",
|
||||
". # # # # # # # # . h i - - - - - - - - ) . j # # # # # # # # . ",
|
||||
". # # # # # # # # # . k l - - - - - - - } m . n # # # # # # # . ",
|
||||
". # # # # # # # # # # . o } - - - - - - - - p . , # # # # # # . ",
|
||||
". # # # # # # # # # # $ . } - - - - - - - - 4 q . # # # # # # . ",
|
||||
". # # # # # # # # # # . r - - - - - - - - - } 4 s . # # # # # . ",
|
||||
". # # # # # # # # # # . t - - - - - - - - - u v . # # # # # # . ",
|
||||
". # # # # # # # # # # . w - - - - - - - - - x . # # # # # # # . ",
|
||||
". # # # # # # # # # # . y [ - - - - - - - - z . # # # # # # # . ",
|
||||
". # # # # # # # # # # $ . ) - - [ - - - - - A . # # # # # # # . ",
|
||||
". # # # # # # # # # # . B C - - [ D E - - - F . # # # # # # # . ",
|
||||
". # # # # # # # # # # . G - - - H . I - - J . # # # # # # # # . ",
|
||||
". # # # # # # # # # # . K - - - L . M - [ N . # # # # # # # # . ",
|
||||
". # # # # # # # # # . O - - - - . . P - - 5 Q . $ # # # # # # . ",
|
||||
". # # # # # # # # . R q - - - - . . i - - - 7 l . # # # # # # . ",
|
||||
" . # # # # # # # . S T [ [ U V . . 5 W ; - X Y . # # # # # . ",
|
||||
" . # # # # # # # . Z ` .... . ~ , . . . . . . # # # # # # . ",
|
||||
" . . # # # # # # . . . . # # # # # # # # # # # # # # . . ",
|
||||
" . . . . . . . . . . . . . . . . . . . . . . . . "};
|
||||
|
@ -1,83 +1,83 @@
|
||||
/* XPM */
|
||||
static const char *const Flag_Europe_xpm[] = {
|
||||
"96 32 48 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #0000FD",
|
||||
"@ c #0000FF",
|
||||
"# c #0808F7",
|
||||
"$ c #5C5CA3",
|
||||
"% c #1717E8",
|
||||
"& c #767680",
|
||||
"* c #EDED00",
|
||||
"= c #A5A54D",
|
||||
"- c #2E2EB9",
|
||||
"; c #96961A",
|
||||
"> c #4A4A8E",
|
||||
", c #0000FB",
|
||||
"' c #0000F4",
|
||||
") c #0808EC",
|
||||
"! c #5C5C9B",
|
||||
"~ c #1717DD",
|
||||
"{ c #0000EE",
|
||||
"] c #767677",
|
||||
"^ c #A5A547",
|
||||
"/ c #0000DD",
|
||||
"( c #2E2EA0",
|
||||
"_ c #969616",
|
||||
": c #4A4A7B",
|
||||
"< c #0000D2",
|
||||
"[ c #0000C6",
|
||||
"} c #0808BF",
|
||||
"| c #5C5C7E",
|
||||
"1 c #1717B4",
|
||||
"2 c #0000B9",
|
||||
"3 c #76765C",
|
||||
"4 c #A5A537",
|
||||
"5 c #0808B3",
|
||||
"6 c #5C5C76",
|
||||
"7 c #1717A8",
|
||||
"8 c #0000A9",
|
||||
"9 c #2E2E7A",
|
||||
"0 c #969611",
|
||||
"a c #4A4A5E",
|
||||
"b c #767654",
|
||||
"c c #A5A533",
|
||||
"d c #000097",
|
||||
"e c #2E2E6D",
|
||||
"f c #96960F",
|
||||
"g c #4A4A54",
|
||||
"h c #000081",
|
||||
"i c #000077",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"................................ ",
|
||||
".++++++++++++++++++++++++++++++. ",
|
||||
".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. ",
|
||||
".@@@@@@@@@@@@@#$%@@@@@@@@@@@@@@. ",
|
||||
".@@@@@@@@@#$%@&*=@#$%@@@@@@@@@@. ",
|
||||
".@@@@@@@@@&*=@-;>@&*=@@@@@@@@@@. ",
|
||||
".@@@@@@@@@-;>@@@@@-;>@@@@@@@@@@. ",
|
||||
".,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,. ",
|
||||
".''''''')!~''''''''')!~''''''''. ",
|
||||
".{{{{{{{]*^{{{{{{{{{]*^{{{{{{{{. ",
|
||||
".///////(_://///////(_:////////. ",
|
||||
".<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<. ",
|
||||
".[[[[[[[[[}|1[[[[[}|1[[[[[[[[[[. ",
|
||||
".2222222223*4256723*42222222222. ",
|
||||
".88888888890a8b*c890a8888888888. ",
|
||||
".dddddddddddddefgdddddddddddddd. ",
|
||||
".hhhhhhhhhhhhhhhhhhhhhhhhhhhhhh. ",
|
||||
".iiiiiiiiiiiiiiiiiiiiiiiiiiiiii. ",
|
||||
".iiiiiiiiiiiiiiiiiiiiiiiiiiiiii. ",
|
||||
"................................ ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
||||
/* XPM */
|
||||
static const char *const Flag_Europe_xpm[] = {
|
||||
"96 32 48 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #0000FD",
|
||||
"@ c #0000FF",
|
||||
"# c #0808F7",
|
||||
"$ c #5C5CA3",
|
||||
"% c #1717E8",
|
||||
"& c #767680",
|
||||
"* c #EDED00",
|
||||
"= c #A5A54D",
|
||||
"- c #2E2EB9",
|
||||
"; c #96961A",
|
||||
"> c #4A4A8E",
|
||||
", c #0000FB",
|
||||
"' c #0000F4",
|
||||
") c #0808EC",
|
||||
"! c #5C5C9B",
|
||||
"~ c #1717DD",
|
||||
"{ c #0000EE",
|
||||
"] c #767677",
|
||||
"^ c #A5A547",
|
||||
"/ c #0000DD",
|
||||
"( c #2E2EA0",
|
||||
"_ c #969616",
|
||||
": c #4A4A7B",
|
||||
"< c #0000D2",
|
||||
"[ c #0000C6",
|
||||
"} c #0808BF",
|
||||
"| c #5C5C7E",
|
||||
"1 c #1717B4",
|
||||
"2 c #0000B9",
|
||||
"3 c #76765C",
|
||||
"4 c #A5A537",
|
||||
"5 c #0808B3",
|
||||
"6 c #5C5C76",
|
||||
"7 c #1717A8",
|
||||
"8 c #0000A9",
|
||||
"9 c #2E2E7A",
|
||||
"0 c #969611",
|
||||
"a c #4A4A5E",
|
||||
"b c #767654",
|
||||
"c c #A5A533",
|
||||
"d c #000097",
|
||||
"e c #2E2E6D",
|
||||
"f c #96960F",
|
||||
"g c #4A4A54",
|
||||
"h c #000081",
|
||||
"i c #000077",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"................................ ",
|
||||
".++++++++++++++++++++++++++++++. ",
|
||||
".@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@. ",
|
||||
".@@@@@@@@@@@@@#$%@@@@@@@@@@@@@@. ",
|
||||
".@@@@@@@@@#$%@&*=@#$%@@@@@@@@@@. ",
|
||||
".@@@@@@@@@&*=@-;>@&*=@@@@@@@@@@. ",
|
||||
".@@@@@@@@@-;>@@@@@-;>@@@@@@@@@@. ",
|
||||
".,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,. ",
|
||||
".''''''')!~''''''''')!~''''''''. ",
|
||||
".{{{{{{{]*^{{{{{{{{{]*^{{{{{{{{. ",
|
||||
".///////(_://///////(_:////////. ",
|
||||
".<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<. ",
|
||||
".[[[[[[[[[}|1[[[[[}|1[[[[[[[[[[. ",
|
||||
".2222222223*4256723*42222222222. ",
|
||||
".88888888890a8b*c890a8888888888. ",
|
||||
".dddddddddddddefgdddddddddddddd. ",
|
||||
".hhhhhhhhhhhhhhhhhhhhhhhhhhhhhh. ",
|
||||
".iiiiiiiiiiiiiiiiiiiiiiiiiiiiii. ",
|
||||
".iiiiiiiiiiiiiiiiiiiiiiiiiiiiii. ",
|
||||
"................................ ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
||||
|
@ -1,80 +1,80 @@
|
||||
/* XPM */
|
||||
static const char *const Flag_France_xpm[] = {
|
||||
"96 32 45 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #0000FF",
|
||||
"@ c #FFFFFF",
|
||||
"# c #FF0000",
|
||||
"$ c #0000FC",
|
||||
"% c #0000F8",
|
||||
"& c #FCFCFC",
|
||||
"* c #FC0000",
|
||||
"= c #0000F2",
|
||||
"- c #F8F8F8",
|
||||
"; c #F80000",
|
||||
"> c #0000EC",
|
||||
", c #F2F2F2",
|
||||
"' c #F20000",
|
||||
") c #0000E3",
|
||||
"! c #ECECEC",
|
||||
"~ c #EC0000",
|
||||
"{ c #0000DB",
|
||||
"] c #E3E3E3",
|
||||
"^ c #E30000",
|
||||
"/ c #0000D2",
|
||||
"( c #DBDBDB",
|
||||
"_ c #DB0000",
|
||||
": c #0000C8",
|
||||
"< c #D2D2D2",
|
||||
"[ c #D20000",
|
||||
"} c #0000BD",
|
||||
"| c #C8C8C8",
|
||||
"1 c #C80000",
|
||||
"2 c #0000B1",
|
||||
"3 c #BDBDBD",
|
||||
"4 c #BD0000",
|
||||
"5 c #0000A3",
|
||||
"6 c #B1B1B1",
|
||||
"7 c #B10000",
|
||||
"8 c #000093",
|
||||
"9 c #A3A3A3",
|
||||
"0 c #A30000",
|
||||
"a c #000080",
|
||||
"b c #939393",
|
||||
"c c #930000",
|
||||
"d c #000077",
|
||||
"e c #808080",
|
||||
"f c #800000",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"................................ ",
|
||||
".++++++++++@@@@@@@@@@@#########. ",
|
||||
".++++++++++@@@@@@@@@@@#########. ",
|
||||
".++++++++++@@@@@@@@@@@#########. ",
|
||||
".++++++++++@@@@@@@@@@@#########. ",
|
||||
".$$$$$$$$$$@@@@@@@@@@@#########. ",
|
||||
".%%%%%%%%%%&&&&&&&&&&&*********. ",
|
||||
".==========-----------;;;;;;;;;. ",
|
||||
".>>>>>>>>>>,,,,,,,,,,,'''''''''. ",
|
||||
".))))))))))!!!!!!!!!!!~~~~~~~~~. ",
|
||||
".{{{{{{{{{{]]]]]]]]]]]^^^^^^^^^. ",
|
||||
".//////////(((((((((((_________. ",
|
||||
".::::::::::<<<<<<<<<<<[[[[[[[[[. ",
|
||||
".}}}}}}}}}}|||||||||||111111111. ",
|
||||
".222222222233333333333444444444. ",
|
||||
".555555555566666666666777777777. ",
|
||||
".888888888899999999999000000000. ",
|
||||
".aaaaaaaaaabbbbbbbbbbbccccccccc. ",
|
||||
".ddddddddddeeeeeeeeeeefffffffff. ",
|
||||
"................................ ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
||||
/* XPM */
|
||||
static const char *const Flag_France_xpm[] = {
|
||||
"96 32 45 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #0000FF",
|
||||
"@ c #FFFFFF",
|
||||
"# c #FF0000",
|
||||
"$ c #0000FC",
|
||||
"% c #0000F8",
|
||||
"& c #FCFCFC",
|
||||
"* c #FC0000",
|
||||
"= c #0000F2",
|
||||
"- c #F8F8F8",
|
||||
"; c #F80000",
|
||||
"> c #0000EC",
|
||||
", c #F2F2F2",
|
||||
"' c #F20000",
|
||||
") c #0000E3",
|
||||
"! c #ECECEC",
|
||||
"~ c #EC0000",
|
||||
"{ c #0000DB",
|
||||
"] c #E3E3E3",
|
||||
"^ c #E30000",
|
||||
"/ c #0000D2",
|
||||
"( c #DBDBDB",
|
||||
"_ c #DB0000",
|
||||
": c #0000C8",
|
||||
"< c #D2D2D2",
|
||||
"[ c #D20000",
|
||||
"} c #0000BD",
|
||||
"| c #C8C8C8",
|
||||
"1 c #C80000",
|
||||
"2 c #0000B1",
|
||||
"3 c #BDBDBD",
|
||||
"4 c #BD0000",
|
||||
"5 c #0000A3",
|
||||
"6 c #B1B1B1",
|
||||
"7 c #B10000",
|
||||
"8 c #000093",
|
||||
"9 c #A3A3A3",
|
||||
"0 c #A30000",
|
||||
"a c #000080",
|
||||
"b c #939393",
|
||||
"c c #930000",
|
||||
"d c #000077",
|
||||
"e c #808080",
|
||||
"f c #800000",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"................................ ",
|
||||
".++++++++++@@@@@@@@@@@#########. ",
|
||||
".++++++++++@@@@@@@@@@@#########. ",
|
||||
".++++++++++@@@@@@@@@@@#########. ",
|
||||
".++++++++++@@@@@@@@@@@#########. ",
|
||||
".$$$$$$$$$$@@@@@@@@@@@#########. ",
|
||||
".%%%%%%%%%%&&&&&&&&&&&*********. ",
|
||||
".==========-----------;;;;;;;;;. ",
|
||||
".>>>>>>>>>>,,,,,,,,,,,'''''''''. ",
|
||||
".))))))))))!!!!!!!!!!!~~~~~~~~~. ",
|
||||
".{{{{{{{{{{]]]]]]]]]]]^^^^^^^^^. ",
|
||||
".//////////(((((((((((_________. ",
|
||||
".::::::::::<<<<<<<<<<<[[[[[[[[[. ",
|
||||
".}}}}}}}}}}|||||||||||111111111. ",
|
||||
".222222222233333333333444444444. ",
|
||||
".555555555566666666666777777777. ",
|
||||
".888888888899999999999000000000. ",
|
||||
".aaaaaaaaaabbbbbbbbbbbccccccccc. ",
|
||||
".ddddddddddeeeeeeeeeeefffffffff. ",
|
||||
"................................ ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
||||
|
@ -1,102 +1,102 @@
|
||||
/* XPM */
|
||||
static const char * const Flag_Japan_xpm[] = {
|
||||
"96 32 67 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #FFFFFF",
|
||||
"@ c #FECACA",
|
||||
"# c #FD8080",
|
||||
"$ c #FD6161",
|
||||
"% c #FD7676",
|
||||
"& c #FEB6B6",
|
||||
"* c #FEFEFE",
|
||||
"= c #FFEDED",
|
||||
"- c #FF4C4C",
|
||||
"; c #FF0000",
|
||||
"> c #FF2F2F",
|
||||
", c #FFD7D7",
|
||||
"' c #FEF5F5",
|
||||
") c #FE2E2E",
|
||||
"! c #FE1313",
|
||||
"~ c #FEDDDD",
|
||||
"{ c #F9F9F9",
|
||||
"] c #FC7777",
|
||||
"^ c #FD4545",
|
||||
"/ c #F4F4F4",
|
||||
"( c #F4F3F3",
|
||||
"_ c #FA1313",
|
||||
": c #FB0000",
|
||||
"< c #FA0000",
|
||||
"[ c #F4D4D4",
|
||||
"} c #EFEFEF",
|
||||
"| c #EFCFCF",
|
||||
"1 c #F10000",
|
||||
"2 c #EF9F9F",
|
||||
"3 c #E4E4E4",
|
||||
"4 c #E2BEBE",
|
||||
"5 c #DD0000",
|
||||
"6 c #E19090",
|
||||
"7 c #D9D9D9",
|
||||
"8 c #D8D0D0",
|
||||
"9 c #CA0404",
|
||||
"0 c #CA0000",
|
||||
"a c #D5A9A9",
|
||||
"b c #D0D0D0",
|
||||
"c c #BC4242",
|
||||
"d c #B40000",
|
||||
"e c #B71A1A",
|
||||
"f c #CFCFCF",
|
||||
"g c #C6C6C6",
|
||||
"h c #BEA7A7",
|
||||
"i c #990808",
|
||||
"j c #980000",
|
||||
"k c #B78787",
|
||||
"l c #BBBBBB",
|
||||
"m c #A88989",
|
||||
"n c #7B0B0B",
|
||||
"o c #770000",
|
||||
"p c #780202",
|
||||
"q c #9E6B6B",
|
||||
"r c #AEAEAE",
|
||||
"s c #A89C9C",
|
||||
"t c #8F4E4E",
|
||||
"u c #7F1B1B",
|
||||
"v c #7A0A0A",
|
||||
"w c #7D1515",
|
||||
"x c #8B4242",
|
||||
"y c #A48F8F",
|
||||
"z c #A0A0A0",
|
||||
"A c #8F8F8F",
|
||||
"B c #7C7C7C",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"................................ ",
|
||||
".++++++++++++++++++++++++++++++. ",
|
||||
".++++++++++++++++++++++++++++++. ",
|
||||
".++++++++++++++++++++++++++++++. ",
|
||||
".++++++++++++@#$%&*++++++++++++. ",
|
||||
".++++++++++=-;;;;;>,+++++++++++. ",
|
||||
".*********');;;;;;;!~**********. ",
|
||||
".{{{{{{{{{];;;;;;;;;^{{{{{{{{{{. ",
|
||||
".////////(_:::::::::<[/////////. ",
|
||||
".}}}}}}}}|111111111112}}}}}}}}}. ",
|
||||
".333333334555555555556333333333. ",
|
||||
".77777777890000000000a777777777. ",
|
||||
".bbbbbbbbbcdddddddddefbbbbbbbbb. ",
|
||||
".ggggggggghijjjjjjjjkgggggggggg. ",
|
||||
".llllllllllmnooooopqlllllllllll. ",
|
||||
".rrrrrrrrrrrstuvwxyrrrrrrrrrrrr. ",
|
||||
".zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz. ",
|
||||
".AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA. ",
|
||||
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB. ",
|
||||
"................................ ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
||||
/* XPM */
|
||||
static const char * const Flag_Japan_xpm[] = {
|
||||
"96 32 67 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #FFFFFF",
|
||||
"@ c #FECACA",
|
||||
"# c #FD8080",
|
||||
"$ c #FD6161",
|
||||
"% c #FD7676",
|
||||
"& c #FEB6B6",
|
||||
"* c #FEFEFE",
|
||||
"= c #FFEDED",
|
||||
"- c #FF4C4C",
|
||||
"; c #FF0000",
|
||||
"> c #FF2F2F",
|
||||
", c #FFD7D7",
|
||||
"' c #FEF5F5",
|
||||
") c #FE2E2E",
|
||||
"! c #FE1313",
|
||||
"~ c #FEDDDD",
|
||||
"{ c #F9F9F9",
|
||||
"] c #FC7777",
|
||||
"^ c #FD4545",
|
||||
"/ c #F4F4F4",
|
||||
"( c #F4F3F3",
|
||||
"_ c #FA1313",
|
||||
": c #FB0000",
|
||||
"< c #FA0000",
|
||||
"[ c #F4D4D4",
|
||||
"} c #EFEFEF",
|
||||
"| c #EFCFCF",
|
||||
"1 c #F10000",
|
||||
"2 c #EF9F9F",
|
||||
"3 c #E4E4E4",
|
||||
"4 c #E2BEBE",
|
||||
"5 c #DD0000",
|
||||
"6 c #E19090",
|
||||
"7 c #D9D9D9",
|
||||
"8 c #D8D0D0",
|
||||
"9 c #CA0404",
|
||||
"0 c #CA0000",
|
||||
"a c #D5A9A9",
|
||||
"b c #D0D0D0",
|
||||
"c c #BC4242",
|
||||
"d c #B40000",
|
||||
"e c #B71A1A",
|
||||
"f c #CFCFCF",
|
||||
"g c #C6C6C6",
|
||||
"h c #BEA7A7",
|
||||
"i c #990808",
|
||||
"j c #980000",
|
||||
"k c #B78787",
|
||||
"l c #BBBBBB",
|
||||
"m c #A88989",
|
||||
"n c #7B0B0B",
|
||||
"o c #770000",
|
||||
"p c #780202",
|
||||
"q c #9E6B6B",
|
||||
"r c #AEAEAE",
|
||||
"s c #A89C9C",
|
||||
"t c #8F4E4E",
|
||||
"u c #7F1B1B",
|
||||
"v c #7A0A0A",
|
||||
"w c #7D1515",
|
||||
"x c #8B4242",
|
||||
"y c #A48F8F",
|
||||
"z c #A0A0A0",
|
||||
"A c #8F8F8F",
|
||||
"B c #7C7C7C",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"................................ ",
|
||||
".++++++++++++++++++++++++++++++. ",
|
||||
".++++++++++++++++++++++++++++++. ",
|
||||
".++++++++++++++++++++++++++++++. ",
|
||||
".++++++++++++@#$%&*++++++++++++. ",
|
||||
".++++++++++=-;;;;;>,+++++++++++. ",
|
||||
".*********');;;;;;;!~**********. ",
|
||||
".{{{{{{{{{];;;;;;;;;^{{{{{{{{{{. ",
|
||||
".////////(_:::::::::<[/////////. ",
|
||||
".}}}}}}}}|111111111112}}}}}}}}}. ",
|
||||
".333333334555555555556333333333. ",
|
||||
".77777777890000000000a777777777. ",
|
||||
".bbbbbbbbbcdddddddddefbbbbbbbbb. ",
|
||||
".ggggggggghijjjjjjjjkgggggggggg. ",
|
||||
".llllllllllmnooooopqlllllllllll. ",
|
||||
".rrrrrrrrrrrstuvwxyrrrrrrrrrrrr. ",
|
||||
".zzzzzzzzzzzzzzzzzzzzzzzzzzzzzz. ",
|
||||
".AAAAAAAAAAAAAAAAAAAAAAAAAAAAAA. ",
|
||||
".BBBBBBBBBBBBBBBBBBBBBBBBBBBBBB. ",
|
||||
"................................ ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
||||
|
@ -1,124 +1,124 @@
|
||||
/* XPM */
|
||||
static const char * Flag_Taiwan_xpm[] = {
|
||||
"96 32 89 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"# c #000099",
|
||||
"$ c #000098",
|
||||
"% c #03039A",
|
||||
"& c #000094",
|
||||
"' c #05059B",
|
||||
"( c #050095",
|
||||
") c #DC0014",
|
||||
"* c #FF0000",
|
||||
"+ c #FD0001",
|
||||
", c #04049B",
|
||||
"- c #000096",
|
||||
"! c #020299",
|
||||
"0 c #2424A7",
|
||||
"1 c #04049A",
|
||||
"2 c #000097",
|
||||
"3 c #000093",
|
||||
"4 c #6262BF",
|
||||
"5 c #2828A8",
|
||||
"6 c #6C6CC1",
|
||||
"7 c #3E3EB1",
|
||||
"8 c #3B3BB0",
|
||||
"9 c #00008F",
|
||||
": c #01019A",
|
||||
"; c #1919A3",
|
||||
"< c #4040B0",
|
||||
"= c #6363C0",
|
||||
"> c #D6D6EE",
|
||||
"? c #D9D9ED",
|
||||
"@ c #C5C5E7",
|
||||
"A c #3F3FB0",
|
||||
"B c #3D3DAF",
|
||||
"C c #020297",
|
||||
"D c #010199",
|
||||
"E c #5E5EBE",
|
||||
"F c #DFDFF2",
|
||||
"G c white",
|
||||
"H c #BFBFE5",
|
||||
"I c #2626A7",
|
||||
"J c #4242B0",
|
||||
"K c #7D7DCA",
|
||||
"L c #FAFAFD",
|
||||
"M c #FBFBFD",
|
||||
"N c #FCFCFD",
|
||||
"O c #FCFCFE",
|
||||
"P c #DADAF0",
|
||||
"Q c #6A6AC2",
|
||||
"R c #1B1BA3",
|
||||
"S c #000199",
|
||||
"T c #0E0E9B",
|
||||
"U c #5858BC",
|
||||
"V c #D3D3ED",
|
||||
"W c #2727A6",
|
||||
"X c #060699",
|
||||
"Y c #1212A0",
|
||||
"Z c #6464C0",
|
||||
"[ c #8080CC",
|
||||
"] c #F4F4FA",
|
||||
"^ c #F8F8FB",
|
||||
"_ c #7070C4",
|
||||
"` c #4949B5",
|
||||
"a c #000095",
|
||||
"b c #040499",
|
||||
"c c #000092",
|
||||
"d c #6767C2",
|
||||
"e c #8686CA",
|
||||
"f c #7070C5",
|
||||
"g c #2B2BA9",
|
||||
"h c #00009A",
|
||||
"i c #01049C",
|
||||
"j c #1619A4",
|
||||
"k c #393CB3",
|
||||
"l c #00029A",
|
||||
"m c #1619A5",
|
||||
"n c #020096",
|
||||
"o c #DB0014",
|
||||
"p c #FC0001",
|
||||
"q c #0A0092",
|
||||
"r c #060090",
|
||||
"s c #0B0092",
|
||||
"t c #0F008E",
|
||||
"u c #DD0013",
|
||||
"v c #FD0000",
|
||||
"w c #E5000F",
|
||||
"x c #E6010F",
|
||||
"y c #E60110",
|
||||
"z c #FB0002",
|
||||
"{ c #FE0000",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"................................ ",
|
||||
".#####$%#&'$$$##()*+***********. ",
|
||||
".###$$,-!0&1!$##()*+***********. ",
|
||||
".##$#23456789:$#()*+***********. ",
|
||||
".###2;<=>?@ABCD#()*+***********. ",
|
||||
".###$CEFGGGHI&D$()*+***********. ",
|
||||
".##D-JKLMNOPQR-S()*+***********. ",
|
||||
".###$TUGGNGVWX$#()*+***********. ",
|
||||
".###2YZ[]^P_`aD$()*+***********. ",
|
||||
".###$bcdEefg3D$#()*+***********. ",
|
||||
".hhhhhijiklm#hhhno*p***********. ",
|
||||
".qqqqqqrsrqrqqqqtu*v***********. ",
|
||||
".wwwwwwxwywxwwwwwz*{***********. ",
|
||||
".******************************. ",
|
||||
".{{{{{{{{{{{{{{{{{*{***********. ",
|
||||
".******************************. ",
|
||||
".******************************. ",
|
||||
".******************************. ",
|
||||
".******************************. ",
|
||||
"................................ ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
/* XPM */
|
||||
static const char * Flag_Taiwan_xpm[] = {
|
||||
"96 32 89 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"# c #000099",
|
||||
"$ c #000098",
|
||||
"% c #03039A",
|
||||
"& c #000094",
|
||||
"' c #05059B",
|
||||
"( c #050095",
|
||||
") c #DC0014",
|
||||
"* c #FF0000",
|
||||
"+ c #FD0001",
|
||||
", c #04049B",
|
||||
"- c #000096",
|
||||
"! c #020299",
|
||||
"0 c #2424A7",
|
||||
"1 c #04049A",
|
||||
"2 c #000097",
|
||||
"3 c #000093",
|
||||
"4 c #6262BF",
|
||||
"5 c #2828A8",
|
||||
"6 c #6C6CC1",
|
||||
"7 c #3E3EB1",
|
||||
"8 c #3B3BB0",
|
||||
"9 c #00008F",
|
||||
": c #01019A",
|
||||
"; c #1919A3",
|
||||
"< c #4040B0",
|
||||
"= c #6363C0",
|
||||
"> c #D6D6EE",
|
||||
"? c #D9D9ED",
|
||||
"@ c #C5C5E7",
|
||||
"A c #3F3FB0",
|
||||
"B c #3D3DAF",
|
||||
"C c #020297",
|
||||
"D c #010199",
|
||||
"E c #5E5EBE",
|
||||
"F c #DFDFF2",
|
||||
"G c white",
|
||||
"H c #BFBFE5",
|
||||
"I c #2626A7",
|
||||
"J c #4242B0",
|
||||
"K c #7D7DCA",
|
||||
"L c #FAFAFD",
|
||||
"M c #FBFBFD",
|
||||
"N c #FCFCFD",
|
||||
"O c #FCFCFE",
|
||||
"P c #DADAF0",
|
||||
"Q c #6A6AC2",
|
||||
"R c #1B1BA3",
|
||||
"S c #000199",
|
||||
"T c #0E0E9B",
|
||||
"U c #5858BC",
|
||||
"V c #D3D3ED",
|
||||
"W c #2727A6",
|
||||
"X c #060699",
|
||||
"Y c #1212A0",
|
||||
"Z c #6464C0",
|
||||
"[ c #8080CC",
|
||||
"] c #F4F4FA",
|
||||
"^ c #F8F8FB",
|
||||
"_ c #7070C4",
|
||||
"` c #4949B5",
|
||||
"a c #000095",
|
||||
"b c #040499",
|
||||
"c c #000092",
|
||||
"d c #6767C2",
|
||||
"e c #8686CA",
|
||||
"f c #7070C5",
|
||||
"g c #2B2BA9",
|
||||
"h c #00009A",
|
||||
"i c #01049C",
|
||||
"j c #1619A4",
|
||||
"k c #393CB3",
|
||||
"l c #00029A",
|
||||
"m c #1619A5",
|
||||
"n c #020096",
|
||||
"o c #DB0014",
|
||||
"p c #FC0001",
|
||||
"q c #0A0092",
|
||||
"r c #060090",
|
||||
"s c #0B0092",
|
||||
"t c #0F008E",
|
||||
"u c #DD0013",
|
||||
"v c #FD0000",
|
||||
"w c #E5000F",
|
||||
"x c #E6010F",
|
||||
"y c #E60110",
|
||||
"z c #FB0002",
|
||||
"{ c #FE0000",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"................................ ",
|
||||
".#####$%#&'$$$##()*+***********. ",
|
||||
".###$$,-!0&1!$##()*+***********. ",
|
||||
".##$#23456789:$#()*+***********. ",
|
||||
".###2;<=>?@ABCD#()*+***********. ",
|
||||
".###$CEFGGGHI&D$()*+***********. ",
|
||||
".##D-JKLMNOPQR-S()*+***********. ",
|
||||
".###$TUGGNGVWX$#()*+***********. ",
|
||||
".###2YZ[]^P_`aD$()*+***********. ",
|
||||
".###$bcdEefg3D$#()*+***********. ",
|
||||
".hhhhhijiklm#hhhno*p***********. ",
|
||||
".qqqqqqrsrqrqqqqtu*v***********. ",
|
||||
".wwwwwwxwywxwwwwwz*{***********. ",
|
||||
".******************************. ",
|
||||
".{{{{{{{{{{{{{{{{{*{***********. ",
|
||||
".******************************. ",
|
||||
".******************************. ",
|
||||
".******************************. ",
|
||||
".******************************. ",
|
||||
"................................ ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
@ -1,65 +1,65 @@
|
||||
/* XPM */
|
||||
static const char * Flag_USA_xpm[] = {
|
||||
"96 32 30 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #0000FF",
|
||||
"@ c #CE7070",
|
||||
"# c #B0BF99",
|
||||
"$ c #F1F1F1",
|
||||
"% c #FFFFFF",
|
||||
"& c #0000FD",
|
||||
"* c #CF8484",
|
||||
"= c #DA9090",
|
||||
"- c #0000F3",
|
||||
"; c #B0BF96",
|
||||
"> c #0000DF",
|
||||
", c #0000CB",
|
||||
"' c #B0BF8C",
|
||||
") c #D98E8E",
|
||||
"! c #0000B5",
|
||||
"~ c #CA6C6C",
|
||||
"{ c #000098",
|
||||
"] c #B0BF80",
|
||||
"^ c #000077",
|
||||
"/ c #C26464",
|
||||
"( c #DBDBDB",
|
||||
"_ c #C17676",
|
||||
": c #B55757",
|
||||
"< c #BBBBBB",
|
||||
"[ c #AC6161",
|
||||
"} c #A34545",
|
||||
"| c #8B8B8B",
|
||||
"1 c #8E4343",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"................................ ",
|
||||
".++++++++++++++@@@@@@@@@@@@@@@@. ",
|
||||
".+#+#+#+#+#+#++$%%%%%%%%%%%%%%%. ",
|
||||
".&&&&&&&&&&&&&&*===============. ",
|
||||
".-;-;-;-;-;-;--@@@@@@@@@@@@@@@@. ",
|
||||
".>>>>>>>>>>>>>>$%%%%%%%%%%%%%%%. ",
|
||||
".,',',',',',',,*))))))))))))))). ",
|
||||
".!!!!!!!!!!!!!!@~~~~~~~~~~~~~~~. ",
|
||||
".{]{]{]{]{]{]{{$$$$$$$$$$$$$$$$. ",
|
||||
".^^^^^^^^^^^^^^****************. ",
|
||||
".^^^^^^^^^^^^^^@///////////////. ",
|
||||
".((((((((((((((((((((((((((((((. ",
|
||||
".______________________________. ",
|
||||
".::::::::::::::::::::::::::::::. ",
|
||||
".<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<. ",
|
||||
".[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[. ",
|
||||
".}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}. ",
|
||||
".||||||||||||||||||||||||||||||. ",
|
||||
".111111111111111111111111111111. ",
|
||||
"................................ ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
||||
/* XPM */
|
||||
static const char * Flag_USA_xpm[] = {
|
||||
"96 32 30 1",
|
||||
" c None",
|
||||
". c #000000",
|
||||
"+ c #0000FF",
|
||||
"@ c #CE7070",
|
||||
"# c #B0BF99",
|
||||
"$ c #F1F1F1",
|
||||
"% c #FFFFFF",
|
||||
"& c #0000FD",
|
||||
"* c #CF8484",
|
||||
"= c #DA9090",
|
||||
"- c #0000F3",
|
||||
"; c #B0BF96",
|
||||
"> c #0000DF",
|
||||
", c #0000CB",
|
||||
"' c #B0BF8C",
|
||||
") c #D98E8E",
|
||||
"! c #0000B5",
|
||||
"~ c #CA6C6C",
|
||||
"{ c #000098",
|
||||
"] c #B0BF80",
|
||||
"^ c #000077",
|
||||
"/ c #C26464",
|
||||
"( c #DBDBDB",
|
||||
"_ c #C17676",
|
||||
": c #B55757",
|
||||
"< c #BBBBBB",
|
||||
"[ c #AC6161",
|
||||
"} c #A34545",
|
||||
"| c #8B8B8B",
|
||||
"1 c #8E4343",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
"................................ ",
|
||||
".++++++++++++++@@@@@@@@@@@@@@@@. ",
|
||||
".+#+#+#+#+#+#++$%%%%%%%%%%%%%%%. ",
|
||||
".&&&&&&&&&&&&&&*===============. ",
|
||||
".-;-;-;-;-;-;--@@@@@@@@@@@@@@@@. ",
|
||||
".>>>>>>>>>>>>>>$%%%%%%%%%%%%%%%. ",
|
||||
".,',',',',',',,*))))))))))))))). ",
|
||||
".!!!!!!!!!!!!!!@~~~~~~~~~~~~~~~. ",
|
||||
".{]{]{]{]{]{]{{$$$$$$$$$$$$$$$$. ",
|
||||
".^^^^^^^^^^^^^^****************. ",
|
||||
".^^^^^^^^^^^^^^@///////////////. ",
|
||||
".((((((((((((((((((((((((((((((. ",
|
||||
".______________________________. ",
|
||||
".::::::::::::::::::::::::::::::. ",
|
||||
".<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<. ",
|
||||
".[[[[[[[[[[[[[[[[[[[[[[[[[[[[[[. ",
|
||||
".}}}}}}}}}}}}}}}}}}}}}}}}}}}}}}. ",
|
||||
".||||||||||||||||||||||||||||||. ",
|
||||
".111111111111111111111111111111. ",
|
||||
"................................ ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" ",
|
||||
" "};
|
||||
|
Reference in New Issue
Block a user