Dynamic Model Features
In summary, the Dynamic data model has these features:
Data values are stored in a buffer of SRGDataBuffer objects managed by the SRGraphDynamicData class.
Dynamic data stores only data values. It does not store individual styles, annotations, or null flags. An annotation, style, and null flag are stored only in the SRGraphDynamicData object itself. Any request for annotations, style settings, or null status from an indexed data value always returns the annotation, style setting, or null flag from this object.
Dynamic data can not be individually styled.
Options for axis labels and feedback are limited. Annotations must be generated programmatically in an override of SRGraphDynamicData::GetAnnotation().
Data values in the Dynamic model can not be individually flagged as null or invalid.
To save space and minimize access times, SRGraphDynamicData does not maintain a hi-low history for the data values in the array by default. If hi-low histories are desired, an array of CScale objects can be generated by calling SetHiLoFunction(TRUE).
To set up a Dynamic data buffer, an SRGraphDynamicData object must be explicitly created and configured with its initial size and growth parameters. The actual memory buffer is created and resized automatically. Therefore, the Dynamic data storage seems, at least partially, internal to Objective Chart.
Because of its contiguous nature, the Dynamic data model provides faster sequential access than the Standard model. A stream of data may be placed quickly into the buffer for use in real-time data logging and charting operations.
Conversely, using the relatively fixed memory buffer would make inserting to (or deleting values from) the middle of the array very slow. In addition, it would require detailed knowledge of the data structure. Data rolling is particularly inefficient, although it is supported.






