#ifndef HUDCAMERA_H #define HUDCAMERA_H #include #include #include #include #include "ViewCommon.h" using namespace osg; //使用的是坐标系轴 class HUDAxis : public Camera { public: HUDAxis(); HUDAxis(const HUDAxis& copy, const CopyOp& copyop = CopyOp::SHALLOW_COPY); META_Node(osg, HUDAxis); double GetAspectRatio(); inline void setMainCamera(Camera* camera){ _mainCamera = camera;} virtual void traverse(NodeVisitor& nv); protected: virtual ~HUDAxis(); observer_ptr _mainCamera; }; //使用的是HUD Text(Head Up Display) class HUDText : public Camera { public: HUDText(); HUDText(osg::Camera* masterCamera); HUDText(const HUDText& copy, const CopyOp& copyop = CopyOp::SHALLOW_COPY); META_Node(osg, HUDText); void InitText(); void setHUDText(wchar_t* str, HUDTextWinPos displayPos, TextAlignmentType alignmentType); void setHUDTextProperties(float charactersize, osg::Vec4 textColor, std::string font); inline void setMainCamera(Camera* camera){ _mainCamera = camera;} protected: virtual void traverse(NodeVisitor& nv); osgText::Text::AlignmentType ConvertToOSGAlignment(TextAlignmentType _alignmentType); public: osg::ref_ptr _geode; protected: virtual ~HUDText(); observer_ptr _mainCamera; wchar_t _stringList[3][256]; std::vector m_AlignmentList; float m_characterSize; osg::Vec4 m_textColor; std::string m_font; }; class HUDAnalysis : public Camera { public: enum eAnalysisType{ OnlyPositive, Positive_negative }; HUDAnalysis(); HUDAnalysis(const HUDAnalysis& copy, const CopyOp& copyop = CopyOp::SHALLOW_COPY); META_Node(osg, HUDAnalysis); void initial(); void setData(float mean, float standard); void setData(int num, float minVal, float maxVal, float meanVal, float standard); void updatePos(int wid, int hei); void showAnalysis(bool flag); protected: virtual ~HUDAnalysis(); osg::ref_ptr _switch; osg::ref_ptr _geode; eAnalysisType _type; int _wid; int _hei; }; #endif