windowing/windowserver/nonnga/SERVER/WSANIMGC.CPP
changeset 0 5d03bc08d59c
equal deleted inserted replaced
-1:000000000000 0:5d03bc08d59c
       
     1 // Copyright (c) 1996-2009 Nokia Corporation and/or its subsidiary(-ies).
       
     2 // All rights reserved.
       
     3 // This component and the accompanying materials are made available
       
     4 // under the terms of "Eclipse Public License v1.0"
       
     5 // which accompanies this distribution, and is available
       
     6 // at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     7 //
       
     8 // Initial Contributors:
       
     9 // Nokia Corporation - initial contribution.
       
    10 //
       
    11 // Contributors:
       
    12 //
       
    13 // Description:
       
    14 // Interface code for animated DLL's GC
       
    15 // 
       
    16 //
       
    17 
       
    18 #include <e32std.h>
       
    19 #include "server.h"
       
    20 #include "playbackgc.h"
       
    21 #include "ANIM.H"
       
    22 #include "wsfont.h"
       
    23 
       
    24 CWsAnimGc::CWsAnimGc() : iUserActive(EFalse), iUseDrawingRegion(EFalse)
       
    25 	{
       
    26 	__DECLARE_NAME(_S("CWsAnimGc"));
       
    27 	}
       
    28 
       
    29 void CWsAnimGc::SetDrawingRegions(const TRegion *aRegion)
       
    30 	{
       
    31 	if (aRegion)
       
    32 		{
       
    33 		iDrawingRegion.Copy(*aRegion);
       
    34 		iDrawingRegion.Offset(iWin->Origin());
       
    35 		}
       
    36 	iDrawingRegion.Intersect(*iBaseRegion);
       
    37 	iDrawingRegion.Tidy();
       
    38 	iGc->SetClippingRegion(iDrawingRegion);
       
    39 	iUseDrawingRegion=ETrue;
       
    40 	}
       
    41 
       
    42 void CWsAnimGc::Activate(CWsClientWindow *aWindow, CWsAnim *aWsAnim, const TRegion *aRegion, CFbsBitGc *aGc)
       
    43 	{
       
    44 	iOwningWsAnim=aWsAnim;
       
    45 	if (iWin)
       
    46 		iOwningWsAnim->Panic();
       
    47 	iWin=aWindow;
       
    48 	iBaseRegion=aRegion ? aRegion : &iWin->VisibleRegion();
       
    49 
       
    50 	iGc = aGc;
       
    51 	iUserActive = ETrue;
       
    52 	Reset();
       
    53 	}
       
    54 
       
    55 void CWsAnimGc::Deactivate()
       
    56 	{
       
    57 	if (iUseDrawingRegion)
       
    58 		{
       
    59 		iDrawingRegion.Close();
       
    60 		}
       
    61 	iUseDrawingRegion=EFalse;
       
    62 	CloseCurrentFont();
       
    63 
       
    64 	iWin=NULL;
       
    65 	iGc=NULL;
       
    66 	iUserActive = EFalse;
       
    67 	}
       
    68 
       
    69 TBool CWsAnimGc::IsActive() const
       
    70 	{
       
    71 	return (iUserActive || (iGc != NULL));
       
    72 	}
       
    73 
       
    74 void CWsAnimGc::UserActivate(CWsClientWindow *aWindow, CWsAnim *aWsAnim)
       
    75 	{
       
    76 	if (iWin)
       
    77 		{
       
    78 		UserDeactivate();
       
    79 		iOwningWsAnim->Panic();
       
    80 		}
       
    81 	iOwningWsAnim=aWsAnim;
       
    82 	iWin=aWindow;
       
    83 	iUserActive = ETrue;
       
    84 	}
       
    85 
       
    86 void CWsAnimGc::UserDeactivate()
       
    87 	{
       
    88 	CloseCurrentFont();
       
    89 
       
    90 	if (iWin && iOwningWsAnim)
       
    91 		{
       
    92 		TRegionFix<1> animRegion(iOwningWsAnim->BestRect());
       
    93 		iWin->ScheduleRegionUpdate(&animRegion);
       
    94 		}
       
    95 
       
    96 	iWin = NULL;
       
    97 	iUserActive = EFalse;
       
    98 	}
       
    99 
       
   100 void CWsAnimGc::AnimDeleted(CWsAnim *aWsAnim)
       
   101 	{	
       
   102 	if (iOwningWsAnim==aWsAnim)
       
   103 		iOwningWsAnim=NULL;
       
   104 	}
       
   105 
       
   106 CGraphicsDevice* CWsAnimGc::Device() const
       
   107 	{
       
   108 	if (!iUserActive)
       
   109 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   110 
       
   111 	return iGc ? iGc->Device() : NULL;
       
   112 	}
       
   113 
       
   114 void CWsAnimGc::SetClippingRect(const TRect& aRect)
       
   115 	{
       
   116 	if (!iUserActive)
       
   117 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   118 
       
   119 	if (iGc)
       
   120 		{
       
   121 		iClippingRect=aRect;
       
   122 		iClippingRect.Intersection(TRect(iWin->Size()));
       
   123 		iGc->SetClippingRect(iClippingRect);
       
   124 		}
       
   125 	}
       
   126 
       
   127 TInt CWsAnimGc::SetClippingRegion(const TRegion &aRegion)
       
   128 //This function is virtual and so cannot have an 'L' at the end of it's name
       
   129 	{
       
   130 	if (iWin==NULL)
       
   131 		User::Leave(KErrGeneral);
       
   132 
       
   133 	if (iGc)
       
   134 		SetDrawingRegions(&aRegion);
       
   135 	return KErrNone;
       
   136 	}
       
   137 
       
   138 void CWsAnimGc::CancelClippingRegion()
       
   139 	{
       
   140 	if (!iUserActive)
       
   141 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   142 
       
   143 	if (iGc)
       
   144 		{
       
   145 		iDrawingRegion.Clear();
       
   146 		iUseDrawingRegion=EFalse;
       
   147 		iGc->SetClippingRegion(iBaseRegion);
       
   148 		}
       
   149 	}
       
   150 
       
   151 void CWsAnimGc::CancelClippingRect()
       
   152 	{
       
   153 	if (!iUserActive)
       
   154 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   155 
       
   156 	if (iGc)
       
   157 		{
       
   158 		iClippingRect=TRect(iWin->Size());
       
   159 		iGc->SetClippingRect(iClippingRect);
       
   160 		}
       
   161 	}
       
   162 
       
   163 void CWsAnimGc::SetDrawMode(TDrawMode aDrawingMode)
       
   164 	{
       
   165 	if (!iUserActive)
       
   166 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   167 
       
   168 	if (iGc)
       
   169 		iGc->SetDrawMode(aDrawingMode);
       
   170 	}
       
   171 
       
   172 void CWsAnimGc::UseFont(const CFont *aFont)
       
   173 	{
       
   174 	CloseCurrentFont();
       
   175 	iFont=(CAnimFbsFont *)aFont;
       
   176 	iFont->Open();
       
   177 	if (!iUserActive)
       
   178 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   179 	if (iGc)
       
   180 		iGc->UseFontNoDuplicate(iFont);
       
   181 	}
       
   182 
       
   183 void CWsAnimGc::DiscardFont()
       
   184 	{
       
   185 	CloseCurrentFont();
       
   186 	if (!iUserActive)
       
   187 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   188 	if (iGc)
       
   189 		iGc->DiscardFont();
       
   190 	}
       
   191 
       
   192 void CWsAnimGc::SetUnderlineStyle(TFontUnderline aUnderlineStyle)
       
   193 	{
       
   194 	if (!iUserActive)
       
   195 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   196 	if (iGc)
       
   197 		iGc->SetUnderlineStyle(aUnderlineStyle);
       
   198 	}
       
   199 
       
   200 void CWsAnimGc::SetStrikethroughStyle(TFontStrikethrough aStrikethroughStyle)
       
   201 	{
       
   202 	if (!iUserActive)
       
   203 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   204 	if (iGc)
       
   205 		iGc->SetStrikethroughStyle(aStrikethroughStyle);
       
   206 	}
       
   207 
       
   208 void CWsAnimGc::SetWordJustification(TInt aExcessWidth,TInt aNumGaps)
       
   209 	{
       
   210 	if (!iUserActive)
       
   211 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   212 	if (iGc)
       
   213 		iGc->SetWordJustification(aExcessWidth,aNumGaps);
       
   214 	}
       
   215 
       
   216 void CWsAnimGc::SetCharJustification(TInt aExcessWidth,TInt aNumChars)
       
   217 	{
       
   218 	if (!iUserActive)
       
   219 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   220 	if (iGc)
       
   221 		iGc->SetCharJustification(aExcessWidth,aNumChars);
       
   222 	}
       
   223 
       
   224 void CWsAnimGc::SetPenColor(const TRgb &aColor)
       
   225 	{
       
   226 	if (!iUserActive)
       
   227 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   228 	if (iGc)
       
   229 		iGc->SetPenColor(aColor);
       
   230 	}
       
   231 
       
   232 void CWsAnimGc::SetPenStyle(TPenStyle aPenStyle)
       
   233 	{
       
   234 	if (!iUserActive)
       
   235 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   236 	if (iGc)
       
   237 		iGc->SetPenStyle(aPenStyle);
       
   238 	}
       
   239 
       
   240 void CWsAnimGc::SetPenSize(const TSize& aSize)
       
   241 	{
       
   242 	if (!iUserActive)
       
   243 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   244 	if (iGc)
       
   245 		iGc->SetPenSize(aSize);
       
   246 	}
       
   247 
       
   248 void CWsAnimGc::SetBrushColor(const TRgb &aColor)
       
   249 	{
       
   250 	if (!iUserActive)
       
   251 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   252 	if (iGc)
       
   253 		iGc->SetBrushColor(aColor);
       
   254 	}
       
   255 
       
   256 void CWsAnimGc::SetBrushStyle(TBrushStyle aBrushStyle)
       
   257 	{
       
   258 	if (!iUserActive)
       
   259 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   260 	if (iGc)
       
   261 		iGc->SetBrushStyle(aBrushStyle);
       
   262 	}
       
   263 
       
   264 void CWsAnimGc::SetBrushOrigin(const TPoint &aOrigin)
       
   265 	{
       
   266 	if (!iUserActive)
       
   267 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   268 	if (iGc)
       
   269 		iGc->SetBrushOrigin(aOrigin);
       
   270 	}
       
   271 
       
   272 void CWsAnimGc::UseBrushPattern(const CFbsBitmap *aBitmap)
       
   273 	{
       
   274 	if (!iUserActive)
       
   275 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   276 	if (iGc)
       
   277 		iGc->UseBrushPattern(aBitmap);
       
   278 	}
       
   279 
       
   280 void CWsAnimGc::DiscardBrushPattern()
       
   281 	{
       
   282 	if (!iUserActive)
       
   283 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   284 	if (iGc)
       
   285 		iGc->DiscardBrushPattern();
       
   286 	}
       
   287 
       
   288 void CWsAnimGc::SetFaded(TBool aFaded)
       
   289 	{
       
   290 	if (!iUserActive)
       
   291 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   292 	if (iGc)
       
   293 		iGc->SetFaded(aFaded);
       
   294 	}
       
   295 
       
   296 void CWsAnimGc::SetFadingParameters(TUint8 aBlackMap,TUint8 aWhiteMap)
       
   297 	{
       
   298 	if (!iUserActive)
       
   299 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   300 	if (iGc)
       
   301 		iGc->SetFadingParameters(aBlackMap,aWhiteMap);
       
   302 	}
       
   303 
       
   304 //
       
   305 // Drawing commands 								//
       
   306 //
       
   307 
       
   308 void CWsAnimGc::DrawArc(const TRect &aRect,const TPoint &aStart,const TPoint &aEnd)
       
   309 	{
       
   310 	if (!iUserActive)
       
   311 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   312 	if (iGc)
       
   313 		iGc->DrawArc(aRect,aStart,aEnd);
       
   314 	}
       
   315 
       
   316 void CWsAnimGc::DrawPie(const TRect &aRect,const TPoint &aStart,const TPoint &aEnd)
       
   317 	{
       
   318 	if (!iUserActive)
       
   319 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   320 	if (iGc)
       
   321 		iGc->DrawPie(aRect,aStart,aEnd);
       
   322 	}
       
   323 
       
   324 void CWsAnimGc::DrawLine(const TPoint &aPoint1,const TPoint &aPoint2)
       
   325 	{
       
   326 	if (!iUserActive)
       
   327 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   328 	if (iGc)
       
   329 		iGc->DrawLine(aPoint1, aPoint2);
       
   330 	}
       
   331 
       
   332 void CWsAnimGc::DrawLineTo(const TPoint &aPoint)
       
   333 	{
       
   334 	if (!iUserActive)
       
   335 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   336 	if (iGc)
       
   337 		iGc->DrawLineTo(aPoint);
       
   338 	}
       
   339 
       
   340 void CWsAnimGc::DrawLineBy(const TPoint &aPoint)
       
   341 	{
       
   342 	if (!iUserActive)
       
   343 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   344 	if (iGc)
       
   345 		iGc->DrawLineBy(aPoint);
       
   346 	}
       
   347 
       
   348 void CWsAnimGc::DrawEllipse(const TRect &aRect)
       
   349 	{
       
   350 	if (!iUserActive)
       
   351 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   352 	if (iGc)
       
   353 		iGc->DrawEllipse(aRect);
       
   354 	}
       
   355 
       
   356 void CWsAnimGc::DrawRect(const TRect &aRect)
       
   357 	{
       
   358 	if (!iUserActive)
       
   359 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   360 	if (iGc)
       
   361 		iGc->DrawRect(aRect);
       
   362 	}
       
   363 
       
   364 void CWsAnimGc::DrawRoundRect(const TRect &aRect,const TSize &aCornerSize)
       
   365 	{
       
   366 	if (!iUserActive)
       
   367 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   368 	if (iGc)
       
   369 		iGc->DrawRoundRect(aRect, aCornerSize);
       
   370 	}
       
   371 
       
   372 void CWsAnimGc::Clear(const TRect &aRect)
       
   373 	{
       
   374 	if (!iUserActive)
       
   375 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   376 	if (iGc)
       
   377 		iGc->Clear(aRect);
       
   378 	}
       
   379 
       
   380 void CWsAnimGc::Clear()
       
   381 	{
       
   382 	if (!iUserActive)
       
   383 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   384 	if (iGc)
       
   385 		iGc->Clear();
       
   386 	}
       
   387 
       
   388 void CWsAnimGc::BitBlt(const TPoint &aPoint,const CFbsBitmap *aBitmap)
       
   389 	{
       
   390 	if (!iUserActive)
       
   391 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   392 	if (iGc)
       
   393 		iGc->BitBlt(aPoint, aBitmap);
       
   394 	}
       
   395 
       
   396 void CWsAnimGc::BitBlt(const TPoint &aDestination,const CFbsBitmap *aBitmap,const TRect &aSource)
       
   397 	{
       
   398 	if (!iUserActive)
       
   399 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   400 	if (iGc)
       
   401 		iGc->BitBlt(aDestination, aBitmap, aSource);
       
   402 	}
       
   403 
       
   404 void CWsAnimGc::BitBltMasked(const TPoint& aPoint,const CFbsBitmap* aBitmap,const TRect& aSourceRect,const CFbsBitmap* aMaskBitmap,TBool aInvertMask)
       
   405 	{
       
   406 	if (!iUserActive)
       
   407 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   408 	if (iGc)
       
   409 		iGc->BitBltMasked(aPoint, aBitmap, aSourceRect, aMaskBitmap, aInvertMask);
       
   410 	}
       
   411 
       
   412 void CWsAnimGc::DrawBitmap(const TPoint &aTopLeft, const CFbsBitmap *aSource)
       
   413 	{
       
   414 	if (!iUserActive)
       
   415 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   416 	if (iGc)
       
   417 		iGc->DrawBitmap(aTopLeft, aSource);
       
   418 	}
       
   419 
       
   420 void CWsAnimGc::DrawBitmap(const TRect &aDestRect, const CFbsBitmap *aSource)
       
   421 	{
       
   422 	if (!iUserActive)
       
   423 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   424 	if (iGc)
       
   425 		iGc->DrawBitmap(aDestRect, aSource);
       
   426 	}
       
   427 
       
   428 void CWsAnimGc::DrawBitmap(const TRect &aDestRect, const CFbsBitmap *aSource, const TRect &aSrcRect)
       
   429 	{
       
   430 	if (!iUserActive)
       
   431 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   432 	if (iGc)
       
   433 		iGc->DrawBitmap(aDestRect, aSource, aSrcRect);
       
   434 	}
       
   435 
       
   436 void CWsAnimGc::DrawBitmapMasked(const TRect &aDestRect, const CFbsBitmap *aBitmap, const TRect &aSrcRect, const CFbsBitmap* aMaskBitmap, TBool aInvertMask)
       
   437 	{
       
   438 	if (!iUserActive)
       
   439 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   440 	if (iGc)
       
   441 		iGc->DrawBitmapMasked(aDestRect, aBitmap, aSrcRect, aMaskBitmap, aInvertMask);
       
   442 	}
       
   443 
       
   444 void CWsAnimGc::DrawBitmapMasked(const TRect& aDestRect,const CWsBitmap* aBitmap,const TRect& aSrcRect,const CWsBitmap* aMaskBitmap, TBool aInvertMask)
       
   445 	{
       
   446 	if (!iUserActive)
       
   447 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   448 	if (iGc)
       
   449 		iGc->DrawBitmapMasked(aDestRect, aBitmap, aSrcRect, aMaskBitmap, aInvertMask);
       
   450 	}
       
   451 
       
   452 void CWsAnimGc::DrawPolyLine(const TPoint* aPointList,TInt aNumPoints)
       
   453 	{
       
   454 	if (!iUserActive)
       
   455 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   456 	if (iGc)
       
   457 		iGc->DrawPolyLine(aPointList, aNumPoints);
       
   458 	}
       
   459 
       
   460 void CWsAnimGc::DrawPolyLine(const CArrayFix<TPoint> *aPointList)
       
   461 	{
       
   462 	if (!iUserActive)
       
   463 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   464 	if (iGc)
       
   465 		iGc->DrawPolyLine(aPointList);
       
   466 	}
       
   467 
       
   468 TInt CWsAnimGc::DrawPolygon(const TPoint* aPointList,TInt aNumPoints,TFillRule aFillRule)
       
   469 	{
       
   470 	TInt result = KErrNone;
       
   471 	if (!iUserActive)
       
   472 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   473 	if (iGc)
       
   474 		result = iGc->DrawPolygon(aPointList, aNumPoints, aFillRule);
       
   475 	return result;
       
   476 	}
       
   477 
       
   478 TInt CWsAnimGc::DrawPolygon(const CArrayFix<TPoint> *aPointList,TFillRule aFillRule)
       
   479 	{
       
   480 	TInt result = KErrNone;
       
   481 	if (!iUserActive)
       
   482 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   483 	if (iGc)
       
   484 		result = iGc->DrawPolygon(aPointList, aFillRule);
       
   485 	return result;
       
   486 	}
       
   487 
       
   488 void CWsAnimGc::DrawText(const TDesC &aString,const TPoint &aPosition)
       
   489 	{
       
   490 	if (!iFont)
       
   491 		iOwningWsAnim->Panic(EWservPanicNoFont);
       
   492 	if (iGc)
       
   493 		iGc->DrawText(aString, aPosition);
       
   494 	}
       
   495 
       
   496 void CWsAnimGc::DrawText(const TDesC &aString,const TRect &aBox,TInt aBaselineOffset,TTextAlign aHoriz,TInt aLeftMrg)
       
   497 	{
       
   498 	if (!iFont)
       
   499 		iOwningWsAnim->Panic(EWservPanicNoFont);
       
   500 	if (iGc)
       
   501 		iGc->DrawText(aString, aBox, aBaselineOffset, aHoriz, aLeftMrg);	
       
   502 	}
       
   503 
       
   504 void CWsAnimGc::MoveTo(const TPoint &aPoint)
       
   505 	{
       
   506 	if (!iUserActive)
       
   507 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   508 	if (iGc)
       
   509 		iGc->MoveTo(aPoint);
       
   510 	}
       
   511 
       
   512 void CWsAnimGc::MoveBy(const TPoint &aPoint)
       
   513 	{
       
   514 	if (!iUserActive)
       
   515 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   516 	if (iGc)
       
   517 		iGc->MoveBy(aPoint);
       
   518 	}
       
   519 
       
   520 void CWsAnimGc::Plot(const TPoint &aPoint)
       
   521 	{
       
   522 	if (!iUserActive)
       
   523 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   524 	if (iGc)
       
   525 		iGc->Plot(aPoint);
       
   526 	}
       
   527 
       
   528 void CWsAnimGc::SetOrigin(const TPoint &aPoint)
       
   529 	{
       
   530 	if (!iUserActive)
       
   531 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   532 	if (iGc)
       
   533 		iGc->SetOrigin(iWin->Origin() + aPoint);
       
   534 	}
       
   535 
       
   536 void CWsAnimGc::CopyRect(const TPoint& aOffset,const TRect& aRect)
       
   537 	{
       
   538 	if (!iUserActive)
       
   539 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   540 	if (iGc)
       
   541 		iGc->CopyRect(aOffset, aRect);
       
   542 	}
       
   543 
       
   544 void CWsAnimGc::Reset()
       
   545 	{
       
   546 	CloseCurrentFont();
       
   547 	if (!iUserActive)
       
   548 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   549 	if (iGc)
       
   550 		iGc->Reset();
       
   551 	SetOrigin(TPoint(0,0));
       
   552 	CancelClippingRect();
       
   553 	CancelClippingRegion();
       
   554 	}
       
   555 
       
   556 void CWsAnimGc::CloseCurrentFont()
       
   557 	{
       
   558 	if (iFont)
       
   559 		{
       
   560 		iFont->Close();
       
   561 		iFont=NULL;
       
   562 		}
       
   563 	}
       
   564 
       
   565 /**
       
   566 @see CBitmapContext::AlphaBlendBitmaps()*/
       
   567 TInt CWsAnimGc::AlphaBlendBitmaps(const TPoint& aDestPt, const CFbsBitmap* aSrcBmp,	const TRect& aSrcRect, const CFbsBitmap* aAlphaBmp,	const TPoint& aAlphaPt)	
       
   568 	{
       
   569 	TInt result = KErrNone;
       
   570 	if (!iUserActive)
       
   571 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   572 	if (iGc)
       
   573 		result = iGc->AlphaBlendBitmaps(aDestPt, aSrcBmp, aSrcRect, aAlphaBmp, aAlphaPt);
       
   574 	return result;
       
   575 	}
       
   576 
       
   577 /*Body stub implementation. The alternate AlphaBlendBitmap function using CFbsBitmaps should instead be used*/
       
   578 TInt CWsAnimGc::AlphaBlendBitmaps(const TPoint& /*aDestPt*/, const CWsBitmap* /*aSrcBmp*/,	const TRect& /*aSrcRect*/, const CWsBitmap* /*aAlphaBmp*/,	const TPoint& /*aAlphaPt*/)
       
   579 	{
       
   580 	return KErrNone;		
       
   581 	};
       
   582 
       
   583 /**
       
   584 @see CGraphicsContext::MapColors()*/
       
   585 void CWsAnimGc::MapColors(const TRect &aRect,const TRgb *aColors,TInt aNumPairs,TBool aMapForwards)
       
   586 	{
       
   587 	if (!iUserActive)
       
   588 		iOwningWsAnim->Panic(EWservPanicAnimLeave);
       
   589 	if (iGc)
       
   590 		iGc->MapColors(aRect, aColors, aNumPairs, aMapForwards);
       
   591 	}
       
   592 	
       
   593 /**
       
   594 @see CGraphicsContext::DrawTextVertical()*/
       
   595 void CWsAnimGc::DrawTextVertical(const TDesC& aText,const TPoint& aPos,TBool aUp)
       
   596 	{
       
   597 	if (!iFont) 
       
   598 		iOwningWsAnim->Panic(EWservPanicNoFont);
       
   599 	if (iGc)
       
   600 		iGc->DrawTextVertical(aText, aPos, aUp);
       
   601 	}
       
   602 
       
   603 /**
       
   604 @see CGraphicsContext::DrawTextVertical()*/
       
   605 void CWsAnimGc::DrawTextVertical(const TDesC& aText,const TRect& aBox,TInt aBaselineOffset,TBool aUp,TTextAlign aVert,TInt aMargin)
       
   606 	{
       
   607 	if (!iFont) 
       
   608 		iOwningWsAnim->Panic(EWservPanicNoFont);
       
   609 	if (iGc)
       
   610 		iGc->DrawTextVertical(aText, aBox, aBaselineOffset, aUp, aVert, aMargin);
       
   611 	}
       
   612