uiacceltk/hitchcock/Client/src/alfgc.cpp
author hgs
Wed, 03 Nov 2010 19:29:22 +0200
changeset 64 9f8c0686fb49
permissions -rw-r--r--
201044
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
64
hgs
parents:
diff changeset
     1
/*
hgs
parents:
diff changeset
     2
* Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
hgs
parents:
diff changeset
     3
* All rights reserved.
hgs
parents:
diff changeset
     4
* This component and the accompanying materials are made available
hgs
parents:
diff changeset
     5
* under the terms of "Eclipse Public License v1.0"
hgs
parents:
diff changeset
     6
* which accompanies this distribution, and is available
hgs
parents:
diff changeset
     7
* at the URL "http://www.eclipse.org/legal/epl-v10.html".
hgs
parents:
diff changeset
     8
*
hgs
parents:
diff changeset
     9
* Initial Contributors:
hgs
parents:
diff changeset
    10
* Nokia Corporation - initial contribution.
hgs
parents:
diff changeset
    11
*
hgs
parents:
diff changeset
    12
* Contributors:
hgs
parents:
diff changeset
    13
*
hgs
parents:
diff changeset
    14
* Description:   Graphics context
hgs
parents:
diff changeset
    15
*
hgs
parents:
diff changeset
    16
*/
hgs
parents:
diff changeset
    17
hgs
parents:
diff changeset
    18
hgs
parents:
diff changeset
    19
hgs
parents:
diff changeset
    20
#include <alf/alfgc.h>
hgs
parents:
diff changeset
    21
#include <alf/alfenv.h>
hgs
parents:
diff changeset
    22
#include <alf/alftexture.h>
hgs
parents:
diff changeset
    23
#include <alf/alftimedvalue.h>
hgs
parents:
diff changeset
    24
#include <alf/alftextstyle.h>
hgs
parents:
diff changeset
    25
#include <alf/alfrealline.h>
hgs
parents:
diff changeset
    26
#include "alflogger.h"
hgs
parents:
diff changeset
    27
hgs
parents:
diff changeset
    28
//#include <uiacceltk/huicanvasconstants.h>
hgs
parents:
diff changeset
    29
hgs
parents:
diff changeset
    30
hgs
parents:
diff changeset
    31
enum TAlfCanvasCommands
hgs
parents:
diff changeset
    32
    {
hgs
parents:
diff changeset
    33
    EAlfCanvasDrawImage,
hgs
parents:
diff changeset
    34
    EAlfCanvasDrawText,
hgs
parents:
diff changeset
    35
    EAlfCanvasDrawLines,
hgs
parents:
diff changeset
    36
	EAlfCanvasDrawEllipse,
hgs
parents:
diff changeset
    37
	EAlfCanvasDrawPoints,
hgs
parents:
diff changeset
    38
	EAlfCanvasDrawPolygon,
hgs
parents:
diff changeset
    39
	EAlfCanvasDrawRects,
hgs
parents:
diff changeset
    40
hgs
parents:
diff changeset
    41
	// Setters
hgs
parents:
diff changeset
    42
    EAlfCanvasSetTextStyle,
hgs
parents:
diff changeset
    43
	EAlfCanvasSetPenColor,
hgs
parents:
diff changeset
    44
	EAlfCanvasSetPenWidth,
hgs
parents:
diff changeset
    45
	EAlfCanvasSetOpacity,
hgs
parents:
diff changeset
    46
	EAlfCanvasSetPolygonDrawMode,
hgs
parents:
diff changeset
    47
	EAlfCanvasSetTextAlign,
hgs
parents:
diff changeset
    48
hgs
parents:
diff changeset
    49
    // Transformations
hgs
parents:
diff changeset
    50
	EAlfCanvasLoadIdentity,
hgs
parents:
diff changeset
    51
	EAlfCanvasTranslate,
hgs
parents:
diff changeset
    52
	EAlfCanvasScale,
hgs
parents:
diff changeset
    53
	EAlfCanvasRotate,
hgs
parents:
diff changeset
    54
	
hgs
parents:
diff changeset
    55
	EAlfCanvasPrepareDrawText
hgs
parents:
diff changeset
    56
    };
hgs
parents:
diff changeset
    57
hgs
parents:
diff changeset
    58
