williamr@2: /*
williamr@2: * Copyright (c) 2002 Nokia Corporation and/or its subsidiary(-ies).
williamr@2: * All rights reserved.
williamr@2: * This component and the accompanying materials are made available
williamr@2: * under the terms of the License "Symbian Foundation License v1.0" to Symbian Foundation members and "Symbian Foundation End User License Agreement v1.0" to non-members
williamr@2: * which accompanies this distribution, and is available
williamr@2: * at the URL "http://www.symbianfoundation.org/legal/licencesv10.html".
williamr@2: *
williamr@2: * Initial Contributors:
williamr@2: * Nokia Corporation - initial contribution.
williamr@2: *
williamr@2: * Contributors:
williamr@2: *
williamr@2: * Description:   
williamr@2: *
williamr@2: */
williamr@2: 
williamr@2: 
williamr@2: 
williamr@2: 
williamr@2: #ifndef AKN_ICON_SRV_CLIENT_H
williamr@2: #define AKN_ICON_SRV_CLIENT_H
williamr@2: 
williamr@2: #include <e32base.h>
williamr@2: #include <AknIconUtils.h>
williamr@2: 
williamr@2: struct TAknIconParams;
williamr@2: struct TAknIconInitData;
williamr@2: class CAknBitmap;
williamr@2: class CAknIconManager;
williamr@2: 
williamr@2: 
williamr@2: /**
williamr@2:  * A client-side handle to a session with an icon server which allows handling
williamr@2:  * icons (bitmaps).
williamr@2:  * 
williamr@2:  * @since 3.0
williamr@2:  */
williamr@2: class RAknIconSrvClient : public RSessionBase
williamr@2:     {
williamr@2:     
williamr@2:     public: // New functions
williamr@2: 
williamr@2:         /**
williamr@2:          * C++ default constructor.
williamr@2:          */      
williamr@2:         RAknIconSrvClient();
williamr@2: 
williamr@2:         /**
williamr@2:          * Connects AknIconSrv session. It is stored in TLS.
williamr@2:          * Application framework calls this in application startup.
williamr@2:          *
williamr@2:          * @since 3.0
williamr@2:          * @return Symbian OS standard error code.
williamr@2:          */      
williamr@2:         IMPORT_C static TInt Connect();
williamr@2: 
williamr@2:         /**
williamr@2:          * Disconnects the session.
williamr@2:          * @since 3.0
williamr@2:          */
williamr@2:         IMPORT_C static void Disconnect();
williamr@2: 
williamr@2:         /**
williamr@2:          * Returns the connected server client from TLS.
williamr@2:          *
williamr@2:          * @return The connected server client from TLS.
williamr@2:          * @panic EClientSessionNotConnected @c Connect() has not been called
williamr@2:          *        successfully earlier.
williamr@2:          */
williamr@2:         static RAknIconSrvClient* GetSession();
williamr@2: 
williamr@2:     public: // But not exported.
williamr@2: 
williamr@2:         /**
williamr@2:          * Initializes the given bitmap and mask according to the member data 
williamr@2:          * stored in them and the given pixel size.
williamr@2:          *
williamr@2:          * @param[in] aBitmap Bitmap.
williamr@2:          * @param[in] aMask Mask of the bitmap.
williamr@2:          * @param[out] aContentDimensions The content dimensions if it is 
williamr@2:          *             a SVG icon.
williamr@2:          * @param aInfo parameters of the icon.
williamr@2:          */
williamr@2:         void InitializeIconL( 
williamr@2:                 CAknBitmap& aBitmap,
williamr@2:                 CAknBitmap& aMask,
williamr@2:                 TAknContentDimensions& aContentDimensions, 
williamr@2:                 const TAknIconParams& aInfo ) const;
williamr@2: 
williamr@2:         /**
williamr@2:          * Frees the shared bitmap.
williamr@2:          *
williamr@2:          * @param aBitmap Bitmap.
williamr@2:          */
williamr@2:         void FreeBitmap( CAknBitmap& aBitmap ) const;
williamr@2: 
williamr@2:         /**
williamr@2:          * Gets content dimensions of the icon.
williamr@2:          *
williamr@2:          * @param[in] aBitmap Bitmap.
williamr@2:          * @param[out] aContentDimensions The content dimensions of an icon.
williamr@2:          * @return Symbian OS standard error code .
williamr@2:          */
williamr@2:         TInt GetContentDimensions( 
williamr@2:                 CAknBitmap& aBitmap, 
williamr@2:                 TAknContentDimensions& aContentDimensions ) const;
williamr@2: 
williamr@2:         /**
williamr@2:          * Preserves icon data (e.g. SVG-T DOM tree) in memory.
williamr@2:          *
williamr@2:          * @param aBitmap Bitmap.
williamr@2:          * @return Symbian OS standard error code .
williamr@2:          */
williamr@2:         TInt PreserveIconData( CAknIconManager& aBitmap ) const;
williamr@2: 
williamr@2:         /**
williamr@2:          * Removes icon data (e.g. SVG-T DOM tree) from the memory.
williamr@2:          *
williamr@2:          * @param aBitmap Bitmap.
williamr@2:          */
williamr@2:         void DestroyIconData( CAknIconManager& aBitmap ) const;
williamr@2: 
williamr@2:         /**
williamr@2:          * Retrieves initialization data from server side.
williamr@2:          *
williamr@2:          * @param[out] aData Initialization data.
williamr@2:          */
williamr@2:         void GetInitData( TAknIconInitData& aData ) const;
williamr@2: 
williamr@2:         /**
williamr@2:          * Test functions (debug only).
williamr@2:          */
williamr@2:         void __SERVER_HEAP_MARK() const;
williamr@2:         void __SERVER_HEAP_MARKEND() const;
williamr@2:         void __SERVER_HEAP_FAILNEXT( TInt aCount ) const;
williamr@2:         void __SERVER_HEAP_FAILNEXT_INCREASING( TInt aCount ) const;
williamr@2:         void __SERVER_HEAP_RESET() const;
williamr@2:         void __SERVER_RESET_DYNAMICALLY_CHANGING_ALLOCATIONS() const;
williamr@2:         TInt __SERVER_HEAP_USED() const;
williamr@2:         void __SERVER_SET_PREFERRED_ICON_DISPLAY_MODE(
williamr@2:                                                     TDisplayMode aMode ) const;
williamr@2: 
williamr@2:         /**
williamr@2:          * Connects to server.
williamr@2:          *
williamr@2:          * @return Symbian OS standard error code .
williamr@2:          */
williamr@2:         TInt ConnectToServer();
williamr@2:         
williamr@2: 		/**
williamr@2: 		 * Enable or disable the AknIcon cache.
williamr@2: 		 *
williamr@2: 		 * @return Symbian OS standard error code .
williamr@2:   		 */
williamr@2:         TInt EnableCache(TBool aEnable);
williamr@2: 
williamr@2:     private: // Data
williamr@2:         TInt iConnections;
williamr@2:     };
williamr@2: 
williamr@2: #endif // AKN_ICON_SRV_CLIENT_H
williamr@2: 
williamr@2: // End of File