/*++ Copyright (C) 1996-1999 Microsoft Corporation Module Name: grphdsp.h Abstract: Header file for the sysmon.ocx graph display. --*/ #ifndef _GRPHDSP_H_ #define _GRPHDSP_H_ class CSysmonControl; class CGraphDisp { //friend LRESULT APIENTRY GraphDispWndProc (HWND hWnd, // UINT uiMsg, // WPARAM wParam, // LPARAM lParam); public: void ChangeFont ( HDC ); static BOOL RegisterWndClass (HINSTANCE hInst) ; CGraphDisp ( void ); ~CGraphDisp ( void); BOOL Init ( CSysmonControl *pCtrl, PGRAPHDATA pGraph ) ; void Update ( HDC ); void Draw ( HDC, HDC hAttribDC, BOOL fMetafile, BOOL fEntire, PRECT prcUpdate); void HiliteItem ( PCGraphItem pItem ); void SizeComponents ( HDC hDC, PRECT pRect ); void GetPlotRect ( PRECT pRect ) { *pRect = m_rectPlot; } void SetBarConfigChanged ( BOOL bChanged = TRUE ) { m_bBarConfigChanged = bChanged; }; PCGraphItem GetItem ( INT xPos, INT yPos ); private: enum eGraphDisplayConstant { eHitRegion = 4 }; void DrawTimeLine ( HDC hDC, INT x); void DrawStartStopLine ( HDC hDC, INT x); void StartUpdate ( HDC hDC, BOOL fMetafile, BOOL fEntire, INT xLeft, INT xRight, BOOL bFill = TRUE ); void FinishUpdate ( HDC hDC, BOOL fMetafile ); void DrawGrid ( HDC hDC, INT iLeft, INT iRight); void PlotBarGraph ( HDC hDC , BOOL fUpdate); void PlotData ( HDC hDC, INT iHistIndx, INT nSteps, CStepper *pStepper ); void UpdateTimeBar ( HDC, BOOL bPlotData = TRUE ); PCGraphItem GetItemInLineGraph ( SHORT xPos, SHORT yPos ); PCGraphItem GetItemInBarGraph ( SHORT xPos, SHORT yPos ); INT RGBToLightness ( COLORREF ); BOOL CalcYPosition ( PCGraphItem pItem, INT iHistIndex, BOOL bLog, INT y[3] ); PGRAPHDATA m_pGraph; CSysmonControl *m_pCtrl; RECT m_rect; RECT m_rectPlot; CStepper m_GridStepper; HFONT m_hFontVertical; PCGraphItem m_pHiliteItem; HRGN m_rgnClipSave; BOOL m_bBarConfigChanged; // Min, Max and PixelScale are used for plot, hit test. double m_dMin; double m_dMax; double m_dPixelScale; COLORREF m_clrCurrentTimeBar; COLORREF m_clrCurrentGrid; HPEN m_hPenTimeBar; HPEN m_hPenGrid; }; typedef CGraphDisp *PGRAPHDISP; #endif