diff -r c5b304f4d89b -r ed94e1e8390e mpviewplugins/mpmediawallviewplugin/src/mpreflectioneffect.cpp --- a/mpviewplugins/mpmediawallviewplugin/src/mpreflectioneffect.cpp Thu Sep 02 20:24:03 2010 +0300 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,98 +0,0 @@ -/* -* Copyright (c) 2010 Nokia Corporation and/or its subsidiary(-ies). -* All rights reserved. -* This component and the accompanying materials are made available -* under the terms of "Eclipse Public License v1.0" -* which accompanies this distribution, and is available -* at the URL "http://www.eclipse.org/legal/epl-v10.html". -* -* Initial Contributors: -* Nokia Corporation - initial contribution. -* -* Contributors: -* -* Description: Reflection effect for Music Player Media Wall. -* -*/ - -#include -#include -#include - -#include "mpreflectioneffect.h" - - -/*! - \class MpReflectionEffect - \brief The MpReflectionEffect class provides a reflection effect. - - Renders the source with a reflection. -*/ - -/*! - Constructs a new MpReflectionEffect instance. - The \a parent parameter is passed to QGraphicsEffect's constructor. -*/ -MpReflectionEffect::MpReflectionEffect(QObject *parent) - : QGraphicsEffect( parent ) -{ -} - -/*! - Destroys the effect. -*/ -MpReflectionEffect::~MpReflectionEffect() -{ -} - -/*! - \reimp -*/ -QRectF MpReflectionEffect::boundingRectFor(const QRectF &rect) const -{ - QRectF retRect = rect; - //this bounding rect is in device cordinates, correcting based on current transform. - if ( hbInstance->allMainWindows()[0]->orientation() == Qt::Horizontal ) { -#ifdef __WINS__ - retRect.adjust(0,0,retRect.width(),0); //wincw with forced rotation is to the right. -#else - retRect.adjust(-retRect.width(),0,0,0);//currently hardware rotations is to the left. -#endif - } else { - retRect.adjust(0,0,0,retRect.height()); - } - - return retRect; -} - -/*! - \reimp -*/ -void MpReflectionEffect::draw(QPainter *painter) -{ - //currently sourceBoundingRect returns somehing like boundingRectFor and - //wrong rect for widgets with scroll area. As a workaround we can get the - //original bounding rect assuming that the widget using the effect is the - //effect parent. - QGraphicsItem * sourceItem; - sourceItem = qobject_cast( parent() ); - QPixmap pixmap; - QPoint offset; - pixmap = sourcePixmap( Qt::LogicalCoordinates,&offset, QGraphicsEffect::NoPad ); - painter->drawPixmap( offset, pixmap ); - if ( sourceItem ) { - painter->save(); - painter->scale( 1, -1 ); - //for some reson tranlation does not work, translating cordinates by hand. - QPointF reflectionOffset( 0.0, - 2.0 * sourceItem->boundingRect().height() ); - painter->drawPixmap( offset + reflectionOffset, pixmap ); - QRectF reflectionRect; - reflectionRect.setTopLeft( reflectionOffset ); - reflectionRect.setHeight ( sourceItem->boundingRect().height() ); - reflectionRect.setWidth( pixmap.width() ); - painter->fillRect( reflectionRect, QColor::fromRgbF( 0, 0, 0, 0.5f ) ); - painter->restore(); - } -} - -// EOF