X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0e320a79f187558effb04d92020b470372bbe456..5e84fc5a820a15a1ce2d32d2ae71f0bf92abda3d:/src/os2/icon.cpp diff --git a/src/os2/icon.cpp b/src/os2/icon.cpp index 6deee7dbdc..60614db09c 100644 --- a/src/os2/icon.cpp +++ b/src/os2/icon.cpp @@ -1,37 +1,55 @@ ///////////////////////////////////////////////////////////////////////////// // Name: icon.cpp // Purpose: wxIcon class -// Author: AUTHOR +// Author: David Webster // Modified by: -// Created: ??/??/98 +// Created: 10/09/99 // RCS-ID: $Id$ -// Copyright: (c) AUTHOR -// Licence: wxWindows licence +// Copyright: (c) David Webster +// Licence: wxWindows licence ///////////////////////////////////////////////////////////////////////////// -#ifdef __GNUG__ -#pragma implementation "icon.h" +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifdef __BORLANDC__ +#pragma hdrstop +#endif + +#ifndef WX_PRECOMP +#include +#include "wx/setup.h" +#include "wx/list.h" +#include "wx/utils.h" +#include "wx/app.h" +#include "wx/icon.h" #endif +#include "wx/os2/private.h" +#include "assert.h" + #include "wx/icon.h" #if !USE_SHARED_LIBRARIES IMPLEMENT_DYNAMIC_CLASS(wxIcon, wxBitmap) +IMPLEMENT_DYNAMIC_CLASS(wxICOFileHandler, wxBitmapHandler) +IMPLEMENT_DYNAMIC_CLASS(wxICOResourceHandler, wxBitmapHandler) #endif /* * Icons */ - wxIconRefData::wxIconRefData() { - // TODO: init icon handle + m_hIcon = (WXHICON) NULL ; } wxIconRefData::~wxIconRefData() { - // TODO: destroy icon handle + if ( m_hIcon ) + return; + // TODO ::DestroyIcon((HICON) m_hIcon); } wxIcon::wxIcon() @@ -63,8 +81,70 @@ bool wxIcon::LoadFile(const wxString& filename, long type, wxBitmapHandler *handler = FindHandler(type); if ( handler ) - return handler->LoadFile(this, filename, type, desiredWidth, desiredHeight); + return handler->LoadFile(this, filename, type, desiredWidth, desiredHeight); + else + return FALSE; +} + +void wxIcon::SetHICON(WXHICON ico) +{ + if ( !M_ICONDATA ) + m_refData = new wxIconRefData; + + M_ICONDATA->m_hIcon = ico; +} + +bool wxICOFileHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long flags, + int desiredWidth, int desiredHeight) +{ + return FALSE; +} + +bool wxICOResourceHandler::LoadFile(wxBitmap *bitmap, const wxString& name, long flags, + int desiredWidth, int desiredHeight) +{ +// TODO +/* + if ( bitmap->IsKindOf(CLASSINFO(wxIcon)) ) + { + if (desiredWidth > -1 && desiredHeight > -1) + { + M_ICONHANDLERDATA->m_hIcon = (WXHICON) ::LoadImage(wxGetInstance(), name, IMAGE_ICON, desiredWidth, desiredHeight, LR_DEFAULTCOLOR); + } + else + { + M_ICONHANDLERDATA->m_hIcon = (WXHICON) ::LoadIcon(wxGetInstance(), name); + } + + ICONINFO info ; + if (::GetIconInfo((HICON) M_ICONHANDLERDATA->m_hIcon, &info)) + { + HBITMAP ms_bitmap = info.hbmMask ; + if (ms_bitmap) + { + BITMAP bm; + ::GetObject(ms_bitmap, sizeof(BITMAP), (LPSTR) &bm); + M_ICONHANDLERDATA->m_width = bm.bmWidth; + M_ICONHANDLERDATA->m_height = bm.bmHeight; + } + if (info.hbmMask) + ::DeleteObject(info.hbmMask) ; + if (info.hbmColor) + ::DeleteObject(info.hbmColor) ; + } + } + // Override the found values with desired values + if (desiredWidth > -1 && desiredHeight > -1) + { + M_ICONHANDLERDATA->m_width = desiredWidth; + M_ICONHANDLERDATA->m_height = desiredHeight; + } + + M_ICONHANDLERDATA->m_ok = (M_ICONHANDLERDATA->m_hIcon != 0); + return M_ICONHANDLERDATA->m_ok; + } else - return FALSE; +*/ + return FALSE; }