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:
Diffstat (limited to 'source/blender/freestyle/intern/application/AppView.h')
-rw-r--r--source/blender/freestyle/intern/application/AppView.h414
1 files changed, 224 insertions, 190 deletions
diff --git a/source/blender/freestyle/intern/application/AppView.h b/source/blender/freestyle/intern/application/AppView.h
index 3939d96cf16..0b029895b8c 100644
--- a/source/blender/freestyle/intern/application/AppView.h
+++ b/source/blender/freestyle/intern/application/AppView.h
@@ -30,212 +30,246 @@
#include "BLI_math.h"
#ifdef WITH_CXX_GUARDEDALLOC
-#include "MEM_guardedalloc.h"
+# include "MEM_guardedalloc.h"
#endif
namespace Freestyle {
using namespace Geometry;
-class AppView
-{
-public:
- AppView(const char *iName = 0);
- virtual ~AppView();
-
-public:
- //inherited
- inline unsigned int width() {return _width;}
- inline unsigned int height() {return _height;}
- inline BBox<Vec2i> border() {return _border;}
- inline float thickness() {return _thickness;}
- inline void setWidth(unsigned int width) {_width = width;}
- inline void setHeight(unsigned int height) {_height = height;}
- inline void setBorder(int xmin, int ymin, int xmax, int ymax) {
- _border = BBox<Vec2i>(Vec2i(xmin, ymin), Vec2i(xmax, ymax));
- }
- inline void setThickness(float thickness) {_thickness = thickness;}
-
-protected:
- unsigned int _width, _height;
- BBox<Vec2i> _border;
- float _thickness;
-
-public:
- /*! Sets the model to draw in the viewer
- * iModel
- * The Root Node of the model
- */
- inline void setModel(NodeGroup *iModel)
- {
- if (0 != _ModelRootNode->numberOfChildren()) {
- _ModelRootNode->DetachChildren();
- _ModelRootNode->clearBBox();
- }
-
- AddModel(iModel);
- }
-
- /*! Adds a model for displaying in the viewer */
- inline void AddModel(NodeGroup *iModel)
- {
- _ModelRootNode->AddChild(iModel);
- _ModelRootNode->UpdateBBox();
-
- _minBBox = std::min(std::min(_ModelRootNode->bbox().getMin()[0], _ModelRootNode->bbox().getMin()[1]),
- _ModelRootNode->bbox().getMin()[2]);
- _maxBBox = std::max(std::max(_ModelRootNode->bbox().getMax()[0], _ModelRootNode->bbox().getMax()[1]),
- _ModelRootNode->bbox().getMax()[2]);
-
- _maxAbs = std::max(rabs(_minBBox), rabs(_maxBBox));
- _minAbs = std::min(rabs(_minBBox), rabs(_maxBBox));
- }
-
- inline void AddSilhouette(NodeGroup *iSilhouette)
- {
- _SilhouetteRootNode->AddChild(iSilhouette);
- }
-
- inline void Add2DSilhouette(NodeGroup * /*iSilhouette*/)
- {
- //_pFENode->AddChild(iSilhouette);
- }
-
- inline void Add2DVisibleSilhouette(NodeGroup * /*iVSilhouette*/)
- {
- //_pVisibleSilhouetteNode->AddChild(iVSilhouette);
- }
-
- inline void setDebug(NodeGroup *iDebug)
- {
- if (0 != _DebugRootNode->numberOfChildren()) {
- _DebugRootNode->DetachChildren();
- _DebugRootNode->clearBBox();
- }
-
- AddDebug(iDebug);
- }
-
- inline void AddDebug(NodeGroup *iDebug)
- {
- _DebugRootNode->AddChild(iDebug);
- }
-
- inline void DetachModel(Node *iModel)
- {
- _ModelRootNode->DetachChild(iModel);
- _ModelRootNode->UpdateBBox();
-
- _minBBox = std::min(std::min(_ModelRootNode->bbox().getMin()[0], _ModelRootNode->bbox().getMin()[1]),
- _ModelRootNode->bbox().getMin()[2]);
- _maxBBox = std::max(std::max(_ModelRootNode->bbox().getMax()[0], _ModelRootNode->bbox().getMax()[1]),
- _ModelRootNode->bbox().getMax()[2]);
-
- _maxAbs = std::max(rabs(_minBBox), rabs(_maxBBox));
- _minAbs = std::min(rabs(_minBBox), rabs(_maxBBox));
- }
-
- inline void DetachModel()
- {
- _ModelRootNode->DetachChildren();
- _ModelRootNode->clearBBox();
+class AppView {
+ public:
+ AppView(const char *iName = 0);
+ virtual ~AppView();
+
+ public:
+ //inherited
+ inline unsigned int width()
+ {
+ return _width;
+ }
+ inline unsigned int height()
+ {
+ return _height;
+ }
+ inline BBox<Vec2i> border()
+ {
+ return _border;
+ }
+ inline float thickness()
+ {
+ return _thickness;
+ }
+ inline void setWidth(unsigned int width)
+ {
+ _width = width;
+ }
+ inline void setHeight(unsigned int height)
+ {
+ _height = height;
+ }
+ inline void setBorder(int xmin, int ymin, int xmax, int ymax)
+ {
+ _border = BBox<Vec2i>(Vec2i(xmin, ymin), Vec2i(xmax, ymax));
+ }
+ inline void setThickness(float thickness)
+ {
+ _thickness = thickness;
+ }
+
+ protected:
+ unsigned int _width, _height;
+ BBox<Vec2i> _border;
+ float _thickness;
+
+ public:
+ /*! Sets the model to draw in the viewer
+ * iModel
+ * The Root Node of the model
+ */
+ inline void setModel(NodeGroup *iModel)
+ {
+ if (0 != _ModelRootNode->numberOfChildren()) {
+ _ModelRootNode->DetachChildren();
+ _ModelRootNode->clearBBox();
+ }
+
+ AddModel(iModel);
+ }
+
+ /*! Adds a model for displaying in the viewer */
+ inline void AddModel(NodeGroup *iModel)
+ {
+ _ModelRootNode->AddChild(iModel);
+ _ModelRootNode->UpdateBBox();
+
+ _minBBox = std::min(
+ std::min(_ModelRootNode->bbox().getMin()[0], _ModelRootNode->bbox().getMin()[1]),
+ _ModelRootNode->bbox().getMin()[2]);
+ _maxBBox = std::max(
+ std::max(_ModelRootNode->bbox().getMax()[0], _ModelRootNode->bbox().getMax()[1]),
+ _ModelRootNode->bbox().getMax()[2]);
+
+ _maxAbs = std::max(rabs(_minBBox), rabs(_maxBBox));
+ _minAbs = std::min(rabs(_minBBox), rabs(_maxBBox));
+ }
+
+ inline void AddSilhouette(NodeGroup *iSilhouette)
+ {
+ _SilhouetteRootNode->AddChild(iSilhouette);
+ }
+
+ inline void Add2DSilhouette(NodeGroup * /*iSilhouette*/)
+ {
+ //_pFENode->AddChild(iSilhouette);
+ }
+
+ inline void Add2DVisibleSilhouette(NodeGroup * /*iVSilhouette*/)
+ {
+ //_pVisibleSilhouetteNode->AddChild(iVSilhouette);
+ }
+
+ inline void setDebug(NodeGroup *iDebug)
+ {
+ if (0 != _DebugRootNode->numberOfChildren()) {
+ _DebugRootNode->DetachChildren();
+ _DebugRootNode->clearBBox();
+ }
+
+ AddDebug(iDebug);
+ }
+
+ inline void AddDebug(NodeGroup *iDebug)
+ {
+ _DebugRootNode->AddChild(iDebug);
+ }
+
+ inline void DetachModel(Node *iModel)
+ {
+ _ModelRootNode->DetachChild(iModel);
+ _ModelRootNode->UpdateBBox();
+
+ _minBBox = std::min(
+ std::min(_ModelRootNode->bbox().getMin()[0], _ModelRootNode->bbox().getMin()[1]),
+ _ModelRootNode->bbox().getMin()[2]);
+ _maxBBox = std::max(
+ std::max(_ModelRootNode->bbox().getMax()[0], _ModelRootNode->bbox().getMax()[1]),
+ _ModelRootNode->bbox().getMax()[2]);
+
+ _maxAbs = std::max(rabs(_minBBox), rabs(_maxBBox));
+ _minAbs = std::min(rabs(_minBBox), rabs(_maxBBox));
+ }
+
+ inline void DetachModel()
+ {
+ _ModelRootNode->DetachChildren();
+ _ModelRootNode->clearBBox();
#if 0
- // 2D Scene
- _p2DNode.DetachChildren();
- _pFENode->DetachChildren();
- _pVisibleSilhouetteNode->DetachChildren();
+ // 2D Scene
+ _p2DNode.DetachChildren();
+ _pFENode->DetachChildren();
+ _pVisibleSilhouetteNode->DetachChildren();
#endif
- }
+ }
- inline void DetachSilhouette()
- {
- _SilhouetteRootNode->DetachChildren();
+ inline void DetachSilhouette()
+ {
+ _SilhouetteRootNode->DetachChildren();
#if 0
- _pFENode->DetachChildren();
- _pVisibleSilhouetteNode->DetachChildren();
+ _pFENode->DetachChildren();
+ _pVisibleSilhouetteNode->DetachChildren();
#endif
- _p2DSelectionNode->destroy();
- }
-
- inline void DetachVisibleSilhouette()
- {
- //_pVisibleSilhouetteNode->DetachChildren();
- _p2DSelectionNode->destroy();
- }
-
- inline void DetachDebug()
- {
- _DebugRootNode->DetachChildren();
- }
-
- real distanceToSceneCenter();
- real GetFocalLength();
-
- inline real GetAspect() const
- {
- return ((real)_width / (real)_height);
- }
-
- void setHorizontalFov(float hfov)
- {
- _Fovy = 2.0 * atan (tan(hfov / 2.0) / GetAspect());
- }
-
- inline real GetFovyRadian() const
- {
- return _Fovy;
- }
-
- inline real GetFovyDegrees() const
- {
- return _Fovy * 180.0 / M_PI; // TODO Use RAD2DEG here too?
- }
-
- BBox<Vec3r> scene3DBBox() const {return _ModelRootNode->bbox();}
-
- real znear();
- real zfar();
-
-public:
- /*! Core scene drawing */
- void DrawScene(SceneVisitor *iRenderer);
-
- /*! 2D Scene Drawing */
- void Draw2DScene(SceneVisitor *iRenderer);
-
-protected:
- /*! fabs or abs */
- inline int rabs(int x) {return abs(x);}
- inline real rabs(real x) {return fabs(x);}
-
-protected:
- float _Fovy;
-
- //The root node container
- NodeGroup _RootNode;
- NodeDrawingStyle *_ModelRootNode;
- NodeDrawingStyle *_SilhouetteRootNode;
- NodeDrawingStyle *_DebugRootNode;
-
- NodeGroup _Light;
-
- real _minBBox;
- real _maxBBox;
- real _maxAbs;
- real _minAbs;
-
- // 2D Scene
- bool _Draw2DScene;
- bool _Draw3DScene;
- NodeGroup _p2DNode;
- NodeDrawingStyle *_p2DSelectionNode;
+ _p2DSelectionNode->destroy();
+ }
+
+ inline void DetachVisibleSilhouette()
+ {
+ //_pVisibleSilhouetteNode->DetachChildren();
+ _p2DSelectionNode->destroy();
+ }
+
+ inline void DetachDebug()
+ {
+ _DebugRootNode->DetachChildren();
+ }
+
+ real distanceToSceneCenter();
+ real GetFocalLength();
+
+ inline real GetAspect() const
+ {
+ return ((real)_width / (real)_height);
+ }
+
+ void setHorizontalFov(float hfov)
+ {
+ _Fovy = 2.0 * atan(tan(hfov / 2.0) / GetAspect());
+ }
+
+ inline real GetFovyRadian() const
+ {
+ return _Fovy;
+ }
+
+ inline real GetFovyDegrees() const
+ {
+ return _Fovy * 180.0 / M_PI; // TODO Use RAD2DEG here too?
+ }
+
+ BBox<Vec3r> scene3DBBox() const
+ {
+ return _ModelRootNode->bbox();
+ }
+
+ real znear();
+ real zfar();
+
+ public:
+ /*! Core scene drawing */
+ void DrawScene(SceneVisitor *iRenderer);
+
+ /*! 2D Scene Drawing */
+ void Draw2DScene(SceneVisitor *iRenderer);
+
+ protected:
+ /*! fabs or abs */
+ inline int rabs(int x)
+ {
+ return abs(x);
+ }
+ inline real rabs(real x)
+ {
+ return fabs(x);
+ }
+
+ protected:
+ float _Fovy;
+
+ //The root node container
+ NodeGroup _RootNode;
+ NodeDrawingStyle *_ModelRootNode;
+ NodeDrawingStyle *_SilhouetteRootNode;
+ NodeDrawingStyle *_DebugRootNode;
+
+ NodeGroup _Light;
+
+ real _minBBox;
+ real _maxBBox;
+ real _maxAbs;
+ real _minAbs;
+
+ // 2D Scene
+ bool _Draw2DScene;
+ bool _Draw3DScene;
+ NodeGroup _p2DNode;
+ NodeDrawingStyle *_p2DSelectionNode;
#ifdef WITH_CXX_GUARDEDALLOC
- MEM_CXX_CLASS_ALLOC_FUNCS("Freestyle:AppView")
+ MEM_CXX_CLASS_ALLOC_FUNCS("Freestyle:AppView")
#endif
};
} /* namespace Freestyle */
-#endif // __APPVIEW_H__
+#endif // __APPVIEW_H__