Skip to content

Commit

Permalink
Added plug&paint and gradients
Browse files Browse the repository at this point in the history
  • Loading branch information
Konstantin Tokarev committed Nov 30, 2011
1 parent c634518 commit 0b954b1
Show file tree
Hide file tree
Showing 70 changed files with 4,163 additions and 0 deletions.
516 changes: 516 additions & 0 deletions demos/gradients/gradients.cpp

Large diffs are not rendered by default.

170 changes: 170 additions & 0 deletions demos/gradients/gradients.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,170 @@
/****************************************************************************
**
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation ([email protected])
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial Usage
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** 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.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
** If you have questions regarding the use of this file, please contact
** Nokia at [email protected].
** $QT_END_LICENSE$
**
****************************************************************************/

#ifndef GRADIENTS_H
#define GRADIENTS_H

#include "arthurwidgets.h"

#include <QtGui>

class HoverPoints;


class ShadeWidget : public QWidget
{
Q_OBJECT
public:
enum ShadeType {
RedShade,
GreenShade,
BlueShade,
ARGBShade
};

ShadeWidget(ShadeType type, QWidget *parent);

void setGradientStops(const QGradientStops &stops);

void paintEvent(QPaintEvent *e);

QSize sizeHint() const { return QSize(150, 40); }
QPolygonF points() const;

HoverPoints *hoverPoints() const { return m_hoverPoints; }

uint colorAt(int x);

signals:
void colorsChanged();

private:
void generateShade();

ShadeType m_shade_type;
QImage m_shade;
HoverPoints *m_hoverPoints;
QLinearGradient m_alpha_gradient;
};

class GradientEditor : public QWidget
{
Q_OBJECT
public:
GradientEditor(QWidget *parent);

void setGradientStops(const QGradientStops &stops);

public slots:
void pointsUpdated();

signals:
void gradientStopsChanged(const QGradientStops &stops);

private:
ShadeWidget *m_red_shade;
ShadeWidget *m_green_shade;
ShadeWidget *m_blue_shade;
ShadeWidget *m_alpha_shade;
};


class GradientRenderer : public ArthurFrame
{
Q_OBJECT
public:
GradientRenderer(QWidget *parent);
void paint(QPainter *p);

QSize sizeHint() const { return QSize(400, 400); }

HoverPoints *hoverPoints() const { return m_hoverPoints; }
void mousePressEvent(QMouseEvent *e);

public slots:
void setGradientStops(const QGradientStops &stops);

void setPadSpread() { m_spread = QGradient::PadSpread; update(); }
void setRepeatSpread() { m_spread = QGradient::RepeatSpread; update(); }
void setReflectSpread() { m_spread = QGradient::ReflectSpread; update(); }

void setLinearGradient() { m_gradientType = Qt::LinearGradientPattern; update(); }
void setRadialGradient() { m_gradientType = Qt::RadialGradientPattern; update(); }
void setConicalGradient() { m_gradientType = Qt::ConicalGradientPattern; update(); }


private:
QGradientStops m_stops;
HoverPoints *m_hoverPoints;

QGradient::Spread m_spread;
Qt::BrushStyle m_gradientType;
};


class GradientWidget : public QWidget
{
Q_OBJECT
public:
GradientWidget(QWidget *parent);

public slots:
void setDefault1() { setDefault(1); }
void setDefault2() { setDefault(2); }
void setDefault3() { setDefault(3); }
void setDefault4() { setDefault(4); }

private:
void setDefault(int i);

GradientRenderer *m_renderer;
GradientEditor *m_editor;

QRadioButton *m_linearButton;
QRadioButton *m_radialButton;
QRadioButton *m_conicalButton;
QRadioButton *m_padSpreadButton;
QRadioButton *m_reflectSpreadButton;
QRadioButton *m_repeatSpreadButton;

};

