uiacceltk/hitchcock/Client/src/alfcanvasvisual.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:   Canvas visual
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 
       
    20 #include "alf/alfcanvasvisual.h"
       
    21 #include "alf/alfcontrol.h"
       
    22 #include "alflogger.h"
       
    23 #include "alf/alfgencomponent.h"
       
    24 #include "alf/alfconstants.h"
       
    25 #include "alf/alfenv.h"
       
    26 #include "alf/alfgc.h"
       
    27 #include "alflogger.h"
       
    28 
       
    29 
       
    30 
       
    31 // ======== MEMBER FUNCTIONS ========
       
    32 
       
    33 struct CAlfCanvasVisual::TCanvasVisualPrivateData
       
    34     {
       
    35     TCanvasVisualPrivateData() : iObserver(NULL) {}
       
    36     MAlfCanvasObserver* iObserver;
       
    37     CAlfGc* iGc;
       
    38     };
       
    39 
       
    40 // ---------------------------------------------------------------------------
       
    41 // ?description_if_needed
       
    42 // ---------------------------------------------------------------------------
       
    43 //
       
    44 
       
    45 EXPORT_C CAlfCanvasVisual* CAlfCanvasVisual::AddNewL(
       
    46     CAlfControl& aOwnerControl,
       
    47     CAlfLayout* aParentLayout )
       
    48     {
       
    49     CAlfCanvasVisual* canvas = STATIC_CAST(CAlfCanvasVisual*,
       
    50         aOwnerControl.AppendVisualL(EAlfVisualTypeCanvas, aParentLayout));
       
    51     return canvas;
       
    52     }
       
    53 
       
    54 // ---------------------------------------------------------------------------
       
    55 // 
       
    56 // ---------------------------------------------------------------------------
       
    57 //     
       
    58 EXPORT_C CAlfCanvasVisual::CAlfCanvasVisual()
       
    59     {
       
    60     }
       
    61 
       
    62 // ---------------------------------------------------------------------------
       
    63 // 
       
    64 // ---------------------------------------------------------------------------
       
    65 //     
       
    66 EXPORT_C void CAlfCanvasVisual::ConstructL(CAlfControl& aOwner)
       
    67     {
       
    68     CAlfVisual::ConstructL(aOwner);
       
    69     
       
    70     iCanvasVisualData = new (ELeave) TCanvasVisualPrivateData;
       
    71     iCanvasVisualData->iGc = CAlfGc::NewL();
       
    72     }
       
    73 
       
    74 // ---------------------------------------------------------------------------
       
    75 // 
       
    76 // ---------------------------------------------------------------------------
       
    77 //     
       
    78 EXPORT_C CAlfCanvasVisual::~CAlfCanvasVisual()
       
    79     {
       
    80     if ( iCanvasVisualData )
       
    81         {
       
    82         delete iCanvasVisualData->iGc;
       
    83         }
       
    84         
       
    85     delete iCanvasVisualData;
       
    86     iCanvasVisualData = NULL;    
       
    87     }
       
    88     
       
    89 // ---------------------------------------------------------------------------
       
    90 // 
       
    91 // ---------------------------------------------------------------------------
       
    92 //     
       
    93 EXPORT_C void CAlfCanvasVisual::SetCanvasObserver( MAlfCanvasObserver* aObserver )
       
    94     {
       
    95     iCanvasVisualData->iObserver = aObserver;
       
    96     }
       
    97 
       
    98 // ---------------------------------------------------------------------------
       
    99 // 
       
   100 // ---------------------------------------------------------------------------
       
   101 //     
       
   102 void CAlfCanvasVisual::SendBuffer( const TPtrC8& aBuffer )
       
   103     {
       
   104     TBuf8<1> dum;
       
   105     TInt err = Comms()->DoSynchronousCmd(EAlfCanvasVisualSendbuffer, aBuffer, dum);
       
   106     }
       
   107 
       
   108 // ---------------------------------------------------------------------------
       
   109 // 
       
   110 // ---------------------------------------------------------------------------
       
   111 //     
       
   112 EXPORT_C void CAlfCanvasVisual::BeginDraw()
       
   113     {
       
   114     TRAP_IGNORE(iCanvasVisualData->iGc->ActivateL());    
       
   115     }
       
   116 
       
   117 // ---------------------------------------------------------------------------
       
   118 // 
       
   119 // ---------------------------------------------------------------------------
       
   120 //     
       
   121 EXPORT_C void CAlfCanvasVisual::EndDraw()
       
   122     {
       
   123     HBufC8* commandBuffer = iCanvasVisualData->iGc->CommandBuffer();        
       
   124     __ALFLOGSTRING1( "CAlfCanvasVisual::Refresh buffer length: %d", commandBuffer->Length() )        
       
   125     if (commandBuffer)
       
   126         {
       
   127         SendBuffer( commandBuffer->Des() );            
       
   128         }
       
   129     
       
   130     iCanvasVisualData->iGc->Deactivate();        
       
   131     }
       
   132     
       
   133 // ---------------------------------------------------------------------------
       
   134 // Place holder from CAlfVisual
       
   135 // ---------------------------------------------------------------------------
       
   136 //     
       
   137 EXPORT_C void CAlfCanvasVisual::RemoveAndDestroyAllD()
       
   138     {
       
   139     CAlfVisual::RemoveAndDestroyAllD();
       
   140     }
       
   141   
       
   142 // ---------------------------------------------------------------------------
       
   143 // Place holder from CAlfVisual
       
   144 // ---------------------------------------------------------------------------
       
   145 //  
       
   146 EXPORT_C void CAlfCanvasVisual::UpdateChildrenLayout(TInt aTransitionTime )
       
   147     {
       
   148     CAlfVisual::UpdateChildrenLayout( aTransitionTime );
       
   149     }
       
   150   
       
   151 // ---------------------------------------------------------------------------
       
   152 // Place holder from CAlfVisual
       
   153 // ---------------------------------------------------------------------------
       
   154 //  
       
   155 EXPORT_C CAlfVisual* CAlfCanvasVisual::FindTag(const TDesC8& aTag)
       
   156     {
       
   157     return CAlfVisual::FindTag( aTag );
       
   158     }
       
   159 
       
   160 // ---------------------------------------------------------------------------
       
   161 // Place holder from CAlfVisual
       
   162 // ---------------------------------------------------------------------------
       
   163 //  
       
   164 EXPORT_C void CAlfCanvasVisual::DoRemoveAndDestroyAllD()
       
   165     {
       
   166     CAlfVisual::DoRemoveAndDestroyAllD();
       
   167     }
       
   168     
       
   169 // ---------------------------------------------------------------------------
       
   170 //  future proofing  
       
   171 // ---------------------------------------------------------------------------
       
   172 //  
       
   173 EXPORT_C void CAlfCanvasVisual::PropertyOwnerExtension(const TUid& aExtensionUid, TAny** aExtensionParams)
       
   174     {
       
   175     CAlfVisual::PropertyOwnerExtension(aExtensionUid,aExtensionParams);
       
   176     }
       
   177     
       
   178 // ---------------------------------------------------------------------------
       
   179 // 
       
   180 // ---------------------------------------------------------------------------
       
   181 //     
       
   182 EXPORT_C void CAlfCanvasVisual::DrawImage(const CAlfTexture& aTexture, const TAlfRealRect& aDestinationRect)
       
   183     {
       
   184     iCanvasVisualData->iGc->DrawImage(aTexture, aDestinationRect);    
       
   185     }
       
   186 
       
   187 // ---------------------------------------------------------------------------
       
   188 // 
       
   189 // ---------------------------------------------------------------------------
       
   190 //     
       
   191 EXPORT_C void CAlfCanvasVisual::DrawText(const TDesC& aText, const TAlfRealRect& aDestinationRect)
       
   192     {
       
   193     iCanvasVisualData->iGc->DrawText(aText, aDestinationRect);    
       
   194     }
       
   195 
       
   196 // ---------------------------------------------------------------------------
       
   197 // 
       
   198 // ---------------------------------------------------------------------------
       
   199 //     
       
   200 EXPORT_C void CAlfCanvasVisual::DrawLines(const TAlfRealLine* aLines, TInt aLineCount)
       
   201 	{
       
   202 	RArray<TReal32> linesPointCords;
       
   203 	for(TInt i = 0; i< aLineCount; i++)
       
   204 		{
       
   205 		linesPointCords.Append(aLines[i].iStart.iX);
       
   206 		linesPointCords.Append(aLines[i].iStart.iY);
       
   207 		linesPointCords.Append(aLines[i].iEnd.iX);
       
   208 		linesPointCords.Append(aLines[i].iEnd.iY);
       
   209 		}
       
   210 	iCanvasVisualData->iGc->DrawLines(linesPointCords);    
       
   211 	linesPointCords.Close();  
       
   212 	}
       
   213 
       
   214 // ---------------------------------------------------------------------------
       
   215 // 
       
   216 // ---------------------------------------------------------------------------
       
   217 //     
       
   218 EXPORT_C void CAlfCanvasVisual::DrawEllipse(const TAlfRealRect& aDestinationRect)
       
   219 	{
       
   220 	iCanvasVisualData->iGc->DrawEllipse(aDestinationRect);
       
   221 	}
       
   222 
       
   223 // ---------------------------------------------------------------------------
       
   224 // 
       
   225 // ---------------------------------------------------------------------------
       
   226 //     
       
   227 EXPORT_C void CAlfCanvasVisual::DrawPoints(const TAlfRealPoint* aPoints, TInt aPointCount)
       
   228 	{
       
   229 	RArray<TReal32> pointCords;
       
   230 	for(TInt i = 0; i< aPointCount; i++)
       
   231 		{
       
   232 		pointCords.Append(aPoints[i].iX);
       
   233 		pointCords.Append(aPoints[i].iY);
       
   234 		}
       
   235 	iCanvasVisualData->iGc->DrawPoints(pointCords);
       
   236 	pointCords.Close();  
       
   237 	}
       
   238 
       
   239 // ---------------------------------------------------------------------------
       
   240 // 
       
   241 // ---------------------------------------------------------------------------
       
   242 //     
       
   243 EXPORT_C void CAlfCanvasVisual::DrawPolygon(const TAlfRealPoint* aPoints, TInt aPointCount)
       
   244 	{
       
   245 	RArray<TReal32> pointCords;
       
   246 	for(TInt i = 0; i< aPointCount; i++)
       
   247 		{
       
   248 		pointCords.Append(aPoints[i].iX);
       
   249 		pointCords.Append(aPoints[i].iY);
       
   250 		}
       
   251 	iCanvasVisualData->iGc->DrawPolygon(pointCords);
       
   252     pointCords.Close();
       
   253 	}
       
   254 
       
   255 // ---------------------------------------------------------------------------
       
   256 // 
       
   257 // ---------------------------------------------------------------------------
       
   258 //     
       
   259 EXPORT_C void CAlfCanvasVisual::DrawRects(const TAlfRealRect* aRects, TInt aRectCount)
       
   260 	{
       
   261 	RArray<TReal32> rectPointCords;
       
   262 	for(TInt i = 0; i< aRectCount; i++)
       
   263 		{
       
   264 		rectPointCords.Append(aRects[i].iTl.iX);
       
   265 		rectPointCords.Append(aRects[i].iTl.iY);
       
   266 		rectPointCords.Append(aRects[i].iBr.iX);
       
   267 		rectPointCords.Append(aRects[i].iBr.iY);
       
   268 		}
       
   269 	iCanvasVisualData->iGc->DrawRects(rectPointCords);
       
   270 	rectPointCords.Close();
       
   271 	}
       
   272 
       
   273     
       
   274 // Setters
       
   275 // ---------------------------------------------------------------------------
       
   276 // 
       
   277 // ---------------------------------------------------------------------------
       
   278 //     
       
   279 EXPORT_C void CAlfCanvasVisual::SetTextStyle(const CAlfTextStyle& aTextStyle)
       
   280     {
       
   281     iCanvasVisualData->iGc->SetTextStyle(aTextStyle);            
       
   282     }
       
   283 
       
   284 // ---------------------------------------------------------------------------
       
   285 // 
       
   286 // ---------------------------------------------------------------------------
       
   287 //     
       
   288 EXPORT_C void CAlfCanvasVisual::SetPenColor(const TRgb& aColor)
       
   289 	{
       
   290     iCanvasVisualData->iGc->SetPenColor(aColor);
       
   291     }
       
   292 
       
   293 // ---------------------------------------------------------------------------
       
   294 // 
       
   295 // ---------------------------------------------------------------------------
       
   296 //     
       
   297 EXPORT_C void CAlfCanvasVisual::SetPenWidth(const TReal32& aWidth)
       
   298 	{
       
   299     iCanvasVisualData->iGc->SetPenWidth(aWidth);
       
   300     }
       
   301 
       
   302 // ---------------------------------------------------------------------------
       
   303 // 
       
   304 // ---------------------------------------------------------------------------
       
   305 //     
       
   306 EXPORT_C void CAlfCanvasVisual::SetPenOpacity(const TReal32& aOpacity)
       
   307 	{
       
   308     iCanvasVisualData->iGc->SetOpacity(aOpacity);
       
   309     }
       
   310 
       
   311 // ---------------------------------------------------------------------------
       
   312 // 
       
   313 // ---------------------------------------------------------------------------
       
   314 //     
       
   315 EXPORT_C void CAlfCanvasVisual::SetPolygonDrawMode(TAlfPolygonDrawMode aPolygonDrawMode)
       
   316 	{
       
   317     iCanvasVisualData->iGc->SetPolygonDrawMode(aPolygonDrawMode);
       
   318     }
       
   319 
       
   320 // ---------------------------------------------------------------------------
       
   321 // 
       
   322 // ---------------------------------------------------------------------------
       
   323 //     
       
   324 EXPORT_C void CAlfCanvasVisual::SetTextAlign(TAlfAlignHorizontal aAlignHorizontal, TAlfAlignVertical aAlignVertical)
       
   325 	{
       
   326     iCanvasVisualData->iGc->SetTextAlign(aAlignHorizontal, aAlignVertical);
       
   327     }
       
   328 
       
   329 
       
   330 // Transformations
       
   331 // ---------------------------------------------------------------------------
       
   332 // 
       
   333 // ---------------------------------------------------------------------------
       
   334 //     
       
   335 EXPORT_C void CAlfCanvasVisual::LoadIdentity()
       
   336 	{
       
   337     iCanvasVisualData->iGc->LoadIdentity();
       
   338     }
       
   339 
       
   340 // ---------------------------------------------------------------------------
       
   341 // 
       
   342 // ---------------------------------------------------------------------------
       
   343 //     
       
   344 EXPORT_C void CAlfCanvasVisual::Translate(const TReal32& aX, const TReal32& aY, const TReal32& aZ)
       
   345 	{
       
   346     iCanvasVisualData->iGc->Translate(aX, aY, aZ);
       
   347     }
       
   348 
       
   349 // ---------------------------------------------------------------------------
       
   350 // 
       
   351 // ---------------------------------------------------------------------------
       
   352 //     
       
   353 EXPORT_C void CAlfCanvasVisual::Scale(const TReal32& aX, const TReal32& aY, const TReal32& aZ)
       
   354 	{
       
   355     iCanvasVisualData->iGc->Scale(aX, aY, aZ);
       
   356     }
       
   357 
       
   358 // ---------------------------------------------------------------------------
       
   359 // 
       
   360 // ---------------------------------------------------------------------------
       
   361 //     
       
   362 EXPORT_C void CAlfCanvasVisual::Rotate(const TReal32& aAngle, const TReal32& aX, const TReal32& aY, const TReal32& aZ)
       
   363 	{
       
   364     iCanvasVisualData->iGc->Rotate(aAngle, aX, aY, aZ);
       
   365     }
       
   366