]> git.saurik.com Git - wxWidgets.git/blobdiff - src/os2/checkbox.cpp
speeding up rectangle drawing by using specific methods, needs 40% less time
[wxWidgets.git] / src / os2 / checkbox.cpp
index b83deaa481f2a6460fda44a063455ea2a9218e90..5462a84f7a1e447cbc6425e273d3916c33005953 100644 (file)
@@ -1,5 +1,5 @@
 /////////////////////////////////////////////////////////////////////////////
-// Name:        checkbox.cpp
+// Name:        src/os2/checkbox.cpp
 // Purpose:     wxCheckBox
 // Author:      David Webster
 // Modified by:
@@ -12,8 +12,9 @@
 // For compilers that support precompilation, includes "wx.h".
 #include "wx/wxprec.h"
 
+#include "wx/checkbox.h"
+
 #ifndef WX_PRECOMP
-    #include "wx/checkbox.h"
     #include "wx/brush.h"
     #include "wx/scrolwin.h"
     #include "wx/dcscreen.h"
@@ -26,7 +27,6 @@
 // macros
 // ----------------------------------------------------------------------------
 
-IMPLEMENT_DYNAMIC_CLASS(wxCheckBox, wxControl)
 IMPLEMENT_DYNAMIC_CLASS(wxBitmapCheckBox, wxCheckBox)
 
 extern void  wxAssociateWinWithHandle( HWND         hWnd
@@ -51,20 +51,15 @@ bool wxCheckBox::OS2Command( WXUINT WXUNUSED(uParam),
     return true;
 } // end of wxCheckBox::OS2Command
 
-bool wxCheckBox::Create(
-  wxWindow*                         pParent
-, wxWindowID                        vId
-, const wxString&                   rsLabel
-, const wxPoint&                    rPos
-, const wxSize&                     rSize
-, long                              lStyle
-, const wxValidator&                rValidator
-, const wxString&                   rsName
-)
+bool wxCheckBox::Create(wxWindow* pParent,
+                        wxWindowID vId,
+                        const wxString& rsLabel,
+                        const wxPoint& rPos,
+                        const wxSize& rSize,
+                        long lStyle,
+                        const wxValidator& rValidator,
+                        const wxString& rsName )
 {
-    LONG                            lColor;
-    bool                            bOk;
-
     if (!CreateControl( pParent
                        ,vId
                        ,rPos
@@ -73,14 +68,12 @@ bool wxCheckBox::Create(
                        ,rValidator
                        ,rsName
                       ))
-        return FALSE;
+        return false;
 
 
-    long                            osStyle = BS_AUTOCHECKBOX |
-                                              WS_TABSTOP      |
-                                              WS_VISIBLE;
+    long osStyle = BS_AUTOCHECKBOX | WS_TABSTOP | WS_VISIBLE;
 
-    bOk = OS2CreateControl( wxT("BUTTON")
+    bool bOk = OS2CreateControl( wxT("BUTTON")
                            ,osStyle
                            ,rPos
                            ,rSize
@@ -88,7 +81,8 @@ bool wxCheckBox::Create(
                            ,0
                           );
     m_backgroundColour = pParent->GetBackgroundColour();
-    lColor = (LONG)m_backgroundColour.GetPixel();
+
+    LONG lColor = (LONG)m_backgroundColour.GetPixel();
     ::WinSetPresParam( m_hWnd
                       ,PP_BACKGROUNDCOLOR
                       ,sizeof(LONG)
@@ -98,32 +92,17 @@ bool wxCheckBox::Create(
     return bOk;
 } // end of wxCheckBox::Create
 
-void wxCheckBox::SetLabel(
-  const wxString&                   rsLabel
-)
+void wxCheckBox::SetLabel( const wxString& rsLabel )
 {
-    wxString                         sLabel=::wxPMTextToLabel(rsLabel);
-    ::WinSetWindowText(GetHwnd(), (PSZ)sLabel.c_str());
+    wxString  sLabel=::wxPMTextToLabel(rsLabel);
+    ::WinSetWindowText(GetHwnd(), sLabel.c_str());
 } // end of wxCheckBox::SetLabel
 
 wxSize wxCheckBox::DoGetBestSize() const
 {
-    static int                      nCheckSize = 0;
-
-    if (!nCheckSize)
-    {
-        wxScreenDC                  vDc;
-
-        vDc.SetFont(wxSystemSettings::GetFont(wxSYS_DEFAULT_GUI_FONT));
-
-        //
-        // The height of a standard button in the dialog units is 8,
-        // translate this to pixels (as one dialog unit is precisely equal to
-        // 8 character heights, it's just the char height)
-        //
-        nCheckSize = vDc.GetCharHeight();
-    }
-
+    // We should probably compute nCheckSize but it seems to be a constant
+    // independent of its label's font size and not made available by OS/2.
+    int      nCheckSize = RADIO_SIZE;
     int      nWidthCheckbox;
     int      nHeightCheckbox;
     wxString sStr = wxGetWindowText(GetHWND());
@@ -134,7 +113,7 @@ wxSize wxCheckBox::DoGetBestSize() const
                       ,&nWidthCheckbox
                       ,&nHeightCheckbox
                      );
-        nWidthCheckbox += nCheckSize + GetCharWidth();
+        nWidthCheckbox += nCheckSize;
 
         if (nHeightCheckbox < nCheckSize)
             nHeightCheckbox = nCheckSize;
@@ -145,14 +124,10 @@ wxSize wxCheckBox::DoGetBestSize() const
         nHeightCheckbox = nCheckSize;
     }
 
-    return wxSize( nWidthCheckbox
-                  ,nHeightCheckbox
-                 );
+    return wxSize( nWidthCheckbox, nHeightCheckbox );
 } // end of wxCheckBox::DoGetBestSize
 
-void wxCheckBox::SetValue(
-  bool                              bValue
-)
+void wxCheckBox::SetValue( bool bValue )
 {
     ::WinSendMsg(GetHwnd(), BM_SETCHECK, (MPARAM)bValue, 0);
 } // end of wxCheckBox::SetValue
@@ -166,9 +141,7 @@ bool wxCheckBox::GetValue() const
     return((LONGFROMMR(::WinSendMsg(GetHwnd(), BM_QUERYCHECK, (MPARAM)0, (MPARAM)0)) == 1L));
 } // end of wxCheckBox::GetValue
 
-void wxCheckBox::Command (
-  wxCommandEvent&                  rEvent
-)
+void wxCheckBox::Command ( wxCommandEvent& rEvent )
 {
     SetValue((rEvent.GetInt() != 0));
     ProcessCommand(rEvent);