#endif // GRADIENTS_H
31 changes: 31 additions & 0 deletions demos/gradients/gradients.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,31 @@
<html>
<center>
<h2>Gradients</h2>
</center>

<p>In this demo we show the various types of gradients that can
be used in Qt.</p>

<p>There are three types of gradients:

<ul>
<li><b>Linear</b> gradients interpolate colors between start and end
points.</li>
<li><b>Radial</b> gradients interpolate colors between a focal point and the
points on a circle surrounding it.</li>
<li><b>Conical</b> gradients interpolate colors around a center point.</li>
</ul>

</p>

<p>The panel on the right contains a color table editor that defines
the colors in the gradient. The three topmost controls determine the red,
green and blue components while the last defines the alpha of the
gradient. You can move points, and add new ones, by clicking with the left
mouse button, and remove points by clicking with the right button.</p>

<p>There are three default configurations available at the bottom of
the page that are provided as suggestions on how a color table could be
configured.</p>

</html>
20 changes: 20 additions & 0 deletions demos/gradients/gradients.pro
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
SOURCES += main.cpp gradients.cpp
HEADERS += gradients.h

SHARED_FOLDER = ../shared

include($$SHARED_FOLDER/shared.pri)

RESOURCES += gradients.qrc
contains(QT_CONFIG, opengl) {
DEFINES += QT_OPENGL_SUPPORT
QT += opengl
}

# install
target.path = $$[QT_INSTALL_DEMOS]/gradients
sources.files = $$SOURCES $$HEADERS $$RESOURCES *.pro *.html
sources.path = $$[QT_INSTALL_DEMOS]/gradients
INSTALLS += target sources

symbian: include($$QT_SOURCE_TREE/demos/symbianpkgrules.pri)
6 changes: 6 additions & 0 deletions demos/gradients/gradients.qrc
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
<!DOCTYPE RCC><RCC version="1.0">
<qresource prefix="/res/gradients">
<file>gradients.cpp</file>
<file>gradients.html</file>
</qresource>
</RCC>
63 changes: 63 additions & 0 deletions demos/gradients/main.cpp
Original file line number Diff line number Diff line change
@@ -0,0 +1,63 @@
/****************************************************************************
**
** Copyright (C) 2011 Nokia Corporation and/or its subsidiary(-ies).
** All rights reserved.
** Contact: Nokia Corporation ([email protected])
**
** This file is part of the demonstration applications of the Qt Toolkit.
**
** $QT_BEGIN_LICENSE:LGPL$
** Commercial Usage
** Licensees holding valid Qt Commercial licenses may use this file in
** accordance with the Qt Commercial License Agreement provided with the
** Software or, alternatively, in accordance with the terms contained in
** a written agreement between you and Nokia.
**
** 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.
**
** GNU General Public License Usage
** Alternatively, this file may be used under the terms of the GNU
** General Public License version 3.0 as published by the Free Software
** Foundation and appearing in the file LICENSE.GPL included in the
** packaging of this file. Please review the following information to
** ensure the GNU General Public License version 3.0 requirements will be
** met: http://www.gnu.org/copyleft/gpl.html.
**
** If you have questions regarding the use of this file, please contact
** Nokia at [email protected].
** $QT_END_LICENSE$
**
****************************************************************************/

#include "gradients.h"

#include <QApplication>

int main(int argc, char **argv)
{
Q_INIT_RESOURCE(gradients);

QApplication app(argc, argv);

GradientWidget gradientWidget(0);
QStyle *arthurStyle = new ArthurStyle();
gradientWidget.setStyle(arthurStyle);
QList<QWidget *> widgets = qFindChildren<QWidget *>(&gradientWidget);
foreach (QWidget *w, widgets) {
w->setStyle(arthurStyle);
w->setAttribute(Qt::WA_AcceptTouchEvents);
}
gradientWidget.show();

return app.exec();
}
Loading

0 comments on commit 0b954b1

Please sign in to comment.