diff -r f4303074311f -r e4e5f02787a1 front_idill/extern/fajran-npTuioClient/src/pluginbase.h --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/front_idill/extern/fajran-npTuioClient/src/pluginbase.h Fri Apr 06 10:44:54 2012 +0200 @@ -0,0 +1,90 @@ +// +// Copyright (C) 2005, 2006, 2007, 2008, 2009 Free Software Foundation, Inc. +// +// This program is free software; you can redistribute it and/or modify +// it under the terms of the GNU General Public License as published by +// the Free Software Foundation; either version 3 of the License, or +// (at your option) any later version. +// +// This program is distributed in the hope that it will be useful, +// but WITHOUT ANY WARRANTY; without even the implied warranty of +// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +// GNU General Public License for more details. +// +// You should have received a copy of the GNU General Public License +// along with this program; if not, write to the Free Software +// Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA +// + +#ifndef PLUGINBASE_H_ +#define PLUGINBASE_H_ + +#include +#include +#include + +#ifndef HIBYTE +#define HIBYTE(i) (i >> 8) +#endif + +#ifndef LOBYTE +#define LOBYTE(i) (i & 0xff) +#endif + +struct nsPluginCreateData +{ + NPP instance; + NPMIMEType type; + uint16 mode; + int16 argc; + char** argn; + char** argv; + NPSavedData* saved; +}; + +class nsPluginInstanceBase +{ + public: + virtual ~nsPluginInstanceBase() { return; } + + // these three methods must be implemented in the derived + // class platform specific way + virtual NPBool init(NPWindow* aWindow) = 0; + virtual void shut() = 0; + virtual NPBool isInitialized() = 0; + + // implement all or part of those methods in the derived + // class as needed + virtual NPError SetWindow(NPWindow* /*pNPWindow*/) { return NPERR_NO_ERROR; } + virtual NPError WriteStatus(const char* /*msg*/) const { return NPERR_NO_ERROR; } + virtual NPError NewStream(NPMIMEType /*type*/, NPStream* /*stream*/, + NPBool /*seekable*/, uint16* /*stype*/) { return NPERR_NO_ERROR; } + virtual NPError DestroyStream(NPStream* /*stream*/, NPError /*reason*/) { return NPERR_NO_ERROR; } + virtual void StreamAsFile(NPStream* /*stream*/, const char* /*fname*/) { return; } + virtual int32_t WriteReady(NPStream* /*stream*/) { return 0x0fffffff; } + virtual int32 Write(NPStream* /*stream*/, int32 /*offset*/, + int32 len, void* /*buffer*/) { return len; } + virtual void Print(NPPrint* /*printInfo*/) { return; } + virtual uint16 HandleEvent(void* /*event*/) { return 0; } + virtual void URLNotify(const char* /*url*/, NPReason /*reason*/, + void* /*notifyData*/) { return; } + virtual NPError GetValue(NPPVariable /*variable*/, void* /*value*/) { return NPERR_NO_ERROR; } + virtual NPError SetValue(NPNVariable /*variable*/, void* /*value*/) { return NPERR_NO_ERROR; } +}; + +// functions that should be implemented for each specific plugin + +// creation and destruction of the object of the derived class +nsPluginInstanceBase * NS_NewPluginInstance(nsPluginCreateData * aCreateDataStruct); +void NS_DestroyPluginInstance(nsPluginInstanceBase * aPlugin); + +// global plugin initialization and shutdown +NPError NS_PluginInitialize(); +void NS_PluginShutdown(); + +// FIXME #ifdef XP_UNIX +// global to get plugins name & description +NPError NS_PluginGetValue(NPPVariable aVariable, void *aValue); +// FIXME #endif + +#endif // __PLUGININSTANCEBASE_H__