diff --git a/PortabilityLayer/EllipsePlotter.cpp b/PortabilityLayer/EllipsePlotter.cpp index d6c9e4e..c4c7c52 100644 --- a/PortabilityLayer/EllipsePlotter.cpp +++ b/PortabilityLayer/EllipsePlotter.cpp @@ -73,9 +73,9 @@ namespace PortabilityLayer const int32_t xStepCost = -m_xChangeCostDynamicFactor + m_xChangeCostStaticFactor; const int32_t yStepCost = m_yChangeCostDynamicFactor + m_yChangeCostStaticFactor; - const int32_t diagonalCostDelta = xStepCost + yStepCost; + const int32_t tangentCalc = (-m_xChangeCostDynamicFactor) + m_yChangeCostDynamicFactor; - if (diagonalCostDelta < 0) + if (tangentCalc < 0) { // Diagonal movement will move closer to the edge (first octant) IncrementY(); @@ -115,9 +115,9 @@ namespace PortabilityLayer const int32_t xStepCost = -m_xChangeCostDynamicFactor + m_xChangeCostStaticFactor; const int32_t yStepCost = -m_yChangeCostDynamicFactor + m_yChangeCostStaticFactor; - const int32_t diagonalCostDelta = xStepCost + yStepCost; + const int32_t tangentCalc = (-m_xChangeCostDynamicFactor) + (-m_yChangeCostDynamicFactor); - if (diagonalCostDelta < 0) + if (tangentCalc < 0) { // Diagonal movement will move closer to the edge (first octant) DecrementX(); @@ -157,9 +157,9 @@ namespace PortabilityLayer const int32_t xStepCost = m_xChangeCostDynamicFactor + m_xChangeCostStaticFactor; const int32_t yStepCost = -m_yChangeCostDynamicFactor + m_yChangeCostStaticFactor; - const int32_t diagonalCostDelta = xStepCost + yStepCost; + const int32_t tangentCalc = (m_xChangeCostDynamicFactor) + (-m_yChangeCostDynamicFactor); - if (diagonalCostDelta < 0) + if (tangentCalc < 0) { // Diagonal movement will move closer to the edge (first octant) DecrementY(); @@ -199,9 +199,9 @@ namespace PortabilityLayer const int32_t xStepCost = m_xChangeCostDynamicFactor + m_xChangeCostStaticFactor; const int32_t yStepCost = m_yChangeCostDynamicFactor + m_yChangeCostStaticFactor; - const int32_t diagonalCostDelta = xStepCost + yStepCost; + const int32_t tangentCalc = m_xChangeCostDynamicFactor + m_yChangeCostDynamicFactor; - if (diagonalCostDelta < 0) + if (tangentCalc < 0) { // Diagonal movement will move closer to the edge (first octant) IncrementX(); diff --git a/PortabilityLayer/PLQDraw.cpp b/PortabilityLayer/PLQDraw.cpp index 88e8c1c..4f93f5d 100644 --- a/PortabilityLayer/PLQDraw.cpp +++ b/PortabilityLayer/PLQDraw.cpp @@ -1014,9 +1014,15 @@ void DrawSurface::SetSystemFont(int size, int variationFlags) void DrawSurface::FillEllipse(const Rect &rect) { - if (!rect.IsValid()) + if (!rect.IsValid() || rect.Width() < 1 || rect.Height() < 1) return; + if (rect.Width() <= 2 || rect.Height() <= 2) + { + FillRect(rect); + return; + } + PortabilityLayer::ScanlineMask *mask = PortabilityLayer::ScanlineMaskConverter::CompileEllipse(PortabilityLayer::Rect2i(rect.top, rect.left, rect.bottom, rect.right)); if (mask) {