/*****************************************************************************
 * $LastChangedDate: 2011-04-22 12:24:45 -0400 (Fri, 22 Apr 2011) $
 * @file
 * @author  Jim E. Brooks  http://www.palomino3d.org
 * @brief   Module configuration.
 *//*
 * LEGAL:   COPYRIGHT (C) 2007 JIM E. BROOKS
 *          THIS SOURCE CODE IS RELEASED UNDER THE TERMS
 *          OF THE GNU GENERAL PUBLIC LICENSE VERSION 2 (GPL 2).
 *****************************************************************************/

#ifndef VIEW_CONF_HH
#define VIEW_CONF_HH 1

#define VIEW_CONF view::GET_CONF()

#include "base/conf_txt.hh"
#include "math/module.hh"
#include "math/types_trig.hh"
#include "math/vertex.hh"
using namespace math;
#include "gfx/module.hh"
#include "gfx/graphics.hh"
using namespace gfx;
#include "object/rotation_list.hh"
using namespace object;

namespace view {

////////////////////////////////////////////////////////////////////////////////
/// @brief Module configuration.
///
class Conf
{
#include "base/conf_template_txt.hh"
public:
    // cmd-line:

    // .conf:
    string              mWindowTitle;
    Vector2             mWindowPosition;                ///< top-left corner (if window manager allows)
    WidthHeight<int>    mWindowWidthHeight;
    fpx                 mViewProjectionFOV;             ///< field-of-view degree
    fpx                 mViewProjectionAspectRatio;     ///< field-of-view
    fpx                 mViewNearFarRatio;              ///< affects frustum clipping
    fp                  mOtwViewpointOffset;            ///< to move up viewpoint, mitigate frustum clipping at low alt
    bool                mStatsEnabled;                  ///< controls OSG statistics
    bool                mManipulatorEnabled;            ///< for constructing scene or debugging
    Radian              mManipulatorYawRad;
    Radian              mManipulatorPitchRad;
    fp                  mManipulatorStep;               ///< world space
    Vector3             mManipulatorPosition;           ///< world space
    RotationList        mManipulatorRotationList;       ///< to set orientation
};
#include "base/conf_template_end.hh"

} // namespace view

#endif // VIEW_CONF_HH
