// 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., 675 Mass Ave, Cambridge, MA 02139, USA.
+// Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
//
// $Id$
#ifndef __PANEL_HXX
#define __PANEL_HXX
-#ifndef __cplusplus
+#ifndef __cplusplus
# error This library requires C++
-#endif
+#endif
#ifdef HAVE_CONFIG_H
# include <config.h>
#endif
-#ifdef HAVE_WINDOWS_H
-# include <windows.h>
-#endif
+#include <osg/ref_ptr>
+#include <osg/StateSet>
+#include <osg/Texture2D>
#include <plib/fnt.h>
#include <Input/input.hxx>
#include <Instrumentation/dclgps.hxx>
-SG_USING_STD(vector);
-SG_USING_STD(map);
+using std::vector;
+using std::map;
-class ssgTexture;
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<string,ssgTexture *> _textureMap;
+ static map<string,osg::ref_ptr<osg::Texture2D> > _textureMap;
};
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;
private:
string _path;
- ssgTexture * _texture;
+ osg::ref_ptr<osg::StateSet> _texture;
float _minX, _minY, _maxX, _maxY;
};
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();
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;
virtual void setDepthTest (bool enable);
+ bool getAutohide(void) const { return _autohide; };
+ void setAutohide(bool enable) { _autohide = enable; };
+
private:
void setupVirtualCockpit();
void cleanupVirtualCockpit();
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<osg::StateSet> _bg;
+ osg::ref_ptr<osg::StateSet> _mbg[8];
// List of instruments in panel.
instrument_list_type _instruments;
bool _enable_depth_test;
+ bool _autohide;
};
// 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; }
virtual bool doAction (int updown);
private:
- typedef vector<FGBinding *> binding_list_t;
+ typedef vector<SGBinding *> binding_list_t;
int _button;
int _x;
virtual ~FGPanelTransformation ();
Type type;
- const SGPropertyNode * node;
+ SGConstPropertyNode_ptr node;
float min;
float max;
bool has_mod;
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; }
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);
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);
//FGSpecialInstrument (int x, int y, int w, int h);
virtual ~FGSpecialInstrument ();
- virtual void draw ();
+ virtual void draw (osg::State& state);
protected:
DCLGPS* complex;
public:
FGGroupLayer ();
virtual ~FGGroupLayer ();
- virtual void draw ();
+ virtual void draw (osg::State& state);
// transfer pointer ownership
virtual void addLayer (FGInstrumentLayer * layer);
protected:
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;
}
virtual const FGCroppedTexture &getTexture () const { return _texture; }
+ virtual FGCroppedTexture *getTexture() { return &_texture; }
+
+ void setEmissive(bool e) { _emissive = e; }
private:
FGCroppedTexture _texture;
+ bool _emissive;
};
private:
ChunkType _type;
string _text;
- const SGPropertyNode * _node;
+ SGConstPropertyNode_ptr _node;
string _fmt;
float _mult;
float _offs;
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);
public:
// Transfer pointers!!
FGSwitchLayer ();
- virtual void draw ();
+ virtual void draw (osg::State& state);
};