diff --git a/Source/Core/DolphinWX/Src/Frame.cpp b/Source/Core/DolphinWX/Src/Frame.cpp index 31e08368a3..0d3dd1fa9b 100644 --- a/Source/Core/DolphinWX/Src/Frame.cpp +++ b/Source/Core/DolphinWX/Src/Frame.cpp @@ -679,11 +679,11 @@ void CFrame::OnGameListCtrl_ItemActivated(wxListEvent& WXUNUSED (event)) // 2. Boot the default or last loaded iso. // 3. Call BrowseForDirectory if the gamelist is empty if (!m_GameListCtrl->GetGameNames().size() && - !((SConfig::GetInstance().m_ListGC || - SConfig::GetInstance().m_ListWii || + !((SConfig::GetInstance().m_ListGC && + SConfig::GetInstance().m_ListWii && SConfig::GetInstance().m_ListWad) && - (SConfig::GetInstance().m_ListJap || - SConfig::GetInstance().m_ListUsa || + (SConfig::GetInstance().m_ListJap && + SConfig::GetInstance().m_ListUsa && SConfig::GetInstance().m_ListPal))) { SConfig::GetInstance().m_ListGC = SConfig::GetInstance().m_ListWii = diff --git a/Source/Core/DolphinWX/Src/FrameTools.cpp b/Source/Core/DolphinWX/Src/FrameTools.cpp index 15a066d345..eb7fcb17d7 100644 --- a/Source/Core/DolphinWX/Src/FrameTools.cpp +++ b/Source/Core/DolphinWX/Src/FrameTools.cpp @@ -953,11 +953,10 @@ void CFrame::UpdateGUI() } } + if (m_ToolBar) m_ToolBar->Refresh(); if (g_pCodeWindow) g_pCodeWindow->Update(); // Commit changes to manager - if (m_ToolBar) - m_ToolBar->Refresh(); m_Mgr->Update(); } diff --git a/Source/Core/DolphinWX/Src/GameListCtrl.cpp b/Source/Core/DolphinWX/Src/GameListCtrl.cpp index 962da621f5..dc197ce3e9 100644 --- a/Source/Core/DolphinWX/Src/GameListCtrl.cpp +++ b/Source/Core/DolphinWX/Src/GameListCtrl.cpp @@ -46,13 +46,14 @@ #include "../resources/Platform_Wad.xpm" #include "../resources/Platform_Wii.xpm" #include "../resources/Platform_Gamecube.xpm" + + #include "../resources/rating_gamelist.h" #endif // USE_XPM_BITMAPS size_t CGameListCtrl::m_currentItem = 0; size_t CGameListCtrl::m_numberItem = 0; std::string CGameListCtrl::m_currentFilename; - static int currentColumn = 0; bool operator < (const GameListItem &one, const GameListItem &other) { @@ -85,25 +86,32 @@ bool operator < (const GameListItem &one, const GameListItem &other) } } -BEGIN_EVENT_TABLE(CGameListCtrl, wxListCtrl) -EVT_SIZE(CGameListCtrl::OnSize) -EVT_RIGHT_DOWN(CGameListCtrl::OnRightClick) -EVT_LIST_COL_BEGIN_DRAG(LIST_CTRL, CGameListCtrl::OnColBeginDrag) -EVT_LIST_COL_CLICK(LIST_CTRL, CGameListCtrl::OnColumnClick) -EVT_MENU(IDM_PROPERTIES, CGameListCtrl::OnProperties) -EVT_MENU(IDM_OPENCONTAININGFOLDER, CGameListCtrl::OnOpenContainingFolder) -EVT_MENU(IDM_OPENSAVEFOLDER, CGameListCtrl::OnOpenSaveFolder) -EVT_MENU(IDM_SETDEFAULTGCM, CGameListCtrl::OnSetDefaultGCM) -EVT_MENU(IDM_COMPRESSGCM, CGameListCtrl::OnCompressGCM) -EVT_MENU(IDM_MULTICOMPRESSGCM, CGameListCtrl::OnMultiCompressGCM) -EVT_MENU(IDM_MULTIDECOMPRESSGCM, CGameListCtrl::OnMultiDecompressGCM) -EVT_MENU(IDM_DELETEGCM, CGameListCtrl::OnDeleteGCM) -EVT_MENU(IDM_INSTALLWAD, CGameListCtrl::OnInstallWAD) +BEGIN_EVENT_TABLE(wxEmuStateTip, wxTipWindow) + EVT_KEY_DOWN(wxEmuStateTip::OnKeyDown) END_EVENT_TABLE() +BEGIN_EVENT_TABLE(CGameListCtrl, wxListCtrl) + EVT_SIZE(CGameListCtrl::OnSize) + EVT_RIGHT_DOWN(CGameListCtrl::OnRightClick) + EVT_LIST_KEY_DOWN(LIST_CTRL, CGameListCtrl::OnKeyPress) + EVT_MOTION(CGameListCtrl::OnMouseMotion) + EVT_LIST_COL_BEGIN_DRAG(LIST_CTRL, CGameListCtrl::OnColBeginDrag) + EVT_LIST_COL_CLICK(LIST_CTRL, CGameListCtrl::OnColumnClick) + EVT_MENU(IDM_PROPERTIES, CGameListCtrl::OnProperties) + EVT_MENU(IDM_OPENCONTAININGFOLDER, CGameListCtrl::OnOpenContainingFolder) + EVT_MENU(IDM_OPENSAVEFOLDER, CGameListCtrl::OnOpenSaveFolder) + EVT_MENU(IDM_SETDEFAULTGCM, CGameListCtrl::OnSetDefaultGCM) + EVT_MENU(IDM_COMPRESSGCM, CGameListCtrl::OnCompressGCM) + EVT_MENU(IDM_MULTICOMPRESSGCM, CGameListCtrl::OnMultiCompressGCM) + EVT_MENU(IDM_MULTIDECOMPRESSGCM, CGameListCtrl::OnMultiDecompressGCM) + EVT_MENU(IDM_DELETEGCM, CGameListCtrl::OnDeleteGCM) + EVT_MENU(IDM_INSTALLWAD, CGameListCtrl::OnInstallWAD) +END_EVENT_TABLE() + + CGameListCtrl::CGameListCtrl(wxWindow* parent, const wxWindowID id, const wxPoint& pos, const wxSize& size, long style) - : wxListCtrl(parent, id, pos, size, style) + : wxListCtrl(parent, id, pos, size, style), toolTip(0) { } @@ -147,6 +155,20 @@ void CGameListCtrl::InitBitmaps() m_PlatformImageIndex[1] = m_imageListSmall->Add(iconTemp); iconTemp.CopyFromBitmap(wxBitmap(Platform_Wad_xpm)); m_PlatformImageIndex[2] = m_imageListSmall->Add(iconTemp); + + m_EmuStateImageIndex.resize(6); + iconTemp.CopyFromBitmap(wxBitmap(rating_0)); + m_EmuStateImageIndex[0] = m_imageListSmall->Add(iconTemp); + iconTemp.CopyFromBitmap(wxBitmap(rating_1)); + m_EmuStateImageIndex[1] = m_imageListSmall->Add(iconTemp); + iconTemp.CopyFromBitmap(wxBitmap(rating_2)); + m_EmuStateImageIndex[2] = m_imageListSmall->Add(iconTemp); + iconTemp.CopyFromBitmap(wxBitmap(rating_3)); + m_EmuStateImageIndex[3] = m_imageListSmall->Add(iconTemp); + iconTemp.CopyFromBitmap(wxBitmap(rating_4)); + m_EmuStateImageIndex[4] = m_imageListSmall->Add(iconTemp); + iconTemp.CopyFromBitmap(wxBitmap(rating_5)); + m_EmuStateImageIndex[5] = m_imageListSmall->Add(iconTemp); } void CGameListCtrl::BrowseForDirectory() @@ -206,6 +228,7 @@ void CGameListCtrl::Update() Show(); // add columns + InsertColumn(COLUMN_PLATFORM, _("")); InsertColumn(COLUMN_BANNER, _("Banner")); InsertColumn(COLUMN_TITLE, _("Title")); InsertColumn(COLUMN_COMPANY, _("Company")); @@ -213,17 +236,16 @@ void CGameListCtrl::Update() InsertColumn(COLUMN_COUNTRY, _("")); InsertColumn(COLUMN_SIZE, _("Size")); InsertColumn(COLUMN_EMULATION_STATE, _("Emulation")); - InsertColumn(COLUMN_PLATFORM, _("Platform")); // set initial sizes for columns - SetColumnWidth(COLUMN_BANNER, 106); + SetColumnWidth(COLUMN_PLATFORM, 35); + SetColumnWidth(COLUMN_BANNER, 96); SetColumnWidth(COLUMN_TITLE, 150); SetColumnWidth(COLUMN_COMPANY, 130); SetColumnWidth(COLUMN_NOTES, 150); SetColumnWidth(COLUMN_COUNTRY, 32); - SetColumnWidth(COLUMN_EMULATION_STATE, 120); - SetColumnWidth(COLUMN_PLATFORM, 50); + SetColumnWidth(COLUMN_EMULATION_STATE, 50); Hide(); @@ -235,16 +257,23 @@ void CGameListCtrl::Update() SetItemTextColour(i, wxColour(0xFF0000)); } + // Sort items by Title + wxListEvent event; + event.m_col = COLUMN_TITLE; last_column = 0; + OnColumnClick(event); + SetColumnWidth(COLUMN_SIZE, wxLIST_AUTOSIZE); } else { wxString errorString; - if ((SConfig::GetInstance().m_ListGC || - SConfig::GetInstance().m_ListWii || + // We just check for one hide setting to be enabled, as we may only have GC games + // for example, and hide them, so we should show the second message instead + if ((SConfig::GetInstance().m_ListGC && + SConfig::GetInstance().m_ListWii && SConfig::GetInstance().m_ListWad) && - (SConfig::GetInstance().m_ListJap || - SConfig::GetInstance().m_ListUsa || + (SConfig::GetInstance().m_ListJap && + SConfig::GetInstance().m_ListUsa && SConfig::GetInstance().m_ListPal)) { errorString = _("Dolphin could not find any GC/Wii ISOs. Doubleclick here to browse for files..."); @@ -253,11 +282,10 @@ void CGameListCtrl::Update() { errorString = _("Dolphin is currently set to hide all games. Doubleclick here to show all games..."); } - InsertColumn(COLUMN_BANNER, _("No ISOs or WADS found")); - long index = InsertItem(0, wxString::FromAscii("msgRow")); - SetItem(index, COLUMN_BANNER, errorString); + InsertColumn(0, _("No ISOs or WADS found")); + long index = InsertItem(0, errorString); SetItemFont(index, *wxITALIC_FONT); - SetColumnWidth(COLUMN_BANNER, wxLIST_AUTOSIZE); + SetColumnWidth(0, wxLIST_AUTOSIZE); } Show(); @@ -308,14 +336,14 @@ void CGameListCtrl::InsertItemInReportView(long _Index) m_gamePath.append(std::string(rISOFile.GetFileName()) + '\n'); int ImageIndex = -1; - if (rISOFile.GetImage().IsOk()) - { ImageIndex = m_imageListSmall->Add(rISOFile.GetImage()); - } - // Insert a row with the banner image - long ItemIndex = InsertItem(_Index, wxEmptyString, ImageIndex); + // Insert a row with the platform image, that will be used as the Index + long ItemIndex = InsertItem(_Index, wxEmptyString, m_PlatformImageIndex[rISOFile.GetPlatform()]); + + // Set the game's banner in the second column + SetItemColumnImage(_Index, COLUMN_BANNER, ImageIndex); switch (rISOFile.GetCountry()) { @@ -357,57 +385,16 @@ void CGameListCtrl::InsertItemInReportView(long _Index) std::string GameIni = FULL_GAMECONFIG_DIR + (rISOFile.GetUniqueID()) + ".ini"; ini.Load(GameIni.c_str()); - // Emulation status = COLUMN_EMULATION_STATE - { - wxListItem item; - item.SetId(_Index); - std::string EmuState; - std::string issues; - item.SetColumn(COLUMN_EMULATION_STATE); - ini.Get("EmuState","EmulationStateId",&EmuState); - if (!EmuState.empty()) - { - switch(atoi(EmuState.c_str())) - { - case 5: - item.SetText(_("Perfect")); - break; - case 4: - item.SetText(_("In Game")); - break; - case 3: - item.SetText(_("Intro")); - break; - case 2: - //NOTE (Daco): IMO under 2 goes problems like music and games that only work with specific settings - ini.Get("EmuState","EmulationIssues",&issues); - if (!issues.empty()) - { - issues = "Problems: " + issues; - item.SetText(wxString::FromAscii(issues.c_str())); - } - else - item.SetText(_("Problems: Other")); - break; - case 1: - item.SetText(_("Broken")); - break; - case 0: - item.SetText(_("Not Set")); - break; - default: - //if the EmuState isn't a number between 0 & 5 we dont know the state D: - item.SetText(_("unknown emu ID")); - break; - } - } - SetItem(item); - } + // Emulation status + int nState; + + ini.Get("EmuState", "EmulationStateId", &nState); + + // Emulation state + SetItemColumnImage(_Index, COLUMN_EMULATION_STATE, m_EmuStateImageIndex[nState]); // Country SetItemColumnImage(_Index, COLUMN_COUNTRY, m_FlagImageIndex[rISOFile.GetCountry()]); - //Platform - SetItemColumnImage(_Index, COLUMN_PLATFORM, m_PlatformImageIndex[rISOFile.GetPlatform()]); // Background color SetBackgroundColor(); @@ -640,6 +627,19 @@ int wxCALLBACK wxListCompare(long item1, long item2, long sortData) if(iso1->GetPlatform() > iso2->GetPlatform()) return 1 *t; if(iso1->GetPlatform() < iso2->GetPlatform()) return -1 *t; return 0; + case CGameListCtrl::COLUMN_EMULATION_STATE: + IniFile ini; int nState1 = 0, nState2 = 0; + std::string GameIni1 = FULL_GAMECONFIG_DIR + iso1->GetUniqueID() + ".ini"; + std::string GameIni2 = FULL_GAMECONFIG_DIR + iso2->GetUniqueID() + ".ini"; + + ini.Load(GameIni1.c_str()); + ini.Get("EmuState", "EmulationStateId", &nState1); + ini.Load(GameIni2.c_str()); + ini.Get("EmuState", "EmulationStateId", &nState2); + + if(nState1 > nState2) return 1 *t; + if(nState1 < nState2) return -1 *t; + return 0; } return 0; @@ -647,7 +647,7 @@ int wxCALLBACK wxListCompare(long item1, long item2, long sortData) void CGameListCtrl::OnColumnClick(wxListEvent& event) { - if(event.GetColumn() != COLUMN_BANNER && event.GetColumn() != COLUMN_EMULATION_STATE) + if(event.GetColumn() != COLUMN_BANNER) { int current_column = event.GetColumn(); @@ -670,6 +670,107 @@ void CGameListCtrl::OnColumnClick(wxListEvent& event) event.Skip(); } +// This is used by keyboard gamelist search +void CGameListCtrl::OnKeyPress(wxListEvent& event) +{ + static int lastKey = 0, sLoop = 0; + int Loop = 0; + + for (int i = 0; i < (int)m_ISOFiles.size(); i++) + { + // Easy way to get game string + wxListItem bleh; + bleh.SetId(i); + bleh.SetColumn(COLUMN_TITLE); + bleh.SetMask(wxLIST_MASK_TEXT); + GetItem(bleh); + + wxString text = bleh.GetText(); + + if (text.MakeUpper().at(0) == event.GetKeyCode()) + { + if (lastKey == event.GetKeyCode() && Loop < sLoop) + { + Loop++; + if (i+1 == (int)m_ISOFiles.size()) + i = -1; + continue; + } + else if (lastKey != event.GetKeyCode()) + sLoop = 0; + + lastKey = event.GetKeyCode(); + sLoop++; + + UnselectAll(); + SetItemState(i, wxLIST_STATE_SELECTED|wxLIST_STATE_FOCUSED, wxLIST_STATE_SELECTED|wxLIST_STATE_FOCUSED); + EnsureVisible(i); + break; + } + + // If we get past the last game in the list, we'll have to go back to the first one. + if (i+1 == (int)m_ISOFiles.size() && sLoop > 0 && Loop > 0) + i = -1; + } + + event.Skip(); +} + +// This shows a little tooltip with the current Game's emulation state +void CGameListCtrl::OnMouseMotion(wxMouseEvent& event) +{ + int flags; long subitem; + long item = HitTest(event.GetPosition(), flags, &subitem); + static int lastItem = -1; + + if (item != wxNOT_FOUND) + { + if (subitem == COLUMN_EMULATION_STATE) + { + if (toolTip || lastItem == item) { + event.Skip(); + return; + } + + const GameListItem& rISO = m_ISOFiles[GetItemData(item)]; + + IniFile ini; + ini.Load(std::string(FULL_GAMECONFIG_DIR + (rISO.GetUniqueID()) + ".ini").c_str()); + + // Emulation status + std::string emuState[5] = {"Broken", "Intro", "In-Game", "Playable", "Perfect"}, issues; + + int nState; + ini.Get("EmuState", "EmulationStateId", &nState); + ini.Get("EmuState", "EmulationIssues", &issues, "No Description"); + + // If the key exists in the ini but is not set, we still use "No description" + issues = (issues == "" ? "No Description" : issues); + + // Get item Coords then convert from wxWindow coord to Screen coord + wxRect Rect; + this->GetItemRect(item, Rect); + int mx = Rect.GetWidth(); + int my = Rect.GetY(); + this->ClientToScreen(&mx, &my); + + // Show a tooltip containing the EmuState and the state description + if (nState > 0 && nState < 6) + toolTip = new wxEmuStateTip(this->GetGrandParent(), wxString::Format(wxT(" ^ %s :\n%s"), + wxString::FromAscii(emuState[nState - 1].c_str()), wxString::FromAscii(issues.c_str())), &toolTip); + else + toolTip = new wxEmuStateTip(this->GetGrandParent(), wxT("Not Set"), &toolTip); + + toolTip->SetBoundingRect(wxRect(mx - GetColumnWidth(subitem), my, GetColumnWidth(subitem), Rect.GetHeight())); + toolTip->SetPosition(wxPoint(mx - GetColumnWidth(subitem), my - 10 + Rect.GetHeight())); + + lastItem = item; + } + } + + event.Skip(); +} + void CGameListCtrl::OnRightClick(wxMouseEvent& event) { // Focus the clicked item. @@ -1044,11 +1145,22 @@ void CGameListCtrl::AutomaticColumnWidth() + GetColumnWidth(COLUMN_SIZE) + GetColumnWidth(COLUMN_EMULATION_STATE) + GetColumnWidth(COLUMN_PLATFORM) - + 8); // some pad to keep the horizontal scrollbar away :) + + 5); // some pad to keep the horizontal scrollbar away :) - SetColumnWidth(COLUMN_TITLE, wxMax(0.3*resizable, 100)); - SetColumnWidth(COLUMN_COMPANY, wxMax(0.2*resizable, 90)); - SetColumnWidth(COLUMN_NOTES, wxMax(0.5*resizable, 100)); + // We hide the Company column if the window is too small + if (0.66*resizable > 200) + { + SetColumnWidth(COLUMN_TITLE, 0.66*resizable); + SetColumnWidth(COLUMN_COMPANY, 0.34*resizable); + } + else + { + SetColumnWidth(COLUMN_TITLE, resizable); + SetColumnWidth(COLUMN_COMPANY, 0); + } + + // We currently always hide the notes column + SetColumnWidth(COLUMN_NOTES, 0); } } diff --git a/Source/Core/DolphinWX/Src/GameListCtrl.h b/Source/Core/DolphinWX/Src/GameListCtrl.h index b8ee29732c..7a7989a5ab 100644 --- a/Source/Core/DolphinWX/Src/GameListCtrl.h +++ b/Source/Core/DolphinWX/Src/GameListCtrl.h @@ -21,9 +21,22 @@ #include #include +#include #include "ISOFile.h" + +class wxEmuStateTip : public wxTipWindow +{ +public: + wxEmuStateTip(wxWindow* parent, const wxString& text, wxEmuStateTip** windowPtr) + : wxTipWindow(parent, text, 70, (wxTipWindow**)windowPtr) {} + // wxTipWindow doesn't correctly handle KeyEvents and crashes... we must overload that. + void OnKeyDown(wxKeyEvent& event) { event.StopPropagation(); Close(); } +private: + DECLARE_EVENT_TABLE() +}; + class CGameListCtrl : public wxListCtrl { public: @@ -43,14 +56,14 @@ public: enum { - COLUMN_BANNER = 0, + COLUMN_PLATFORM = 0, + COLUMN_BANNER, COLUMN_TITLE, COLUMN_COMPANY, COLUMN_NOTES, COLUMN_COUNTRY, COLUMN_SIZE, COLUMN_EMULATION_STATE, - COLUMN_PLATFORM, NUMBER_OF_COLUMN }; @@ -58,6 +71,7 @@ private: std::vector m_FlagImageIndex; std::vector m_PlatformImageIndex; + std::vector m_EmuStateImageIndex; std::vector m_ISOFiles; // NetPlay string for the gamelist @@ -67,6 +81,7 @@ private: int last_column; int last_sort; wxSize lastpos; + wxEmuStateTip *toolTip; void InitBitmaps(); void InsertItemInReportView(long _Index); void SetBackgroundColor(); @@ -76,8 +91,10 @@ private: // events void OnRightClick(wxMouseEvent& event); + void OnMouseMotion(wxMouseEvent& event); void OnColumnClick(wxListEvent& event); void OnColBeginDrag(wxListEvent& event); + void OnKeyPress(wxListEvent& event); void OnSize(wxSizeEvent& event); void OnProperties(wxCommandEvent& event); void OnOpenContainingFolder(wxCommandEvent& event); @@ -100,6 +117,5 @@ private: static void MultiCompressCB(const char* text, float percent, void* arg); }; - #endif diff --git a/Source/Core/DolphinWX/Src/ISOProperties.cpp b/Source/Core/DolphinWX/Src/ISOProperties.cpp index 83fc1405dd..a2546c80b3 100644 --- a/Source/Core/DolphinWX/Src/ISOProperties.cpp +++ b/Source/Core/DolphinWX/Src/ISOProperties.cpp @@ -334,12 +334,12 @@ void CISOProperties::CreateGUIControls(bool IsWad) EmuStateText = new wxStaticText(m_GameConfig, ID_EMUSTATE_TEXT, _("Emulation State: "), wxDefaultPosition, wxDefaultSize); arrayStringFor_EmuState.Add(_("Not Set")); arrayStringFor_EmuState.Add(_("Broken")); - arrayStringFor_EmuState.Add(_("Problems: ")); arrayStringFor_EmuState.Add(_("Intro")); arrayStringFor_EmuState.Add(_("In Game")); + arrayStringFor_EmuState.Add(_("Playable")); arrayStringFor_EmuState.Add(_("Perfect")); EmuState = new wxChoice(m_GameConfig, ID_EMUSTATE, wxDefaultPosition, wxDefaultSize, arrayStringFor_EmuState, 0, wxDefaultValidator); - EmuIssues = new wxTextCtrl(m_GameConfig,ID_EMU_ISSUES, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0,wxDefaultValidator); + EmuIssues = new wxTextCtrl(m_GameConfig, ID_EMU_ISSUES, wxEmptyString, wxDefaultPosition, wxDefaultSize, 0, wxDefaultValidator); wxBoxSizer* sConfigPage; sConfigPage = new wxBoxSizer(wxVERTICAL); @@ -753,7 +753,7 @@ void CISOProperties::SetRefresh(wxCommandEvent& event) bRefreshList = true; if (event.GetId() == ID_EMUSTATE) - EmuIssues->Enable(event.GetSelection() == 2); + EmuIssues->Enable(event.GetSelection() != 0); } void CISOProperties::LoadGameConfig() @@ -839,7 +839,7 @@ void CISOProperties::LoadGameConfig() EmuIssues->SetValue(wxString::FromAscii(sTemp.c_str())); bRefreshList = true; } - EmuIssues->Enable(EmuState->GetSelection() == 2); + EmuIssues->Enable(EmuState->GetSelection() != 0); PatchList_Load(); ActionReplayList_Load(); diff --git a/Source/Core/DolphinWX/resources/Platform_Gamecube.xpm b/Source/Core/DolphinWX/resources/Platform_Gamecube.xpm index 5b8f5ef50a..25c8b8265e 100644 --- a/Source/Core/DolphinWX/resources/Platform_Gamecube.xpm +++ b/Source/Core/DolphinWX/resources/Platform_Gamecube.xpm @@ -1,390 +1,240 @@ /* XPM */ -static const char *const Platform_Gamecube_xpm[] = { +static const char *Platform_Gamecube_xpm[] = { /* columns rows colors chars-per-pixel */ -"96 32 354 2", -"!X c #E3E2E2", -"= c #E3E2E3", -"JX c #0C0708", -"+ c #E6E6E6", -"yo c #7F7D7D", -"eX c #ECEBEC", -"- c #EFEFEF", -"c. c #828181", -"d. c #181415", -"c c #F5F4F5", -"Lo c #1E191A", -">. c #F8F8F8", -"eo c #1E191C", -"}. c #211D1E", -"E. c #272224", -"|X c #949393", -"5. c #9A9898", -"{ c #9A9899", -".o c #9D9C9C", -"3 c #332F30", -"/. c #A3A1A1", -"J. c #A3A1A2", -"/X c #3C3839", -"`X c #424040", -"`. c #454142", -"%o c #484545", -"io c #B5B3B4", -"Wo c #B8B7B7", -"FX c #514E4E", -"pX c #514E4F", -"M. c #C1C0C0", -"kX c #575355", -"jo c #C7C5C5", -"'X c #5A5757", -"So c #C7C5C6", -"2X c #CAC9C9", -";X c #CAC9CA", -" X c #D6D6D6", -"g. c #6C696A", -"U c #757273", -"&o c #E5E4E4", -"> c #E5E4E5", -"0. c #787677", -"-X c #E8E8E8", -"%X c #817F7F", -"mo c #1A1617", -"7o c #F4F5F4", -"-o c #878485", -"^ c #1D1A1B", -";. c #201B1C", -"'. c #201B1D", -"@ c #FAFAFA", -"Mo c #8D8C8C", -"6. c #231F20", -"no c #939192", -"y. c #262324", -"Q. c #999998", -"y c #2C2829", -"V. c #9F9E9E", -"x. c #322D2F", -"Io c #ABA8A9", -"OX c #3E3A3B", -"F. c #3E3A3C", -"xo c #413E3E", -"r. c #B1B0B0", -"^X c #474344", -"Ro c #B7B5B5", -"r c #BAB9B9", -"lX c #504C4C", -"d c #595556", -"-. c #C9C7C8", -"v c #5C595A", -"4X c #CCCBCB", -"3X c #CCCBCC", -"nX c #656262", -"Jo c #6E6B6C", -" c None", -"o. c #716F6F", -"bX c #DEDDDD", -"9o c #E7E6E6", -"j c #7A7879", -"% c #EAEAEA", -"l c #838182", -"T. c #868584", -"p. c #191415", -"7X c #F3F3F3", -"4. c #868585", -"&X c #191416", -"qo c #898686", -";o c #898687", -"o c #312E2F", -"i c #A1A0A0", -"2 c #373334", -"6 c #3A3738", -"zo c #A7A5A6", -"Q c #AAA9A9", -"(. c #AAA9AA", -"P. c #434041", -"tX c #B3B2B2", -"Go c #B9B7B8", -"hX c #4C494A", -"iX c #524E50", -":. c #555253", -"{. c #5B5758", -"yX c #5E5B5C", -",X c #CECDCD", -"%. c #CECDCE", -"U. c #676464", -"R c #D7D6D6", -"E c #D7D6D7", -"=X c #DADADA", -"!. c #706D6D", -"$o c #DADADB", -"m c #737172", -": c #E3E3E2", -"~X c #E3E3E3", -"I. c #E6E7E6", -"+X c #E9E8E9", -"6X c #ECECEC", -"b c #151112", -"qX c #F2F1F1", -"I c #1B1617", -"X c #F5F5F5", -"{X c #888486", -"+. c #1E1A1B", -"J c #8E8C8D", -"M c #FEFEFE", -"$X c #241F21", -"]. c #272324", -"v. c #9A9999", -"lo c #302C2D", -"a c #333031", -"9 c #393536", -"D. c #A9A7A7", -"Oo c #3C3939", -"O. c #A9A7A8", -"Z. c #ACABAB", -"h. c #423E3F", -"wo c #B2B0B0", -"0 c #454243", -"uo c #B5B4B4", -"xX c #4E4B4C", -"| c #BEBDBD", -"[. c #545051", -"/ c #C4C2C3", -"1X c #D0CFCF", -"No c #D3D3D3", -"z. c #696666", -"#o c #D9D8D8", -" . c #DCDCDC", -"UX c #726F70", -"O c #E5E5E5", -"m. c #EBEAEA", -"' c #7E7C7C", -"Ho c #EEEEEE", -".X c #848182", -"Z c #171314", -"N. c #1D1819", -"}X c #8A8688", -"5o c #1D181A", -")X c #F7F7F7", -"ro c #8D8A8B", -"Y. c #201C1D", -"LX c #908E8E", -"k. c #232021", -"7. c #292526", -"G c #999797", -"G. c #322E2F", -"fX c #A2A0A0", -"1. c #353233", -"f. c #A5A4A4", -"C c #3B3738", -"a. c #ABA9AA", -"e. c #AEADAD", -"sX c #B7B6B6", -"NX c #4D494A", -"zX c #504D4D", -"Do c #C0BFBF", -"6o c #565252", -".. c #C0BFC0", -"Zo c #565253", -"f c #C3C3C3", -"mX c #595656", -"} c #C6C4C5", -"F c #625F60", -"K. c #D5D5D5", -"(X c #DBDADA", -"PX c #747172", -"X c #CBCACB", -"( c #646161", -"3. c #D1CFD0", -"7 c #D4D3D3", -"u. c #D4D3D4", -"q c #D7D7D7", -"w c #6D6A6A", -"s. c #6D6A6B", -"VX c #E0E0E0", -"w. c #767374", -"l. c #797777", -"ko c #E6E5E5", -", c #E9E9E9", -"D c #120E0F", -"KX c #828080", -"W. c #828081", -"; c #F2F2F2", -"X. c #1B1718", -"x c #888586", -"Ko c #211C1D", -"< c #FBFBFB", -"H. c #918E8E", -") c #242021", -"<. c #2D292A", -",o c #302D2E", -"do c #332E30", -"Co c #A6A4A5", -"co c #A9A8A7", -"L. c #3F3B3C", -"]X c #AFADAD", -"GX c #AFADAE", -"Fo c #B2B1B1", -"8o c #484445", -"To c #B8B6B6", -"*o c #B8B6B7", -"so c #BBBABA", -"MX c #514D4E", -"oo c #5A5656", -"~ c #635F60", -"QX c #666363", -"vo c #666364", -"Y c #D6D5D5", -"n. c #DFDEDE", -"Xo c #E8E7E7", -"B c #110C0E", -"5X c #EBEBEB", -"K c #817E7E", -"9. c #141011", -"9X c #F1F0F0", -"A c #848282", -"bo c #848283", -"W c #F4F4F4", -" o c #1D191A", -"Po c #231E1F", -"& c #FDFDFD", -"u c #908F8F", -"] c #262223", -"i. c #939092", -"S c #969495", -"Vo c #2C2728", -"YX c #2F2B2C", -"S. c #322F30", -"C. c #A2A1A1", -"3o c #383435", -"t c #A5A2A3", -"h c #413D3E", -"po c #B4B3B3", -"ao c #4A4647", -"TX c #B7B4B6", -"A. c #4D4A4B", -"Qo c #BDBCBC", -"DX c #504E4E", -"uX c #534F50", -"Ao c #C3C1C1", -"cX c #565353", -"SX c #565354", -"aX c #5C5859", -"gX c #C9C9C9", -"@o c #5F5C5D", -"1 c #626060", -"@X c #CFCECE", -",. c #686565", -"EX c #686566", -"T c #D8D7D7", -"IX c #716E6E", -"1o c #716E6F", -"0o c #747272", -"_. c #E1E0E1", -"! c #747273", -"o c #E4E4E4", -"$ c #EAE9E9", -"k c #7D7B7B", -"2. c #EDEDEC", -"n c #161213", -"). c #F0F1F1", -"=o c #1C1718", -"_X c #F6F6F6", -"[ c #898888", -"_ c #1F1B1C", -"CX c #1F1B1D", -"rX c #FCFBFB", -"|. c #221F20", -"oX c #252022", +"96 32 204 2", +"E. c #B1B0B0", +"] c #8E8B8C", +"`. c #E8E8E8", +"O c #CFCECF", +"q. c #F7F7F7", +" . c #231F20", +"N. c #191415", +"x. c #191416", +"~ c #322E2F", +"G. c #4B4849", +"S. c #646263", +"@. c #5A5758", +"^. c #504C4D", +"4 c #828080", +"p. c #C3C3C3", +":. c #B9B8B8", +"H c #C8C7C7", +"c. c #BEBCBC", +"L c #E1E1E1", +"G c #F0F0EF", +"n c #F0F0F0", +"L. c #E6E5E6", ". c #FFFFFF", -"#X c #282425", -"#. c #2E292A", -"RX c #2E292B", -"e c #312D2E", -"vX c #A4A3A3", -"p c #3A3637", -"&. c #3D3A3A", -"ho c #B3B1B1", -"HX c #B6B5B5", -"t. c #4C4849", -"dX c #4F4C4C", -"ZX c #4F4C4D", -"P c #BFBEBE", -"V c #525050", -"q. c #BFBEBF", -"fo c #555152", -"jX c #585555", -"8 c #C5C3C4", -"N c #5E5A5B", -"Bo c #D1D0D0", -"2o c #D4D4D4", -"WX c #6A6767", -"R. c #D7D5D6", +"! c #1C1819", +"d. c #2B2728", +"z c #535051", +"H. c #9E9E9E", +"a c #716E6F", +"9 c #8A8888", +"1X c #B2B1B1", +"V. c #8F8C8D", +"XX c #A8A6A7", +"X. c #DFDEDF", +"o. c #EEEDED", +";X c #151112", +", c #242021", +"$ c #3D3A3A", +"j. c #1A1517", +"]. c #292426", +"f. c #656364", +"[. c #6A6768", +"y. c #929091", +"& c #BAB9B9", +"I. c #D3D3D3", +"# c #B0AEAF", +"o c #C9C8C8", +"%X c #C9C8C9", +",X c #F1F1F1", +"7 c #2C2829", +"5. c #221D1E", +"!. c #3B3738", +"x c #221D1F", +"[ c #312C2D", +"u c #7C7A7A", +"-X c #8B8989", +"A c #B3B2B2", +"F. c #C2C1C1", +"a. c #B8B6B6", +"P c #C2C1C2", +">X c #D1D0D1", +"K c #EAEAEA", +"#. c #C7C5C6", +"0 c #E0DFDF", +"$X c #F9F9F9", +"}. c #EFEEEE", +"v. c #252121", +"8 c #252122", +"{ c #1B1617", +"&. c #3E3B3D", +"d c #343031", +"+X c #2A2526", +"y c #2A2527", +"< c #5C5959", +"OX c #848282", +"I c #615D5E", +"#X c #898686", +"6. c #939192", +" c #2A2627", +"v c #393535", +":X c #615E5F", +"&X c #575354", +"J c #706D6E", +"2. c #A2A1A1", +">. c #7F7C7D", /* pixels */ " ", " ", " ", " ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". X o O O O O O + @ . . # O $ . . . % O & . . . . * = - ; : O O O O > , < . . . . . . . . . . . . . ", -"% 1 2 3 4 4 4 5 6 7 . . 8 9 0 q . * w e r . . . . t y u i 4 p 3 3 a s d + . . . . . . . . . . . . . ", -"f g h j k l l z x > . c v b n m . M N B V - . . > C Z A S D F G H J K L ; . . . . . . . . . . . . . ", -"P I U . ; Y T R E W . Q g ! ~ ^ / . ( ) _ ` . . ' _ ] [ { g ' } | .. . . . . . . . . . . . . . . . ", -"..X.o.. O.+.@.#.$.%.; &.*.=.-.;.:.>.,.<.1.9 2.3.#.C s 4.5.6.7.8.9.0.. . . . . . . . . . . . . . . . ", -"q.I w.. O e.r.t.y.u.i.p.a.. . s.d.f.g.h.j.k.l.z.y ` x.c.v.d.b.n.7 m.. . . . . . . . . . . . . . . . ", -"M.N.B.V.C.Z.a.A.S.D.F.G.H.J.; K.<.L.P.h.I.U.Y.+.T.R.E.W.Q.g !.~.^./.G (.).. . . . . . . . . . . . . ", -"_.`.6.Y.'._ _ ].[.{.] 5 }.|. X. .XXXoXOX+X@X#Xp % 7 $X%Xj._ ] _ ;.Y.&X*X=X. . . . . . . . . . . . . ", -". -X;X:X>X>X:X,X.& 9X- 0X@ X qX, - wX$ eX; W W W . M W W W W W W X & ", -". . . . . . . . . . . . . . . rXtXyXuXiXiXpXaXsX1XdXfX. . . gXhXJ.e.jXkXlXzXxXcXvXbXnXmXpXMXMXNXBXVX ", -". . . . . . . . . . . . . . . $ hXCXZXAXSXDXp.FXGX9.z . . . HXJXKXLXZ B.PXIXUXYX6 TXRX1.EXWXQX{.EX!X ", -". . . . . . . . . . . . . . . ~X^X/X(X)X_X% `X'X]X[X{X. . . r g }X|X o.owXXo5XooOo+oG.@o#o$o= 0X@ M ", -". . . . . . . . . . . . . . . o %op &o. . . + - *o=o-o. . . r d.;oS ] :oG.>o,o > , < 1 2 . . . . . ", +" . . . . 3 4 , > 5 6 7 > 5 8 9 0 . . . . ", +" . X q w e r t y u i p a 5 t s d f * . . ", +" . g h j t s k 1 . . . + l z x c v & . . ", +" b n m M N B b . V C Z b . b A S D . F G ", +" H J @ K L . . P I x r U Y T . . . R E W ", +" Q ! ~ R . T ^ / ( ) ~ j _ ` . ' ] [ { } ", +" | . .... X.o.O.+.r s @.#.$.%.&.*.=., -. ", +" | .;.:.T >.E ,.<.1.2.<.3.4.5.> M ~ , -. ", +" | .;.:.. 6.7.8.9.0.q.w.e.5 5 r.t.e , -. ", +" | .;.:.. y.u.e i.p.a.s.=.d.f.g.| h 8 -. ", +" | .;.& . h.j.~ k.l.z._ =.x.:.. c.;.8 -. ", +" | .v.b.. n.m.M.N.B.V.N.t C.Z.. O.: 8 -. ", +" O.x A.S.D.. . F.G.H.J.z K.. . L.P.7 _ I. ", +" U.Y.e M.e T.n . D R.K g.. i E.=.t M 7.3 ", +" W.Q.!. .M.~.^./.+ . . 0.(.).5.t ._.H 2 ", +" . . `.'.~ s ].5 [.{.}.|. Xt 5..XXXi . . ", +" . . . . oXOX, +X@X6.#X! 5 8 h.L . . . . ", +" . . . . . $X%X&X*X=X-X;X:X>X2 . . . . . ", +" . . . . . . . ,XC XX c #F4F5F5", -"5X c #74DCF6", -"_ c #F9F9F9", -"C c #F9F9FA", -"k c #707276", -"8 c #898C8F", -"y c #7F8184", -"~. c #7F8185", -"4 c #8E9092", -"l c #9D9FA1", -"I c #ACAEB0", -"E c #939498", -"+. c #B1B2B3", -"< c #CACCCD", -"y. c #D9DBDB", -"`. c #CFD0D1", -",. c #C0C1C4", -"x c #EDEEEE", -"0 c #D4D4D5", -"z. c #E3E3E3", -"B c #87898C", -":X c #C7F1FC", -".. c #87898D", -"A c #96989B", -"Y c #A5A7AA", -"h. c #B4B6B8", -"[ c #EBEBEB", -") c #FAFAFA", -"H c #FAFAFB", -"3X c #58D5F5", -"j c #8A8D90", -"v c #808285", -"m. c #8F9194", -"r. c #9EA0A3", -"C. c #85868B", -"g c #ADAFB1", -"p. c #BCBEBF", -"). c #A3A4A8", -"J c #A8A8AB", -"s c #DFE0E1", +"96 32 347 2", +"hX c #71CBE2", +"v. c #DADCDC", +"a c #DDDDDE", +"!. c #DDDDDF", +"} c #E0E1E1", +"i c #76777B", +")X c #62D8F4", +"go c #5CD6F5", +"a. c #ECEBEC", +">. c #EFEFEF", +"FX c #6EDCF7", +"x. c #7C7F82", +"qo c #8CE3F7", +"sX c #9EE6F8", +"Z c #F2F3F3", +"oo c #A7E9F9", +"yX c #F2F3F4", +"Bo c #AAEAFA", +"c c #828488", +"3. c #85888A", +"X c #F8F8F8", +"*X c #85888B", +"do c #D1F4FC", +"po c #CEF3FC", +"H c #88898C", +"K. c #85888C", +"gX c #D7FCFF", +"6. c #8B8D8F", +"*o c #F8FEFE", +"`X c #F2FCFF", +" o c #EFFBFF", +";X c #F5FDFF", +"M. c #9A9B9E", +"] c #B8BABB", +"z. c #BEBFC1", +", c #D6D6D8", +"N c #E8E8E9", +"BX c #58D6F4", +"vo c #6AD9F5", +"ao c #79DEF7", +"zX c #4FD9FA", +"V c #7B7D81", +" . c #F1F1F0", +"r c #7E8184", +"!X c #94E4F8", +"m. c #F1F1F2", +"IX c #9DE7FA", +"Fo c #BEEFFB", +"Do c #B5ECFB", +"` c #84868A", +".. c #FAFAF9", +"PX c #B8F0FE", +"8 c #FAFAFA", +"Ho c #DCF6FD", +"yo c #E5F9FD", +"wo c #E2F8FD", +"rX c #DFF7FD", +"3X c #E2F8FE", +"# c #FDFEFD", +"QX c #FDFEFE", +"qX c #848C92", +"6X c #8A8E92", +"r. c #8D8F93", +"_ c #909396", +"u c #96989A", +">X c #84959C", +",. c #9C9DA0", +"A c #9FA1A3", +"'. c #9FA1A4", +"2 c #ABABAD", +"D. c #AEAFB2", +"l. c #B1B3B4", +"iX c #BDBDC0", +"D c #C3C5C5", +"( c #C6C6C8", +"v c #C9CACB", +"<. c #CCCECF", " c None", -". c #C2C3C3", -"9 c #C2C3C5", -"5 c #D1D2D3", -"*. c #E0E1E1", -"r c #C7C7CA", -"e c #D6D6D7", -"@ c #EFF0F0", -"2 c #EFF0F1", -"$X c #E5E5E6", -"* c #F4F4F4", -"@X c #F4F4F5", -"}. c #75787B", -"7X c #D5F5FC", -"c. c #939697", -"[. c #7A7C7F", -"2. c #898B8E", -"U. c #898B8F", -"Q. c #A7A9AB", -"H. c #989A9E", -"G. c #B6B8BA", -"Z c #BBBCBD", -"B. c #BBBCBE", -"7. c #CACBCC", -"4. c #E8E9E9", -"1X c #66D9F5", -"3. c #E3E2E3", -"# c #FCFCFC", -"( c #FCFCFD", -"' c #828487", -"Y. c #919395", -"!. c #919396", -"0. c #AFB1B3", -"& c #D2D3D3", -".X c #E1E2E3", -"$ c #E6E6E6", -"T c #F5F5F6", -"/. c #7B7D80", -"N c #85888C", -"2X c #B9EEFB", -"OX c #BCBDBF", -"M. c #E4E6E7", -"t. c #DADBDB", -"#. c #DADBDC", -"s. c #E9EAEA", -"e. c #F8F9F8", -"X. c #D0D0D2", -"n c #FDFDFD", -",X c #4AD2F4", -"w. c #7E8185", -"^ c #838588", -"3 c #A1A3A5", -"{. c #A1A3A6", -"7 c #B0B2B3", -":. c #B5B6B8", -"a. c #F6F6F5", -"X c #F6F6F6", -"z c #F6F6F7", -"XX c #FBFAFB", -"u. c #86898C", -"k. c #7C7E81", -"=. c #8B8D90", -"Q c #8B8D91", -"F. c #A9ABAC", -"j. c #B8BABB", -">X c #9DE7F9", -"D c #BDBEC0", -"|. c #B3B3B6", -"^. c #CCCDCF", -"P. c #C2C2C4", -"V. c #D1D1D3", -"L c #FEFEFD", -"S c #EFEFF0", -"G c #E5E4E5", -"O c #FEFEFE", -"u c #FEFEFF", -";X c #2ECBF2", -"w c #848689", -"c c #939598", -"V c #A2A4A7", -"I. c #C0C2C3", -"A. c #B6B7B9", +"| c #DBDCDD", +"w. c #E1E1E2", +"> c #E4E5E5", +"EX c #60D7F5", +" X c #EDEBEC", +"RX c #72DDF6", +"8o c #69DAF6", +"+X c #F0ECED", +"Y. c #EDEEEF", +"eo c #8AE2F8", +"g. c #F3F3F4", +"0o c #ABEAFA", +"]. c #F9F8F7", +"'X c #CCF2FC", +"no c #D8F6FD", +"J c #86888C", +"HX c #E7F8FC", +"$ c #FCFCFC", +"Jo c #F0FBFE", +"_X c #DEF8FF", +"to c #F3FCFE", +"/. c #8F9194", +"k c #8F9195", +"n c #95969A", +"`. c #989A9C", +"h c #9E9FA2", +"5X c #899EA7", +"0X c #8FA6AD", +"[. c #AAACAE", +"&. c #B9BABC", +"M c #C2C3C4", +"H. c #C5C7C8", +"f. c #CBCCCD", +"c. c #D1D1D2", +"1 c #DDDEDF", +"6o c #38CEF3", +"/X c #44CFF2", +"#o c #56D5F4", +"VX c #53D4F4", +"9X c #D4E7ED", +"jo c #59D6F5", +"bX c #56D5F5", +"Y c #ECECED", +".X c #F2EEEF", +"-. c #EFF0F0", +"LX c #74DCF7", +"aX c #80E0F8", +"7o c #7DDFF8", +"#X c #7F8184", +"xo c #95E4F8", +"o c #88E1F7", +"5o c #91E4F8", +"TX c #8BE2F8", +"pX c #F1F2F3", +".o c #9AE7F9", +"+. c #818387", +"YX c #B5EDFA", +"S. c #818388", +"R c #F7F7F7", +"Q c #F7F7F8", +"o c #FAFBFA", +"* c #FAFBFB", +"[ c #8A8C8E", +"WX c #EEFAFD", +"R. c #8A8C8F", +"W. c #909194", +"^. c #9C9EA1", +"V. c #A2A3A6", +";. c #A5A7A9", +"/ c #AEB0B1", +"U. c #B4B5B7", +"' c #BDBEC0", +"t c #C0C2C4", +"OX c #CCCCCD", +"C c #CCCCCE", +"j. c #CFD0D1", +"jX c #A5CBD6", +"P c #D5D5D6", +"f c #DBDDDC", +"t. c #E1E2E3", +"y c #E7E7E9", +"1o c #57D5F4", +"%o c #54D4F4", +":o c #66DAF6", +"4X c #CFE8EF", +"B. c #EDECED", +"nX c #45D5F9", +"4 c #F0F0F0", +"^X c #72DEF9", +"&o c #9FE7F8", +"s c #808184", +"(X c #99E5F8", +"d. c #7D8084", +"i. c #838588", +"2X c #F0F6F7", +"^ c #838589", +"Mo c #C0EFFB", +"Lo c #C3F0FC", +". c #F9F9FA", +"tX c #E7F9FD", +"L c #FFFEFE", +"d c #8C8E91", +"Q. c #929397", +"(. c #959799", +"XX c #9B999C", +"B c #989B9E", +"s. c #9EA0A3", +"$. c #A7A9AB", +"0 c #ADAEB1", +"A. c #C8C9CA", +"$X c #CECECF", +"q c #D1D2D4", +"wX c #CBD3D7", +"J. c #D7D7D8", +"o. c #DADBDB", +"fo c #50D4F4", +"j c #76797C", +"UX c #5FD6F4", +"Xo c #56D6F5", +"ZX c #7ADCF4", +"lX c #56D9FA", +"|X c #98E6F8", +"=o c #92E4F8", +"AX c #D4EEF5", +"CX c #86E3FA", +"Oo c #AAE9F9", +"Go c #B3ECFA", +"#. c #F5F6F6", +"m c #828688", +"]X c #B0EBFB", +"oX c #85878A", +"Po c #CEF2FC", +") c #85878B", +"! c #FBFBFB", +"co c #D1F3FD", +"JX c #D1F6FE", +"KX c #F8FDFE", +"}. c #8B8C8F", +"Ao c #F8FDFF", +"%. c #8B8C90", +"I c #8E9092", +"b. c #8E9094", +"U c #97999B", +"9. c #97999C", +"e. c #97999D", +"6 c #A3A6A9", +"3 c #BBBDBE", +"9 c #C1C2C4", +"p. c #CACBCC", +"- c #D9D9DA", +"8. c #DFDEE0", +"9o c #31CBF2", +"SX c #46D2F5", +"mo c #5ED7F4", +"~. c #EBEBEB", +"$o c #64D9F5", +"5. c #EBEBEC", +"2o c #88E2F7", +"1X c #DFEDF1", +"k. c #818486", +"< c #F4F4F5", +"Ko c #C7F1FB", +"@ c #F7F8F8", +"Vo c #CDF3FC", +"4o c #C7F1FC", +":. c #87898C", +"{. c #8A8A8D", +"-X c #EEFBFE", +"ro c #E8F9FE", +"x c #909295", +"7. c #909296", +"*. c #939698", +",X c #8A9398", +"u. c #96979B", +"n. c #999B9E", +"@. c #9FA0A3", +"h. c #A2A4A6", +"L. c #B1B2B5", +"~ c #B4B6B8", +"%X c #BDBFC1", +"N. c #CCCDCE", +"7X c #CCD0D2", +"T. c #DBDBDD", +"X. c #E4E4E4", +"l c #E4E4E6", +"so c #33CDF3", +"E c #E7E8E8", +"w c #E7E8E9", +"xX c #C0E1EB", +"No c #48D1F4", +"T c #EAE9EA", +"zo c #45D0F4", +"kX c #4ED6F6", +"g c #EDEDED", +"1. c #EDEDEE", +"b c #EDEDEF", +";o c #78DEF7", +"}X c #8DE2F7", +"3o c #93E4F8", +"&X c #808286", +"{X c #B1EBF9", +"G. c #838688", +"io c #B7EDFA", +",o c #B7EDFB", +"DX c #C9F3FC", +"& c #F9FAFA", +"fX c #C6F8FF", +"Zo c #D8F5FD", +"S c #898B8E", +": c #FFFFFE", +"bo c #F9FDFF", +"O c #FFFFFF", +"G c #8C8F92", +"E. c #929498", +"{ c #A1A2A5", +"q. c #AAABAE", +" , < 1 2 3 4 5 O 6 7 8 9 # . . . . . . . . . . . . . . . . . . . . . . ", -"0 q w e . . O r t y r u . . & i p a s d f g O h j k l z . . . . . . . . . . . . . . . . . . . . . . ", -"x c v b n . m M N B V C . . Z w A S = D F G . H < J K L . . . . . . . . . . . . . . . . . . . . . . ", -"P I U Y T . R E W Q ! ~ . T Y ^ / ( . n ) . . . . _ . . . . . . . . . . . . . . . . . . . . . . . . ", -". ` ' ] [ . { } | ...X.. o.A w O.. @ +.@.#.. _ $.%.&.# . . . . . . . . . . . . . . . . . . . . . . ", -". *.=.-.;.. :.U >.,.<.1.. & 2.=.3.. 4.5.6.7.. m 8.9.0.q.. . . . . . . . . . . . . . . . . . . . . . ", -". o l w.b e.r.' t.y.u.i.q.p.v r.a.. s.c d.- . = f.g.h.q.. . . . . . . . . . . . . . . . . . . . . . ", -". n j.k.l.z.x.c.v.b.n.m.M.N.q B.n . s.c p - . = f.q h.q.. . . . . . . . . . . . . . . . . . . . . . ", -". . V.C.Z.A.i S.D.# F.2.G.H.i 0 . . s.c p - . = f.q h.q.. . . . . . . . . . . . . . . . . . . . . . ", -". . J.n.=.K.L.P.. . I.U.Y.=.T.~ . . s.c p - . = f.q h.q.. . . . . . . . . . . . . . . . . . . . . . ", -". . R.M E.=.=.W.. . #.Q 5.w Q.m . . s.!.~.^.. = Y /.(.) O . . . . . . . . . . . . . . . . . . . . . ", -". . . < B p ).> . . X _.t B `.. . . '.].[.7.. R.{.}.|. X.XS . . . . . . . . . . . . . . . . . . . . ", -". . . XXoXOXs.. . . . ~ B.+XP . . . @X#X$.$X%X&X5 *X=X+ -X;X:X>X;X;X;X,X. X1X;X2XX3XX,X4X>X5X. . 3X>X. ", -". . . . . . . . . . . . . . . . . . . . . . ;X:X4X;X1X. ,X4X. . . . >X%X. >X,X. X. %X>X. . . 2X;X;X;X;X,X. . ", -". . . . . . . . . . . . . . . . . . . . . . ;X5X8X>X5X;X9X. ,X2X. 7X;X7X7X;X7X. . . 6X3X. . . . . . ", -". . . . . . . . . . . . . . . . . . . . . 9X;X;X:X8X;X1X. 2X;X9X. 4X;XX. . ", -". . . . . . . . . . . . . . . . . . . . . 9X;X3X. 8X;X2X. >X%X:X8X3X3X. 6X3X. . . . ,X>X. X;X%X8X%X6X. 3X6X. . . . 5X;X;X;X8X. . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . ", +" ", +" ", +" ", +". X o O O O O + @ # O O O O $ % & * = - ; O : > , < ", +"1 2 3 4 O O + 5 6 7 8 O O . 9 0 q w e r t O y u i p ", +"a s d f O O g h j k l O O z x c v b n m M O N B V C ", +"Z A S D O O F G H J K L O P I U Y O T a R O O E W Q ", +"! ~ ^ / O O ( ) _ ` ' & O ] [ { + 8 } | .O ..X.o.4 ", +"O O.+.@.#.X $.%.&.*.=.-.: ;.:.M O >.,.[ <.O 1.2.3.4. ", +"O 5.6.7.8.z e 9.0.q.` w.N e.r.t.O y.u.i.p.O a.s.d.f. ", +"O g.h.:.j.a k.l.+ z.x.c.v.b.n.m.O z M.:.N.O B.V.C.Z. ", +"O $ A.S.D.F.G.H.O J.K.L.P.I.U.$ O Y.M.:.N.O B.V.C.Z. ", +"O O T.R.E.W.Q.!.O ~.^./.(.)._.+ O z M.:.N.O B.V.C.Z. ", +"O O z `.I.:.'.Y.O ].[.{.}.|. XO O .XXXoXOXO +X@X#X$X ", +"O O 8 %X&X*X=XO -X;X:X>X,Xo,oO QX. c #818487", +"x. c #818488", +"K c #86888B", +"A. c #959799", +"<. c #86888C", +"r. c #95979A", +"j. c #8B8C8F", +"v c #B3B5B7", +"9. c #A9AAAD", +", c #C7C8C9", +"* c #E5E6E7", +"*. c #F9F9F9", +"Q. c #7F8184", +",. c #8E9092", +"B c #8E9093", +"U c #9D9FA3", +"R. c #A2A3A6", +"[ c #CFD0D0", +"e c #C0C1C3", +"d c #EDEEEE", +"(. c #FCFDFD", +"b c #87898C", +"/ c #96989A", +"^ c #87898D", +"t c #96989B", +"L c #A5A7A9", +"- c #E6E7E8", +"X c #DCDCDD", +"]. c #FAFAFA", +"e. c #8A8D90", +"N. c #8F9194", +"d. c #9EA0A3", +"{. c #9EA0A4", +"=. c #A3A4A7", +" X c #A3A4A8", +"s. c #CBCDCE", +"| c #C1C2C3", +"o c #DFE0E0", +"Z c #C6C6C8", " c None", -"IX c #EEEFEF", -".X c #E4E4E4", -"$. c #FDFEFD", -"gX c #F3F3F3", -"wX c #F3F3F4", -"0X c #929597", -"u. c #83868A", -"dX c #929598", -"u c #888A8D", -"t. c #888A8E", -"R. c #C4C6C6", -"=X c #C4C6C7", -"z. c #B5B7BA", -"_X c #C9CACB", -": c #D8D9D9", -"r. c #C9CACD", -"7 c #D8D9DA", -"m. c #E7E8E8", -"{ c #ECECEC", -"@X c #FBFBFA", -"< c #ECECED", -"f. c #FBFBFB", -",. c #8B8E91", -"]. c #818386", -"B c #818387", -"T c #909295", -"y. c #909296", -".. c #9FA1A3", -"EX c #86878B", -";X c #AEB0B1", -"j. c #AEB0B2", -"hX c #B3B4B6", -"&X c #B3B4B7", -"|. c #C2C3C5", -"oo c #C2C3C6", -"V. c #D1D2D3", -"8. c #E0E1E1", -"PX c #C7C7C9", -"LX c #E0E1E2", -"A. c #E5E5E6", -"= c #F4F4F4", -":X c #F4F4F5", -"XX c #84878A", -"A c #898B8E", -"eX c #989A9D", -"NX c #A7A9AB", -"9X c #B6B8B9", -"J c #B6B8BA", -"P. c #ACADB0", -"6 c #D9DADA", -"5 c #D9DADB", -"3. c #D9DADC", -"1. c #E8E9E9", -"L. c #CFCFD1", -"U c #F7F8F8", -"3 c #EDEDEE", -"]X c #EDEDEF", -"$ c #FCFCFC", -"uX c #8C8F91", -"] c #8C8F92", -"_. c #828487", -"K c #919395", -"w c #828488", -"| c #919396", -"jX c #919397", -"Y c #B4B5B7", -"' c #C3C4C5", -"! c #B4B5B8", -"& c #C3C4C6", -"W. c #E1E2E2", -"aX c #E1E2E3", -"SX c #D7D7D8", -"* c #E6E6E6", -"` c #F5F5F5", -"l. c #F5F5F6", -"k. c #85888B", -"/X c #7B7D81", -"6X c #8A8C8E", -"f c #8A8C8F", -" X c #8A8C90", -"( c #999B9E", -"_ c #A8AAAC", -"q c #8F9093", -"JX c #9E9FA2", -">X c #ADAEB0", -"%. c #C6C8C9", -"$X c #ADAEB1", -")X c #BCBDBF", -"[X c #BCBDC0", -"vX c #CBCCCE", -"> c #DADBDC", -"5X c #DFDFDF", -"#X c #D0D0D2", -"%X c #F8F9F9", -"o. c #DFDFE0", -"4. c #EEEEEE", -"qX c #EEEEEF", -"o c #FDFDFD", -"s c #FDFDFE", -"i c #838588", -"TX c #838589", -"L c #929496", -"/ c #929497", -"DX c #929498", -"C. c #A1A3A5", -",X c #A1A3A6", -"U. c #88898D", -"x c #97989A", -"fX c #97989C", -"D. c #B0B2B5", -"I c #B5B6B8", -"}X c #D3D4D5", -"`X c #D3D4D6", -"K. c #C9C9CB", -"(. c #D8D8D9", -" o c #E7E7E8", -"Z. c #F6F6F6", -") c #86898C", -"!X c #7C7E83", -"p c #8B8D90", -"!. c #8B8D91", -" . c #9A9C9F", -"r c #B8BABB", -"OX c #C7C9C9", -"{X c #AEAFB1", -"e. c #C7C9CA", -"v. c #DBDCDC", -">. c #DBDCDD", -"'X c #EAEBEC", -":. c #E0E0E0", -"|X c #F9FAFA", -" c #97989B", +"C. c #B5B6B9", +"~ c #C4C5C6", +"9 c #D3D4D4", +"4 c #ABABAF", +"D. c #D3D4D6", +".. c #E7E7E7", +"G c #F6F6F7", +"-. c #7C7E81", +"o. c #8B8D90", +"a. c #9A9C9E", +"q c #8B8D91", +"m c #9A9C9F", +"$. c #A9ABAD", +"v. c #A9ABAE", +"E c #BDBEBF", +"g c #AEAFB2", +"}. c #BDBEC1", +"t. c #EAEBEB", +"i c #EFEFF0", +"& c #FEFEFE", +"1 c #FEFEFF", +"I. c #848689", +"T c #8E9195", +"F. c #A2A4A6", +"_. c #A2A4A7", +": c #C5C6C7", /* pixels */ " ", " ", " ", " ", -". . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . X X . . . . . . X X X . . . . . . ", -"X X X X X . . . . . . . . . o o . . . . . . . . . X X X X X . . O + @ # . . . . $ % & * o . . . . . ", -"= - ; : > , . . . . . . . < 1 2 3 . . . . . . . 4 5 6 7 8 9 . 0 q w e r t . . . y u i p a s . . . . ", -"d f g e h j . . . . . . k l z z x c . . . . . . v b n e m M # N B V f C - . . k Z A V S D = . . . . ", -"$ F p C G H . . . . . s J b K L P I U . . . . . Y p T R E W Q ! B ~ ^ / > . . M ( ) ~ b _ ` . . . . ", -"o ' ^ T ] [ ` . . . . { } ) | | A .d . . . . $ ..~ C G X.. . o.O.+.@.#.$.. . . %.&.G *.=.X . . . . ", -"X -.f T G ;.:.. . . . >.&.p T T ~ ,.<.. . . . 1.2.C C T 3.. . . 4.5.6.$ . . . . 7.8.9.0.X . . . . . ", -". ` q.m ~ w.e.. . . . r.t.C ~ C y.u.i.$ . . . p.a.T C s.d.. . . . . . . . . . . . . . . . . . . . . ", -". f.g.n T m h.. . . ` j.k.@.V / T e N l.. . . z.m T G x.. . . c.v.b.n.m.o . . . O M.N.v.B.X . . . . ", -". o V.^ T m C.Z.. . A.S.t.f D.F.C f ;.G.. . H.J.~ C m K.. . X L.S ~ g P.4 . . X I.U.Y.T.R.f.. . . . ", -". . E.C ~ m Z W.. . Q.] !.u ~.5.^.] /.(.. . ).2.C C T A.. . X 5._.m S `.4 . . X N '.m ].& f.. . . . ", -". . [.{.f ~ w.}.. . |.'. XK .XA.Z !.XXoX# . OX!.C ~ +X@X. . X #Xg T u $X%X. . X &X*XT '.=Xf.. . . . ", -". . f.-Xg T X;X. :X>Xg n ,X . . . X #Xg T u $X%X. . X &X*XT '.=Xf.. . . . ", -". . . wXeXp m rXtXyXf f uXiX. . pXC +.g aXsXdXC w.fXgX. . . X #Xg T u $X%X. . X &X*XT '.=Xf.. . . . ", -". . . Q hXg ~ jXkXlX'.A ( zX. . sXxX!.g cXvXC C m bX. . . . X #Xg T u $X%X. . X &X*XT '.=Xf.. . . . ", -". . . o nXe @.T mX2Xf ^ P.MX. . X `.p f } NX@.T f %.. . . . X #Xg T u $X%X. . X &X*XT '.=Xf.. . . . ", -". . . . BXVX~ T T | C n #.. . . . CXR ~ T K T @.R ZX. . . . X #Xg T u $X%X. . X &X*XT '.=Xf.. . . . ", -". . . . gXAXA | T T m T @ . . . . SXDX+.C C T ~ .FX. . . . X #Xg T u $X%X. . X &X*XT '.=Xf.. . . . ", -". . . . GXHXi | T | u +Xm.. . . . c.JX!.T T T A I X . . . . X #Xg T u $X%X. . X &X*XT '.=Xf.. . . . ", -". . . . . yX6Xm T T e Y o . . . . . I.*X^.T C KXLX. . . . . X #Xg T u $X%X. . X &X*XT '.PXZ.IXUXd.. ", -". . . . . FXYXw u TXRXM . . . . . . m.xXEXWX'.H $ . . . . . X QX!Xn ~XF 4 . . W ^XP n /X(XQ b.)X_Xo ", -". . . . . . %X`XF.YX'X. . . . . . . . ]X[X{X}X|X. . . . . . W o.oXooo@ $ . . Oo7 & Xo+oZXX ` zX@oX ", -". . . . . . . X $ o . . . . . . . . . . o $ X . . . . . . . . . o o o X . . . . X o o o X . . X X . ", +" ", +" ", +" ", +" ", +" ", +". X o O + + + @ # $ % + + + & * = - ; : > , < 1 2 3 4 5 ", +"6 7 8 9 + + + 0 q w e + + + r t y u i p a s d f g h j k ", +"l z x c < + f v b n m M + + N 8 B V C Z A S @ & D F g G ", +"H J K L P + I U Y B T R + < E W Q ! + f I f + + & I % + ", +"+ ~ ^ / ( + ) q s A b _ < & ` ' ] & @ [ { 9 + + } | .P ", +"+ ..X.o.$ + , O.+.@.#.$.< %.z ' &.& *.=.-.;.+ + :.>.,.) ", +"+ 5 3 <.1.f 2.3.4.5.6.t ( 7.8.p - + *.9.0.q.+ + w.e.r.t. ", +"+ f y.u.i.( 3 p.5.G a.<.R s.<.d.f.+ *.9.0.q.+ + w.e.r.t. ", +"+ & $ <.g.h.j.k.l.@ z.x.c.v.K b.& + n.9.0.q.+ + w.e.r.t. ", +"+ + m.M.N.B.V.C.< + Z.o.A.S.6.D.+ + *.9.0.q.+ + w.e.r.t. ", +"+ + f F.Y N.' G.+ + k H.n B p J.+ + *.9.0.q.+ + w.e.K.L. ", +"+ + + P.I.x U.Y.+ + T.R.<.K E.n.+ + n.W.Q.!.+ + ~.w ^.i ", +"+ + + /.C.m Z.(.+ + + )._.`.'.+ + + ].[.{.}.+ + |. X.XXX ", +" ", +" ", +" ", +" ", +" ", +" ", " ", " ", " ", diff --git a/Source/Core/DolphinWX/resources/rating_gamelist.h b/Source/Core/DolphinWX/resources/rating_gamelist.h new file mode 100644 index 0000000000..de90bc79eb --- /dev/null +++ b/Source/Core/DolphinWX/resources/rating_gamelist.h @@ -0,0 +1,451 @@ +static const char *rating_5[] = { +"96 32 33 1", +"7 c #EBB027", +" c None", +"< c #E6A619", +"6 c #F3BE3B", +"9 c #EBA722", +"= c #E4A30E", +"1 c #F6C53F", +"3 c #F4B615", +"> c #F2B300", +"0 c #DA8900", +"o c #FAD048", +"$ c #F8C71D", +"e c #D88600", +"# c #FDD445", +"8 c #E8A81F", +": c #F6BE00", +"w c #E4A50B", +"- c #F1C033", +"q c #E5A60E", +"* c #EFB42F", +"% c #F5BC09", +"r c #D27700", +"; c #FACC3B", +", c #F2B219", +"X c #F3C53A", +"O c #F8C940", +"4 c #F0AF22", +"5 c #E9AE1B", +"2 c #F6C025", +". c #F4C93D", +"+ c #F2C632", +"& c #F4BA27", +"@ c #FAD44D", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" .X .X .X .X .X ", +" oO oO oO oO oO ", +" +@#$%&*= +@#$%&*= +@#$%&*= +@#$%&*= +@#$%&*= ", +" -;:>,< -;:>,< -;:>,< -;:>,< -;:>,< ", +" 1234 1234 1234 1234 1234 ", +" 567890 567890 567890 567890 567890 ", +" qw er qw er qw er qw er qw er ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " +}; + +static const char *rating_4[] = { +"96 32 47 1", +"l c #D2D2D2", +"o c #E1E1E1", +"i c #EBB027", +" c None", +"9 c #E6A619", +"u c #F3BE3B", +"3 c #DADADA", +"a c #EBA722", +": c #E4A30E", +"w c #F6C53F", +"# c #E2E2E2", +"r c #F4B615", +"7 c #F2B300", +"s c #DA8900", +"q c #DBDBDB", +"O c #FAD048", +"* c #F8C71D", +"@ c #E3E3E3", +"h c #D88600", +"& c #FDD445", +"p c #E8A81F", +"6 c #F6BE00", +"0 c #DCDCDC", +"g c #E4A50B", +"k c #D5D5D5", +", c #E4E4E4", +"4 c #F1C033", +"1 c #DDDDDD", +"f c #E5A60E", +"d c #D6D6D6", +"; c #EFB42F", +"= c #F5BC09", +"j c #D27700", +"5 c #FACC3B", +"8 c #F2B219", +"< c #DEDEDE", +"X c #F3C53A", +"+ c #F8C940", +"t c #F0AF22", +"y c #E9AE1B", +"e c #F6C025", +"2 c #DFDFDF", +". c #F4C93D", +"$ c #F2C632", +"- c #F4BA27", +"> c #E0E0E0", +"% c #FAD44D", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" .X .X .X .X oo ", +" O+ O+ O+ O+ @# ", +" $%&*=-;: $%&*=-;: $%&*=-;: $%&*=-;: >,,<1223 ", +" 456789 456789 456789 456789 2#031q ", +" wert wert wert wert #21< ", +" yuipas yuipas yuipas yuipas 0o<01d ", +" fg hj fg hj fg hj fg hj 33 kl ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " +}; + +static const char *rating_3[] = { +"96 32 47 1", +"l c #D2D2D2", +"o c #E1E1E1", +"i c #EBB027", +" c None", +"9 c #E6A619", +"u c #F3BE3B", +"3 c #DADADA", +"a c #EBA722", +": c #E4A30E", +"w c #F6C53F", +"# c #E2E2E2", +"r c #F4B615", +"7 c #F2B300", +"s c #DA8900", +"q c #DBDBDB", +"O c #FAD048", +"* c #F8C71D", +"@ c #E3E3E3", +"h c #D88600", +"& c #FDD445", +"p c #E8A81F", +"6 c #F6BE00", +"0 c #DCDCDC", +"g c #E4A50B", +"k c #D5D5D5", +", c #E4E4E4", +"4 c #F1C033", +"1 c #DDDDDD", +"f c #E5A60E", +"d c #D6D6D6", +"; c #EFB42F", +"= c #F5BC09", +"j c #D27700", +"5 c #FACC3B", +"8 c #F2B219", +"< c #DEDEDE", +"X c #F3C53A", +"+ c #F8C940", +"t c #F0AF22", +"y c #E9AE1B", +"e c #F6C025", +"2 c #DFDFDF", +". c #F4C93D", +"$ c #F2C632", +"- c #F4BA27", +"> c #E0E0E0", +"% c #FAD44D", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" .X .X .X oo oo ", +" O+ O+ O+ @# @# ", +" $%&*=-;: $%&*=-;: $%&*=-;: >,,<1223 >,,<1223 ", +" 456789 456789 456789 2#031q 2#031q ", +" wert wert wert #21< #21< ", +" yuipas yuipas yuipas 0o<01d 0o<01d ", +" fg hj fg hj fg hj 33 kl 33 kl ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " +}; + +static const char *rating_2[] = { +"96 32 47 1", +"l c #D2D2D2", +"o c #E1E1E1", +"i c #EBB027", +" c None", +"9 c #E6A619", +"u c #F3BE3B", +"3 c #DADADA", +"a c #EBA722", +": c #E4A30E", +"w c #F6C53F", +"# c #E2E2E2", +"r c #F4B615", +"7 c #F2B300", +"s c #DA8900", +"q c #DBDBDB", +"O c #FAD048", +"* c #F8C71D", +"@ c #E3E3E3", +"h c #D88600", +"& c #FDD445", +"p c #E8A81F", +"6 c #F6BE00", +"0 c #DCDCDC", +"g c #E4A50B", +"k c #D5D5D5", +", c #E4E4E4", +"4 c #F1C033", +"1 c #DDDDDD", +"f c #E5A60E", +"d c #D6D6D6", +"; c #EFB42F", +"= c #F5BC09", +"j c #D27700", +"5 c #FACC3B", +"8 c #F2B219", +"< c #DEDEDE", +"X c #F3C53A", +"+ c #F8C940", +"t c #F0AF22", +"y c #E9AE1B", +"e c #F6C025", +"2 c #DFDFDF", +". c #F4C93D", +"$ c #F2C632", +"- c #F4BA27", +"> c #E0E0E0", +"% c #FAD44D", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" .X .X oo oo oo ", +" O+ O+ @# @# @# ", +" $%&*=-;: $%&*=-;: >,,<1223 >,,<1223 >,,<1223 ", +" 456789 456789 2#031q 2#031q 2#031q ", +" wert wert #21< #21< #21< ", +" yuipas yuipas 0o<01d 0o<01d 0o<01d ", +" fg hj fg hj 33 kl 33 kl 33 kl ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " +}; + +static const char *rating_1[] = { +"96 32 47 1", +"l c #D2D2D2", +"o c #E1E1E1", +"i c #EBB027", +" c None", +"9 c #E6A619", +"u c #F3BE3B", +"3 c #DADADA", +"a c #EBA722", +": c #E4A30E", +"w c #F6C53F", +"# c #E2E2E2", +"r c #F4B615", +"7 c #F2B300", +"s c #DA8900", +"q c #DBDBDB", +"O c #FAD048", +"* c #F8C71D", +"@ c #E3E3E3", +"h c #D88600", +"& c #FDD445", +"p c #E8A81F", +"6 c #F6BE00", +"0 c #DCDCDC", +"g c #E4A50B", +"k c #D5D5D5", +", c #E4E4E4", +"4 c #F1C033", +"1 c #DDDDDD", +"f c #E5A60E", +"d c #D6D6D6", +"; c #EFB42F", +"= c #F5BC09", +"j c #D27700", +"5 c #FACC3B", +"8 c #F2B219", +"< c #DEDEDE", +"X c #F3C53A", +"+ c #F8C940", +"t c #F0AF22", +"y c #E9AE1B", +"e c #F6C025", +"2 c #DFDFDF", +". c #F4C93D", +"$ c #F2C632", +"- c #F4BA27", +"> c #E0E0E0", +"% c #FAD44D", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" .X oo oo oo oo ", +" O+ @# @# @# @# ", +" $%&*=-;: >,,<1223 >,,<1223 >,,<1223 >,,<1223 ", +" 456789 2#031q 2#031q 2#031q 2#031q ", +" wert #21< #21< #21< #21< ", +" yuipas 0o<01d 0o<01d 0o<01d 0o<01d ", +" fg hj 33 kl 33 kl 33 kl 33 kl ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " +}; + +static const char *rating_0[] = { +"96 32 15 1", +"; c #D2D2D2", +". c #E1E1E1", +" c None", +"% c #DADADA", +"o c #E2E2E2", +"* c #DBDBDB", +"X c #E3E3E3", +"& c #DCDCDC", +"- c #D5D5D5", +"+ c #E4E4E4", +"# c #DDDDDD", +"= c #D6D6D6", +"@ c #DEDEDE", +"$ c #DFDFDF", +"O c #E0E0E0", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" .. .. .. .. .. ", +" Xo Xo Xo Xo Xo ", +" O++@#$$% O++@#$$% O++@#$$% O++@#$$% O++@#$$% ", +" $o&%#* $o&%#* $o&%#* $o&%#* $o&%#* ", +" o$#@ o$#@ o$#@ o$#@ o$#@ ", +" &.@&#= &.@&#= &.@&#= &.@&#= &.@&#= ", +" %% -; %% -; %% -; %% -; %% -; ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" ", +" " +};