--- /dev/null Thu Jan 01 00:00:00 1970 +0000
+++ b/Common/Src/IEImageData.cpp Fri Oct 15 10:18:29 2010 +0900
@@ -0,0 +1,203 @@
+/*
+* Copyright (c) 2009 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: Juha Kauppinen, Mika Hokkanen
+*
+* Description: Photo Browser
+*
+*/
+
+// Include files
+#include <eikenv.h>
+#include "IEImageData.h"
+#include "ImagicConsts.h"
+
+EXPORT_C CImageData* CImageData::NewL(TUint32 aImagesReady)
+ {
+ CImageData* self = new (ELeave) CImageData();
+ CleanupStack::PushL(self);
+ self->ConstructL(aImagesReady);
+ CleanupStack::Pop();
+ return self;
+ }
+
+EXPORT_C CImageData::~CImageData()
+ {
+ delete iFileName;
+ delete iPath;
+ }
+
+CImageData::CImageData() :
+ iFileTime(0),
+ iCreatedTime(0)
+ {
+ }
+
+void CImageData::ConstructL(TUint32 aImagesReady)
+ {
+ iFileName = NULL;
+ iPath = NULL;
+ iGridData.iCorrupted = 0;
+ iGridData.iRotationAngle = 0;
+ iGridData.iTargetRotationAngle = 0;
+ iGridData.iX = iGridData.iY = iGridData.iZ = 0;
+ iGridData.iScale = 0;
+ iGridData.iGlLQ32TextIndex = 0;
+ iGridData.iGlLQ128TextIndex = 0;
+ iGridData.iGlHQ512TextIndex = 0;
+ iGridData.iGlSuperHQTextIndex = 0;
+ iImagesReady = aImagesReady|EExifThumb;
+ iOrientation = 0;
+ iNumberOfFaces = -1;
+ iAspectRatio = 1;
+ iSize = TSize(0,0);
+ iPersonId = -1;
+ }
+
+EXPORT_C void CImageData::SetFileNameL(const TFileName & aFileName)
+ {
+ TParse parser;
+ parser.Set(aFileName, NULL, NULL);
+ delete iFileName; iFileName = NULL;
+ delete iPath; iPath = NULL;
+ iFileName = parser.NameAndExt().AllocL();
+ iPath = parser.DriveAndPath().AllocL();
+ }
+
+EXPORT_C void CImageData::GetFileName(TFileName & aFullFileName, TThumbSize aSize) const
+ {
+ if (iPath == NULL || iFileName == NULL)
+ User::Leave(KErrNotReady);
+
+ aFullFileName = *iPath;
+
+ switch (aSize)
+ {
+ case EFullSize:
+ aFullFileName.Append(*iFileName);
+ break;
+
+ case ESize32x32:
+ aFullFileName.Append(K32x32TNFilePath);
+ aFullFileName.Append(*iFileName);
+ aFullFileName.Append(K32x32Ext);
+ break;
+
+ case ESize128x128:
+ aFullFileName.Append(K128x128TNFilePath);
+ aFullFileName.Append(*iFileName);
+ aFullFileName.Append(K128x128Ext);
+ break;
+
+ case ESize512x512:
+ aFullFileName.Append(K512x512TNFilePath);
+ aFullFileName.Append(*iFileName);
+ aFullFileName.Append(K512x512Ext);
+ break;
+
+ default:
+ User::Leave(KErrArgument);
+ }
+ }
+
+EXPORT_C void CImageData::GetPath(TFileName & aPath) const
+ {
+ aPath.Copy(iPath ? iPath->Des() : _L(""));
+ }
+
+EXPORT_C void CImageData::GetFileName(TFileName & aFileName) const
+ {
+ aFileName.Copy(iFileName ? iFileName->Des() : _L(""));
+ }
+
+EXPORT_C TBool CImageData::IsImageReady(TThumbSize aSize) const
+ {
+ return ((iImagesReady & aSize) == aSize);
+ }
+
+EXPORT_C void CImageData::SetImageReady(TThumbSize aSize, TBool aReady)
+ {
+ if (aReady)
+ iImagesReady |= aSize;
+ else
+ iImagesReady &= ~aSize;
+ }
+
+EXPORT_C const TReal CImageData::GetAspectRatio() const
+ {
+ return iAspectRatio;
+ }
+
+TBool CImageData::IsCreatedTimeSet() const
+ {
+ // Time is defined if not zero
+ return (iCreatedTime.Int64() != 0);
+ }
+
+EXPORT_C const TTime & CImageData::GetFileTime() const
+ {
+ return iFileTime;
+ }
+
+EXPORT_C void CImageData::SetFileTime(const TTime & aTime)
+ {
+ iFileTime = aTime;
+ }
+
+EXPORT_C const TTime & CImageData::GetCreatedTime() const
+ {
+ // if no created time (usually from EXIF), use file time
+ return IsCreatedTimeSet() ? iCreatedTime : iFileTime;
+ }
+
+EXPORT_C void CImageData::SetCreatedTime(const TTime & aTime)
+ {
+ iCreatedTime = aTime;
+ }
+
+EXPORT_C TUint16 CImageData::GetOrientation() const
+ {
+ return iOrientation;
+ }
+
+EXPORT_C void CImageData::SetOrientation(TUint16 aOrientation)
+ {
+ iOrientation = aOrientation;
+ }
+
+EXPORT_C void CImageData::SetSize(const TSize aSize)
+ {
+ iSize = aSize;
+ iAspectRatio = iSize.iHeight ? (TReal(iSize.iWidth) / iSize.iHeight) : 0;
+ }
+
+EXPORT_C TSize CImageData::GetSize() const
+ {
+ return iSize;
+ }
+
+EXPORT_C TInt CImageData::GetNumberOfFaces() const
+ {
+ return iNumberOfFaces;
+ }
+
+EXPORT_C void CImageData::SetNumberOfFaces(TInt aValue)
+ {
+ iNumberOfFaces = aValue;
+ }
+
+EXPORT_C TBool CImageData::IsSamePath(CImageData& aImageData) const
+ {
+ TFileName path, path2;
+ GetPath(path);
+ aImageData.GetPath(path2);
+ return (path == path2);
+ }