imageeditorengine/ImageEditorUtils/src/ResolutionUtil.cpp
changeset 1 edfc90759b9f
--- /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 <eikappui.h>
+#include <AknUtils.h> 
+
+#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<CResolutionUtil *>( 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<CResolutionUtil *>( 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