Signed-off-by: Huw Davies huw@codeweavers.com --- dlls/riched20/writer.c | 131 +++++++++++++++++++++-------------------- 1 file changed, 67 insertions(+), 64 deletions(-)
diff --git a/dlls/riched20/writer.c b/dlls/riched20/writer.c index 4a6fd908fda..182a725dbad 100644 --- a/dlls/riched20/writer.c +++ b/dlls/riched20/writer.c @@ -386,9 +386,8 @@ static BOOL stream_out_font_and_colour_tbls( ME_OutStream *pStream, ME_Run *firs return TRUE; }
-static BOOL -ME_StreamOutRTFTableProps(ME_TextEditor *editor, ME_OutStream *pStream, - ME_DisplayItem *para) +static BOOL stream_out_table_props( ME_TextEditor *editor, ME_OutStream *pStream, + ME_Paragraph *para ) { ME_DisplayItem *cell; char props[STREAMOUT_BUFFER_SIZE] = ""; @@ -397,16 +396,18 @@ ME_StreamOutRTFTableProps(ME_TextEditor *editor, ME_OutStream *pStream,
if (!ME_StreamOutPrint(pStream, "\trowd")) return FALSE; - if (!editor->bEmulateVersion10) { /* v4.1 */ - PARAFORMAT2 *pFmt = &table_row_end( ¶->member.para )->fmt; - para = para_get_di( table_row_start( ¶->member.para ) ); - cell = para->member.para.next_para->member.para.pCell; + if (!editor->bEmulateVersion10) /* v4.1 */ + { + PARAFORMAT2 *pFmt = &table_row_end( para )->fmt; + para = table_row_start( para ); + cell = para->next_para->member.para.pCell; assert(cell); if (pFmt->dxOffset) sprintf(props + strlen(props), "\trgaph%d", pFmt->dxOffset); if (pFmt->dxStartIndent) sprintf(props + strlen(props), "\trleft%d", pFmt->dxStartIndent); - do { + do + { ME_Border* borders[4] = { &cell->member.cell.border.top, &cell->member.cell.border.left, &cell->member.cell.border.bottom, @@ -427,14 +428,16 @@ ME_StreamOutRTFTableProps(ME_TextEditor *editor, ME_OutStream *pStream, sprintf(props + strlen(props), "\cellx%d", cell->member.cell.nRightBoundary); cell = cell->member.cell.next_cell; } while (cell->member.cell.next_cell); - } else { /* v1.0 - 3.0 */ - const ME_Border* borders[4] = { ¶->member.para.border.top, - ¶->member.para.border.left, - ¶->member.para.border.bottom, - ¶->member.para.border.right }; - PARAFORMAT2 *pFmt = ¶->member.para.fmt; - - assert(!(para->member.para.nFlags & (MEPF_ROWSTART|MEPF_ROWEND|MEPF_CELL))); + } + else /* v1.0 - 3.0 */ + { + const ME_Border* borders[4] = { ¶->border.top, + ¶->border.left, + ¶->border.bottom, + ¶->border.right }; + PARAFORMAT2 *pFmt = ¶->fmt; + + assert( !(para->nFlags & (MEPF_ROWSTART | MEPF_ROWEND | MEPF_CELL)) ); if (pFmt->dxOffset) sprintf(props + strlen(props), "\trgaph%d", pFmt->dxOffset); if (pFmt->dxStartIndent) @@ -533,54 +536,46 @@ static BOOL stream_out_para_num( ME_OutStream *stream, ME_Paragraph *para, BOOL return TRUE; }
-static BOOL -ME_StreamOutRTFParaProps(ME_TextEditor *editor, ME_OutStream *pStream, - ME_DisplayItem *para) +static BOOL stream_out_para_props( ME_TextEditor *editor, ME_OutStream *pStream, + ME_Paragraph *para ) { - PARAFORMAT2 *fmt = ¶->member.para.fmt; + PARAFORMAT2 *fmt = ¶->fmt; char props[STREAMOUT_BUFFER_SIZE] = ""; int i; - ME_Paragraph *prev_para = NULL; + ME_Paragraph *prev_para = para_prev( para );
- if (para->member.para.prev_para->type == diParagraph) - prev_para = ¶->member.para.prev_para->member.para; - - if (!editor->bEmulateVersion10) { /* v4.1 */ - if (para->member.para.nFlags & MEPF_ROWSTART) { + if (!editor->bEmulateVersion10) /* v4.1 */ + { + if (para->nFlags & MEPF_ROWSTART) + { pStream->nNestingLevel++; - if (pStream->nNestingLevel == 1) { - if (!ME_StreamOutRTFTableProps(editor, pStream, para)) - return FALSE; - } + if (pStream->nNestingLevel == 1) + if (!stream_out_table_props( editor, pStream, para )) return FALSE; return TRUE; - } else if (para->member.para.nFlags & MEPF_ROWEND) { + } + else if (para->nFlags & MEPF_ROWEND) + { pStream->nNestingLevel--; - if (pStream->nNestingLevel >= 1) { - if (!ME_StreamOutPrint(pStream, "{\*\nesttableprops")) - return FALSE; - if (!ME_StreamOutRTFTableProps(editor, pStream, para)) - return FALSE; - if (!ME_StreamOutPrint(pStream, "\nestrow}{\nonesttables\par}\r\n")) - return FALSE; - } else { - if (!ME_StreamOutPrint(pStream, "\row\r\n")) - return FALSE; + if (pStream->nNestingLevel >= 1) + { + if (!ME_StreamOutPrint(pStream, "{\*\nesttableprops")) return FALSE; + if (!stream_out_table_props( editor, pStream, para )) return FALSE; + if (!ME_StreamOutPrint(pStream, "\nestrow}{\nonesttables\par}\r\n")) return FALSE; } + else if (!ME_StreamOutPrint(pStream, "\row\r\n")) return FALSE; return TRUE; } - } else { /* v1.0 - 3.0 */ - if (para->member.para.fmt.dwMask & PFM_TABLE && - para->member.para.fmt.wEffects & PFE_TABLE) - { - if (!ME_StreamOutRTFTableProps(editor, pStream, para)) - return FALSE; - } + } + else /* v1.0 - 3.0 */ + { + if (para->fmt.dwMask & PFM_TABLE && para->fmt.wEffects & PFE_TABLE) + if (!stream_out_table_props( editor, pStream, para )) return FALSE; }
if (prev_para && !memcmp( fmt, &prev_para->fmt, sizeof(*fmt) )) { if (fmt->wNumbering) - return stream_out_para_num( pStream, ¶->member.para, FALSE ); + return stream_out_para_num( pStream, para, FALSE ); return TRUE; }
@@ -588,14 +583,15 @@ ME_StreamOutRTFParaProps(ME_TextEditor *editor, ME_OutStream *pStream, return FALSE;
if (fmt->wNumbering) - if (!stream_out_para_num( pStream, ¶->member.para, TRUE )) return FALSE; + if (!stream_out_para_num( pStream, para, TRUE )) return FALSE;
- if (!editor->bEmulateVersion10) { /* v4.1 */ - if (pStream->nNestingLevel > 0) - strcat(props, "\intbl"); - if (pStream->nNestingLevel > 1) - sprintf(props + strlen(props), "\itap%d", pStream->nNestingLevel); - } else { /* v1.0 - 3.0 */ + if (!editor->bEmulateVersion10) /* v4.1 */ + { + if (pStream->nNestingLevel > 0) strcat(props, "\intbl"); + if (pStream->nNestingLevel > 1) sprintf(props + strlen(props), "\itap%d", pStream->nNestingLevel); + } + else /* v1.0 - 3.0 */ + { if (fmt->dwMask & PFM_TABLE && fmt->wEffects & PFE_TABLE) strcat(props, "\intbl"); } @@ -605,8 +601,10 @@ ME_StreamOutRTFParaProps(ME_TextEditor *editor, ME_OutStream *pStream, * set very different from the documentation. * (Tested with RichEdit 5.50.25.0601) */
- if (fmt->dwMask & PFM_ALIGNMENT) { - switch (fmt->wAlignment) { + if (fmt->dwMask & PFM_ALIGNMENT) + { + switch (fmt->wAlignment) + { case PFA_LEFT: /* Default alignment: not emitted */ break; @@ -622,10 +620,12 @@ ME_StreamOutRTFParaProps(ME_TextEditor *editor, ME_OutStream *pStream, } }
- if (fmt->dwMask & PFM_LINESPACING) { + if (fmt->dwMask & PFM_LINESPACING) + { /* FIXME: MSDN says that the bLineSpacingRule field is controlled by the * PFM_SPACEAFTER flag. Is that true? I don't believe so. */ - switch (fmt->bLineSpacingRule) { + switch (fmt->bLineSpacingRule) + { case 0: /* Single spacing */ strcat(props, "\sl-240\slmult1"); break; @@ -676,8 +676,10 @@ ME_StreamOutRTFParaProps(ME_TextEditor *editor, ME_OutStream *pStream, if (fmt->dwMask & PFM_TABSTOPS) { static const char * const leader[6] = { "", "\tldot", "\tlhyph", "\tlul", "\tlth", "\tleq" };
- for (i = 0; i < fmt->cTabCount; i++) { - switch ((fmt->rgxTabs[i] >> 24) & 0xF) { + for (i = 0; i < fmt->cTabCount; i++) + { + switch ((fmt->rgxTabs[i] >> 24) & 0xf) + { case 1: strcat(props, "\tqc"); break; @@ -704,7 +706,8 @@ ME_StreamOutRTFParaProps(ME_TextEditor *editor, ME_OutStream *pStream, if (fmt->sStyle != -1) sprintf(props + strlen(props), "\s%d", fmt->sStyle);
- if (fmt->dwMask & PFM_SHADING) { + if (fmt->dwMask & PFM_SHADING) + { static const char * const style[16] = { "", "\bgdkhoriz", "\bgdkvert", "\bgdkfdiag", "\bgdkbdiag", "\bgdkcross", "\bgdkdcross", "\bghoriz", "\bgvert", "\bgfdiag", @@ -1025,7 +1028,7 @@ static BOOL ME_StreamOutRTF(ME_TextEditor *editor, ME_OutStream *pStream, if (cursor.pPara != prev_para) { prev_para = cursor.pPara; - if (!ME_StreamOutRTFParaProps(editor, pStream, cursor.pPara)) + if (!stream_out_para_props( editor, pStream, &cursor.pPara->member.para )) return FALSE; }