front_idill/extern/fajran-npTuioClient/src/plugin.cpp
changeset 30 45c889eae324
parent 29 fcf435874395
child 31 2c7fc855eba8
--- a/front_idill/extern/fajran-npTuioClient/src/plugin.cpp	Thu Apr 19 11:53:06 2012 +0200
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,363 +0,0 @@
-// 
-//   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
-
-/*
-    Modified by alexandre.bastien@iri.centrepompidou.fr to manage TUIO strings.
-*/
-
-#include "plugin.h"
-
-#include <cstring>
-#include <iostream>
-#include <sstream>
-#define D(s) /*std::cerr << s << std::endl;*/
-
-#include <set>
-
-#define MIME_TYPES_HANDLED  "application/x-tuio"
-// The name must be this value to get flash movies that check the
-// plugin version to load.
-#define PLUGIN_NAME    "TUIO Client"
-#define MIME_TYPES_DESCRIPTION  MIME_TYPES_HANDLED":tuio:"PLUGIN_NAME
-
-#define PLUGIN_DESCRIPTION "TUIO Client plugin"
-
-extern NPNetscapeFuncs NPNFuncs;
-
-NPBool plugInitialized = FALSE;
-
-static std::set<nsPluginInstance*> instances;
-
-void tuio_callback(TuioEventData data)
-{
-    std::set<nsPluginInstance*>::iterator iter;
-    for (iter = instances.begin(); iter != instances.end(); iter++) {
-        (*iter)->event(data);
-    }
-}
-
-void
-PR_CALLBACK Destructor(void * /* data */)
-{
-#if 0
-    /*
-     * We don't actually free the storage since it's actually allocated
-     * on the stack. Normally, this would not be the case and this is
-     * the opportunity to free whatever.
-     */
-    PR_Free(data);
-#endif
-}
-
-/// \brief Return the MIME Type description for this plugin.
-char*
-NPP_GetMIMEDescription(void)
-{
-    return const_cast<char *>(MIME_TYPES_DESCRIPTION);
-}
-
-//
-// general initialization and shutdown
-//
-
-/// \brief Initialize the plugin
-///
-/// This C++ function gets called once when the plugin is loaded,
-/// regardless of how many instantiations there is actually playing
-/// movies. So this is where all the one time only initialization
-/// stuff goes.
-NPError
-NS_PluginInitialize()
-{
-    if ( plugInitialized )
-    {
-        return NPERR_NO_ERROR;
-    }
-
-    plugInitialized = TRUE;
-
-    tuio_start(80);
-
-    return NPERR_NO_ERROR;
-}
-
-/// \brief Shutdown the plugin
-///
-/// This C++ function gets called once when the plugin is being
-/// shutdown, regardless of how many instantiations actually are
-/// playing movies. So this is where all the one time only
-/// shutdown stuff goes.
-void
-NS_PluginShutdown()
-{
-#if 0
-    if (!plugInitialized)
-    {
-#if GNASH_PLUGIN_DEBUG > 1
-        std::cout << "Plugin already shut down" << std::endl;
-#endif
-        return;
-    }
-
-    plugInitialized = FALSE;
-#endif
-
-    tuio_stop();
-}
-
-
-
-/// \brief Retrieve values from the plugin for the Browser
-///
-/// This C++ function is called by the browser to get certain
-/// information is needs from the plugin. This information is the
-/// plugin name, a description, etc...
-NPError
-NS_PluginGetValue(NPPVariable aVariable, void *aValue)
-{
-    NPError err = NPERR_NO_ERROR;
-
-    switch (aVariable)
-    {
-        case NPPVpluginNameString:
-            *static_cast<const char **> (aValue) = PLUGIN_NAME;
-            break;
-
-        // This becomes the description field you see below the opening
-        // text when you type about:plugins and in
-        // navigator.plugins["Shockwave Flash"].description, used in
-        // many flash version detection scripts.
-        case NPPVpluginDescriptionString:
-            *static_cast<const char **>(aValue) = PLUGIN_DESCRIPTION;
-            break;
-
-        case NPPVpluginNeedsXEmbed:
-            *(int*)aValue = PR_TRUE;
-            break;
-
-        case NPPVpluginTimerInterval:
-
-        case NPPVpluginKeepLibraryInMemory:
-
-        default:
-            err = NPERR_INVALID_PARAM;
-            break;
-    }
-    return err;
-}
-
-/// \brief construct our plugin instance object
-///
-/// This instantiates a new object via a C++ function used by the
-/// browser.
-nsPluginInstanceBase *
-NS_NewPluginInstance(nsPluginCreateData * aCreateDataStruct)
-{
-    if(!aCreateDataStruct) return NULL;
-
-    return new nsPluginInstance(aCreateDataStruct);
-}
-
-/// \brief destroy our plugin instance object
-///
-/// This destroys our instantiated object via a C++ function used by the
-/// browser.
-void
-NS_DestroyPluginInstance(nsPluginInstanceBase* aPlugin)
-{
-    delete static_cast<nsPluginInstance *> (aPlugin);
-}
-
-//
-// nsPluginInstance class implementation
-//
-
-/// \brief Constructor
-nsPluginInstance::nsPluginInstance(nsPluginCreateData* data)
-    :
-    nsPluginInstanceBase(),
-    _instance(data->instance),
-    _port(3333),
-    _callback("tuio_callback")
-{
-    for (size_t i=0, n=data->argc; i<n; ++i)
-    {
-        std::string name, val;
-
-        if (data->argn[i])
-        {
-            name = data->argn[i];
-        }
-
-        if (data->argv[i])
-        {
-            val = data->argv[i];
-        }
-
-        else if ( ! strstr(name.c_str(), "callback") )
-        {
-            _callback = val;
-        }
-
-        else if ( ! strstr(name.c_str(), "port") )
-        {
-            _port = atoi(val.c_str());
-        }
-    }
-
-    instances.insert(this);
-}
-
-/// \brief Destructor
-nsPluginInstance::~nsPluginInstance()
-{
-    instances.erase(this);
-}
-
-/// \brief Initialize an instance of the plugin object
-/// 
-/// This methods initializes the plugin object, and is called for
-/// every movie that gets played. This is where the movie playing
-/// specific initialization goes.
-NPBool
-nsPluginInstance::init(NPWindow* aWindow)
-{
-    D("[ns] init");
-    return TRUE;
-}
-
-/// \brief Shutdown an instantiated object
-///
-/// This shuts down an object, and is called for every movie that gets
-/// played. This is where the movie playing specific shutdown code
-/// goes.
-void
-nsPluginInstance::shut()
-{
-    D("[ns] shut");
-}
-
-NPError
-nsPluginInstance::SetWindow(NPWindow* aWindow)
-{
-    D("[ns] SetWindow");
-
-    if(!aWindow)
-    {
-        return NPERR_INVALID_PARAM;
-    }
-
-    return NPERR_NO_ERROR;
-}
-
-NPError
-nsPluginInstance::GetValue(NPPVariable aVariable, void *aValue)
-{
-    return NS_PluginGetValue(aVariable, aValue);
-}
-
-/// \brief Write a status message
-///
-/// This writes a status message to the status line at the bottom of
-/// the browser window and the console firefox was started from.
-NPError
-nsPluginInstance::WriteStatus(const char *msg) const
-{
-    NPN_Status(_instance, msg);
-    std::cout << msg << std::endl;
-
-    return NPERR_NO_ERROR;
-}
-
-NPError
-nsPluginInstance::NewStream(NPMIMEType /*type*/, NPStream* stream,
-                            NPBool /*seekable*/, uint16* /*stype*/)
-{
-    D("[ns] NewStream");
-    return NPERR_NO_ERROR;
-}
-
-NPError
-nsPluginInstance::DestroyStream(NPStream* /*stream*/, NPError /*reason*/)
-{
-    D("[ns] DestroyStream");
-    return NPERR_NO_ERROR;
-}
-
-int32_t
-nsPluginInstance::WriteReady(NPStream* /* stream */ )
-{
-    D("[ns] WriteReady");
-    return 0x0fffffff;
-}
-
-int32_t
-nsPluginInstance::Write(NPStream* /*stream*/, int32_t /*offset*/, int32_t len,
-        void* buffer)
-{
-    D("[ns] Write: len=" << len);
-    return len;
-}
-
-typedef struct {
-    NPP instance;
-    TuioEventData data;
-} Event;
-
-void test(void* ev)
-{
-    D("ev=" << ev);
-    Event* event = (Event*)ev;
-    D("event=" << event);
-    std::stringstream ss;
-    ss << "javascript:tuio_callback(";
-    ss << event->data.type << ", ";
-    ss << event->data.sid << ", ";
-    ss << event->data.fid << ", ";
-    ss << event->data.x << ", ";
-    ss << event->data.y << ", ";
-    ss << event->data.z << ", ";
-    ss << event->data.a << ", ";
-    if(event->data.code == NULL || event->data.code == "")
-        ss << "\"\");";
-    else
-        ss << "\"" << event->data.code << "\"" << ");";
-    
-    NPN_GetURL(event->instance, ss.str().c_str(), "_self");
-
-    delete event;
-}
-
-void nsPluginInstance::event(TuioEventData data)
-{
-    D("[event] callback: type=" << data.type
-    << ", sid=" << data.sid << ", fid=" << data.fid
-    << ", x=" << data.x << ", y=" << data.y
-    << ", z=" << data.z << ", a=" << data.a
-    << ", code=" << "\"" << data.code << "\"");
-    
-    Event* ev = new Event();
-    ev->instance = _instance;
-    ev->data = data;
-
-    NPN_PluginThreadAsyncCall(_instance, test, ev);
-}
-
-// Local Variables:
-// mode: C++
-// indent-tabs-mode: t
-// End: