AppSrc/CDrawGrid.cpp
author jkauppin
Fri, 15 Oct 2010 10:18:29 +0900
changeset 3 93fff7023be8
permissions -rw-r--r--
Initial version
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
3
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
     1
/*
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
     2
* Copyright (c) 2009 Nokia Corporation and/or its subsidiary(-ies).
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
     3
* All rights reserved.
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
     4
* This component and the accompanying materials are made available
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
     6
* which accompanies this distribution, and is available
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
     8
*
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
     9
* Initial Contributors:
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    11
*
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    12
* Contributors: Juha Kauppinen, Mika Hokkanen
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    13
* 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    14
* Description: Photo Browser
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    15
*
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    16
*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    17
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    18
#include "CDrawGrid.h"
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    19
#include "TextureLoader.h"
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    20
#include "DrawUtility.h"
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    21
#include "ImagicConsts.h"
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    22
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    23
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    24
const TInt  KDrawLimit = 65;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    25
const float KInitialZoomGrid = -4.1;//zoom value for grid when application starts drawing grid
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    26
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    27
const TReal KMaxAngleLandscape = 45;//max tilt angle when moving in grid
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    28
const TReal KMaxAnglePortrait = 10;//max tilt angle when moving in grid
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    29
//const TReal KAngle2Start128Loading = 1;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    30
const float KTargetZCoord = -1.5;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    31
const float KZoomInMaxGrid = -3.5;//max possible zoom value 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    32
const float KZoomOutMaxGrid = -6;//min possible zoom value
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    33
#ifdef DOUBLETAP_ZOOMGRID
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    34
const TInt  KDoubleTapZoomGrid1 = KInitialZoomGrid;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    35
const TInt  KDoubleTapZoomGrid2 = KZoomOutMaxGrid * 7 / 10;  // 70% of max zoom out
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    36
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    37
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    38
CDrawGrid::CDrawGrid(CImagicContainerBrowser* aContainer, TInt& aCurrentIndex):
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    39
    iContainer(aContainer)//,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    40
    //iCurrentIndex(aCurrentIndex)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    41
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    42
    // No implementation required
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    43
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    44
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    45
CDrawGrid::~CDrawGrid()
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    46
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    47
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    48
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    49
CDrawGrid* CDrawGrid::NewLC(CImagicContainerBrowser* aContainer, TInt& aCurrentIndex)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    50
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    51
    CDrawGrid* self = new (ELeave) CDrawGrid(aContainer,aCurrentIndex);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    52
    CleanupStack::PushL(self);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    53
    self->ConstructL(aContainer,aCurrentIndex);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    54
    return self;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    55
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    56
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    57
CDrawGrid* CDrawGrid::NewL(CImagicContainerBrowser* aContainer, TInt& aCurrentIndex)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    58
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    59
    CDrawGrid* self = CDrawGrid::NewLC(aContainer,aCurrentIndex);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    60
    CleanupStack::Pop(); // self;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    61
    return self;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    62
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    63
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    64
void CDrawGrid::ConstructL(CImagicContainerBrowser* aContainer, TInt& aCurrentIndex)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    65
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    66
    //iContainer = aContainer;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    67
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    68
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    69
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    70
TReal CDrawGrid::GetCurrentGridTilt()
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    71
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    72
    return iPerspectiveCurrent;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    73
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    74
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    75
TReal CDrawGrid::GetGridZoom()
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    76
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    77
    return iDrawGridZoom;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    78
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    79
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    80
TGridXY CDrawGrid::GetGridTargetXY()
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    81
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    82
    return iDrawGridTargetXY;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    83
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    84
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    85
void CDrawGrid::SetGridTargetXY(TGridXY aValue)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    86
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    87
    iDrawGridTargetXY = aValue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    88
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    89
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    90
TGridXY CDrawGrid::GetGridXY()
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    91
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    92
    return iDrawGridXY;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    93
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    94
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    95
void CDrawGrid::SetGridXY(TGridXY aValue)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    96
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    97
    iDrawGridXY = aValue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    98
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    99
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   100
void CDrawGrid::KeyPressed()
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   101
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   102
    iMenuAlpha = 1;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   103
    iKeyTimer = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   104
    iKeyTimer2 = 10;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   105
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   106
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   107
void CDrawGrid::KeyReleased()
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   108
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   109
    iMenuAlpha = 0.99;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   110
    iKeyTimer = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   111
    iKeyTimer2 = 10;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   112
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   113
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   114
void CDrawGrid::KeyEvent()
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   115
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   116
    //iMenuAlpha = 1;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   117
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   118
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   119
/*----------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   120
// Set perspective projection
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   121
//
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   122
void CDrawGrid::SetPrespective(const TSize &aSize)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   123
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   124
    DP0_IMAGIC(_L("CDrawGrid::SetPrespective"));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   125
    // Calculate aspect ratio
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   126
    GLfloat aspectRatio = (GLfloat)(aSize.iWidth) / (GLfloat)(aSize.iHeight);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   127
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   128
    // Calculate prespective values
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   129
    const float near = 0.001;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   130
    const float far = 100.0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   131
    const float top = 0.414*near;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   132
    const float bottom = -top;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   133
    const float left = aspectRatio * bottom;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   134
    const float right = aspectRatio * top;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   135
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   136
    // Set perspective
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   137
    glLoadIdentity();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   138
    glFrustumf(left,right, bottom,top, near,far);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   139
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   140
    float tmp = iContainer->GetDisplayRotAngle();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   141
    iContainer->Interpolate(tmp, iContainer->GetDisplayRotTargetAngle(), 0.2);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   142
    iContainer->SetDisplayRotAngle(tmp);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   143
    glRotatef(iContainer->GetDisplayRotAngle(), 0,0,1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   144
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   145
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   146
void CDrawGrid::UpdateImageCoordinates(const TInt aFirstIndex)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   147
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   148
    const TReal KMinY = -(CImagicContainerBrowser::KGridSizeY - 1) * CImagicContainerBrowser::KSpacingY;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   149
    TReal y2 = KMinY;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   150
    TReal x2 = -CImagicContainerBrowser::KSpacingX;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   151
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   152
    CImageData* prevImageData = iContainer->iIEngine->GetImageData(aFirstIndex - 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   153
    if (prevImageData)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   154
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   155
        x2 = prevImageData->iGridData.iX;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   156
        y2 = prevImageData->iGridData.iY;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   157
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   158
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   159
    for(TInt i = aFirstIndex; i<iContainer->iIEngine->GetTotalNumOfImages(); i++)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   160
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   161
        if ((y2 -= iContainer->KSpacingY) < KMinY)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   162
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   163
            y2 = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   164
            x2 += CImagicContainerBrowser::KSpacingX;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   165
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   166
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   167
        CImageData* imageData = iContainer->iIEngine->GetImageData(i);        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   168
#ifdef GAP_BETWEEN_FOLDERS
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   169
        TGridMode gridMode = iContainer->iIEngine->GetImageList().GetGridMode();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   170
        if (gridMode)   
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   171
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   172
            // Make small gap between folders
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   173
            CImageData* prevImageData = iContainer->iIEngine->GetImageData(i - 1);            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   174
            if (prevImageData != NULL)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   175
                {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   176
                TBool gap = EFalse; 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   177
                if (gridMode == EGridModeFolder)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   178
                    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   179
                    TFileName path, prevPath;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   180
                    imageData->GetPath(path);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   181
                    prevImageData->GetPath(prevPath);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   182
                    gap = (path != prevPath);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   183
                    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   184
                else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   185
                    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   186
                    gap = (imageData->iPersonId != prevImageData->iPersonId);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   187
                    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   188
                    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   189
                if (gap)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   190
                    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   191
                    x2 += CImagicContainerBrowser::KSpacingX / 2;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   192
                    if (y2 < 0)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   193
                        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   194
                        x2 += CImagicContainerBrowser::KSpacingX;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   195
                        y2 = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   196
                        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   197
                    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   198
                }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   199
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   200
#endif // GAP_BETWEEN_FOLDERS            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   201
        imageData->iGridData.iX = x2;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   202
        imageData->iGridData.iY = y2;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   203
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   204
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   205
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   206
void CDrawGrid::HandleKeys()
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   207
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   208
    iKeyTimer2--;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   209
    if(iKeyTimer2 < 0)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   210
        iKeyTimer2 = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   211
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   212
    if(iKeyTimer == 0 || iKeyTimer2 == 0)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   213
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   214
        iKeyTimer = 3;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   215
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   216
        CKeyData keyData = iContainer->GetKeyData();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   217
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   218
        // Calculate new index from movement keys
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   219
        iContainer->SetCurrentIndex(keyData.iY + iContainer->GetCurrentIndex());
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   220
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   221
        // Get next image in same row
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   222
        for (TInt i = 0;i < Abs(keyData.iX);i++)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   223
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   224
            TInt index = iContainer->GetCurrentIndex();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   225
            CImageData* currentImageData = iContainer->iIEngine->GetImageData(index);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   226
            while (currentImageData)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   227
                {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   228
                index += keyData.iX > 0 ? 1 : -1;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   229
                CImageData* imageData = iContainer->iIEngine->GetImageData(index);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   230
                if (imageData == NULL)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   231
                    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   232
                    currentImageData = NULL;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   233
                    break;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   234
                    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   235
                
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   236
                // Next image is found
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   237
                if (Abs(imageData->iGridData.iY - currentImageData->iGridData.iY) <
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   238
                        CImagicContainerBrowser::KSpacingY / 2)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   239
                    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   240
                    iContainer->SetCurrentIndex(index);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   241
                    currentImageData = NULL;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   242
                    break;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   243
                    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   244
                }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   245
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   246
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   247
        //iContainer->SetCurrentIndex(keyData.iX * CImagicContainerBrowser::KGridSizeY + iContainer->GetCurrentIndex());
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   248
		
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   249
        //We have to zero key data after reading it
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   250
        keyData.iX = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   251
        keyData.iY = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   252
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   253
    else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   254
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   255
        iKeyTimer--;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   256
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   257
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   258
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   259
/*----------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   260
// Initializes Grid view
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   261
//
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   262
void CDrawGrid::InitDrawGrid()
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   263
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   264
    DP0_IMAGIC(_L("CDrawGrid::InitDrawGrid"));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   265
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   266
    iKeyTimer = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   267
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   268
    iPerspectiveCurrent = 0;//current value of perspective when moving on grid by tilting while grid
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   269
    //iPerspectiveTarget = 0;//target value of perspective
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   270
    iDrawGridTargetZoom = KInitialZoomGrid;//Set target zooming value when draving Grid
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   271
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   272
    iGridMovingSpeed = 0.05;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   273
    iGridZoomSpeed = 0.1;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   274
    iGridZoomStep = 0.3;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   275
    iDrawGridZoom = KInitialZoomGrid;//Set target zooming value when draving Grid
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   276
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   277
    CImageData* imageData = iContainer->iIEngine->GetImageData(iContainer->GetCurrentIndex());
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   278
    if(imageData)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   279
        imageData->iGridData.iScale = 6.5;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   280
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   281
    // set scale a little bigger than initial target value to show animation in opening grid
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   282
//    CImageData* imageData = iIEngine->GetImageData(iCurrentIndex, iImagicAppUi->GetUIDrawMode());
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   283
//    if (imageData) imageData->iGridData.iScale += 0.5;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   284
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   285
    // set zooming factor a little bigger than initial target value to show animation in opening grid
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   286
//    iDrawGridZoom = iDrawGridZoom + 0.5;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   287
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   288
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   289
/*----------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   290
// Draws grid
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   291
//
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   292
void CDrawGrid::DrawGridL(const TSize &aSize)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   293
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   294
    DP0_IMAGIC(_L("CDrawGrid::DrawGrid"));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   295
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   296
    SetPrespective(aSize);// Setup perspective
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   297
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   298
    // If user hasn't press anything, stay in beginning of the grid
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   299
    if(!iContainer->IsUserInputGiven())
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   300
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   301
        TInt index = -1;  
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   302
        TReal maxX = CImagicContainerBrowser::KSpacingX; 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   303
        if(iContainer->GetScreenSize().iHeight > 240)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   304
            maxX = CImagicContainerBrowser::KSpacingX * 2;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   305
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   306
        // Select image which closest to ideal position
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   307
        for(TInt i = 0;i < iContainer->iIEngine->GetTotalNumOfImages();i++)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   308
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   309
            CImageData* imageData = iContainer->iIEngine->GetImageData(i);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   310
            if (imageData->iGridData.iX > maxX) 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   311
                break;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   312
            if (imageData->iGridData.iY > -CImagicContainerBrowser::KSpacingY * 2)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   313
                index = i; 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   314
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   315
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   316
        if (index >= 0)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   317
            iContainer->SetCurrentIndex(index);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   318
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   319
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   320
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   321
#ifdef MOMENTUM_MOVE
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   322
    // Move grid x and y automatically when flick
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   323
    // FindImageInScreen() has to be called here, before SetPerspective() to get 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   324
    // OpenGL matrix before initialised in it.
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   325
    if(iContainer->iMomentumMove)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   326
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   327
        // so move automatically. Target is set in HandleGestureEnd(), when 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   328
        // user releases touch.
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   329
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   330
        // Slowing down when it gets closer than the size of 10% of speed
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   331
        // TODO: use definition. not 0.5
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   332
        float gapX = (iContainer->iMomentumSpeedX)? (iDrawGridTargetXY.iX - iDrawGridXY.iX) / (0.5 * iContainer->iMomentumSpeedX): 0.0f;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   333
        float gapY = (iContainer->iMomentumSpeedY)? (iDrawGridTargetXY.iY - iDrawGridXY.iY) / (0.5 * iContainer->iMomentumSpeedY): 0.0f;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   334
        iContainer->CheckLimits(gapX, -1.0, 1.0); // max speed doesn't go beyond user's move
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   335
        iContainer->CheckLimits(gapY, -1.0, 1.0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   336
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   337
        float spdX = gapX * iContainer->iMomentumSpeedX; // speed/1sec. faster with bigger gap
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   338
        float spdY = gapY * iContainer->iMomentumSpeedY;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   339
        iDrawGridXY.iX += spdX * iContainer->iTimeDiff; // movement = (open gl pixels)/sec * (elapsed time from last draw) 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   340
        iDrawGridXY.iY += spdY * iContainer->iTimeDiff;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   341
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   342
        DP4_IMAGIC(_L("spdX=%6.4f, gapX=%6.4f, iMomentumSpeedX=%6.4f, iTimeDiff=%6.4f"), spdX, gapX, iContainer->iMomentumSpeedX, iContainer->iTimeDiff);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   343
        DP3_IMAGIC(_L("spdY=%6.4f, gapY=%6.4f, iMomentumSpeedY=%6.4f"), spdY, gapY, iContainer->iMomentumSpeedY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   344
        DP2_IMAGIC(_L("iDrawGridTargetX=%6.4f <=== iDrawGridX=%6.4f"), iDrawGridTargetXY.iX, iDrawGridXY.iX);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   345
        DP2_IMAGIC(_L("iDrawGridTargetY=%6.4f <=== iDrawGridY=%6.4f"), iDrawGridTargetXY.iY, iDrawGridXY.iY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   346
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   347
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   348
    // Pick up the picture in the center of the screen as current selected one.
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   349
    // Also does on dragging if not in the mode of no key event simulation on drag 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   350
#ifdef HOLD_SELECTION_ONDRAG
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   351
    if(iContainer->iMomentumMove || iContainer->iHoldSelection)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   352
#else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   353
    if(iMomentumMove)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   354
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   355
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   356
        TInt id;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   357
        FloatCoords coord;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   358
        coord.iX = iDrawGridXY.iX;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   359
        coord.iY = iDrawGridXY.iY;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   360
#ifdef FLICK_ONLY_IN_X_IN_GRID
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   361
        if (iContainer->FindNearestImageInOGl(coord, id))
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   362
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   363
            if (iContainer->iMomentumMove)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   364
                {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   365
                // Change iCurrentIndex only when x coord is changed
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   366
                TInt cX = iContainer->GetCurrentIndex() / CImagicContainerBrowser::KGridSizeY;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   367
                TInt tX = id / CImagicContainerBrowser::KGridSizeY;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   368
                if (cX != tX) 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   369
                    //iCurrentIndex = id;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   370
                    iContainer->SetCurrentIndex(id);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   371
                }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   372
            else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   373
                //iCurrentIndex = id;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   374
                iContainer->SetCurrentIndex(id);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   375
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   376
#else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   377
        if (FindNearestImageInOGl(coord, id)) 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   378
            //iCurrentIndex = id;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   379
            iContainer->SetCurrentIndex(id);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   380
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   381
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   382
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   383
    if(iContainer->iMomentumMove)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   384
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   385
        // Stop momentum move when it gets close to target or exceeds 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   386
        if ((!iContainer->iMomentumSpeedX || Abs(iDrawGridTargetXY.iX - iDrawGridXY.iX) < 0.15) && // 0.15 is just a guess.
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   387
            (!iContainer->iMomentumSpeedY || Abs(iDrawGridTargetXY.iY - iDrawGridXY.iY) < 0.15))
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   388
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   389
            iContainer->iMomentumMove = EFalse;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   390
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   391
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   392
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   393
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   394
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   395
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   396
#ifdef ZOOM_WHILE_ROTATING
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   397
    if(Abs(iDrawGridZoom-KZoomOutMaxGrid) < 1)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   398
        iDrawGridTargetZoom = KInitialZoomGrid;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   399
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   400
#ifdef ENABLE_GRID_ZOOM
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   401
    Interpolate(iDrawGridZoom, iDrawGridTargetZoom, iGridZoomSpeed);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   402
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   403
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   404
#ifdef SCREEN_ROTATION_ON
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   405
    Interpolate(iDisplayRotation, iDisplayRotationTarget, 0.005);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   406
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   407
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   408
    //Handle moving keys-------------------------------->
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   409
    HandleKeys();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   410
    //Handle Rotation keys, this is for single currently selected picture
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   411
    iContainer->HandleRotationKeys();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   412
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   413
    //Check that current index is in grid area
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   414
    /*TInt index = iContainer->GetCurrentIndex();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   415
    CheckIndexLimits(index);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   416
    iContainer->SetCurrentIndex(index);*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   417
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   418
    // Update AppUI class about selected picture index
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   419
    if(iContainer->GetPrevIndex() != iContainer->GetCurrentIndex())
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   420
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   421
        iContainer->iImagicAppUi->SetImageIndex(iContainer->GetCurrentIndex());
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   422
        iContainer->iDynamicLoadingOn = ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   423
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   424
//#define DISPLAY_DATE
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   425
#ifdef DISPLAY_DATE
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   426
        DisplayDate();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   427
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   428
        //Update previous Grid index..
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   429
        iContainer->SetPrevIndex(iContainer->GetCurrentIndex());        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   430
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   431
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   432
#ifdef MOMENTUM_MOVE
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   433
    if(!iContainer->iMomentumMove) 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   434
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   435
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   436
        //Calculate new target X and Y positions on Grid
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   437
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   438
    CImageData* imageData = iContainer->iIEngine->GetImageData(iContainer->GetCurrentIndex());
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   439
    if (imageData)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   440
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   441
        iDrawGridTargetXY.iX = imageData->iGridData.iX;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   442
        iDrawGridTargetXY.iY = -imageData->iGridData.iY;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   443
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   444
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   445
#ifdef HOLD_SELECTION_ONDRAG
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   446
        if (iContainer->iHoldSelection == EFalse) 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   447
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   448
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   449
            //and interpolate between current and target Y and X
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   450
            iContainer->Interpolate(iDrawGridXY.iX, iDrawGridTargetXY.iX, iGridMovingSpeed);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   451
            iContainer->Interpolate(iDrawGridXY.iY, iDrawGridTargetXY.iY, iGridMovingSpeed);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   452
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   453
#ifdef HOLD_SELECTION_ONDRAG
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   454
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   455
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   456
#ifdef MOMENTUM_MOVE
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   457
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   458
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   459
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   460
    // Zooming
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   461
    //Calculate new target zooming value for Grid
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   462
//unno temp iGridZoomSpeed = 20 * iTimeDiff;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   463
#ifdef ENABLE_GRID_ZOOM
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   464
    iDrawGridTargetZoom += keyData.iZoomIn * iGridZoomStep;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   465
    iDrawGridTargetZoom -= keyData.iZoomOut * iGridZoomStep;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   466
    CheckLimits(iDrawGridTargetZoom, KZoomOutMaxGrid, KZoomInMaxGrid);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   467
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   468
    keyData.iZoom = 0;//we have to reset key data after using it
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   469
    keyData.iZoomIn = keyData.iZoomOut = EFalse;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   470
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   471
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   472
    //Handle Rotation keys, this is for single currently selected picture
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   473
    //iContainer->HandleRotationKeys();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   474
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   475
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   476
    // Draw images ---------------------------------->
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   477
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   478
    //Tilt Grid(camera) into moving direction
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   479
    float perspectiveDiff = iDrawGridTargetXY.iX-iDrawGridXY.iX;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   480
    perspectiveDiff *= 10;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   481
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   482
    //we stop moving of the grid littele bit earlier than we are in real zero
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   483
#ifdef HOLD_SELECTION_ONDRAG
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   484
    if(iContainer->iHoldSelection == EFalse) {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   485
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   486
    iTargetPerspective = perspectiveDiff;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   487
#ifdef HOLD_SELECTION_ONDRAG
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   488
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   489
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   490
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   491
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   492
    //Speed up tilting when getting closer to target
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   493
    if(iPerspectiveCurrent-iTargetPerspective != 0 && 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   494
       (Abs(iTargetPerspective) < Abs(iPerspectiveCurrent)) && 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   495
       Abs(iPerspectiveCurrent) < 20)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   496
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   497
        iContainer->Interpolate(iPerspectiveCurrent,iTargetPerspective, Abs((KMaxAngleLandscape/iPerspectiveCurrent)/40));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   498
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   499
    else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   500
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   501
        iContainer->Interpolate(iPerspectiveCurrent,iTargetPerspective, 0.04);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   502
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   503
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   504
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   505
#ifdef _ACCELEROMETER_SUPPORTED_
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   506
//#ifndef _S60_5x_ACCELEROMETER_
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   507
    if(iContainer->iDeviceOrientation == EOrientationDisplayLeftUp)//Landscape
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   508
/*#else if _S60_5x_ACCELEROMETER_
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   509
    if(iContainer->iDeviceOrientation == (TImagicDeviceOrientation)TSensrvOrientationData::EOrientationDisplayRightUp)///this is wrong
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   510
#endif*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   511
#else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   512
    if(ETrue/*iDeviceOrientation*/)//if no accelerometer, use always landscape
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   513
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   514
        iContainer->CheckLimits(iPerspectiveCurrent, -KMaxAngleLandscape, KMaxAngleLandscape);  
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   515
    else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   516
        iContainer->CheckLimits(iPerspectiveCurrent, -KMaxAnglePortrait, KMaxAnglePortrait);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   517
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   518
    glRotatef(iPerspectiveCurrent, 0,1,0);//make perspective when moving on grid
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   519
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   520
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   521
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   522
    //Go to grid position ----------->
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   523
    //Center picture grid and set limit of pictures to be drawn
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   524
    float centerOffset=2.9;//bigger value -> less movement in Y-axis
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   525
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   526
#ifdef MOMENTUM_MOVE
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   527
    glTranslatef(-iDrawGridXY.iX-iDrawGridZoom*iPerspectiveCurrent/KMaxAngleLandscape,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   528
            CImagicContainerBrowser::KSpacingY+(iDrawGridXY.iY-CImagicContainerBrowser::KSpacingY)/centerOffset, iDrawGridZoom);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   529
