Reduce scopes and add some whitespaces.
Conflicts: svx/source/svdraw/svdotxat.cxx Change-Id: Ie1c94a4c241352c580d2509529919806f01ed6c0
This commit is contained in:
parent
ec1b82e682
commit
bc87f12c6a
1 changed files with 193 additions and 124 deletions
|
@ -57,136 +57,205 @@ const short PADDING_LENGTH_FOR_STYLE_FAMILY = 5;
|
||||||
const sal_Char PADDING_CHARACTER_FOR_STYLE_FAMILY = ' ';
|
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)
|
||||||
{
|
{
|
||||||
bool bFitToSize(IsFitToSize());
|
nMinWdt = GetMinTextFrameWidth();
|
||||||
bool bWdtGrow=bWdt && IsAutoGrowWidth();
|
nMaxWdt = GetMaxTextFrameWidth();
|
||||||
bool bHgtGrow=bHgt && IsAutoGrowHeight();
|
if (nMaxWdt == 0 || nMaxWdt > aMaxSiz.Width())
|
||||||
SdrTextAniKind eAniKind=GetTextAniKind();
|
nMaxWdt = aMaxSiz.Width();
|
||||||
SdrTextAniDirection eAniDir=GetTextAniDirection();
|
if (nMinWdt <= 0)
|
||||||
bool bScroll=eAniKind==SDRTEXTANI_SCROLL || eAniKind==SDRTEXTANI_ALTERNATE || eAniKind==SDRTEXTANI_SLIDE;
|
nMinWdt = 1;
|
||||||
bool bHScroll=bScroll && (eAniDir==SDRTEXTANI_LEFT || eAniDir==SDRTEXTANI_RIGHT);
|
|
||||||
bool bVScroll=bScroll && (eAniDir==SDRTEXTANI_UP || eAniDir==SDRTEXTANI_DOWN);
|
aNewSize.Width() = nMaxWdt;
|
||||||
if (!bFitToSize && (bWdtGrow || bHgtGrow))
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
pEdtOutl->SetMaxAutoPaperSize(aNewSize);
|
||||||
|
if (bWdtGrow)
|
||||||
{
|
{
|
||||||
Rectangle aR0(rR);
|
Size aSiz2(pEdtOutl->CalcTextSize());
|
||||||
long nHgt=0,nMinHgt=0,nMaxHgt=0;
|
nWdt = aSiz2.Width() + 1; // a little tolerance
|
||||||
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;
|
|
||||||
}
|
|
||||||
if (bHgtGrow)
|
if (bHgtGrow)
|
||||||
{
|
nHgt = aSiz2.Height() + 1; // a little tolerance
|
||||||
nMinHgt=GetMinTextFrameHeight();
|
}
|
||||||
nMaxHgt=GetMaxTextFrameHeight();
|
else
|
||||||
if (nMaxHgt==0 || nMaxHgt>aMaxSiz.Height()) nMaxHgt=aMaxSiz.Height();
|
{
|
||||||
if (nMinHgt<=0) nMinHgt=1;
|
nHgt = pEdtOutl->GetTextHeight() + 1; // a little tolerance
|
||||||
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;
|
|
||||||
|
|
||||||
bool bInEditMode = IsInEditMode();
|
|
||||||
|
|
||||||
if(!bInEditMode)
|
|
||||||
{
|
|
||||||
if (bHScroll) aSiz.Width()=0x0FFFFFFF; // don't break ticker text
|
|
||||||
if (bVScroll) aSiz.Height()=0x0FFFFFFF;
|
|
||||||
}
|
|
||||||
|
|
||||||
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;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
return false;
|
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());
|
||||||
|
}
|
||||||
|
|
||||||
|
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)
|
||||||
|
return false;
|
||||||
|
|
||||||
|
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)
|
||||||
|
{
|
||||||
|
// 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)
|
bool SdrTextObj::NbcAdjustTextFrameWidthAndHeight(bool bHgt, bool bWdt)
|
||||||
|
|
Loading…
Reference in a new issue