inlib  1.2.0
/Users/barrand/private/dev/softinex/old/inexlib-1.2/inlib/inlib/sg/plottable
Go to the documentation of this file.
00001 // Copyright (C) 2010, Guy Barrand. All rights reserved.
00002 // See the file inlib.license for terms.
00003 
00004 #ifndef inlib_sg_plottable
00005 #define inlib_sg_plottable
00006 
00007 // Pure abstract interfaces.
00008 
00009 #include <string>
00010 
00011 #include "../scast"
00012 
00013 namespace inlib {
00014 namespace sg {
00015 
00016 class plottable {
00017 public:
00018   static const std::string& s_class() {
00019     static const std::string s_v("inlib::sg::plottable");
00020     return s_v;
00021   }
00022 public:
00023   virtual void* cast(const std::string& a_class) const {
00024     if(void* p = inlib::cmp_cast<plottable>(this,a_class)) {return p;}
00025     return 0;
00026   }
00027 public:
00028   virtual ~plottable(){}
00029 public:
00030   virtual plottable* copy() const = 0;
00031   virtual bool is_valid() const = 0;
00032   virtual std::string infos(const std::string&) = 0;
00033 
00034   virtual std::string name() = 0;
00035   virtual void set_name(const std::string&) = 0;
00036 
00037   virtual std::string title() = 0;
00038   virtual std::string legend() = 0;
00039   virtual void set_legend(const std::string&) = 0;
00040 
00041   //virtual unsigned int dimension() const = 0;
00042 };
00043 
00044 class bins1D : public virtual plottable {
00045 public:
00046   static const std::string& s_class() {
00047     static const std::string s_v("inlib::sg::bins1D");
00048     return s_v;
00049   }
00050 public:
00051   virtual void* cast(const std::string& a_class) const {
00052     if(void* p = inlib::cmp_cast<bins1D>(this,a_class)) {return p;}
00053     return plottable::cast(a_class);
00054   }
00055 public:
00056   virtual ~bins1D(){}
00057 public:
00058   virtual void bins_Sw_range(float&,float&) const = 0;
00059 public:
00060   // axis :
00061   virtual unsigned int bins() const = 0;
00062   virtual float axis_min() const = 0;
00063   virtual float axis_max() const = 0;
00064   // bins on axis :
00065   virtual float bin_lower_edge(int) const = 0;
00066   virtual float bin_upper_edge(int) const = 0;
00067   virtual unsigned int bin_entries(int) const = 0;
00068   // bins :
00069   virtual float bin_Sw(int) const = 0;
00070   virtual float bin_error(int) const = 0;
00071 public:
00072   virtual bool is_profile() const = 0;
00073 };
00074 
00075 class bins2D : public virtual plottable {
00076 public:
00077   static const std::string& s_class() {
00078     static const std::string s_v("inlib::sg::bins2D");
00079     return s_v;
00080   }
00081 public:
00082   virtual void* cast(const std::string& a_class) const {
00083     if(void* p = inlib::cmp_cast<bins2D>(this,a_class)) {return p;}
00084     return plottable::cast(a_class);
00085   }
00086 public:
00087   virtual ~bins2D(){}
00088 public:
00089   virtual void bins_Sw_range(float&,float&) const = 0;
00090 public:
00091   // x axis :
00092   virtual unsigned int x_bins() const = 0;
00093   virtual float x_axis_min() const = 0;
00094   virtual float x_axis_max() const = 0;
00095   // y axis :
00096   virtual unsigned int y_bins() const = 0;
00097   virtual float y_axis_min() const = 0;
00098   virtual float y_axis_max() const = 0;
00099   // bins on x axis :
00100   virtual float bin_lower_edge_x(int) const = 0;
00101   virtual float bin_upper_edge_x(int) const = 0;
00102   // bins on y axis :
00103   virtual float bin_lower_edge_y(int) const = 0;
00104   virtual float bin_upper_edge_y(int) const = 0;
00105   // bins :
00106   virtual unsigned int bin_entries(int,int) const = 0;
00107   virtual float bin_Sw(int,int) const = 0;
00108   virtual float bin_error(int,int) const = 0;
00109 };
00110 
00111 class func1D : public virtual plottable {
00112 public:
00113   static const std::string& s_class() {
00114     static const std::string s_v("inlib::sg::func1D");
00115     return s_v;
00116   }
00117 public:
00118   virtual void* cast(const std::string& a_class) const {
00119     if(void* p = inlib::cmp_cast<func1D>(this,a_class)) {return p;}
00120     return plottable::cast(a_class);
00121   }
00122 public:
00123   virtual ~func1D(){}
00124 public:
00125   virtual bool value(float,float&) const = 0;
00126   virtual unsigned int x_steps() const = 0;
00127   virtual float x_min() const = 0;
00128   virtual float x_max() const = 0;
00129 };
00130 
00131 class func2D : public virtual plottable {
00132 public:
00133   static const std::string& s_class() {
00134     static const std::string s_v("inlib::sg::func2D");
00135     return s_v;
00136   }
00137 public:
00138   virtual void* cast(const std::string& a_class) const {
00139     if(void* p = inlib::cmp_cast<func2D>(this,a_class)) {return p;}
00140     return plottable::cast(a_class);
00141   }
00142 public:
00143   virtual ~func2D(){}
00144 public:
00145   virtual bool value(float,float,float&) const = 0;
00146   virtual unsigned int x_steps() const = 0;
00147   virtual float x_min() const = 0;
00148   virtual float x_max() const = 0;
00149   virtual unsigned int y_steps() const = 0;
00150   virtual float y_min() const = 0;
00151   virtual float y_max() const = 0;
00152   //For "inside" functions :
00153   virtual unsigned int number_of_points() const = 0;
00154   virtual bool ith_point(int,float&,float&,bool&) const = 0;
00155   virtual bool set_ith_point(int,float,float) = 0;
00156   virtual bool dragger_update_points() const = 0;
00157 };
00158 
00159 class points2D : public virtual plottable {
00160 public:
00161   static const std::string& s_class() {
00162     static const std::string s_v("inlib::sg::points2D");
00163     return s_v;
00164   }
00165 public:
00166   virtual void* cast(const std::string& a_class) const {
00167     if(void* p = inlib::cmp_cast<points2D>(this,a_class)) {return p;}
00168     return plottable::cast(a_class);
00169   }
00170 public:
00171   virtual ~points2D(){}
00172 public:
00173   virtual float x_axis_min() const = 0;
00174   virtual float x_axis_max() const = 0;
00175   virtual float y_axis_min() const = 0;
00176   virtual float y_axis_max() const = 0;
00177 
00178   virtual unsigned int points() const = 0;
00179   virtual bool ith_point(unsigned int,float&,float&) const = 0;
00180 };
00181 
00182 class points3D : public virtual plottable {
00183 public:
00184   static const std::string& s_class() {
00185     static const std::string s_v("inlib::sg::points3D");
00186     return s_v;
00187   }
00188 public:
00189   virtual void* cast(const std::string& a_class) const {
00190     if(void* p = inlib::cmp_cast<points3D>(this,a_class)) {return p;}
00191     return plottable::cast(a_class);
00192   }
00193 public:
00194   virtual ~points3D(){}
00195 public:
00196   virtual float x_axis_min() const = 0;
00197   virtual float x_axis_max() const = 0;
00198   virtual float y_axis_min() const = 0;
00199   virtual float y_axis_max() const = 0;
00200   virtual float z_axis_min() const = 0;
00201   virtual float z_axis_max() const = 0;
00202 
00203   virtual unsigned int points() const = 0;
00204   virtual bool ith_point(unsigned int,float&,float&,float&) const = 0;
00205 };
00206 
00207 //class primitive {
00208 //public:
00209 //  virtual ~primitive(){}
00210 //public:
00211 //  virtual void* cast(const char*) const = 0;
00212 //};
00213 
00214 }}
00215 
00216 #endif
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Defines