]> git.saurik.com Git - wxWidgets.git/commitdiff
adding magnification API into the wxWindow classes for best retina support
authorStefan Csomor <csomor@advancedconcepts.ch>
Mon, 17 Jun 2013 17:41:34 +0000 (17:41 +0000)
committerStefan Csomor <csomor@advancedconcepts.ch>
Mon, 17 Jun 2013 17:41:34 +0000 (17:41 +0000)
git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@74247 c3d73ce0-8a6f-49c7-b76d-6d57e0e08775

include/wx/osx/cocoa/private.h
include/wx/osx/core/private.h
include/wx/osx/nonownedwnd.h
include/wx/osx/window.h
include/wx/window.h
src/osx/cocoa/nonownedwnd.mm
src/osx/nonownedwnd_osx.cpp
src/osx/window_osx.cpp

index b99e9dae19765e87b983e0d3c7d9ae65113bd2ea..d5008ee052b2a841719da3745507346be299acdc 100644 (file)
@@ -247,6 +247,8 @@ public :
 
     virtual void WindowToScreen( int *x, int *y );
 
+    virtual double GetMagnificationFactor() const;
+
     virtual bool IsActive();
 
     virtual void SetModified(bool modified);
index f6fe11ee6867d8a233e10068a2087baeec105847..c93a02c7eaf3cb39895c4977db5e675b6e55bd47 100644 (file)
@@ -873,6 +873,8 @@ public :
     virtual void ScreenToWindow( int *x, int *y ) = 0;
 
     virtual void WindowToScreen( int *x, int *y ) = 0;
+    
+    virtual double GetMagnificationFactor() const { return 1.0; }
 
     virtual bool IsActive() = 0;
 
index a972612b2bb7dea4148c81e103d3b52b2d0175d1..273cf5ddc02c18d565ef13eacbf35c171c03a376 100644 (file)
@@ -65,6 +65,8 @@ public:
     virtual void UnsubclassWin();
 
     virtual wxPoint GetClientAreaOrigin() const;
+    
+    virtual double GetMagnificationFactor() const;
 
     // implement base class pure virtuals
 
index 57afc42463e7f0e00b259abd557a02205ecd8f56..69f910a574486844987ddb964e6debdb7cedd734 100644 (file)
@@ -97,6 +97,8 @@ public:
 
     virtual int GetCharHeight() const;
     virtual int GetCharWidth() const;
+    
+    virtual double GetMagnificationFactor() const;
 
 public:
     virtual void SetScrollbar( int orient, int pos, int thumbVisible,
index a5cc6c4fa579de17e8e6f21375df8a1d346fa90a..8376fb773152dbf24470ccbddad5de7a45c241d7 100644 (file)
@@ -521,6 +521,11 @@ public:
         return wxSize( wxMax( client.x, best.x ), wxMax( client.y, best.y ) );
     }
 
+    // returns the magnification of the backing store of this window
+    // eg 2.0 for a window on a retina screen
+    virtual double GetMagnificationFactor() const
+    { return 1.0; }
+    
     // return the size of the left/right and top/bottom borders in x and y
     // components of the result respectively
     virtual wxSize GetWindowBorderSize() const;
index 030b1e6a23ca794f20300296232329ce0a8219c6..7ca8cf85f5e574b95921b417a6587f72d9f9d95c 100644 (file)
@@ -1035,6 +1035,11 @@ void wxNonOwnedWindowCocoaImpl::WindowToScreen( int *x, int *y )
         *y = p.y;
 }
 
+double wxNonOwnedWindowCocoaImpl::GetMagnificationFactor() const
+{
+    return [m_macWindow backingScaleFactor];
+}
+
 bool wxNonOwnedWindowCocoaImpl::IsActive()
 {
     return [m_macWindow isKeyWindow];
index edcba5d9ce707e6f0cf838324b99f2177e7be9f7..183fe42d7fab5b9388b8a7ce9ba71919708f4d6a 100644 (file)
@@ -478,6 +478,11 @@ void wxNonOwnedWindow::DoGetClientSize( int *width, int *height ) const
        *height = h ;
 }
 
+double wxNonOwnedWindow::GetMagnificationFactor() const
+{
+    return m_nowpeer->GetMagnificationFactor();
+}
+
 void wxNonOwnedWindow::WindowWasPainted()
 {
     s_lastFlush = clock();
index 33e376ad8d75c18f2adf45e6107d7401df9569ab..1a44f25e42241559e72326ac2891e751039000f0 100644 (file)
@@ -877,6 +877,13 @@ void wxWindowMac::DoGetClientSize( int *x, int *y ) const
        *y = hh;
 }
 
+double wxWindowMac::GetMagnificationFactor() const
+{
+    wxNonOwnedWindow* tlw = MacGetTopLevelWindow() ;
+    wxCHECK_MSG( tlw , 1.0, wxT("TopLevel Window missing") ) ;
+    return tlw->GetMagnificationFactor();    
+}
+
 bool wxWindowMac::SetCursor(const wxCursor& cursor)
 {
     if (m_cursor.IsSameAs(cursor))