NONSHARABLE_STRUCT( TAlfCanvasEndDrawParams )
hgs
parents:
diff changeset
    59
    {
hgs
parents:
diff changeset
    60
    TInt    iDummy1;
hgs
parents:
diff changeset
    61
    TInt    iDummy2;
hgs
parents:
diff changeset
    62
    TInt    iDummy3;
hgs
parents:
diff changeset
    63
    TInt    iDummy4;
hgs
parents:
diff changeset
    64
    };
hgs
parents:
diff changeset
    65
    
hgs
parents:
diff changeset
    66
NONSHARABLE_STRUCT( TAlfCanvasDrawImageParams )
hgs
parents:
diff changeset
    67
    {
hgs
parents:
diff changeset
    68
    TInt    iTexture;
hgs
parents:
diff changeset
    69
    TReal32 iDestinationRectTopLeftX;
hgs
parents:
diff changeset
    70
    TReal32 iDestinationRectTopLeftY;
hgs
parents:
diff changeset
    71
    TReal32 iDestinationRectBottomRightX;
hgs
parents:
diff changeset
    72
    TReal32 iDestinationRectBottomRightY;
hgs
parents:
diff changeset
    73
    };
hgs
parents:
diff changeset
    74
hgs
parents:
diff changeset
    75
NONSHARABLE_STRUCT( TAlfCanvasDrawTextParams )
hgs
parents:
diff changeset
    76
    {
hgs
parents:
diff changeset
    77
    TReal32 iDestinationRectTopLeftX;
hgs
parents:
diff changeset
    78
    TReal32 iDestinationRectTopLeftY;
hgs
parents:
diff changeset
    79
    TReal32 iDestinationRectBottomRightX;
hgs
parents:
diff changeset
    80
    TReal32 iDestinationRectBottomRightY;
hgs
parents:
diff changeset
    81
    };
hgs
parents:
diff changeset
    82
    
hgs
parents:
diff changeset
    83
NONSHARABLE_STRUCT( TAlfCanvasDrawLinesParams )
hgs
parents:
diff changeset
    84
    {
hgs
parents:
diff changeset
    85
    TInt iLineCount;
hgs
parents:
diff changeset
    86
	RArray<TReal32> iPointCords;
hgs
parents:
diff changeset
    87
	};    
hgs
parents:
diff changeset
    88
hgs
parents:
diff changeset
    89
NONSHARABLE_STRUCT( TAlfCanvasDrawEllipseParams )
hgs
parents:
diff changeset
    90
	{
hgs
parents:
diff changeset
    91
    TReal32 iDestinationRectTopLeftX;
hgs
parents:
diff changeset
    92
    TReal32 iDestinationRectTopLeftY;
hgs
parents:
diff changeset
    93
    TReal32 iDestinationRectBottomRightX;
hgs
parents:
diff changeset
    94
    TReal32 iDestinationRectBottomRightY;
hgs
parents:
diff changeset
    95
    };
hgs
parents:
diff changeset
    96
    	
hgs
parents:
diff changeset
    97
	
hgs
parents:
diff changeset
    98
	// Setters
hgs
parents:
diff changeset
    99
NONSHARABLE_STRUCT( TAlfCanvasSetTextStyleParams )
hgs
parents:
diff changeset
   100
    {
hgs
parents:
diff changeset
   101
    TInt  iTextstyleId;
hgs
parents:
diff changeset
   102
    };
hgs
parents:
diff changeset
   103
hgs
parents:
diff changeset
   104
NONSHARABLE_STRUCT( TAlfCanvasSetPenColorParams )
hgs
parents:
diff changeset
   105
	{
hgs
parents:
diff changeset
   106
    TRgb  iPenColor;
hgs
parents:
diff changeset
   107
    };
hgs
parents:
diff changeset
   108
NONSHARABLE_STRUCT( TAlfCanvasSetPenWidthParams )
hgs
parents:
diff changeset
   109
	{
hgs
parents:
diff changeset
   110
    TReal32  iPenWidth;
hgs
parents:
diff changeset
   111
    };
hgs
parents:
diff changeset
   112
NONSHARABLE_STRUCT( TAlfCanvasSetOpacityParams )
hgs
parents:
diff changeset
   113
	{
hgs
parents:
diff changeset
   114
    TReal32  iOpacity;
hgs
parents:
diff changeset
   115
    };
hgs
parents:
diff changeset
   116
NONSHARABLE_STRUCT( TAlfCanvasSetPolygonDrawModeParams )
hgs
parents:
diff changeset
   117
	{
hgs
parents:
diff changeset
   118
    TInt  iPolygonDrawMode;
hgs
parents:
diff changeset
   119
    };
