Add ToDIP to wxDC and wxGraphicsContext

This commit is contained in:
Maarten Bent
2022-04-21 21:37:53 +02:00
parent 6637811f32
commit e8cf1f989b
8 changed files with 70 additions and 0 deletions

View File

@@ -541,6 +541,8 @@ public:
virtual wxSize FromDIP(const wxSize& sz) const; virtual wxSize FromDIP(const wxSize& sz) const;
virtual wxSize ToDIP(const wxSize& sz) const;
#ifdef __WXMSW__ #ifdef __WXMSW__
// Native Windows functions using the underlying HDC don't honour GDI+ // Native Windows functions using the underlying HDC don't honour GDI+
// transformations which may be applied to it. Using this function we can // transformations which may be applied to it. Using this function we can
@@ -839,6 +841,20 @@ public:
int FromDIP(int d) const int FromDIP(int d) const
{ return FromDIP(wxSize(d, 0)).x; } { return FromDIP(wxSize(d, 0)).x; }
wxSize ToDIP(const wxSize & sz) const
{
return m_pimpl->ToDIP(sz);
}
wxPoint ToDIP(const wxPoint & pt) const
{
const wxSize sz = ToDIP(wxSize(pt.x, pt.y));
return wxPoint(sz.x, sz.y);
}
int ToDIP(int d) const
{
return ToDIP(wxSize(d, 0)).x;
}
// Right-To-Left (RTL) modes // Right-To-Left (RTL) modes
void SetLayoutDirection(wxLayoutDirection dir) void SetLayoutDirection(wxLayoutDirection dir)

View File

@@ -253,6 +253,11 @@ private:
return sz; return sz;
} }
virtual wxSize ToDIP(const wxSize& sz) const wxOVERRIDE
{
return sz;
}
void Init(const wxString& filename, int width, int height, void Init(const wxString& filename, int width, int height,
double dpi, const wxString& title); double dpi, const wxString& title);

View File

@@ -81,6 +81,11 @@ public:
return sz; return sz;
} }
virtual wxSize ToDIP(const wxSize& sz) const wxOVERRIDE
{
return sz;
}
virtual void ComputeScaleAndOrigin() wxOVERRIDE; virtual void ComputeScaleAndOrigin() wxOVERRIDE;
void SetBackgroundMode(int WXUNUSED(mode)) wxOVERRIDE { } void SetBackgroundMode(int WXUNUSED(mode)) wxOVERRIDE { }

View File

@@ -750,6 +750,17 @@ public:
return FromDIP(wxSize(d, 0)).x; return FromDIP(wxSize(d, 0)).x;
} }
wxSize ToDIP(const wxSize& sz) const;
wxPoint ToDIP(const wxPoint& pt) const
{
const wxSize sz = ToDIP(wxSize(pt.x, pt.y));
return wxPoint(sz.x, sz.y);
}
int ToDIP(int d) const
{
return ToDIP(wxSize(d, 0)).x;
}
#if 0 #if 0
// sets the current alpha on this context // sets the current alpha on this context
virtual void SetAlpha( wxDouble alpha ); virtual void SetAlpha( wxDouble alpha );

View File

@@ -41,6 +41,11 @@ public:
return sz; return sz;
} }
virtual wxSize ToDIP(const wxSize& sz) const wxOVERRIDE
{
return sz;
}
void SetFont(const wxFont& font) wxOVERRIDE; void SetFont(const wxFont& font) wxOVERRIDE;
protected: protected:

View File

@@ -617,6 +617,17 @@ wxSize wxDCImpl::FromDIP(const wxSize& sz) const
#endif // wxHAS_DPI_INDEPENDENT_PIXELS #endif // wxHAS_DPI_INDEPENDENT_PIXELS
} }
wxSize wxDCImpl::ToDIP(const wxSize& sz) const
{
#ifdef wxHAS_DPI_INDEPENDENT_PIXELS
return sz;
#else
const wxSize dpi = GetPPI();
const wxSize baseline = wxDisplay::GetStdPPI();
return wxRescaleCoord(sz).From(dpi).To(baseline);
#endif // wxHAS_DPI_INDEPENDENT_PIXELS
}
bool wxDCImpl::DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const bool wxDCImpl::DoGetPartialTextExtents(const wxString& text, wxArrayInt& widths) const
{ {
wxTextMeasure tm(GetOwner(), &m_font); wxTextMeasure tm(GetOwner(), &m_font);

View File

@@ -647,6 +647,18 @@ wxSize wxGraphicsContext::FromDIP(const wxSize& sz) const
#endif // wxHAS_DPI_INDEPENDENT_PIXELS #endif // wxHAS_DPI_INDEPENDENT_PIXELS
} }
wxSize wxGraphicsContext::ToDIP(const wxSize& sz) const
{
#ifdef wxHAS_DPI_INDEPENDENT_PIXELS
return sz;
#else
wxRealPoint dpi;
GetDPI(&dpi.x, &dpi.y);
const wxSize baseline = wxDisplay::GetStdPPI();
return wxRescaleCoord(sz).From(wxSize((int)dpi.x, (int)dpi.y)).To(baseline);
#endif // wxHAS_DPI_INDEPENDENT_PIXELS
}
// sets the pen // sets the pen
void wxGraphicsContext::SetPen( const wxGraphicsPen& pen ) void wxGraphicsContext::SetPen( const wxGraphicsPen& pen )
{ {

View File

@@ -229,6 +229,11 @@ public:
return sz; return sz;
} }
virtual wxSize ToDIP(const wxSize& sz) const wxOVERRIDE
{
return sz;
}
void SetFont(const wxFont& font) wxOVERRIDE void SetFont(const wxFont& font) wxOVERRIDE
{ {
wxFont scaledFont = font; wxFont scaledFont = font;