diff -r 57d4cdd99204 -r edfc90759b9f imageeditorengine/ImageEditorUtils/src/ResolutionUtil.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/imageeditorengine/ImageEditorUtils/src/ResolutionUtil.cpp Fri Jan 29 13:53:17 2010 +0200 @@ -0,0 +1,534 @@ +/* +* Copyright (c) 2010 Ixonos Plc. +* All rights reserved. +* This component and the accompanying materials are made available +* under the terms of the "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: +* Ixonos Plc +* +* Description: +* Resolution utility class for Image Editor. +* +*/ + + +#include +#include + +#include "ResolutionUtil.h" +#include "imageeditordebugutils.h" +//#include "ImageEditorUids.hrh" + +// CONSTANTS +const TInt KStandardScreenWidth = 176; +const TInt KStandardScreenHeight = 208; + +const TInt KSquareScreenWidth = 208; +const TInt KSquareScreenHeight = 208; + +const TInt KQVGAScreenWidth = 240; +const TInt KQVGAScreenHeight = 320; + +const TInt KDoubleScreenWidth = 352; +const TInt KDoubleScreenHeight = 416; + +const TInt KHVGAScreenWidth = 320; +const TInt KHVGAScreenHeight = 480; + +const TInt KVGAScreenWidth = 480; +const TInt KVGAScreenHeight = 640; + +const TInt KQHDScreenWidth = 360; +const TInt KQHDScreenHeight = 640; + +#define UID_RESOLUTION_UTIL 0x101FFA91 + +// CCoeStatic-derived class is accessible only inside the +// thread, so the UID does not need to be globally unique. +const TUid KUidResolutionUtil = {UID_RESOLUTION_UTIL}; + +_LIT( KComponentName, "CResolutionUtil" ); + + +//============================================================================= +CResolutionUtil::CResolutionUtil( const TUid& aUid ) +: CCoeStatic( aUid ), + iScreenRect(0,0,0,0), + iClientRect(0,0,0,0), + iLandscape(EFalse), + iFullScreen(EFalse) + { + + } + +//============================================================================= +EXPORT_C CResolutionUtil::~CResolutionUtil() +{ + LOG(KImageEditorLogFile, "CResolutionUtil::~CResolutionUtil()"); +} + +//============================================================================= +EXPORT_C CResolutionUtil* CResolutionUtil::Self() +{ + CResolutionUtil* self = static_cast( CCoeEnv::Static (KUidResolutionUtil) ); + __ASSERT_ALWAYS( self, User::Panic(KComponentName,KErrNotFound) ); + return self; +} + +//============================================================================= +EXPORT_C CResolutionUtil* CResolutionUtil::InitializeL() +{ + LOG(KImageEditorLogFile, "CResolutionUtil::InitializeL()"); + + // First check if this already exists + CResolutionUtil* self = static_cast( CCoeEnv::Static (KUidResolutionUtil) ); + + // If not, create new instance + if ( !self ) + { + self = new (ELeave) CResolutionUtil( KUidResolutionUtil ); + LOG(KImageEditorLogFile, "CResolutionUtil::InitializeL(): created new instance"); + } + + return self; +} + +//============================================================================= +EXPORT_C TInt CResolutionUtil::ScreenMode() const + { + + TInt screenMode = EUnknown; + TSize screenSize = iScreenRect.Size(); + + if (!iLandscape) + { + switch (screenSize.iWidth) + { + // Standard + case KStandardScreenWidth: + { + if (screenSize.iHeight == KStandardScreenHeight) + { + if (!iFullScreen) + { + screenMode = EStandard; + } + else + { + screenMode = EStandardFullScreen; + } + } + break; + } + // Square + case KSquareScreenWidth: + { + if (screenSize.iHeight == KSquareScreenHeight) + { + if (!iFullScreen) + { + screenMode = ESquare; + } + else + { + screenMode = ESquareFullScreen; + } + } + break; + } + // QVGA + case KQVGAScreenWidth: + { + if (screenSize.iHeight == KQVGAScreenHeight) + { + if (!iFullScreen) + { + screenMode = EQVGA; + } + else + { + screenMode = EQVGAFullScreen; + } + } + break; + } + // Double + case KDoubleScreenWidth: + { + if (screenSize.iHeight == KDoubleScreenHeight) + { + if (!iFullScreen) + { + screenMode = EDouble; + } + else + { + screenMode = EDoubleFullScreen; + } + } + break; + } + // Unknown + default: + { + screenMode = EUnknown; + break; + } + } + } + else + { + // Landscape iHeight == normal iWidth + switch (screenSize.iHeight) + { + // Standard, landscape + case KStandardScreenWidth: + { + if (screenSize.iWidth == KStandardScreenHeight) + { + if (!iFullScreen) + { + screenMode = EStandardLandscape; + } + else + { + screenMode = EStandardLandscapeFullScreen; + } + } + break; + } + // Square, rotated + case KSquareScreenWidth: + { + if (screenSize.iWidth == KSquareScreenHeight) + { + if (!iFullScreen) + { + screenMode = ESquareRotated; + } + else + { + screenMode = ESquareRotatedFullScreen; + } + } + break; + } + // QVGA, landscape + case KQVGAScreenWidth: + { + if (screenSize.iWidth == KQVGAScreenHeight) + { + if (!iFullScreen) + { + screenMode = EQVGALandscape; + } + else + { + screenMode = EQVGALandscapeFullScreen; + } + } + break; + } + // Double, landscape + case KDoubleScreenWidth: + { + if (screenSize.iWidth == KDoubleScreenHeight) + { + if (!iFullScreen) + { + screenMode = EDoubleLandscape; + } + else + { + screenMode = EDoubleLandscapeFullScreen; + } + } + break; + } + // Unknown + default: + { + screenMode = EUnknown; + break; + } + } + + } + + return screenMode; + } + +//============================================================================= +EXPORT_C TInt CResolutionUtil::GetScreenMode() const + { + TInt screenMode = EUnknown; + TSize screenSize = iScreenRect.Size(); + + // Standard (Portrait) + if ( screenSize.iWidth == KStandardScreenWidth && + screenSize.iHeight == KStandardScreenHeight ) + { + if (!iFullScreen) + { + screenMode = EStandard; + } + else + { + screenMode = EStandardFullScreen; + } + } + // Square (Portrait) + else if ( screenSize.iWidth == KSquareScreenWidth && + screenSize.iHeight == KSquareScreenHeight ) + { + if (!iFullScreen) + { + screenMode = ESquare; + } + else + { + screenMode = ESquareFullScreen; + } + } + // QVGA (Portrait) + else if ( screenSize.iWidth == KQVGAScreenWidth && + screenSize.iHeight == KQVGAScreenHeight ) + { + if (!iFullScreen) + { + screenMode = EQVGA; + } + else + { + screenMode = EQVGAFullScreen; + } + } + // Double (Portrait) + else if ( screenSize.iWidth == KDoubleScreenWidth && + screenSize.iHeight == KDoubleScreenHeight ) + { + if (!iFullScreen) + { + screenMode = EDouble; + } + else + { + screenMode = EDoubleFullScreen; + } + } + // HVGA (Portrait) + else if ( screenSize.iWidth == KHVGAScreenWidth && + screenSize.iHeight == KHVGAScreenHeight ) + { + if (!iFullScreen) + { + screenMode = EHVGA; + } + else + { + screenMode = EHVGAFullScreen; + } + } + // VGA (Portrait) + else if ( screenSize.iWidth == KVGAScreenWidth && + screenSize.iHeight == KVGAScreenHeight ) + { + if (!iFullScreen) + { + screenMode = EVGA; + } + else + { + screenMode = EVGAFullScreen; + } + } + // QHD (Portrait) + else if ( screenSize.iWidth == KQHDScreenWidth && + screenSize.iHeight == KQHDScreenHeight ) + { + if (!iFullScreen) + { + screenMode = EQHD; + } + else + { + screenMode = EQHDFullScreen; + } + } + // Standard (Landscape) + else if ( screenSize.iWidth == KStandardScreenHeight && + screenSize.iHeight == KStandardScreenWidth ) + { + if (!iFullScreen) + { + screenMode = EStandardLandscape; + } + else + { + screenMode = EStandardLandscapeFullScreen; + } + } + // Square (Landscape) + else if ( screenSize.iWidth == KSquareScreenHeight && + screenSize.iHeight == KSquareScreenWidth ) + { + if (!iFullScreen) + { + screenMode = ESquareRotated; + } + else + { + screenMode = ESquareRotatedFullScreen; + } + } + // QVGA (Landscape) + else if ( screenSize.iWidth == KQVGAScreenHeight && + screenSize.iHeight == KQVGAScreenWidth ) + { + if (!iFullScreen) + { + screenMode = EQVGALandscape; + } + else + { + screenMode = EQVGALandscapeFullScreen; + } + } + // Double (Landscape) + else if ( screenSize.iWidth == KDoubleScreenHeight && + screenSize.iHeight == KDoubleScreenWidth ) + { + if (!iFullScreen) + { + screenMode = EDoubleLandscape; + } + else + { + screenMode = EDoubleLandscapeFullScreen; + } + } + // HVGA (Landscape) + else if ( screenSize.iWidth == KHVGAScreenHeight && + screenSize.iHeight == KHVGAScreenWidth ) + { + if (!iFullScreen) + { + screenMode = EHVGALandscape; + } + else + { + screenMode = EHVGALandscapeFullScreen; + } + } + // VGA (Landscape) + else if ( screenSize.iWidth == KVGAScreenHeight && + screenSize.iHeight == KVGAScreenWidth ) + { + if (!iFullScreen) + { + screenMode = EVGALandscape; + } + else + { + screenMode = EVGALandscapeFullScreen; + } + } + // QHD (Landscape) + else if ( screenSize.iWidth == KQHDScreenHeight && + screenSize.iHeight == KQHDScreenWidth ) + { + if (!iFullScreen) + { + screenMode = EQHDLandscape; + } + else + { + screenMode = EQHDLandscapeFullScreen; + } + } + // Unknown + else + { + screenMode = EUnknown; + } + + return screenMode; + } + +//============================================================================= +EXPORT_C void CResolutionUtil::GetClientRect(TRect& aRect) const + { + aRect = iClientRect; + } + +//============================================================================= +EXPORT_C void CResolutionUtil::SetClientRect(const TRect& aRect) + { + iClientRect = aRect; + } + +//============================================================================= +EXPORT_C void CResolutionUtil::GetScreenRect(TRect& aRect) const + { + aRect = iScreenRect; + } + +//============================================================================= +EXPORT_C void CResolutionUtil::SetScreenRect(const TRect& aRect) + { + iScreenRect = aRect; + } + +//============================================================================= +EXPORT_C void CResolutionUtil::SetFullScreen(TBool aFullScreen) + { + iFullScreen = aFullScreen; + } + +//============================================================================= +EXPORT_C TBool CResolutionUtil::GetFullScreen() const + { + return iFullScreen; + } + +//============================================================================= +EXPORT_C void CResolutionUtil::SetLandscape(TBool aLandscape) + { + iLandscape = aLandscape; + } + +//============================================================================= +EXPORT_C TBool CResolutionUtil::GetLandscape() const + { + return iLandscape; + } + +//============================================================================= +EXPORT_C void CResolutionUtil::UpdateScreenMode() + { + LOG(KImageEditorLogFile, "CResolutionUtil::UpdateScreenMode()"); + + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EScreen, iScreenRect); + //iScreenRect.SetRect(0,0,352,416); + + if (iFullScreen) + { + iClientRect = iScreenRect; + } + else + { + AknLayoutUtils::LayoutMetricsRect(AknLayoutUtils::EMainPane, iClientRect); + } + + LOGFMT2(KImageEditorLogFile, "CResolutionUtil: Screen dimensions: W:%d, H:%d", iScreenRect.Width(), iScreenRect.Height()); + LOGFMT4(KImageEditorLogFile, " ClientRect: iTl.iX:%d, iTl.iY:%d, iBr.iX:%d, iBr.iY:%d", iClientRect.iTl.iX, iClientRect.iTl.iY, iClientRect.iBr.iX, iClientRect.iBr.iY); + LOGFMT2(KImageEditorLogFile, " Full screen: %d, Landscape mode: %d", iFullScreen, iLandscape); + } + +// End of File