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

📄 dataseries.h

📁 The application wizard has created this SoccerDoctor application for you. This application not onl
💻 H
字号:
/************************************************************************************************
// $Header: /home/cvsroot/SoccerDoctor/Chart/DataSeries.h,v 1.2 2002/09/09 05:10:11 peter Exp $
//***********************************************************************************************
/************************************************************************************************/
/*                                                                                              */
/* File    : DataSeries.h                                                                       */
/*                                                                                              */
/* Purpose : interface for the data series within the CChartCtrl                                */
/*                                                                                              */
/* Author  : Scott Pelger                                             Date Created: 10JUN02     */
/*                                                                                              */
/* Revisions                                                                                    */
/*                                                                                              */
/* Engineer              Date        Description                                                */
/*                                                                                              */
/* Scott Pelger          10JUN02     initial version                                            */
/*                                                                                              */
/************************************************************************************************/
// DataSeries.h: interface for the CDataSeries class.
//
//////////////////////////////////////////////////////////////////////

#if !defined(AFX_DATASERIES_H__635CE59F_1253_4101_834D_A091171A855D__INCLUDED_)
#define AFX_DATASERIES_H__635CE59F_1253_4101_834D_A091171A855D__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

#include "ChartConstants.h"
class C2DScale;

class CDataPoint {
    public:
        double      m_dX;
        double      m_dY;
        COLORREF    m_crColor;
        CString     m_sCaption;
        DWORD       m_dwID;
        DWORD       m_dwDataSeries;
        HICON       m_hIcon;
        //for determining which chart item the mouse if hoovering over
        CRgn        m_DetectRegion;
        CRgn        m_PopupRegion;
        
        CDataPoint() : m_dwID(-1), m_hIcon(NULL) {};
        CDataPoint(double dX, double dY, COLORREF crColor, CString sCaption) : m_dX(dX), m_dY(dY), m_crColor(crColor), m_sCaption(sCaption), m_dwID(-1), m_hIcon(NULL) {};
        virtual ~CDataPoint() {};
        CDataPoint& CDataPoint::operator= (CDataPoint* DataPoint) {
            m_dwID = DataPoint->m_dwID;
            m_dwDataSeries = DataPoint->m_dwDataSeries;
            m_dX = DataPoint->m_dX;
            m_dY = DataPoint->m_dY;
            m_crColor = DataPoint->m_crColor;
            m_sCaption = DataPoint->m_sCaption;
            m_hIcon = DataPoint->m_hIcon;
            return *this;
            };
        CDataPoint& CDataPoint::operator= (CDataPoint& DataPoint) {
            m_dwID = DataPoint.m_dwID;
            m_dwDataSeries = DataPoint.m_dwDataSeries;
            m_dX = DataPoint.m_dX;
            m_dY = DataPoint.m_dY;
            m_crColor = DataPoint.m_crColor;
            m_sCaption = DataPoint.m_sCaption;
            m_hIcon = DataPoint.m_hIcon;
            return *this;
            };
    };

class CDataSeries {
    public:
	    CDataSeries(DATA_TYPE eDataType=TYPE_DBL_DATA);
	    virtual ~CDataSeries();

        BOOL            AddDataPoint(CDataPoint* pDataPoint);
        BOOL            RemoveDataPoint(int i);
        CDataPoint*     GetAt(int i) const {return (CDataPoint*)m_DataArray.GetAt(i);};
        
        int             GetNumOfDataPoints(void) {return m_DataArray.GetSize();};
        void            Purge(void);
        void            SetColor(COLORREF Color) {m_crColor = Color;};
        COLORREF        GetColor(void) {return m_crColor;};
        void            SetMaxNumDataPoints(WORD wMaxNumber) {m_wMaxInList = wMaxNumber;};
        WORD            GetMaxNumDataPoints(void) {return m_wMaxInList;};

        int             GetCount(void) {return m_DataArray.GetSize();};

    private:
        void            _CalculateStats(CDataPoint* pDataPoint);
    
    private:
        CPtrArray       m_DataArray;
        
    private:
        DATA_TYPE       m_eDataType;
        WORD            m_wMaxInList;
    public:
        COLORREF        m_crColor;
        CString         m_sCaption;
        DWORD           m_dwLastID;
        double          m_dXMin;
        double          m_dXMax;
        double          m_dYMin;
        double          m_dYMax;
    };

class CDataSeriesArray {
    public:
	    CDataSeriesArray(DATA_TYPE eDataType=TYPE_DBL_DATA);
        virtual ~CDataSeriesArray() {Purge();};

