⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 gnuplot.hh

📁 penMesh is a generic and efficient data structure for representing and manipulating polygonal meshes
💻 HH
字号:
//////////////////////////////////////////////// A C++ interface to gnuplot. //// This is a direct translation from the C interface// written by N. Devillard (which is available from// http://ndevilla.free.fr/gnuplot/).//// As in the C interface this uses pipes and so wont// run on a system that doesn't have POSIX pipe // support//// Rajarshi Guha// <rajarshi@presidency.com>//// 07/03/03////////////////////////////////////////////////// A little correction for Win32 compatibility// and MS VC 6.0 done by V.Chyzhdzenka //// Notes:// 1. Added private method Gnuplot::init().// 2. Temporary file is created in th current//    folder but not in /tmp.// 3. Added #indef WIN32 e.t.c. where is needed.// 4. Added private member m_sGNUPlotFileName is//    a name of executed GNUPlot file.//// Viktor Chyzhdzenka// e-mail: chyzhdzenka@mail.ru//// 20/05/03//////////////////////////////////////////////#ifndef _GNUPLOT_HH#define _GNUPLOT_HH#include <OpenMesh/Core/System/config.hh>// #ifndef WIN32// #  include <unistd.h>// #else// #  pragma warning (disable : 4786) // Disable 4786 warning for MS VC 6.0// #endif#if defined(OM_CC_MIPS)#  include <stdio.h>#else#  include <cstdio>#endif#include <string>#include <vector>#include <stdexcept>// ----------------------------------------------------------------------------#ifdef WIN32#  define GP_MAX_TMP_FILES    27 //27 temporary files it's Microsoft restriction#else#  define GP_MAX_TMP_FILES    64#  define GP_TMP_NAME_SIZE    512#  define GP_TITLE_SIZE       80#endif#define GP_CMD_SIZE         1024// ----------------------------------------------------------------------------using namespace std;// ----------------------------------------------------------------------------/// Exception thrown by class Gnuplotclass GnuplotException : public runtime_error{public:  GnuplotException(const string &msg) : runtime_error(msg){}};// ----------------------------------------------------------------------------/** Utility class interfacing with Gnuplot. *  *  \note The plot will be visible as long as the object is not destructed. * *  \author Rajarshi Guha (C++ API based on the C API by Nicolas Devillard) * *  \see <a *  href="http://ndevilla.free.fr/gnuplot/">http://ndevilla.free.fr/gnuplot/</a> *  more information. */class Gnuplot{private:  FILE            *gnucmd;  string           pstyle;  vector<string>   to_delete;  int              nplots;  bool             get_program_path(const string);  bool             valid;  // Name of executed GNUPlot file  static string    gnuplot_executable_;  void init();public:  /// \name Constructors  //@{  /// Default constructor.  Gnuplot();    /// Set a style during construction.  Gnuplot(const string & _style);  /// Constructor calling plot_xy().  Gnuplot(const string & _title,          const string & _style,          const string & _xlabel,          const string & _ylabel,          vector<double> _x, vector<double> _y);    /// Constructor calling plot_x().  Gnuplot(const string &_title,          const string &_style,          const string &_xlabel,          const string &_ylabel,          vector<double> _x);  //@}  ~Gnuplot();    /// Send a command to gnuplot (low-level function use by all plot functions.)  void cmd(const char *_cmd, ...);    /// \name Gnuplot settings  //@{  void set_style(const string & _style);   ///< set line style  void set_ylabel(const string & _ylabel); ///< set x axis label  void set_xlabel(const string & _xlabel); ///< set x axis label  //@}  /// \name plot functions  //@{  /// Plot a single vector  void plot_x(vector<double> _x, const string &_title);    /// Plot x,y pairs  void plot_xy(vector<double> _x, vector<double> _y, const string  &_title);    /// Plot an equation of the form: y = ax + b  /// You supply a and b  void plot_slope(                  double _a,                  double _b,                  const string & _title                  );    /// Plot an equation supplied as a string  void plot_equation(                     const string & _equation,                     const string & _title                     );    /// If multiple plots are present it will clear the plot area  void reset_plot(void);  //@}  /// Is \c Self valid?  bool is_valid(void) const { return valid; }  /// Is \c Self active, i.e. does it have an active plot?  bool is_active(void) const { return this->nplots > 0; }};// ----------------------------------------------------------------------------#endif // _GNUPLOT_HH// ============================================================================

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -