Fix calculating bounding box
We should use platform-specific functions to convert coordinates to take into account all transformations applied to wxDC (also with transform matrix). Closes #18916.
This commit is contained in:
@@ -332,8 +332,9 @@ public:
|
|||||||
virtual void CalcBoundingBox(wxCoord x, wxCoord y)
|
virtual void CalcBoundingBox(wxCoord x, wxCoord y)
|
||||||
{
|
{
|
||||||
// Bounding box is internally stored in device units.
|
// Bounding box is internally stored in device units.
|
||||||
x = LogicalToDeviceX(x);
|
wxPoint ptDev = LogicalToDevice(x, y);
|
||||||
y = LogicalToDeviceY(y);
|
x = ptDev.x;
|
||||||
|
y = ptDev.y;
|
||||||
if ( m_isBBoxValid )
|
if ( m_isBBoxValid )
|
||||||
{
|
{
|
||||||
if ( x < m_minX ) m_minX = x;
|
if ( x < m_minX ) m_minX = x;
|
||||||
@@ -359,10 +360,10 @@ public:
|
|||||||
}
|
}
|
||||||
|
|
||||||
// Get bounding box in logical units.
|
// Get bounding box in logical units.
|
||||||
wxCoord MinX() const { return m_isBBoxValid ? DeviceToLogicalX(m_minX) : 0; }
|
wxCoord MinX() const { return m_isBBoxValid ? DeviceToLogical(m_minX, m_minY).x : 0; }
|
||||||
wxCoord MaxX() const { return m_isBBoxValid ? DeviceToLogicalX(m_maxX) : 0; }
|
wxCoord MaxX() const { return m_isBBoxValid ? DeviceToLogical(m_maxX, m_maxY).x : 0; }
|
||||||
wxCoord MinY() const { return m_isBBoxValid ? DeviceToLogicalY(m_minY) : 0; }
|
wxCoord MinY() const { return m_isBBoxValid ? DeviceToLogical(m_minX, m_minY).y : 0; }
|
||||||
wxCoord MaxY() const { return m_isBBoxValid ? DeviceToLogicalY(m_maxY) : 0; }
|
wxCoord MaxY() const { return m_isBBoxValid ? DeviceToLogical(m_maxX, m_maxY).y : 0; }
|
||||||
|
|
||||||
// setters and getters
|
// setters and getters
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user