#else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   530
    glTranslatef(-iDrawGridX, KSpacingY+(iDrawGridY-KSpacingY)/centerOffset, iDrawGridZoom);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   531
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   532
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   533
    //OpenGl Vertex data
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   534
    GLfixed vertices[8];
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   535
    glVertexPointer( 2, GL_FIXED, 0, vertices );
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   536
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   537
    //Bind into a null picture
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   538
    //iContainer->iCurrentBindedIndex = iContainer->iLoadingTextureIndex;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   539
    //iContainer->iLoadingTextureIndex = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   540
    //glBindTexture( GL_TEXTURE_2D, iContainer->iLoadingTextureIndex);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   541
    glBindTexture( GL_TEXTURE_2D, 0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   542
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   543
       
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   544
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MAG_FILTER, GL_NEAREST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   545
    glTexParameterf(GL_TEXTURE_2D, GL_TEXTURE_MIN_FILTER, GL_NEAREST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   546
   	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   547
    // Set gray color for pictures that are not loaded yet
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   548
    glColor4f(0.3,0.3,0.3, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   549
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   550
    TInt drawMax = iContainer->GetCurrentIndex()+KDrawLimit;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   551
    TInt drawMin = iContainer->GetCurrentIndex()-KDrawLimit;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   552
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   553
    CImageData* currentImageData = NULL;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   554
    TGridMode gridMode = iContainer->iIEngine->GetImageList().GetGridMode();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   555
    if (gridMode != EGridModeTime)      
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   556
        currentImageData = iContainer->iIEngine->GetImageData(iContainer->GetCurrentIndex());
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   557
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   558
    //This loop draws all the textures in the grid ------------------------------->
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   559
    for(TInt i2=0; i2<iContainer->iIEngine->GetTotalNumOfImages(); i2++)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   560
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   561
        TInt i = (i2 + iContainer->GetCurrentIndex() + 1) % iContainer->iIEngine->GetTotalNumOfImages();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   562
        CImageData* imageData = iContainer->iIEngine->GetImageData(i);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   563
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   564
        //If we are in same picture index, ie. not moving, draw both sides equally
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   565
        if(drawMax > iContainer->iIEngine->GetTotalNumOfImages()-1)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   566
            drawMax = iContainer->iIEngine->GetTotalNumOfImages()-1;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   567
        if(drawMin < 0)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   568
            drawMin = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   569
            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   570
        //Do not draw all images, just enough to fill the screen
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   571
        if((Abs(imageData->iGridData.iRotationAngle-imageData->iGridData.iTargetRotationAngle) > 0.1) || //Draw all all images in grid if rotated
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   572
           (i>=drawMin && i<=drawMax))
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   573
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   574
            // Calculate current coordinates
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   575
            //TInt x = i/iContainer->iGridSizeY;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   576
            //TInt y = -(i%iContainer->iGridSizeY);// Y axis is inverted
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   577
            float z=0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   578
            //float scale=1;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   579
            iScaleTarget = 1;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   580
            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   581
            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   582
            //Highlight by scaling up selected picture on Grid
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   583
            if(iContainer->GetCurrentIndex()==i)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   584
                {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   585
                z=0.3;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   586
                iScaleTarget = 1.5;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   587
                }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   588
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   589
            TBool dim = EFalse; //(currentImageData && !currentImageData->IsSamePath(*imageData));            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   590
            //BubbleEffect(x, y, z);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   591
            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   592
            //Zoom out the grid if "camera target" is far away from current position >>>
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   593
            //if (Abs(iDrawGridX-iDrawGridTargetX) > 10*KSpacingX)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   594
#ifdef MOMENTUM_MOVE
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   595
            float absDeltaX = Abs(iDrawGridXY.iX-iDrawGridTargetXY.iX);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   596
            if((!iContainer->iMomentumMove && absDeltaX > 2*CImagicContainerBrowser::KSpacingX) ||
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   597
               ( iContainer->iMomentumMove && absDeltaX > 5*CImagicContainerBrowser::KSpacingX))
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   598
#else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   599
            if(Abs(iDrawGridX-iDrawGridTargetX) > 2*KSpacingX)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   600
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   601
                {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   602
                z=KTargetZCoord;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   603
                iContainer->Interpolate(imageData->iGridData.iZ, z, 0.05);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   604
                }    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   605
            else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   606
                {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   607
                iContainer->Interpolate(imageData->iGridData.iZ, z, 0.05);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   608
                }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   609
            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   610
            iContainer->Interpolate(imageData->iGridData.iScale, iScaleTarget, 0.23);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   611
            //Zoom out the grid if "camera target" is far away from current position <<<
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   612
            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   613
            //Rotate picture in Grid if needed
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   614
            iContainer->HandleRotation(imageData->iGridData.iRotationAngle, imageData->iGridData.iTargetRotationAngle);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   615
            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   616
            //Calculate new picture vertices to fix picture aspect ratio
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   617
            iContainer->SetPictureVertices(imageData, vertices);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   618
            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   619
            //Move camera to picture position and rotate and scale it
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   620
            glPushMatrix();    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   621
            glTranslatef(imageData->iGridData.iX, imageData->iGridData.iY, imageData->iGridData.iZ);// - (dim ? 1.0 : 0));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   622
            glRotatef(imageData->iGridData.iRotationAngle, 0,0,1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   623
            TReal scale = imageData->iGridData.iScale;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   624
            glScalef(scale, scale, scale);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   625
            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   626
#ifdef SHADOW_PHOTOS
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   627
            // Draw shadow behind image
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   628
            glPushMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   629
            glBindTexture( GL_TEXTURE_2D, iContainer->iShadowTextureIndex);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   630
            glTranslatef(0, 0, -0.15);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   631
            glScalef(1.2, 1.2, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   632
            glDrawArrays(GL_TRIANGLE_STRIP, 0, 4);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   633
            glPopMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   634
#endif                     
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   635
            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   636
#ifdef DRAW_FRAME
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   637
            // Draw frame around selected image
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   638
            if (iContainer->GetCurrentIndex()==i)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   639
                DrawFrame(i);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   640
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   641
                    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   642
            // Calculate color for not loaded picture, more far from selection-> darker box
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   643
            float color = 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   644
#ifdef EMPTY_IMAGE_AS_WIREFRAME
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   645
                0.05 + 0.2/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   646
#else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   647
                1.0/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   648
#endif                
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   649
                (Abs(iDrawGridXY.iX - imageData->iGridData.iX)/2 + .2);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   650
            if (color > 0.5)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   651
                color = 0.5;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   652
            glColor4f(color,color,color, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   653
            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   654
            //Bind to a new picture only if needed, ie. we really have new picture
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   655
            if(imageData->iGridData.iGlLQ128TextIndex != iLastGridTexture ||
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   656
               imageData->iGridData.iGlLQ32TextIndex != iLastGridTexture)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   657
                {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   658
                if(imageData->iGridData.iGlLQ128TextIndex)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   659
                    iLastGridTexture = imageData->iGridData.iGlLQ128TextIndex;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   660
                else if(imageData->iGridData.iGlLQ32TextIndex)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   661
                    iLastGridTexture = imageData->iGridData.iGlLQ32TextIndex;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   662
                else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   663
                    iLastGridTexture = iContainer->iLoadingTextureIndex;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   664
                
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   665
                iContainer->iCurrentBindedIndex = iLastGridTexture;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   666
                glBindTexture( GL_TEXTURE_2D, iLastGridTexture);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   667
                
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   668
                // Picture is loaded, draw it with white color
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   669
                if (iLastGridTexture)  
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   670
                    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   671
                    // Draw as solid black frame
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   672
                    if (dim)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   673
                        glColor4f(0.4,0.4,0.4, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   674
                    else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   675
                        glColor4f(1,1,1, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   676
                    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   677
                }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   678
            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   679
            // Draw image
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   680
#ifdef EMPTY_IMAGE_AS_WIREFRAME            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   681
            if (iLastGridTexture == 0 && iContainer->GetCurrentIndex() != i)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   682
                {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   683
                GLfixed p;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   684
                p = vertices[6]; vertices[6] = vertices[4]; vertices[4] = p;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   685
                p = vertices[7]; vertices[7] = vertices[5]; vertices[5] = p;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   686
                glLineWidth(1.8f);  // TODO: depend on resolution
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   687
                glDrawArrays(GL_LINE_LOOP,0,4);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   688
                p = vertices[6]; vertices[6] = vertices[4]; vertices[4] = p;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   689
                p = vertices[7]; vertices[7] = vertices[5]; vertices[5] = p;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   690
                }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   691
            else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   692
                {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   693
                // Draw as solid black frame
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   694
                if (iLastGridTexture == 0)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   695
                    glColor4f(0,0,0, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   696
#endif                
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   697
                glDrawArrays(GL_TRIANGLE_STRIP,0,4);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   698
#ifdef EMPTY_IMAGE_AS_WIREFRAME                
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   699
                }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   700
#endif            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   701
           
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   702
            glPopMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   703
            }//if
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   704
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   705
        //EGLint err = eglGetError();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   706
        EGLint err = glGetError();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   707
        //if(err != EGL_SUCCESS)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   708
        while(err != GL_NO_ERROR)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   709
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   710
            CImageData* data = iContainer->iIEngine->GetImageData(i);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   711
            //Delete all textures for this index just in case
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   712
            if(data->iGridData.iGlLQ128TextIndex)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   713
                glDeleteTextures(1, &data->iGridData.iGlLQ128TextIndex);data->iGridData.iGlLQ32TextIndex = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   714
            if(data->iGridData.iGlLQ32TextIndex)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   715
                glDeleteTextures(1, &data->iGridData.iGlLQ32TextIndex);data->iGridData.iGlLQ128TextIndex = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   716
            if(data->iGridData.iGlHQ512TextIndex)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   717
                glDeleteTextures(1, &data->iGridData.iGlHQ512TextIndex);data->iGridData.iGlHQ512TextIndex = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   718
            if(data->iGridData.iGlSuperHQTextIndex)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   719
                glDeleteTextures(1, &data->iGridData.iGlSuperHQTextIndex);data->iGridData.iGlSuperHQTextIndex = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   720
            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   721
            err = eglGetError();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   722
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   723
                        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   724
        }//for
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   725
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   726
#if 0
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   727
    if(iMenuAlpha < 1)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   728
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   729
        iMenuAlpha-=0.15;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   730
        if(iMenuAlpha < 0)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   731
            iMenuAlpha = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   732
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   733
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   734
    iContainer->iDrawUtility->DrawIcon2(iContainer->Size(), iContainer->iMenuTextureIndex, iMenuAlpha);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   735
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   736
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   737
    iContainer->DynamicLoadingL();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   738
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   739
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   740
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   741
TBool CDrawGrid::IsDrawingNeededGrid()
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   742
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   743
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   744
    CImageData* imageData = iContainer->iIEngine->GetImageData(iContainer->GetCurrentIndex());
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   745
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   746
    iContainer->SetMinMagFilterLinear(EFalse);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   747
#if 0
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   748
    if(iMenuAlpha != 0)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   749
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   750
        return ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   751
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   752
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   753
    if(Abs(iPerspectiveCurrent) < CImagicContainerBrowser::KAngle2Start128Loading && Abs(iPerspectiveCurrent) > 0.001)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   754
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   755
        //DP0_IMAGIC(_L("CDrawGrid::IsDrawingNeededGrid #0"));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   756
        iContainer->iDynamicLoadingOn = ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   757
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   758
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   759
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   760
    //Make sure that all visible images are rotated
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   761
    //this causes too much processor load
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   762
    /*for(TInt i=0; i<=CImagicContainerBrowser::K128TNImageBuffer; i++)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   763
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   764
        for(TInt j=0; j<2; j++)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   765
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   766
            TInt index = iContainer->GetCurrentIndex() + (j ?  i : -i);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   767
            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   768
            CImageData* imageData = iContainer->iIEngine->GetImageData(index);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   769
            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   770
            if(imageData != NULL)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   771
                if(Abs(imageData->iGridData.iRotationAngle - imageData->iGridData.iTargetRotationAngle) > 0.01)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   772
                    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   773
                    DP0_IMAGIC(_L("CDrawGrid::IsDrawingNeededGrid #0.1"));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   774
                    return ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   775
                    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   776
                else if(imageData->iGridData.iRotationAngle != imageData->iGridData.iTargetRotationAngle)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   777
                    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   778
                    DP0_IMAGIC(_L("CDrawGrid::IsDrawingNeededGrid #0.2"));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   779
                    imageData->iGridData.iRotationAngle = imageData->iGridData.iTargetRotationAngle;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   780
                    return ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   781
                    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   782
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   783
        }*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   784
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   785
    //CImageData* imageData = iContainer->iIEngine->GetImageData(iContainer->GetCurrentIndex());
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   786
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   787
    if(imageData)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   788
        if(Abs(imageData->iGridData.iScale - iScaleTarget) > 0.1)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   789
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   790
            return ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   791
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   792
        else if(imageData->iGridData.iScale != iScaleTarget)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   793
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   794
            imageData->iGridData.iScale = iScaleTarget;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   795
            return ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   796
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   797
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   798
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   799
#ifdef ENABLE_DISPLAY_ROTATION
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   800
    if(Abs(iContainer->GetDisplayRotAngle() - iContainer->GetDisplayRotTargetAngle()) > 1)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   801
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   802
        DP0_IMAGIC(_L("CDrawGrid::IsDrawingNeededGrid #2"));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   803
        return ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   804
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   805
    else if(iContainer->GetDisplayRotAngle() != iContainer->GetDisplayRotTargetAngle())
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   806
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   807
        iContainer->SetDisplayRotAngle(iContainer->GetDisplayRotTargetAngle());
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   808
        return ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   809
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   810
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   811
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   812
    if(imageData)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   813
        if(Abs(imageData->iGridData.iRotationAngle-imageData->iGridData.iTargetRotationAngle) > 1)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   814
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   815
            DP0_IMAGIC(_L("CDrawGrid::IsDrawingNeededGrid #3"));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   816
            return ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   817
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   818
        else if(imageData->iGridData.iRotationAngle != imageData->iGridData.iTargetRotationAngle)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   819
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   820
            imageData->iGridData.iRotationAngle = imageData->iGridData.iTargetRotationAngle;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   821
            //iContainer->iDrawNow = ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   822
            return ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   823
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   824
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   825
#ifdef ENABLE_GRID_ZOOM
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   826
    if(Abs(iDrawGridZoom - iDrawGridTargetZoom) > 0.01)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   827
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   828
        DP0_IMAGIC(_L("CDrawGrid::IsDrawingNeededGrid #4"));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   829
        return ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   830
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   831
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   832
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   833
    if(Abs(iDrawGridXY.iX - iDrawGridTargetXY.iX) > 0.02)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   834
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   835
        DP0_IMAGIC(_L("CDrawGrid::IsDrawingNeededGrid #5"));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   836
        return ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   837
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   838
    else if(iDrawGridXY.iX != iDrawGridTargetXY.iX)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   839
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   840
        iDrawGridXY.iX = iDrawGridTargetXY.iX;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   841
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   842
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   843
    if(Abs(iDrawGridXY.iY - iDrawGridTargetXY.iY) > 0.02)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   844
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   845
        DP0_IMAGIC(_L("CDrawGrid::IsDrawingNeededGrid #6"));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   846
        return ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   847
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   848
    else if(iDrawGridXY.iY != iDrawGridTargetXY.iY)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   849
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   850
        iDrawGridXY.iY = iDrawGridTargetXY.iY;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   851
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   852
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   853
    if(Abs(iPerspectiveCurrent - iTargetPerspective) > 0.1)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   854
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   855
        DP0_IMAGIC(_L("CDrawGrid::IsDrawingNeededGrid #7"));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   856
        return ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   857
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   858
    else if(iPerspectiveCurrent != iTargetPerspective)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   859
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   860
        DP0_IMAGIC(_L("CDrawGrid::IsDrawingNeededGrid #7.1"));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   861
        iPerspectiveCurrent = iTargetPerspective;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   862
        return ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   863
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   864
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   865
    if(iContainer->iDrawNow)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   866
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   867
        DP0_IMAGIC(_L("CDrawGrid::IsDrawingNeededGrid #1"));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   868
        iContainer->iDrawNow = EFalse;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   869
        return ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   870
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   871
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   872
    return EFalse;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   873
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   874
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   875
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   876
void CDrawGrid::MovingDirection()
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   877
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   878
    if(iContainer->GetPrevIndex() < iContainer->GetCurrentIndex())
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   879
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   880
        iMovingRight = ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   881
        iMovingLeft = EFalse;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   882
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   883
    else if(iContainer->GetPrevIndex() > iContainer->GetCurrentIndex())
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   884
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   885
        iMovingLeft = ETrue;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   886
        iMovingRight = EFalse;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   887
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   888
    else if(iContainer->GetPrevIndex() == iContainer->GetCurrentIndex())
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   889
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   890
        iMovingRight = EFalse; 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   891
        iMovingLeft = EFalse;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   892
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   893
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   894
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   895
void CDrawGrid::DisplayDate()
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   896
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   897
    CImageData* imageData = iContainer->iIEngine->GetImageData(iContainer->GetCurrentIndex());
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   898
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   899
    if(imageData)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   900
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   901
        TDateTime dateTime = imageData->GetCreatedTime().DateTime();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   902
        if(iPrevDateTime.Month() != dateTime.Month())
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   903
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   904
            TMonth month = dateTime.Month();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   905
            iContainer->iImagicAppUi->GetImagicUtils()->DisplayYearAndMonth(0, dateTime);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   906
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   907
        iPrevDateTime = dateTime;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   908
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   909
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   910
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   911
/*----------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   912
// Calculates widht and height with aspect ratio
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   913
//
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   914
void CDrawGrid::DrawFrame(TInt aIndex)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   915
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   916
    // Draw frame around selected image
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   917
    glPushMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   918
    glDisable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   919
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   920
    glDisable(GL_DEPTH_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   921
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   922
    //Frame size
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   923
    float scale=1.09;        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   924
#ifdef FRAME_COLOR_CHANGE
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   925
    if(iSelectionFrameColor >= 1.0)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   926
        iSelectionFrameColor-=0.05;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   927
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   928
    if(iSelectionFrameColor <= 0.3)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   929
        iSelectionFrameColor+= 0.05;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   930
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   931
    if(iTNCreationComplete)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   932
        glColor4f(iSelectionFrameColor,iSelectionFrameColor,iSelectionFrameColor, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   933
    else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   934
        glColor4f(1,iSelectionFrameColor,iSelectionFrameColor, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   935
#else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   936
#ifdef SHADOW_PHOTOS
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   937
    glColor4f(1,0,0, 1);        // red frame
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   938
#else    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   939
    glColor4f(1,1,1, 1);        // white frame
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   940
#endif    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   941
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   942
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   943
    glTranslatef(0,0,-0.03);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   944
    glScalef(scale,scale,scale);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   945
    glDrawArrays(GL_TRIANGLE_STRIP,0,4);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   946
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   947
    //glDisable(GL_BLEND);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   948
    //glDisable(GL_DEPTH_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   949
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   950
    glEnable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   951
    glPopMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   952
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   953
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   954
/*----------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   955
// Calculates widht and height with aspect ratio
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   956
//
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   957
void CDrawGrid::BubbleEffect(TInt& x, TInt& y, float& z)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   958
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   959
    if(iBubbleEffect)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   960
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   961
        // Selected image in coordinates x,y
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   962
        TInt selectedX = iContainer->GetCurrentIndex()/3 /*iGridSizeY*/;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   963
        TInt selectedY =- (iContainer->GetCurrentIndex()%3 /*iGridSizeY*/);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   964
                    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   965
        // Distance to selected
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   966
        iDistanceX = selectedX-x;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   967
        iDistanceY = selectedY-y;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   968
        // Squared
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   969
        if(iDistanceX<0) iDistanceX*= -1;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   970
        if(iDistanceY<0) iDistanceY*= -1;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   971
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   972
        // Distance
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   973
        iDiff=iDistanceX+iDistanceY;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   974
        // Convert distance to depth
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   975
        // http://en.wikipedia.org/wiki/Gaussian_function
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   976
        if (iDiff==0) z=5.0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   977
        if (iDiff==1) z=4.2;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   978
        if (iDiff==2) z=3.4;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   979
        if (iDiff==3) z=2.1;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   980
        if (iDiff==4) z=1.3;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   981
        if (iDiff==5) z=0.8;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   982
        if (iDiff==6) z=0.4;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   983
        if (iDiff==7) z=0.3;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   984
        if (iDiff>7) z=0.3;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   985
        //if (iDiff==8) z=0.1;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   986
        //if (iDiff==9) z=0.05;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   987
        //if (iDiff==10) z=0.01;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   988
        //if (iDiff>10) z=0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   989
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   990
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   991
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   992