/// <summary>
        /// Converts a CalibratedInkSample to a RawInkSample.
        /// </summary>
        /// <param name="g">The capture- or display- surface graphics object.</param>
        /// <param name="sample">The calibrated sample to convert.</param>
        /// <param name="clientArea">The capture- or display- surface size in pixels.</param>
        /// <returns>The RawInkSample.</returns>
        public RawInkSample CalibratedToRaw(Graphics g, CalibratedInkSample sample, Size clientArea)
        {
            //don't bother calibrating invalid samples
            if (sample.IsInvalid())
            {
                return(new RawInkSample(sample.Time, sample.X, sample.Y, sample.Pressure));
            }

            //next apply this instance's calibration
            sample = PipelinedCalibratedToRawConversion(g, sample, clientArea);

            //return a raw sample
            return(new RawInkSample(sample.Time, sample.X, sample.Y, sample.Pressure));
        }
        /// <summary>
        /// Converts a CalibratedInkSample to a RawInkSample.
        /// </summary>
        /// <param name="g">The capture- or display- surface graphics object.</param>
        /// <param name="sample">The calibrated sample to convert.</param>
        /// <param name="clientArea">The capture- or display- surface size in pixels.</param>
        /// <returns>The RawInkSample.</returns>
        public RawInkSample CalibratedToRaw(Graphics g, CalibratedInkSample sample, Size clientArea)
        {
            //don't bother calibrating invalid samples
            if (sample.IsInvalid()) return new RawInkSample(sample.Time, sample.X, sample.Y, sample.Pressure);

            //next apply this instance's calibration
            sample = PipelinedCalibratedToRawConversion(g, sample, clientArea);

            //return a raw sample
            return new RawInkSample(sample.Time, sample.X, sample.Y, sample.Pressure);
        }