text: /*
   *  ReactOS Task Manager
   *
   *  graphctl.h
   *
   *  Copyright (C) 2002  Robert Dickenson <robd@reactos.org>
   *
   * This library is free software; you can redistribute it and/or
   * modify it under the terms of the GNU Lesser General Public
   * License as published by the Free Software Foundation; either
   * version 2.1 of the License, or (at your option) any later version.
   *
   * This library is distributed in the hope that it will be useful,
   * but WITHOUT ANY WARRANTY; without even the implied warranty of
   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
   * Lesser General Public License for more details.
   *
   * You should have received a copy of the GNU Lesser General Public
   * License along with this library; if not, write to the Free Software
   * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301, USA
   */
  
  #ifndef __GRAPH_CTRL_H__
  #define __GRAPH_CTRL_H__
  
  #define MAX_PLOTS 4
  #define MAX_CTRLS 4
  
  #ifdef __cplusplus
  extern "C" {
  #endif
  
  #if 0
  
  /* Attributes */
  public:
    void SetXUnits(const char* string);
    void SetYUnits(const char* string);
  
    /* Operations */
  public:
    BOOL Create(DWORD dwStyle, const RECT& rect, HWND hParentWnd, UINT nID=NULL);
  
  #endif
  
  typedef struct
  {
    int m_nShiftPixels;          /* amount to shift with each new point */
    int m_nYDecimals;
  
    char m_strXUnitsString[50];
    char m_strYUnitsString[50];
  
    COLORREF m_crBackColor;                 /* background color */
    COLORREF m_crGridColor;                 /* grid color */
    COLORREF m_crPlotColor[MAX_PLOTS];      /* data color   */
    
    double m_dCurrentPosition[MAX_PLOTS];   /* current position */
    double m_dPreviousPosition[MAX_PLOTS];  /* previous position */
  
  /* those were protected fields */
    int m_nHalfShiftPixels;
    int m_nPlotShiftPixels;
    int m_nClientHeight;
    int m_nClientWidth;
    int m_nPlotHeight;
    int m_nPlotWidth;
  
    double m_dLowerLimit;        /* lower bounds */
    double m_dUpperLimit;        /* upper bounds */
    double m_dRange;
    double m_dVerticalFactor;
  
    HWND     m_hWnd;
    HWND     m_hParentWnd;
    HDC      m_dcGrid;
    HDC      m_dcPlot;
    HBITMAP  m_bitmapOldGrid;
    HBITMAP  m_bitmapOldPlot;
    HBITMAP  m_bitmapGrid;
    HBITMAP  m_bitmapPlot;
    HBRUSH   m_brushBack;
    HPEN     m_penPlot[MAX_PLOTS];
    RECT     m_rectClient;
    RECT     m_rectPlot;
  } TGraphCtrl;
  
  extern WNDPROC OldGraphCtrlWndProc;
  double  GraphCtrl_AppendPoint(TGraphCtrl* this, 
                                double dNewPoint0, double dNewPoint1,
                                double dNewPoint2, double dNewPoint3);
  BOOL    GraphCtrl_Create(TGraphCtrl* this, HWND hWnd, HWND hParentWnd, 
  UINT nID);
  void    GraphCtrl_Reset(TGraphCtrl* this);
  void    GraphCtrl_SetBackgroundColor(TGraphCtrl* this, COLORREF 
  color);
  void    GraphCtrl_SetGridColor(TGraphCtrl* this, COLORREF color);
  void    GraphCtrl_SetPlotColor(TGraphCtrl* this, int plot, COLORREF 
  color);
  void    GraphCtrl_SetRange(TGraphCtrl* this, double dLower, double 
  dUpper, int nDecimalPlaces);
  
  INT_PTR CALLBACK GraphCtrl_WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);
  
  #ifdef __cplusplus
  }
  #endif
  
  #endif /* __GRAPH_CTRL_H__ */
  