/* * Copyright 2008 Arthur Renato Mello * Copyright 2008 Gustavo Pichorim Boiko * * 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 3 of the License, or * (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with this program; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA * */ #include #include "animateditem.h" AnimatedItem::AnimatedItem(const QPoint &p_pos, const QPixmap &p_pixmap, QWidget *parent) :QWidget(parent), m_timeLine(1000) { m_alpha = 0.0; m_pixmap = p_pixmap; resize(m_pixmap.size()); move(p_pos); connect(&m_timeLine, SIGNAL(valueChanged(qreal)), this, SLOT(slotAnimate(qreal))); } AnimatedItem::~AnimatedItem() { } void AnimatedItem::paintEvent(QPaintEvent *e) { QPainter p; QPixmap pix(m_pixmap.size()); pix.fill(Qt::transparent); p.begin(&pix); p.drawPixmap(QPoint(0,0), m_pixmap); p.setCompositionMode(QPainter::CompositionMode_DestinationIn); QColor c(0, 0, 0, m_alpha * 254); p.fillRect(rect(), c); p.end(); p.begin(this); p.drawPixmap(QPoint(0,0), pix); p.end(); } void AnimatedItem::slotAnimate(qreal value) { m_alpha = value; update(); } void AnimatedItem::startAnimation() { m_timeLine.start(); }