X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/9cb9fdb372467eed8d214e892ac99bb1854c5f25..3f2b72b2403dd29aa93167ce0ce7d20e1d20f1bd:/src/msw/gdiimage.cpp diff --git a/src/msw/gdiimage.cpp b/src/msw/gdiimage.cpp index 64ad5b730c..b34abfe247 100644 --- a/src/msw/gdiimage.cpp +++ b/src/msw/gdiimage.cpp @@ -175,16 +175,15 @@ private: // wxWin macros // ---------------------------------------------------------------------------- - IMPLEMENT_DYNAMIC_CLASS(wxBMPFileHandler, wxBitmapHandler) - IMPLEMENT_DYNAMIC_CLASS(wxBMPResourceHandler, wxBitmapHandler) - IMPLEMENT_DYNAMIC_CLASS(wxICOFileHandler, wxGDIImageHandler) - IMPLEMENT_DYNAMIC_CLASS(wxICOResourceHandler, wxGDIImageHandler) +IMPLEMENT_DYNAMIC_CLASS(wxBMPFileHandler, wxBitmapHandler) +IMPLEMENT_DYNAMIC_CLASS(wxBMPResourceHandler, wxBitmapHandler) +IMPLEMENT_DYNAMIC_CLASS(wxICOFileHandler, wxObject) +IMPLEMENT_DYNAMIC_CLASS(wxICOResourceHandler, wxObject) // ---------------------------------------------------------------------------- // private functions // ---------------------------------------------------------------------------- -static wxSize GetHiconSize(HICON hicon); #endif // __MICROWIN__ @@ -355,6 +354,8 @@ bool wxBMPFileHandler::LoadFile(wxBitmap *bitmap, #if wxUSE_IMAGE_LOADING_IN_MSW wxPalette *palette = NULL; bool success = wxLoadIntoBitmap(WXSTRINGCAST name, bitmap, &palette) != 0; + +#if wxUSE_PALETTE if ( success && palette ) { bitmap->SetPalette(*palette); @@ -362,6 +363,7 @@ bool wxBMPFileHandler::LoadFile(wxBitmap *bitmap, // it was copied by the bitmap if it was loaded successfully delete palette; +#endif // wxUSE_PALETTE return success; #else @@ -375,9 +377,15 @@ bool wxBMPFileHandler::SaveFile(wxBitmap *bitmap, const wxPalette *pal) { #if wxUSE_IMAGE_LOADING_IN_MSW + +#if wxUSE_PALETTE wxPalette *actualPalette = (wxPalette *)pal; if ( !actualPalette ) actualPalette = bitmap->GetPalette(); +#else + wxPalette *actualPalette = NULL; +#endif // wxUSE_PALETTE + return wxSaveBitmap(WXSTRINGCAST name, bitmap, actualPalette) != 0; #else return FALSE; @@ -457,7 +465,7 @@ bool wxICOFileHandler::LoadIcon(wxIcon *icon, return FALSE; } - size = GetHiconSize(hicon); + size = wxGetHiconSize(hicon); #else // Win16 HICON hicon = ReadIconFile((wxChar *)name.c_str(), wxGetInstance(), @@ -502,6 +510,9 @@ bool wxICOResourceHandler::LoadIcon(wxIcon *icon, // try to load the icon from this program first to allow overriding the // standard icons (although why one would want to do it considering that // we already have wxApp::GetStdIcon() is unclear) + + // note that we can't just always call LoadImage() because it seems to do + // some icon rescaling internally which results in very ugly 16x16 icons #if defined(__WIN32__) && !defined(__SC__) if ( hasSize ) { @@ -510,7 +521,7 @@ bool wxICOResourceHandler::LoadIcon(wxIcon *icon, LR_DEFAULTCOLOR); } else -#endif // Win32 +#endif // Win32/!Win32 { hicon = ::LoadIcon(wxGetInstance(), name); } @@ -527,7 +538,7 @@ bool wxICOResourceHandler::LoadIcon(wxIcon *icon, { wxT("wxICON_QUESTION"), IDI_QUESTION }, { wxT("wxICON_WARNING"), IDI_EXCLAMATION }, { wxT("wxICON_ERROR"), IDI_HAND }, - { wxT("wxICON_INFO"), IDI_ASTERISK }, + { wxT("wxICON_INFORMATION"), IDI_ASTERISK }, }; for ( size_t nIcon = 0; !hicon && nIcon < WXSIZEOF(stdIcons); nIcon++ ) @@ -539,15 +550,9 @@ bool wxICOResourceHandler::LoadIcon(wxIcon *icon, } } - wxSize size = GetHiconSize(hicon); + wxSize size = wxGetHiconSize(hicon); icon->SetSize(size.x, size.y); - // Override the found values with desired values - if ( desiredWidth > -1 && desiredHeight > -1 ) - { - icon->SetSize(desiredWidth, desiredHeight); - } - icon->SetHICON((WXHICON)hicon); return icon->Ok(); @@ -557,7 +562,7 @@ bool wxICOResourceHandler::LoadIcon(wxIcon *icon, // private functions // ---------------------------------------------------------------------------- -static wxSize GetHiconSize(HICON hicon) +wxSize wxGetHiconSize(HICON hicon) { wxSize size(32, 32); // default