X-Git-Url: https://git.mxchange.org/?a=blobdiff_plain;f=src%2FCockpit%2Fpanel.hxx;h=58c1eed4a0e5190208af5a3ee2cb2386c839205a;hb=35396de6f87e2a8b8d0c21eb1d0908db586799f8;hp=619c2829d9b8ba7756b37cc4bf35eabc818e3d8a;hpb=c9813d1b5d79b4aad13c263690a0223086af25ac;p=flightgear.git diff --git a/src/Cockpit/panel.hxx b/src/Cockpit/panel.hxx index 619c2829d..58c1eed4a 100644 --- a/src/Cockpit/panel.hxx +++ b/src/Cockpit/panel.hxx @@ -21,18 +21,18 @@ #ifndef __PANEL_HXX #define __PANEL_HXX -#ifndef __cplusplus +#ifndef __cplusplus # error This library requires C++ -#endif +#endif #ifdef HAVE_CONFIG_H # include #endif -#ifdef HAVE_WINDOWS_H -# include -#endif +#include +#include +#include #include @@ -50,11 +50,10 @@ #include #include -SG_USING_STD(vector); -SG_USING_STD(map); +using std::vector; +using std::map; -class ssgTexture; class FGPanelInstrument; @@ -72,9 +71,11 @@ class FGPanelInstrument; class FGTextureManager { public: - static ssgTexture * createTexture(const string &relativePath); + static osg::Texture2D* createTexture(const string &relativePath, + bool staticTexture = true); + static void addTexture(const string &relativePath, osg::Texture2D* texture); private: - static map _textureMap; + static map > _textureMap; }; @@ -97,7 +98,7 @@ public: virtual const string &getPath () const { return _path; } - virtual ssgTexture * getTexture (); + virtual osg::StateSet* getTexture (); virtual void setCrop (float minX, float minY, float maxX, float maxY) { _minX = minX; _minY = minY; _maxX = maxX; _maxY = maxY; @@ -111,7 +112,7 @@ public: private: string _path; - ssgTexture * _texture; + osg::ref_ptr _texture; float _minX, _minY, _maxX, _maxY; }; @@ -141,9 +142,10 @@ public: virtual void init (); virtual void bind (); virtual void unbind (); - virtual void draw (); - virtual void update (double dt); - virtual void update (GLfloat winx, GLfloat winw, GLfloat winy, GLfloat winh); + virtual void draw (osg::State& state); + virtual void update (double); + void update (osg::State& state); + virtual void update (osg::State& state, GLfloat winx, GLfloat winw, GLfloat winy, GLfloat winh); virtual void updateMouseDelay(); @@ -151,10 +153,10 @@ public: virtual void addInstrument (FGPanelInstrument * instrument); // Background texture. - virtual void setBackground (ssgTexture * texture); + virtual void setBackground (osg::Texture2D* texture); // Background multiple textures. - virtual void setMultiBackground (ssgTexture * texture, int idx); + virtual void setMultiBackground (osg::Texture2D* texture, int idx); // Make the panel visible or invisible. virtual bool getVisibility () const; @@ -186,6 +188,9 @@ public: virtual void setDepthTest (bool enable); + bool getAutohide(void) const { return _autohide; }; + void setAutohide(bool enable) { _autohide = enable; }; + private: void setupVirtualCockpit(); void cleanupVirtualCockpit(); @@ -199,20 +204,21 @@ private: int _height; int _view_height; - SGPropertyNode * _visibility; - SGPropertyNode * _x_offset; - SGPropertyNode * _y_offset; - SGPropertyNode * _jitter; - SGPropertyNode * _flipx; + SGPropertyNode_ptr _visibility; + SGPropertyNode_ptr _x_offset; + SGPropertyNode_ptr _y_offset; + SGPropertyNode_ptr _jitter; + SGPropertyNode_ptr _flipx; - const SGPropertyNode * _xsize_node; - const SGPropertyNode * _ysize_node; + SGConstPropertyNode_ptr _xsize_node; + SGConstPropertyNode_ptr _ysize_node; - ssgTexture * _bg; - ssgTexture * _mbg[8]; + osg::ref_ptr _bg; + osg::ref_ptr _mbg[8]; // List of instruments in panel. instrument_list_type _instruments; bool _enable_depth_test; + bool _autohide; }; @@ -246,7 +252,7 @@ public: // Setters. // transfer pointer ownership - virtual void addBinding (FGBinding * binding, int updown); + virtual void addBinding (SGBinding * binding, int updown); virtual void setButton (int button) { _button = button; } virtual void setX (int x) { _x = x; } virtual void setY (int y) { _y = y; } @@ -267,7 +273,7 @@ public: virtual bool doAction (int updown); private: - typedef vector binding_list_t; + typedef vector binding_list_t; int _button; int _x; @@ -303,7 +309,7 @@ public: virtual ~FGPanelTransformation (); Type type; - const SGPropertyNode * node; + SGConstPropertyNode_ptr node; float min; float max; bool has_mod; @@ -335,7 +341,7 @@ public: FGInstrumentLayer (int w = -1, int h = -1); virtual ~FGInstrumentLayer (); - virtual void draw () = 0; + virtual void draw (osg::State& state) = 0; virtual void transform () const; virtual int getWidth () const { return _w; } @@ -377,8 +383,8 @@ public: FGPanelInstrument (int x, int y, int w, int h); virtual ~FGPanelInstrument (); - virtual void draw () = 0; - virtual void drawHotspots(); + virtual void draw (osg::State& state) = 0; + virtual void drawHotspots(osg::State& state); virtual void setPosition(int x, int y); virtual void setSize(int w, int h); @@ -414,7 +420,7 @@ public: FGLayeredInstrument (int x, int y, int w, int h); virtual ~FGLayeredInstrument (); - virtual void draw (); + virtual void draw (osg::State& state); // Transfer pointer ownership!! virtual int addLayer (FGInstrumentLayer *layer); @@ -444,7 +450,7 @@ public: //FGSpecialInstrument (int x, int y, int w, int h); virtual ~FGSpecialInstrument (); - virtual void draw (); + virtual void draw (osg::State& state); protected: DCLGPS* complex; @@ -463,7 +469,7 @@ class FGGroupLayer : public FGInstrumentLayer public: FGGroupLayer (); virtual ~FGGroupLayer (); - virtual void draw (); + virtual void draw (osg::State& state); // transfer pointer ownership virtual void addLayer (FGInstrumentLayer * layer); protected: @@ -485,7 +491,7 @@ public: FGTexturedLayer (const FGCroppedTexture &texture, int w = -1, int h = -1); virtual ~FGTexturedLayer (); - virtual void draw (); + virtual void draw (osg::State& state); virtual void setTexture (const FGCroppedTexture &texture) { _texture = texture; @@ -529,7 +535,7 @@ public: private: ChunkType _type; string _text; - const SGPropertyNode * _node; + SGConstPropertyNode_ptr _node; string _fmt; float _mult; float _offs; @@ -540,7 +546,7 @@ public: FGTextLayer (int w = -1, int h = -1); virtual ~FGTextLayer (); - virtual void draw (); + virtual void draw (osg::State& state); // Transfer pointer!! virtual void addChunk (Chunk * chunk); @@ -576,7 +582,7 @@ class FGSwitchLayer : public FGGroupLayer public: // Transfer pointers!! FGSwitchLayer (); - virtual void draw (); + virtual void draw (osg::State& state); };