        int             AddDataSeries(CString Caption="", COLORREF Color=RGB(255, 0, 0));
        CDataSeries*    GetDataSeries(int nDataSeries);
        BOOL            AddDataPoint(CDataPoint* pDataPoint, int nDataSeries=0);
        BOOL            RemoveDataPoint(int nIndex, int nDataSeries=0);
        void            GetRangeInDataSeries(int nDataSeries, double& dMin, double& dMax, enum AXIS eAxis=X_AXIS);
        int             GetNumOfDataPoints(int nDataSeries=0);

        void            Purge(void);
        int             GetCount(void) {return m_DataSeriesArray.GetUpperBound()+1;};
        
        void            GetXAxisRange(double& dMin, double& dMax) {dMin = m_dXMin; dMax = m_dXMax;};
        void            GetYAxisRange(double& dMin, double& dMax) {dMin = m_dYMin; dMax = m_dYMax;};
        
        void            SetColor(COLORREF Color, int nDataSeries=0);
        COLORREF        GetColor(int nDataSeries=0);
        void            SetCaption(CString Caption, int nDataSeries=0);
        CString         GetCaption(int nDataSeries=0);
        enum CHART_TYPE SetChartType(enum CHART_TYPE eChartType);
        enum CHART_TYPE GetChartType(void) {return m_eChartType;};

        int             GetMaxInAllSeries(void);
        void            DrawData(CDC* pDC, C2DScale* pScale);
        void            DrawIcons(CDC* pDC, C2DScale* pScale);

        //these are for 3d pie charts
        void            SetHeight(double dHeight);
        double          GetHeight(void) {return m_dHeight;};
        void            SetElevation(double dElevation);
        double          GetElevation(void) {return m_dElevation;};
        
        //these are for strip charts
        //void            SetMaxNumDataPoints(WORD wMaxNumber);
        //WORD            GetMaxNumDataPoints(void) {return m_wMaxInList;};

        BOOL            DataRemoved(void) {return m_bRemoved;};
        void            PrepareStripChartForScrolling(BOOL* pbScrolling, 
			BOOL* pbRefreshDisplayCompletely, CBitmap* pGraphBitmap) {
				m_pbScrolling = pbScrolling; 
				m_pbRefreshDisplayCompletely = pbRefreshDisplayCompletely; 
				m_pGraphBitmap = pGraphBitmap;
		}

    private:
        void            _CalculateStats();
        CDataSeries*    _GetDataSeries(int nDataSeries);
        void            _DrawLineChart(int nX, int nY);
        void            _DrawAreaChart(int nX, int nY);
        void            _DrawRotatedLineChart(int nX, int nY);
        void            _DrawXYChart(int nX, int nY);
        void            _DrawRotatedXYChart(int nX, int nY);
        void            _DrawBarChart(int nX, int nY);
        void            _DrawPieChart(int nX, int nY);
        void            _DrawRotatedPieChart(int nX, int nY);
        void            _GenerateRegion(int i, int j, int nPrevAngle, int nAngle, int nHeight, CRect* RectClient, CPoint* pPopupPointArray, CPoint** pPtrPointArray, CDataSeries* pDataSeries, CDataPoint* pDataPoint);
        
    private:
        CPtrArray       m_DataSeriesArray;
        DATA_TYPE       m_eDataType;
        WORD            m_wMaxInList;
        enum CHART_TYPE m_eChartType;
        double          m_dXMin;
        double          m_dXMax;
        double          m_dYMin;
        double          m_dYMax;
        CDC*            m_pDC;
        C2DScale*       m_pScale;
        double          m_dHeight;
        double          m_dElevation;

        /****scrolling data members****/
        BOOL            m_bRemoved;
        BOOL*           m_pbScrolling;
        BOOL*           m_pbRefreshDisplayCompletely;
        CBitmap*        m_pGraphBitmap;
        /****scrolling data members****/
    };

#endif // !defined(AFX_DATASERIES_H__635CE59F_1253_4101_834D_A091171A855D__INCLUDED_)


//***********************************************************************************************
// END OF FILE
// $Log: DataSeries.h,v $
// Revision 1.2  2002/09/09 05:10:11  peter
// 修改全是0之后会死的bug,GDI资源漏洞依然存在
//
// Revision 1.1  2002/09/07 06:03:54  peter
// 新的chart类,从别的地方拷来的
//
//***********************************************************************************************

⌨️ 快捷键说明

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