Module: wine Branch: master Commit: 523a5b3f3141a0f746256ff059df8eab3efe3d1b URL: http://source.winehq.org/git/wine.git/?a=commit;h=523a5b3f3141a0f746256ff059...
Author: Eric Pouech eric.pouech@orange.fr Date: Thu Apr 24 22:05:59 2008 +0200
winhelp: Added support for richedit tabs in paragraph format.
---
programs/winhelp/hlpfile.c | 35 ++++++++++++++++++++++++++++++----- programs/winhelp/hlpfile.h | 6 ++++++ 2 files changed, 36 insertions(+), 5 deletions(-)
diff --git a/programs/winhelp/hlpfile.c b/programs/winhelp/hlpfile.c index 78a9643..3e85dc3 100644 --- a/programs/winhelp/hlpfile.c +++ b/programs/winhelp/hlpfile.c @@ -943,6 +943,18 @@ static HLPFILE_LINK* HLPFILE_AllocLink(struct RtfData* rd, int cookie, return link; }
+unsigned HLPFILE_HalfPointsToTwips(unsigned pts) +{ + static unsigned logPxY; + if (!logPxY) + { + HDC hdc = GetDC(NULL); + logPxY = GetDeviceCaps(hdc, LOGPIXELSY); + ReleaseDC(NULL, hdc); + } + return MulDiv(pts, 72 * 10, logPxY); +} + /*********************************************************************** * * HLPFILE_BrowseParagraph @@ -1034,13 +1046,26 @@ static BOOL HLPFILE_BrowseParagraph(HLPFILE_PAGE* page, struct RtfData* rd, BYTE if (bits & 0x0100) format += 3; if (bits & 0x0200) { - int ntab = fetch_short(&format); - unsigned short ts; + int i, ntab = fetch_short(&format); + unsigned tab, ts; + const char* kind;
- while (ntab-- > 0) + for (i = 0; i < ntab; i++) { - ts = fetch_ushort(&format); - if (ts & 0x4000) fetch_ushort(&format); + tab = fetch_ushort(&format); + ts = (tab & 0x4000) ? fetch_ushort(&format) : 0 /* left */; + switch (ts) + { + default: WINE_FIXME("Unknown tab style %x\n", ts); + /* fall through */ + case 0: kind = ""; break; + case 1: kind = "\tqr"; break; + case 2: kind = "\tqc"; break; + } + /* FIXME: do kind */ + sprintf(tmp, "%s\tx%d", + kind, HLPFILE_HalfPointsToTwips(tab & 0x3FFF)); + if (!HLPFILE_RtfAddControl(rd, tmp)) goto done; } } /* 0x0400, 0x0800 and 0x1000 don't need space */ diff --git a/programs/winhelp/hlpfile.h b/programs/winhelp/hlpfile.h index 63ddc0c..7b67259 100644 --- a/programs/winhelp/hlpfile.h +++ b/programs/winhelp/hlpfile.h @@ -201,6 +201,12 @@ HLPFILE_PAGE* HLPFILE_PageByOffset(HLPFILE* hlpfile, LONG offset, ULONG* relativ LONG HLPFILE_Hash(LPCSTR lpszContext); void HLPFILE_FreeLink(HLPFILE_LINK* link); void HLPFILE_FreeHlpFile(HLPFILE*); +unsigned HLPFILE_HalfPointsToTwips(unsigned pts); + +static inline unsigned HLPFILE_PointsToTwips(unsigned pts) +{ + return HLPFILE_HalfPointsToTwips(2 * pts); +}
void* HLPFILE_BPTreeSearch(BYTE*, const void*, HLPFILE_BPTreeCompare); void HLPFILE_BPTreeEnum(BYTE*, HLPFILE_BPTreeCallback cb, void *cookie);