OSCAR-code/Graphs/graphlayer.h

91 lines
2.1 KiB
C++

/********************************************************************
gLayer Headers
Copyright (c)2011 Mark Watkins <jedimark@users.sourceforge.net>
License: GPL
*********************************************************************/
#ifndef GRAPHLAYER_H
#define GRAPHLAYER_H
#include <QString>
#include "graphwindow.h"
#include "graphdata.h"
class gGraphWindow;
class gGraphData;
class gPointData;
class gLayer
{
public:
gLayer(gPointData *g=NULL,QString title="");
virtual ~gLayer();
virtual void Plot(gGraphWindow & w,float scrx,float scry)=0;
vector<QColor> color;
virtual void SetData(gPointData * gd);;
virtual gPointData * GetData();;
virtual void DataChanged(gGraphData *src);
virtual double MinX();
virtual double MaxX();
virtual double MinY();
virtual double MaxY();
virtual double RealMinX();
virtual double RealMaxX();
virtual double RealMinY();
virtual double RealMaxY();
virtual void SetMinX(double v);
virtual void SetMaxX(double v);
virtual void SetMinY(double v);
virtual void SetMaxY(double v);
virtual void NotifyGraphWindow(gGraphWindow *g);
virtual void SetVisible(bool v) { m_visible=v; };
virtual bool IsVisible() { return m_visible; };
virtual bool isEmpty();
protected:
bool m_visible;
bool m_movable;
QString m_title;
gPointData *data; // Data source
list<gGraphWindow *> m_graph; // notify list of graphs that attach this layer.
};
class gLayerGroup:public gLayer
{
public:
gLayerGroup();
virtual ~gLayerGroup();
virtual void AddLayer(gLayer *l);
//virtual void DataChanged(gGraphData *src);
virtual void NotifyGraphWindow(gGraphWindow *g);
virtual double MinX();
virtual double MaxX();
virtual double MinY();
virtual double MaxY();
virtual double RealMinX();
virtual double RealMaxX();
virtual double RealMinY();
virtual double RealMaxY();
virtual void SetMinX(double v);
virtual void SetMaxX(double v);
virtual void SetMinY(double v);
virtual void SetMaxY(double v);
protected:
vector<gLayer *> layers;
};
#endif // GRAPHLAYER_H