# include <config.h>
#endif
-#include <simgear/compiler.h>
-
-#ifdef HAVE_WINDOWS_H
+#ifdef HAVE_WINDOWS_H
# include <windows.h>
#endif
-#include GLUT_H
-
#include <plib/ssg.h>
+#include <plib/fnt.h>
+#include <simgear/compiler.h>
+#include <simgear/props/props.hxx>
+#include <simgear/structure/subsystem_mgr.hxx>
#include <simgear/math/interpolater.hxx>
-#include <simgear/misc/props.hxx>
#include <simgear/timing/timestamp.hxx>
+#include <cmath>
#include <vector>
#include <map>
-#include <plib/fnt.h>
-#include <Main/fgfs.hxx>
#include <Main/fg_props.hxx>
-
#include <Input/input.hxx>
SG_USING_STD(vector);
* redraw themselves when necessary, and will pass mouse clicks on to
* the appropriate instruments for processing.
*/
-class FGPanel : public FGSubsystem
+class FGPanel : public SGSubsystem
{
public:
// X-offset
virtual void setXOffset (int offset);
- virtual int getXOffset () const { return _x_offset; }
+ virtual int getXOffset () const { return _x_offset->getIntValue(); }
// Y-offset.
virtual void setYOffset (int offset);
- virtual int getYOffset () const { return _y_offset; }
+ virtual int getYOffset () const { return _y_offset->getIntValue(); }
// View height.
virtual void setViewHeight (int height) { _view_height = height; }
void setupVirtualCockpit();
void cleanupVirtualCockpit();
- mutable bool _visibility;
mutable bool _mouseDown;
mutable int _mouseButton, _mouseX, _mouseY;
mutable int _mouseDelay;
typedef vector<FGPanelInstrument *> instrument_list_type;
int _width;
int _height;
- int _x_offset;
- int _y_offset;
int _view_height;
- float _jitter;
- bool _flipx;
+
+ SGPropertyNode * _visibility;
+ SGPropertyNode * _x_offset;
+ SGPropertyNode * _y_offset;
+ SGPropertyNode * _jitter;
+ SGPropertyNode * _flipx;
const SGPropertyNode * _xsize_node;
const SGPropertyNode * _ysize_node;
* or joystick, but they are tied to specific mouse actions in
* rectangular areas of the panel.
*/
-class FGPanelAction : public FGConditional
+class FGPanelAction : public SGConditional
{
public:
FGPanelAction ();
/**
* A transformation for a layer.
*/
-class FGPanelTransformation : public FGConditional
+class FGPanelTransformation : public SGConditional
{
public:
const SGPropertyNode * node;
float min;
float max;
+ bool has_mod;
+ float mod;
float factor;
float offset;
SGInterpTable * table;
* on current FGFS instrument readings: for example, a texture
* representing a needle can rotate to show the airspeed.
*/
-class FGInstrumentLayer : public FGConditional
+class FGInstrumentLayer : public SGConditional
{
public:
* may show up in the future (some complex instruments could be
* entirely hand-coded, for example).
*/
-class FGPanelInstrument : public FGConditional
+class FGPanelInstrument : public SGConditional
{
public:
FGPanelInstrument ();
virtual void draw ();
// transfer pointer ownership
virtual void addLayer (FGInstrumentLayer * layer);
-private:
+protected:
vector<FGInstrumentLayer *> _layers;
};
DOUBLE_VALUE
};
- class Chunk : public FGConditional
+ class Chunk : public SGConditional
{
public:
Chunk (const string &text, const string &fmt = "%s");
/**
- * A layer that switches between two other layers.
+ * A group layer that switches among its children.
*
- * The usefulness of this layer is questionable now that all layers
- * can have conditions, and it may be deprecated soon.
+ * The first layer that passes its condition will be drawn, and
+ * any following layers will be ignored.
*/
-class FGSwitchLayer : public FGInstrumentLayer
+class FGSwitchLayer : public FGGroupLayer
{
public:
// Transfer pointers!!
- FGSwitchLayer (int w, int h, const SGPropertyNode * node,
- FGInstrumentLayer * layer1,
- FGInstrumentLayer * layer2);
- virtual ~FGSwitchLayer ();
-
+ FGSwitchLayer ();
virtual void draw ();
-private:
- const SGPropertyNode * _node;
- FGInstrumentLayer * _layer1, * _layer2;
};
bool fgPanelVisible ();
-\f
-////////////////////////////////////////////////////////////////////////
-// The current panel, if any.
-////////////////////////////////////////////////////////////////////////
-
-extern FGPanel * current_panel; // TODO: move to globals
-
-
\f
#endif // __PANEL_HXX