1 /*********************************************************************/
3 /* Copyright (C) 2009 Adenilson Cavalcanti <> */
5 /* This program is free software; you can redistribute it and/or */
6 /* modify it under the terms of the GNU General Public License */
7 /* as published by the Free Software Foundation; either version 2 */
8 /* of the License, or (at your option) any later version. */
10 /* This program is distributed in the hope that it will be useful, */
11 /* but WITHOUT ANY WARRANTY; without even the implied warranty of */
12 /* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the */
13 /* GNU General Public License for more details. */
15 /* You should have received a copy of the GNU General Public License */
16 /* along with this program; if not, write to the Free Software */
17 /* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA */
18 /* 02110-1301, USA. */
19 /*********************************************************************/
25 #include <QGraphicsWidget>
27 class QAbstractAnimation
;
29 class ProxyOpacitySetter
;
31 class QPropertyAnimation
;
33 class PulseBase
: public QObject
40 void updateGeometry(QRectF updated
, qreal zCoordinate
= 0, qreal scale
= 1.5);
52 void createAnimation(qreal _duration
, qreal _scale
,
53 ProxyOpacitySetter
*_setter
);
54 QAbstractAnimation
*animation
;
55 QGraphicsWidget
*under
;
56 QRectF
*pulseGeometry
;
58 QPropertyAnimation
*anim1
, *anim2
, *anim3
;
61 template <typename TYPE
>
62 class Pulser
: public PulseBase
67 Pulser( TYPE
*target
, qreal scale
= 1.5, qreal duration
= 500,
68 ProxyOpacitySetter
*setter
= 0 )
70 under
= new TYPE( *target
);
71 under
->setParentItem( target
);
72 zvalue
= target
->zValue();
74 under
->setOpacity( 0 );
75 under
->setZValue( zvalue
);
76 mscale
= under
->scale();
77 createAnimation(duration
, scale
, setter
);