graphicsutils/commongraphicsheaders/inc/extensioncontainer.h
author Faisal Memon <faisal.memon@nokia.com>
Fri, 14 May 2010 17:03:25 +0100
branchNewGraphicsArchitecture
changeset 67 9c70c0a878c0
parent 0 5d03bc08d59c
permissions -rw-r--r--
Merge 3. Improve performance by switching to less aggressive settings for RI_NUM_TESSELLATED_SEGMENTS and RI_MAX_SAMPLES. Ignored the WIN32 specific API decoration defines when doing the merge. Note the code is now optimised in riPath.cpp to change from RI_NUM_TESSELLATED_SEGMENTS to _QUAD, _CUBIC, _ARC settings which are each now set to 8. SVG Tiger now renders in 5 seconds (15 seconds quicker). The quality of the OVG icons is slightly reduced but still very useable.

// Copyright (c) 1995-2009 Nokia Corporation and/or its subsidiary(-ies).
// All rights reserved.
// This component and the accompanying materials are made available
// under the terms of "Eclipse Public License v1.0"
// which accompanies this distribution, and is available
// at the URL "http://www.eclipse.org/legal/epl-v10.html".
//
// Initial Contributors:
// Nokia Corporation - initial contribution.
//
// Contributors:
//
// Description:
//

#ifndef EXTENSIONCONTAINER_H_
#define EXTENSIONCONTAINER_H_

class CExtensionContainer:public CBase
    {
public:
    /** Get Extension Interface.
     *  Implemented using the CBase::Extension_() mechanism 
     *  Note that the pointer returned is only good for the lifetime of the called CBase derived object.
     *  @param  aExtensionId    The GUID/ Well-known ID of the interface
     *  @return pointer to the interface or NULL if not available
     **/
        inline TAny* GetInterface(TUint aExtensionId);
    /** Get Extension Interface - templated helper.
     *  Resolves the ID and returned pointer based on the class name.
     *  Note that the pointer returned is only good for the lifetime of the called CBase derived object.
     *  Class name should support ETypeId intergral value, else use non-template version. 
     *  @param  MClass  The class of the interface with embedded GUID / Well known ID 
     *  @return pointer to the interface or NULL if not available
     **/
        template <class MClass> MClass* GetInterface()
        {
            return static_cast<MClass*>(GetInterface(MClass::ETypeId));
        }
    };

inline TAny* CExtensionContainer::GetInterface(TUint aExtensionId)
    {
    TAny*   retVal=NULL;
    //Note that extension is intentionally not overloaded in CExtensionContainer
    if (this->Extension_(aExtensionId,retVal,NULL)<KErrNone)
        {
        return NULL;
        }
    else
        {
        return retVal;
        }
    }

#endif /* EXTENSIONCONTAINER_H_ */