editeng/source/outliner/overflowingtxt.cxx | 73 ++++++++++++++++++----------- include/editeng/overflowingtxt.hxx | 7 +- 2 files changed, 50 insertions(+), 30 deletions(-)
New commits: commit 7dc421a02393f091b741f160e3895b884866cb06 Author: matteocam <matteo.campane...@gmail.com> Date: Tue Jun 30 16:36:45 2015 -0400 Moved and commented code to get ParaObject in NonOverflowingText Change-Id: I8a011c3c0143d2f074281b9327398082a8053dc8 diff --git a/editeng/source/outliner/overflowingtxt.cxx b/editeng/source/outliner/overflowingtxt.cxx index 533be0d..6565a44 100644 --- a/editeng/source/outliner/overflowingtxt.cxx +++ b/editeng/source/outliner/overflowingtxt.cxx @@ -23,6 +23,51 @@ #include <editeng/overflowingtxt.hxx> #include <editeng/outliner.hxx> +OutlinerParaObject *NonOverflowingText::ToParaObject(Outliner *pOutliner) const +{ + + // XXX: Possibility: let the NonUnderflowingParaObject just be a TextEditObject created by the Outliner (by means of a selection). + + /* The overflow in SdrTextObj can occur: + * (a) exactly at the end of a paragraph, or + * (b) in the middle of a paragraph. + * + * In case (a), a NonUnderflowingText object contains only the + * paragraphs occurred before the overflow. + * In case (b), a NonUnderflowingText contains also the text of the + * paragraph that was cut by overflow. + */ + + bool bOverflowOccurredAtEndOfPara = + (mPreOverflowingTxt == "") && + (mpHeadParas != NULL); + + if (bOverflowOccurredAtEndOfPara) { + // Case (a) above: + // Only (possibly empty) paragraphs before overflowing one. + pOutliner->SetText(*mpHeadParas); + } else { + // Case (b): some text is non included in any OutlinerParaObject. + // We have to include the non-overflowing lines from the overfl. para + + // first make a ParaObject for the strings + pOutliner->SetToEmptyText(); + Paragraph *pTmpPara0 = pOutliner->GetParagraph(0); + pOutliner->SetText(mPreOverflowingTxt, pTmpPara0); + OutlinerParaObject *pPObj = pOutliner->CreateParaObject(); + + if (mpHeadParas != NULL) { + pOutliner->SetText(*mpHeadParas); + pOutliner->AddText(*pPObj); + } else if (mPreOverflowingTxt != "") { // only preoverflowing txt + pOutliner->SetText(*pPObj); + } else { // no text // This case is redundant but it doesn't hurt for now + pOutliner->SetToEmptyText(); + } + } + + return pOutliner->CreateParaObject(); +} OUString OverflowingText::GetEndingLines() const { @@ -120,33 +165,7 @@ OutlinerParaObject *OFlowChainedText::CreateNonOverflowingParaObject(Outliner *p if (mpNonOverflowingTxt == NULL) return NULL; - if (mpNonOverflowingTxt->mPreOverflowingTxt == "" && - mpNonOverflowingTxt->mpHeadParas != NULL) { - // Only (possibly empty) paragraphs before overflowing one - pOutliner->SetText(*mpNonOverflowingTxt->mpHeadParas); - } else { // We have to include the non-overflowing lines from the overfl. para - - // first make a ParaObject for the strings - pOutliner->SetToEmptyText(); - Paragraph *pTmpPara0 = pOutliner->GetParagraph(0); - pOutliner->SetText(mpNonOverflowingTxt->mPreOverflowingTxt, pTmpPara0); - OutlinerParaObject *pPObj = pOutliner->CreateParaObject(); - //pOutliner->Clear(); - //pOutliner->SetStyleSheet( 0, pEdtOutl->GetStyleSheet(0)); - - if (mpNonOverflowingTxt->mpHeadParas != NULL) { - pOutliner->SetText(*mpNonOverflowingTxt->mpHeadParas); - pOutliner->AddText(*pPObj); - } else if (mpNonOverflowingTxt->mPreOverflowingTxt != "") { // only preoverflowing txt - //OutlinerParaObject *pEmptyPObj = pOutliner->GetEmptyParaObject(); - //pOutliner->SetText(*pEmptyPObj); - pOutliner->SetText(*pPObj); - } else { // no text // This case is redundant but it doesn't hurt for now - pOutliner->Clear(); - } - } - - return pOutliner->CreateParaObject(); + return mpNonOverflowingTxt->ToParaObject(pOutliner); } diff --git a/include/editeng/overflowingtxt.hxx b/include/editeng/overflowingtxt.hxx index 58ff247..8f67004 100644 --- a/include/editeng/overflowingtxt.hxx +++ b/include/editeng/overflowingtxt.hxx @@ -74,13 +74,14 @@ class EDITENG_DLLPUBLIC NonOverflowingText { if (pHeadParas == NULL) // Redundant line for debugging DBG_ASSERT( pHeadParas != NULL, "pHeadParas is null?! All text is overflowing then" ); } + + OutlinerParaObject *ToParaObject(Outliner *) const; }; -// XXX: Do we also need a class for Underflow here? /* - * classes ?FlowChainedText: - * contains and handles the state of a text broken _after_ a flow event. + * classes OFlowChainedText and UFlowChainedText: + * contain and handle the state of a broken up text _after_ a flow event. * */ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits