#include "wx/fl/newbmpbtn.h"
#include "wx/utils.h" // import wxMin,wxMax macros
+#ifdef __WXMSW__
+#include "wx/msw/private.h"
+#endif
+
///////////// button-label rendering helpers //////////////////
static int* create_array( int width, int height, int fill = 0 )
EVT_LEFT_DOWN ( wxNewBitmapButton::OnLButtonDown )
EVT_LEFT_UP ( wxNewBitmapButton::OnLButtonUp )
- EVT_LEFT_DCLICK ( wxNewBitmapButton::OnLButtonDClick )
+// EVT_LEFT_DCLICK ( wxNewBitmapButton::OnLButtonDClick )
+ EVT_LEFT_DCLICK ( wxNewBitmapButton::OnLButtonDown )
EVT_ENTER_WINDOW( wxNewBitmapButton::OnMouseEnter )
EVT_LEAVE_WINDOW( wxNewBitmapButton::OnMouseLeave )
destBmp->GetHeight() + mMarginY*2, 0
);
}
+ destDc.SelectObject( wxNullBitmap );
+
+#ifdef __WXMSW__
+ // Map to system colours
+ (void) MapBitmap(destBmp->GetHBITMAP(), destBmp->GetWidth(), destBmp->GetHeight());
+#endif
}
+
void wxNewBitmapButton::RenderAllLabelImages()
{
if ( !mIsCreated )
}
}
-void wxNewBitmapButton::OnLButtonDClick( wxMouseEvent& event )
-{
- if ( IsInWindow( event.m_x, event.m_y ) )
- {
- // fire event, if mouse was released
- // within the bounds of button
- wxCommandEvent cmd( mFiredEventType, GetId() );
- GetParent()->ProcessEvent( cmd );
-
- mDragStarted = FALSE;
- mIsPressed = FALSE;
- Refresh();
- }
-}
-
bool wxNewBitmapButton::IsInWindow( int x, int y )
{
int width, height;
wxMessageBox("kill-focus for button!");
}
+#ifdef __WXMSW__
+WXHBITMAP wxNewBitmapButton::MapBitmap(WXHBITMAP bitmap, int width, int height)
+{
+ MemoryHDC hdcMem;
+
+ if ( !hdcMem )
+ {
+ wxLogLastError(_T("CreateCompatibleDC"));
+
+ return bitmap;
+ }
+
+ SelectInHDC bmpInHDC(hdcMem, (HBITMAP)bitmap);
+
+ if ( !bmpInHDC )
+ {
+ wxLogLastError(_T("SelectObject"));
+
+ return bitmap;
+ }
+
+ wxCOLORMAP *cmap = wxGetStdColourMap();
+
+ for ( int i = 0; i < width; i++ )
+ {
+ for ( int j = 0; j < height; j++ )
+ {
+ COLORREF pixel = ::GetPixel(hdcMem, i, j);
+
+ for ( size_t k = 0; k < wxSTD_COL_MAX; k++ )
+ {
+ COLORREF col = cmap[k].from;
+ if ( abs(GetRValue(pixel) - GetRValue(col)) < 10 &&
+ abs(GetGValue(pixel) - GetGValue(col)) < 10 &&
+ abs(GetBValue(pixel) - GetBValue(col)) < 10 )
+ {
+ ::SetPixel(hdcMem, i, j, cmap[k].to);
+ break;
+ }
+ }
+ }
+ }
+
+ return bitmap;
+}
+#endif