src/qt3support/painting/q3painter.cpp
changeset 0 1918ee327afb
child 4 3b1da2848fc7
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/qt3support/painting/q3painter.cpp	Mon Jan 11 14:00:40 2010 +0000
@@ -0,0 +1,240 @@
+/****************************************************************************
+**
+** Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies).
+** All rights reserved.
+** Contact: Nokia Corporation (qt-info@nokia.com)
+**
+** This file is part of the Qt3Support module of the Qt Toolkit.
+**
+** $QT_BEGIN_LICENSE:LGPL$
+** No Commercial Usage
+** This file contains pre-release code and may not be distributed.
+** You may use this file in accordance with the terms and conditions
+** contained in the Technology Preview License Agreement accompanying
+** this package.
+**
+** GNU Lesser General Public License Usage
+** Alternatively, this file may be used under the terms of the GNU Lesser
+** General Public License version 2.1 as published by the Free Software
+** Foundation and appearing in the file LICENSE.LGPL included in the
+** packaging of this file.  Please review the following information to
+** ensure the GNU Lesser General Public License version 2.1 requirements
+** will be met: http://www.gnu.org/licenses/old-licenses/lgpl-2.1.html.
+**
+** In addition, as a special exception, Nokia gives you certain additional
+** rights.  These rights are described in the Nokia Qt LGPL Exception
+** version 1.1, included in the file LGPL_EXCEPTION.txt in this package.
+**
+** If you have questions regarding the use of this file, please contact
+** Nokia at qt-info@nokia.com.
+**
+**
+**
+**
+**
+**
+**
+**
+** $QT_END_LICENSE$
+**
+****************************************************************************/
+
+#include "q3painter.h"
+#include "qpaintengine.h"
+
+#include <private/qpainter_p.h>
+
+QT_BEGIN_NAMESPACE
+
+/*!
+    \class Q3Painter
+    \brief The Q3Painter class is a Qt 3 compatibility wrapper for QPainter.
+
+    \compat
+
+    Prior to Qt 4, QPainter specialized the pen drawing for rectangle
+    based functions (in particular: drawRect, drawEllipse,
+    drawRoundRect, drawArc, drawChord and drawPie). When stroking a
+    rectangle of width 10, the pen would draw a rectangle of width 10.
+    Drawing a polygon defined by the corner points of the same
+    rectangle the stroke would have a width of 11.
+
+    The reason for this is best explained using the picture below:
+
+    \img q3painter_rationale.png
+
+    As we can see, stroking the rectangle so it gets a width of 10,
+    means the pen is drawn on a rectangle on width 9. The polygon,
+    however follows a consistent model.
+
+    In Qt 4, all rectangle based functions have changed to follow the
+    polygon approach, which means that the rectangle defines the size of
+    the fill, and the pen follows the edges of the shape. For pen widths
+    of 0 and 1 this means that the stroke will be inside the shape on the
+    left and the top and outside on the bottom and right.
+
+    The reason for the change in Qt 4 is so that we provide consistency
+    for all drawing functions even with complex transformations.
+*/
+
+/*!
+    \fn Q3Painter::Q3Painter()
+
+    Constructs a Q3Painter.
+*/
+
+/*!
+    \fn Q3Painter::Q3Painter(QPaintDevice *pdev)
+
+    Constructs a Q3Painter that operates on device \a pdev.
+*/
+
+/*!
+    \internal
+*/
+QRect Q3Painter::adjustedRectangle(const QRect &r)
+{
+    QRect rect = r.normalized();
+    int subtract = d_func()->rectSubtraction();
+    if (subtract != 0)
+        rect.setSize(QSize(rect.width() - subtract, rect.height() - subtract));
+    return rect;
+}
+
+
+/*!
+    \fn void Q3Painter::drawRect(int x, int y, int w, int h)
+
+    \overload
+
+    Draws the rectangle that fits inside the bounds specified by \a x,
+    \a y, \a w and \a h using the current pen and brush.
+*/
+
+/*!
+    \fn void Q3Painter::drawRect(const QRect &r)
+
+    Draws a rectangle that fits inside the rectangle \a r using the
+    current pen and brush.
+
+*/
+
+
+
+/*!
+    \fn Q3Painter::drawEllipse(const QRect &r)
+
+    Draws the ellipse that fits inside the bounds \a r using the
+    current pen and brush.
+
+*/
+
+/*!
+    \fn Q3Painter::drawEllipse(int x, int y, int width, int height)
+
+    \overload
+
+    Draws an ellipse that fits inside the bounds specified by \a x,
+    \a y, \a width and \a height using the current pen and brush.
+
+*/
+
+/*!
+    \fn void Q3Painter::drawPie(int x, int y, int w, int h, int
+    startAngle, int spanAngle)
+
+    \overload
+
+    Draws a pie segment that fits inside the bounds (\a{x}, \a{y},
+    \a{w}, \a{h}) with the given \a startAngle and \a spanAngle.
+*/
+
+/*!
+    \fn void Q3Painter::drawPie(const QRect &r, int a, int alen)
+
+    Draws a pie defined by the rectangle \a r, the start angle \a a
+    and the arc length \a alen.
+
+    The pie is filled with the current brush().
+
+    The angles \a a and \a alen are 1/16th of a degree, i.e. a full
+    circle equals 5760 (16*360). Positive values of \a a and \a alen
+    mean counter-clockwise while negative values mean the clockwise
+    direction. Zero degrees is at the 3 o'clock position.
+
+    \sa drawArc(), drawChord()
+*/
+
+/*!
+    \fn void Q3Painter::drawArc(int x, int y, int w, int h, int
+    startAngle, int spanAngle)
+
+    \overload
+
+    Draws the arc that fits inside the rectangle (\a{x}, \a{y}, \a{w},
+    \a{h}), with the given \a startAngle and \a spanAngle.
+*/
+
+/*!
+    \fn void Q3Painter::drawArc(const QRect &r, int a, int alen)
+
+    Draws an arc defined by the rectangle \a r, the start angle \a a
+    and the arc length \a alen.
+
+    The angles \a a and \a alen are 1/16th of a degree, i.e. a full
+    circle equals 5760 (16*360). Positive values of \a a and \a alen
+    mean counter-clockwise while negative values mean the clockwise
+    direction. Zero degrees is at the 3 o'clock position.
+
+    Example:
+    \snippet doc/src/snippets/code/src_qt3support_painting_q3painter.cpp 0
+
+    \sa drawPie(), drawChord()
+*/
+
+/*!
+    \fn void Q3Painter::drawChord(int x, int y, int w, int h, int
+    startAngle, int spanAngle)
+
+    \overload
+
+    Draws a chord that fits inside the rectangle (\a{x}, \a{y}, \a{w},
+    \a{h}) with the given \a startAngle and \a spanAngle.
+*/
+
+
+/*!
+    \fn void Q3Painter::drawChord(const QRect &r, int a, int alen)
+
+    Draws a chord defined by the rectangle \a r, the start angle \a a
+    and the arc length \a alen.
+
+    The chord is filled with the current brush().
+
+    The angles \a a and \a alen are 1/16th of a degree, i.e. a full
+    circle equals 5760 (16*360). Positive values of \a a and \a alen
+    mean counter-clockwise while negative values mean the clockwise
+    direction. Zero degrees is at the 3 o'clock position.
+
+    \sa drawArc(), drawPie()
+*/
+
+/*!
+    \fn void Q3Painter::drawRoundRect(const QRect &r, int xrnd, int yrnd)
+
+    Draws a rounded rect that fits into the bounds \a r using the current
+    pen and brush. The parameters \a xrnd and \a yrnd specifies the roundness
+    in x and y direction.
+*/
+
+/*!
+    \fn void Q3Painter::drawRoundRect(int x, int y, int w, int h, int xrnd, int yrnd)
+
+    \overload
+
+    Draws a rounded rect that fits into the bounds \a x, \a y, \a w
+    and \a h using the current pen and brush. The parameters \a xrnd
+    and \a yrnd specifies the roundness in x and y direction.
+*/
+
+QT_END_NAMESPACE