uifw/ganes/src/HgVgHelper.cpp
branchRCL_3
changeset 23 3d340a0166ff
parent 10 9f56a4e1b8ab
equal deleted inserted replaced
18:0aa5fbdfbc30 23:3d340a0166ff
    37 
    37 
    38 
    38 
    39 namespace HgVgHelper
    39 namespace HgVgHelper
    40     {
    40     {
    41 
    41 
       
    42 // ---------------------------------------------------------------------------
       
    43 // CreateNonMaskedVgImageL()
       
    44 // ---------------------------------------------------------------------------
       
    45 //     
    42 static VGImage CreateNonMaskedVgImageL( const CFbsBitmap& aBitmap )
    46 static VGImage CreateNonMaskedVgImageL( const CFbsBitmap& aBitmap )
    43     {
    47     {
    44     TSize size = aBitmap.SizeInPixels();    
    48     TSize size = aBitmap.SizeInPixels();    
    45     VGImage image = vgCreateImage(VG_sRGB_565, size.iWidth, size.iHeight,VG_IMAGE_QUALITY_NONANTIALIASED);        
    49     VGImage image = vgCreateImage(VG_sRGB_565, size.iWidth, size.iHeight,VG_IMAGE_QUALITY_NONANTIALIASED);        
    46 
    50     
    47     if ( image == VG_INVALID_HANDLE )
    51     if ( image != VG_INVALID_HANDLE  ) // to check if the image was created 
    48         {
    52         {
    49         User::Leave(KErrNoMemory);
    53         if (aBitmap.DisplayMode() == EColor64K && !aBitmap.IsCompressedInRAM())
    50         }
    54             {
    51     
    55             aBitmap.BeginDataAccess();
    52     if (aBitmap.DisplayMode() == EColor64K && !aBitmap.IsCompressedInRAM())
    56             TInt stride = aBitmap.DataStride();
    53         {
    57             TUint8* ptr = (TUint8*)aBitmap.DataAddress();
    54         aBitmap.BeginDataAccess();
    58             
    55         TInt stride = aBitmap.DataStride();
    59             vgGetError(); // to zero the error flag
    56         TUint8* ptr = (TUint8*)aBitmap.DataAddress();
    60             vgImageSubData (image, ptr, stride, VG_sRGB_565, 0, 0, size.iWidth, size.iHeight );
    57         vgImageSubData (image, ptr, stride, VG_sRGB_565, 0, 0, size.iWidth, size.iHeight );        
    61             
    58         aBitmap.EndDataAccess();
    62             if(vgGetError() != VG_NO_ERROR)
    59         }
    63                 {
    60     else
    64                 vgDestroyImage(image);
    61         {
    65                 image = VG_INVALID_HANDLE;
    62         TSize size = aBitmap.SizeInPixels();
    66                 }
    63         CHgVgDrawBuffer* temp = CHgVgDrawBuffer::NewL(size, EColor64K);
    67             aBitmap.EndDataAccess();
    64         temp->Gc().BitBlt(TPoint(0,0), &aBitmap);
    68             }
    65         temp->GetDrawBufferToVgImage(size, TPoint(0,0), image, 
    69         else
    66                 VG_sRGB_565);
    70             {
    67         delete temp;        
    71             TSize size = aBitmap.SizeInPixels();
    68         }
    72             CHgVgDrawBuffer* temp = CHgVgDrawBuffer::NewL(size, EColor64K);
       
    73             temp->Gc().BitBlt(TPoint(0,0), &aBitmap);
       
    74             temp->GetDrawBufferToVgImage(size, TPoint(0,0), image, 
       
    75                     VG_sRGB_565);
       
    76             delete temp;        
       
    77             }
       
    78         }
       
    79 
    69     return image;
    80     return image;
    70     }
    81     }
    71 
    82 
       
    83 // ---------------------------------------------------------------------------
       
    84 // CreateMaskedVgImageL()
       
    85 // ---------------------------------------------------------------------------
       
    86 //     
    72 static VGImage CreateMaskedVgImageL( CFbsBitmap* aBitmap, CFbsBitmap* aMask )
    87 static VGImage CreateMaskedVgImageL( CFbsBitmap* aBitmap, CFbsBitmap* aMask )
    73     {
    88     {
    74     TSize size = aBitmap->SizeInPixels();
    89     TSize size = aBitmap->SizeInPixels();
    75     CHgVgDrawBuffer* temp = CHgVgDrawBuffer::NewL(size, EColor16MA);
    90     CHgVgDrawBuffer* temp = CHgVgDrawBuffer::NewL(size, EColor16MA);
    76     temp->Gc().SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha);
    91     temp->Gc().SetDrawMode(CGraphicsContext::EDrawModeWriteAlpha);