/** * PANDA 3D SOFTWARE * Copyright (c) Carnegie Mellon University. All rights reserved. * * All use of this software is subject to the terms of the revised BSD * license. You should have received a copy of this license along * with this source code in a file named "LICENSE." * * @file nppanda3d_common.h * @author drose * @date 2009-06-19 */ #ifndef NPPANDA3D_COMMON #define NPPANDA3D_COMMON // This header file is included by all C++ files in this directory // It's a good idea to pick up this header file, even though we don't actually // link with dtool. This header file defines useful system-wide config // settings. #include "dtool_config.h" // We include this header file directly out of its source directory, so we // don't have to link with the library that builds it. #include "../plugin/p3d_plugin.h" #include #include #include #include // Appears in startup.cxx. extern std::ostream *nout_stream; #define nout (*nout_stream) extern std::string global_root_dir; extern bool has_plugin_thread_async_call; #ifdef _WIN32 // Gecko requires all these symbols to be defined for Windows. #define MOZILLA_STRICT_API #define XP_WIN #define _X86_ #define _WINDOWS #define _USRDLL #define NPBASIC_EXPORTS // Panda already defines this one. #define WIN32 #include #elif defined(__APPLE__) // On Mac, Gecko requires this symbol to be defined. #define XP_MACOSX #else #define XP_UNIX #endif // _WIN32, __APPLE__ #include "npapi.h" #if NP_VERSION_MAJOR == 0 && NP_VERSION_MINOR <= 19 #include #else // Somewhere between version 0.19 and 0.22, Mozilla renamed npupp.h to // npfunctions.h. #include "npfunctions.h" #endif #if NP_VERSION_MAJOR == 0 && NP_VERSION_MINOR <= 19 #ifdef _WIN32 // Also somewhere in there, they started defining and using int16_t // instead of int16, and so on. They already had int32_t from earlier, // but the typedef is not quite the same as int32 (!), so we have to use // #define to keep things compatible. typedef int16 int16_t; typedef uint16 uint16_t; // #define int32_t int32 #define uint32_t uint32 #endif // _WIN32 #endif // NP_VERSION #include "load_plugin.h" // Mozilla's version of NPAPI has these names lowercase. WebKit's version has // them uppercase. What a mess. We have to define a duplicate of the // structure to allow us to reference them consistently. struct UC_NPString { const NPUTF8 *UTF8Characters; uint32_t UTF8Length; }; // If we are building with a version of Gecko that supports the asynchronous // callback function, we should use it--it's just so handy. #if defined(NPVERS_HAS_PLUGIN_THREAD_ASYNC_CALL) && NP_VERSION_MINOR >= NPVERS_HAS_PLUGIN_THREAD_ASYNC_CALL #define HAS_PLUGIN_THREAD_ASYNC_CALL 1 #endif // We also need to know whether we have Apple's new Cocoa-based drawing and // event callbacks. #if defined(NPVERS_MACOSX_HAS_EVENT_MODELS) && NP_VERSION_MINOR >= NPVERS_MACOSX_HAS_EVENT_MODELS #define MACOSX_HAS_EVENT_MODELS 1 #endif // No one defined a symbol for the introduction of the Cocoa drawing, but it // appears to have been version 19. #if NP_VERSION_MINOR >= 19 #define MACOSX_HAS_COREGRAPHICS_DRAWING_MODEL 1 #endif // Appears in startup.cxx. extern NPNetscapeFuncs *browser; #endif