graphicsdeviceinterface/screendriver/sgeneric/scdraw.inl
changeset 187 9f66f99ee56f
parent 45 36b2e23a8629
equal deleted inserted replaced
103:2717213c588a 187:9f66f99ee56f
    96 	iHelper.Update();
    96 	iHelper.Update();
    97 	}
    97 	}
    98 
    98 
    99 template <class T> void CGenericScreenDevice<T>::Update(const TRegion& aRegion)
    99 template <class T> void CGenericScreenDevice<T>::Update(const TRegion& aRegion)
   100 	{
   100 	{
   101 	iHelper.Update(aRegion);
   101     if(!aRegion.IsEmpty() && !aRegion.CheckError())
       
   102         {
       
   103         if (aRegion.Count()>KMaxUpdateRegionRectangles)
       
   104             {
       
   105             UpdateRegion(aRegion.BoundingRect());
       
   106             }
       
   107         else
       
   108             {
       
   109             TInt rcCnt = aRegion.Count();
       
   110             for (TInt ii=0; ii < rcCnt; ++ii)
       
   111                 {  
       
   112                 UpdateRegion(aRegion[ii]);  //Applies deorientate (offset, scale, rotate)
       
   113                 }
       
   114             }
       
   115         }
       
   116     Update();
   102 	}
   117 	}
   103 
   118 
   104 template <class T> void CGenericScreenDevice<T>::UpdateRegion(const TRect& aRect)
   119 template <class T> void CGenericScreenDevice<T>::UpdateRegion(const TRect& aRect)
   105 	{
   120     {
   106 	iHelper.UpdateRegion(aRect);
   121     const TRect rect = CDrawXxxBppBitmap::DeOrientate(aRect);//rect - physical coordinates
   107 	}
   122     
       
   123     iHelper.UpdateRegion(rect);
       
   124     }
   108 
   125 
   109 template <class T> TInt CGenericScreenDevice<T>::GetInterface(TInt aInterfaceId, TAny*& aInterface)
   126 template <class T> TInt CGenericScreenDevice<T>::GetInterface(TInt aInterfaceId, TAny*& aInterface)
   110 	{
   127 	{
   111 	if(aInterfaceId == KSurfaceInterfaceID)
   128 	if(aInterfaceId == KSurfaceInterfaceID)
   112 	    {
   129 	    {