Graph.h
上传用户:tianjwyx
上传日期:2007-01-13
资源大小:813k
文件大小:6k
源码类别:

操作系统开发

开发平台:

Visual C++

  1. //Graph.h - Version 3.0 (Brian Convery, May, 2001)
  2. #if !defined(AFX_GRAPH_H__9DB68B4D_3C7C_47E2_9F72_EEDA5D2CDBB0__INCLUDED_)
  3. #define AFX_GRAPH_H__9DB68B4D_3C7C_47E2_9F72_EEDA5D2CDBB0__INCLUDED_
  4. #if _MSC_VER > 1000
  5. #pragma once
  6. #endif // _MSC_VER > 1000
  7. // Graph.h : header file
  8. //
  9. //color definitions
  10. #define RED RGB(255,0,0)
  11. #define GREEN RGB(0,255,0) 
  12. #define BLUE RGB(0,0,255)
  13. #define YELLOW RGB(255,255,0)
  14. #define ORANGE RGB(255,153,51)
  15. #define HOT_PINK RGB(255,51,153)
  16. #define PURPLE RGB(153,0,204)
  17. #define CYAN RGB(0,255,255)
  18. #define BLACK RGB(0,0,0)
  19. #define WHITE RGB(255,255,255)
  20. #define LAVENDER RGB(199,177,255)
  21. #define PEACH RGB(255,226,177)
  22. #define SKY_BLUE RGB(142,255,255)
  23. #define FOREST_GREEN RGB(0,192,0)
  24. #define BROWN RGB(80,50,0)
  25. #define TURQUOISE RGB(0,192,192)
  26. #define ROYAL_BLUE RGB(0,0,192)
  27. #define GREY RGB(192,192,192)
  28. #define DARK_GREY RGB(128,128,128)
  29. #define TAN RGB(255,198,107)
  30. #define DARK_BLUE RGB(0,0,128)
  31. #define MAROON RGB(128,0,0)
  32. #define DUSK RGB(255,143,107)
  33. #define LIGHT_GREY RGB(225,225,225) //only for 3D graph lines
  34. //for graph type definitions :
  35. //single number = 2D type graph
  36. //number in 20s = 2D type graph related to graph of single number
  37. //number in 30s = 3D type graph related to graph of single number
  38. //graph type definitions
  39. #define BAR_GRAPH 0
  40. #define LINE_GRAPH 1 //lines between plotted points
  41. #define PIE_GRAPH 2
  42. #define SCATTER_GRAPH 3
  43. #define BOX_WHISKER_GRAPH 4
  44. //#define RADAR_GRAPH 5
  45. //specialty graphs
  46. #define STACKED_BAR_GRAPH 20
  47. #define XY_LINE_GRAPH 21 //straight line, no circles at data points
  48. #define BAR_GRAPH_3D 30
  49. #define LINE_GRAPH_3D 31 //looks like a "tape" graph
  50. #define PIE_GRAPH_3D 32
  51. #define STACKED_BAR_GRAPH_3D 320
  52. #define VERTICAL_ALIGN 1
  53. #define HORIZONTAL_ALIGN 0
  54. /////////////////////////////////////////////////////////////////////////////
  55. // CGraph window
  56. #include "GraphSeries.h"
  57. #include "GraphLegend.h"
  58. class CGraph : public CStatic
  59. {
  60. // Construction
  61. public:
  62. CGraph();
  63. CGraph(int type);
  64. // Attributes
  65. public:
  66. private:
  67. int tickSpace; //number of pixels between "y" axis ticks
  68. CObList* graphSeries;
  69. int graphType; //0 - bar graph, 1 - line graph, 2 - pie
  70. int graphAlignment; //0 - horizontal, 1 - vertical
  71. int maxHeight;
  72. int maxWidth;
  73. CObList* colorList;
  74. CString axisYLabel;
  75. CString axisXLabel;
  76. int yApexPoint; //yApex is the number of pixels from top to draw the x axis(bottom of y axis line)
  77. int xApexPoint; //xApex is number of pixels from left to draw y axis (leftmost point of x axis line)
  78. int yAxisHeight;
  79. int xAxisWidth;
  80. int yTickFontSize;
  81. int xTickFontSize;
  82. int legendFontSize;
  83. int numTicks;
  84. int minTick, maxTick;
  85. int seriesSize; //number of data elements to map per series
  86. CGraphLegend graphLegend;
  87. BOOL graphHasLegend;
  88. int legendWidth;
  89. int xAxisAlign; //# - degree rotation (0 = horizontal, 90 = vertical, etc)
  90. int xAxisLabelLength;
  91. int yAxisLabelLength; //in case I ever need it
  92. CString graphTitle;
  93. BOOL graphHasGridLines;
  94. int legendMaxText;
  95. int topYTick;
  96. int rightXTick;
  97. int depth; //for 3D graphs
  98. double depthRatio;
  99. int graphQuadType;
  100. BOOL quadSetManually;
  101. BOOL inRedraw;
  102. int line3DXBase; //for 3d line
  103. int line3DYBase; //for 3d line
  104. //print settings
  105. int topMargin;
  106. int bottomMargin;
  107. int leftMargin;
  108. int rightMargin;
  109. int pGraphL, pGraphT, pGraphB, pGraphR;
  110. int p_topYTick;
  111. int p_rightXTick;
  112. // Operations
  113. public:
  114. void SetXTickFontSize(int size);
  115. void SetYTickFontSize(int size);
  116. void SetLegendFontSize(int size);
  117. void DrawGraph(CDC* pDC);
  118. void AddSeries(CGraphSeries* dataSet);
  119. void SetXAxisLabel(CString label);
  120. void SetYAxisLabel(CString label);
  121. void SetLegend(int datagroup, CString label);
  122. void SetXAxisAlignment(int alignValue);
  123. void SetGraphType(int gType);
  124. void SetGraphTitle(CString title);
  125. int PrintGraph(CDC *pDC, CPrintInfo* pInfo);
  126. void SetMargins(int top, int bottom, int left, int right, int graphTop);
  127. void SetGridLines(BOOL hasGridLines);
  128. void SetGraphAlignment(int alignment);  //0 - vertical, 1 horizontal
  129. void SetTickLimits(int minTick, int maxTick, int tickStep);
  130. void SetColor(int dataGroup, COLORREF groupColor);
  131. void RemoveSeries(CString label);
  132. void RemoveColor(int dataGroup);
  133. void RemoveAllSeries();
  134. void RemoveAllColors();
  135. void RemoveLegend(int dataGroup);
  136. void RemoveAllLegends();
  137. void RemoveAllData(); //removes all series, legends and colors
  138. void Set3DDepthRatio(double ratio);
  139. void SetGraphQuadType(int quads);
  140. void Set3DLineBase(int x, int y);
  141. private:
  142. void DrawAxis(CDC* pDC);
  143. void DrawSeries(CDC* pDC);
  144. int DrawLegend(CDC* pDC);
  145. COLORREF GetColor(int dataGroup);
  146. int GetXAxisAlignment();
  147. int PrintLegend(CDC *pDC);
  148. void PrintAxis(CDC *pDC);
  149. void PrintSeries(CDC *pDC);
  150. void DrawBarSeries(CDC* pDC);
  151. void DrawLineSeries(CDC* pDC);
  152. void DrawPieSeries(CDC* pDC);
  153. void DrawScatterSeries(CDC* pDC);
  154. void DrawBoxWhiskerSeries(CDC* pDC);
  155. void DrawStackedBarSeries(CDC* pDC);
  156. void DrawXYLineSeries(CDC* pDC);
  157. // void DrawRadarSeries(CDC* pDC);
  158. void Draw3DBarSeries(CDC* pDC);
  159. void Draw3DLineSeries(CDC* pDC);
  160. void Draw3DPieSeries(CDC* pDC);
  161. void Draw3DStackedBarSeries(CDC* pDC);
  162. void PrintBarSeries(CDC* pDC);
  163. void PrintLineSeries(CDC* pDC);
  164. void PrintPieSeries(CDC* pDC);
  165. void PrintScatterSeries(CDC* pDC);
  166. void PrintBoxWhiskerSeries(CDC* pDC);
  167. void PrintStackedBarSeries(CDC* pDC);
  168. void PrintXYLineSeries(CDC* pDC);
  169. // void PrintRadarSeries(CDC* pDC);
  170. void Print3DBarSeries(CDC* pDC);
  171. void Print3DLineSeries(CDC* pDC);
  172. void Print3DPieSeries(CDC* pDC);
  173. void Print3DStackedBarSeries(CDC* pDC);
  174. // Overrides
  175. // ClassWizard generated virtual function overrides
  176. //{{AFX_VIRTUAL(CGraph)
  177. //}}AFX_VIRTUAL
  178. // Implementation
  179. public:
  180. virtual ~CGraph();
  181. // Generated message map functions
  182. protected:
  183. //{{AFX_MSG(CGraph)
  184. // NOTE - the ClassWizard will add and remove member functions here.
  185. //}}AFX_MSG
  186. DECLARE_MESSAGE_MAP()
  187. };
  188. /////////////////////////////////////////////////////////////////////////////
  189. //{{AFX_INSERT_LOCATION}}
  190. // Microsoft Visual C++ will insert additional declarations immediately before the previous line.
  191. #endif // !defined(AFX_GRAPH_H__9DB68B4D_3C7C_47E2_9F72_EEDA5D2CDBB0__INCLUDED_)