diff --git a/dlls/riched20/editor.h b/dlls/riched20/editor.h index c42d3bc5e7c..922a1e5c6c2 100644 --- a/dlls/riched20/editor.h +++ b/dlls/riched20/editor.h @@ -209,9 +209,12 @@ void para_num_init( ME_Context *c, ME_Paragraph *para ) DECLSPEC_HIDDEN; void para_num_clear( struct para_num *pn ) DECLSPEC_HIDDEN; int get_total_width(ME_TextEditor *editor) DECLSPEC_HIDDEN; void mark_para_rewrap(ME_TextEditor *editor, ME_DisplayItem *para) DECLSPEC_HIDDEN; -ME_DisplayItem *get_di_from_para(ME_Paragraph *para) DECLSPEC_HIDDEN; void add_marked_para(ME_TextEditor *editor, ME_DisplayItem *para) DECLSPEC_HIDDEN; void remove_marked_para(ME_TextEditor *editor, ME_DisplayItem *para) DECLSPEC_HIDDEN; +static inline ME_DisplayItem *para_get_di(ME_Paragraph *para) +{ + return (ME_DisplayItem *)((ptrdiff_t)para - offsetof(ME_DisplayItem, member)); +} /* paint.c */ void ME_PaintContent(ME_TextEditor *editor, HDC hDC, const RECT *rcUpdate) DECLSPEC_HIDDEN; diff --git a/dlls/riched20/para.c b/dlls/riched20/para.c index bde0654b666..7cef6ca9932 100644 --- a/dlls/riched20/para.c +++ b/dlls/riched20/para.c @@ -29,11 +29,6 @@ void mark_para_rewrap(ME_TextEditor *editor, ME_DisplayItem *para) add_marked_para(editor, para); } -ME_DisplayItem *get_di_from_para(ME_Paragraph *para) -{ - return (ME_DisplayItem *)((ptrdiff_t)para - offsetof(ME_DisplayItem, member)); -} - static ME_DisplayItem *make_para(ME_TextEditor *editor) { ME_DisplayItem *item = ME_MakeDI(diParagraph); @@ -454,7 +449,7 @@ static void para_num_clear_list( ME_TextEditor *editor, ME_Paragraph *para, cons { do { - mark_para_rewrap(editor, get_di_from_para(para)); + mark_para_rewrap( editor, para_get_di( para ) ); para_num_clear( ¶->para_num ); if (para->next_para->type != diParagraph) break; para = ¶->next_para->member.para; @@ -529,7 +524,7 @@ static BOOL ME_SetParaFormat(ME_TextEditor *editor, ME_Paragraph *para, const PA if (memcmp(©, ¶->fmt, sizeof(PARAFORMAT2))) { - mark_para_rewrap(editor, get_di_from_para(para)); + mark_para_rewrap( editor, para_get_di( para ) ); if (((dwMask & PFM_NUMBERING) && (copy.wNumbering != para->fmt.wNumbering)) || ((dwMask & PFM_NUMBERINGSTART) && (copy.wNumberingStart != para->fmt.wNumberingStart)) || ((dwMask & PFM_NUMBERINGSTYLE) && (copy.wNumberingStyle != para->fmt.wNumberingStyle))) diff --git a/dlls/riched20/run.c b/dlls/riched20/run.c index 66925ca3434..f98288a94a2 100644 --- a/dlls/riched20/run.c +++ b/dlls/riched20/run.c @@ -367,7 +367,7 @@ ME_InsertRunAtCursor(ME_TextEditor *editor, ME_Cursor *cursor, ME_Style *style, ME_InsertBefore( insert_before, pDI ); TRACE("Shift length:%d\n", len); ME_PropagateCharOffset( insert_before, len ); - mark_para_rewrap(editor, get_di_from_para(insert_before->member.run.para)); + mark_para_rewrap( editor, para_get_di( insert_before->member.run.para ) ); /* Move any cursors that were at the end of the previous run to the end of the inserted run */ prev = ME_FindItemBack( pDI, diRun ); @@ -787,7 +787,7 @@ void ME_SetCharFormat(ME_TextEditor *editor, ME_Cursor *start, ME_Cursor *end, C ME_ReleaseStyle(para->para_num.style); para->para_num.style = NULL; } - mark_para_rewrap(editor, get_di_from_para(para)); + mark_para_rewrap( editor, para_get_di( para ) ); } } diff --git a/dlls/riched20/wrap.c b/dlls/riched20/wrap.c index cde46e2d7cf..c74931015a1 100644 --- a/dlls/riched20/wrap.c +++ b/dlls/riched20/wrap.c @@ -43,7 +43,7 @@ typedef struct tagME_WrapContext int nRow; POINT pt; BOOL bOverflown, bWordWrap; - ME_DisplayItem *pPara; + ME_Paragraph *para; ME_Run *pRowStart; ME_Run *pLastSplittableRun; } ME_WrapContext; @@ -131,8 +131,7 @@ static ME_Run *split_run_extents( ME_WrapContext *wc, ME_Run *run, int nVChar ) { ME_TextEditor *editor = wc->context->editor; ME_Run *run2; - ME_Paragraph *para = &wc->pPara->member.para; - ME_Cursor cursor = {wc->pPara, run_get_di( run ), nVChar}; + ME_Cursor cursor = {para_get_di( wc->para ), run_get_di( run ), nVChar}; assert( run->nCharOfs != -1 ); ME_CheckCharOffsets(editor); @@ -147,7 +146,7 @@ static ME_Run *split_run_extents( ME_WrapContext *wc, ME_Run *run, int nVChar ) shape_run( wc->context, run ); shape_run( wc->context, run2 ); - calc_run_extent(wc->context, para, wc->nRow ? wc->nLeftMargin : wc->nFirstMargin, run); + calc_run_extent(wc->context, wc->para, wc->nRow ? wc->nLeftMargin : wc->nFirstMargin, run); run2->pt.x = run->pt.x + run->nWidth; run2->pt.y = run->pt.y; @@ -186,24 +185,23 @@ static ME_DisplayItem *ME_MakeRow(int height, int baseline, int width) static void ME_BeginRow(ME_WrapContext *wc) { - PARAFORMAT2 *pFmt; - ME_DisplayItem *para = wc->pPara; - - pFmt = ¶->member.para.fmt; wc->pRowStart = NULL; wc->bOverflown = FALSE; wc->pLastSplittableRun = NULL; wc->bWordWrap = wc->context->editor->bWordWrap; - if (para->member.para.nFlags & (MEPF_ROWSTART|MEPF_ROWEND)) { + if (wc->para->nFlags & (MEPF_ROWSTART | MEPF_ROWEND)) + { wc->nAvailWidth = 0; wc->bWordWrap = FALSE; - if (para->member.para.nFlags & MEPF_ROWEND) + if (wc->para->nFlags & MEPF_ROWEND) { - ME_Cell *cell = &ME_FindItemBack(para, diCell)->member.cell; + ME_Cell *cell = &ME_FindItemBack( para_get_di( wc->para ), diCell)->member.cell; cell->nWidth = 0; } - } else if (para->member.para.pCell) { - ME_Cell *cell = ¶->member.para.pCell->member.cell; + } + else if (wc->para->pCell) + { + ME_Cell *cell = &wc->para->pCell->member.cell; int width; width = cell->nRightBoundary; @@ -211,7 +209,7 @@ static void ME_BeginRow(ME_WrapContext *wc) width -= cell->prev_cell->member.cell.nRightBoundary; if (!cell->prev_cell) { - int rowIndent = ME_GetTableRowEnd(para)->member.para.fmt.dxStartIndent; + int rowIndent = ME_GetTableRowEnd( para_get_di( wc->para ) )->member.para.fmt.dxStartIndent; width -= rowIndent; } cell->nWidth = max(ME_twips2pointsX(wc->context, width), 0); @@ -225,7 +223,7 @@ static void ME_BeginRow(ME_WrapContext *wc) } wc->pt.x = wc->context->pt.x; if (wc->context->editor->bEmulateVersion10 && /* v1.0 - 3.0 */ - pFmt->dwMask & PFM_TABLE && pFmt->wEffects & PFE_TABLE) + wc->para->fmt.dwMask & PFM_TABLE && wc->para->fmt.wEffects & PFE_TABLE) /* Shift the text down because of the border. */ wc->pt.y++; } @@ -285,15 +283,14 @@ static void ME_InsertRowStart( ME_WrapContext *wc, ME_Run *last ) { ME_Run *run; ME_DisplayItem *row; - ME_Paragraph *para = &wc->pPara->member.para; BOOL bSkippingSpaces = TRUE; int ascent = 0, descent = 0, width = 0, shift = 0, align = 0; /* Include height of para numbering label */ - if (wc->nRow == 0 && para->fmt.wNumbering) + if (wc->nRow == 0 && wc->para->fmt.wNumbering) { - ascent = para->para_num.style->tm.tmAscent; - descent = para->para_num.style->tm.tmDescent; + ascent = wc->para->para_num.style->tm.tmAscent; + descent = wc->para->para_num.style->tm.tmDescent; } for (run = last; run; run = run_prev( run )) @@ -301,8 +298,8 @@ static void ME_InsertRowStart( ME_WrapContext *wc, ME_Run *last ) /* ENDPARA run shouldn't affect row height, except if it's the only run in the paragraph */ if (run == wc->pRowStart || !(run->nFlags & MERF_ENDPARA)) { - if (run->nAscent>ascent) ascent = run->nAscent; - if (run->nDescent>descent) descent = run->nDescent; + if (run->nAscent > ascent) ascent = run->nAscent; + if (run->nDescent > descent) descent = run->nDescent; if (bSkippingSpaces) { /* Exclude space characters from run width. @@ -328,10 +325,10 @@ static void ME_InsertRowStart( ME_WrapContext *wc, ME_Run *last ) if (run == wc->pRowStart) break; } - para->nWidth = max(para->nWidth, width); + wc->para->nWidth = max( wc->para->nWidth, width ); row = ME_MakeRow( ascent + descent, ascent, width ); if (wc->context->editor->bEmulateVersion10 && /* v1.0 - 3.0 */ - (para->fmt.dwMask & PFM_TABLE) && (para->fmt.wEffects & PFE_TABLE)) + (wc->para->fmt.dwMask & PFM_TABLE) && (wc->para->fmt.wEffects & PFE_TABLE)) { /* The text was shifted down in ME_BeginRow so move the wrap context * back to where it should be. */ @@ -342,12 +339,12 @@ static void ME_InsertRowStart( ME_WrapContext *wc, ME_Run *last ) row->member.row.pt = wc->pt; row->member.row.nLMargin = (!wc->nRow ? wc->nFirstMargin : wc->nLeftMargin); row->member.row.nRMargin = wc->nRightMargin; - assert(para->fmt.dwMask & PFM_ALIGNMENT); - align = para->fmt.wAlignment; + assert(wc->para->fmt.dwMask & PFM_ALIGNMENT); + align = wc->para->fmt.wAlignment; if (align == PFA_CENTER) shift = max((wc->nAvailWidth-width)/2, 0); if (align == PFA_RIGHT) shift = max(wc->nAvailWidth-width, 0); - if (para->nFlags & MEPF_COMPLEX) layout_row( wc->pRowStart, last ); + if (wc->para->nFlags & MEPF_COMPLEX) layout_row( wc->pRowStart, last ); row->member.row.pt.x = row->member.row.nLMargin + shift; @@ -357,10 +354,10 @@ static void ME_InsertRowStart( ME_WrapContext *wc, ME_Run *last ) if (run == last) break; } - if (wc->nRow == 0 && para->fmt.wNumbering) + if (wc->nRow == 0 && wc->para->fmt.wNumbering) { - para->para_num.pt.x = wc->nParaNumOffset + shift; - para->para_num.pt.y = wc->pt.y + row->member.row.nBaseline; + wc->para->para_num.pt.x = wc->nParaNumOffset + shift; + wc->para->para_num.pt.y = wc->pt.y + row->member.row.nBaseline; } ME_InsertBefore( run_get_di( wc->pRowStart ), row ); @@ -371,13 +368,10 @@ static void ME_InsertRowStart( ME_WrapContext *wc, ME_Run *last ) static void ME_WrapEndParagraph( ME_WrapContext *wc ) { - ME_DisplayItem *para = wc->pPara; - PARAFORMAT2 *pFmt = ¶->member.para.fmt; - - if (wc->pRowStart) ME_InsertRowStart( wc, para->member.para.eop_run ); + if (wc->pRowStart) ME_InsertRowStart( wc, wc->para->eop_run ); if (wc->context->editor->bEmulateVersion10 && /* v1.0 - 3.0 */ - pFmt->dwMask & PFM_TABLE && pFmt->wEffects & PFE_TABLE) + wc->para->fmt.dwMask & PFM_TABLE && wc->para->fmt.wEffects & PFE_TABLE) { /* ME_BeginRow was called an extra time for the paragraph, and it shifts the * text down by one pixel for the border, so fix up the wrap context. */ @@ -391,7 +385,7 @@ static void ME_WrapSizeRun( ME_WrapContext *wc, ME_Run *run ) ME_UpdateRunFlags( wc->context->editor, run ); - calc_run_extent( wc->context, &wc->pPara->member.para, + calc_run_extent( wc->context, wc->para, wc->nRow ? wc->nLeftMargin : wc->nFirstMargin, run ); } @@ -576,7 +570,7 @@ static ME_Run *ME_WrapHandleRun( ME_WrapContext *wc, ME_Run *run ) ME_Run *new_run; wc->bOverflown = FALSE; new_run = split_run_extents( wc, run, black ); - calc_run_extent( wc->context, &wc->pPara->member.para, + calc_run_extent( wc->context, wc->para, wc->nRow ? wc->nLeftMargin : wc->nFirstMargin, run ); ME_InsertRowStart( wc, run ); return new_run; @@ -859,7 +853,7 @@ static void ME_WrapTextParagraph( ME_TextEditor *editor, ME_Context *c, ME_Displ pFmt = &tp->member.para.fmt; wc.context = c; - wc.pPara = tp; + wc.para = &tp->member.para; /* wc.para_style = tp->member.para.style; */ wc.style = NULL; wc.nParaNumOffset = 0;