From: Martin Sevior (msevior@seviorpc.ph.unimelb.edu.au)
Date: Wed Sep 10 2003 - 21:27:10 EDT
CVS:
----------------------------------------------------------------------
CVS: Enter Log. Lines beginning with `CVS:' are removed automatically
CVS:
CVS: Committing in .
CVS:
CVS: Modified Files:
CVS: win/gr_Win32Graphics.cpp
CVS:
----------------------------------------------------------------------
Fix the cursor weirdness on Win32.
This was fixed by the following code...
UT_sint32 iwidth = 0;
UT_sint32 iadvance = 0;
UT_sint32 inextAdvance = 0;
for (i = 0, j = 0; i < iLengthOrig; i++)
{
if(! (pChars[iCharOffset+i] == 0x200B || pChars[iCharOffset+i] ==
0xFEFF
/*|| pChars[iCharOffset+i] == UCS_LIGATURE_PLACEHOLDER*/ ) )
{
iwidth += pCharWidths[i];
inextAdvance = tdu(iwidth);
pCharAdvances[j] = inextAdvance - iadvance;
iadvance = inextAdvance;
j++;
}
.............
Previously we just had
pCharAdvances[j] = tdu(pCharWidths[i]
This allowed rounding errors on each conversion to accumulate. Doing
things the other way means we correct at each step.
Just as well I teach Computation Physics so I know about rounding errors
in numerical calculations!
I have more win fixes put I'll submit them as a patch in a few minutes.
Cheers
Martin
This archive was generated by hypermail 2.1.4 : Wed Sep 10 2003 - 20:38:23 EDT