From 9f35183f534f04144c5498ba73ef804e9ed3fb67 Mon Sep 17 00:00:00 2001 From: Ariya Hidayat Date: Wed, 3 Jun 2009 15:48:41 +0200 Subject: Refactor: QGraphicsEffect is now a subclass of QObject. This effectively makes other effect classes as QObject, too. It will facilitate the use of signal-slot to handle e.g. the change in effect parameters and the property system for doing animated effect. --- src/gui/graphicsview/qgraphicseffect.cpp | 365 +++++++++++++++++++++++++++---- src/gui/graphicsview/qgraphicseffect.h | 111 +++++----- 2 files changed, 375 insertions(+), 101 deletions(-) diff --git a/src/gui/graphicsview/qgraphicseffect.cpp b/src/gui/graphicsview/qgraphicseffect.cpp index 1d0e485..a1519c4 100644 --- a/src/gui/graphicsview/qgraphicseffect.cpp +++ b/src/gui/graphicsview/qgraphicseffect.cpp @@ -48,7 +48,8 @@ #include #include -#include +#include +#include /* @@ -104,7 +105,18 @@ */ -QGraphicsEffect::QGraphicsEffect() +/*! + \internal +*/ +class QGraphicsEffectPrivate : public QObjectPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsEffect) +public: + QGraphicsEffectPrivate() {} +}; + +QGraphicsEffect::QGraphicsEffect(QObject *parent) + : QObject(*new QGraphicsEffectPrivate, parent) { } @@ -120,6 +132,13 @@ QRectF QGraphicsEffect::boundingRectFor(const QGraphicsItem *item) return item->boundingRect(); } +/*! \internal +*/ +QGraphicsEffect::QGraphicsEffect(QGraphicsEffectPrivate &dd, QObject *parent) + : QObject(dd, parent) +{ +} + // this helper function is only for subclasses of QGraphicsEffect // the implementation is trivial, but this allows us to keep // QGraphicsScene::drawItem() as a protected function @@ -132,20 +151,39 @@ QPixmap* QGraphicsEffect::drawItemOnPixmap(QPainter *painter, QGraphicsItem *ite return item->scene()->drawItemOnPixmap(painter, item, option, widget, flags); } -QGraphicsGrayscaleEffect::QGraphicsGrayscaleEffect(): QGraphicsEffect() +/*! + \internal +*/ +class QGraphicsGrayscaleEffectPrivate : public QGraphicsEffectPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsGrayscaleEffect) +public: + QGraphicsGrayscaleEffectPrivate() { + filter = new QPixmapColorizeFilter; + filter->setColor(Qt::black); + } + + ~QGraphicsGrayscaleEffectPrivate() { + delete filter; + } + + QPixmapColorizeFilter *filter; +}; + +QGraphicsGrayscaleEffect::QGraphicsGrayscaleEffect(QObject *parent) + : QGraphicsEffect(*new QGraphicsGrayscaleEffectPrivate, parent) { - filter = new QPixmapColorizeFilter; - filter->setColor(Qt::black); } QGraphicsGrayscaleEffect::~QGraphicsGrayscaleEffect() { - delete filter; } void QGraphicsGrayscaleEffect::drawItem(QGraphicsItem *item, QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { + Q_D(QGraphicsGrayscaleEffect); + // Find the item's bounds in device coordinates. QRectF deviceBounds = painter->worldTransform().mapRect(item->boundingRect()); QRect deviceRect = deviceBounds.toRect().adjusted(-1, -1, 1, 1); @@ -159,33 +197,54 @@ void QGraphicsGrayscaleEffect::drawItem(QGraphicsItem *item, QPainter *painter, // Draw the pixmap with the filter using an untransformed painter. QTransform restoreTransform = painter->worldTransform(); painter->setWorldTransform(QTransform()); - filter->draw(painter, deviceRect.topLeft(), *pixmap, pixmap->rect()); + d->filter->draw(painter, deviceRect.topLeft(), *pixmap, pixmap->rect()); painter->setWorldTransform(restoreTransform); } -QGraphicsColorizeEffect::QGraphicsColorizeEffect(): QGraphicsEffect() +/*! + \internal +*/ +class QGraphicsColorizeEffectPrivate : public QGraphicsEffectPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsColorizeEffect) +public: + QGraphicsColorizeEffectPrivate() { + filter = new QPixmapColorizeFilter; + } + + ~QGraphicsColorizeEffectPrivate() { + delete filter; + } + + QPixmapColorizeFilter *filter; +}; + +QGraphicsColorizeEffect::QGraphicsColorizeEffect(QObject *parent) + : QGraphicsEffect(*new QGraphicsColorizeEffectPrivate, parent) { - filter = new QPixmapColorizeFilter; } QGraphicsColorizeEffect::~QGraphicsColorizeEffect() { - delete filter; } QColor QGraphicsColorizeEffect::color() const { - return filter->color(); + Q_D(const QGraphicsColorizeEffect); + return d->filter->color(); } void QGraphicsColorizeEffect::setColor(const QColor &c) { - filter->setColor(c); + Q_D(QGraphicsColorizeEffect); + d->filter->setColor(c); } void QGraphicsColorizeEffect::drawItem(QGraphicsItem *item, QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { + Q_D(QGraphicsColorizeEffect); + // Find the item's bounds in device coordinates. QRectF deviceBounds = painter->worldTransform().mapRect(item->boundingRect()); QRect deviceRect = deviceBounds.toRect().adjusted(-1, -1, 1, 1); @@ -199,11 +258,25 @@ void QGraphicsColorizeEffect::drawItem(QGraphicsItem *item, QPainter *painter, // Draw the pixmap with the filter using an untransformed painter. QTransform restoreTransform = painter->worldTransform(); painter->setWorldTransform(QTransform()); - filter->draw(painter, deviceRect.topLeft(), *pixmap, pixmap->rect()); + d->filter->draw(painter, deviceRect.topLeft(), *pixmap, pixmap->rect()); painter->setWorldTransform(restoreTransform); } -QGraphicsPixelizeEffect::QGraphicsPixelizeEffect(): QGraphicsEffect(), size(2) +/*! + \internal +*/ +class QGraphicsPixelizeEffectPrivate : public QGraphicsEffectPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsPixelizeEffect) +public: + QGraphicsPixelizeEffectPrivate() + : pixelSize(3) { } + + int pixelSize; +}; + +QGraphicsPixelizeEffect::QGraphicsPixelizeEffect(QObject *parent) + : QGraphicsEffect(*new QGraphicsPixelizeEffectPrivate, parent) { } @@ -211,9 +284,23 @@ QGraphicsPixelizeEffect::~QGraphicsPixelizeEffect() { } +int QGraphicsPixelizeEffect::pixelSize() const +{ + Q_D(const QGraphicsPixelizeEffect); + return d->pixelSize; +} + +void QGraphicsPixelizeEffect::setPixelSize(int size) +{ + Q_D(QGraphicsPixelizeEffect); + d->pixelSize = size; +} + void QGraphicsPixelizeEffect::drawItem(QGraphicsItem *item, QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { + Q_D(QGraphicsPixelizeEffect); + // Find the item's bounds in device coordinates. QRectF deviceBounds = painter->worldTransform().mapRect(item->boundingRect()); QRect deviceRect = deviceBounds.toRect().adjusted(-1, -1, 1, 1); @@ -226,18 +313,18 @@ void QGraphicsPixelizeEffect::drawItem(QGraphicsItem *item, QPainter *painter, // pixelize routine QImage img = pixmap->toImage().convertToFormat(QImage::Format_ARGB32); - if (size > 0) { + if (d->pixelSize > 0) { int width = img.width(); int height = img.height(); - for (int y = 0; y < height; y += size) { - int ys = qMin(height - 1, y + size / 2); + for (int y = 0; y < height; y += d->pixelSize) { + int ys = qMin(height - 1, y + d->pixelSize / 2); QRgb *sbuf = reinterpret_cast(img.scanLine(ys)); - for (int x = 0; x < width; x += size) { - int xs = qMin(width - 1, x + size / 2); + for (int x = 0; x < width; x += d->pixelSize) { + int xs = qMin(width - 1, x + d->pixelSize / 2); QRgb color = sbuf[xs]; - for (int yi = 0; yi < qMin(size, height - y); ++yi) { + for (int yi = 0; yi < qMin(d->pixelSize, height - y); ++yi) { QRgb *buf = reinterpret_cast(img.scanLine(y + yi)); - for (int xi = 0; xi < qMin(size, width - x); ++xi) + for (int xi = 0; xi < qMin(d->pixelSize, width - x); ++xi) buf[x + xi] = color; } } @@ -251,8 +338,21 @@ void QGraphicsPixelizeEffect::drawItem(QGraphicsItem *item, QPainter *painter, painter->setWorldTransform(restoreTransform); } +/*! + \internal +*/ +class QGraphicsBlurEffectPrivate : public QGraphicsEffectPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsBlurEffect) +public: + QGraphicsBlurEffectPrivate() + : blurRadius(4) { } + + int blurRadius; +}; -QGraphicsBlurEffect::QGraphicsBlurEffect(): QGraphicsEffect(), radius(6) +QGraphicsBlurEffect::QGraphicsBlurEffect(QObject *parent) + : QGraphicsEffect(*new QGraphicsBlurEffectPrivate, parent) { } @@ -325,9 +425,22 @@ static QImage blurred(const QImage& image, const QRect& rect, int radius) return result; } +int QGraphicsBlurEffect::blurRadius() const +{ + Q_D(const QGraphicsBlurEffect); + return d->blurRadius; +} + +void QGraphicsBlurEffect::setBlurRadius(int radius) +{ + Q_D(QGraphicsBlurEffect); + d->blurRadius = radius; +} + QRectF QGraphicsBlurEffect::boundingRectFor(const QGraphicsItem *item) { - qreal delta = radius * 3; + Q_D(const QGraphicsBlurEffect); + qreal delta = d->blurRadius * 3; QRectF blurRect = item->boundingRect(); blurRect.adjust(-delta, -delta, delta, delta); return blurRect; @@ -336,6 +449,8 @@ QRectF QGraphicsBlurEffect::boundingRectFor(const QGraphicsItem *item) void QGraphicsBlurEffect::drawItem(QGraphicsItem *item, QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { + Q_D(QGraphicsBlurEffect); + // Find the item's bounds in device coordinates. QRectF deviceBounds = painter->worldTransform().mapRect(item->boundingRect()); QRect deviceRect = deviceBounds.toRect().adjusted(-1, -1, 1, 1); @@ -347,6 +462,7 @@ void QGraphicsBlurEffect::drawItem(QGraphicsItem *item, QPainter *painter, return; // blur routine + int radius = d->blurRadius; QImage img = pixmap->toImage().convertToFormat(QImage::Format_ARGB32_Premultiplied); img = blurred(img, img.rect(), radius); @@ -357,8 +473,23 @@ void QGraphicsBlurEffect::drawItem(QGraphicsItem *item, QPainter *painter, painter->setWorldTransform(restoreTransform); } +/*! + \internal +*/ +class QGraphicsBloomEffectPrivate : public QGraphicsEffectPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsBlurEffect) +public: + QGraphicsBloomEffectPrivate() + : blurRadius(6) + , opacity(0.7) { } + + int blurRadius; + qreal opacity; +}; -QGraphicsBloomEffect::QGraphicsBloomEffect(): QGraphicsEffect(), radius(6), alpha(0.7) +QGraphicsBloomEffect::QGraphicsBloomEffect(QObject *parent) + : QGraphicsEffect(*new QGraphicsBloomEffectPrivate, parent) { } @@ -366,9 +497,34 @@ QGraphicsBloomEffect::~QGraphicsBloomEffect() { } +int QGraphicsBloomEffect::blurRadius() const +{ + Q_D(const QGraphicsBloomEffect); + return d->blurRadius; +} + +void QGraphicsBloomEffect::setBlurRadius(int radius) +{ + Q_D(QGraphicsBloomEffect); + d->blurRadius = radius; +} + +qreal QGraphicsBloomEffect::opacity() const +{ + Q_D(const QGraphicsBloomEffect); + return d->opacity; +} + +void QGraphicsBloomEffect::setOpacity(qreal alpha) +{ + Q_D(QGraphicsBloomEffect); + d->opacity = alpha; +} + QRectF QGraphicsBloomEffect::boundingRectFor(const QGraphicsItem *item) { - qreal delta = radius * 3; + Q_D(QGraphicsBloomEffect); + qreal delta = d->blurRadius * 3; QRectF blurRect = item->boundingRect(); blurRect.adjust(-delta, -delta, delta, delta); return blurRect; @@ -408,6 +564,8 @@ static QImage composited(const QImage& img1, const QImage& img2, qreal opacity, void QGraphicsBloomEffect::drawItem(QGraphicsItem *item, QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { + Q_D(QGraphicsBloomEffect); + // Find the item's bounds in device coordinates. QRectF deviceBounds = painter->worldTransform().mapRect(item->boundingRect()); QRect deviceRect = deviceBounds.toRect().adjusted(-1, -1, 1, 1); @@ -419,10 +577,11 @@ void QGraphicsBloomEffect::drawItem(QGraphicsItem *item, QPainter *painter, return; // bloom routine + int radius = d->blurRadius; QImage img = pixmap->toImage().convertToFormat(QImage::Format_ARGB32_Premultiplied); QImage overlay = blurred(img, img.rect(), radius); overlay = brightened(overlay, 70); - img = composited(img, overlay, alpha, QPainter::CompositionMode_Overlay); + img = composited(img, overlay, d->opacity, QPainter::CompositionMode_Overlay); // Draw using an untransformed painter. QTransform restoreTransform = painter->worldTransform(); @@ -431,11 +590,27 @@ void QGraphicsBloomEffect::drawItem(QGraphicsItem *item, QPainter *painter, painter->setWorldTransform(restoreTransform); } -QGraphicsFrameEffect::QGraphicsFrameEffect() - : QGraphicsEffect() - , color(Qt::blue) - , width(5) - , alpha(0.6) +/*! + \internal +*/ +class QGraphicsFrameEffectPrivate : public QGraphicsEffectPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsFrameEffect) +public: + QGraphicsFrameEffectPrivate() + : color(Qt::blue) + , width(5) + , alpha(0.6) + { + } + + QColor color; + qreal width; + qreal alpha; +}; + +QGraphicsFrameEffect::QGraphicsFrameEffect(QObject *parent) + : QGraphicsEffect(*new QGraphicsFrameEffectPrivate, parent) { } @@ -443,16 +618,55 @@ QGraphicsFrameEffect::~QGraphicsFrameEffect() { } +QColor QGraphicsFrameEffect::frameColor() const +{ + Q_D(const QGraphicsFrameEffect); + return d->color; +} + +void QGraphicsFrameEffect::setFrameColor(const QColor &c) +{ + Q_D(QGraphicsFrameEffect); + d->color = c; +} + +qreal QGraphicsFrameEffect::frameWidth() const +{ + Q_D(const QGraphicsFrameEffect); + return d->width; +} + +void QGraphicsFrameEffect::setFrameWidth(qreal frameWidth) +{ + Q_D(QGraphicsFrameEffect); + d->width = frameWidth; +} + +qreal QGraphicsFrameEffect::frameOpacity() const +{ + Q_D(const QGraphicsFrameEffect); + return d->alpha; +} + +void QGraphicsFrameEffect::setFrameOpacity(qreal opacity) +{ + Q_D(QGraphicsFrameEffect); + d->alpha = opacity; +} + QRectF QGraphicsFrameEffect::boundingRectFor(const QGraphicsItem *item) { + Q_D(QGraphicsFrameEffect); QRectF frameRect = item->boundingRect(); - frameRect.adjust(-width, -width, width, width); + frameRect.adjust(-d->width, -d->width, d->width, d->width); return frameRect; } void QGraphicsFrameEffect::drawItem(QGraphicsItem *item, QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { + Q_D(QGraphicsFrameEffect); + // Find the item's bounds in device coordinates. QRectF deviceBounds = painter->worldTransform().mapRect(item->boundingRect()); QRect deviceRect = deviceBounds.toRect().adjusted(-1, -1, 1, 1); @@ -464,15 +678,15 @@ void QGraphicsFrameEffect::drawItem(QGraphicsItem *item, QPainter *painter, return; QRectF frameRect = deviceBounds; - frameRect.adjust(-width, -width, width, width); + frameRect.adjust(-d->width, -d->width, d->width, d->width); painter->save(); painter->setWorldTransform(QTransform()); painter->save(); - painter->setOpacity(painter->opacity() * alpha); + painter->setOpacity(painter->opacity() * d->alpha); painter->setPen(Qt::NoPen); - painter->setBrush(color); + painter->setBrush(d->color); painter->drawRoundedRect(frameRect, 20, 20, Qt::RelativeSize); painter->restore(); @@ -482,11 +696,27 @@ void QGraphicsFrameEffect::drawItem(QGraphicsItem *item, QPainter *painter, } -QGraphicsShadowEffect::QGraphicsShadowEffect() - : QGraphicsEffect() - , offset(4,4) - , radius(8) - , alpha(0.7) +/*! + \internal +*/ +class QGraphicsShadowEffectPrivate : public QGraphicsEffectPrivate +{ + Q_DECLARE_PUBLIC(QGraphicsShadowEffect) +public: + QGraphicsShadowEffectPrivate() + : offset(4,4) + , radius(8) + , alpha(0.7) + { + } + + QPointF offset; + int radius; + qreal alpha; +}; + +QGraphicsShadowEffect::QGraphicsShadowEffect(QObject *parent) + : QGraphicsEffect(*new QGraphicsShadowEffectPrivate, parent) { } @@ -494,12 +724,49 @@ QGraphicsShadowEffect::~QGraphicsShadowEffect() { } +QPointF QGraphicsShadowEffect::shadowOffset() const +{ + Q_D(const QGraphicsShadowEffect); + return d->offset; +} + +void QGraphicsShadowEffect::setShadowOffset(const QPointF &ofs) +{ + Q_D(QGraphicsShadowEffect); + d->offset = ofs; +} + +int QGraphicsShadowEffect::blurRadius() const +{ + Q_D(const QGraphicsShadowEffect); + return d->radius; +} + +void QGraphicsShadowEffect::setBlurRadius(int blurRadius) +{ + Q_D(QGraphicsShadowEffect); + d->radius = blurRadius; +} + +qreal QGraphicsShadowEffect::opacity() const +{ + Q_D(const QGraphicsShadowEffect); + return d->alpha; +} + +void QGraphicsShadowEffect::setOpacity(qreal opacity) +{ + Q_D(QGraphicsShadowEffect); + d->alpha = opacity; +} + QRectF QGraphicsShadowEffect::boundingRectFor(const QGraphicsItem *item) { + Q_D(QGraphicsShadowEffect); QRectF shadowRect = item->boundingRect(); - shadowRect.adjust(offset.x(), offset.y(), offset.x(), offset.y()); + shadowRect.adjust(d->offset.x(), d->offset.y(), d->offset.x(), d->offset.y()); QRectF blurRect = shadowRect; - qreal delta = radius * 3; + qreal delta = d->radius * 3; blurRect.adjust(-delta, -delta, delta, delta); QRectF totalRect = blurRect.united(item->boundingRect()); return totalRect; @@ -508,6 +775,8 @@ QRectF QGraphicsShadowEffect::boundingRectFor(const QGraphicsItem *item) void QGraphicsShadowEffect::drawItem(QGraphicsItem *item, QPainter *painter, const QStyleOptionGraphicsItem *option, QWidget *widget) { + Q_D(QGraphicsShadowEffect); + // Find the item's bounds in device coordinates. QRectF deviceBounds = painter->worldTransform().mapRect(item->boundingRect()); QRect deviceRect = deviceBounds.toRect().adjusted(-1, -1, 1, 1); @@ -515,9 +784,9 @@ void QGraphicsShadowEffect::drawItem(QGraphicsItem *item, QPainter *painter, return; QRectF shadowRect = deviceBounds; - shadowRect.adjust(offset.x(), offset.y(), offset.x(), offset.y()); + shadowRect.adjust(d->offset.x(), d->offset.y(), d->offset.x(), d->offset.y()); QRectF blurRect = shadowRect; - qreal delta = radius * 3; + qreal delta = d->radius * 3; blurRect.adjust(-delta, -delta, delta, delta); QRectF totalRect = blurRect.united(deviceRect); @@ -527,9 +796,9 @@ void QGraphicsShadowEffect::drawItem(QGraphicsItem *item, QPainter *painter, QImage img = pixmap->toImage(); QImage shadowImage(img.size(), QImage::Format_ARGB32); - shadowImage.fill(qRgba(0, 0, 0, alpha * 255)); + shadowImage.fill(qRgba(0, 0, 0, d->alpha * 255)); shadowImage.setAlphaChannel(img.alphaChannel()); - shadowImage = blurred(shadowImage, shadowImage.rect(), radius); + shadowImage = blurred(shadowImage, shadowImage.rect(), d->radius); // Draw using an untransformed painter. QTransform restoreTransform = painter->worldTransform(); @@ -540,9 +809,9 @@ void QGraphicsShadowEffect::drawItem(QGraphicsItem *item, QPainter *painter, qreal shadowx = blurRect.x() + delta; qreal shadowy = blurRect.y() + delta; if (blurRect.x() < deviceRect.x()) - shadowx = blurRect.x() + offset.x(); + shadowx = blurRect.x() + d->offset.x(); if (blurRect.y() < deviceRect.y()) - shadowy = blurRect.y() + offset.y(); + shadowy = blurRect.y() + d->offset.y(); painter->drawImage(shadowx, shadowy, shadowImage); qreal itemx = qMin(blurRect.x(), deviceBounds.x()); diff --git a/src/gui/graphicsview/qgraphicseffect.h b/src/gui/graphicsview/qgraphicseffect.h index 9f6fb07..f15b172 100644 --- a/src/gui/graphicsview/qgraphicseffect.h +++ b/src/gui/graphicsview/qgraphicseffect.h @@ -42,6 +42,7 @@ #ifndef QGRAPHICSEFFECT_H #define QGRAPHICSEFFECT_H +#include #include #include #include @@ -62,10 +63,12 @@ QT_MODULE(Gui) #if !defined(QT_NO_GRAPHICSVIEW) || (QT_EDITION & QT_MODULE_GRAPHICSVIEW) != QT_MODULE_GRAPHICSVIEW -class Q_GUI_EXPORT QGraphicsEffect { +class QGraphicsEffectPrivate; +class Q_GUI_EXPORT QGraphicsEffect : public QObject +{ public: - QGraphicsEffect(); + QGraphicsEffect(QObject *parent = 0); virtual ~QGraphicsEffect(); virtual QRectF boundingRectFor(const QGraphicsItem *item); @@ -75,17 +78,21 @@ public: QWidget *widget = 0) = 0; protected: + QGraphicsEffect(QGraphicsEffectPrivate &d, QObject* parent); QPixmap* drawItemOnPixmap(QPainter *painter, QGraphicsItem *item, const QStyleOptionGraphicsItem *option, QWidget *widget, int flags); private: - Q_DISABLE_COPY(QGraphicsEffect); + Q_DECLARE_PRIVATE(QGraphicsEffect) + Q_DISABLE_COPY(QGraphicsEffect) }; -class Q_GUI_EXPORT QGraphicsGrayscaleEffect: public QGraphicsEffect { +class QGraphicsGrayscaleEffectPrivate; +class Q_GUI_EXPORT QGraphicsGrayscaleEffect: public QGraphicsEffect +{ public: - QGraphicsGrayscaleEffect(); + QGraphicsGrayscaleEffect(QObject *parent = 0); ~QGraphicsGrayscaleEffect(); void drawItem(QGraphicsItem *item, QPainter *painter, @@ -93,14 +100,15 @@ public: QWidget *widget = 0); private: - QPixmapColorizeFilter *filter; - Q_DISABLE_COPY(QGraphicsGrayscaleEffect); + Q_DECLARE_PRIVATE(QGraphicsGrayscaleEffect) + Q_DISABLE_COPY(QGraphicsGrayscaleEffect) }; +class QGraphicsColorizeEffectPrivate; class Q_GUI_EXPORT QGraphicsColorizeEffect: public QGraphicsEffect { public: - QGraphicsColorizeEffect(); + QGraphicsColorizeEffect(QObject *parent = 0); ~QGraphicsColorizeEffect(); QColor color() const; @@ -111,36 +119,38 @@ public: QWidget *widget = 0); private: - QPixmapColorizeFilter *filter; - Q_DISABLE_COPY(QGraphicsColorizeEffect); + Q_DECLARE_PRIVATE(QGraphicsColorizeEffect) + Q_DISABLE_COPY(QGraphicsColorizeEffect) }; +class QGraphicsPixelizeEffectPrivate; class Q_GUI_EXPORT QGraphicsPixelizeEffect: public QGraphicsEffect { public: - QGraphicsPixelizeEffect(); + QGraphicsPixelizeEffect(QObject *parent = 0); ~QGraphicsPixelizeEffect(); - int pixelSize() const { return size; } - void setPixelSize(int pixelSize) { size = pixelSize; } + int pixelSize() const; + void setPixelSize(int pixelSize); void drawItem(QGraphicsItem *item, QPainter *painter, const QStyleOptionGraphicsItem *option = 0, QWidget *widget = 0); private: - int size; - Q_DISABLE_COPY(QGraphicsPixelizeEffect); + Q_DECLARE_PRIVATE(QGraphicsPixelizeEffect) + Q_DISABLE_COPY(QGraphicsPixelizeEffect) }; +class QGraphicsBlurEffectPrivate; class Q_GUI_EXPORT QGraphicsBlurEffect: public QGraphicsEffect { public: - QGraphicsBlurEffect(); + QGraphicsBlurEffect(QObject *parent = 0); ~QGraphicsBlurEffect(); - int blurRadius() const { return radius; } - void setBlurRadius(int blurRadius) { radius = blurRadius; } + int blurRadius() const; + void setBlurRadius(int blurRadius); QRectF boundingRectFor(const QGraphicsItem *item); @@ -149,49 +159,49 @@ public: QWidget *widget = 0); private: - int radius; - Q_DISABLE_COPY(QGraphicsBlurEffect); + Q_DECLARE_PRIVATE(QGraphicsBlurEffect) + Q_DISABLE_COPY(QGraphicsBlurEffect) }; +class QGraphicsBloomEffectPrivate; class Q_GUI_EXPORT QGraphicsBloomEffect: public QGraphicsEffect { public: - QGraphicsBloomEffect(); + QGraphicsBloomEffect(QObject *parent = 0); ~QGraphicsBloomEffect(); - int blurRadius() const { return radius; } - void setBlurRadius(int blurRadius) { radius = blurRadius; } + int blurRadius() const; + void setBlurRadius(int blurRadius); - QRectF boundingRectFor(const QGraphicsItem *item); + qreal opacity() const; + void setOpacity(qreal opacity); - qreal opacity() const { return alpha; } - void setOpacity(qreal opacity) { alpha = opacity; } + QRectF boundingRectFor(const QGraphicsItem *item); void drawItem(QGraphicsItem *item, QPainter *painter, const QStyleOptionGraphicsItem *option = 0, QWidget *widget = 0); private: - int radius; - qreal alpha; - Q_DISABLE_COPY(QGraphicsBloomEffect); + Q_DECLARE_PRIVATE(QGraphicsBloomEffect) + Q_DISABLE_COPY(QGraphicsBloomEffect) }; +class QGraphicsFrameEffectPrivate; class Q_GUI_EXPORT QGraphicsFrameEffect: public QGraphicsEffect { public: - QGraphicsFrameEffect(); + QGraphicsFrameEffect(QObject *parent = 0); ~QGraphicsFrameEffect(); - QColor frameColor() const { return color; } - void setFrameColor(const QColor &c) { color = c; } - - qreal frameWidth() const { return width; } - void setFrameWidth(qreal frameWidth) { width = frameWidth; } + QColor frameColor() const; + void setFrameColor(const QColor &c); - qreal frameOpacity() const { return alpha; } - void setFrameOpacity(qreal opacity) { alpha = opacity; } + qreal frameWidth() const; + void setFrameWidth(qreal frameWidth); + qreal frameOpacity() const; + void setFrameOpacity(qreal opacity); QRectF boundingRectFor(const QGraphicsItem *item); @@ -199,28 +209,27 @@ public: const QStyleOptionGraphicsItem *option = 0, QWidget *widget = 0); private: - QColor color; - qreal width; - qreal alpha; - Q_DISABLE_COPY(QGraphicsFrameEffect); + Q_DECLARE_PRIVATE(QGraphicsFrameEffect) + Q_DISABLE_COPY(QGraphicsFrameEffect) }; +class QGraphicsShadowEffectPrivate; class Q_GUI_EXPORT QGraphicsShadowEffect: public QGraphicsEffect { public: - QGraphicsShadowEffect(); + QGraphicsShadowEffect(QObject *parent = 0); ~QGraphicsShadowEffect(); QPointF shadowOffset() const; - void setShadowOffset(const QPointF &ofs) { offset = ofs; } + void setShadowOffset(const QPointF &ofs); inline void setShadowOffset(qreal dx, qreal dy) { setShadowOffset(QPointF(dx, dy)); } inline void setShadowOffset(qreal d) { setShadowOffset(QPointF(d, d)); } - int blurRadius() const { return radius; } - void setBlurRadius(int blurRadius) { radius = blurRadius; } + int blurRadius() const; + void setBlurRadius(int blurRadius); - qreal opacity() const { return alpha; } - void setOpacity(qreal opacity) { alpha = opacity; } + qreal opacity() const; + void setOpacity(qreal opacity); QRectF boundingRectFor(const QGraphicsItem *item); @@ -229,16 +238,12 @@ public: QWidget *widget = 0); protected: - QPointF offset; - int radius; - qreal alpha; private: - Q_DISABLE_COPY(QGraphicsShadowEffect); + Q_DECLARE_PRIVATE(QGraphicsShadowEffect) + Q_DISABLE_COPY(QGraphicsShadowEffect) }; - - Q_DECLARE_METATYPE(QGraphicsEffect *) Q_DECLARE_METATYPE(QGraphicsGrayscaleEffect *) Q_DECLARE_METATYPE(QGraphicsColorizeEffect *) -- cgit v0.12