hgs
parents:
diff changeset
   120
NONSHARABLE_STRUCT( TAlfCanvasSetTextAlignParams )
hgs
parents:
diff changeset
   121
	{
hgs
parents:
diff changeset
   122
    TInt  iTextAlignHorizontal;
hgs
parents:
diff changeset
   123
    TInt  iTextAlignVertical;
hgs
parents:
diff changeset
   124
    };
hgs
parents:
diff changeset
   125
hgs
parents:
diff changeset
   126
hgs
parents:
diff changeset
   127
   // Transformations
hgs
parents:
diff changeset
   128
NONSHARABLE_STRUCT( TAlfCanvasLoadIdentityParams )
hgs
parents:
diff changeset
   129
	{
hgs
parents:
diff changeset
   130
	TInt iDummy;
hgs
parents:
diff changeset
   131
	};
hgs
parents:
diff changeset
   132
	
hgs
parents:
diff changeset
   133
NONSHARABLE_STRUCT( TAlfCanvasTranslateParams )
hgs
parents:
diff changeset
   134
	{
hgs
parents:
diff changeset
   135
	TReal32 iX; 
hgs
parents:
diff changeset
   136
	TReal32 iY; 
hgs
parents:
diff changeset
   137
	TReal32 iZ;
hgs
parents:
diff changeset
   138
	};
hgs
parents:
diff changeset
   139
	
hgs
parents:
diff changeset
   140
NONSHARABLE_STRUCT( TAlfCanvasScaleParams )
hgs
parents:
diff changeset
   141
	{
hgs
parents:
diff changeset
   142
	TReal32 iX; 
hgs
parents:
diff changeset
   143
	TReal32 iY; 
hgs
parents:
diff changeset
   144
	TReal32 iZ;
hgs
parents:
diff changeset
   145
	};
hgs
parents:
diff changeset
   146
	
hgs
parents:
diff changeset
   147
NONSHARABLE_STRUCT( TAlfCanvasRotateParams )
hgs
parents:
diff changeset
   148
	{
hgs
parents:
diff changeset
   149
	TReal32 iAngle;
hgs
parents:
diff changeset
   150
	TReal32 iX; 
hgs
parents:
diff changeset
   151
	TReal32 iY; 
hgs
parents:
diff changeset
   152
	TReal32 iZ;
hgs
parents:
diff changeset
   153
	};
hgs
parents:
diff changeset
   154
hgs
parents:
diff changeset
   155
    
hgs
parents:
diff changeset
   156
template <class T>
hgs
parents:
diff changeset
   157
HBufC8* AlfGcExternalizeL( const RArray<T>& aArray )
hgs
parents:
diff changeset
   158
    {
hgs
parents:
diff changeset
   159
    const TInt itemCount = aArray.Count();
hgs
parents:
diff changeset
   160
    if ( !itemCount)
hgs
parents:
diff changeset
   161
        {
hgs
parents:
diff changeset
   162
        return HBufC8::NewL(0);
hgs
parents:
diff changeset
   163
        }
hgs
parents:
diff changeset
   164
    
hgs
parents:
diff changeset
   165
    const T* firstItem = &aArray[0];    
hgs
parents:
diff changeset
   166
    TPtrC8 arrayPtr( (TUint8*)firstItem, itemCount*sizeof(T) );            
hgs
parents:
diff changeset
   167
    HBufC8* buffer = HBufC8::NewL( sizeof(TInt) + arrayPtr.Length() );
hgs
parents:
diff changeset
   168
    TPtr8 ptr = buffer->Des();     
hgs
parents:
diff changeset
   169
    
hgs
parents:
diff changeset
   170
    ptr.Append( (const TUint8*)&itemCount, sizeof(TInt) );
hgs
parents:
diff changeset
   171
    ptr.Append( arrayPtr );    
hgs
parents:
diff changeset
   172
    return buffer;
hgs
parents:
diff changeset
   173
    }
hgs
parents:
diff changeset
   174
hgs
parents:
diff changeset
   175
hgs
parents:
diff changeset
   176
const TInt KAlfGcBufferGranularity = 1024;
hgs
parents:
diff changeset
   177
hgs
parents:
diff changeset
   178
struct CAlfGc::TAlfGcData
hgs
parents:
diff changeset
   179
    {
hgs
parents:
diff changeset
   180
    TAlfGcData() : iBuffer(NULL) {}
hgs
parents:
diff changeset
   181
    HBufC8* iBuffer;
hgs
parents:
diff changeset
   182
    };
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
// ======== MEMBER FUNCTIONS ========
hgs
parents:
diff changeset
   185
hgs
parents:
diff changeset
   186
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   187
// 
hgs
parents:
diff changeset
   188
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   189
//
hgs
parents:
diff changeset
   190
CAlfGc* CAlfGc::NewL()
hgs
parents:
diff changeset
   191
    {
hgs
parents:
diff changeset
   192
    CAlfGc* self = new (ELeave) CAlfGc;
hgs
parents:
diff changeset
   193
    CleanupStack::PushL( self );
hgs
parents:
diff changeset
   194
    self->ConstructL();
hgs
parents:
diff changeset
   195
    CleanupStack::Pop( self );
hgs
parents:
diff changeset
   196
    return self;
hgs
parents:
diff changeset
   197
    }
hgs
parents:
diff changeset
   198
hgs
parents:
diff changeset
   199
CAlfGc::CAlfGc()
hgs
parents:
diff changeset
   200
    {
hgs
parents:
diff changeset
   201
    }
hgs
parents:
diff changeset
   202
    
hgs
parents:
diff changeset
   203
void CAlfGc::ConstructL()
hgs
parents:
diff changeset
   204
    {
hgs
parents:
diff changeset
   205
    iData = new (ELeave) TAlfGcData;
hgs
parents:
diff changeset
   206
    }
hgs
parents:
diff changeset
   207
    
hgs
parents:
diff changeset
   208
CAlfGc::~CAlfGc()
hgs
parents:
diff changeset
   209
    {
hgs
parents:
diff changeset
   210
    if ( iData )
hgs
parents:
diff changeset
   211
        {
hgs
parents:
diff changeset
   212
        delete iData->iBuffer;
hgs
parents:
diff changeset
   213
        iData->iBuffer = NULL;
hgs
parents:
diff changeset
   214
        }
hgs
parents:
diff changeset
   215
    delete iData;
hgs
parents:
diff changeset
   216
    iData = NULL;
hgs
parents:
diff changeset
   217
    }
hgs
parents:
diff changeset
   218
    
hgs
parents:
diff changeset
   219
hgs
parents:
diff changeset
   220
void CAlfGc::ActivateL()
hgs
parents:
diff changeset
   221
    {    
hgs
parents:
diff changeset
   222
    Deactivate(); // Just in case...
hgs
parents:
diff changeset
   223
    iData->iBuffer = HBufC8::NewL( KAlfGcBufferGranularity );
hgs
parents:
diff changeset
   224
    }
hgs
parents:
diff changeset
   225
hgs
parents:
diff changeset
   226
HBufC8* CAlfGc::CommandBuffer()
hgs
parents:
diff changeset
   227
    {
hgs
parents:
diff changeset
   228
    return iData->iBuffer;      
hgs
parents:
diff changeset
   229
    }
hgs
parents:
diff changeset
   230
    
hgs
parents:
diff changeset
   231
void CAlfGc::Deactivate()
hgs
parents:
diff changeset
   232
    {        
hgs
parents:
diff changeset
   233
    delete iData->iBuffer;
hgs
parents:
diff changeset
   234
    iData->iBuffer = NULL;
hgs
parents:
diff changeset
   235
    }
hgs
parents:
diff changeset
   236
    
hgs
parents:
diff changeset
   237
void CAlfGc::AppendCommand( TInt aCommand, const TDesC8& aParams )
hgs
parents:
diff changeset
   238
    {
hgs
parents:
diff changeset
   239
    TRAP_IGNORE(AppendCommandL(aCommand,aParams));
hgs
parents:
diff changeset
   240
    }
hgs
parents:
diff changeset
   241
hgs
parents:
diff changeset
   242
