2006-11-02 20:27:15 +08:00
|
|
|
/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2006 Robert Osfield
|
|
|
|
*
|
|
|
|
* This library is open source and may be redistributed and/or modified under
|
|
|
|
* the terms of the OpenSceneGraph Public License (OSGPL) version 0.0 or
|
|
|
|
* (at your option) any later version. The full license is in LICENSE file
|
|
|
|
* included with this distribution, and on the openscenegraph.org website.
|
|
|
|
*
|
|
|
|
* This library 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
|
|
|
|
* OpenSceneGraph Public License for more details.
|
|
|
|
*/
|
|
|
|
|
|
|
|
// The following symbol has a underscore suffix for compatibility.
|
|
|
|
#ifndef OSGVIEWER_EXPORT_
|
|
|
|
#define OSGVIEWER_EXPORT_ 1
|
|
|
|
|
2007-01-25 20:02:51 +08:00
|
|
|
#define USE_REFERENCE_TIME DBL_MAX
|
|
|
|
|
2006-11-02 20:27:15 +08:00
|
|
|
#if defined(WIN32) && !(defined(__CYGWIN__) || defined(__MINGW32__))
|
|
|
|
#pragma warning( disable : 4244 )
|
|
|
|
#pragma warning( disable : 4251 )
|
|
|
|
#pragma warning( disable : 4267 )
|
|
|
|
#pragma warning( disable : 4275 )
|
|
|
|
#pragma warning( disable : 4290 )
|
|
|
|
#pragma warning( disable : 4786 )
|
|
|
|
#pragma warning( disable : 4305 )
|
|
|
|
#pragma warning( disable : 4996 )
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#if defined(_MSC_VER) || defined(__CYGWIN__) || defined(__MINGW32__) || defined( __BCPLUSPLUS__) || defined( __MWERKS__)
|
|
|
|
# if defined( OSG_LIBRARY_STATIC )
|
|
|
|
# define OSGVIEWER_EXPORT
|
|
|
|
# elif defined( OSGVIEWER_LIBRARY )
|
|
|
|
# define OSGVIEWER_EXPORT __declspec(dllexport)
|
|
|
|
# else
|
|
|
|
# define OSGVIEWER_EXPORT __declspec(dllimport)
|
|
|
|
#endif
|
|
|
|
#else
|
|
|
|
#define OSGVIEWER_EXPORT
|
|
|
|
#endif
|
|
|
|
|
|
|
|
#endif
|
|
|
|
|
|
|
|
|
|
|
|
/**
|
|
|
|
|
|
|
|
\namespace osgViewer
|
|
|
|
|
|
|
|
The 'GA' in osgViewer stands for 'GUI Abstraction'; the osgViewer namespace provides facilities to
|
|
|
|
help developers write the glue to allow the osg to work with varying window systems.
|
|
|
|
|
|
|
|
As a cross-platform, window system-agnostic class library, the OpenSceneGraph
|
|
|
|
has no direct ties to any given windowing environment. Viewers, however, must at
|
|
|
|
some level interact with a window system - where Window system may refer to a windowing
|
|
|
|
API, e.g. GLUT, Qt, FLTK, MFC, ...
|
|
|
|
|
|
|
|
There is much commonality in the implementation of Viewers for varying windowing
|
|
|
|
environments. E.g. most Viewers will update a Camera position in response to a mouse
|
|
|
|
event, and may request that a timer be started as a result of a model being 'spun'.
|
|
|
|
|
|
|
|
The purpose of the osgViewer namespace is to centralise the common areas of this
|
|
|
|
functionality. The viewer writer needs then only write a GUIEventAdapter, a
|
|
|
|
GUIActionAdapter, and assemble a collection of GUIEventHandlers
|
|
|
|
as appropriate for the viewer.
|
|
|
|
|
|
|
|
Events from the windowing environment are adpated, and then fed into the GUIEventHandlers.
|
|
|
|
The GUIEventHandlers analyse and take action, and make requests of the windowing
|
|
|
|
environemnt via the GUIActionAdapter. The viewer writer should then honour these
|
|
|
|
requests, translating them into calls to the windowing API.
|
|
|
|
|
|
|
|
*/
|
|
|
|
|
|
|
|
|