]> git.saurik.com Git - wxWidgets.git/commitdiff
implemented wxDC::DoGetSize() correctly for metafile DC classes
authorVadim Zeitlin <vadim@wxwidgets.org>
Sun, 25 Dec 2005 13:06:05 +0000 (13:06 +0000)
committerVadim Zeitlin <vadim@wxwidgets.org>
Sun, 25 Dec 2005 13:06:05 +0000 (13:06 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@36566 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/msw/enhmeta.h
include/wx/msw/metafile.h
src/msw/enhmeta.cpp
src/msw/metafile.cpp

index f892b1927ba325625cc6248b87346b36adcd209e..4fa8d1c8d0cac3dfde4c475f2cc2ee8e0bb0e80b 100644 (file)
@@ -87,6 +87,12 @@ public:
     wxEnhMetaFile *Close();
 
 private:
+    virtual void DoGetSize(int *width, int *height) const;
+
+    // size passed to ctor and returned by DoGetSize()
+    int m_width,
+        m_height;
+
     DECLARE_DYNAMIC_CLASS_NO_COPY(wxEnhMetaFileDC)
 };
 
index 9d2ceaddad6934bfc53a71d4ba82cd7bfa69db02..5bca9a99f08d1a982d87d51d153df485d9343362 100644 (file)
@@ -107,6 +107,8 @@ public:
     void SetWindowsMappingMode(int mm) { m_windowsMappingMode = mm; }
 
 protected:
+    virtual void DoGetSize(int *width, int *height) const;
+
     int           m_windowsMappingMode;
     wxMetafile*   m_metaFile;
 
index 037b749003b3458ea9797daf81f111754848d052..cf6e758b69745442ffa8e8729a5d9f0c63c59c04 100644 (file)
@@ -194,7 +194,9 @@ wxEnhMetaFileDC::wxEnhMetaFileDC(const wxString& filename,
                                  int width, int height,
                                  const wxString& description)
 {
-    ScreenHDC hdcRef;
+    m_width = width;
+    m_height = height;
+
     RECT rect;
     RECT *pRect;
     if ( width && height )
@@ -215,6 +217,7 @@ wxEnhMetaFileDC::wxEnhMetaFileDC(const wxString& filename,
         pRect = (LPRECT)NULL;
     }
 
+    ScreenHDC hdcRef;
     m_hDC = (WXHDC)::CreateEnhMetaFile(hdcRef, GetMetaFileName(filename),
                                        pRect, description);
     if ( !m_hDC )
@@ -223,6 +226,14 @@ wxEnhMetaFileDC::wxEnhMetaFileDC(const wxString& filename,
     }
 }
 
+void wxEnhMetaFileDC::DoGetSize(int *width, int *height) const
+{
+    if ( width )
+        *width = m_width;
+    if ( height )
+        *height = m_height;
+}
+
 wxEnhMetaFile *wxEnhMetaFileDC::Close()
 {
     wxCHECK_MSG( Ok(), NULL, _T("invalid wxEnhMetaFileDC") );
index 2889b04b854c4b22ecff58c7f8d100df9819c31b..dfe59cc8f5f71097dce4ddacf2b1218c42453bf8 100644 (file)
@@ -243,6 +243,16 @@ void wxMetafileDC::GetTextExtent(const wxString& string, long *x, long *y,
         *externalLeading = tm.tmExternalLeading;
 }
 
+void wxMetafileDC::DoGetSize(int *width, int *height) const
+{
+    wxCHECK_RET( m_refData, _T("invalid wxMetafileDC") );
+
+    if ( width )
+        *width = M_METAFILEDATA->m_width;
+    if ( height )
+        *height = M_METAFILEDATA->m_height;
+}
+
 wxMetafile *wxMetafileDC::Close()
 {
     SelectOldObjects(m_hDC);