<< Chapter < Page | Chapter >> Page > |
As mentioned earlier, these values were chosen mainly to be compatible with this narrow publication format. You should feel free to change the defaultvalues to a set of values that is more consistent with your needs. For example, if you plan to plot and examine very large amounts of data, you might want toconsider setting the frameWidth and frameHeight to completely fill the screen on your computer. Then you can examine largeamounts of data without the need to skip from one page to the next.
The feedData method must be called on the plotting object once for each data value that is to be plotted. This method is shown in itsentirety in Listing 14 .
Listing 14. The feedData method. |
---|
void feedData(double val){
if((sampleCounter) == samplesPerPage){pageCounter++;
sampleCounter = 0;pageLinks.add(new Page(title));
}//end ifpageLinks.get(pageCounter).putData(
val,sampleCounter);sampleCounter++;
}//end feedData |
The feedData method receives an incoming data value of type double . This is probably a good time to point out that the data must be properly scaled for plotting before it is passed to this method.
The incoming double value will later be cast to type int . As you should already know, if the double value is too large to fit in type int , the value resulting from the cast will be indeterminate.
In reality, however, the cast shouldn't be a problem. I'm unaware of any computer monitor whose vertical dimension is greater than a few thousand pixels.Regardless of the size of the Page object, a data value whose magnitude is greater than a few thousand units will be completely off the screenwhen plotted. Therefore, depending on the resolution of the monitor, the maximum magnitudes of the incoming data values should probably have been scaled to 1000or less to be suitable for plotting.
Listing 14 first checks to see if the current page is full before attempting to plot the new data value. If the page is full, Listing 14 increments the page counter, resets the sample counter, and instantiates a new Page object.
All of the data values are stored in array objects of type double as they are fed to the plotting object. Later, when it is time to display theplotted version of the data, an overridden paint method accesses that data and produces the plot.
Each Page object contains an object of a class named MyCanvas , which extends the Canvas class. Each MyCanvas object owns an array object in which the double data values to be plotted on that page are stored.
The MyCanvas class overrides the paint method to cause it to plot the data stored in the array whenever the overridden version of the paint method is called.
(If you are familiar with graphics in Java, you will already know that the overridden paint method can be called for a variety of reasons, such as covering and later uncovering the page. If you are not familiar withgraphics in Java, I discuss the overriding of the paint method in numerous earlier modules including several modules on animation in Java.)
Notification Switch
Would you like to follow the 'Digital signal processing - dsp' conversation and receive update notifications?