diff -r 000000000000 -r d46562c3d99d svgtopt/SVGTPlugin/src/Svgtplugindllapi.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/svgtopt/SVGTPlugin/src/Svgtplugindllapi.cpp Thu Jan 07 16:19:02 2010 +0200 @@ -0,0 +1,186 @@ +/* +* 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 source file + * +*/ + + +/* +************************************************************************************ +* Contents: Example plugin implementation +* Implementation of the API used by Opera to control the plugin +************************************************************************************ +*/ + + +#include "Svgtplugin.h" + +/** + * Create a new instance of a SVG plugin. +**/ + +NPError SvgtPluginNewp(NPMIMEType pluginType, NPP instance, uint16 mode, + CDesCArray* argn, CDesCArray* argv, NPSavedData* saved) + { + CSvgtPlugin* lSvgtPlugin = NULL; + TRAPD(err,lSvgtPlugin = CSvgtPlugin::NewL(instance)); + + if (err == KErrNoMemory) + return NPERR_OUT_OF_MEMORY_ERROR; + if (err != KErrNone) + return NPERR_MODULE_LOAD_FAILED_ERROR; + + instance->pdata = (void *) lSvgtPlugin; + NPError nerr = lSvgtPlugin->SvgPluginNew(pluginType, instance, + mode, argn, argv, saved); + return nerr; + } + +/** + * Destroy a plugin. +**/ +NPError SvgtPluginDestroy(NPP instance, NPSavedData** /*save*/) + { + CSvgtPlugin* lSvgtPlugin = (CSvgtPlugin *)instance->pdata; + if ( lSvgtPlugin ) + { + TRAPD(err,lSvgtPlugin->PrepareToExitL()); + if (err != KErrNone) + { + #ifdef _DEBUG + RDebug::Printf("SvgtPluginDestroy Error when printing Warning."); + #endif //_DEBUG + } + /**Ignoring the error*/ + delete lSvgtPlugin; + lSvgtPlugin = NULL; + } + return NPERR_NO_ERROR; + } + +/** + * This is the parent window of a plugin. + */ +NPError SvgtPluginSetWindow(NPP instance, NPWindow *window) + { + CSvgtPlugin* lSvgtPlugin = (CSvgtPlugin *) instance->pdata; + TUint lWidth = window->width; + TUint lHeight = window->height; + + TRAPD(err,lSvgtPlugin->SetWindowL(window,TRect(TSize(lWidth,lHeight)))); + + if (err == KErrNoMemory) + return NPERR_OUT_OF_MEMORY_ERROR; + if (err != KErrNone) + return NPERR_GENERIC_ERROR; + return NPERR_NO_ERROR; + } + +/** + * A new data stream has been created for sending data to the plugin. + * @param stream - A pointer to plugin specific data can be placed in stream->pdata + * + */ + +NPError SvgtPluginNewStream(NPP /*instance*/, NPMIMEType /*type*/, NPStream* /*stream*/, NPBool /*seekable*/, uint16* stype) + { + *stype = NP_ASFILEONLY; + return NPERR_NO_ERROR; + } + +/** + * A data stream has been terminated. + */ +NPError SvgtPluginDestroyStream(NPP /*instance*/, NPStream* /*stream*/, NPReason /*reason*/) + { + return NPERR_NO_ERROR; + } + +/** + * A data stream has been fully saved to a file. + */ +void SvgtPluginAsFile(NPP instance, NPStream* stream, const TDesC& fname) + { + CSvgtPlugin* lSvgtPlugin = (CSvgtPlugin*)instance->pdata; + + if (lSvgtPlugin && lSvgtPlugin->Control()) + { + lSvgtPlugin->Control()->AsFile(fname, stream ); + } + } + +/** + * Return the maximum number of bytes this plugin can accept from the stream. + */ +int32 SvgtPluginWriteReady(NPP /*instance*/, NPStream* /*stream*/) + { + return 65536; + } + +/** + * Receive more data + * @param buffer - contains the data. + * @param len - the number of bytes in buffer. + * @param offset - the number of bytes already sent/processed. + * @return TInt number of bytes processed. + */ +int32 SvgtPluginWrite(NPP /*instance*/, NPStream* /*stream*/, int32 /*offset*/, int32 len, void* /*buffer*/) + { + return len; + } + +/** + * Event + */ +int16 SvgtPluginEvent(NPP /*instance*/, void* /*event*/) + { + return 0; + } + + +/** + * Generic hook to set values/attributes within the plugin. + */ +NPError SvgtPluginSetValue(NPP /*instance*/, NPNVariable /*variable*/, void* /*ret_value*/) + { + return NPERR_NO_ERROR; + } + +/** + * Generic hook to get values/attributes from the plugin. + */ +NPError SvgtPluginGetValue(NPP instance, NPNVariable variable, void* +*ret_value) + { + CSvgtPlugin* lSvgtPlugin = (CSvgtPlugin *)instance->pdata; + if(lSvgtPlugin) + { + // A response of false when enum passed is NPPVpluginInteractiveBool + // must be interpreted as "Plugin is interactive" + // Since operations such as panning, zooming can be performed + // on all svg contents plugin can be considered always interactive + if(variable==NPPVpluginInteractiveBool) + { + *(TBool*) ret_value=EFalse; + } + } + return NPERR_NO_ERROR; + } +void SvgtPluginURLNotify(NPP /*instance*/, const TDesC& /*url*/, NPReason /*reason*/, void* /*notifyData*/) + { + } + +void SvgtPluginPrint(NPP /*instance*/, NPPrint* /*platformPrint*/) + { + }