uifw/ganes/src/HgVgSkinRenderer.cpp
branchRCL_3
changeset 16 71dd06cfe933
parent 10 9f56a4e1b8ab
equal deleted inserted replaced
15:08e69e956a8c 16:71dd06cfe933
    57 // -----------------------------------------------------------------------------
    57 // -----------------------------------------------------------------------------
    58 //
    58 //
    59 void CHgVgSkinRenderer::ConstructL ()
    59 void CHgVgSkinRenderer::ConstructL ()
    60     {
    60     {
    61         
    61         
    62     iDrawBuffer = CHgVgDrawBuffer::NewL( TSize(iRect.Width(), iRect.Height()), EColor64K );
    62     iDrawBuffer = CHgVgDrawBuffer::NewL( TSize(iRect.Width(), iRect.Height()), EColor16MA );
    63 
    63 
    64     
    64     
    65     }
    65     }
    66 
    66 
    67 // -----------------------------------------------------------------------------
    67 // -----------------------------------------------------------------------------
    94 // -----------------------------------------------------------------------------
    94 // -----------------------------------------------------------------------------
    95 //
    95 //
    96 void CHgVgSkinRenderer::UpdateSkinL(const MObjectProvider* aProvider, 
    96 void CHgVgSkinRenderer::UpdateSkinL(const MObjectProvider* aProvider, 
    97         const CCoeControl* aControl)
    97         const CCoeControl* aControl)
    98     {
    98     {
    99     // render skin to draw buffer
       
   100     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
       
   101     MAknsControlContext* cc = AknsDrawUtils::ControlContext( aProvider );
       
   102     AknsDrawUtils::DrawBackground( skin, cc, aControl, iDrawBuffer->Gc(), TPoint(0,0), 
       
   103             aControl->Rect(), KAknsDrawParamDefault );
       
   104 
       
   105     // destroy old vg image
    99     // destroy old vg image
   106     if (iSkinImage != VG_INVALID_HANDLE)
   100     if (iSkinImage != VG_INVALID_HANDLE)
   107         {
   101         {
   108         vgDestroyImage(iSkinImage);
   102         vgDestroyImage(iSkinImage);
   109         iSkinImage = VG_INVALID_HANDLE;
   103         iSkinImage = VG_INVALID_HANDLE;
   110         }
   104         }
   111 
   105 
   112     // create new image for the skin
   106     // render skin to draw buffer
   113     iSkinImage = vgCreateImage(VG_sRGB_565, 
   107     MAknsSkinInstance* skin = AknsUtils::SkinInstance();
   114             iRect.Width(), iRect.Height(), 
   108     MAknsControlContext* cc = AknsDrawUtils::ControlContext( aProvider );
   115             VG_IMAGE_QUALITY_NONANTIALIASED);
   109     if( AknsDrawUtils::DrawBackground( skin, cc, aControl, iDrawBuffer->Gc(), TPoint(0,0), 
   116     
   110             aControl->Rect(), KAknsDrawParamDefault ) )
   117     // handle out of memory
       
   118     if( iSkinImage == VG_INVALID_HANDLE )
       
   119         {
   111         {
   120         User::Leave(KErrNoMemory);
   112         // create new image for the skin
       
   113         iSkinImage = vgCreateImage(VG_sRGBA_8888, 
       
   114                 iRect.Width(), iRect.Height(), 
       
   115                 VG_IMAGE_QUALITY_NONANTIALIASED);
       
   116         
       
   117         // handle out of memory
       
   118         if( iSkinImage == VG_INVALID_HANDLE )
       
   119             {
       
   120             User::Leave(KErrNoMemory);
       
   121             }
       
   122                 
       
   123         // Copy to draw buffer to vg image
       
   124         iDrawBuffer->GetDrawBufferToVgImage(TRect(TPoint(0,0), TPoint(iRect.Width(), iRect.Height())), 
       
   125                 TPoint(0,0), iSkinImage, VG_sARGB_8888);    
   121         }
   126         }
   122             
       
   123     // Copy to draw buffer to vg image
       
   124     iDrawBuffer->GetDrawBufferToVgImage(TRect(TPoint(0,0), TPoint(iRect.Width(), iRect.Height())), 
       
   125             TPoint(0,0), iSkinImage, VG_sRGB_565);    
       
   126     }
   127     }
   127 
   128 
   128 void CHgVgSkinRenderer::SetRect( const TRect& aRect )
   129 void CHgVgSkinRenderer::SetRect( const TRect& aRect )
   129     {
   130     {
   130     iRect = aRect;
   131     iRect = aRect;
   135 // Draws skin.
   136 // Draws skin.
   136 // -----------------------------------------------------------------------------
   137 // -----------------------------------------------------------------------------
   137 //
   138 //
   138 void CHgVgSkinRenderer::Draw() const
   139 void CHgVgSkinRenderer::Draw() const
   139     {
   140     {
   140     HgVgHelper::DrawImage(iSkinImage, TPoint(0, 0), iRect, EFalse, iLandscape);
   141     
       
   142     VGfloat color[] = {255,255,255,0};
       
   143     vgSetfv(VG_CLEAR_COLOR, 4, color);
       
   144     if(iLandscape)
       
   145         vgClear(0, 0, iRect.Height(), iRect.Width());
       
   146     else
       
   147         vgClear(0, 0, iRect.Width(), iRect.Height());
       
   148     
       
   149     if( iSkinImage != VG_INVALID_HANDLE )
       
   150         HgVgHelper::DrawImage(iSkinImage, TPoint(0, 0), iRect, EFalse, iLandscape);
   141     }
   151     }
   142 
   152 
   143 void CHgVgSkinRenderer::EnableLanscapeRendering(TBool aLandscape)
   153 void CHgVgSkinRenderer::EnableLanscapeRendering(TBool aLandscape)
   144 {
   154 {
   145     iLandscape = aLandscape;
   155     iLandscape = aLandscape;