lib/GraphPlot2D.hh
00001 // X-Tグラフ描画クラス
00002 // 2011/02/07 Yuki YOKOKURA
00003 //
00004 // 画面上にグラフの描画を行います。
00005 //
00006 // Copyright (C) 2011 Yuki YOKOKURA
00007 // This program is free software;
00008 // you can redistribute it and/or modify it under the terms of the GNU General Public License
00009 // as published by the Free Software Foundation; either version 3 of the License, or any later version.
00010 // This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY;
00011 // without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
00012 // See the GNU General Public License for more details <http://www.gnu.org/licenses/>.
00013 // Besides, you can negotiate about other options of licenses instead of GPL.
00014 // If you would like to get other licenses, please contact us<yuki@katsura.sd.keio.ac.jp>.
00015 
00016 #ifndef GRAPHPLOT2D
00017 #define GRAPHPLOT2D
00018 
00019 #include <string>
00020 #include <curses.h>
00021 #include "FrameGraphics.hh"
00022 
00023 class GraphPlot2D {
00024         // 2次元グラフ描画クラス
00025         private:
00026                 GraphPlot2D(const GraphPlot2D&);                                        // コピーコンストラクタ使用禁止
00027                 const GraphPlot2D& operator=(const GraphPlot2D&);       // 代入演算子使用禁止
00028                 FrameGraphics *pFG;                     // フレームグラフィックスクラスへのポインタ
00029                 const char *Name;                       // 縦軸の名前
00030                 int Xcur, Ycur;                         // グラフ左上のカーソル座標
00031                 int Hcur, Wcur;                         // グラフの幅と高さ(カーソル座標)
00032                 int X, Y;                                       // グラフ左上の座標(ピクセル)
00033                 int H, W;                                       // グラフの高さと幅(ピクセル)
00034                 int Ymax, Ymid, Ymin;           // 縦軸の最大値,縦軸の真ん中の値,縦軸の最小値
00035                 int YmaxLab, YminLab;           // 縦軸の最大値のラベル,縦軸の最小値のラベル
00036                 int NumOfVar;                           // 変数の大きさ
00037                 int x1[8],y1[8],x2[8],y2[8];// グラフ描画用 座標格納変数
00038                 int VerMax;                                     // 縦軸最大値ラベルのカーソル縦位置
00039                 int VerMid;                                     // 縦軸中央値ラベルのカーソル縦位置
00040                 int VerMin;                                     // 縦軸最小値ラベルのカーソル縦位置
00041                 int HorMax;                                     // 横軸最大値ラベルのカーソル横位置
00042                 int HorMid;                                     // 横軸中央値ラベルのカーソル横位置
00043                 int HorMin;                                     // 横軸最小値ラベルのカーソル横位置
00044                 short LineColor[8];                     // グラフの線の色の設定用
00045                 double Ax;                                      // RealXTOX用の換算係数
00046                 double Ay,By;                           // RealYToY用の換算係数
00047                 int Hlaboffset;                         // 横軸ラベルオフセット
00048                 void DrawAxis(int Hoffset);     // 縦軸と横軸の描画を行う関数
00049                 int Round(double x);            // 四捨五入をする関数
00050                 int RealXToX(double u);         // 横軸の実数値から画面座標(ピクセル)に変換する関数
00051                 int RealYToY(double u);         // 縦軸の実数値から画面座標(ピクセル)に変換する関数
00052                 int YLimitter(int y);           // 縦軸プロットリミッタ (画面座標) グラフ領域をはみ出ないようにするための関数
00053                 
00054         public:
00055                 GraphPlot2D();                  // コンストラクタ
00056                 ~GraphPlot2D();                 // デストラクタ
00057                 // グラフ軸の設定を行う関数 FG フレームグラフィックスクラスへのポインタ,AxisName 表示名,
00058                 // PositionX グラフの横位置(カーソル座標),PositionY グラフの縦位置(カーソル座標)
00059                 // Height 高さ(カーソル座標),Width 幅(カーソル座標),縦軸最大値,縦軸最小値,プロットする変数の数
00060                 void SetAxis(FrameGraphics &FG,const char *AxisName, int PositionX, int PositionY, int Height, int Width, int YmaxLabel, int YminLabel, int NumOfVariables);
00061                 // 波形の描画を行う関数 t;時刻,Var;プロットする変数
00062                 void DrawWave(volatile double t, double Var[8]);        
00063                 // 凡例を描画する関数 N0~7;変数名
00064                 void Legend(const std::string VarName[8]);
00065 };
00066 
00067 
00068 #endif
00069 
 All Classes Files