uiacceltk/hitchcock/ServerCore/Src/alfbrushhandlers.cpp
changeset 0 15bf7259bb7c
equal deleted inserted replaced
-1:000000000000 0:15bf7259bb7c
       
     1 /*
       
     2 * Copyright (c) 2007 Nokia Corporation and/or its subsidiary(-ies). 
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:   All the built in brush handlers
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 #include "alf/alfbrushhandlers.h"
       
    21 #include "alf/alfconstants.h"
       
    22 #include "alf/alfserverutils.h"
       
    23 #include "alf/alfmetric.h"
       
    24 #include <uiacceltk/HuiBrush.h>
       
    25 #include <uiacceltk/HuiBorderBrush.h>
       
    26 #include <uiacceltk/HuiImageBrush.h>
       
    27 #include <uiacceltk/HuiDropShadowBrush.h>
       
    28 #include <uiacceltk/HuiShadowBorderBrush.h>
       
    29 #include <uiacceltk/HuiGradientBrush.h>
       
    30 #include <uiacceltk/huiframebrush.h>
       
    31 #include <uiacceltk/HuiUtil.h>
       
    32 
       
    33 // ======== MEMBER FUNCTIONS ========
       
    34 
       
    35 // ---------------------------------------------------------------------------
       
    36 // ?description_if_needed
       
    37 // ---------------------------------------------------------------------------
       
    38 //
       
    39 EXPORT_C CAlfBrushHandler::CAlfBrushHandler(MAlfInterfaceProvider& aResolver)
       
    40  : iResolver( aResolver ), iOwnsBrush(ETrue)
       
    41     {
       
    42     }
       
    43 
       
    44 
       
    45 // ---------------------------------------------------------------------------
       
    46 // ?description_if_needed
       
    47 // ---------------------------------------------------------------------------
       
    48 //
       
    49 EXPORT_C void CAlfBrushHandler::ConstructL( CHuiBrush* aBrush )
       
    50     {
       
    51     if (!aBrush)
       
    52         {
       
    53         // the child class needs to provide the brush instance.
       
    54         USER_INVARIANT();        
       
    55         }
       
    56     else 
       
    57         {
       
    58         iBrush = aBrush;    
       
    59         }
       
    60     }
       
    61 
       
    62 
       
    63 // ---------------------------------------------------------------------------
       
    64 // ?description_if_needed
       
    65 // ---------------------------------------------------------------------------
       
    66 //
       
    67 EXPORT_C CAlfBrushHandler::~CAlfBrushHandler()
       
    68     {
       
    69     if ( iOwnsBrush )
       
    70         {
       
    71         delete iBrush;
       
    72         }
       
    73     iBrush = NULL;
       
    74     }
       
    75 
       
    76 // ---------------------------------------------------------------------------
       
    77 // From class ?base_class.
       
    78 // ?implementation_description
       
    79 // ---------------------------------------------------------------------------
       
    80 //
       
    81 EXPORT_C void CAlfBrushHandler::Release()
       
    82     {
       
    83     delete this;
       
    84     }
       
    85  
       
    86 // ---------------------------------------------------------------------------
       
    87 // From class ?base_class.
       
    88 // ?implementation_description
       
    89 // ---------------------------------------------------------------------------
       
    90 //   
       
    91 EXPORT_C TAny* CAlfBrushHandler::GetInterface(
       
    92     const THuiInterfaceSupport& aInterface)
       
    93     {
       
    94     switch ( aInterface ) 
       
    95         {
       
    96         case EHuiObjectTypeBrush:
       
    97             return iBrush;
       
    98         case EAlfBrushHandler:
       
    99             return this;
       
   100         
       
   101         default:
       
   102             return NULL;          
       
   103         }
       
   104     }
       
   105    
       
   106 // ---------------------------------------------------------------------------
       
   107 // From class ?base_class.
       
   108 // ?implementation_description
       
   109 // ---------------------------------------------------------------------------
       
   110 // 
       
   111 EXPORT_C void CAlfBrushHandler::HandleCmdL(
       
   112     TInt aCommandId, 
       
   113     const TDesC8& aInputBuffer, 
       
   114     TDes8& aResponse)
       
   115     {
       
   116     switch (aCommandId)
       
   117         {
       
   118         case EAlfBrushGetOpacity:
       
   119             {
       
   120             TAlfTimedValue opacity;
       
   121             AlfTimedValueUtility::CopyTimedValue(iBrush->iOpacity, opacity);
       
   122             TPckg<TAlfTimedValue> resultPckg(opacity);
       
   123             
       
   124             aResponse = resultPckg; // awkward   
       
   125             break;
       
   126             }
       
   127         case EAlfBrushSetOpacity:
       
   128             {
       
   129             TAlfTimedValue* opacity = (TAlfTimedValue*) aInputBuffer.Ptr() ;
       
   130             AlfTimedValueUtility::CopyTimedValue(*opacity, iBrush->iOpacity, iResolver);            
       
   131             break;
       
   132             }
       
   133             
       
   134         case EAlfBrushSetLayer:
       
   135             {
       
   136             THuiBrushLayer* layer = (THuiBrushLayer*) aInputBuffer.Ptr() ;
       
   137             iBrush->SetLayer( *layer );
       
   138             break;
       
   139             }
       
   140         case EAlfBrushClipToVisual:
       
   141             {
       
   142             TBool clip = iBrush->ClipToVisual();
       
   143             TPckg<TBool> resultPckg(clip);            
       
   144             aResponse = resultPckg; // awkward   
       
   145             break;
       
   146             }
       
   147         case EAlfBrushSetClipToVisual:
       
   148             {
       
   149             TBool* clip = (TBool*) aInputBuffer.Ptr() ;
       
   150             iBrush->SetClipToVisual(*clip);
       
   151             break;
       
   152             }
       
   153             
       
   154         default:
       
   155             User::Leave(KErrNotSupported);
       
   156         }
       
   157     }
       
   158 
       
   159 // ---------------------------------------------------------------------------
       
   160 // New method
       
   161 // ?implementation_description
       
   162 // ---------------------------------------------------------------------------
       
   163 //     
       
   164 EXPORT_C void CAlfBrushHandler::SetOwnership(TBool aHolderOwnsBrush)
       
   165     {
       
   166     iOwnsBrush = aHolderOwnsBrush;
       
   167     }
       
   168  
       
   169 EXPORT_C void CAlfBrushHandler::BrushHandlerExtension(const TUid& /*aExtensionUid*/, TAny** /*aExtensionParams*/)
       
   170     {
       
   171     
       
   172     }
       
   173  
       
   174  
       
   175  
       
   176 // ---------------------------------------------------------------------------
       
   177 // ?description_if_needed
       
   178 // ---------------------------------------------------------------------------
       
   179 //
       
   180 EXPORT_C CAlfBorderBrushHandler::CAlfBorderBrushHandler(
       
   181     MAlfInterfaceProvider& aResolver)
       
   182 : CAlfBrushHandler( aResolver ) 
       
   183     {
       
   184     }
       
   185 
       
   186 
       
   187 // ---------------------------------------------------------------------------
       
   188 // ?description_if_needed
       
   189 // ---------------------------------------------------------------------------
       
   190 //
       
   191 EXPORT_C void CAlfBorderBrushHandler::ConstructL( 
       
   192     CHuiBrush* aBrush,
       
   193     TAlfXYMetric aThickness, 
       
   194     TAlfXYMetric aEdgeOffset)
       
   195     {
       
   196     if (!aBrush)
       
   197         {
       
   198         THuiXYMetric huiThickness;
       
   199         THuiXYMetric huiEdgeOffset;        
       
   200         AlfXYMetricUtility::CopyMetric(aThickness, huiThickness);
       
   201         AlfXYMetricUtility::CopyMetric(aEdgeOffset, huiEdgeOffset);
       
   202         
       
   203         CHuiBorderBrush* borderBrush = CHuiBorderBrush::NewLC( 
       
   204             huiThickness, huiEdgeOffset);
       
   205         CAlfBrushHandler::ConstructL( borderBrush );
       
   206         CleanupStack::Pop( borderBrush );
       
   207         }
       
   208     else 
       
   209         {
       
   210         CAlfBrushHandler::ConstructL( aBrush );
       
   211         }
       
   212     }
       
   213 
       
   214 
       
   215 // ---------------------------------------------------------------------------
       
   216 // ?description_if_needed
       
   217 // ---------------------------------------------------------------------------
       
   218 //
       
   219 EXPORT_C MAlfExtension* CAlfBorderBrushHandler::NewL( 
       
   220     MAlfInterfaceProvider& aResolver,
       
   221     TAlfXYMetric aThickness, 
       
   222     TAlfXYMetric aEdgeOffset)
       
   223     {
       
   224     CAlfBorderBrushHandler* self = new( ELeave ) CAlfBorderBrushHandler( aResolver );
       
   225     CleanupStack::PushL( self );
       
   226     self->ConstructL(
       
   227         NULL,
       
   228         aThickness,
       
   229         aEdgeOffset );
       
   230     CleanupStack::Pop( self );
       
   231     return self;
       
   232     }
       
   233 
       
   234 // ---------------------------------------------------------------------------
       
   235 // ?description_if_needed
       
   236 // ---------------------------------------------------------------------------
       
   237 //
       
   238 EXPORT_C void CAlfBorderBrushHandler::ConstructL( 
       
   239     CHuiBrush* aBrush,
       
   240     TInt aThicknessWidth, 
       
   241     TInt aThicknessHeight,
       
   242     TInt aEdgeOffsetX, 
       
   243     TInt aEdgeOffsetY )
       
   244     {
       
   245     if (!aBrush)
       
   246         {
       
   247         CHuiBorderBrush* borderBrush = CHuiBorderBrush::NewLC( 
       
   248             aThicknessWidth,
       
   249             aThicknessHeight,
       
   250             aEdgeOffsetX,
       
   251             aEdgeOffsetY);
       
   252         CAlfBrushHandler::ConstructL( borderBrush );
       
   253         CleanupStack::Pop( borderBrush );
       
   254         }
       
   255     else 
       
   256         {
       
   257         CAlfBrushHandler::ConstructL( aBrush );
       
   258         }
       
   259     }
       
   260 
       
   261 
       
   262 // ---------------------------------------------------------------------------
       
   263 // ?description_if_needed
       
   264 // ---------------------------------------------------------------------------
       
   265 //
       
   266 EXPORT_C MAlfExtension* CAlfBorderBrushHandler::NewL( 
       
   267     MAlfInterfaceProvider& aResolver,
       
   268     TInt aThicknessWidth, 
       
   269     TInt aThicknessHeight,
       
   270     TInt aEdgeOffsetX, 
       
   271     TInt aEdgeOffsetY )
       
   272     {
       
   273     CAlfBorderBrushHandler* self = new( ELeave ) CAlfBorderBrushHandler( aResolver );
       
   274     CleanupStack::PushL( self );
       
   275     self->ConstructL(
       
   276         NULL,
       
   277         aThicknessWidth,
       
   278         aThicknessHeight,
       
   279         aEdgeOffsetX,
       
   280         aEdgeOffsetY );
       
   281     CleanupStack::Pop( self );
       
   282     return self;
       
   283     }
       
   284 
       
   285 
       
   286 // ---------------------------------------------------------------------------
       
   287 // ?description_if_needed
       
   288 // ---------------------------------------------------------------------------
       
   289 //
       
   290 EXPORT_C CAlfBorderBrushHandler::~CAlfBorderBrushHandler()
       
   291     {
       
   292     }
       
   293 
       
   294 
       
   295 
       
   296 // ---------------------------------------------------------------------------
       
   297 // From class ?base_class.
       
   298 // ?implementation_description
       
   299 // ---------------------------------------------------------------------------
       
   300 //
       
   301 EXPORT_C void CAlfBorderBrushHandler::Release()
       
   302     {
       
   303     delete this;
       
   304     }
       
   305  
       
   306 // ---------------------------------------------------------------------------
       
   307 // From class ?base_class.
       
   308 // ?implementation_description
       
   309 // ---------------------------------------------------------------------------
       
   310 //   
       
   311 EXPORT_C TAny* CAlfBorderBrushHandler::GetInterface(
       
   312     const THuiInterfaceSupport& aInterface)
       
   313     {
       
   314     return CAlfBrushHandler::GetInterface(aInterface);   
       
   315     }
       
   316    
       
   317 // ---------------------------------------------------------------------------
       
   318 // From class ?base_class.
       
   319 // ?implementation_description
       
   320 // ---------------------------------------------------------------------------
       
   321 // 
       
   322 EXPORT_C void CAlfBorderBrushHandler::HandleCmdL(
       
   323     TInt aCommandId, 
       
   324     const TDesC8& aInputBuffer, 
       
   325     TDes8& aResponse)
       
   326     {
       
   327     CHuiBorderBrush* borderBrush = static_cast<CHuiBorderBrush*>(iBrush);
       
   328     
       
   329     switch (aCommandId)
       
   330         {
       
   331         case EAlfBorderBrushSetImage:
       
   332             {
       
   333             TAlfImageParams* params = (TAlfImageParams*) aInputBuffer.Ptr();
       
   334         	
       
   335             // Todo: is is safe enough to handle textures as direct casts..
       
   336         	TInt handle = params->iTextureHandle;
       
   337         	MHuiTexture* texture = reinterpret_cast<MHuiTexture*>(handle);
       
   338    	        THuiImage huiImage;
       
   339    	        if (texture)
       
   340    	            {
       
   341    	            huiImage = THuiImage(*texture, 
       
   342 	                params->iTl.iX.ValueNow(),
       
   343 	                params->iTl.iY.ValueNow(),
       
   344 	                params->iBr.iX.ValueNow(),
       
   345 	                params->iBr.iY.ValueNow());    
       
   346    	            
       
   347     	        // We take transition time from one, assuming it is same for everyone.
       
   348     	        TInt transitionTime = params->iBr.iY.TimeToTargetinMilliSeconds();
       
   349     	        
       
   350     	        huiImage.SetTexCoords(params->iTl.iX.Target(),
       
   351     	            params->iTl.iY.Target(),
       
   352     	            params->iBr.iX.Target(),
       
   353     	            params->iBr.iY.Target(),
       
   354     	            transitionTime );
       
   355    	            }
       
   356 	            
       
   357 	        borderBrush->SetImage( huiImage );
       
   358             break;
       
   359             }
       
   360             
       
   361         case EAlfBorderBrushSetColor:
       
   362             {
       
   363             TRgb* color = (TRgb*) aInputBuffer.Ptr();
       
   364             borderBrush->SetColor( *color );
       
   365             break;
       
   366             }
       
   367             
       
   368         case EAlfBorderBrushSetThickness:
       
   369             {
       
   370             TAlfTimedPoint* value = (TAlfTimedPoint*) aInputBuffer.Ptr();
       
   371             AlfTimedPointUtility::CopyTimedPoint(*value, borderBrush->iThickness, iResolver);            
       
   372             break;
       
   373             }
       
   374         case EAlfBorderBrushSetThicknessMetric:
       
   375             {
       
   376             TAlfXYMetric* value = (TAlfXYMetric*) aInputBuffer.Ptr();
       
   377             THuiXYMetric huivalue;
       
   378             AlfXYMetricUtility::CopyMetric(*value, huivalue);            
       
   379             borderBrush->SetThickness(huivalue);
       
   380             break;
       
   381             }
       
   382             
       
   383         case EAlfBorderBrushGetThickness:
       
   384             {
       
   385             TAlfTimedPoint value;
       
   386             AlfTimedPointUtility::CopyTimedPoint(borderBrush->iThickness, value);
       
   387             TPckg<TAlfTimedPoint> resultPckg(value);            
       
   388             aResponse = resultPckg; 
       
   389             break;
       
   390             }
       
   391             
       
   392         case EAlfBorderBrushSetEdgeOffset:
       
   393             {
       
   394             TAlfTimedPoint* value = (TAlfTimedPoint*) aInputBuffer.Ptr();
       
   395             AlfTimedPointUtility::CopyTimedPoint(*value, borderBrush->iEdgeOffset, iResolver);            
       
   396             break;
       
   397             }
       
   398         case EAlfBorderBrushSetEdgeOffsetMetric:
       
   399             {
       
   400             TAlfXYMetric* value = (TAlfXYMetric*) aInputBuffer.Ptr();
       
   401             THuiXYMetric huivalue;
       
   402             AlfXYMetricUtility::CopyMetric(*value, huivalue);            
       
   403             borderBrush->SetEdgeOffset(huivalue);
       
   404             break;
       
   405             }
       
   406             
       
   407         case EAlfBorderBrushGetEdgeOffset:
       
   408             {
       
   409             TAlfTimedPoint value;
       
   410             AlfTimedPointUtility::CopyTimedPoint(borderBrush->iEdgeOffset, value);
       
   411             TPckg<TAlfTimedPoint> resultPckg(value);            
       
   412             aResponse = resultPckg; 
       
   413             break;
       
   414             }
       
   415             
       
   416         case EAlfBorderBrushSetImageOffset:
       
   417             {
       
   418             TAlfTimedPoint* value = (TAlfTimedPoint*) aInputBuffer.Ptr();
       
   419             AlfTimedPointUtility::CopyTimedPoint(*value, borderBrush->iImageOffset, iResolver);            
       
   420             break;
       
   421             }
       
   422         case EAlfBorderBrushSetImageOffsetMetric:
       
   423             {
       
   424             TAlfXYMetric* value = (TAlfXYMetric*) aInputBuffer.Ptr();
       
   425             THuiXYMetric huivalue;
       
   426             AlfXYMetricUtility::CopyMetric(*value, huivalue);            
       
   427             borderBrush->SetImageOffset(huivalue);
       
   428             break;
       
   429             }
       
   430             
       
   431         case EAlfBorderBrushGetImageOffset:
       
   432             {
       
   433             TAlfTimedPoint value;
       
   434             AlfTimedPointUtility::CopyTimedPoint(borderBrush->iImageOffset, value);
       
   435             TPckg<TAlfTimedPoint> resultPckg(value);            
       
   436             aResponse = resultPckg; 
       
   437             break;
       
   438             }
       
   439             
       
   440         default:
       
   441             CAlfBrushHandler::HandleCmdL(aCommandId, aInputBuffer, aResponse);
       
   442         }
       
   443     }
       
   444 
       
   445 EXPORT_C void CAlfBorderBrushHandler::BrushHandlerExtension(const TUid& aExtensionUid, TAny** aExtensionParams)
       
   446     {
       
   447     CAlfBrushHandler::BrushHandlerExtension(aExtensionUid, aExtensionParams);
       
   448     }
       
   449 
       
   450 
       
   451 // ---------------------------------------------------------------------------
       
   452 // ?description_if_needed
       
   453 // ---------------------------------------------------------------------------
       
   454 //
       
   455 EXPORT_C CAlfImageBrushHandler::CAlfImageBrushHandler(
       
   456     MAlfInterfaceProvider& aResolver)
       
   457 : CAlfBrushHandler( aResolver ) 
       
   458     {
       
   459     }
       
   460 
       
   461 
       
   462 // ---------------------------------------------------------------------------
       
   463 // ?description_if_needed
       
   464 // ---------------------------------------------------------------------------
       
   465 //
       
   466 EXPORT_C void CAlfImageBrushHandler::ConstructL( 
       
   467     CHuiBrush* aBrush, THuiImage aImage)
       
   468     {
       
   469     if (!aBrush)
       
   470         {
       
   471         CHuiImageBrush* imageBrush = CHuiImageBrush::NewLC(aImage);
       
   472         CAlfBrushHandler::ConstructL( imageBrush );
       
   473         CleanupStack::Pop( imageBrush );
       
   474         }
       
   475     else 
       
   476         {
       
   477         CAlfBrushHandler::ConstructL( aBrush );
       
   478         }
       
   479     }
       
   480 
       
   481 
       
   482 // ---------------------------------------------------------------------------
       
   483 // ?description_if_needed
       
   484 // ---------------------------------------------------------------------------
       
   485 //
       
   486 EXPORT_C MAlfExtension* CAlfImageBrushHandler::NewL( 
       
   487     MAlfInterfaceProvider& aResolver, THuiImage aImage )
       
   488     {
       
   489     CAlfImageBrushHandler* self = new( ELeave ) CAlfImageBrushHandler( aResolver );
       
   490     CleanupStack::PushL( self );
       
   491     self->ConstructL( NULL , aImage );
       
   492     CleanupStack::Pop( self );
       
   493     return self;
       
   494     }
       
   495 
       
   496 
       
   497 // ---------------------------------------------------------------------------
       
   498 // ?description_if_needed
       
   499 // ---------------------------------------------------------------------------
       
   500 //
       
   501 EXPORT_C CAlfImageBrushHandler::~CAlfImageBrushHandler()
       
   502     {
       
   503     }
       
   504 
       
   505 
       
   506 // ---------------------------------------------------------------------------
       
   507 // From class ?base_class.
       
   508 // ?implementation_description
       
   509 // ---------------------------------------------------------------------------
       
   510 //
       
   511 EXPORT_C void CAlfImageBrushHandler::Release()
       
   512     {
       
   513     delete this;
       
   514     }
       
   515  
       
   516 // ---------------------------------------------------------------------------
       
   517 // From class ?base_class.
       
   518 // ?implementation_description
       
   519 // ---------------------------------------------------------------------------
       
   520 //   
       
   521 EXPORT_C TAny* CAlfImageBrushHandler::GetInterface(
       
   522     const THuiInterfaceSupport& aInterface)
       
   523     {
       
   524     return CAlfBrushHandler::GetInterface(aInterface);   
       
   525     }
       
   526    
       
   527 // ---------------------------------------------------------------------------
       
   528 // From class ?base_class.
       
   529 // ?implementation_description
       
   530 // ---------------------------------------------------------------------------
       
   531 // 
       
   532 EXPORT_C void CAlfImageBrushHandler::HandleCmdL(
       
   533     TInt aCommandId, 
       
   534     const TDesC8& aInputBuffer, 
       
   535     TDes8& aResponse)
       
   536     {
       
   537     CHuiImageBrush* imageBrush = static_cast<CHuiImageBrush*>(iBrush);
       
   538     
       
   539     switch (aCommandId)
       
   540         {
       
   541         case EAlfImageBrushSetBorders:
       
   542             {
       
   543             TAlfImageBrushParams* params = (TAlfImageBrushParams*) aInputBuffer.Ptr();
       
   544             imageBrush->SetBorders(params->iLeftBorderWidth, 
       
   545                 params->iRightBorderWidth, 
       
   546                 params->iTopBorderWidth, 
       
   547                 params->iBottomBorderWidth);
       
   548             break;
       
   549             }
       
   550         case EAlfImageBrushSetImage:
       
   551             {
       
   552             TAlfImageBrushParams* params = (TAlfImageBrushParams*) aInputBuffer.Ptr();
       
   553             MHuiTexture* texture = reinterpret_cast<MHuiTexture*> (params->iTextureHandle);
       
   554    	        THuiImage huiImage;
       
   555    	        if (texture)
       
   556    	            {
       
   557    	            huiImage.SetTexture(*texture);
       
   558    	            
       
   559    	            huiImage.SetTexCoords(params->iTl.iX.Target(),
       
   560                                    params->iTl.iY.Target(),
       
   561                                    params->iBr.iX.Target(),
       
   562                                    params->iBr.iY.Target());
       
   563    	            }
       
   564 
       
   565             imageBrush->SetImage(huiImage);
       
   566             imageBrush->SetBorders(params->iLeftBorderWidth, 
       
   567                     params->iRightBorderWidth, 
       
   568                     params->iTopBorderWidth,
       
   569                     params->iBottomBorderWidth);
       
   570             break;
       
   571             }
       
   572             
       
   573         case EAlfImageBrushSetScaleMode:
       
   574             {
       
   575             CHuiImageVisual::TScaleMode* scale = (CHuiImageVisual::TScaleMode*) aInputBuffer.Ptr() ;
       
   576             imageBrush->SetScaleMode( *scale );
       
   577             break;
       
   578             }
       
   579             
       
   580         case EAlfImageBrushSetScale:
       
   581             {
       
   582             TAlfTimedValue* scale = (TAlfTimedValue*) aInputBuffer.Ptr() ;
       
   583             AlfTimedValueUtility::CopyTimedValue(*scale, imageBrush->iScale, iResolver);  
       
   584             break;
       
   585             }
       
   586             
       
   587         case EAlfImageBrushScale:
       
   588             {
       
   589             TAlfTimedValue scale;
       
   590             AlfTimedValueUtility::CopyTimedValue(imageBrush->iScale, scale);
       
   591             TPckg<TAlfTimedValue> resultPckg(scale);
       
   592             aResponse = resultPckg;
       
   593             break;
       
   594             }
       
   595             
       
   596         case EAlfImageBrushSetOffset:
       
   597             {
       
   598             TAlfTimedPoint* offset = (TAlfTimedPoint*) aInputBuffer.Ptr();
       
   599             AlfTimedPointUtility::CopyTimedPoint(*offset, imageBrush->iImageOffset, iResolver); 
       
   600             break;
       
   601             }
       
   602             
       
   603         case EAlfImageBrushOffset:
       
   604             {
       
   605             TAlfTimedPoint point;
       
   606             AlfTimedPointUtility::CopyTimedPoint(imageBrush->iImageOffset, point);
       
   607             TPckg<TAlfTimedPoint> buf(point);
       
   608             aResponse = buf;
       
   609             break;
       
   610             }
       
   611             
       
   612         default:
       
   613             CAlfBrushHandler::HandleCmdL(aCommandId, aInputBuffer, aResponse);
       
   614         }
       
   615     }
       
   616 
       
   617 EXPORT_C void CAlfImageBrushHandler::BrushHandlerExtension(const TUid& aExtensionUid, TAny** aExtensionParams)
       
   618     {
       
   619     CAlfBrushHandler::BrushHandlerExtension(aExtensionUid, aExtensionParams);
       
   620     }
       
   621 
       
   622 
       
   623 
       
   624 // SHADOW BORDER BRUSH HANDLER
       
   625 
       
   626 EXPORT_C MAlfExtension* CAlfShadowBorderBrushHandler::NewL( 
       
   627         MAlfInterfaceProvider& aResolver,
       
   628         TInt aWidth )
       
   629     {
       
   630     CAlfShadowBorderBrushHandler* self = new( ELeave ) CAlfShadowBorderBrushHandler( aResolver );
       
   631     CleanupStack::PushL( self );
       
   632     self->ConstructL(
       
   633         NULL,
       
   634         aWidth );
       
   635     CleanupStack::Pop( self );
       
   636     return self;
       
   637     }
       
   638     
       
   639 EXPORT_C CAlfShadowBorderBrushHandler::CAlfShadowBorderBrushHandler(
       
   640     MAlfInterfaceProvider& aResolver )
       
   641     : CAlfBrushHandler( aResolver )
       
   642     {
       
   643     }
       
   644     
       
   645 EXPORT_C void CAlfShadowBorderBrushHandler::ConstructL( 
       
   646         CHuiBrush* aBrush,
       
   647         TInt aWidth)
       
   648     {
       
   649     if (!aBrush)
       
   650         {
       
   651         CHuiShadowBorderBrush* shadowBorderBrush = CHuiShadowBorderBrush::NewLC( 
       
   652            aWidth );
       
   653         CAlfBrushHandler::ConstructL( shadowBorderBrush );
       
   654         CleanupStack::Pop( shadowBorderBrush );
       
   655         }
       
   656     else 
       
   657         {
       
   658         CAlfBrushHandler::ConstructL( aBrush );
       
   659         }
       
   660     }
       
   661 
       
   662 EXPORT_C MAlfExtension* CAlfShadowBorderBrushHandler::NewL( 
       
   663         MAlfInterfaceProvider& aResolver,
       
   664         TAlfMetric aWidth )
       
   665     {    
       
   666     CAlfShadowBorderBrushHandler* self = new( ELeave ) CAlfShadowBorderBrushHandler( aResolver );
       
   667     CleanupStack::PushL( self );
       
   668     self->ConstructL(
       
   669         NULL,
       
   670         aWidth );
       
   671     CleanupStack::Pop( self );  
       
   672     return self;
       
   673     }
       
   674         
       
   675 EXPORT_C void CAlfShadowBorderBrushHandler::ConstructL( 
       
   676         CHuiBrush* aBrush,
       
   677         TAlfMetric aWidth)
       
   678     {
       
   679     if (!aBrush)
       
   680         {
       
   681         THuiMetric huiWidth;
       
   682         AlfMetricUtility::CopyMetric(aWidth, huiWidth);
       
   683         CHuiShadowBorderBrush* shadowBorderBrush = CHuiShadowBorderBrush::NewLC( 
       
   684            huiWidth );
       
   685         CAlfBrushHandler::ConstructL( shadowBorderBrush );
       
   686         CleanupStack::Pop( shadowBorderBrush );
       
   687         }
       
   688     else 
       
   689         {
       
   690         CAlfBrushHandler::ConstructL( aBrush );
       
   691         }
       
   692     }
       
   693     
       
   694 EXPORT_C CAlfShadowBorderBrushHandler::~CAlfShadowBorderBrushHandler()
       
   695     {
       
   696     }
       
   697    
       
   698     
       
   699 EXPORT_C void CAlfShadowBorderBrushHandler::Release()
       
   700     {
       
   701     delete this;
       
   702     }
       
   703     
       
   704 EXPORT_C TAny* CAlfShadowBorderBrushHandler::GetInterface(
       
   705     const THuiInterfaceSupport& aInterface)
       
   706     {
       
   707     return CAlfBrushHandler::GetInterface( aInterface );
       
   708     }
       
   709     
       
   710 EXPORT_C void CAlfShadowBorderBrushHandler::HandleCmdL(
       
   711     TInt aCommandId, const TDesC8& aInputBuffer, TDes8& aResponse)
       
   712     {
       
   713     CHuiShadowBorderBrush* shadowBorderBrush = static_cast<CHuiShadowBorderBrush*>(iBrush);
       
   714     
       
   715     switch ( aCommandId )
       
   716         {
       
   717         case EAlfShadowBorderBrushGetWidth:
       
   718             {
       
   719             TAlfTimedValue value;
       
   720             AlfTimedValueUtility::CopyTimedValue(shadowBorderBrush->iWidth, value);
       
   721 
       
   722             TPckg<TAlfTimedValue> resultPckg(value);
       
   723             aResponse = resultPckg; // awkward  
       
   724             break;
       
   725             }
       
   726             
       
   727         case EAlfShadowBorderBrushSetWidth:
       
   728             {
       
   729             TAlfTimedValue* value = (TAlfTimedValue*) aInputBuffer.Ptr() ;
       
   730             AlfTimedValueUtility::CopyTimedValue(*value, shadowBorderBrush->iWidth, iResolver);            
       
   731             break;
       
   732             }
       
   733 
       
   734         case EAlfShadowBorderBrushSetWidthMetric:
       
   735             {
       
   736             TAlfMetric* value = (TAlfMetric*) aInputBuffer.Ptr() ;
       
   737             THuiMetric huivalue;
       
   738             AlfMetricUtility::CopyMetric(*value, huivalue);            
       
   739             shadowBorderBrush->SetWidth(huivalue);
       
   740             break;
       
   741             }            
       
   742         default:
       
   743             CAlfBrushHandler::HandleCmdL( aCommandId, aInputBuffer, aResponse );
       
   744         }
       
   745     }
       
   746 
       
   747 EXPORT_C void CAlfShadowBorderBrushHandler::BrushHandlerExtension(const TUid& aExtensionUid, TAny** aExtensionParams)
       
   748     {
       
   749     CAlfBrushHandler::BrushHandlerExtension(aExtensionUid, aExtensionParams);
       
   750     }
       
   751     
       
   752 // DROP SHADOW BRUSH HANDLER  
       
   753     
       
   754 EXPORT_C MAlfExtension* CAlfDropShadowBrushHandler::NewL( 
       
   755         MAlfInterfaceProvider& aResolver,
       
   756         TInt aDepth )
       
   757     {
       
   758     CAlfDropShadowBrushHandler* self = new( ELeave ) CAlfDropShadowBrushHandler( aResolver );
       
   759     CleanupStack::PushL( self );
       
   760     self->ConstructL(
       
   761         NULL,
       
   762         aDepth );
       
   763     CleanupStack::Pop( self );
       
   764     return self;
       
   765     }
       
   766 
       
   767 EXPORT_C MAlfExtension* CAlfDropShadowBrushHandler::NewL( 
       
   768         MAlfInterfaceProvider& aResolver,
       
   769         TAlfMetric aDepth )
       
   770     {
       
   771     CAlfDropShadowBrushHandler* self = new( ELeave ) CAlfDropShadowBrushHandler( aResolver );
       
   772     CleanupStack::PushL( self );
       
   773     self->ConstructL(
       
   774         NULL,
       
   775         aDepth );
       
   776     CleanupStack::Pop( self );
       
   777     return self;
       
   778     }
       
   779     
       
   780 EXPORT_C CAlfDropShadowBrushHandler::CAlfDropShadowBrushHandler(
       
   781     MAlfInterfaceProvider& aResolver)
       
   782     : CAlfBrushHandler( aResolver )
       
   783     {
       
   784     }
       
   785     
       
   786 EXPORT_C void CAlfDropShadowBrushHandler::ConstructL( 
       
   787         CHuiBrush* aBrush,
       
   788         TAlfMetric aDepth )
       
   789     {
       
   790     if (!aBrush)
       
   791         {
       
   792         THuiMetric huiDepth;
       
   793         AlfMetricUtility::CopyMetric(aDepth, huiDepth);
       
   794         CHuiDropShadowBrush* dropShadowBrush = CHuiDropShadowBrush::NewLC( 
       
   795            huiDepth );
       
   796         CAlfBrushHandler::ConstructL( dropShadowBrush );
       
   797         CleanupStack::Pop( dropShadowBrush );
       
   798         }
       
   799     else 
       
   800         {
       
   801         CAlfBrushHandler::ConstructL( aBrush );
       
   802         }
       
   803     }
       
   804 
       
   805 EXPORT_C void CAlfDropShadowBrushHandler::ConstructL( 
       
   806         CHuiBrush* aBrush,
       
   807         TInt aDepth )
       
   808     {
       
   809     if (!aBrush)
       
   810         {
       
   811         CHuiDropShadowBrush* dropShadowBrush = CHuiDropShadowBrush::NewLC( 
       
   812            aDepth );
       
   813         CAlfBrushHandler::ConstructL( dropShadowBrush );
       
   814         CleanupStack::Pop( dropShadowBrush );
       
   815         }
       
   816     else 
       
   817         {
       
   818         CAlfBrushHandler::ConstructL( aBrush );
       
   819         }
       
   820     }
       
   821     
       
   822 EXPORT_C CAlfDropShadowBrushHandler::~CAlfDropShadowBrushHandler()
       
   823     {
       
   824     }
       
   825 
       
   826     
       
   827 EXPORT_C void CAlfDropShadowBrushHandler::Release()
       
   828     {
       
   829     delete this;
       
   830     }
       
   831     
       
   832 EXPORT_C TAny* CAlfDropShadowBrushHandler::GetInterface(
       
   833     const THuiInterfaceSupport& aInterface)
       
   834     {
       
   835     return CAlfBrushHandler::GetInterface( aInterface );
       
   836     }
       
   837     
       
   838 EXPORT_C void CAlfDropShadowBrushHandler::HandleCmdL(
       
   839     TInt aCommandId, const TDesC8& aInputBuffer, TDes8& aResponse)
       
   840     {
       
   841     CHuiDropShadowBrush* dropShadowBrush = static_cast<CHuiDropShadowBrush*>(iBrush);
       
   842     
       
   843     switch ( aCommandId )
       
   844         {
       
   845         case EAlfDropShadowBrushGetSoftness:
       
   846             {
       
   847             TAlfTimedValue value;
       
   848             AlfTimedValueUtility::CopyTimedValue(dropShadowBrush->iSoftness, value);
       
   849             TPckg<TAlfTimedValue> resultPckg(value);
       
   850             aResponse = resultPckg; // awkward  
       
   851             break;
       
   852             }
       
   853             
       
   854         case EAlfDropShadowBrushSetSoftness:
       
   855             {
       
   856             TAlfTimedValue* value = (TAlfTimedValue*) aInputBuffer.Ptr() ;
       
   857             AlfTimedValueUtility::CopyTimedValue(*value, dropShadowBrush->iSoftness, iResolver);            
       
   858             break;
       
   859             }
       
   860         case EAlfDropShadowBrushSetSoftnessMetric:
       
   861             {
       
   862             TAlfMetric* value = (TAlfMetric*) aInputBuffer.Ptr() ;
       
   863             THuiMetric huivalue;
       
   864             AlfMetricUtility::CopyMetric(*value, huivalue);            
       
   865             dropShadowBrush->SetSoftness(huivalue);
       
   866             break;
       
   867             }
       
   868             
       
   869         case EAlfDropShadowBrushGetDepth:
       
   870             {
       
   871             TAlfTimedValue value;
       
   872             AlfTimedValueUtility::CopyTimedValue(dropShadowBrush->iDepth, value);
       
   873 
       
   874             TPckg<TAlfTimedValue> resultPckg(value);
       
   875             aResponse = resultPckg; // awkward  
       
   876             break;
       
   877             }
       
   878             
       
   879         case EAlfDropShadowBrushSetDepth:
       
   880             {
       
   881             TAlfTimedValue* value = (TAlfTimedValue*) aInputBuffer.Ptr() ;
       
   882             AlfTimedValueUtility::CopyTimedValue(*value, dropShadowBrush->iDepth, iResolver);            
       
   883             break;
       
   884             }
       
   885         case EAlfDropShadowBrushSetDepthMetric:
       
   886             {
       
   887             TAlfMetric* value = (TAlfMetric*) aInputBuffer.Ptr() ;
       
   888             THuiMetric huivalue;
       
   889             AlfMetricUtility::CopyMetric(*value, huivalue);            
       
   890             dropShadowBrush->SetDepth(huivalue);
       
   891             break;
       
   892             }
       
   893         case EAlfDropShadowBrushSetColor:
       
   894             {
       
   895             TRgb* value = (TRgb*) aInputBuffer.Ptr() ;
       
   896             dropShadowBrush->SetColor(*value);
       
   897             break;
       
   898             }
       
   899         default:
       
   900             CAlfBrushHandler::HandleCmdL( aCommandId, aInputBuffer, aResponse );
       
   901         }
       
   902     }
       
   903 
       
   904 EXPORT_C void CAlfDropShadowBrushHandler::BrushHandlerExtension(const TUid& aExtensionUid, TAny** aExtensionParams)
       
   905     {
       
   906     CAlfBrushHandler::BrushHandlerExtension(aExtensionUid, aExtensionParams);
       
   907     }
       
   908 
       
   909 
       
   910     
       
   911 // GRADIENT BRUSH HANDLER  
       
   912     
       
   913 EXPORT_C MAlfExtension* CAlfGradientBrushHandler::NewL( 
       
   914         MAlfInterfaceProvider& aResolver )
       
   915     {
       
   916     CAlfGradientBrushHandler* self = new( ELeave ) CAlfGradientBrushHandler( aResolver );
       
   917     CleanupStack::PushL( self );
       
   918     self->ConstructL( NULL );
       
   919     CleanupStack::Pop( self );
       
   920     return self;
       
   921     }
       
   922     
       
   923 EXPORT_C CAlfGradientBrushHandler::CAlfGradientBrushHandler(
       
   924     MAlfInterfaceProvider& aResolver)
       
   925     : CAlfBrushHandler( aResolver )
       
   926     {
       
   927     }
       
   928     
       
   929 EXPORT_C void CAlfGradientBrushHandler::ConstructL( 
       
   930         CHuiBrush* aBrush )
       
   931     {
       
   932     if (!aBrush)
       
   933         {
       
   934         CHuiGradientBrush* gradientBrush = CHuiGradientBrush::NewLC();
       
   935         CAlfBrushHandler::ConstructL( gradientBrush );
       
   936         CleanupStack::Pop( gradientBrush );
       
   937         }
       
   938     else 
       
   939         {
       
   940         CAlfBrushHandler::ConstructL( aBrush );
       
   941         }
       
   942     }
       
   943     
       
   944 EXPORT_C CAlfGradientBrushHandler::~CAlfGradientBrushHandler()
       
   945     {
       
   946     }
       
   947     
       
   948     
       
   949 EXPORT_C void CAlfGradientBrushHandler::Release()
       
   950     {
       
   951     delete this;
       
   952     }
       
   953     
       
   954 EXPORT_C TAny* CAlfGradientBrushHandler::GetInterface(
       
   955     const THuiInterfaceSupport& aInterface)
       
   956     {
       
   957     return CAlfBrushHandler::GetInterface( aInterface );
       
   958     }
       
   959     
       
   960 EXPORT_C void CAlfGradientBrushHandler::HandleCmdL(
       
   961     TInt aCommandId, const TDesC8& aInputBuffer, TDes8& aResponse)
       
   962     {
       
   963     CHuiGradientBrush* dropShadowBrush = static_cast<CHuiGradientBrush*>(iBrush);
       
   964     
       
   965     switch ( aCommandId )
       
   966         { 
       
   967         case EAlfGradientBrushSetDirection:
       
   968             {
       
   969             CHuiGradientBrush::TDirection* value = (CHuiGradientBrush::TDirection*) aInputBuffer.Ptr();
       
   970             dropShadowBrush->SetDirection( *value );
       
   971             break;
       
   972             }
       
   973             
       
   974         case EAlfGradientBrushSetColor:
       
   975             {
       
   976             TAlfGradientBrushSetColorParams* value = (TAlfGradientBrushSetColorParams*) aInputBuffer.Ptr();
       
   977             dropShadowBrush->SetColor( value->iColor, value->iOpacity );
       
   978             break;
       
   979             }
       
   980             
       
   981         case EAlfGradientBrushSetImage:
       
   982             {
       
   983             TAlfImageParams* params = (TAlfImageParams*) aInputBuffer.Ptr();
       
   984         	
       
   985             // Todo: is is safe enough to handle textures as direct casts..
       
   986         	TInt handle = params->iTextureHandle;
       
   987         	MHuiTexture* texture = reinterpret_cast<MHuiTexture*>(handle);
       
   988    	        THuiImage huiImage;
       
   989    	        if (texture)
       
   990    	            {
       
   991    	            huiImage = THuiImage(*texture, 
       
   992 	                params->iTl.iX.ValueNow(),
       
   993 	                params->iTl.iY.ValueNow(),
       
   994 	                params->iBr.iX.ValueNow(),
       
   995 	                params->iBr.iY.ValueNow());    
       
   996    	            
       
   997     	        // We take transition time from one, assuming it is same for everyone.
       
   998     	        TInt transitionTime = params->iBr.iY.TimeToTargetinMilliSeconds();
       
   999     	        
       
  1000     	        huiImage.SetTexCoords(params->iTl.iX.Target(),
       
  1001     	            params->iTl.iY.Target(),
       
  1002     	            params->iBr.iX.Target(),
       
  1003     	            params->iBr.iY.Target(),
       
  1004     	            transitionTime );
       
  1005    	            }
       
  1006 	            
       
  1007 	        dropShadowBrush->SetImage( huiImage );
       
  1008             break;
       
  1009             }
       
  1010             
       
  1011         case EAlfGradientBrushColor:
       
  1012             {
       
  1013             TInt* value = (TInt*) aInputBuffer.Ptr();
       
  1014             const TRgb result = dropShadowBrush->Color( *value );
       
  1015             TPckg<TRgb> resultPckg(result);
       
  1016             aResponse = resultPckg; // awkward  
       
  1017             break;
       
  1018             }
       
  1019             
       
  1020         case EAlfGradientBrushOpacity:
       
  1021             {
       
  1022             TInt* value = (TInt*) aInputBuffer.Ptr();
       
  1023             const TReal32 result = dropShadowBrush->Opacity( *value );
       
  1024             TPckg<TReal32> resultPckg(result);
       
  1025             aResponse = resultPckg; // awkward 
       
  1026             break;
       
  1027             }
       
  1028             
       
  1029         case EAlfGradientBrushAppendColor:
       
  1030             {
       
  1031             TAlfGradientBrushAppendColorParams* value = (TAlfGradientBrushAppendColorParams*) aInputBuffer.Ptr();
       
  1032             dropShadowBrush->AppendColorL( value->iPosition, value->iColor, value->iOpacity );
       
  1033             break;
       
  1034             }
       
  1035             
       
  1036         default:
       
  1037             CAlfBrushHandler::HandleCmdL( aCommandId, aInputBuffer, aResponse );
       
  1038         }
       
  1039     }
       
  1040 
       
  1041 EXPORT_C void CAlfGradientBrushHandler::BrushHandlerExtension(const TUid& aExtensionUid, TAny** aExtensionParams)
       
  1042     {
       
  1043     CAlfBrushHandler::BrushHandlerExtension(aExtensionUid, aExtensionParams);
       
  1044     }
       
  1045 
       
  1046 
       
  1047 // FRAME BRUSH HANDLER
       
  1048 
       
  1049 // ---------------------------------------------------------------------------
       
  1050 // ?description_if_needed
       
  1051 // ---------------------------------------------------------------------------
       
  1052 //
       
  1053 EXPORT_C CAlfFrameBrushHandler::CAlfFrameBrushHandler(
       
  1054     MAlfInterfaceProvider& aResolver)
       
  1055 : CAlfBrushHandler( aResolver ) 
       
  1056     {
       
  1057     }
       
  1058 
       
  1059 
       
  1060 // ---------------------------------------------------------------------------
       
  1061 // ?description_if_needed
       
  1062 // ---------------------------------------------------------------------------
       
  1063 //
       
  1064 EXPORT_C void CAlfFrameBrushHandler::ConstructL( 
       
  1065     CHuiBrush* aBrush, const TAknsItemID& aIID, TInt aEdgeOffsetX, TInt aEdgeOffsetY)
       
  1066     {
       
  1067     if (!aBrush)
       
  1068         {
       
  1069         CHuiFrameBrush* brush = CHuiFrameBrush::NewLC(aIID,aEdgeOffsetX,aEdgeOffsetY);
       
  1070         CAlfBrushHandler::ConstructL( brush );
       
  1071         CleanupStack::Pop( brush );
       
  1072         }
       
  1073     else 
       
  1074         {
       
  1075         CAlfBrushHandler::ConstructL( aBrush );
       
  1076         }
       
  1077     }
       
  1078 
       
  1079 // ---------------------------------------------------------------------------
       
  1080 // ?description_if_needed
       
  1081 // ---------------------------------------------------------------------------
       
  1082 //
       
  1083 EXPORT_C void CAlfFrameBrushHandler::ConstructL( 
       
  1084     CHuiBrush* aBrush, const TAknsItemID& aIID, TAlfXYMetric aEdgeOffset)
       
  1085     {
       
  1086     if (!aBrush)
       
  1087         {
       
  1088         THuiXYMetric huiEdgeOffset;
       
  1089         AlfXYMetricUtility::CopyMetric(aEdgeOffset, huiEdgeOffset);
       
  1090         CHuiFrameBrush* brush = CHuiFrameBrush::NewLC(aIID, huiEdgeOffset);
       
  1091         CAlfBrushHandler::ConstructL( brush );
       
  1092         CleanupStack::Pop( brush );
       
  1093         }
       
  1094     else 
       
  1095         {
       
  1096         CAlfBrushHandler::ConstructL( aBrush );
       
  1097         }
       
  1098     }
       
  1099 
       
  1100 
       
  1101 // ---------------------------------------------------------------------------
       
  1102 // ?description_if_needed
       
  1103 // ---------------------------------------------------------------------------
       
  1104 //
       
  1105 EXPORT_C void CAlfFrameBrushHandler::ConstructL( 
       
  1106         CHuiBrush* aBrush, const THuiImage& aImage, TAlfXYMetric aEdgeOffset)
       
  1107     {
       
  1108     if (!aBrush)
       
  1109         {
       
  1110         THuiXYMetric huiEdgeOffset;
       
  1111         AlfXYMetricUtility::CopyMetric(aEdgeOffset, huiEdgeOffset);
       
  1112 
       
  1113         CHuiFrameBrush* brush = CHuiFrameBrush::NewLC(aImage, huiEdgeOffset);
       
  1114         CAlfBrushHandler::ConstructL( brush );
       
  1115         CleanupStack::Pop( brush );
       
  1116         }
       
  1117     else 
       
  1118         {
       
  1119         CAlfBrushHandler::ConstructL( aBrush );
       
  1120         }        
       
  1121     }
       
  1122 
       
  1123 // ---------------------------------------------------------------------------
       
  1124 // ?description_if_needed
       
  1125 // ---------------------------------------------------------------------------
       
  1126 //
       
  1127 EXPORT_C MAlfExtension* CAlfFrameBrushHandler::NewL( 
       
  1128     MAlfInterfaceProvider& aResolver, const TAknsItemID& aIID, TInt aEdgeOffsetX, TInt aEdgeOffsetY )
       
  1129     {
       
  1130     CAlfFrameBrushHandler* self = new( ELeave ) CAlfFrameBrushHandler( aResolver );
       
  1131     CleanupStack::PushL( self );
       
  1132     self->ConstructL( NULL , aIID, aEdgeOffsetX, aEdgeOffsetY );
       
  1133     CleanupStack::Pop( self );
       
  1134     return self;
       
  1135     }
       
  1136 
       
  1137 // ---------------------------------------------------------------------------
       
  1138 // ?description_if_needed
       
  1139 // ---------------------------------------------------------------------------
       
  1140 //
       
  1141 EXPORT_C MAlfExtension* CAlfFrameBrushHandler::NewL( 
       
  1142     MAlfInterfaceProvider& aResolver, const TAknsItemID& aIID, TAlfXYMetric aEdgeOffset )
       
  1143     {
       
  1144     CAlfFrameBrushHandler* self = new( ELeave ) CAlfFrameBrushHandler( aResolver );
       
  1145     CleanupStack::PushL( self );
       
  1146     self->ConstructL( NULL , aIID, aEdgeOffset );
       
  1147     CleanupStack::Pop( self );
       
  1148     return self;
       
  1149     }
       
  1150 
       
  1151 // ---------------------------------------------------------------------------
       
  1152 // ?description_if_needed
       
  1153 // ---------------------------------------------------------------------------
       
  1154 //
       
  1155 EXPORT_C MAlfExtension* CAlfFrameBrushHandler::NewL( 
       
  1156         MAlfInterfaceProvider& aResolver, const THuiImage& aImage, TAlfXYMetric aEdgeOffset)
       
  1157     {
       
  1158     CAlfFrameBrushHandler* self = new( ELeave ) CAlfFrameBrushHandler( aResolver );
       
  1159     CleanupStack::PushL( self );
       
  1160     self->ConstructL( NULL , aImage, aEdgeOffset );
       
  1161     CleanupStack::Pop( self );
       
  1162     return self;        
       
  1163     }
       
  1164 
       
  1165 
       
  1166 // ---------------------------------------------------------------------------
       
  1167 // ?description_if_needed
       
  1168 // ---------------------------------------------------------------------------
       
  1169 //
       
  1170 EXPORT_C CAlfFrameBrushHandler::~CAlfFrameBrushHandler()
       
  1171     {
       
  1172     }
       
  1173 
       
  1174 
       
  1175 
       
  1176 // ---------------------------------------------------------------------------
       
  1177 // From class ?base_class.
       
  1178 // ?implementation_description
       
  1179 // ---------------------------------------------------------------------------
       
  1180 //
       
  1181 EXPORT_C void CAlfFrameBrushHandler::Release()
       
  1182     {
       
  1183     delete this;
       
  1184     }
       
  1185  
       
  1186 // ---------------------------------------------------------------------------
       
  1187 // From class ?base_class.
       
  1188 // ?implementation_description
       
  1189 // ---------------------------------------------------------------------------
       
  1190 //   
       
  1191 EXPORT_C TAny* CAlfFrameBrushHandler::GetInterface(
       
  1192     const THuiInterfaceSupport& aInterface)
       
  1193     {
       
  1194     return CAlfBrushHandler::GetInterface(aInterface);   
       
  1195     }
       
  1196    
       
  1197 // ---------------------------------------------------------------------------
       
  1198 // From class ?base_class.
       
  1199 // ?implementation_description
       
  1200 // ---------------------------------------------------------------------------
       
  1201 // 
       
  1202 EXPORT_C void CAlfFrameBrushHandler::HandleCmdL(
       
  1203     TInt aCommandId, 
       
  1204     const TDesC8& aInputBuffer, 
       
  1205     TDes8& aResponse)
       
  1206     {
       
  1207     CHuiFrameBrush* frameBrush = static_cast<CHuiFrameBrush*>(iBrush);
       
  1208     
       
  1209     switch (aCommandId)
       
  1210         {
       
  1211         case EAlfFrameBrushSetFrameRects:
       
  1212             {
       
  1213             TAlfFrameBrushParams* params = (TAlfFrameBrushParams*) aInputBuffer.Ptr();
       
  1214             frameBrush->SetFrameRectsL(params->iInnerRect, params->iOuterRect);
       
  1215             break;
       
  1216             }
       
  1217         case EAlfFrameBrushSetEdgeOffsetMetric:
       
  1218             {
       
  1219             TAlfXYMetric* params = (TAlfXYMetric*) aInputBuffer.Ptr();
       
  1220             THuiXYMetric huimetric;
       
  1221             AlfXYMetricUtility::CopyMetric(*params, huimetric);
       
  1222             frameBrush->SetEdgeOffset(huimetric);
       
  1223             break;
       
  1224             }
       
  1225         case EAlfFrameBrushSetImage:
       
  1226             {
       
  1227             TAlfImageParams* params = (TAlfImageParams*)aInputBuffer.Ptr();
       
  1228             // Todo: is is safe enough to handle textures as direct casts..
       
  1229         	TInt handle = params->iTextureHandle;
       
  1230         	MHuiTexture* texture = reinterpret_cast<MHuiTexture*>(handle);
       
  1231             THuiImage huiImage;
       
  1232             if (texture)
       
  1233                 {
       
  1234                 huiImage = THuiImage(*texture, 
       
  1235                     params->iTl.iX.ValueNow(),
       
  1236                     params->iTl.iY.ValueNow(),
       
  1237                     params->iBr.iX.ValueNow(),
       
  1238                     params->iBr.iY.ValueNow());    
       
  1239                 
       
  1240     	        // We take transition time from one, assuming it is same for everyone.
       
  1241     	        TInt transitionTime = params->iBr.iY.TimeToTargetinMilliSeconds();
       
  1242     	        
       
  1243     	        huiImage.SetTexCoords(params->iTl.iX.Target(),
       
  1244     	            params->iTl.iY.Target(),
       
  1245     	            params->iBr.iX.Target(),
       
  1246     	            params->iBr.iY.Target(),
       
  1247     	            transitionTime );
       
  1248                 }
       
  1249             
       
  1250             frameBrush->SetImage(huiImage);
       
  1251 
       
  1252             break;
       
  1253             }
       
  1254         case EAlfFrameBrushSetFramePartImage:
       
  1255             {
       
  1256             TAlfFrameBrushFramePartImageParams* params = (TAlfFrameBrushFramePartImageParams*)aInputBuffer.Ptr();
       
  1257             // Todo: is is safe enough to handle textures as direct casts..
       
  1258         	TInt handle = params->iImage.iTextureHandle;
       
  1259         	MHuiTexture* texture = reinterpret_cast<MHuiTexture*>(handle);
       
  1260             THuiImage huiImage;
       
  1261             if (texture)
       
  1262                 {
       
  1263                 huiImage = THuiImage(*texture, 
       
  1264                     params->iImage.iTl.iX.ValueNow(),
       
  1265                     params->iImage.iTl.iY.ValueNow(),
       
  1266                     params->iImage.iBr.iX.ValueNow(),
       
  1267                     params->iImage.iBr.iY.ValueNow());    
       
  1268                 
       
  1269     	        // We take transition time from one, assuming it is same for everyone.
       
  1270     	        TInt transitionTime = params->iImage.iBr.iY.TimeToTargetinMilliSeconds();
       
  1271     	        
       
  1272     	        huiImage.SetTexCoords(params->iImage.iTl.iX.Target(),
       
  1273     	            params->iImage.iTl.iY.Target(),
       
  1274     	            params->iImage.iBr.iX.Target(),
       
  1275     	            params->iImage.iBr.iY.Target(),
       
  1276     	            transitionTime );
       
  1277                 }
       
  1278             
       
  1279             CHuiFrameBrush::TFrameParts part = CHuiFrameBrush::TFrameParts(params->iFramePart);
       
  1280             frameBrush->SetImage(part, huiImage);
       
  1281 
       
  1282             break;
       
  1283             }
       
  1284         default:
       
  1285             CAlfBrushHandler::HandleCmdL(aCommandId, aInputBuffer, aResponse);
       
  1286         }
       
  1287     }
       
  1288 
       
  1289 EXPORT_C void CAlfFrameBrushHandler::BrushHandlerExtension(const TUid& aExtensionUid, TAny** aExtensionParams)
       
  1290     {
       
  1291     CAlfBrushHandler::BrushHandlerExtension(aExtensionUid, aExtensionParams);
       
  1292     }
       
  1293