AppSrc/DrawUtility.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 "DrawUtility.h"
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    19
#include "debug.h"
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    20
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    21
const KTNSize = 10;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    22
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    23
/*--------------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    24
// Class constants
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    25
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    26
// Mesh data
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    27
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    28
// Triangle count
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    29
const int CDrawUtility::iTriCount = 4;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    30
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    31
// Vertices
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    32
const GLfixed CDrawUtility::iVertices[4*3]=
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    33
	{
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    34
	// Tetrahedron coordinates
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    35
	10*(1<<16),		10*(1<<16),		10*(1<<16),
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    36
	-10*(1<<16),	-10*(1<<16),	10*(1<<16),
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    37
	-10*(1<<16),	10*(1<<16),		-10*(1<<16),
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    38
	10*(1<<16),		-10*(1<<16),	-10*(1<<16),
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    39
	};
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    40
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    41
// Normals
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    42
const GLfixed CDrawUtility::iNormals[4*3]=
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    43
	{
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    44
	// Tetrahedron normals
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    45
	/*
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    46
	Normal is a vector with unit lenght (length=1)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    47
	Unit lenght vector = vector/lenght
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    48
	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    49
	Calculate normals from corners, makes gouraud shading
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    50
	Vector: (1,1,1)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    51
	Lenght = SQRT( 1*1 + 1*1 + 1*1 ) = SQRT(3) = 1.732050808
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    52
	1/Lenght = 0.577350269
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    53
	In fixed point: 0.577350269*(1<<16) = 37837
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    54
	*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    55
	37837,	37837,	37837,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    56
	-37837,	-37837,	37837,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    57
	-37837,	37837,	-37837,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    58
	37837,	-37837,	-37837,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    59
	};
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    60
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    61
// Indexes define which vertices make a triangle
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    62
// These are just indexes to iVertices table
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    63
const GLushort CDrawUtility::iIndices[4*3]=
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    64
	{
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    65
	0,2,3,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    66
	0,1,3,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    67
	0,1,2,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    68
	2,1,3,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    69
	};
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    70
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    71
/*--------------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    72
// NewL
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    73
//
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    74
//CDrawableInterface* CDrawUtility::NewL(void)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    75
CDrawUtility* CDrawUtility::NewL(CImagicContainerBrowser* aContainer)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    76
	{
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    77
	// Create object
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    78
	CDrawUtility* self = new(ELeave) CDrawUtility();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    79
	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    80
	// Call 2nd stage constructor
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    81
	CleanupStack::PushL(self);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    82
	self->ConstructL(aContainer);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    83
	CleanupStack::Pop(self);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    84
	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    85
	return self;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    86
	}
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    87
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    88
/*--------------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    89
// Constructor
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    90
//
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    91
CDrawUtility::CDrawUtility() :
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    92
		//CDrawableInterface(),
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    93
		iAngleX(0),
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    94
		iAngleY(0),
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    95
		iAngleZ(0)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    96
	{
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    97
	// Nothing here
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    98
	}
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
    99
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   100
/*--------------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   101
// Second stage constructor
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   102
//
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   103
void CDrawUtility::ConstructL(CImagicContainerBrowser* aContainer)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   104
	{
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   105
	iContainer = aContainer;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   106
	iRotation = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   107
	iRotationTarget = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   108
	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   109
	float ambient[4]={0.3,0.3,0.3, 1};
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   110
	float diffuse[4]={1, 1, 1, 1};
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   111
    glLightfv(GL_LIGHT0,GL_AMBIENT, ambient);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   112
    glLightfv(GL_LIGHT0,GL_DIFFUSE, diffuse);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   113
	}
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   114
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   115
/*--------------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   116
// Destructor
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   117
//
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   118
CDrawUtility::~CDrawUtility()
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   119
	{
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   120
	// Nothing here
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   121
	}
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   122
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   123
/*--------------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   124
// Makes sure that angle is on valid range
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   125
//
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   126
void CDrawUtility::LimitAngle(TInt &Angle)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   127
	{
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   128
	while (Angle<0)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   129
		Angle+=360;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   130
	while (Angle>360)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   131
		Angle-=360;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   132
	}
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   133
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   134
/*--------------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   135
// Update animation
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   136
// Returns true if screen should be redrawn
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   137
//
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   138
TBool CDrawUtility::Update(void)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   139
	{
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   140
	// Rotate
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   141
	iAngleX+=4;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   142
	iAngleY+=2;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   143
	iAngleZ-=2;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   144
	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   145
	// Check limist
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   146
	LimitAngle(iAngleX);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   147
	LimitAngle(iAngleY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   148
	LimitAngle(iAngleZ);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   149
	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   150
	// Since this is loading animation, this doesn't want screen to be updated
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   151
	return EFalse;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   152
	}
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   153
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   154
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   155
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   156
/*--------------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   157
// Draws Zoom image thumbnail
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   158
//
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   159
void CDrawUtility::DrawZoomIcon(    const CImageData* aImageData,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   160
                                    const TSize aScreenSize, 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   161
                                    float aDrawOneByOneX, 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   162
                                    float aDrawOneByOneY,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   163
                                    TReal aDrawOnebyOneW, 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   164
                                    TReal aDrawOnebyOneH,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   165
                                    TBool aShowLocationRect)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   166
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   167
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   168
    iScrAspectratio = (TReal)aScreenSize.iWidth/(TReal)aScreenSize.iHeight;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   169
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   170
    if(aImageData->iGridData.iGlLQ128TextIndex != 0)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   171
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   172
        iDrawOneByOneX = aDrawOneByOneX; 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   173
        iDrawOneByOneY = aDrawOneByOneY;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   174
        iDrawOnebyOneW = aDrawOnebyOneW; 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   175
        iDrawOnebyOneH = aDrawOnebyOneH;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   176
                                            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   177
        iAspectRatio = aImageData->GetAspectRatio();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   178
        iScrSize = aScreenSize;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   179
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   180
        //Define thumbnail size dependinf on screen orientation
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   181
        if(iAspectRatio > 1)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   182
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   183
            iThumbSize.iWidth=(iScrSize.iWidth/KTNSize);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   184
            iThumbSize.iHeight=iThumbSize.iWidth/iAspectRatio;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   185
            iZoomRectSize.iWidth = iScrSize.iWidth/KTNSize;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   186
            iZoomRectSize.iHeight = iZoomRectSize.iWidth/iScrAspectratio;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   187
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   188
        else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   189
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   190
            iThumbSize.iWidth=(iScrSize.iHeight/KTNSize);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   191
            iThumbSize.iHeight=iThumbSize.iWidth/iAspectRatio;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   192
            iZoomRectSize.iHeight = iScrSize.iHeight/KTNSize;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   193
            iZoomRectSize.iWidth = iZoomRectSize.iHeight*iScrAspectratio;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   194
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   195
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   196
        GLfixed vertices[8];
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   197
        SetPictureVertices(vertices, iAspectRatio);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   198
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   199
        glColor4f(1,1,1, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   200
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   201
        // Set OpenGL state
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   202
        glDepthMask(GL_FALSE);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   203
        glDisable(GL_DEPTH_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   204
        glEnable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   205
        glVertexPointer( 2, GL_FIXED, 0, vertices );
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   206
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   207
        glPushMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   208
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   209
        // Set ortho to match screen size
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   210
        glLoadIdentity();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   211
        glOrthof(0,aScreenSize.iWidth, aScreenSize.iHeight,0, -50,50);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   212
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   213
        //Move to top right corner and leave some space around "frame"
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   214
        if(iContainer->GetScreenOrientation())
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   215
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   216
            iRotationTarget = 0 - (TReal)aImageData->GetOrientation();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   217
            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   218
            if(iAspectRatio > 1 && iRotationTarget == 0)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   219
                glTranslatef(iThumbSize.iWidth+4, iScrSize.iHeight-iThumbSize.iHeight-4, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   220
            else if(iAspectRatio < 1 && iRotationTarget == 0)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   221
                glTranslatef((iThumbSize.iWidth)*iAspectRatio+4, iScrSize.iHeight-iThumbSize.iWidth-4, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   222
            else// if(iAspectRatio < 1 && iRotationTarget == 0)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   223
                glTranslatef((iThumbSize.iHeight)+4, iScrSize.iHeight-iThumbSize.iWidth-4, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   224
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   225
        else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   226
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   227
            iRotationTarget = -90 - (TReal)aImageData->GetOrientation();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   228
            
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   229
            if(iAspectRatio > 1 && iRotationTarget == -90)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   230
                glTranslatef(iScrSize.iWidth-iThumbSize.iHeight-4, iScrSize.iHeight-iThumbSize.iWidth-4, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   231
            else if(iAspectRatio < 1 && iRotationTarget == -90)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   232
                glTranslatef(iScrSize.iWidth-(iThumbSize.iHeight*iAspectRatio)-4, iScrSize.iHeight-(iThumbSize.iWidth*iAspectRatio)-4, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   233
            else// if(iAspectRatio < 1 && iRotationTarget == -90)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   234
                glTranslatef(iScrSize.iWidth-(iThumbSize.iHeight*iAspectRatio)-4, iScrSize.iHeight-(iThumbSize.iHeight)-4, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   235
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   236
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   237
        iContainer->Interpolate(iRotation, iRotationTarget, 0.60);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   238
        glRotatef(iRotation, 0,0,1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   239
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   240
        DrawFrame(0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   241
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   242
        glBindTexture(GL_TEXTURE_2D, aImageData->iGridData.iGlLQ128TextIndex);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   243
        glDrawArrays(GL_TRIANGLE_STRIP,0,4);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   244
                        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   245
        // Restore OpenGL state
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   246
        glDepthMask(GL_TRUE);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   247
        glEnable(GL_DEPTH_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   248
        glEnable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   249
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   250
        //glDisable(GL_BLEND);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   251
        if(aShowLocationRect)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   252
            DrawZoomFrame(iRotationTarget);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   253
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   254
        glDisableClientState(GL_VERTEX_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   255
        glDisableClientState(GL_TEXTURE_COORD_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   256
        glPopMatrix();
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
//Shows rectangle for zoomed are
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   261
void CDrawUtility::DrawZoomFrame(float aRotationTarget)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   262
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   263
    DP0_IMAGIC(_L("CImagicContainerBrowser::DrawFaceFrame++"));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   264
    DP1_IMAGIC(_L("CImagicContainerBrowser::DrawZoomFrame - aRotationTarget: %f"),aRotationTarget);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   265
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   266
    GLfixed vertices[8];
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   267
    glPushMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   268
    glDisable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   269
    glTranslatef(0, 0, 0.01f);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   270
    glColor4f(0,0.7,0,1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   271
    glLineWidth(2.0f);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   272
    glVertexPointer(2, GL_FIXED, 0, vertices);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   273
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   274
	TReal xPos = iDrawOneByOneX*(TReal)iThumbSize.iWidth*2;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   275
	TReal yPos = iDrawOneByOneY*(TReal)iThumbSize.iHeight*2*iAspectRatio;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   276
	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   277
	//float x,y;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   278
	TInt x,y;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   279
	TInt rotationTarget = aRotationTarget;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   280
	rotationTarget%=360;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   281
	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   282
	if(rotationTarget == 0)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   283
	    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   284
	    glTranslatef(-xPos, yPos, 0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   285
	    if(iAspectRatio > 1)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   286
	        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   287
	        x=iDrawOnebyOneW*iZoomRectSize.iWidth * (1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   288
	        y=iDrawOnebyOneW*iZoomRectSize.iHeight * (1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   289
	        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   290
	    else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   291
	        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   292
	        x=iDrawOnebyOneH*iZoomRectSize.iWidth * (1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   293
            y=iDrawOnebyOneH*iZoomRectSize.iHeight * (1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   294
	        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   295
	        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   296
	    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   297
	else if(rotationTarget == -90)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   298
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   299
        glTranslatef(-yPos, -xPos, 0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   300
        if(iAspectRatio > 1)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   301
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   302
            y=iDrawOnebyOneH*iScrAspectratio*iZoomRectSize.iWidth * (1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   303
            x=iDrawOnebyOneH*iScrAspectratio*iZoomRectSize.iHeight * (1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   304
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   305
        else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   306
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   307
            y=iDrawOnebyOneH*iZoomRectSize.iWidth * (1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   308
            x=iDrawOnebyOneH*iZoomRectSize.iHeight * (1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   309
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   310
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   311
	else if(rotationTarget == -180)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   312
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   313
        glTranslatef(xPos, -yPos, 0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   314
        if(iAspectRatio > 1)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   315
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   316
            x=iDrawOnebyOneW*iZoomRectSize.iWidth * (1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   317
            y=iDrawOnebyOneW*iZoomRectSize.iHeight * (1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   318
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   319
        else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   320
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   321
            x=iDrawOnebyOneH*iZoomRectSize.iWidth * (1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   322
            y=iDrawOnebyOneH*iZoomRectSize.iHeight * (1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   323
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   324
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   325
	else if(rotationTarget == -270)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   326
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   327
        glTranslatef(yPos, xPos, 0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   328
        if(iAspectRatio > 1)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   329
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   330
            y=iDrawOnebyOneH*iScrAspectratio*iZoomRectSize.iWidth * (1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   331
            x=iDrawOnebyOneH*iScrAspectratio*iZoomRectSize.iHeight * (1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   332
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   333
        else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   334
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   335
            y=iDrawOnebyOneH*iZoomRectSize.iWidth * (1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   336
            x=iDrawOnebyOneH*iZoomRectSize.iHeight * (1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   337
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   338
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   339
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   340
	TInt tnSizeFixedH = iThumbSize.iHeight*(1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   341
	TInt tnSizeFixedW = iThumbSize.iWidth*(1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   342
	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   343
	if(y > tnSizeFixedH)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   344
	    y=tnSizeFixedH;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   345
	if(x > tnSizeFixedW)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   346
        x=tnSizeFixedW;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   347
	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   348
	vertices[0*2+0] = -x;	vertices[0*2+1] = -y;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   349
	vertices[1*2+0] =  x;	vertices[1*2+1] = -y;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   350
	vertices[2*2+0] =  x;	vertices[2*2+1] =  y;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   351
	vertices[3*2+0] = -x;	vertices[3*2+1] =  y;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   352
	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   353
    glDrawArrays(GL_LINE_LOOP,0,4);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   354
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   355
    glColor4f(1,1,1,1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   356
    glEnable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   357
    glPopMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   358
	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   359
    DP0_IMAGIC(_L("CImagicContainerBrowser::DrawZoomFrame--"));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   360
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   361
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   362
/*----------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   363
// Draws background frame
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   364
//
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   365
void CDrawUtility::DrawFrame(TInt aIndex)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   366
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   367
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   368
    // Draw frame around selected image
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   369
    glPushMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   370
    glDisable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   371
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   372
    //Frame size
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   373
    float scale=1.09;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   374
    glColor4f(1,1,1, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   375
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   376
    glTranslatef(0,0,-0.03);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   377
    glScalef(scale,scale,scale);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   378
    glDrawArrays(GL_TRIANGLE_STRIP,0,4);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   379
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   380
    //glDisable(GL_BLEND);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   381
    glEnable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   382
    glPopMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   383
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   384
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   385
void CDrawUtility::SetPictureVertices(GLfixed* aVertices, TReal aAspectRatio)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   386
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   387
    //DP0_IMAGIC(_L("CImagicContainerBrowser::SetPictureVertices"));
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   388
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   389
    GLfixed vx = (iThumbSize.iWidth)*(1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   390
    GLfixed vy = (iThumbSize.iWidth)*(1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   391
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   392
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   393
    if(aAspectRatio > 1)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   394
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   395
        vy = ((iThumbSize.iWidth)/aAspectRatio)*(1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   396
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   397
    else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   398
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   399
        vx = ((iThumbSize.iWidth)*aAspectRatio)*(1<<16);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   400
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   401
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   402
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   403
    aVertices[0*2+0] = -vx;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   404
    aVertices[0*2+1] = vy;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   405
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   406
    aVertices[1*2+0] = vx;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   407
    aVertices[1*2+1] = vy;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   408
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   409
    aVertices[2*2+0] = -vx;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   410
    aVertices[2*2+1] = -vy;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   411
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   412
    aVertices[3*2+0] = vx;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   413
    aVertices[3*2+1] = -vy;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   414
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   415
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   416
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   417
#if 1
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   418
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   419
/*--------------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   420
// Draw moving arrow
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   421
//
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   422
void CDrawUtility::DrawMovingArrow(TBool aPrevArrow, TBool aUpDownArrow, const TSize& aScreenSize)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   423
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   424
    //Define shape of direction array
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   425
    const GLfixed vertices[4*2] = 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   426
		{
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   427
		0*1<<16,  0*1<<16,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   428
		10*1<<16, 7*1<<16,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   429
		7*1<<16,  0*1<<16,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   430
		10*1<<16,-7*1<<16,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   431
		};
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   432
    //Define colors of direction array
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   433
    const GLubyte colors[4*4] = 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   434
		{
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   435
		//61,174,227, 128,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   436
		/*255,255,255, 255,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   437
		81,194,247, 255,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   438
		61,174,227, 255,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   439
		41,154,207, 255,*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   440
        255,255,255, 255,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   441
        128,128,128, 255,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   442
        50,50,50, 255,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   443
        128,128,128, 255,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   444
		};
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   445
    //And order of drawing
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   446
	const GLushort indices[2*3]=
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   447
		{
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   448
		0,1,2,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   449
		2,3,0,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   450
		};
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   451
	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   452
	TReal scale = 1;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   453
	if(aScreenSize.iHeight > 320 || aScreenSize.iWidth > 320)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   454
	    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   455
	    scale = 1.5;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   456
	    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   457
	    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   458
    // Set OpenGL state
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   459
	// Shade model
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   460
    glShadeModel(GL_SMOOTH);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   461
    glDepthMask(GL_FALSE);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   462
    glDisable(GL_DEPTH_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   463
    glDisable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   464
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   465
    glEnableClientState(GL_COLOR_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   466
    glPushMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   467
	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   468
#ifdef ENABLE_ALPHA
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   469
	// Setup alpha
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   470
	glEnable(GL_ALPHA_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   471
	glEnable(GL_BLEND);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   472
	glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   473
#endif	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   474
    // Set ortho to match screen size
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   475
    glLoadIdentity();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   476
    glOrthof(0,aScreenSize.iWidth, aScreenSize.iHeight,0, -100,100);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   477
    glPushMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   478
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   479
    // Move to arrow position
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   480
	int ArrowDistance=5;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   481
	if(aPrevArrow)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   482
		{
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   483
		glTranslatef(ArrowDistance,aScreenSize.iHeight/2,0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   484
        glVertexPointer(2,GL_FIXED,0, vertices);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   485
        glColorPointer(4,GL_UNSIGNED_BYTE,0, colors);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   486
        glScalef(scale,scale,scale);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   487
        glDrawElements(GL_TRIANGLES, 2*3, GL_UNSIGNED_SHORT, indices);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   488
        glScalef(1/scale,1/scale,1/scale);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   489
		glTranslatef(aScreenSize.iWidth-2*ArrowDistance,0/*aScreenSize.iHeight/2*/,0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   490
		// Flip arrow around so it points to right
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   491
	    glRotatef(180,0,0,1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   492
		// Also flip it on X
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   493
		//glRotatef(180,1,0,0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   494
		glVertexPointer(2,GL_FIXED,0, vertices);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   495
        glColorPointer(4,GL_UNSIGNED_BYTE,0, colors);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   496
        glScalef(scale,scale,scale);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   497
        glDrawElements(GL_TRIANGLES, 2*3, GL_UNSIGNED_SHORT, indices);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   498
        glScalef(1/scale,1/scale,1/scale);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   499
		
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   500
        glPopMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   501
		glPushMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   502
	    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   503
	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   504
    if(aUpDownArrow)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   505
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   506
        glTranslatef(aScreenSize.iWidth/2, ArrowDistance,0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   507
        //glTranslatef(aScreenSize.iWidth/2,(aScreenSize.iHeight)-ArrowDistance,0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   508
        // Flip arrow around so it points to right
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   509
        glRotatef(90,0,0,1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   510
        // Also flip it on X
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   511
        //glRotatef(180,1,0,0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   512
        // Draw arrow
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   513
        glVertexPointer(2,GL_FIXED,0, vertices);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   514
        glColorPointer(4,GL_UNSIGNED_BYTE,0, colors);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   515
        glScalef(scale,scale,scale);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   516
        glDrawElements(GL_TRIANGLES, 2*3, GL_UNSIGNED_SHORT, indices);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   517
        glScalef(1/scale,1/scale,1/scale);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   518
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   519
        glTranslatef(aScreenSize.iHeight-ArrowDistance*2,0,0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   520
		glRotatef(180,0,0,1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   521
		
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   522
        // Draw arrow
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   523
        glVertexPointer(2,GL_FIXED,0, vertices);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   524
        glColorPointer(4,GL_UNSIGNED_BYTE,0, colors);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   525
        glScalef(scale,scale,scale);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   526
        glDrawElements(GL_TRIANGLES, 2*3, GL_UNSIGNED_SHORT, indices);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   527
        glScalef(1,1,1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   528
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   529
	
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   530
    glPopMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   531
#ifdef ENABLE_ALPHA
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   532
	// Remove alpha
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   533
	glDisable(GL_BLEND);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   534
	glDisable(GL_ALPHA_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   535
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   536
    // Restore OpenGL state
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   537
    glDepthMask(GL_TRUE);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   538
    glEnable(GL_DEPTH_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   539
    glEnable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   540
    glShadeModel(GL_FLAT);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   541
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   542
    glDisableClientState(GL_COLOR_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   543
    glPopMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   544
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   545
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   546
/*--------------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   547
// Draw animation
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   548
//
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   549
void CDrawUtility::Draw(const TSize &aScreenSize)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   550
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   551
    // Set OpenGL state
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   552
    glEnable(GL_LIGHTING);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   553
    glEnable(GL_LIGHT0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   554
    glDepthMask(GL_FALSE);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   555
    glDisable(GL_DEPTH_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   556
    glDisable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   557
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   558
    glEnableClientState(GL_NORMAL_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   559
    glPushMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   560
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   561
    // Set ortho to match screen size
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   562
    glLoadIdentity();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   563
    glOrthof(0,aScreenSize.iWidth, aScreenSize.iHeight,0, -100,100);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   564
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   565
    // Move to top right corner
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   566
    glTranslatef(aScreenSize.iWidth-40,40,0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   567
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   568
    /*
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   569
    // Calculate prespective values
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   570
    GLfloat aspectRatio = (GLfloat)(aScreenSize.iWidth) / (GLfloat)(aScreenSize.iHeight);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   571
    const float near = 0.001;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   572
    const float far = 100.0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   573
    const float top = 0.414*near;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   574
    const float bottom = -top;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   575
    const float left = aspectRatio * bottom;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   576
    const float right = aspectRatio * top;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   577
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   578
    // Set perspective
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   579
    glLoadIdentity();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   580
    glFrustumf(left,right, bottom,top, near,far);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   581
    glTranslatef(0,0,-40);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   582
    */
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   583
    // Update light direction
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   584
    float direction[4]={1, 0, -1, 0};
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   585
    glLightfv(GL_LIGHT0,GL_POSITION, direction);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   586
    glColor4f(1,1,1, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   587
    // Apply rotations
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   588
    glRotatef(iAngleX, 1,0,0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   589
    glRotatef(iAngleY, 0,1,0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   590
    glRotatef(iAngleZ, 0,0,1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   591
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   592
    // Draw tetrahedron
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   593
    glVertexPointer(3,GL_FIXED,0, iVertices);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   594
	glNormalPointer(GL_FIXED,0, iNormals);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   595
    glDrawElements(GL_TRIANGLES, iTriCount*3,GL_UNSIGNED_SHORT,iIndices);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   596
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   597
    // Restore OpenGL state
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   598
    glDepthMask(GL_TRUE);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   599
    glEnable(GL_DEPTH_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   600
    glDisable(GL_LIGHTING);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   601
    glEnable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   602
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   603
    glDisableClientState(GL_NORMAL_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   604
    glPopMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   605
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   606
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   607
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   608
/*--------------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   609
// Draw moving arrow
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   610
//
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   611
void CDrawUtility::DrawMenuIndicators(const TSize& aScreenSize)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   612
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   613
    //Define shape of direction array
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   614
    const GLfixed vertices[4*2] = 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   615
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   616
        0*1<<16,  0*1<<16,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   617
        10*1<<16, 7*1<<16,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   618
        7*1<<16,  0*1<<16,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   619
        10*1<<16,-7*1<<16,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   620
        };
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   621
    //Define colors of direction array
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   622
    const GLubyte colors[4*4] = 
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   623
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   624
        //61,174,227, 128,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   625
        255,255,255, 255,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   626
        81,194,247, 255,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   627
        61,174,227, 255,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   628
        41,154,207, 255,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   629
        };
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   630
    //And order of drawing
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   631
    const GLushort indices[2*3]=
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   632
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   633
        0,1,2,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   634
        2,3,0,
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   635
        };
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   636
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   637
    TReal scale = 1;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   638
    if(aScreenSize.iHeight > 320 || aScreenSize.iWidth > 320)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   639
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   640
        scale = 1.5;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   641
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   642
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   643
    // Set OpenGL state
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   644
    // Shade model
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   645
    glShadeModel(GL_SMOOTH);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   646
    glDepthMask(GL_FALSE);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   647
    glDisable(GL_DEPTH_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   648
    glDisable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   649
    glDisableClientState(GL_TEXTURE_COORD_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   650
    glEnableClientState(GL_COLOR_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   651
    glPushMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   652
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   653
#ifdef ENABLE_ALPHA
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   654
    // Setup alpha
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   655
    glEnable(GL_ALPHA_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   656
    glEnable(GL_BLEND);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   657
    glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   658
#endif  
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   659
    // Set ortho to match screen size
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   660
    glLoadIdentity();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   661
    glOrthof(0,aScreenSize.iWidth, aScreenSize.iHeight,0, -100,100);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   662
    glPushMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   663
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   664
    // Move to arrow position
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   665
    TInt ArrowDistance=20;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   666
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   667
    glTranslatef(aScreenSize.iWidth - ArrowDistance, aScreenSize.iHeight/2, 0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   668
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   669
    //glTranslatef(ArrowDistance, aScreenSize.iWidth/2,0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   670
    glVertexPointer(2,GL_FIXED,0, vertices);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   671
    glColorPointer(4,GL_UNSIGNED_BYTE,0, colors);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   672
    glScalef(scale,scale,scale);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   673
    glDrawElements(GL_TRIANGLES, 2*3, GL_UNSIGNED_SHORT, indices);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   674
    glScalef(1/scale,1/scale,1/scale);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   675
    glTranslatef(aScreenSize.iWidth-2*ArrowDistance, 0, 0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   676
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   677
    // Flip arrow around so it points to right
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   678
    glRotatef(180,0,0,1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   679
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   680
    glVertexPointer(2,GL_FIXED,0, vertices);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   681
    glColorPointer(4,GL_UNSIGNED_BYTE,0, colors);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   682
    glScalef(scale,scale,scale);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   683
    glDrawElements(GL_TRIANGLES, 2*3, GL_UNSIGNED_SHORT, indices);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   684
    glScalef(1/scale,1/scale,1/scale);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   685
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   686
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   687
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   688
    glPopMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   689
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   690
#ifdef ENABLE_ALPHA
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   691
    // Remove alpha
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   692
    glDisable(GL_BLEND);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   693
    glDisable(GL_ALPHA_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   694
#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   695
    // Restore OpenGL state
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   696
    glDepthMask(GL_TRUE);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   697
    glEnable(GL_DEPTH_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   698
    glEnable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   699
    glShadeModel(GL_FLAT);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   700
    glEnableClientState(GL_TEXTURE_COORD_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   701
    glDisableClientState(GL_COLOR_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   702
    glPopMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   703
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   704
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   705
/*--------------------------------------------------------------------------*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   706
// Draw icon texture
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   707
//
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   708
void CDrawUtility::DrawIcon(const TSize &aScreenSize, GLuint aTexIndex)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   709
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   710
    if(aTexIndex != 0)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   711
        {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   712
        GLfixed vertices[8];
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   713
        SetPictureVertices(vertices, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   714
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   715
        glColor4f(1,1,1, 0.75);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   716
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   717
        // Set OpenGL state
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   718
        glDepthMask(GL_FALSE);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   719
        glDisable(GL_DEPTH_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   720
        glEnable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   721
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   722
        //Enable alpha blending
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   723
        glEnable(GL_BLEND);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   724
        glEnable(GL_ALPHA_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   725
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_COLOR);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   726
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   727
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   728
        glVertexPointer( 2, GL_FIXED, 0, vertices );
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   729
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   730
        glPushMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   731
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   732
        // Set ortho to match screen size
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   733
        glLoadIdentity();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   734
        glOrthof(0,aScreenSize.iWidth, aScreenSize.iHeight,0, -50,50);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   735
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   736
        // Move to top right corner
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   737
        //glTranslatef(29, 29, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   738
        glTranslatef(0, 0, 0);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   739
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   740
//#ifdef _S60_5x_ACCELEROMETER_
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   741
        if(iContainer->GetScreenOrientation())
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   742
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   743
            iRotationTarget = 0;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   744
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   745
        else
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   746
            {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   747
            iRotationTarget = -90;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   748
            }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   749
        iContainer->Interpolate(iRotation, iRotationTarget, 0.25);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   750
        glRotatef(iRotation, 0,0,1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   751
//#endif
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   752
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   753
        glBindTexture(GL_TEXTURE_2D, aTexIndex);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   754
        glDrawArrays(GL_TRIANGLE_STRIP,0,4);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   755
                        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   756
        // Restore OpenGL state
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   757
        glDepthMask(GL_TRUE);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   758
        glEnable(GL_DEPTH_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   759
        glEnable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   760
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   761
        glDisable(GL_BLEND);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   762
        glDisable(GL_ALPHA_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   763
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   764
        glDisableClientState(GL_VERTEX_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   765
        glDisableClientState(GL_TEXTURE_COORD_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   766
                
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   767
        glPopMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   768
        }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   769
    }
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   770
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   771
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   772
void CDrawUtility::DrawIcon2(const TSize &aScreenSize, GLuint aTexIndex, TReal aAlpha)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   773
    {
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   774
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   775
    iScrAspectratio = (TReal)aScreenSize.iWidth/(TReal)aScreenSize.iHeight;
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   776
    
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   777
        GLfixed vertices[8];
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   778
        SetPictureVertices(vertices, 0.3);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   779
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   780
        //glColor4f(1,1,1, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   781
        glColor4f(1,1,1, aAlpha);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   782
        // Set OpenGL state
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   783
        glDepthMask(GL_FALSE);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   784
        glDisable(GL_DEPTH_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   785
        glEnable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   786
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   787
        //Enable alpha blending
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   788
        glEnable(GL_BLEND);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   789
        glEnable(GL_ALPHA_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   790
        //glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_COLOR);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   791
        glBlendFunc(GL_SRC_ALPHA, GL_ONE_MINUS_SRC_ALPHA);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   792
                
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   793
        glVertexPointer( 2, GL_FIXED, 0, vertices );
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   794
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   795
        glPushMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   796
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   797
        // Set ortho to match screen size
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   798
        glLoadIdentity();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   799
        glOrthof(0,aScreenSize.iWidth, aScreenSize.iHeight,0, -50,50);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   800
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   801
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   802
        glTranslatef(iScrSize.iWidth-7, iScrSize.iHeight-25, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   803
        iContainer->Interpolate(iRotation, iRotationTarget, 0.60);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   804
        //glRotatef(90, 0,0,1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   805
        glBindTexture(GL_TEXTURE_2D, aTexIndex);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   806
        glScalef(0.5, 0.5, 0.5);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   807
        glDrawArrays(GL_TRIANGLE_STRIP,0,4);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   808
        glScalef(2, 2, 2);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   809
        glTranslatef(0, -iScrSize.iHeight+50, 1);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   810
        glScalef(0.5, 0.5, 0.5);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   811
        glBindTexture(GL_TEXTURE_2D, aTexIndex);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   812
        glDrawArrays(GL_TRIANGLE_STRIP,0,4);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   813
        glScalef(2, 2, 2);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   814
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   815
        // Restore OpenGL state
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   816
        glDepthMask(GL_TRUE);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   817
        glEnable(GL_DEPTH_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   818
        glEnable(GL_TEXTURE_2D);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   819
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   820
        glDisable(GL_BLEND);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   821
        glDisable(GL_ALPHA_TEST);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   822
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   823
        //glDisable(GL_BLEND);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   824
        /*if(aShowLocationRect)
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   825
            DrawZoomFrame(iRotationTarget);*/
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   826
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   827
        glDisableClientState(GL_VERTEX_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   828
        glDisableClientState(GL_TEXTURE_COORD_ARRAY);
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   829
        glPopMatrix();
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   830
        
93fff7023be8 Initial version
jkauppin
parents:
diff changeset
   831
    }