/************************************************************************ filename: CEGUIBase.h created: 20/2/2004 author: Paul D Turner purpose: Base include used within the system This contains various lower level bits required by other parts of the system. All other library headers will include this file. *************************************************************************/ /************************************************************************* Crazy Eddie's GUI System (http://www.cegui.org.uk) Copyright (C)2004 - 2005 Paul D Turner (paul@cegui.org.uk) This library is free software; you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation; either version 2.1 of the License, or (at your option) any later version. 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 GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with this library; if not, write to the Free Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA *************************************************************************/ #ifndef _CEGUIBase_h_ #define _CEGUIBase_h_ #include // bring in configuration options #include "CEGUIConfig.h" // add CEGUI version defines #include "CEGUIVersion.h" /************************************************************************* Dynamic Library import / export control conditional (Define CEGUIBASE_EXPORTS to export symbols, else they are imported) *************************************************************************/ #if defined( __WIN32__ ) || defined( _WIN32 ) # ifdef CEGUIBASE_EXPORTS # define CEGUIEXPORT __declspec(dllexport) # else # define CEGUIEXPORT __declspec(dllimport) # endif # define CEGUIPRIVATE #else # define CEGUIEXPORT # define CEGUIPRIVATE #endif // totally kill this warning (debug info truncated to 255 chars etc...) on <= VC6 #if defined(_MSC_VER) && (_MSC_VER <= 1200) # pragma warning(disable : 4786) #endif // Detect macros for min / max and undefine (with a warning where possible) #if defined(max) # if defined(_MSC_VER) # pragma message("Macro defintion of max detected - undefining") # elif defined (__GNUC__) # warning ("Macro defintion of max detected - undefining") # endif # undef max #endif #if defined(min) # if defined(_MSC_VER) # pragma message("Macro defintion of min detected - undefining") # elif defined (__GNUC__) # warning ("Macro defintion of min detected - undefining") # endif # undef min #endif // include this to see if it defines _STLPORT_VERION # include // fix to undefine _STLP_DEBUG if STLport is not actually being used // (resolves some unresolved externals concerning boost) #if defined(_STLP_DEBUG) && defined(_MSC_VER) && (_MSC_VER >= 1200) # if !defined(_STLPORT_VERSION) # undef _STLP_DEBUG # endif #endif // The following defines macros used within CEGUI for std::min/std::max // usage, and is done as a compatibility measure for VC6 with native STL. #if defined(_MSC_VER) && (_MSC_VER <= 1200) && !defined(_STLPORT_VERSION) # define ceguimin std::_cpp_min # define ceguimax std::_cpp_max #else # define ceguimin std::min # define ceguimax std::max #endif /************************************************************************* Documentation for the CEGUI namespace itself *************************************************************************/ /*! \brief Main namespace for Crazy Eddie's GUI Library The CEGUI namespace contains all the classes and other items that comprise the core of Crazy Eddie's GUI system. */ namespace CEGUI { /************************************************************************* Simplification of some 'unsigned' types *************************************************************************/ typedef unsigned long ulong; typedef unsigned short ushort; typedef unsigned int uint; typedef unsigned char uchar; typedef unsigned int uint32; typedef unsigned short uint16; typedef unsigned char uint8; /************************************************************************* System wide constants *************************************************************************/ static const float DefaultNativeHorzRes = 640.0f; //!< Default native horizontal resolution (for fonts and imagesets) static const float DefaultNativeVertRes = 480.0f; //!< Default native vertical resolution (for fonts and imagesets) /************************************************************************* Additional typedefs *************************************************************************/ typedef std::ostream OutStream; //!< Output stream class. } // end of CEGUI namespace section /*! \brief Macro used to return a float value rounded to the nearest integer. This macro is used throughout the library to ensure that elements are kept at integer pixel positions on the display. \param x Expression to be rounded to nearest whole number \return \a x after having been rounded */ #if defined(CEGUI_ALIGN_ELEMENTS_TO_PIXELS) # define PixelAligned(x) ( (float)(int)(( x ) + 0.5f) ) #else # define PixelAligned(x) ( x ) #endif /************************************************************************* Bring in forward references to all GUI base system classes *************************************************************************/ #include "CEGUIForwardRefs.h" #endif // end of guard _CEGUIBase_h_