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; |