glcamera.cpp
上传用户:yhdzpy8989
上传日期:2007-06-13
资源大小:13604k
文件大小:5k
源码类别:

生物技术

开发平台:

C/C++

  1. /*
  2.  * ===========================================================================
  3.  * PRODUCTION $Log: glcamera.cpp,v $
  4.  * PRODUCTION Revision 1000.1  2004/06/01 20:50:28  gouriano
  5.  * PRODUCTION PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.2
  6.  * PRODUCTION
  7.  * ===========================================================================
  8.  */
  9. /*  $Id: glcamera.cpp,v 1000.1 2004/06/01 20:50:28 gouriano Exp $
  10.  * ===========================================================================
  11.  *
  12.  *                            PUBLIC DOMAIN NOTICE
  13.  *               National Center for Biotechnology Information
  14.  *
  15.  *  This software/database is a "United States Government Work" under the
  16.  *  terms of the United States Copyright Act.  It was written as part of
  17.  *  the author's official duties as a United States Government employee and
  18.  *  thus cannot be copyrighted.  This software/database is freely available
  19.  *  to the public for use. The National Library of Medicine and the U.S.
  20.  *  Government have not placed any restriction on its use or reproduction.
  21.  *
  22.  *  Although all reasonable efforts have been taken to ensure the accuracy
  23.  *  and reliability of the software and data, the NLM and the U.S.
  24.  *  Government do not and cannot warrant the performance or results that
  25.  *  may be obtained by using this software or data. The NLM and the U.S.
  26.  *  Government disclaim all warranties, express or implied, including
  27.  *  warranties of performance, merchantability or fitness for any particular
  28.  *  purpose.
  29.  *
  30.  *  Please cite the author in any work or product based on this material.
  31.  *
  32.  * ===========================================================================
  33.  *
  34.  * Authors:  Mike DiCuccio
  35.  *
  36.  * File Description:
  37.  *
  38.  */
  39. #include <ncbi_pch.hpp>
  40. #include <gui/opengl/glcamera.hpp>
  41. BEGIN_NCBI_SCOPE
  42. //
  43. // default ctor
  44. //
  45. CGlCamera::CGlCamera()
  46.     : m_Type(ePerspective),
  47.       m_NearPlane(0.001f),
  48.       m_FarPlane(300.0f),
  49.       m_LeftPlane(-1.0f),
  50.       m_RightPlane(1.0f),
  51.       m_TopPlane(1.0f),
  52.       m_BottomPlane(-1.0f),
  53.       m_Fov(45.0f),
  54.       m_Aspect(1.0f)
  55. {
  56. }
  57. //
  58. // MakeCurrent()
  59. // This performs our camera (= projection matrix) setup
  60. //
  61. void CGlCamera::MakeCurrent(bool save_matrices)
  62. {
  63.     glMatrixMode(GL_PROJECTION);
  64.     if (save_matrices) {
  65.         glPushMatrix();
  66.     }
  67.     glLoadIdentity();
  68.     switch (m_Type) {
  69.     case ePerspective:
  70.         gluPerspective(m_Fov, m_Aspect, m_NearPlane, m_FarPlane);
  71.         break;
  72.     case eOrtho:
  73.         glOrtho(m_LeftPlane,   m_RightPlane,
  74.                 m_BottomPlane, m_TopPlane,
  75.                 m_NearPlane,   m_FarPlane);
  76.         break;
  77.     }
  78.     // when finished, return to modelview matrix
  79.     glMatrixMode(GL_MODELVIEW);
  80. }
  81. //
  82. // ReleaseCurrent()
  83. // This is a NULL op, unless the flag passed in is true
  84. //
  85. void CGlCamera::ReleaseCurrent(bool restore_matrices)
  86. {
  87.     if (restore_matrices) {
  88.         glMatrixMode(GL_PROJECTION);
  89.         glPopMatrix();
  90.         glMatrixMode(GL_MODELVIEW);
  91.     }
  92. }
  93. //
  94. // accessors
  95. //
  96. void CGlCamera::SetLayout(EType type)
  97. {
  98.     m_Type = type;
  99. }
  100. CGlCamera::EType CGlCamera::GetLayout(void) const
  101. {
  102.     return m_Type;
  103. }
  104. void CGlCamera::SetNearPlane(GLdouble d)
  105. {
  106.     m_NearPlane = d;
  107. }
  108. GLdouble CGlCamera::GetNearPlane(void) const
  109. {
  110.     return m_NearPlane;
  111. }
  112. void CGlCamera::SetFarPlane(GLdouble d)
  113. {
  114.     m_FarPlane = d;
  115. }
  116. GLdouble CGlCamera::GetFarPlane(void) const
  117. {
  118.     return m_FarPlane;
  119. }
  120. void CGlCamera::SetLeftPlane(GLdouble d)
  121. {
  122.     m_LeftPlane = d;
  123. }
  124. GLdouble CGlCamera::GetLeftPlane(void) const
  125. {
  126.     return m_LeftPlane;
  127. }
  128. void CGlCamera::SetRightPlane(GLdouble d)
  129. {
  130.     m_RightPlane = d;
  131. }
  132. GLdouble CGlCamera::GetRightPlane(void) const
  133. {
  134.     return m_RightPlane;
  135. }
  136. void CGlCamera::SetTopPlane(GLdouble d)
  137. {
  138.     m_TopPlane = d;
  139. }
  140. GLdouble CGlCamera::GetTopPlane(void) const
  141. {
  142.     return m_TopPlane;
  143. }
  144. void CGlCamera::SetBottomPlane(GLdouble d)
  145. {
  146.     m_BottomPlane = d;
  147. }
  148. GLdouble CGlCamera::GetBottomPlane(void) const
  149. {
  150.     return m_BottomPlane;
  151. }
  152. void CGlCamera::SetFieldOfView(GLdouble d)
  153. {
  154.     m_Fov = d;
  155. }
  156. GLdouble CGlCamera::GetFieldOfView(void) const
  157. {
  158.     return m_Fov;
  159. }
  160. void CGlCamera::SetAspectRatio(GLdouble d)
  161. {
  162.     m_Aspect = d;
  163. }
  164. GLdouble CGlCamera::GetAspectRatio(void) const
  165. {
  166.     return m_Aspect;
  167. }
  168. END_NCBI_SCOPE
  169. /*
  170.  * ===========================================================================
  171.  * $Log: glcamera.cpp,v $
  172.  * Revision 1000.1  2004/06/01 20:50:28  gouriano
  173.  * PRODUCTION: UPGRADED [GCC34_MSVC7] Dev-tree R1.2
  174.  *
  175.  * Revision 1.2  2004/05/21 22:27:44  gorelenk
  176.  * Added PCH ncbi_pch.hpp
  177.  *
  178.  * Revision 1.1  2003/06/03 17:42:06  dicuccio
  179.  * Added texture support.  Added classes to handle OpenGL camera setup and
  180.  * viewport specification.
  181.  *
  182.  * ===========================================================================
  183.  */