menufw/hierarchynavigator/hnpresentationmodel/src/hnattrimgprovsvgimage.cpp
changeset 0 f72a12da539e
equal deleted inserted replaced
-1:000000000000 0:f72a12da539e
       
     1 /*
       
     2 * Copyright (c) 2007-2008 Nokia Corporation and/or its subsidiary(-ies).
       
     3 * All rights reserved.
       
     4 * This component and the accompanying materials are made available
       
     5 * under the terms of "Eclipse Public License v1.0"
       
     6 * which accompanies this distribution, and is available
       
     7 * at the URL "http://www.eclipse.org/legal/epl-v10.html".
       
     8 *
       
     9 * Initial Contributors:
       
    10 * Nokia Corporation - initial contribution.
       
    11 *
       
    12 * Contributors:
       
    13 *
       
    14 * Description:  image provider for image file
       
    15 *
       
    16 */
       
    17 
       
    18 
       
    19 #include <AknsSkinInstance.h>
       
    20 #include <AknsUtils.h>
       
    21 #include "hnconvutils.h"
       
    22 #include "hnglobals.h"
       
    23 #include "hnattrimgprovsvgimage.h"
       
    24 #include "SVGEngineInterfaceImpl.h"
       
    25 
       
    26 // ============================ MEMBER FUNCTIONS =============================
       
    27 
       
    28 
       
    29 // ---------------------------------------------------------------------------
       
    30 // 
       
    31 // ---------------------------------------------------------------------------
       
    32 //
       
    33 CHnAttrImgProvSvgImage::CHnAttrImgProvSvgImage()
       
    34     {
       
    35     }
       
    36 
       
    37 // ---------------------------------------------------------------------------
       
    38 // 
       
    39 // ---------------------------------------------------------------------------
       
    40 //
       
    41 void CHnAttrImgProvSvgImage::ConstructL( const TDesC& aFileName )
       
    42     {
       
    43     iBitmap = new (ELeave) CFbsBitmap();
       
    44     iMask = new (ELeave) CFbsBitmap();
       
    45     TFontSpec fontSpec;
       
    46        
       
    47     iDummyBitmap = new( ELeave ) CFbsBitmap;
       
    48     User::LeaveIfError( iDummyBitmap->Create( TSize( 0, 0 ), EGray2 ) );
       
    49 
       
    50     
       
    51     iSvgEngine = CSvgEngineInterfaceImpl::NewL( iDummyBitmap, this, fontSpec );
       
    52     iSvgEngine->SetBackgroundColor( 0 );
       
    53     iSvgEngine->SetDRMMode( EFalse );
       
    54     
       
    55     User::LeaveIfError( iSvgEngine->PrepareDom( aFileName, iHandle )->SystemErrorCode() );
       
    56     }
       
    57 
       
    58 // ---------------------------------------------------------------------------
       
    59 // 
       
    60 // ---------------------------------------------------------------------------
       
    61 //
       
    62 TInt CHnAttrImgProvSvgImage::RenderIcon( TSize aDesiredIconSize )
       
    63     {   
       
    64     TInt err = iBitmap->Create( aDesiredIconSize, EColor64K );
       
    65     if ( err == KErrNone )
       
    66         {
       
    67         err = iMask->Create( aDesiredIconSize, EGray256 );
       
    68         }
       
    69     if ( err == KErrNone )
       
    70         {
       
    71         iSvgEngine->UseDom( iHandle, iBitmap, iMask );
       
    72         iSvgEngine->SetPreserveAspectRatio( NULL, ESvgPreserveAspectRatio_XmidYmid, 
       
    73                 ESvgMeetOrSlice_Meet, ETrue);
       
    74         iSvgEngine->Start();
       
    75         }
       
    76     return err; 
       
    77     }
       
    78 // ---------------------------------------------------------------------------
       
    79 // 
       
    80 // ---------------------------------------------------------------------------
       
    81 //
       
    82 CHnAttrImgProvSvgImage::~CHnAttrImgProvSvgImage()
       
    83     {
       
    84     if ( iSvgEngine )
       
    85     	{
       
    86     	iSvgEngine->UseDom( iHandle, NULL, NULL );
       
    87     	iSvgEngine->DeleteDom( iHandle );
       
    88     	}
       
    89     delete iDummyBitmap;
       
    90     delete iSvgEngine;
       
    91     }
       
    92 
       
    93 // ---------------------------------------------------------------------------
       
    94 // 
       
    95 // ---------------------------------------------------------------------------
       
    96 //
       
    97 EXPORT_C CHnAttrImgProvSvgImage* CHnAttrImgProvSvgImage::NewL( 
       
    98         const TDesC& aFileName )
       
    99     {
       
   100     CHnAttrImgProvSvgImage* self = NewLC( aFileName );
       
   101     CleanupStack::Pop( self );
       
   102     return self;
       
   103     }
       
   104 
       
   105 // ---------------------------------------------------------------------------
       
   106 // 
       
   107 // ---------------------------------------------------------------------------
       
   108 //
       
   109 EXPORT_C CHnAttrImgProvSvgImage* CHnAttrImgProvSvgImage::NewLC( 
       
   110         const TDesC& aFileName )
       
   111     {
       
   112     CHnAttrImgProvSvgImage* self = new( ELeave ) CHnAttrImgProvSvgImage;
       
   113     CleanupStack::PushL( self );
       
   114     self->ConstructL( aFileName );
       
   115     return self;
       
   116     }
       
   117 
       
   118 // ---------------------------------------------------------------------------
       
   119 // 
       
   120 // ---------------------------------------------------------------------------
       
   121 //
       
   122 CGulIcon* CHnAttrImgProvSvgImage::GetIcon( TSize* aDesiredIconSize )
       
   123     {
       
   124     TInt err = KErrNone;
       
   125     if ( !iIconHolder || !iIconHolder->GetGulIcon() )
       
   126         {
       
   127         TSize targetSize = aDesiredIconSize ?
       
   128             *aDesiredIconSize : TSize( KDefaultSvgIconSize, KDefaultSvgIconSize );
       
   129         err = RenderIcon( targetSize );
       
   130         if ( err == KErrNone )
       
   131             {
       
   132             TRAP( err, CreateIconL( iBitmap, iMask ) );
       
   133             }
       
   134         }
       
   135     else if ( aDesiredIconSize && iBitmap->SizeInPixels() != *aDesiredIconSize )
       
   136         {
       
   137         err = RenderIcon( *aDesiredIconSize );
       
   138         }
       
   139     
       
   140     return ( !err && iIconHolder ? iIconHolder->GetGulIcon() : NULL );
       
   141     }
       
   142 
       
   143 // ---------------------------------------------------------------------------
       
   144 // 
       
   145 // ---------------------------------------------------------------------------
       
   146 //
       
   147 CHnIconHolder* CHnAttrImgProvSvgImage::GetIconHolder( TSize* aDesiredIconSize )
       
   148     {
       
   149     GetIcon( aDesiredIconSize );
       
   150     return iIconHolder;
       
   151     }
       
   152 
       
   153 // ---------------------------------------------------------------------------
       
   154 // 
       
   155 // ---------------------------------------------------------------------------
       
   156 //
       
   157 void CHnAttrImgProvSvgImage::UpdateScreen()
       
   158 	{
       
   159 
       
   160 	}
       
   161     
       
   162 // ---------------------------------------------------------------------------
       
   163 // 
       
   164 // ---------------------------------------------------------------------------
       
   165 //    
       
   166 TBool CHnAttrImgProvSvgImage::ScriptCall( const TDesC& /* aScript */,
       
   167 		CSvgElementImpl* /* aCallerElement */ )
       
   168 	{
       
   169 	return EFalse;
       
   170 	}
       
   171 
       
   172 // ---------------------------------------------------------------------------
       
   173 // 
       
   174 // ---------------------------------------------------------------------------
       
   175 //
       
   176 TInt CHnAttrImgProvSvgImage::FetchImage( const TDesC& /* aUri */, 
       
   177 		RFs& /* aSession */, RFile& /* aFileHandle */ )
       
   178 	{
       
   179 	return KErrNotSupported;
       
   180 	}
       
   181 
       
   182 // ---------------------------------------------------------------------------
       
   183 // 
       
   184 // ---------------------------------------------------------------------------
       
   185 //
       
   186 TInt CHnAttrImgProvSvgImage::FetchFont( const TDesC& /* aUri */, 
       
   187 		RFs& /* aSession */, RFile& /* aFileHandle */ )
       
   188 	{
       
   189 	return KErrNotSupported;
       
   190 	}
       
   191 
       
   192 // ---------------------------------------------------------------------------
       
   193 // 
       
   194 // ---------------------------------------------------------------------------
       
   195 //
       
   196 void CHnAttrImgProvSvgImage::UpdatePresentation(
       
   197 		const TInt32&  /*aNoOfAnimation*/ )
       
   198 	{
       
   199 	
       
   200 	}