diff -r db5c883ad1c5 -r 1902ade171ab svgtopt/SVGTPlugin/inc/Svgtplugin.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/svgtopt/SVGTPlugin/inc/Svgtplugin.h Wed Sep 01 12:20:46 2010 +0100 @@ -0,0 +1,333 @@ +/* +* Copyright (c) 2003 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: SVGT Plugin Implementation header file + * +*/ + + +#ifndef __SVGTPLUGIN_H +#define __SVGTPLUGIN_H + +#include +#include +#include +#include +#include + +#include +//SVGT Engine interface +#include +#include +#include +#include "SVGListener.h" + +#include +#include + +#include + +#include "MRepositoryVolumeObserver.h" + +class CSvgtPlugin; +class CSvgEngineInterfaceImpl; +class CFbsBitmap; + +class CVolumeKeyListener; +class CRepositoryVolumeListener; +/****************************************** +This class is specific to ECom Style Plugin. +This is used for passing plugin specific initialization information to and from +browser. +*******************************************/ + +IMPORT_C NPError InitializeFuncs(NPPluginFuncs* aPpf); + +const TInt KSvgtPluginImplementationValue = 0x101F8823; //implementation id Svgt Ecom Plugin + +class CSvgtPluginEcomMain : public CEcomBrowserPluginInterface + { + public: // Functions from base classes + static CSvgtPluginEcomMain* NewL(TAny* aInitParam); + ~CSvgtPluginEcomMain(); + NPNetscapeFuncs* Funcs() {return iNpf;} + private: + CSvgtPluginEcomMain(NPNetscapeFuncs* aNpf); + void ConstructL(NPPluginFuncs* aPluginFuncs); + NPNetscapeFuncs* iNpf; + }; + +/**************************************** +Class CSvgtPluginControl +Class to Handle UI related actions +****************************************/ + +class CSvgtPluginControl : public CCoeControl, public MCoeControlObserver, + public MPluginNotifier, public MHWRMLightObserver + + { +public: + ~CSvgtPluginControl(); + void ConstructL(CSvgtPlugin *aPlugin, const CCoeControl *aParentControl); + TKeyResponse OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType); + void FocusChanged(TDrawNow aDrawNow); +private: // new - possible notifications +#ifndef ER5 + TCoeInputCapabilities InputCapabilities() const; +#endif + void ApplicationFocusChanged(TBool aInFocus); + void SystemNotification(); + void Draw(const TRect& aRect) const; + TInt CountComponentControls() const; + CCoeControl* ComponentControl(TInt aIndex) const; + void HandlePointerEventL(const TPointerEvent& aPointerEvent); + void SizeChanged(); + void HandleControlEventL(CCoeControl* aControl, TCoeEvent aEventType); +private: // in MPluginNottify in S60 + TInt NotifyL(TNotificationType aCallType, void* aParam); +public: //From MEikMenuObserver + + +public: + void LightStatusChanged(TInt aTarget, CHWRMLight::TLightStatus aStatus); + CHWRMLight* iLightObserver; + void AsFile(const TDesC& fname,NPStream* stream); + TBool IsAsFileCalled(); + TDesC& GetFilename(); + +private: + void UpdatePointer(TInt aShiftX =0 , TInt aShiftY=0); + +public: + TSize iContentDimension; +private: + CSvgtPlugin *iPlugin; + TInt iPointerDx, iPointerDy;// increment decrement + TInt iPointerX, iPointerY;//actual Pointer position with respect to Document. + TBool iAsFileCalled; + TBuf<256> iFilename; + TBool iShowCursor; + TInt iXPosAtMouseDown; + TInt iYPosAtMouseDown; + TKeyEvent iPreviousScanCode; //Introduced to differentiate long keypress and short key press + + }; + + +/******************************************************* +Class CSvgtPlugin +********************************************************/ + +class CSvgtPlugin : public CBase, + public MSvgRequestObserver, + public MSvgHyperlinkListener, + public MSvgViewPortListener + , + public MRepositoryVolumeObserver + { + struct ImageInfo + { + TBuf<256> iImageRefUri; + TBool iImagePendingOps; + }; + +public: + static CSvgtPlugin* NewL(NPP anInstance); + ~CSvgtPlugin(); + void ConstructL(NPP anInstance); + void PrepareToExitL(); + CSvgtPluginControl* Control(); + void GetSizeOfRenderBuffer(TSize& aSize); + NPP Instance(); + void SetWindowL(const NPWindow *aWindow,const TRect& aRect); + /** + * ResizeWindow This function set width & height to the browser + * and tell brower to resize. + * + * @since S60 3.1 + * @param TInt width that needed to be used. + * @param TInt height that needed to be used. + * @return void + */ + void ResizeWindow(TInt width, TInt height); + + /** + * AdjustDimention + * + * @since S60 3.1 + * @return ETrue if dimention needs to be changed. EFalse if dimention + * remains the same. + */ + TBool AdjustDimention( TBool aWidthInPercentage, + TBool aHeightInPercentage ); + + /** + * This function retrieves attributes from HTML that is + * passed in by browser engine. + * + * @since S60 3.1 + * @param NPMIMEType + * @param NPP + * @param uint16 + * @param DesC16Array* attribute names + * @param CDesC16Array* attribute values + * @param NPSavedData* + * @return NPError + */ + NPError SvgPluginNew(NPMIMEType pluginType, NPP instance, uint16 mode, + CDesC16Array* argn, CDesC16Array* argv, NPSavedData* saved); + +public: // implements MSvgRequestObserver + + void UpdateScreen(); + + TBool ScriptCall( const TDesC& aScript, + CSvgElementImpl* aCallerElement ); + + TInt FetchImage( const TDesC& aUri, RFs& aSession, RFile& aFileHandle ); + + TInt FetchFont( const TDesC& aUri, RFs& aSession, RFile& aFileHandle ); + + void GetSmilFitValue(TDes& aSmilValue); + + void UpdatePresentation(const TInt32& aNoOfAnimation); + // MHyperlinkListener interface methods + TBool LinkEntered( const TDesC& aUri ); + TBool LinkExited( const TDesC& aUri ); + TBool LinkActivated( const TDesC& aUri ); + TBool LinkActivatedWithShow(const TDesC& aUri,const TDesC& aShow); + //MSvgViewPortListener method + void GetViewPort(TInt getWidth, TInt getHeight,TBool isWidthInPer, TBool isHeightInPer, TInt &setWidth, TInt &setHeight); + + // From MRepositoryVolumeObserver + void VolumeChanged(TInt aNewValue); + + TBool LoadSvgFile( const TDesC& aFilename ); + +private: + + void FetchImageL(const TDesC& aUri); +public: + CFbsBitmap * iRenderBuffer; + TSize iControlSize; + TBool iSetWindowCalled; + TBool iStartCalled; + CSvgEngineInterfaceImpl * iSvgModule; + TInt iRenderWidth; + TInt iRenderHeight; + TInt iObjectWidth; + TInt iObjectHeight; + NPWindow iCurrentWindow; + + TBool iTotalNumerOfAnimation, iStaticContent; + + /*Image Rendering*/ + RPointerArray iImageUrlInfoList; + + TInt iViewPortWidth; + TInt iViewPortHeight; +private: + + CVolumeKeyListener* iKeyListener; + CRepositoryVolumeListener* iRepositoryListener; + + MPluginAdapter* iPluginAdapter; + + //Control of UI for SVGT Engine + CCoeControl * iParentControl; + CSvgtPluginControl * iControl; + NPP iInstance; + TBool iIsRenderBufferDefined; + TInt iResourceFileIndex; + TBool iExpectedDefaultSize; + TBool iAdjusted; + // Flag indicates whether object height is specified + // as percentage value + TBool iObjHeightInPercentage; + // Flag indicates whether object width is specified + // as percentage value + TBool iObjWidthInPercentage; + + //While parsing are object width height are specified or not + TBool iObjectWidthSpecified; + TBool iObjectHeightSpecified; + }; + + +/********************************************************************************* + + Plugin API methods + +*/ + +/** + * Create a plugin. + */ +NPError SvgtPluginNewp(NPMIMEType pluginType, NPP instance, uint16 mode, CDesCArray* argn, CDesCArray* argv, NPSavedData* saved); + +/** + * Destroy a plugin. + */ +NPError SvgtPluginDestroy(NPP instance, NPSavedData** save); + +/** + * This is the parent window of a plugin. + */ +NPError SvgtPluginSetWindow(NPP instance, NPWindow* window); + +/** + * A new data stream has been created for sending data to the plugin. + */ +NPError SvgtPluginNewStream(NPP instance, NPMIMEType type, NPStream* stream, NPBool seekable, uint16* stype); + +/** + * A data stream has been terminated. + */ +NPError SvgtPluginDestroyStream(NPP instance, NPStream* stream, NPReason reason); + +/** + * A data stream has been fully saved to a file. + */ +void SvgtPluginAsFile(NPP instance, NPStream* stream, const TDesC& fname); + +/** + * Return the maximum number of bytes this plugin can accept from the stream. + */ +int32 SvgtPluginWriteReady(NPP instance, NPStream* stream); + +/** + * Receive more data - return number of bytes processed. + */ +int32 SvgtPluginWrite(NPP instance, NPStream* stream, int32 offset, int32 len, void* buffer); + +/** + * Generic hook to set values/attributes within the plugin. + */ +NPError SvgtPluginSetValue(NPP instance, NPNVariable variable, void *ret_value); + +/** + * Generic hook to get values/attributes from the plugin. + */ +NPError SvgtPluginGetValue(NPP instance, NPNVariable variable, void* *ret_value); + +/** + * Event + */ +int16 SvgtPluginEvent(NPP instance, void* event); + + +void SvgtPluginURLNotify(NPP instance, const TDesC& url, NPReason reason, void* notifyData); + +void SvgtPluginPrint(NPP instance, NPPrint* platformPrint); + +#endif // __PLGPLUGIN_H \ No newline at end of file