Eric Pouech : riched20: Support a couple of paragraphs attributes out of RTF stream reading.
Alexandre Julliard
julliard at winehq.org
Tue Feb 5 06:33:11 CST 2008
Module: wine
Branch: master
Commit: 1e62b0e3b0a50c40d0cbf4d2ff08702062232f66
URL: http://source.winehq.org/git/wine.git/?a=commit;h=1e62b0e3b0a50c40d0cbf4d2ff08702062232f66
Author: Eric Pouech <eric.pouech at orange.fr>
Date: Sun Jan 27 19:02:14 2008 +0100
riched20: Support a couple of paragraphs attributes out of RTF stream reading.
---
dlls/riched20/editor.c | 143 ++++++++++++++++++++++++++++++++++++++++++++++++
1 files changed, 143 insertions(+), 0 deletions(-)
diff --git a/dlls/riched20/editor.c b/dlls/riched20/editor.c
index 705c5a1..2df5eb1 100644
--- a/dlls/riched20/editor.c
+++ b/dlls/riched20/editor.c
@@ -4,6 +4,7 @@
* Copyright 2004 by Krzysztof Foltman
* Copyright 2005 by Cihan Altinay
* Copyright 2005 by Phil Krylov
+ * Copyright 2008 Eric Pouech
*
* This library is free software; you can redistribute it and/or
* modify it under the terms of the GNU Lesser General Public
@@ -506,6 +507,148 @@ static void ME_RTFParAttrHook(RTF_Info *info)
if (fmt.cTabCount < MAX_TAB_STOPS)
fmt.rgxTabs[fmt.cTabCount++] = info->rtfParam;
break;
+ case rtfKeep:
+ fmt.dwMask = PFM_KEEP;
+ fmt.wEffects = PFE_KEEP;
+ break;
+ case rtfNoWidowControl:
+ fmt.dwMask = PFM_NOWIDOWCONTROL;
+ fmt.wEffects = PFE_NOWIDOWCONTROL;
+ break;
+ case rtfKeepNext:
+ fmt.dwMask = PFM_KEEPNEXT;
+ fmt.wEffects = PFE_KEEPNEXT;
+ break;
+ case rtfSpaceAfter:
+ fmt.dwMask = PFM_SPACEAFTER;
+ fmt.dySpaceAfter = info->rtfParam;
+ break;
+ case rtfSpaceBefore:
+ fmt.dwMask = PFM_SPACEBEFORE;
+ fmt.dySpaceBefore = info->rtfParam;
+ break;
+ case rtfSpaceBetween:
+ fmt.dwMask = PFM_LINESPACING;
+ if ((int)info->rtfParam > 0)
+ {
+ fmt.dyLineSpacing = info->rtfParam;
+ fmt.bLineSpacingRule = 3;
+ }
+ else
+ {
+ fmt.dyLineSpacing = info->rtfParam;
+ fmt.bLineSpacingRule = 4;
+ }
+ case rtfSpaceMultiply:
+ fmt.dwMask = PFM_LINESPACING;
+ fmt.dyLineSpacing = info->rtfParam * 20;
+ fmt.bLineSpacingRule = 5;
+ break;
+ case rtfParBullet:
+ fmt.dwMask = PFM_NUMBERING;
+ fmt.wNumbering = PFN_BULLET;
+ break;
+ case rtfParSimple:
+ fmt.dwMask = PFM_NUMBERING;
+ fmt.wNumbering = 2; /* FIXME: MSDN says it's not used ?? */
+ break;
+ case rtfParNumDecimal:
+ fmt.dwMask = PFM_NUMBERING;
+ fmt.wNumbering = 2; /* FIXME: MSDN says it's not used ?? */
+ break;
+ case rtfParNumIndent:
+ fmt.dwMask = PFM_NUMBERINGTAB;
+ fmt.wNumberingTab = info->rtfParam;
+ break;
+ case rtfParNumStartAt:
+ fmt.dwMask = PFM_NUMBERINGSTART;
+ fmt.wNumberingStart = info->rtfParam;
+ break;
+ case rtfBorderLeft:
+ ME_GetSelectionParaFormat(info->editor, &fmt);
+ if (!(fmt.dwMask & PFM_BORDER))
+ {
+ fmt.dwMask |= PFM_BORDER;
+ fmt.wBorderSpace = 0;
+ fmt.wBorderWidth = 1;
+ fmt.wBorders = 0;
+ }
+ fmt.wBorders |= 1;
+ break;
+ case rtfBorderRight:
+ ME_GetSelectionParaFormat(info->editor, &fmt);
+ if (!(fmt.dwMask & PFM_BORDER))
+ {
+ fmt.dwMask |= PFM_BORDER;
+ fmt.wBorderSpace = 0;
+ fmt.wBorderWidth = 1;
+ fmt.wBorders = 0;
+ }
+ fmt.wBorders |= 2;
+ break;
+ case rtfBorderTop:
+ ME_GetSelectionParaFormat(info->editor, &fmt);
+ if (!(fmt.dwMask & PFM_BORDER))
+ {
+ fmt.dwMask |= PFM_BORDER;
+ fmt.wBorderSpace = 0;
+ fmt.wBorderWidth = 1;
+ fmt.wBorders = 0;
+ }
+ fmt.wBorders |= 4;
+ break;
+ case rtfBorderBottom:
+ ME_GetSelectionParaFormat(info->editor, &fmt);
+ if (!(fmt.dwMask & PFM_BORDER))
+ {
+ fmt.dwMask |= PFM_BORDER;
+ fmt.wBorderSpace = 0;
+ fmt.wBorderWidth = 1;
+ fmt.wBorders = 0;
+ }
+ fmt.wBorders |= 8;
+ break;
+ case rtfBorderSingle:
+ ME_GetSelectionParaFormat(info->editor, &fmt);
+ /* we assume that borders have been created before (RTF spec) */
+ fmt.wBorders &= ~0x70;
+ fmt.wBorders |= 1 << 8;
+ break;
+ case rtfBorderThick:
+ ME_GetSelectionParaFormat(info->editor, &fmt);
+ /* we assume that borders have been created before (RTF spec) */
+ fmt.wBorders &= ~0x70;
+ fmt.wBorders |= 2 << 8;
+ break;
+ case rtfBorderShadow:
+ ME_GetSelectionParaFormat(info->editor, &fmt);
+ /* we assume that borders have been created before (RTF spec) */
+ fmt.wBorders &= ~0x70;
+ fmt.wBorders |= 10 << 8;
+ break;
+ case rtfBorderDouble:
+ ME_GetSelectionParaFormat(info->editor, &fmt);
+ /* we assume that borders have been created before (RTF spec) */
+ fmt.wBorders &= ~0x70;
+ fmt.wBorders |= 7 << 8;
+ break;
+ case rtfBorderDot:
+ ME_GetSelectionParaFormat(info->editor, &fmt);
+ /* we assume that borders have been created before (RTF spec) */
+ fmt.wBorders &= ~0x70;
+ fmt.wBorders |= 11 << 8;
+ break;
+ case rtfBorderWidth:
+ ME_GetSelectionParaFormat(info->editor, &fmt);
+ /* we assume that borders have been created before (RTF spec) */
+ fmt.wBorders &= ~0x70;
+ fmt.wBorders |= ((info->rtfParam / 15) & 7) << 8;
+ break;
+ case rtfBorderSpace:
+ ME_GetSelectionParaFormat(info->editor, &fmt);
+ /* we assume that borders have been created before (RTF spec) */
+ fmt.wBorderSpace = info->rtfParam;
+ break;
}
if (fmt.dwMask) {
RTFFlushOutputBuffer(info);
More information about the wine-cvs
mailing list