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)
|
||||
{
|
||||
// Bounding box is internally stored in device units.
|
||||
x = LogicalToDeviceX(x);
|
||||
y = LogicalToDeviceY(y);
|
||||
wxPoint ptDev = LogicalToDevice(x, y);
|
||||
x = ptDev.x;
|
||||
y = ptDev.y;
|
||||
if ( m_isBBoxValid )
|
||||
{
|
||||
if ( x < m_minX ) m_minX = x;
|
||||
@@ -359,10 +360,10 @@ public:
|
||||
}
|
||||
|
||||
// Get bounding box in logical units.
|
||||
wxCoord MinX() const { return m_isBBoxValid ? DeviceToLogicalX(m_minX) : 0; }
|
||||
wxCoord MaxX() const { return m_isBBoxValid ? DeviceToLogicalX(m_maxX) : 0; }
|
||||
wxCoord MinY() const { return m_isBBoxValid ? DeviceToLogicalY(m_minY) : 0; }
|
||||
wxCoord MaxY() const { return m_isBBoxValid ? DeviceToLogicalY(m_maxY) : 0; }
|
||||
wxCoord MinX() const { return m_isBBoxValid ? DeviceToLogical(m_minX, m_minY).x : 0; }
|
||||
wxCoord MaxX() const { return m_isBBoxValid ? DeviceToLogical(m_maxX, m_maxY).x : 0; }
|
||||
wxCoord MinY() const { return m_isBBoxValid ? DeviceToLogical(m_minX, m_minY).y : 0; }
|
||||
wxCoord MaxY() const { return m_isBBoxValid ? DeviceToLogical(m_maxX, m_maxY).y : 0; }
|
||||
|
||||
// setters and getters
|
||||
|
||||
|
Reference in New Issue
Block a user