2012-03-22 01:36:20 +08:00
|
|
|
/* -*-c++-*- OpenSceneGraph - Copyright (C) 1998-2008 Robert Osfield
|
2008-07-26 04:04:41 +08:00
|
|
|
*
|
2012-03-22 01:36:20 +08:00
|
|
|
* 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
|
2008-07-26 04:04:41 +08:00
|
|
|
* (at your option) any later version. The full license is in LICENSE file
|
|
|
|
* included with this distribution, and on the openscenegraph.org website.
|
2012-03-22 01:36:20 +08:00
|
|
|
*
|
2008-07-26 04:04:41 +08:00
|
|
|
* This library is distributed in the hope that it will be useful,
|
|
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
2012-03-22 01:36:20 +08:00
|
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
2008-07-26 04:04:41 +08:00
|
|
|
* OpenSceneGraph Public License for more details.
|
|
|
|
*/
|
|
|
|
|
2008-11-28 22:35:33 +08:00
|
|
|
// Code by: Jeremy Moles (cubicool) 2007-2008
|
2008-07-16 01:21:25 +08:00
|
|
|
|
|
|
|
#ifndef OSGWIDGET_UTIL
|
|
|
|
#define OSGWIDGET_UTIL
|
|
|
|
|
2009-11-17 22:06:07 +08:00
|
|
|
#include <ctype.h>
|
2008-11-28 22:35:33 +08:00
|
|
|
#include <cctype>
|
2008-07-16 01:21:25 +08:00
|
|
|
#include <algorithm>
|
|
|
|
#include <sstream>
|
|
|
|
#include <osg/Camera>
|
|
|
|
#include <osgViewer/Viewer>
|
|
|
|
#include <osgViewer/CompositeViewer>
|
|
|
|
|
|
|
|
#include <osgWidget/Export>
|
|
|
|
#include <osgWidget/Types>
|
|
|
|
|
|
|
|
namespace osgWidget {
|
|
|
|
|
|
|
|
// These are NOT OSGWIDGET_EXPORT'd; these are internal only!
|
|
|
|
|
2008-07-26 03:57:17 +08:00
|
|
|
inline std::ostream& _notify(osg::NotifySeverity ns = osg::INFO)
|
|
|
|
{
|
|
|
|
std::ostream& n = osg::notify(ns);
|
2012-03-22 01:36:20 +08:00
|
|
|
|
2008-07-26 03:57:17 +08:00
|
|
|
return n << "osgWidget: ";
|
2008-07-16 01:21:25 +08:00
|
|
|
}
|
|
|
|
|
2008-07-26 03:57:17 +08:00
|
|
|
inline std::ostream& warn()
|
|
|
|
{
|
|
|
|
return _notify(osg::WARN);
|
2008-07-16 01:21:25 +08:00
|
|
|
}
|
|
|
|
|
2008-07-26 03:57:17 +08:00
|
|
|
inline std::ostream& info()
|
|
|
|
{
|
|
|
|
return _notify();
|
2008-07-16 01:21:25 +08:00
|
|
|
}
|
|
|
|
|
2018-01-15 23:42:31 +08:00
|
|
|
inline char lowerCaseChar(const char in)
|
|
|
|
{
|
|
|
|
return (unsigned char)(::tolower((int)((unsigned char)in)));
|
|
|
|
}
|
|
|
|
|
2008-07-26 03:57:17 +08:00
|
|
|
inline std::string lowerCase(const std::string& str)
|
|
|
|
{
|
|
|
|
std::string s = str;
|
2008-07-16 01:21:25 +08:00
|
|
|
|
2008-07-26 03:57:17 +08:00
|
|
|
// TODO: Why can't I specify std::tolower?
|
2018-01-15 23:42:31 +08:00
|
|
|
std::transform(s.begin(), s.end(), s.begin(), lowerCaseChar);
|
2008-07-16 01:21:25 +08:00
|
|
|
|
2008-07-26 03:57:17 +08:00
|
|
|
return s;
|
2008-07-16 01:21:25 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
// TODO: Is this totally ghetto or what?
|
|
|
|
template <typename T>
|
2008-07-26 03:57:17 +08:00
|
|
|
inline bool hasDecimal(T v)
|
|
|
|
{
|
|
|
|
return (v - static_cast<T>(static_cast<long>(v))) > 0.0f;
|
2008-07-16 01:21:25 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
class WindowManager;
|
|
|
|
|
|
|
|
// These ARE OSGWIDGET_EXPORT'd for your convenience. :)
|
|
|
|
|
|
|
|
OSGWIDGET_EXPORT std::string getFilePath (const std::string&);
|
|
|
|
OSGWIDGET_EXPORT std::string generateRandomName (const std::string&);
|
2008-11-28 22:35:33 +08:00
|
|
|
OSGWIDGET_EXPORT osg::Camera* createOrthoCamera (matrix_type, matrix_type);
|
2008-07-16 01:21:25 +08:00
|
|
|
|
|
|
|
// This function sets up our basic example framework, and optionally sets some root
|
|
|
|
// scene data.
|
2008-11-28 22:35:33 +08:00
|
|
|
OSGWIDGET_EXPORT int createExample (osgViewer::Viewer&, WindowManager*, osg::Node* = 0);
|
|
|
|
OSGWIDGET_EXPORT bool writeWindowManagerNode (WindowManager*);
|
2008-07-16 01:21:25 +08:00
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
#endif
|