diff -r 03646e8da489 -r 30f14686fb04 homescreenapp/hsdomainmodel/src/hswallpaperloaderthread.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/homescreenapp/hsdomainmodel/src/hswallpaperloaderthread.cpp Wed Jun 23 18:03:36 2010 +0300 @@ -0,0 +1,75 @@ +/* +* 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: +* +*/ + +#include +#include + +#include "hswallpaperloaderthread.h" + + +/*! + \class HsWallpaperLoaderThread + \ingroup group_hsdomainmodel + \brief +*/ + +/*! + +*/ +HsWallpaperLoaderThread::HsWallpaperLoaderThread(QObject *parent) + : QThread(parent), + mResult(false) +{ +} + +/*! + +*/ +HsWallpaperLoaderThread::~HsWallpaperLoaderThread() +{ +} + +/*! + \internal + Scales and crops source image using target rect. + Centers target rect automatically. + Saves scaled and cropped image as given target. + Result can be read when finished by using result(). +*/ +void HsWallpaperLoaderThread::run() +{ + mResult = true; + QImageReader imageReader(mSourcePath); + QRect clipRect(QPoint(), mTargetSize); + + if (imageReader.canRead()) { + QSize sourceSize = imageReader.size(); + + //Scale image's size to target's dimensions + sourceSize.scale(clipRect.width(), clipRect.height(), + Qt::KeepAspectRatioByExpanding); + imageReader.setScaledSize(sourceSize); + + //Crop center part of the scaled image as a target image + clipRect.moveCenter(QPoint(sourceSize.width() / 2, sourceSize.height() / 2)); + imageReader.setScaledClipRect(clipRect); + + mResult = imageReader.read().save(mTargetPath); + } else { + mResult = false; + } +}