| VRS - The Virtual Rendering System |
| version 3.3 |
00001 /********************************************************************** 00002 VRS - The Virtual Rendering System 00003 Copyright (C) 2001 Computer Graphics Systems Group at the 00004 Hasso-Plattner-Institute, Potsdam, Germany. 00005 This library is free software; you can redistribute it and/or 00006 modify it under the terms of the GNU Lesser General Public 00007 License as published by the Free Software Foundation; either 00008 version 2.1 of the License, or (at your option) any later version. 00009 This library is distributed in the hope that it will be useful, but 00010 WITHOUT ANY WARRANTY; without even the implied warranty of 00011 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 00012 See the GNU Lesser General Public License for more details. 00013 You should have received a copy of the GNU Lesser+ General Public 00014 License along with this library; if not, write to the FreeSoftware 00015 Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA, 02111-1307, USA. 00016 **********************************************************************/ 00017 // $Id: ortho.h 4633 2005-01-03 01:43:11Z klimetschek $ 00018 // $Date: 2005-01-03 02:43:11 +0100 (Mon, 03 Jan 2005) $ 00019 // $Revision: 4633 $ 00020 // $State$ 00021 // $Author: klimetschek $ 00022 // 00023 // $Log$ 00024 // Revision 1.18 2005/01/03 01:43:08 klimetschek 00025 // - modified win32 project layout, splitted vrs.vcproj into vrs_container, vrs_core, vrs_sg, vrs_image, vrs_opengl and vrs_io 00026 // - removed vrs.vcproj 00027 // minor things: 00028 // - added all glutexamples to vrs4glut.sln 00029 // - fixed some problems in glutexamples 00030 // - removed all project references from all VS projects (using solution wide project dependencies instead) 00031 // 00032 // Revision 1.17 2004/11/05 13:58:09 basch 00033 // Class comment changed (Doxygen style) 00034 // 00035 // Revision 1.16 2004/03/12 16:28:39 baumann 00036 // macros VRS_NAMESPACE_BEGIN/_END expanded and removed 00037 // 00038 // Revision 1.15 2004/01/19 11:43:57 baumann 00039 // serialization mechanism improved 00040 // 00041 // Revision 1.14 2003/11/07 14:19:24 kirsch 00042 // removed leading underscore from include guards 00043 // 00044 // Revision 1.13 2003/07/04 09:34:26 kirsch 00045 // fixed copy and paste typo 00046 // 00047 // Revision 1.12 2002/10/29 10:32:52 baumann 00048 // macros VRS_CLASSNAME_* and VRS_IMPL_TYPEINFO_* removed 00049 // 00050 // Revision 1.11 2002/05/06 13:08:02 kirsch 00051 // cleanup: used mutable instead of const cast, removed declared but 00052 // undefined methods, in serialize only set rebuild flag if reading 00053 // 00054 // Revision 1.10 2002/03/03 21:44:25 kosta 00055 // VRS_TYPEINFO-macro rewritten 00056 // 00057 // Revision 1.9 2002/02/19 10:34:10 kosta 00058 // undone all changes since 2002-02-15 00059 // 00060 // Revision 1.6 2002/02/06 13:25:58 kersting 00061 // fixed argument order bug in ctor 00062 // 00063 // Revision 1.5 2002/02/05 07:48:25 kosta 00064 // new persistency macros: 00065 // VRS_SERIALIZABLE(CLASS_NAME); 00066 // VRS_SERIALIZABLE_ABSTRACT_CLASS(CLASS_NAME); 00067 // VRS_SERIALIZABLE_NO_SO_CLASS(CLASS_NAME) 00068 // 00069 // Revision 1.4 2002/02/04 13:07:19 kosta 00070 // VRS_SERIALIZABLE macros completely rewritten 00071 // 00072 // Revision 1.3 2002/01/15 16:25:54 kosta 00073 // macros rewritten for a better namespace support 00074 // 00075 // Revision 1.2 2001/11/13 16:36:30 kirsch 00076 // changed line feed to unix style (removed control-M) 00077 // 00078 // Revision 1.1.1.1 2001/06/08 08:09:20 kirsch 00079 // imported alpha-version by olli 00080 // 00081 00082 00083 #ifndef VRS_ORTHO_H 00084 #define VRS_ORTHO_H 00085 00086 #include <vrs/transform.h> 00087 00088 namespace VRS { 00089 00091 class VRS_CORE_API Ortho : public Transform { 00092 00093 public: 00094 Ortho( 00095 double left=-1, double right=1, 00096 double bottom=-1, double top=1, 00097 double nearDistance = 0.1, 00098 double farDistance = 100 00099 ); 00101 00102 void setLeft(double left); 00103 void setRight(double right); 00104 void setTop(double top); 00105 void setBottom(double bottom); 00106 void setNear(double nearValue); 00107 void setFar(double farValue); 00108 double getLeft() const; 00109 double getRight() const; 00110 double getTop() const; 00111 double getBottom() const; 00112 double getNear() const; 00113 double getFar() const; 00115 00116 virtual const Matrix& matrix(Engine* engine = 0) const; 00118 00119 VRS_TYPEINFO(Ortho, Transform); 00120 VRS_SERIALIZABLE(Ortho); 00121 00122 private: 00123 00124 double near_, far_; 00125 double left_, right_, top_, bottom_; 00126 00127 mutable bool rebuild_; 00128 mutable Matrix ortho_; 00129 }; 00130 00131 inline double Ortho::getLeft() const { return left_; } 00132 inline double Ortho::getRight() const { return right_; } 00133 inline double Ortho::getBottom() const { return bottom_; } 00134 inline double Ortho::getTop() const { return top_; } 00135 inline double Ortho::getNear() const { return near_; } 00136 inline double Ortho::getFar() const { return far_; } 00137 00138 } // namespace VRS 00139 00140 #endif // VRS_ORTHO_H