void Ellipse::process(Canvas &canvasMain, Canvas &canvasTemp, const MouseState &mouse, const PaintParameters ¶m) { canvasTemp.clear(); if (!m_leftClicked && mouse.isLeftPressed()) { if (mouse.isOnCanvas()) { m_ellipseStart = mouse.getPos(); m_ellipseStart -= canvasMain.getPos(); m_startOnCanvas = true; } else { m_startOnCanvas = false; } } else if (m_leftClicked && mouse.isLeftPressed() && m_startOnCanvas) { m_ellipseEnd = mouse.getPos(); m_ellipseEnd -= canvasMain.getPos(); drawEllipse(*canvasTemp.ptr(), m_ellipseStart, m_ellipseEnd, param); } else if (m_leftClicked && !mouse.isLeftPressed() && m_startOnCanvas) { drawEllipse(*canvasMain.ptr(), m_ellipseStart, m_ellipseEnd, param); } m_leftClicked = mouse.isLeftPressed(); }