X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/0e320a79f187558effb04d92020b470372bbe456..8e193f384f7b98daef459653ddb8485173fba8ba:/src/os2/imaglist.cpp diff --git a/src/os2/imaglist.cpp b/src/os2/imaglist.cpp index 4cb47b4e69..a74bfc923b 100644 --- a/src/os2/imaglist.cpp +++ b/src/os2/imaglist.cpp @@ -1,19 +1,31 @@ ///////////////////////////////////////////////////////////////////////////// // Name: imaglist.cpp // Purpose: wxImageList. You may wish to use the generic version. -// 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 "imaglist.h" +// For compilers that support precompilation, includes "wx.h". +#include "wx/wxprec.h" + +#ifndef WX_PRECOMP +#include +#include "wx/setup.h" +#include "wx/window.h" +#include "wx/icon.h" +#include "wx/dc.h" +#include "wx/string.h" #endif -#include "wx/stubs/imaglist.h" +#include "wx/log.h" +#include "wx/intl.h" + +#include "wx/os2/imaglist.h" +#include "wx/os2/private.h" #if !USE_SHARED_LIBRARY IMPLEMENT_DYNAMIC_CLASS(wxImageList, wxObject) @@ -21,23 +33,25 @@ IMPLEMENT_DYNAMIC_CLASS(wxImageList, wxObject) wxImageList::wxImageList() { - // TODO: init image list handle, if any + m_hImageList = 0; } wxImageList::~wxImageList() { - // TODO: destroy image list handle, if any + if ( m_hImageList ) + return; +// TODO: ImageList_Destroy((HIMAGELIST) m_hImageList); + m_hImageList = 0; } - // Attributes //////////////////////////////////////////////////////////////////////////// // Returns the number of images in the image list. int wxImageList::GetImageCount() const { - // TODO - return 0; + // TODO:: return ImageList_GetImageCount((HIMAGELIST) m_hImageList); + return 0; } // Operations @@ -46,8 +60,13 @@ int wxImageList::GetImageCount() const // Creates an image list bool wxImageList::Create(int width, int height, bool mask, int initial) { - // TODO - return FALSE; + UINT flags = 0; +// if ( mask ) + // TODO flags |= ILC_MASK; + + // Grow by 1, I guess this is reasonable behaviour most of the time + // m_hImageList = (WXHIMAGELIST) ImageList_Create(width, height, flags, initial, 1); + return (m_hImageList != 0); } // Adds a bitmap, and optionally a mask bitmap. @@ -55,8 +74,17 @@ bool wxImageList::Create(int width, int height, bool mask, int initial) // 'bitmap' and 'mask'. int wxImageList::Add(const wxBitmap& bitmap, const wxBitmap& mask) { - // TODO - return 0; + HBITMAP hBitmap1 = (HBITMAP) bitmap.GetHBITMAP(); + HBITMAP hBitmap2 = 0; + if ( mask.Ok() ) + hBitmap2 = (HBITMAP) mask.GetHBITMAP(); + + int index; // = ImageList_Add((HIMAGELIST) GetHIMAGELIST(), hBitmap1, hBitmap2); + if ( index == -1 ) + { + wxLogError(wxT("Couldn't add an image to the image list.")); + } + return index; } // Adds a bitmap, using the specified colour to create the mask bitmap @@ -64,15 +92,19 @@ int wxImageList::Add(const wxBitmap& bitmap, const wxBitmap& mask) // 'bitmap'. int wxImageList::Add(const wxBitmap& bitmap, const wxColour& maskColour) { - // TODO - return 0; + HBITMAP hBitmap1 = (HBITMAP) bitmap.GetHBITMAP(); + //TODO: +// COLORREF colorRef = PALETTERGB(maskColour.Red(), maskColour.Green(), maskColour.Blue()); +// return ImageList_AddMasked((HIMAGELIST) GetHIMAGELIST(), hBitmap1, colorRef); + return 0; } // Adds a bitmap and mask from an icon. int wxImageList::Add(const wxIcon& icon) { - // TODO - return 0; + HICON hIcon = (HICON) icon.GetHICON(); +// TODO: return ImageList_AddIcon((HIMAGELIST) GetHIMAGELIST(), hIcon); + return 0; } // Replaces a bitmap, optionally passing a mask bitmap. @@ -80,29 +112,38 @@ int wxImageList::Add(const wxIcon& icon) // 'bitmap' and 'mask'. bool wxImageList::Replace(int index, const wxBitmap& bitmap, const wxBitmap& mask) { - // TODO - return 0; + HBITMAP hBitmap1 = (HBITMAP) bitmap.GetHBITMAP(); + HBITMAP hBitmap2 = 0; + if ( mask.Ok() ) + hBitmap2 = (HBITMAP) mask.GetHBITMAP(); + // TODO: return (ImageList_Replace((HIMAGELIST) GetHIMAGELIST(), index, hBitmap1, hBitmap2) != 0); + return TRUE; } // Replaces a bitmap and mask from an icon. bool wxImageList::Replace(int index, const wxIcon& icon) { - // TODO - return 0; + HICON hIcon = (HICON) icon.GetHICON(); + // TODO: return (ImageList_ReplaceIcon((HIMAGELIST) GetHIMAGELIST(), index, hIcon) != 0); + return FALSE; } // Removes the image at the given index. bool wxImageList::Remove(int index) { - // TODO + // TODO return (ImageList_Remove((HIMAGELIST) GetHIMAGELIST(), index) != 0); + return FALSE; } -// Remove all images -bool wxImageList::RemoveAll() +bool wxImageList::RemoveAll(void) { - // TODO - return FALSE; + // TODO: Is this correct? + while ( GetImageCount() > 0 ) + { + Remove(0); + } + return TRUE; } // Draws the given image on a dc at the specified position. @@ -112,7 +153,40 @@ bool wxImageList::RemoveAll() bool wxImageList::Draw(int index, wxDC& dc, int x, int y, int flags, bool solidBackground) { - // TODO + HDC hDC = (HDC) dc.GetHDC(); + if ( !hDC ) return FALSE; + + if ( solidBackground ) + { + wxBrush *brush = & dc.GetBackground(); + if ( brush && brush->Ok()) + { + wxColour col(brush->GetColour()); +// ImageList_SetBkColor((HIMAGELIST) GetHIMAGELIST(), +// PALETTERGB(col.Red(), col.Green(), col.Blue())); + } +// else +// ImageList_SetBkColor((HIMAGELIST) GetHIMAGELIST(), +// CLR_NONE); + } +// else +// ImageList_SetBkColor((HIMAGELIST) GetHIMAGELIST(), +// CLR_NONE); + + UINT style = 0; +/* + if ( flags & wxIMAGELIST_DRAW_NORMAL ) + style |= ILD_NORMAL; + if ( flags & wxIMAGELIST_DRAW_TRANSPARENT ) + style |= ILD_TRANSPARENT; + if ( flags & wxIMAGELIST_DRAW_SELECTED ) + style |= ILD_SELECTED; + if ( flags & wxIMAGELIST_DRAW_FOCUSED ) + style |= ILD_FOCUS; + return (ImageList_Draw((HIMAGELIST) GetHIMAGELIST(), index, hDC, + x, y, style) != 0); +*/ + return TRUE; }