|
|
1.1 root 1: // dobject.cpp : Defines the class behaviors for the Chart data objects.
2: //
3: // This is a part of the Microsoft Foundation Classes C++ library.
4: // Copyright (C) 1992 Microsoft Corporation
5: // All rights reserved.
6: //
7: // This source code is only intended as a supplement to the
8: // Microsoft Foundation Classes Reference and Microsoft
9: // QuickHelp documentation provided with the library.
10: // See these sources for detailed information regarding the
11: // Microsoft Foundation Classes product.
12: //
13:
14: #include "chart.h"
15:
16: /////////////////////////////////////////////////////////////////////////////
17: // CChartObject
18:
19: // CChartObject is a container class of the chart's title and list of
20: // data points in the graph. The list is a CObList (see afxcoll.h)
21: // of CChartData points.
22:
23: IMPLEMENT_SERIAL(CChartObject, CObject, 0)
24:
25: // Constructor:
26: // Creates the list for the CChartData objects
27: //
28: CChartObject::CChartObject()
29: {
30: m_pChartData = new CObList;
31: m_nType = IDM_BAR;
32: m_bDirty = FALSE;
33: }
34:
35:
36: // Destructor:
37: // Delete all the contents, too.
38: //
39: CChartObject::~CChartObject()
40: {
41: // Removes & Deletes all objects contained in the chart data list
42: //
43: RemoveAll();
44: delete m_pChartData;
45: }
46:
47: // Serialize:
48: //
49: void CChartObject::Serialize(CArchive& ar)
50: {
51: // Serialize the base object first.
52: //
53: CObject::Serialize(ar);
54:
55: // Input or output our items to the archive.
56: //
57: if(ar.IsStoring())
58: {
59: ar << m_Title;
60: ar << m_pChartData;
61: ar << m_nType;
62: }
63: else
64: {
65: RemoveAll();
66: delete m_pChartData;
67: // Delete old data before reading in new data
68: ar >> m_Title;
69: ar >> m_pChartData;
70: ar >> m_nType;
71: }
72: }
73:
74: // RemoveAll:
75: // A quick way of clearing all of the elements in the m_pChartData member.
76: //
77: void CChartObject::RemoveAll()
78: {
79: if (m_pChartData != NULL)
80: {
81: if (m_pChartData->GetCount() > 0)
82: {
83: // Delete the elements.
84: //
85: while (!m_pChartData->IsEmpty())
86: {
87: CChartData* ptr;
88: ptr = (CChartData*)m_pChartData->RemoveHead();
89: delete ptr;
90: }
91:
92: // Delete all the list's pointers to the now deleted elements.
93: //
94: m_pChartData->RemoveAll();
95: }
96: }
97: }
98:
99: /////////////////////////////////////////////////////////////////////////////
100: // CChartData
101:
102: // CChartData is a data point for the chart. It contains two fields.
103: // The height is the value of the data point and szName is the label
104: // for the data point.
105:
106: IMPLEMENT_SERIAL(CChartData, CObject, 0)
107:
108: // Serialize:
109: //
110: void CChartData::Serialize(CArchive& ar)
111: {
112: // Serialize the base object first.
113: //
114: CObject::Serialize(ar);
115:
116: // Input or output our items to the archive.
117: //
118: if(ar.IsStoring())
119: {
120: ar << (WORD)height;
121: ar << szName;
122: }
123: else
124: {
125: WORD tmp;
126: CString name;
127: ar >> tmp;
128: height = (short)tmp;
129: ar >> name;
130: strcpy(szName,name);
131: }
132: }
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.