From: msevior@physics.unimelb.edu.au
Date: Mon Sep 15 2003 - 10:11:59 EDT
> Jordi,
>
> Please commit this patch.
>
Please DON'T commit this.
Will answer fully later.
> Dom
>
> --- Jordi Mas <jmas@softcatala.org> wrote:
>> Hello there,
>>
>> This is a proposed patch to make the win32 usable
>> again. It fixes bug 5748. I
>> REVERTS some changes made my Martin.
>>
>> If nobody has a better solution, I think that we
>> should commit this patch and
>> Martin and me or a win32 developer should look very
>> close to what modification
>> need to be done to the win32 graphics class in the
>> future.
>>
>> Thanks,
>>
>> --
>>
>> Jordi Mas i Hernāndez (homepage
>> http://www.softcatala.org/~jmas)
>> http://www.softcatala.org
>>
>>
>> > Index: src/af/gr/win/gr_Win32CharWidths.cpp
>>
> ===================================================================
>> RCS file:
>> /cvsroot/abi/src/af/gr/win/gr_Win32CharWidths.cpp,v
>> retrieving revision 1.23
>> diff -u -r1.23 gr_Win32CharWidths.cpp
>> --- src/af/gr/win/gr_Win32CharWidths.cpp 11 Sep 2003
>> 03:03:31 -0000 1.23
>> +++ src/af/gr/win/gr_Win32CharWidths.cpp 15 Sep 2003
>> 13:24:35 -0000
>> @@ -27,17 +27,10 @@
>> #include "ut_endian.h"
>>
>>
>>
> //////////////////////////////////////////////////////////////////
>> -#if 1
>> -
>> -#define _UL(x) (x)
>> -#define _UUL(x)(x) = (x)
>> -
>> -#else
>>
>> #define _UL(x) pGr->tlu((x))
>> #define _UUL(x) (x) = pGr->tlu((x))
>>
>> -#endif
>> void GR_Win32CharWidths::setCharWidthsOfRange(HDC
>> hdc, UT_UCSChar c0, UT_UCSChar c1, GR_Graphics *
>> pGr)
>> {
>> if(m_vRanges.getItemCount() == 0)
>> Index: src/af/gr/win/gr_Win32CharWidths.h
>>
> ===================================================================
>> RCS file:
>> /cvsroot/abi/src/af/gr/win/gr_Win32CharWidths.h,v
>> retrieving revision 1.3
>> diff -u -r1.3 gr_Win32CharWidths.h
>> --- src/af/gr/win/gr_Win32CharWidths.h 21 Jun 2003
>> 23:26:53 -0000 1.3
>> +++ src/af/gr/win/gr_Win32CharWidths.h 15 Sep 2003
>> 13:24:35 -0000
>> @@ -25,6 +25,11 @@
>> class UT_NumberVector;
>> class GR_Graphics;
>>
>> +#define _UL(x) (x)
>>
>> +#define _UUL(x)(x) = (x)
>>
>> +
>> +
>> +
>>
>>
> //////////////////////////////////////////////////////////////////
>> // the only reason that we subclass is because
>> Win32 provides a
>> // routine to fetch the widths of a whole font in
>> one call.
>> Index: src/af/gr/win/gr_Win32Graphics.cpp
>>
> ===================================================================
>> RCS file:
>> /cvsroot/abi/src/af/gr/win/gr_Win32Graphics.cpp,v
>> retrieving revision 1.152
>> diff -u -r1.152 gr_Win32Graphics.cpp
>> --- src/af/gr/win/gr_Win32Graphics.cpp 11 Sep 2003
>> 03:03:32 -0000 1.152
>> +++ src/af/gr/win/gr_Win32Graphics.cpp 15 Sep 2003
>> 13:24:35 -0000
>> @@ -36,8 +36,12 @@
>> #include "ut_string.h"
>> #include "ut_Win32OS.h"
>>
>> -#define WIN_SCALE_RATIO 1440.0/72.
>> -#define NEW_SCALE 1
>> +
>>
>> +
>> +
>> +
>> +#define WIN_SCALE_RATIO 1440.0/72.
>>
>> +#define NEW_SCALE 0
>>
>>
>> //#define GR_GRAPHICS_DEBUG 1
>>
>> @@ -197,10 +201,10 @@
>> {
>> // lazily grab this (once)
>> HFONT f = (HFONT)
>> GetStockObject(DEFAULT_GUI_FONT);
>> - LOGFONT lf;
>> - int iRes = GetObject(f, sizeof(LOGFONT), &lf);
>> - UT_sint32 iHeight =
>> static_cast<UT_sint32>(lf.lfHeight);
>> - m_pFontGUI = new GR_Win32Font(f, this,iHeight);
>> + LOGFONT lf;
>>
>> + int iRes = GetObject(f, sizeof(LOGFONT), &lf);
>>
>> + UT_sint32 iHeight =
>> static_cast<UT_sint32>(lf.lfHeight);
>>
>>
>> + m_pFontGUI = new GR_Win32Font(f, this,iHeight);
>>
>> UT_ASSERT(m_pFontGUI);
>> }
>>
>> @@ -285,7 +289,7 @@
>> if (!hFont)
>> return 0;
>>
>> - return new GR_Win32Font(hFont, this,iHeight);
>> + return new GR_Win32Font(hFont, this, iHeight);
>> }
>>
>> void GR_Win32Graphics::drawGlyph(UT_uint32 Char,
>> UT_sint32 xoff, UT_sint32 yoff)
>> @@ -342,41 +346,6 @@
>> }
>> }
>>
>> -
>> -UT_uint16* GR_Win32Graphics::_remapGlyphs(const
>> UT_UCSChar* pChars, int iCharOffset, int &iLength)
>> -{
>> - // TODO -- make this handle 32-bit chars properly
>> - if (iLength > (int)m_remapBufferSize)
>> - {
>> - delete [] m_remapBuffer;
>> -
>> - if(XAP_App::getApp()->theOSHasBidiSupport() !=
>> XAP_App::BIDI_SUPPORT_NONE)
>> - {
>> - delete [] m_remapIndices;
>> - m_remapIndices = new UT_UCS2Char[iLength];
>> - }
>> -
>> - m_remapBuffer = new UT_UCS2Char[iLength];
>> - m_remapBufferSize = iLength;
>> - }
>> -
>> - // Need to handle zero-width spaces correctly
>> - int i, j;
>> - for (i = 0, j = 0; i < iLength; ++i, ++j)
>> - {
>> - m_remapBuffer[j] =
>> (UT_UCS2Char)pChars[iCharOffset + i];
>> -
>> - if(m_remapBuffer[j] == 0x200B || m_remapBuffer[j]
>> == 0xFEFF
>> - /*|| m_remapBuffer[j] ==
>> UCS_LIGATURE_PLACEHOLDER*/)
>> - j--;
>> - }
>> -
>> - iLength -= (i - j);
>> -
>> - return m_remapBuffer;
>> -}
>> -
>> -
>> void GR_Win32Graphics::drawChars(const UT_UCSChar*
>> pChars,
>> int iCharOffset, int iLengthOrig,
>> UT_sint32 xoff, UT_sint32 yoff,
>> @@ -390,7 +359,6 @@
>>
>> xoff = tdu(xoff);
>> yoff = tdu(yoff);
>> - int *pCharAdvances = NULL;
>>
>>
>> // iLength can be modified by _remapGlyphs
>> @@ -420,13 +388,13 @@
>> int iConverted = WideCharToMultiByte(CP_ACP,
>> NULL,
>> (LPCWSTR) currentChars, iLength,
>> str, iLength * sizeof(UT_UCSChar), NULL, NULL);
>> -
>> ExtTextOutA(m_hdc, xoff, yoff, 0, NULL, str,
>> iConverted, NULL);
>> delete [] str;
>> }
>> else
>> {
>> int duCharWidths [256];
>> + int *pCharAdvances;
>>
>> if (pCharWidths)
>> {
>> @@ -440,26 +408,19 @@
>> // all 0x200B and 0xFEFF characters, we also
>> have to
>> // remove their entires from the advances
>> UT_sint32 i,j;
>> - UT_sint32 iwidth = 0;
>> - UT_sint32 iadvance = 0;
>> - UT_sint32 inextAdvance = 0;
>> +
>>
> === message truncated ===
>
>
> __________________________________
> Do you Yahoo!?
> Yahoo! SiteBuilder - Free, easy-to-use web site design software
> http://sitebuilder.yahoo.com
This archive was generated by hypermail 2.1.4 : Mon Sep 15 2003 - 10:29:55 EDT