void CAlfGc::AppendCommandL( TInt aCommand, const TDesC8& aParams )
hgs
parents:
diff changeset
   243
    {
hgs
parents:
diff changeset
   244
    if (!iData->iBuffer)
hgs
parents:
diff changeset
   245
        {
hgs
parents:
diff changeset
   246
        return;    
hgs
parents:
diff changeset
   247
        }
hgs
parents:
diff changeset
   248
    
hgs
parents:
diff changeset
   249
    __ALFLOGSTRING1( "CAlfGc::AppendCommand - start, buffer length: %d", iData->iBuffer->Length() )
hgs
parents:
diff changeset
   250
    
hgs
parents:
diff changeset
   251
    // create a bigger buffer if needed
hgs
parents:
diff changeset
   252
    const TInt newSpaceNeeded = 4 + 4 + aParams.Length() + 4;
hgs
parents:
diff changeset
   253
    __ALFLOGSTRING1( "CAlfGc::AppendCommand - new space needed: %d", newSpaceNeeded)
hgs
parents:
diff changeset
   254
    if ( iData->iBuffer->Des().MaxLength() - iData->iBuffer->Length() < newSpaceNeeded )
hgs
parents:
diff changeset
   255
        {
hgs
parents:
diff changeset
   256
        __ALFLOGSTRING1( "CAlfGc::AppendCommand - allocating new buffer length: %d", iData->iBuffer->Length() + newSpaceNeeded * 2  )
hgs
parents:
diff changeset
   257
        iData->iBuffer = iData->iBuffer->ReAllocL( iData->iBuffer->Length() + newSpaceNeeded * 2 );
hgs
parents:
diff changeset
   258
        } 
hgs
parents:
diff changeset
   259
    
hgs
parents:
diff changeset
   260
    TPtr8 ptr = iData->iBuffer->Des();
hgs
parents:
diff changeset
   261
    TInt length = aParams.Length();
hgs
parents:
diff changeset
   262
    TInt command = aCommand;
hgs
parents:
diff changeset
   263
    
hgs
parents:
diff changeset
   264
    ptr.Append( (const TUint8*)&command, sizeof(TInt) );
hgs
parents:
diff changeset
   265
    ptr.Append( (const TUint8*)&length, sizeof(TInt) );
hgs
parents:
diff changeset
   266
    ptr.Append( aParams );
hgs
parents:
diff changeset
   267
    
hgs
parents:
diff changeset
   268
    TInt padding = 0;
hgs
parents:
diff changeset
   269
    if (length % 4)
hgs
parents:
diff changeset
   270
        {
hgs
parents:
diff changeset
   271
        padding = 4 - length % 4;    
hgs
parents:
diff changeset
   272
        }
hgs
parents:
diff changeset
   273
    
hgs
parents:
diff changeset
   274
    for ( TInt i = 0 ; i < padding ; i++ )
hgs
parents:
diff changeset
   275
        {
hgs
parents:
diff changeset
   276
        ptr.Append( 0xFF );        
hgs
parents:
diff changeset
   277
        }        
hgs
parents:
diff changeset
   278
    
hgs
parents:
diff changeset
   279
    for ( TInt i = 0 ; i < aParams.Length() ; i++ )
hgs
parents:
diff changeset
   280
        {
hgs
parents:
diff changeset
   281
        __ALFLOGSTRING2( "[%d]: %d", i, aParams[i] )
hgs
parents:
diff changeset
   282
        }
hgs
parents:
diff changeset
   283
    
hgs
parents:
diff changeset
   284
    __ALFLOGSTRING1( "CAlfGc::AppendCommand - end, buffer length: %d", iData->iBuffer->Length() )
hgs
parents:
diff changeset
   285
    }
hgs
parents:
diff changeset
   286
hgs
parents:
diff changeset
   287
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   288
// 
hgs
parents:
diff changeset
   289
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   290
//
hgs
parents:
diff changeset
   291
void CAlfGc::DrawImage(const CAlfTexture& aTexture, const TAlfRealRect& aDestinationRect)   
hgs
parents:
diff changeset
   292
    {
hgs
parents:
diff changeset
   293
    TInt serversideTexture = aTexture.ServerHandle();
hgs
parents:
diff changeset
   294
    
hgs
parents:
diff changeset
   295
    const TAlfCanvasDrawImageParams params = {serversideTexture, 
hgs
parents:
diff changeset
   296
        aDestinationRect.iTl.iX,
hgs
parents:
diff changeset
   297
        aDestinationRect.iTl.iY,
hgs
parents:
diff changeset
   298
        aDestinationRect.iBr.iX,
hgs
parents:
diff changeset
   299
        aDestinationRect.iBr.iY
hgs
parents:
diff changeset
   300
     };
hgs
parents:
diff changeset
   301
    TPckgC<TAlfCanvasDrawImageParams> paramsPckg( params );
hgs
parents:
diff changeset
   302
    AppendCommand( EAlfCanvasDrawImage, paramsPckg );
hgs
parents:
diff changeset
   303
    }
