From 8111d4bf6281420b7f44ae70c26d2531cfe34401 Mon Sep 17 00:00:00 2001 From: leseb Date: Sat, 16 Mar 2002 22:19:40 +0000 Subject: Initial commit --- (limited to 'noncore/graphics/drawpad/pointdrawmode.cpp') diff --git a/noncore/graphics/drawpad/pointdrawmode.cpp b/noncore/graphics/drawpad/pointdrawmode.cpp new file mode 100644 index 0000000..11722c8 --- a/dev/null +++ b/noncore/graphics/drawpad/pointdrawmode.cpp @@ -0,0 +1,67 @@ +/*************************************************************************** + * * + * DrawPad - a drawing program for Opie Environment * + * * + * (C) 2002 by S. Prud'homme * + * * + * This program is free software; you can redistribute it and/or modify * + * it under the terms of the GNU General Public License as published by * + * the Free Software Foundation; either version 2 of the License, or * + * (at your option) any later version. * + * * + ***************************************************************************/ + +#include "pointdrawmode.h" + +#include "drawpad.h" +#include "drawpadcanvas.h" + +#include +#include + +PointDrawMode::PointDrawMode(DrawPad* drawPad, DrawPadCanvas* drawPadCanvas) + : DrawMode(drawPad, drawPadCanvas) +{ + m_mousePressed = false; + m_polyline.resize(3); +} + +PointDrawMode::~PointDrawMode() +{ +} + +void PointDrawMode::mousePressEvent(QMouseEvent* e) +{ + m_mousePressed = true; + m_polyline[2] = m_polyline[1] = m_polyline[0] = e->pos(); +} + +void PointDrawMode::mouseReleaseEvent(QMouseEvent* e) +{ + Q_UNUSED(e); + + m_mousePressed = false; +} + +void PointDrawMode::mouseMoveEvent(QMouseEvent* e) +{ + if (m_mousePressed) { + QPainter painter; + painter.begin(m_pDrawPadCanvas->currentPage()); + painter.setPen(m_pDrawPad->pen()); + m_polyline[2] = m_polyline[1]; + m_polyline[1] = m_polyline[0]; + m_polyline[0] = e->pos(); + painter.drawPolyline(m_polyline); + painter.end(); + + QRect r = m_polyline.boundingRect(); + r = r.normalize(); + r.setLeft(r.left() - m_pDrawPad->pen().width()); + r.setTop(r.top() - m_pDrawPad->pen().width()); + r.setRight(r.right() + m_pDrawPad->pen().width()); + r.setBottom(r.bottom() + m_pDrawPad->pen().width()); + + bitBlt(m_pDrawPadCanvas, r.x(), r.y(), m_pDrawPadCanvas->currentPage(), r.x(), r.y(), r.width(), r.height()); + } +} -- cgit v0.9.0.2