diff options
author | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-10-15 14:26:02 -0400 |
---|---|---|
committer | Kohei Yoshida <kohei.yoshida@collabora.com> | 2014-10-22 18:07:30 -0400 |
commit | bc87f12c6a045203d3bb3c0d0e38693c25efa1f9 (patch) | |
tree | 69b3af545b48a38bbeb1eed9dd5e29eb06fecf2d /svx/source/svdraw | |
parent | ec1b82e682ac613fe6de78a733ed3a00094a946f (diff) |
Reduce scopes and add some whitespaces.
Conflicts:
svx/source/svdraw/svdotxat.cxx
Change-Id: Ie1c94a4c241352c580d2509529919806f01ed6c0
Diffstat (limited to 'svx/source/svdraw')
-rw-r--r-- | svx/source/svdraw/svdotxat.cxx | 311 |
1 files changed, 190 insertions, 121 deletions
diff --git a/svx/source/svdraw/svdotxat.cxx b/svx/source/svdraw/svdotxat.cxx index 6ede596aa301..47e402e5fe59 100644 --- a/svx/source/svdraw/svdotxat.cxx +++ b/svx/source/svdraw/svdotxat.cxx @@ -57,136 +57,205 @@ const short PADDING_LENGTH_FOR_STYLE_FAMILY = 5; const sal_Char PADDING_CHARACTER_FOR_STYLE_FAMILY = ' '; } -bool SdrTextObj::AdjustTextFrameWidthAndHeight(Rectangle& rR, bool bHgt, bool bWdt) const +bool SdrTextObj::AdjustTextFrameWidthAndHeight( Rectangle& rR, bool bHgt, bool bWdt ) const { - if (bTextFrame && pModel!=NULL && !rR.IsEmpty()) + if (!bTextFrame) + // Not a text frame. Bail out. + return false; + + if (!pModel) + // Model doesn't exist. Bail out. + return false; + + if (rR.IsEmpty()) + // Empty rectangle. + return false; + + bool bFitToSize = IsFitToSize(); + if (bFitToSize) + return false; + + bool bWdtGrow = bWdt && IsAutoGrowWidth(); + bool bHgtGrow = bHgt && IsAutoGrowHeight(); + if (!bWdtGrow && !bHgtGrow) + // Not supposed to auto-adjust width or height. + return false; + + SdrTextAniKind eAniKind = GetTextAniKind(); + SdrTextAniDirection eAniDir = GetTextAniDirection(); + + bool bScroll = eAniKind == SDRTEXTANI_SCROLL || eAniKind == SDRTEXTANI_ALTERNATE || eAniKind == SDRTEXTANI_SLIDE; + bool bHScroll = bScroll && (eAniDir == SDRTEXTANI_LEFT || eAniDir == SDRTEXTANI_RIGHT); + bool bVScroll = bScroll && (eAniDir == SDRTEXTANI_UP || eAniDir == SDRTEXTANI_DOWN); + + Rectangle aOldRect = rR; + long nHgt = 0, nMinHgt = 0, nMaxHgt = 0; + long nWdt = 0, nMinWdt = 0, nMaxWdt = 0; + + Size aNewSize = rR.GetSize(); + aNewSize.Width()--; aNewSize.Height()--; + + Size aMaxSiz(100000, 100000); + Size aTmpSiz = pModel->GetMaxObjSize(); + + if (aTmpSiz.Width()) + aMaxSiz.Width() = aTmpSiz.Width(); + if (aTmpSiz.Height()) + aMaxSiz.Height() = aTmpSiz.Height(); + + if (bWdtGrow) + { + nMinWdt = GetMinTextFrameWidth(); + nMaxWdt = GetMaxTextFrameWidth(); + if (nMaxWdt == 0 || nMaxWdt > aMaxSiz.Width()) + nMaxWdt = aMaxSiz.Width(); + if (nMinWdt <= 0) + nMinWdt = 1; + + aNewSize.Width() = nMaxWdt; + } + + if (bHgtGrow) + { + nMinHgt = GetMinTextFrameHeight(); + nMaxHgt = GetMaxTextFrameHeight(); + if (nMaxHgt == 0 || nMaxHgt > aMaxSiz.Height()) + nMaxHgt = aMaxSiz.Height(); + if (nMinHgt <= 0) + nMinHgt = 1; + + aNewSize.Height() = nMaxHgt; + } + + long nHDist = GetTextLeftDistance() + GetTextRightDistance(); + long nVDist = GetTextUpperDistance() + GetTextLowerDistance(); + aNewSize.Width() -= nHDist; + aNewSize.Height() -= nVDist; + + if (aNewSize.Width() < 2) + aNewSize.Width() = 2; + if (aNewSize.Height() < 2) + aNewSize.Height() = 2; + + if (!IsInEditMode()) + { + if (bHScroll) + aNewSize.Width() = 0x0FFFFFFF; // don't break ticker text + if (bVScroll) + aNewSize.Height() = 0x0FFFFFFF; + } + + if (pEdtOutl) { - bool bFitToSize(IsFitToSize()); - bool bWdtGrow=bWdt && IsAutoGrowWidth(); - bool bHgtGrow=bHgt && IsAutoGrowHeight(); - SdrTextAniKind eAniKind=GetTextAniKind(); - SdrTextAniDirection eAniDir=GetTextAniDirection(); - bool bScroll=eAniKind==SDRTEXTANI_SCROLL || eAniKind==SDRTEXTANI_ALTERNATE || eAniKind==SDRTEXTANI_SLIDE; - bool bHScroll=bScroll && (eAniDir==SDRTEXTANI_LEFT || eAniDir==SDRTEXTANI_RIGHT); - bool bVScroll=bScroll && (eAniDir==SDRTEXTANI_UP || eAniDir==SDRTEXTANI_DOWN); - if (!bFitToSize && (bWdtGrow || bHgtGrow)) + pEdtOutl->SetMaxAutoPaperSize(aNewSize); + if (bWdtGrow) { - Rectangle aR0(rR); - long nHgt=0,nMinHgt=0,nMaxHgt=0; - long nWdt=0,nMinWdt=0,nMaxWdt=0; - Size aSiz(rR.GetSize()); aSiz.Width()--; aSiz.Height()--; - Size aMaxSiz(100000,100000); - Size aTmpSiz(pModel->GetMaxObjSize()); - if (aTmpSiz.Width()!=0) aMaxSiz.Width()=aTmpSiz.Width(); - if (aTmpSiz.Height()!=0) aMaxSiz.Height()=aTmpSiz.Height(); - if (bWdtGrow) - { - nMinWdt=GetMinTextFrameWidth(); - nMaxWdt=GetMaxTextFrameWidth(); - if (nMaxWdt==0 || nMaxWdt>aMaxSiz.Width()) nMaxWdt=aMaxSiz.Width(); - if (nMinWdt<=0) nMinWdt=1; - aSiz.Width()=nMaxWdt; - } + Size aSiz2(pEdtOutl->CalcTextSize()); + nWdt = aSiz2.Width() + 1; // a little tolerance if (bHgtGrow) - { - nMinHgt=GetMinTextFrameHeight(); - nMaxHgt=GetMaxTextFrameHeight(); - if (nMaxHgt==0 || nMaxHgt>aMaxSiz.Height()) nMaxHgt=aMaxSiz.Height(); - if (nMinHgt<=0) nMinHgt=1; - aSiz.Height()=nMaxHgt; - } - long nHDist=GetTextLeftDistance()+GetTextRightDistance(); - long nVDist=GetTextUpperDistance()+GetTextLowerDistance(); - aSiz.Width()-=nHDist; - aSiz.Height()-=nVDist; - if (aSiz.Width()<2) aSiz.Width()=2; - if (aSiz.Height()<2) aSiz.Height()=2; + nHgt = aSiz2.Height() + 1; // a little tolerance + } + else + { + nHgt = pEdtOutl->GetTextHeight() + 1; // a little tolerance + } + } + else + { + Outliner& rOutliner = ImpGetDrawOutliner(); + rOutliner.SetPaperSize(aNewSize); + rOutliner.SetUpdateMode(true); + // TODO: add the optimization with bPortionInfoChecked etc. here + OutlinerParaObject* pOutlinerParaObject = GetOutlinerParaObject(); + if (pOutlinerParaObject) + { + rOutliner.SetText(*pOutlinerParaObject); + rOutliner.SetFixedCellHeight(((const SdrTextFixedCellHeightItem&)GetMergedItem(SDRATTR_TEXT_USEFIXEDCELLHEIGHT)).GetValue()); + } - bool bInEditMode = IsInEditMode(); + if (bWdtGrow) + { + Size aSiz2(rOutliner.CalcTextSize()); + nWdt = aSiz2.Width() + 1; // a little tolerance + if (bHgtGrow) + nHgt = aSiz2.Height() + 1; // a little tolerance + } + else + { + nHgt = rOutliner.GetTextHeight() + 1; // a little tolerance + } + rOutliner.Clear(); + } - if(!bInEditMode) - { - if (bHScroll) aSiz.Width()=0x0FFFFFFF; // don't break ticker text - if (bVScroll) aSiz.Height()=0x0FFFFFFF; - } + if (nWdt < nMinWdt) + nWdt = nMinWdt; + if (nWdt > nMaxWdt) + nWdt = nMaxWdt; + nWdt += nHDist; + if (nWdt < 1) + nWdt = 1; // nHDist may be negative + if (nHgt < nMinHgt) + nHgt = nMinHgt; + if (nHgt > nMaxHgt) + nHgt = nMaxHgt; + nHgt += nVDist; + if (nHgt < 1) + nHgt = 1; // nVDist may be negative + long nWdtGrow = nWdt - (rR.Right() - rR.Left()); + long nHgtGrow = nHgt - (rR.Bottom() - rR.Top()); + + if (nWdtGrow == 0) + bWdtGrow = false; + if (nHgtGrow == 0) + bHgtGrow = false; + + if (!bWdtGrow && !bHgtGrow) + return false; + + if (bWdtGrow) + { + SdrTextHorzAdjust eHAdj = GetTextHorizontalAdjust(); - if(pEdtOutl) - { - pEdtOutl->SetMaxAutoPaperSize(aSiz); - if (bWdtGrow) { - Size aSiz2(pEdtOutl->CalcTextSize()); - nWdt=aSiz2.Width()+1; // a little tolerance - if (bHgtGrow) nHgt=aSiz2.Height()+1; // a little tolerance - } else { - nHgt=pEdtOutl->GetTextHeight()+1; // a little tolerance - } - } else { - Outliner& rOutliner=ImpGetDrawOutliner(); - rOutliner.SetPaperSize(aSiz); - rOutliner.SetUpdateMode(true); - // TODO: add the optimization with bPortionInfoChecked etc. here - OutlinerParaObject* pOutlinerParaObject = GetOutlinerParaObject(); - if ( pOutlinerParaObject != NULL ) - { - rOutliner.SetText(*pOutlinerParaObject); - rOutliner.SetFixedCellHeight(static_cast<const SdrTextFixedCellHeightItem&>(GetMergedItem(SDRATTR_TEXT_USEFIXEDCELLHEIGHT)).GetValue()); - } - if (bWdtGrow) - { - Size aSiz2(rOutliner.CalcTextSize()); - nWdt=aSiz2.Width()+1; // a little tolerance - if (bHgtGrow) nHgt=aSiz2.Height()+1; // a little tolerance - } else { - nHgt=rOutliner.GetTextHeight()+1; // a little tolerance - } - rOutliner.Clear(); - } - if (nWdt<nMinWdt) nWdt=nMinWdt; - if (nWdt>nMaxWdt) nWdt=nMaxWdt; - nWdt+=nHDist; - if (nWdt<1) nWdt=1; // nHDist may be negative - if (nHgt<nMinHgt) nHgt=nMinHgt; - if (nHgt>nMaxHgt) nHgt=nMaxHgt; - nHgt+=nVDist; - if (nHgt<1) nHgt=1; // nVDist may be negative - long nWdtGrow=nWdt-(rR.Right()-rR.Left()); - long nHgtGrow=nHgt-(rR.Bottom()-rR.Top()); - if (nWdtGrow==0) bWdtGrow=false; - if (nHgtGrow==0) bHgtGrow=false; - if (bWdtGrow || bHgtGrow) { - if (bWdtGrow) { - SdrTextHorzAdjust eHAdj=GetTextHorizontalAdjust(); - if (eHAdj==SDRTEXTHORZADJUST_LEFT) rR.Right()+=nWdtGrow; - else if (eHAdj==SDRTEXTHORZADJUST_RIGHT) rR.Left()-=nWdtGrow; - else { - long nWdtGrow2=nWdtGrow/2; - rR.Left()-=nWdtGrow2; - rR.Right()=rR.Left()+nWdt; - } - } - if (bHgtGrow) { - SdrTextVertAdjust eVAdj=GetTextVerticalAdjust(); - if (eVAdj==SDRTEXTVERTADJUST_TOP) rR.Bottom()+=nHgtGrow; - else if (eVAdj==SDRTEXTVERTADJUST_BOTTOM) rR.Top()-=nHgtGrow; - else { - long nHgtGrow2=nHgtGrow/2; - rR.Top()-=nHgtGrow2; - rR.Bottom()=rR.Top()+nHgt; - } - } - if (aGeo.nRotationAngle!=0) { - Point aD1(rR.TopLeft()); - aD1-=aR0.TopLeft(); - Point aD2(aD1); - RotatePoint(aD2,Point(),aGeo.nSin,aGeo.nCos); - aD2-=aD1; - rR.Move(aD2.X(),aD2.Y()); - } - return true; - } + if (eHAdj == SDRTEXTHORZADJUST_LEFT) + rR.Right() += nWdtGrow; + else if (eHAdj == SDRTEXTHORZADJUST_RIGHT) + rR.Left() -= nWdtGrow; + else + { + long nWdtGrow2 = nWdtGrow / 2; + rR.Left() -= nWdtGrow2; + rR.Right() = rR.Left() + nWdt; + } + } + + if (bHgtGrow) + { + SdrTextVertAdjust eVAdj = GetTextVerticalAdjust(); + + if (eVAdj == SDRTEXTVERTADJUST_TOP) + rR.Bottom() += nHgtGrow; + else if (eVAdj == SDRTEXTVERTADJUST_BOTTOM) + rR.Top() -= nHgtGrow; + else + { + long nHgtGrow2 = nHgtGrow / 2; + rR.Top() -= nHgtGrow2; + rR.Bottom() = rR.Top() + nHgt; } } - return false; + + if (aGeo.nRotationAngle) + { + // Object is rotated. + Point aD1(rR.TopLeft()); + aD1 -= aOldRect.TopLeft(); + Point aD2(aD1); + RotatePoint(aD2, Point(), aGeo.nSin, aGeo.nCos); + aD2 -= aD1; + rR.Move(aD2.X(), aD2.Y()); + } + + return true; } bool SdrTextObj::NbcAdjustTextFrameWidthAndHeight(bool bHgt, bool bWdt) |