Welcome to mirror list, hosted at ThFree Co, Russian Federation.

git.blender.org/blender.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2012-12-29 00:21:05 +0400
committerTamito Kajiyama <rd6t-kjym@asahi-net.or.jp>2012-12-29 00:21:05 +0400
commite5791cf48e10ec1336f463b7fccff6b302621eb9 (patch)
tree58ea33117cc9be35713b6d93ea9d1dfa538ca5bd /source/blender/freestyle/intern/scene_graph/NodeCamera.h
parent9fe9c1d6436e400217fdfd8999117a4719efdf68 (diff)
Another mega (literally :p) code clean-up patch by Bastien Montagne, thanks again!
Diffstat (limited to 'source/blender/freestyle/intern/scene_graph/NodeCamera.h')
-rw-r--r--source/blender/freestyle/intern/scene_graph/NodeCamera.h354
1 files changed, 189 insertions, 165 deletions
diff --git a/source/blender/freestyle/intern/scene_graph/NodeCamera.h b/source/blender/freestyle/intern/scene_graph/NodeCamera.h
index cdd6fa83048..f7141a72a51 100644
--- a/source/blender/freestyle/intern/scene_graph/NodeCamera.h
+++ b/source/blender/freestyle/intern/scene_graph/NodeCamera.h
@@ -1,192 +1,216 @@
-//
-// Filename : NodeCamera.h
-// Author(s) : Stephane Grabli
-// Purpose : Class to represent a light node
-// Date of creation : 25/01/2002
-//
-///////////////////////////////////////////////////////////////////////////////
-
-
-//
-// Copyright (C) : Please refer to the COPYRIGHT file distributed
-// with this source distribution.
-//
-// This program is free software; you can redistribute it and/or
-// modify it under the terms of the GNU General Public License
-// as published by the Free Software Foundation; either version 2
-// of the License, or (at your option) any later version.
-//
-// This program 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 General Public License for more details.
-//
-// You should have received a copy of the GNU General Public License
-// along with this program; if not, write to the Free Software
-// Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-//
-///////////////////////////////////////////////////////////////////////////////
-
-
-#ifndef NODE_CAMERA_H_
-#define NODE_CAMERA_H_
-
-# include "../geometry/Geom.h"
-# include "../system/FreestyleConfig.h"
-# include "Node.h"
+/*
+ * ***** BEGIN GPL LICENSE BLOCK *****
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU General Public License
+ * as published by the Free Software Foundation; either version 2
+ * of the License, or (at your option) any later version.
+ *
+ * This program 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 General Public License for more details.
+ *
+ * You should have received a copy of the GNU General Public License
+ * along with this program; if not, write to the Free Software Foundation,
+ * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+ *
+ * The Original Code is Copyright (C) 2010 Blender Foundation.
+ * All rights reserved.
+ *
+ * The Original Code is: all of this file.
+ *
+ * Contributor(s): none yet.
+ *
+ * ***** END GPL LICENSE BLOCK *****
+ */
+
+#ifndef __FREESTYLE_NODE_CAMERA_H__
+#define __FREESTYLE_NODE_CAMERA_H__
+
+/** \file blender/freestyle/intern/scene_graph/NodeCamera.h
+ * \ingroup freestyle
+ * \brief Class to represent a light node
+ * \author Stephane Grabli
+ * \date 25/01/2002
+ */
+
+#include "Node.h"
+
+#include "../geometry/Geom.h"
+
+#include "../system/FreestyleConfig.h"
using namespace Geometry;
class NodeOrthographicCamera;
+
class NodePerspectiveCamera;
+
class LIB_SCENE_GRAPH_EXPORT NodeCamera : public Node
{
public:
- typedef enum {PERSPECTIVE,ORTHOGRAPHIC,GENERIC} CameraType;
+ typedef enum {
+ PERSPECTIVE,
+ ORTHOGRAPHIC,
+ GENERIC,
+ } CameraType;
+
+ /*! Default matrices: Identity for both projection and modelview. */
+ NodeCamera(CameraType camera_type = GENERIC);
+ NodeCamera(const NodeCamera& iBrother);
- /*! Default matrices: Identity for both projection and modelview. */
- NodeCamera(CameraType camera_type = GENERIC);
- NodeCamera(const NodeCamera& iBrother);
+ virtual ~NodeCamera() {}
- virtual ~NodeCamera() {}
+ /*! Accept the corresponding visitor */
+ virtual void accept(SceneVisitor& v);
- /*! Accept the corresponding visitor */
- virtual void accept(SceneVisitor& v);
+ /*! Matrix is copied */
+ void setModelViewMatrix(double modelview_matrix[16]);
- /*! Matrix is copied */
- void setModelViewMatrix(double modelview_matrix[16]);
- /*! Matrix is copied */
- void setProjectionMatrix(double projection_matrix[16]);
+ /*! Matrix is copied */
+ void setProjectionMatrix(double projection_matrix[16]);
- double * modelViewMatrix() {return modelview_matrix_;}
- double * projectionMatrix() {return projection_matrix_;}
+ double * modelViewMatrix()
+ {
+ return modelview_matrix_;
+ }
+
+ double * projectionMatrix()
+ {
+ return projection_matrix_;
+ }
protected:
- // row major right handed matrix
- double modelview_matrix_[16];
- // row major right handed matrix
- double projection_matrix_[16];
+ // row major right handed matrix
+ double modelview_matrix_[16];
+ // row major right handed matrix
+ double projection_matrix_[16];
- CameraType camera_type_;
+ CameraType camera_type_;
};
-class LIB_SCENE_GRAPH_EXPORT NodeOrthographicCamera : public NodeCamera{
+class LIB_SCENE_GRAPH_EXPORT NodeOrthographicCamera : public NodeCamera
+{
public:
- NodeOrthographicCamera();
- /*! Builds a parallel projection matrix a la glOrtho.
- A 0 0 tx
- 0 B 0 ty
- 0 0 C tz
- 0 0 0 1
-
- where
-
- A =
- 2 / (right - left)
- B =
- 2 / (top - bottom)
- C =
- -2 / (far - near)
- tx =
- -(right + left) / (right - left)
- ty =
- -(top + bottom) / (top - bottom)
- tz =
- -(zFar + zNear) / (zFar - zNear)
- */
- NodeOrthographicCamera(double left
- , double right
- , double bottom
- , double top
- , double zNear
- , double zFar
- );
-
- double left() const {return left_;}
- double right() const {return right_;}
- double bottom() const {return bottom_;}
- double top() const {return top_;}
- double zNear() const {return zNear_;}
- double zFar() const {return zFar_;}
-
- NodeOrthographicCamera(const NodeOrthographicCamera& iBrother);
+ NodeOrthographicCamera();
+
+ /*! Builds a parallel projection matrix a la glOrtho.
+ * A 0 0 tx
+ * 0 B 0 ty
+ * 0 0 C tz
+ * 0 0 0 1
+ *
+ * where
+ * A = 2 / (right - left)
+ * B = 2 / (top - bottom)
+ * C = -2 / (far - near)
+ * tx = -(right + left) / (right - left)
+ * ty = -(top + bottom) / (top - bottom)
+ * tz = -(zFar + zNear) / (zFar - zNear)
+ */
+ NodeOrthographicCamera(double left, double right, double bottom, double top, double zNear, double zFar);
+
+ double left() const
+ {
+ return left_;
+ }
+
+ double right() const
+ {
+ return right_;
+ }
+
+ double bottom() const
+ {
+ return bottom_;
+ }
+
+ double top() const
+ {
+ return top_;
+ }
+
+ double zNear() const
+ {
+ return zNear_;
+ }
+
+ double zFar() const
+ {
+ return zFar_;
+ }
+
+ NodeOrthographicCamera(const NodeOrthographicCamera& iBrother);
private:
- double left_;
- double right_;
- double bottom_;
- double top_;
- double zNear_;
- double zFar_;
+ double left_;
+ double right_;
+ double bottom_;
+ double top_;
+ double zNear_;
+ double zFar_;
};
-class LIB_SCENE_GRAPH_EXPORT NodePerspectiveCamera : public NodeCamera {
+class LIB_SCENE_GRAPH_EXPORT NodePerspectiveCamera : public NodeCamera
+{
public:
- NodePerspectiveCamera();
- /*! Builds a perspective projection matrix a la gluPerspective.
- Given f defined as follows:
- fovy
- f = cotangent(____)
- 2
- The generated matrix is
-
-
- ( f )
- | ______ |
- | aspect 0 0 0 |
- | |
- | 0 f 0 0 |
- | |
- | zNear+zFar 2*zNear*zFar |
- | __________ ____________ |
- | 0 0 zNear-zFar zNear-zFar |
- | |
- ( 0 0 -1 0 )
- \param fovy
- Field of View specified in radians.
- */
- NodePerspectiveCamera(double fovy
- , double aspect
- , double zNear
- , double zFar);
-
- /*! Builds a perspective projection matrix a la glFrustum.
- ( 2*zNear )
- | __________ |
- | right-left 0 A 0 |
- | |
- | 2*zNear |
- | 0 __________ B 0 |
- | top-bottom |
- | |
- | 0 0 C D |
- | |
- | 0 0 -1 0 |
- ( )
-
- right+left
- A = __________
- right-left
-
- top+bottom
- B = __________
- top-bottom
-
- zFar+zNear
- C = - __________
- zFar-zNear
-
- 2*zFar*zNear
- D = - ____________
- zFar-zNear
- */
- NodePerspectiveCamera(double left,
- double right,
- double bottom,
- double top,
- double zNear,
- double zFar);
+ NodePerspectiveCamera();
+
+ /*! Builds a perspective projection matrix a la gluPerspective.
+ * Given f defined as follows:
+ * fovy
+ * f = cotangent(____)
+ * 2
+ * The generated matrix is
+ * ( f )
+ * | ______ 0 0 0 |
+ * | aspect |
+ * | |
+ * | 0 f 0 0 |
+ * | |
+ * | zNear+zFar 2*zNear*zFar |
+ * | 0 0 __________ ____________ |
+ * | zNear-zFar zNear-zFar |
+ * | |
+ * ( 0 0 -1 0 )
+ * \param fovy
+ * Field of View specified in radians.
+ */
+ NodePerspectiveCamera(double fovy, double aspect, double zNear, double zFar);
+
+ /*! Builds a perspective projection matrix a la glFrustum.
+ * ( 2*zNear )
+ * | __________ 0 A 0 |
+ * | right-left |
+ * | |
+ * | 2*zNear |
+ * | 0 __________ B 0 |
+ * | top-bottom |
+ * | |
+ * | 0 0 C D |
+ * | |
+ * | 0 0 -1 0 |
+ * ( )
+ *
+ * right+left
+ * A = __________
+ * right-left
+ *
+ * top+bottom
+ * B = __________
+ * top-bottom
+ *
+ * zFar+zNear
+ * C = - __________
+ * zFar-zNear
+ *
+ * 2*zFar*zNear
+ * D = - ____________
+ * zFar-zNear
+ */
+ NodePerspectiveCamera(double left, double right, double bottom, double top, double zNear, double zFar);
};
-#endif // NODE_CAMERA_H_
+#endif // __FREESTYLE_NODE_CAMERA_H__