hgs
parents:
diff changeset
   304
hgs
parents:
diff changeset
   305
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   306
// 
hgs
parents:
diff changeset
   307
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   308
//
hgs
parents:
diff changeset
   309
void CAlfGc::DrawText(const TDesC& aText, const TAlfRealRect& aDestinationRect)
hgs
parents:
diff changeset
   310
    {
hgs
parents:
diff changeset
   311
        TPtrC8 ptr(reinterpret_cast<const TUint8 *>(aText.Ptr()), aText.Length()*2);                
hgs
parents:
diff changeset
   312
        AppendCommand( EAlfCanvasPrepareDrawText, ptr );
hgs
parents:
diff changeset
   313
        
hgs
parents:
diff changeset
   314
        const TAlfCanvasDrawTextParams params = { 
hgs
parents:
diff changeset
   315
            aDestinationRect.iTl.iX,
hgs
parents:
diff changeset
   316
            aDestinationRect.iTl.iY,
hgs
parents:
diff changeset
   317
            aDestinationRect.iBr.iX,
hgs
parents:
diff changeset
   318
            aDestinationRect.iBr.iY
hgs
parents:
diff changeset
   319
            };
hgs
parents:
diff changeset
   320
        TPckgC<TAlfCanvasDrawTextParams> paramsPckg( params );                    
hgs
parents:
diff changeset
   321
        AppendCommand( EAlfCanvasDrawText, paramsPckg );        
hgs
parents:
diff changeset
   322
    }
hgs
parents:
diff changeset
   323
hgs
parents:
diff changeset
   324
void CAlfGc::DrawLines(const RArray<TReal32> & aLinesPointCords)
hgs
parents:
diff changeset
   325
	{
hgs
parents:
diff changeset
   326
	HBufC8* buffer = NULL;
hgs
parents:
diff changeset
   327
    TRAP_IGNORE(buffer = AlfGcExternalizeL(aLinesPointCords))
hgs
parents:
diff changeset
   328
    if (buffer)
hgs
parents:
diff changeset
   329
        {        
hgs
parents:
diff changeset
   330
    	AppendCommand( EAlfCanvasDrawLines, *buffer );
hgs
parents:
diff changeset
   331
    	delete buffer;
hgs
parents:
diff changeset
   332
    	buffer = NULL;
hgs
parents:
diff changeset
   333
        }
hgs
parents:
diff changeset
   334
	}
hgs
parents:
diff changeset
   335
	
hgs
parents:
diff changeset
   336
hgs
parents:
diff changeset
   337
void CAlfGc::DrawEllipse(const TAlfRealRect& aDestinationRect)
hgs
parents:
diff changeset
   338
	{
hgs
parents:
diff changeset
   339
	const TAlfCanvasDrawEllipseParams params = {
hgs
parents:
diff changeset
   340
        aDestinationRect.iTl.iX,
hgs
parents:
diff changeset
   341
        aDestinationRect.iTl.iY,
hgs
parents:
diff changeset
   342
        aDestinationRect.iBr.iX,
hgs
parents:
diff changeset
   343
        aDestinationRect.iBr.iY
hgs
parents:
diff changeset
   344
     };
hgs
parents:
diff changeset
   345
    TPckgC<TAlfCanvasDrawEllipseParams> paramsPckg( params );
hgs
parents:
diff changeset
   346
    AppendCommand( EAlfCanvasDrawEllipse, paramsPckg );
hgs
parents:
diff changeset
   347
	}
hgs
parents:
diff changeset
   348
hgs
parents:
diff changeset
   349
void CAlfGc::DrawPoints(const RArray<TReal32> & aPointsCords)
hgs
parents:
diff changeset
   350
	{
hgs
parents:
diff changeset
   351
	HBufC8* buffer = NULL;
hgs
parents:
diff changeset
   352
    TRAP_IGNORE(buffer = AlfGcExternalizeL(aPointsCords))
hgs
parents:
diff changeset
   353
    if (buffer)
hgs
parents:
diff changeset
   354
        {        
hgs
parents:
diff changeset
   355
    	AppendCommand( EAlfCanvasDrawPoints, *buffer );
hgs
parents:
diff changeset
   356
    	delete buffer;
hgs
parents:
diff changeset
   357
    	buffer = NULL;
hgs
parents:
diff changeset
   358
        }
hgs
parents:
diff changeset
   359
	}
