editeng/source/editeng/impedit.hxx | 6 ++-- editeng/source/editeng/impedit3.cxx | 40 ++++++++++++++++++++++++---- svx/source/svdraw/svdotextdecomposition.cxx | 2 - 3 files changed, 40 insertions(+), 8 deletions(-)
New commits: commit 10c03833f92274e5cbb063ccec910a2b379341fa Author: matteocam <matteo.campane...@gmail.com> Date: Mon Jun 1 16:35:43 2015 -0400 Can detect first line of overflowing Change-Id: I18f4f00a49be9b257ea8d3f5acb7e811905b1548 diff --git a/editeng/source/editeng/impedit.hxx b/editeng/source/editeng/impedit.hxx index 559a1dd..6eabd9c 100644 --- a/editeng/source/editeng/impedit.hxx +++ b/editeng/source/editeng/impedit.hxx @@ -466,6 +466,7 @@ private: // For Chaining sal_Int32 mnOverflowingPara = -1; + sal_Int32 mnOverflowingLine = -1; IdleFormattter aIdleFormatter; @@ -691,6 +692,8 @@ private: const ParaPortionList& GetParaPortions() const { return aParaPortionList; } ParaPortionList& GetParaPortions() { return aParaPortionList; } + void ImplUpdateOverflowingParaNum( sal_uInt32 ); + void ImplUpdateOverflowingLineNum( sal_uInt32, sal_uInt32, sal_uInt32 ); protected: virtual void Notify( SfxBroadcaster& rBC, const SfxHint& rHint ) SAL_OVERRIDE; @@ -1028,9 +1031,8 @@ public: bool IsFirstWordCapitalization() const { return bFirstWordCapitalization; } sal_Int32 GetOverflowingParaNum() const { return mnOverflowingPara; } - void SetOverflowingParaNum(sal_Int32 nPara) { mnOverflowingPara = nPara; } + sal_Int32 GetOverflowingLineNum() const { return mnOverflowingLine; } void ClearOverflowingParaNum() { mnOverflowingPara = -1; } - void UpdateOverflowingParaNum( sal_uInt32 ); }; inline EPaM ImpEditEngine::CreateEPaM( const EditPaM& rPaM ) diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx index 3f8895f..54554af 100644 --- a/editeng/source/editeng/impedit3.cxx +++ b/editeng/source/editeng/impedit3.cxx @@ -617,10 +617,12 @@ void ImpEditEngine::CheckPageOverflow() fprintf(stderr, "[OVERFLOW-CHECK] Current MaxAutoPaperSize is %d\n", nBoxHeight); fprintf(stderr, "[CONTROL_STATUS] AutoPageSize is %s", ( aStatus.GetControlWord() & EE_CNTRL_AUTOPAGESIZE ) ? "ON\n" : "OFF\n" ); - if (CalcTextHeight(NULL) > nBoxHeight) + sal_uInt32 nTxtHeight = CalcTextHeight(NULL); + + if (nTxtHeight > nBoxHeight) { // which paragraph is the first to cause higher size of the box? - UpdateOverflowingParaNum( nBoxHeight); // XXX: currently only for horizontal text + ImplUpdateOverflowingParaNum( nBoxHeight); // XXX: currently only for horizontal text aStatus.SetPageOverflow(true); } else { @@ -4632,7 +4634,7 @@ void ImpEditEngine::ImplExpandCompressedPortions( EditLine* pLine, ParaPortion* } } -void ImpEditEngine::UpdateOverflowingParaNum(sal_uInt32 nPaperHeight) +void ImpEditEngine::ImplUpdateOverflowingParaNum(sal_uInt32 nPaperHeight) { sal_uInt32 nY = 0; sal_uInt32 nPH; @@ -4643,11 +4645,39 @@ void ImpEditEngine::UpdateOverflowingParaNum(sal_uInt32 nPaperHeight) nY += nPH; if ( nY > nPaperHeight /*nCurTextHeight*/ ) // found first paragraph overflowing { - SetOverflowingParaNum( nPara ); - fprintf(stderr, "[CHAINING] Setting first overflowing para: %d\n", nPara); + mnOverflowingPara = nPara; + fprintf(stderr, "[CHAINING] Setting first overflowing #Para#: %d\n", nPara); + ImplUpdateOverflowingLineNum( nPaperHeight, nPara, nY-nPH); return; } } } +void ImpEditEngine::ImplUpdateOverflowingLineNum(sal_uInt32 nPaperHeight, + sal_uInt32 nOverflowingPara, + sal_uInt32 nHeightBeforeOverflowingPara) +{ + sal_uInt32 nY = nHeightBeforeOverflowingPara; + sal_uInt32 nLH; + + ParaPortion *pPara = GetParaPortions()[nOverflowingPara]; + + // Like UpdateOverflowingParaNum but for each line in the first + // overflowing paragraph. + for ( sal_Int32 nLine = 0; nLine < pPara->GetLines().Count(); nLine++ ) { + EditLine *pLine = pPara->GetLines()[nLine]; + nLH = pLine->GetHeight(); + nY += nLH; + if ( nY > nPaperHeight ) // found first line overflowing + { + mnOverflowingLine = nLine; + fprintf(stderr, "[CHAINING] Setting first overflowing -Line- to: %d\n", nLine); + return; + } + } + + + +} + /* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/svx/source/svdraw/svdotextdecomposition.cxx b/svx/source/svdraw/svdotextdecomposition.cxx index 6f29f26..bf81c09 100644 --- a/svx/source/svdraw/svdotextdecomposition.cxx +++ b/svx/source/svdraw/svdotextdecomposition.cxx @@ -762,7 +762,7 @@ void SdrTextObj::impCopyTextInTextObj2(SdrTextObj *pNextTextObj) const }; OverflowingText aOverflowingTxt = - OverflowingText("headTxt (On its own) ", NULL, "I'm Appended to #"); + OverflowingText("headTxt (On its own)", NULL, "I'm Appended to #"); if (mpOverflowingText) { // XXX: Not sure if necessary _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits