Timing Information

For uncompressed data, a stroke's interval implies the number of points in the stroke. An application can obtain this number directly from a STROKEINFO structure. The following is of academic interest only, illustrating how time intervals correspond to the point data within a stroke.

First, an application gets the device sampling rate with a call to GetPenDataInfo. The sampling rate is the number of points the pen device driver sends to Windows during each second of pen activity.


PENINFO peninfo;

int nSamplingRate;




if (GetPenDataInfo( hpndt, NULL, (LPPENINFO) &peninfo, 0 ))

nSamplingRate = peninfo.nSamplingRate;

Alternatively, an application can query the pen device driver directly for the sampling rate, as described in "Recognition Functions" in Chapter 8, "Writing a Recognizer."

The number of points in a stroke can now be determined from the start and stop times in the stroke's INTERVAL structure:

INTERVAL interval;

int nSamplingRate, nPoints, nms;




// Compute number of milliseconds in interval

nms = ((interval.atEnd.sec - interval.atBegin.sec) * 1000) +

(interval.atEnd.ms - interval.atBegin.ms);

// Compute number of points that occurred during interval

nPoints = (nms * nSamplingRate) / 1000;

After recognition, an application can determine the time intervals at which recognized symbols were written. Calling CreateInksetHRCRESULT creates the inkset for the required intervals:

HINKSET hinkset; // Allocate the inkset

HRCRESULT hresult; // Symbols for guesses go here




// Get symbols that make up the recognizer's best guess

GetResultsHRC( hrc, GRH_ALL, (LPHRCRESULT) &hresult, 1 );

// Get the inkset for symbols 2 through 11 of the guess

hinkset = CreateInksetHRCRESULT( hresult, 2, 10 );

The above code fragment creates an inkset containing a maximum of 10 intervals corresponding to the second through eleventh symbols of the recognizer's best guess. The section "Unboxed Recognition" in the next chapter describes the GetResultsHRC function in detail. For a description of the internal workings of CreateInksetHRCRESULT, see "The Recognition Functions" in Chapter 8, "Writing a Recognizer."

Software for developers
Delphi Components
.Net Components
Software for Android Developers
More information resources
Unix Manual Pages
Delphi Examples