hgs
parents:
diff changeset
   360
	
hgs
parents:
diff changeset
   361
void CAlfGc::DrawPolygon(const RArray<TReal32> & aPolygonPointCords)
hgs
parents:
diff changeset
   362
	{
hgs
parents:
diff changeset
   363
	HBufC8* buffer = NULL;
hgs
parents:
diff changeset
   364
    TRAP_IGNORE(buffer = AlfGcExternalizeL(aPolygonPointCords))
hgs
parents:
diff changeset
   365
    if (buffer)
hgs
parents:
diff changeset
   366
        {        
hgs
parents:
diff changeset
   367
    	AppendCommand( EAlfCanvasDrawPolygon, *buffer );
hgs
parents:
diff changeset
   368
    	delete buffer;
hgs
parents:
diff changeset
   369
    	buffer = NULL;
hgs
parents:
diff changeset
   370
        }
hgs
parents:
diff changeset
   371
	}
hgs
parents:
diff changeset
   372
hgs
parents:
diff changeset
   373
void CAlfGc::DrawRects(const RArray<TReal32> & aRectPointCords)
hgs
parents:
diff changeset
   374
	{
hgs
parents:
diff changeset
   375
	HBufC8* buffer = NULL;
hgs
parents:
diff changeset
   376
    TRAP_IGNORE(buffer = AlfGcExternalizeL(aRectPointCords))
hgs
parents:
diff changeset
   377
    if (buffer)
hgs
parents:
diff changeset
   378
        {        
hgs
parents:
diff changeset
   379
    	AppendCommand( EAlfCanvasDrawRects, *buffer );
hgs
parents:
diff changeset
   380
    	delete buffer;
hgs
parents:
diff changeset
   381
    	buffer = NULL;
hgs
parents:
diff changeset
   382
        }
hgs
parents:
diff changeset
   383
	}
hgs
parents:
diff changeset
   384
hgs
parents:
diff changeset
   385
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   386
// 
hgs
parents:
diff changeset
   387
// ---------------------------------------------------------------------------
hgs
parents:
diff changeset
   388
//
hgs
parents:
diff changeset
   389
void CAlfGc::SetTextStyle(const CAlfTextStyle& aTextStyle)
hgs
parents:
diff changeset
   390
    {
hgs
parents:
diff changeset
   391
    TInt serverSideTextStyleId = aTextStyle.ServerHandle();    
hgs
parents:
diff changeset
   392
    TAlfCanvasSetTextStyleParams params = {serverSideTextStyleId};
hgs
parents:
diff changeset
   393
    TPckgC<TAlfCanvasSetTextStyleParams> paramsPckg( params );                    
hgs
parents:
diff changeset
   394
    AppendCommand( EAlfCanvasSetTextStyle, paramsPckg );        
hgs
parents:
diff changeset
   395
    }
hgs
parents:
diff changeset
   396
    
hgs
parents:
diff changeset
   397
hgs
parents:
diff changeset
   398
void CAlfGc::SetPenColor(const TRgb& aColor)
hgs
parents:
diff changeset
   399
	{
hgs
parents:
diff changeset
   400
	TAlfCanvasSetPenColorParams params = {aColor};
hgs
parents:
diff changeset
   401
    TPckgC<TAlfCanvasSetPenColorParams> paramsPckg( params );                    
hgs
parents:
diff changeset
   402
    AppendCommand( EAlfCanvasSetPenColor, paramsPckg );        
hgs
parents:
diff changeset
   403
	}
hgs
parents:
diff changeset
   404
	
hgs
parents:
diff changeset
   405
void CAlfGc::SetPenWidth(const TReal32& aWidth)
hgs
parents:
diff changeset
   406
	{
hgs
parents:
diff changeset
   407
	TAlfCanvasSetPenWidthParams params = {aWidth};
hgs
parents:
diff changeset
   408
    TPckgC<TAlfCanvasSetPenWidthParams> paramsPckg( params );                    
hgs
parents:
diff changeset
   409
    AppendCommand( EAlfCanvasSetPenWidth, paramsPckg );        
hgs
parents:
diff changeset
   410
	}
hgs
parents:
diff changeset
   411
	
hgs
parents:
diff changeset
   412
