git-svn-id: https://svn.wxwidgets.org/svn/wx/wxWidgets/trunk@67001 
c3d73ce0-8a6f-49c7-b76d-
6d57e0e08775
     virtual void        GetPosition( int &x, int &y ) const = 0;
     virtual void        GetSize( int &width, int &height ) const = 0;
     virtual void        SetControlSize( wxWindowVariant variant ) = 0;
     virtual void        GetPosition( int &x, int &y ) const = 0;
     virtual void        GetSize( int &width, int &height ) const = 0;
     virtual void        SetControlSize( wxWindowVariant variant ) = 0;
+    virtual float       GetContentScaleFactor() const 
+    {
+        return 1.0;
+    }
     
     // the native coordinates may have an 'aura' for shadows etc, if this is the case the layout
     // inset indicates on which insets the real control is drawn
     
     // the native coordinates may have an 'aura' for shadows etc, if this is the case the layout
     // inset indicates on which insets the real control is drawn
 
     virtual void        GetPosition( int &x, int &y ) const;
     virtual void        GetSize( int &width, int &height ) const;
     virtual void        SetControlSize( wxWindowVariant variant );
     virtual void        GetPosition( int &x, int &y ) const;
     virtual void        GetSize( int &width, int &height ) const;
     virtual void        SetControlSize( wxWindowVariant variant );
+    virtual float       GetContentScaleFactor() const ;
+    
     virtual void        SetNeedsDisplay( const wxRect* where = NULL );
     virtual bool        GetNeedsDisplay() const;
 
     virtual void        SetNeedsDisplay( const wxRect* where = NULL );
     virtual bool        GetNeedsDisplay() const;
 
 
     virtual bool        OSXHandleKeyEvent( wxKeyEvent& event );
 
     bool                IsNativeWindowWrapper() const { return m_isNativeWindowWrapper; }
     virtual bool        OSXHandleKeyEvent( wxKeyEvent& event );
 
     bool                IsNativeWindowWrapper() const { return m_isNativeWindowWrapper; }
+    
+    float               GetContentScaleFactor() const ;
+    
 protected:
     // For controls like radio buttons which are genuinely composite
     wxList              m_subControls;
 protected:
     // For controls like radio buttons which are genuinely composite
     wxList              m_subControls;
 
     [m_osxView setFrame:r];
 }
 
     [m_osxView setFrame:r];
 }
 
 void wxWidgetIPhoneImpl::GetPosition( int &x, int &y ) const
 {
     CGRect r = [m_osxView frame];
 void wxWidgetIPhoneImpl::GetPosition( int &x, int &y ) const
 {
     CGRect r = [m_osxView frame];
+float wxWidgetIPhoneImpl::GetContentScaleFactor() const 
+{
+    return [m_osxView contentScaleFactor];
+}
+
 void wxWidgetIPhoneImpl::SetFont( const wxFont & font , const wxColour& foreground , long windowStyle, bool ignoreBlack )
 {
 }
 void wxWidgetIPhoneImpl::SetFont( const wxFont & font , const wxColour& foreground , long windowStyle, bool ignoreBlack )
 {
 }
 
+float wxWindowMac::GetContentScaleFactor() const 
+{
+    return m_peer->GetContentScaleFactor();
+}
+
 void wxWindowMac::SetLabel(const wxString& title)
 {
     if ( title == m_label )
 void wxWindowMac::SetLabel(const wxString& title)
 {
     if ( title == m_label )