void CAlfGc::SetOpacity(const TReal32& aOpacity)
hgs
parents:
diff changeset
   413
	{
hgs
parents:
diff changeset
   414
	TAlfCanvasSetOpacityParams params = {aOpacity};
hgs
parents:
diff changeset
   415
    TPckgC<TAlfCanvasSetOpacityParams> paramsPckg( params );                    
hgs
parents:
diff changeset
   416
    AppendCommand( EAlfCanvasSetOpacity, paramsPckg );        
hgs
parents:
diff changeset
   417
	}
hgs
parents:
diff changeset
   418
	
hgs
parents:
diff changeset
   419
hgs
parents:
diff changeset
   420
void CAlfGc::SetPolygonDrawMode(TAlfPolygonDrawMode aPolygonDrawMode)
hgs
parents:
diff changeset
   421
	{
hgs
parents:
diff changeset
   422
	TAlfCanvasSetPolygonDrawModeParams params = {aPolygonDrawMode};
hgs
parents:
diff changeset
   423
    TPckgC<TAlfCanvasSetPolygonDrawModeParams> paramsPckg( params );                    
hgs
parents:
diff changeset
   424
    AppendCommand( EAlfCanvasSetPolygonDrawMode, paramsPckg );	
hgs
parents:
diff changeset
   425
	}
hgs
parents:
diff changeset
   426
void CAlfGc::SetTextAlign(TAlfAlignHorizontal aAlignHorizontal, TAlfAlignVertical aAlignVertical)
hgs
parents:
diff changeset
   427
	{
hgs
parents:
diff changeset
   428
	TAlfCanvasSetTextAlignParams params = {aAlignHorizontal, aAlignVertical};
hgs
parents:
diff changeset
   429
    TPckgC<TAlfCanvasSetTextAlignParams> paramsPckg( params );                    
hgs
parents:
diff changeset
   430
    AppendCommand( EAlfCanvasSetTextAlign, paramsPckg );	
hgs
parents:
diff changeset
   431
	}
hgs
parents:
diff changeset
   432
hgs
parents:
diff changeset
   433
    // Transformations
hgs
parents:
diff changeset
   434
void CAlfGc::LoadIdentity()
hgs
parents:
diff changeset
   435
	{
hgs
parents:
diff changeset
   436
	TAlfCanvasLoadIdentityParams params = {0};
hgs
parents:
diff changeset
   437
    TPckgC<TAlfCanvasLoadIdentityParams> paramsPckg( params );                    
hgs
parents:
diff changeset
   438
    AppendCommand( EAlfCanvasLoadIdentity, paramsPckg );
hgs
parents:
diff changeset
   439
	}
hgs
parents:
diff changeset
   440
	
hgs
parents:
diff changeset
   441
void CAlfGc::Translate(const TReal32& aX, const TReal32& aY, const TReal32& aZ)
hgs
parents:
diff changeset
   442
	{
hgs
parents:
diff changeset
   443
	TAlfCanvasTranslateParams params = {aX, aY, aZ};
hgs
parents:
diff changeset
   444
    TPckgC<TAlfCanvasTranslateParams> paramsPckg( params );                    
hgs
parents:
diff changeset
   445
    AppendCommand( EAlfCanvasTranslate, paramsPckg );        
hgs
parents:
diff changeset
   446
	}
hgs
parents:
diff changeset
   447
	
hgs
parents:
diff changeset
   448
void CAlfGc::Scale(const TReal32& aX, const TReal32& aY, const TReal32& aZ)
hgs
parents:
diff changeset
   449
	{
hgs
parents:
diff changeset
   450
	TAlfCanvasScaleParams params = {aX, aY, aZ};
hgs
parents:
diff changeset
   451
    TPckgC<TAlfCanvasScaleParams> paramsPckg( params );                    
hgs
parents:
diff changeset
   452
    AppendCommand( EAlfCanvasScale, paramsPckg );        
hgs
parents:
diff changeset
   453
	}
hgs
parents:
diff changeset
   454
	
hgs
parents:
diff changeset
   455
void CAlfGc::Rotate(const TReal32& aAngle, const TReal32& aX, const TReal32& aY, const TReal32& aZ)
hgs
parents:
diff changeset
   456
	{
hgs
parents:
diff changeset
   457
	TAlfCanvasRotateParams params = {aAngle, aX, aY, aZ};
hgs
parents:
diff changeset
   458
    TPckgC<TAlfCanvasRotateParams> paramsPckg( params );                    
hgs
parents:
diff changeset
   459
    AppendCommand( EAlfCanvasRotate, paramsPckg );        
hgs
parents:
diff changeset
   460
	}