diff options
Diffstat (limited to 'svx/source/svdraw/svdoedge.cxx')
-rw-r--r-- | svx/source/svdraw/svdoedge.cxx | 295 |
1 files changed, 137 insertions, 158 deletions
diff --git a/svx/source/svdraw/svdoedge.cxx b/svx/source/svdraw/svdoedge.cxx index 3ee7083729..821b6b5767 100644 --- a/svx/source/svdraw/svdoedge.cxx +++ b/svx/source/svdraw/svdoedge.cxx @@ -1,3 +1,4 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ /************************************************************************* * * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. @@ -76,23 +77,23 @@ void SdrObjConnection::ResetVars() bAutoCorner=FALSE; } -FASTBOOL SdrObjConnection::TakeGluePoint(SdrGluePoint& rGP, FASTBOOL bSetAbsPos) const +bool SdrObjConnection::TakeGluePoint(SdrGluePoint& rGP, bool bSetAbsPos) const { - FASTBOOL bRet=FALSE; + bool bRet = false; if (pObj!=NULL) { // Ein Obj muss schon angedockt sein! if (bAutoVertex) { rGP=pObj->GetVertexGluePoint(nConId); - bRet=TRUE; + bRet = true; } else if (bAutoCorner) { rGP=pObj->GetCornerGluePoint(nConId); - bRet=TRUE; + bRet = true; } else { const SdrGluePointList* pGPL=pObj->GetGluePointList(); if (pGPL!=NULL) { USHORT nNum=pGPL->FindGluePoint(nConId); if (nNum!=SDRGLUEPOINT_NOTFOUND) { rGP=(*pGPL)[nNum]; - bRet=TRUE; + bRet = true; } } } @@ -129,10 +130,10 @@ USHORT SdrEdgeInfoRec::ImpGetPolyIdx(SdrEdgeLineCode eLineCode, const XPolygon& return 0; } -FASTBOOL SdrEdgeInfoRec::ImpIsHorzLine(SdrEdgeLineCode eLineCode, const XPolygon& rXP) const +bool SdrEdgeInfoRec::ImpIsHorzLine(SdrEdgeLineCode eLineCode, const XPolygon& rXP) const { USHORT nIdx=ImpGetPolyIdx(eLineCode,rXP); - FASTBOOL bHorz=nAngle1==0 || nAngle1==18000; + bool bHorz=nAngle1==0 || nAngle1==18000; if (eLineCode==OBJ2LINE2 || eLineCode==OBJ2LINE3) { nIdx=rXP.GetPointCount()-nIdx; // #36314# bHorz=nAngle2==0 || nAngle2==18000; // #52000# @@ -373,7 +374,7 @@ void SdrEdgeObj::TakeObjInfo(SdrObjTransformInfoRec& rInfo) const rInfo.bGradientAllowed = FALSE; rInfo.bShearAllowed =FALSE; rInfo.bEdgeRadiusAllowed=FALSE; - FASTBOOL bCanConv=!HasText() || ImpCanConvTextToCurve(); + bool bCanConv=!HasText() || ImpCanConvTextToCurve(); rInfo.bCanConvToPath=bCanConv; rInfo.bCanConvToPoly=bCanConv; rInfo.bCanConvToContour = (rInfo.bCanConvToPoly || LineGeometryUsageIsNecessary()); @@ -414,9 +415,9 @@ void SdrEdgeObj::TakeUnrotatedSnapRect(Rectangle& rRect) const rRect=GetSnapRect(); } -FASTBOOL SdrEdgeObj::IsNode() const +bool SdrEdgeObj::IsNode() const { - return TRUE; + return true; } SdrGluePoint SdrEdgeObj::GetVertexGluePoint(USHORT nNum) const @@ -462,12 +463,12 @@ SdrGluePointList* SdrEdgeObj::ForceGluePointList() return NULL; // Keine benutzerdefinierten Klebepunkte fuer Verbinder #31671# } -FASTBOOL SdrEdgeObj::IsEdge() const +bool SdrEdgeObj::IsEdge() const { - return TRUE; + return true; } -void SdrEdgeObj::ConnectToNode(FASTBOOL bTail1, SdrObject* pObj) +void SdrEdgeObj::ConnectToNode(bool bTail1, SdrObject* pObj) { SdrObjConnection& rCon=GetConnection(bTail1); DisconnectFromNode(bTail1); @@ -478,7 +479,7 @@ void SdrEdgeObj::ConnectToNode(FASTBOOL bTail1, SdrObject* pObj) } } -void SdrEdgeObj::DisconnectFromNode(FASTBOOL bTail1) +void SdrEdgeObj::DisconnectFromNode(bool bTail1) { SdrObjConnection& rCon=GetConnection(bTail1); if (rCon.pObj!=NULL) { @@ -487,16 +488,16 @@ void SdrEdgeObj::DisconnectFromNode(FASTBOOL bTail1) } } -SdrObject* SdrEdgeObj::GetConnectedNode(FASTBOOL bTail1) const +SdrObject* SdrEdgeObj::GetConnectedNode(bool bTail1) const { SdrObject* pObj=GetConnection(bTail1).pObj; if (pObj!=NULL && (pObj->GetPage()!=pPage || !pObj->IsInserted())) pObj=NULL; return pObj; } -FASTBOOL SdrEdgeObj::CheckNodeConnection(FASTBOOL bTail1) const +bool SdrEdgeObj::CheckNodeConnection(bool bTail1) const { - FASTBOOL bRet=FALSE; + bool bRet = false; const SdrObjConnection& rCon=GetConnection(bTail1); USHORT nPtAnz=pEdgeTrack->GetPointCount(); if (rCon.pObj!=NULL && rCon.pObj->GetPage()==pPage && nPtAnz!=0) { @@ -519,7 +520,7 @@ FASTBOOL SdrEdgeObj::CheckNodeConnection(FASTBOOL bTail1) const return bRet; } -void SdrEdgeObj::ImpSetTailPoint(FASTBOOL bTail1, const Point& rPt) +void SdrEdgeObj::ImpSetTailPoint(bool bTail1, const Point& rPt) { USHORT nPtAnz=pEdgeTrack->GetPointCount(); if (nPtAnz==0) { @@ -605,11 +606,11 @@ USHORT SdrEdgeObj::ImpCalcEscAngle(SdrObject* pObj, const Point& rPt) const long dyo=rPt.Y()-aR.Top(); long dxr=aR.Right()-rPt.X(); long dyu=aR.Bottom()-rPt.Y(); - FASTBOOL bxMitt=Abs(dxl-dxr)<2; - FASTBOOL byMitt=Abs(dyo-dyu)<2; + bool bxMitt=Abs(dxl-dxr)<2; + bool byMitt=Abs(dyo-dyu)<2; long dx=Min(dxl,dxr); long dy=Min(dyo,dyu); - FASTBOOL bDiag=Abs(dx-dy)<2; + bool bDiag=Abs(dx-dy)<2; if (bxMitt && byMitt) return SDRESC_ALL; // In der Mitte if (bDiag) { // diagonal USHORT nRet=0; @@ -635,7 +636,7 @@ USHORT SdrEdgeObj::ImpCalcEscAngle(SdrObject* pObj, const Point& rPt) const } } -FASTBOOL SdrEdgeObj::ImpStripPolyPoints(XPolygon& /*rXP*/) const +bool SdrEdgeObj::ImpStripPolyPoints(XPolygon& /*rXP*/) const { // fehlende Implementation !!! return FALSE; @@ -645,10 +646,10 @@ XPolygon SdrEdgeObj::ImpCalcObjToCenter(const Point& rStPt, long nEscAngle, cons { XPolygon aXP; aXP.Insert(XPOLY_APPEND,rStPt,XPOLY_NORMAL); - FASTBOOL bRts=nEscAngle==0; - FASTBOOL bObn=nEscAngle==9000; - FASTBOOL bLks=nEscAngle==18000; - FASTBOOL bUnt=nEscAngle==27000; + bool bRts=nEscAngle==0; + bool bObn=nEscAngle==9000; + bool bLks=nEscAngle==18000; + bool bUnt=nEscAngle==27000; Point aP1(rStPt); // erstmal den Pflichtabstand if (bLks) aP1.X()=rRect.Left(); @@ -656,43 +657,40 @@ XPolygon SdrEdgeObj::ImpCalcObjToCenter(const Point& rStPt, long nEscAngle, cons if (bObn) aP1.Y()=rRect.Top(); if (bUnt) aP1.Y()=rRect.Bottom(); - FASTBOOL bFinish=FALSE; - if (!bFinish) { - Point aP2(aP1); // Und nun den Pflichtabstand ggf. bis auf Meetinghoehe erweitern - if (bLks && rMeeting.X()<=aP2.X()) aP2.X()=rMeeting.X(); - if (bRts && rMeeting.X()>=aP2.X()) aP2.X()=rMeeting.X(); - if (bObn && rMeeting.Y()<=aP2.Y()) aP2.Y()=rMeeting.Y(); - if (bUnt && rMeeting.Y()>=aP2.Y()) aP2.Y()=rMeeting.Y(); - aXP.Insert(XPOLY_APPEND,aP2,XPOLY_NORMAL); - - Point aP3(aP2); - if ((bLks && rMeeting.X()>aP2.X()) || (bRts && rMeeting.X()<aP2.X())) { // Aussenrum - if (rMeeting.Y()<aP2.Y()) { - aP3.Y()=rRect.Top(); - if (rMeeting.Y()<aP3.Y()) aP3.Y()=rMeeting.Y(); - } else { - aP3.Y()=rRect.Bottom(); - if (rMeeting.Y()>aP3.Y()) aP3.Y()=rMeeting.Y(); - } + Point aP2(aP1); // Und nun den Pflichtabstand ggf. bis auf Meetinghoehe erweitern + if (bLks && rMeeting.X()<=aP2.X()) aP2.X()=rMeeting.X(); + if (bRts && rMeeting.X()>=aP2.X()) aP2.X()=rMeeting.X(); + if (bObn && rMeeting.Y()<=aP2.Y()) aP2.Y()=rMeeting.Y(); + if (bUnt && rMeeting.Y()>=aP2.Y()) aP2.Y()=rMeeting.Y(); + aXP.Insert(XPOLY_APPEND,aP2,XPOLY_NORMAL); + + Point aP3(aP2); + if ((bLks && rMeeting.X()>aP2.X()) || (bRts && rMeeting.X()<aP2.X())) { // Aussenrum + if (rMeeting.Y()<aP2.Y()) { + aP3.Y()=rRect.Top(); + if (rMeeting.Y()<aP3.Y()) aP3.Y()=rMeeting.Y(); + } else { + aP3.Y()=rRect.Bottom(); + if (rMeeting.Y()>aP3.Y()) aP3.Y()=rMeeting.Y(); + } + aXP.Insert(XPOLY_APPEND,aP3,XPOLY_NORMAL); + if (aP3.Y()!=rMeeting.Y()) { + aP3.X()=rMeeting.X(); aXP.Insert(XPOLY_APPEND,aP3,XPOLY_NORMAL); - if (aP3.Y()!=rMeeting.Y()) { - aP3.X()=rMeeting.X(); - aXP.Insert(XPOLY_APPEND,aP3,XPOLY_NORMAL); - } } - if ((bObn && rMeeting.Y()>aP2.Y()) || (bUnt && rMeeting.Y()<aP2.Y())) { // Aussenrum - if (rMeeting.X()<aP2.X()) { - aP3.X()=rRect.Left(); - if (rMeeting.X()<aP3.X()) aP3.X()=rMeeting.X(); - } else { - aP3.X()=rRect.Right(); - if (rMeeting.X()>aP3.X()) aP3.X()=rMeeting.X(); - } + } + if ((bObn && rMeeting.Y()>aP2.Y()) || (bUnt && rMeeting.Y()<aP2.Y())) { // Aussenrum + if (rMeeting.X()<aP2.X()) { + aP3.X()=rRect.Left(); + if (rMeeting.X()<aP3.X()) aP3.X()=rMeeting.X(); + } else { + aP3.X()=rRect.Right(); + if (rMeeting.X()>aP3.X()) aP3.X()=rMeeting.X(); + } + aXP.Insert(XPOLY_APPEND,aP3,XPOLY_NORMAL); + if (aP3.X()!=rMeeting.X()) { + aP3.Y()=rMeeting.Y(); aXP.Insert(XPOLY_APPEND,aP3,XPOLY_NORMAL); - if (aP3.X()!=rMeeting.X()) { - aP3.Y()=rMeeting.Y(); - aXP.Insert(XPOLY_APPEND,aP3,XPOLY_NORMAL); - } } } #ifdef DBG_UTIL @@ -724,8 +722,8 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const XPolygon& rTrack0, SdrObjConnection& aPt2=aOutRect.BottomRight(); } } - FASTBOOL bCon1=rCon1.pObj!=NULL && rCon1.pObj->GetPage()==pPage && rCon1.pObj->IsInserted(); - FASTBOOL bCon2=rCon2.pObj!=NULL && rCon2.pObj->GetPage()==pPage && rCon2.pObj->IsInserted(); + bool bCon1=rCon1.pObj!=NULL && rCon1.pObj->GetPage()==pPage && rCon1.pObj->IsInserted(); + bool bCon2=rCon2.pObj!=NULL && rCon2.pObj->GetPage()==pPage && rCon2.pObj->IsInserted(); const SfxItemSet& rSet = GetObjectItemSet(); if (bCon1) { @@ -779,8 +777,8 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const XPolygon& rTrack0, SdrObjConnection& XPolygon aBestXP; ULONG nBestQual=0xFFFFFFFF; SdrEdgeInfoRec aBestInfo; - FASTBOOL bAuto1=bCon1 && rCon1.bBestVertex; - FASTBOOL bAuto2=bCon2 && rCon2.bBestVertex; + bool bAuto1=bCon1 && rCon1.bBestVertex; + bool bAuto2=bCon2 && rCon2.bBestVertex; if (bAuto1) rCon1.bAutoVertex=TRUE; if (bAuto2) rCon2.bAutoVertex=TRUE; USHORT nBestAuto1=0; @@ -833,19 +831,19 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const Point& rPt1, long nAngle1, const Rec ULONG* pnQuality, SdrEdgeInfoRec* pInfo) const { SdrEdgeKind eKind=((SdrEdgeKindItem&)(GetObjectItem(SDRATTR_EDGEKIND))).GetValue(); - FASTBOOL bRts1=nAngle1==0; - FASTBOOL bObn1=nAngle1==9000; - FASTBOOL bLks1=nAngle1==18000; - FASTBOOL bUnt1=nAngle1==27000; - FASTBOOL bHor1=bLks1 || bRts1; - FASTBOOL bVer1=bObn1 || bUnt1; - FASTBOOL bRts2=nAngle2==0; - FASTBOOL bObn2=nAngle2==9000; - FASTBOOL bLks2=nAngle2==18000; - FASTBOOL bUnt2=nAngle2==27000; - FASTBOOL bHor2=bLks2 || bRts2; - FASTBOOL bVer2=bObn2 || bUnt2; - FASTBOOL bInfo=pInfo!=NULL; + bool bRts1=nAngle1==0; + bool bObn1=nAngle1==9000; + bool bLks1=nAngle1==18000; + bool bUnt1=nAngle1==27000; + bool bHor1=bLks1 || bRts1; + bool bVer1=bObn1 || bUnt1; + bool bRts2=nAngle2==0; + bool bObn2=nAngle2==9000; + bool bLks2=nAngle2==18000; + bool bUnt2=nAngle2==27000; + bool bHor2=bLks2 || bRts2; + bool bVer2=bObn2 || bUnt2; + bool bInfo=pInfo!=NULL; if (bInfo) { pInfo->cOrthoForm=0; pInfo->nAngle1=nAngle1; @@ -861,8 +859,6 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const Point& rPt1, long nAngle1, const Rec Rectangle aBewareRect1(rBewareRect1); Rectangle aBewareRect2(rBewareRect2); Point aMeeting((aPt1.X()+aPt2.X()+1)/2,(aPt1.Y()+aPt2.Y()+1)/2); - FASTBOOL bMeetingXMid=TRUE; - FASTBOOL bMeetingYMid=TRUE; if (eKind==SDREDGE_ONELINE) { XPolygon aXP(2); aXP[0]=rPt1; @@ -908,7 +904,6 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const Point& rPt1, long nAngle1, const Rec return aXP; } USHORT nIntersections=0; - FASTBOOL bForceMeeting=FALSE; // Muss die Linie durch den MeetingPoint laufen? { Point aC1(aBewareRect1.Center()); Point aC2(aBewareRect2.Center()); @@ -946,10 +941,10 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const Point& rPt1, long nAngle1, const Rec long nXMax=Max(aBewareRect1.Right(),aBewareRect2.Right()); long nYMin=Min(aBewareRect1.Top(),aBewareRect2.Top()); long nYMax=Max(aBewareRect1.Bottom(),aBewareRect2.Bottom()); - //FASTBOOL bBoundOverlap=aBoundRect1.Right()>aBoundRect2.Left() && aBoundRect1.Left()<aBoundRect2.Right() && - aBoundRect1.Bottom()>aBoundRect2.Top() && aBoundRect1.Top()<aBoundRect2.Bottom(); - FASTBOOL bBewareOverlap=aBewareRect1.Right()>aBewareRect2.Left() && aBewareRect1.Left()<aBewareRect2.Right() && - aBewareRect1.Bottom()>aBewareRect2.Top() && aBewareRect1.Top()<aBewareRect2.Bottom(); + //bool bBoundOverlap=aBoundRect1.Right()>aBoundRect2.Left() && aBoundRect1.Left()<aBoundRect2.Right() && + // aBoundRect1.Bottom()>aBoundRect2.Top() && aBoundRect1.Top()<aBoundRect2.Bottom(); + bool bBewareOverlap=aBewareRect1.Right()>aBewareRect2.Left() && aBewareRect1.Left()<aBewareRect2.Right() && + aBewareRect1.Bottom()>aBewareRect2.Top() && aBewareRect1.Top()<aBewareRect2.Bottom(); unsigned nMainCase=3; if (nAngle1==nAngle2) nMainCase=1; else if ((bHor1 && bHor2) || (bVer1 && bVer2)) nMainCase=2; @@ -957,29 +952,24 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const Point& rPt1, long nAngle1, const Rec if (bVer1) aMeeting.X()=(aPt1.X()+aPt2.X()+1)/2; // ist hier besser, als der if (bHor1) aMeeting.Y()=(aPt1.Y()+aPt2.Y()+1)/2; // Mittelpunkt des Freiraums // bX1Ok bedeutet, dass die Vertikale, die aus Obj1 austritt, keinen Konflikt mit Obj2 bildet, ... - FASTBOOL bX1Ok=aPt1.X()<=aBewareRect2.Left() || aPt1.X()>=aBewareRect2.Right(); - FASTBOOL bX2Ok=aPt2.X()<=aBewareRect1.Left() || aPt2.X()>=aBewareRect1.Right(); - FASTBOOL bY1Ok=aPt1.Y()<=aBewareRect2.Top() || aPt1.Y()>=aBewareRect2.Bottom(); - FASTBOOL bY2Ok=aPt2.Y()<=aBewareRect1.Top() || aPt2.Y()>=aBewareRect1.Bottom(); + bool bX1Ok=aPt1.X()<=aBewareRect2.Left() || aPt1.X()>=aBewareRect2.Right(); + bool bX2Ok=aPt2.X()<=aBewareRect1.Left() || aPt2.X()>=aBewareRect1.Right(); + bool bY1Ok=aPt1.Y()<=aBewareRect2.Top() || aPt1.Y()>=aBewareRect2.Bottom(); + bool bY2Ok=aPt2.Y()<=aBewareRect1.Top() || aPt2.Y()>=aBewareRect1.Bottom(); if (bLks1 && (bY1Ok || aBewareRect1.Left()<aBewareRect2.Right()) && (bY2Ok || aBewareRect2.Left()<aBewareRect1.Right())) { aMeeting.X()=nXMin; - bMeetingXMid=FALSE; } if (bRts1 && (bY1Ok || aBewareRect1.Right()>aBewareRect2.Left()) && (bY2Ok || aBewareRect2.Right()>aBewareRect1.Left())) { aMeeting.X()=nXMax; - bMeetingXMid=FALSE; } if (bObn1 && (bX1Ok || aBewareRect1.Top()<aBewareRect2.Bottom()) && (bX2Ok || aBewareRect2.Top()<aBewareRect1.Bottom())) { aMeeting.Y()=nYMin; - bMeetingYMid=FALSE; } if (bUnt1 && (bX1Ok || aBewareRect1.Bottom()>aBewareRect2.Top()) && (bX2Ok || aBewareRect2.Bottom()>aBewareRect1.Top())) { aMeeting.Y()=nYMax; - bMeetingYMid=FALSE; } } else if (nMainCase==2) { // Fall 2: - bForceMeeting=TRUE; if (bHor1) { // beide waagerecht /* 9 Moeglichkeiten: ù ù ù */ /* 2.1 Gegenueber, Ueberschneidung à ´ ù */ @@ -1019,22 +1009,21 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const Point& rPt1, long nAngle1, const Rec // Ueberschneidung der BewareRects ohne Ueberschneidung der // Boundrects wenn die Linienaustritte sonst das BewareRect // des jeweils anderen Objekts verletzen wuerden. - FASTBOOL bCase29Direct=FALSE; - FASTBOOL bCase29=aBewR1.Right()>aBewR2.Left(); + bool bCase29Direct = false; + bool bCase29=aBewR1.Right()>aBewR2.Left(); if (aBndR1.Right()<=aBndR2.Left()) { // Fall 2.9 und keine Boundrectueberschneidung if ((aPt1.Y()>aBewareRect2.Top() && aPt1.Y()<aBewareRect2.Bottom()) || (aPt2.Y()>aBewareRect1.Top() && aPt2.Y()<aBewareRect1.Bottom())) { - bCase29Direct=TRUE; + bCase29Direct = true; } } if (!bCase29Direct) { - FASTBOOL bObenLang=Abs(nYMin-aMeeting.Y())<=Abs(nYMax-aMeeting.Y()); + bool bObenLang=Abs(nYMin-aMeeting.Y())<=Abs(nYMax-aMeeting.Y()); if (bObenLang) { aMeeting.Y()=nYMin; } else { aMeeting.Y()=nYMax; } - bMeetingYMid=FALSE; if (bCase29) { // und nun noch dafuer sorgen, dass das // umzingelte Obj nicht durchquert wird @@ -1043,7 +1032,6 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const Point& rPt1, long nAngle1, const Rec } else { aMeeting.X()=aBewR1.Left(); } - bMeetingXMid=FALSE; } } else { // Direkte Verbindung (3-Linien Z-Verbindung), da @@ -1079,22 +1067,21 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const Point& rPt1, long nAngle1, const Rec // Ueberschneidung der BewareRects ohne Ueberschneidung der // Boundrects wenn die Linienaustritte sonst das BewareRect // des jeweils anderen Objekts verletzen wuerden. - FASTBOOL bCase29Direct=FALSE; - FASTBOOL bCase29=aBewR1.Bottom()>aBewR2.Top(); + bool bCase29Direct = false; + bool bCase29=aBewR1.Bottom()>aBewR2.Top(); if (aBndR1.Bottom()<=aBndR2.Top()) { // Fall 2.9 und keine Boundrectueberschneidung if ((aPt1.X()>aBewareRect2.Left() && aPt1.X()<aBewareRect2.Right()) || (aPt2.X()>aBewareRect1.Left() && aPt2.X()<aBewareRect1.Right())) { - bCase29Direct=TRUE; + bCase29Direct = true; } } if (!bCase29Direct) { - FASTBOOL bLinksLang=Abs(nXMin-aMeeting.X())<=Abs(nXMax-aMeeting.X()); + bool bLinksLang=Abs(nXMin-aMeeting.X())<=Abs(nXMax-aMeeting.X()); if (bLinksLang) { aMeeting.X()=nXMin; } else { aMeeting.X()=nXMax; } - bMeetingXMid=FALSE; if (bCase29) { // und nun noch dafuer sorgen, dass das // umzingelte Obj nicht durchquert wird @@ -1103,7 +1090,6 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const Point& rPt1, long nAngle1, const Rec } else { aMeeting.Y()=aBewR1.Top(); } - bMeetingYMid=FALSE; } } else { // Direkte Verbindung (3-Linien Z-Verbindung), da @@ -1174,9 +1160,6 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const Point& rPt1, long nAngle1, const Rec (((bRts2 && aTmpR2.Right ()<=aPt1.X()) || (bLks2 && aTmpR2.Left()>=aPt1.X())) && ((bUnt1 && aTmpR1.Bottom()<=aPt2.Y()) || (bObn1 && aTmpR1.Top ()>=aPt2.Y())))) { // Fall 3.2 trifft zu: Verbindung mit lediglich 2 Linien - bForceMeeting=TRUE; - bMeetingXMid=FALSE; - bMeetingYMid=FALSE; if (bHor1) { aMeeting.X()=aPt2.X(); aMeeting.Y()=aPt1.Y(); @@ -1196,11 +1179,10 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const Point& rPt1, long nAngle1, const Rec ((bUnt1 && aBewareRect1.Bottom()>aBewareRect2.Top ()) || (bObn1 && aBewareRect1.Top ()<aBewareRect2.Bottom())))) { // Fall 3.3 - bForceMeeting=TRUE; - if (bRts1 || bRts2) { aMeeting.X()=nXMax; bMeetingXMid=FALSE; } - if (bLks1 || bLks2) { aMeeting.X()=nXMin; bMeetingXMid=FALSE; } - if (bUnt1 || bUnt2) { aMeeting.Y()=nYMax; bMeetingYMid=FALSE; } - if (bObn1 || bObn2) { aMeeting.Y()=nYMin; bMeetingYMid=FALSE; } + if (bRts1 || bRts2) { aMeeting.X()=nXMax; } + if (bLks1 || bLks2) { aMeeting.X()=nXMin; } + if (bUnt1 || bUnt2) { aMeeting.Y()=nYMax; } + if (bObn1 || bObn2) { aMeeting.Y()=nYMin; } } } } @@ -1215,15 +1197,13 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const Point& rPt1, long nAngle1, const Rec } Point aEP1(aXP1[nXP1Anz-1]); Point aEP2(aXP2[nXP2Anz-1]); - FASTBOOL bInsMeetingPoint=aEP1.X()!=aEP2.X() && aEP1.Y()!=aEP2.Y(); - FASTBOOL bHorzE1=aEP1.Y()==aXP1[nXP1Anz-2].Y(); // letzte Linie von XP1 horizontal? - FASTBOOL bHorzE2=aEP2.Y()==aXP2[nXP2Anz-2].Y(); // letzte Linie von XP2 horizontal? - if (aEP1==aEP2 && (bHorzE1 && bHorzE2 && aEP1.Y()==aEP2.Y()) || (!bHorzE1 && !bHorzE2 && aEP1.X()==aEP2.X())) { + bool bInsMeetingPoint=aEP1.X()!=aEP2.X() && aEP1.Y()!=aEP2.Y(); + bool bHorzE1=aEP1.Y()==aXP1[nXP1Anz-2].Y(); // letzte Linie von XP1 horizontal? + bool bHorzE2=aEP2.Y()==aXP2[nXP2Anz-2].Y(); // letzte Linie von XP2 horizontal? + if (aEP1==aEP2 && ((bHorzE1 && bHorzE2 && aEP1.Y()==aEP2.Y()) || (!bHorzE1 && !bHorzE2 && aEP1.X()==aEP2.X()))) { // Sonderbehandlung fuer 'I'-Verbinder nXP1Anz--; aXP1.Remove(nXP1Anz,1); nXP2Anz--; aXP2.Remove(nXP2Anz,1); - bMeetingXMid=FALSE; - bMeetingYMid=FALSE; } if (bInsMeetingPoint) { aXP1.Insert(XPOLY_APPEND,aMeeting,XPOLY_NORMAL); @@ -1303,12 +1283,12 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const Point& rPt1, long nAngle1, const Rec if (pnQuality!=NULL) { ULONG nQual=0; ULONG nQual0=nQual; // Ueberlaeufe vorbeugen - FASTBOOL bOverflow=FALSE; + bool bOverflow = false; Point aPt0(aXP1[0]); for (USHORT nPntNum=1; nPntNum<nPntAnz; nPntNum++) { Point aPt1b(aXP1[nPntNum]); nQual+=Abs(aPt1b.X()-aPt0.X())+Abs(aPt1b.Y()-aPt0.Y()); - if (nQual<nQual0) bOverflow=TRUE; + if (nQual<nQual0) bOverflow = true; nQual0=nQual; aPt0=aPt1b; } @@ -1332,7 +1312,7 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const Point& rPt1, long nAngle1, const Rec if (nTmp>=3) { nQual0=nQual; nQual+=(ULONG)nTmp*0x01000000; - if (nQual<nQual0 || nTmp>15) bOverflow=TRUE; + if (nQual<nQual0 || nTmp>15) bOverflow = true; } if (nPntAnz>=2) { // Austrittswinkel nochmal pruefen Point aP1(aXP1[1]); aP1-=aXP1[0]; @@ -1353,9 +1333,9 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const Point& rPt1, long nAngle1, const Rec for (USHORT i=0; i<nPntAnz; i++) { Point aPt1b(aXP1[i]); - FASTBOOL b1=aPt1b.X()>aBewareRect1.Left() && aPt1b.X()<aBewareRect1.Right() && + bool b1=aPt1b.X()>aBewareRect1.Left() && aPt1b.X()<aBewareRect1.Right() && aPt1b.Y()>aBewareRect1.Top() && aPt1b.Y()<aBewareRect1.Bottom(); - FASTBOOL b2=aPt1b.X()>aBewareRect2.Left() && aPt1b.X()<aBewareRect2.Right() && + bool b2=aPt1b.X()>aBewareRect2.Left() && aPt1b.X()<aBewareRect2.Right() && aPt1b.Y()>aBewareRect2.Top() && aPt1b.Y()<aBewareRect2.Bottom(); USHORT nInt0=nIntersections; if (i==0 || i==nPntAnz-1) { @@ -1387,7 +1367,7 @@ XPolygon SdrEdgeObj::ImpCalcEdgeTrack(const Point& rPt1, long nAngle1, const Rec if (nPntAnz<=1) nIntersections++; nQual0=nQual; nQual+=(ULONG)nIntersections*0x10000000; - if (nQual<nQual0 || nIntersections>15) bOverflow=TRUE; + if (nQual<nQual0 || nIntersections>15) bOverflow = true; if (bOverflow || nQual==0xFFFFFFFF) nQual=0xFFFFFFFE; *pnQuality=nQual; @@ -1549,14 +1529,14 @@ je Objekt variiert von 0-3: 'C': n 0-3 0-3 = 1+U+1 */ -void __EXPORT SdrEdgeObj::Notify(SfxBroadcaster& rBC, const SfxHint& rHint) +void SdrEdgeObj::Notify(SfxBroadcaster& rBC, const SfxHint& rHint) { SfxSimpleHint* pSimple=PTR_CAST(SfxSimpleHint,&rHint); ULONG nId=pSimple==0 ? 0 : pSimple->GetId(); - FASTBOOL bDataChg=nId==SFX_HINT_DATACHANGED; - FASTBOOL bDying=nId==SFX_HINT_DYING; - FASTBOOL bObj1=aCon1.pObj!=NULL && aCon1.pObj->GetBroadcaster()==&rBC; - FASTBOOL bObj2=aCon2.pObj!=NULL && aCon2.pObj->GetBroadcaster()==&rBC; + bool bDataChg=nId==SFX_HINT_DATACHANGED; + bool bDying=nId==SFX_HINT_DYING; + bool bObj1=aCon1.pObj!=NULL && aCon1.pObj->GetBroadcaster()==&rBC; + bool bObj2=aCon2.pObj!=NULL && aCon2.pObj->GetBroadcaster()==&rBC; if (bDying && (bObj1 || bObj2)) { // #35605# Dying vorher abfangen, damit AttrObj nicht // wg. vermeintlicher Vorlagenaenderung rumbroadcastet @@ -2004,7 +1984,7 @@ basegfx::B2DPolygon SdrEdgeObj::ImplAddConnectorOverlay(SdrDragMethod& rDragMeth return aResult; } -FASTBOOL SdrEdgeObj::BegCreate(SdrDragStat& rDragStat) +bool SdrEdgeObj::BegCreate(SdrDragStat& rDragStat) { rDragStat.SetNoSnap(TRUE); pEdgeTrack->SetPointCount(2); @@ -2018,7 +1998,7 @@ FASTBOOL SdrEdgeObj::BegCreate(SdrDragStat& rDragStat) return TRUE; } -FASTBOOL SdrEdgeObj::MovCreate(SdrDragStat& rDragStat) +bool SdrEdgeObj::MovCreate(SdrDragStat& rDragStat) { USHORT nMax=pEdgeTrack->GetPointCount(); (*pEdgeTrack)[nMax-1]=rDragStat.GetNow(); @@ -2034,9 +2014,9 @@ FASTBOOL SdrEdgeObj::MovCreate(SdrDragStat& rDragStat) return TRUE; } -FASTBOOL SdrEdgeObj::EndCreate(SdrDragStat& rDragStat, SdrCreateCmd eCmd) +bool SdrEdgeObj::EndCreate(SdrDragStat& rDragStat, SdrCreateCmd eCmd) { - FASTBOOL bOk=(eCmd==SDRCREATE_FORCEEND || rDragStat.GetPointAnz()>=2); + bool bOk=(eCmd==SDRCREATE_FORCEEND || rDragStat.GetPointAnz()>=2); if (bOk) { ConnectToNode(TRUE,aCon1.pObj); ConnectToNode(FALSE,aCon2.pObj); @@ -2049,7 +2029,7 @@ FASTBOOL SdrEdgeObj::EndCreate(SdrDragStat& rDragStat, SdrCreateCmd eCmd) return bOk; } -FASTBOOL SdrEdgeObj::BckCreate(SdrDragStat& rDragStat) +bool SdrEdgeObj::BckCreate(SdrDragStat& rDragStat) { if (rDragStat.GetView()!=NULL) { rDragStat.GetView()->HideConnectMarker(); @@ -2076,7 +2056,7 @@ Pointer SdrEdgeObj::GetCreatePointer() const return Pointer(POINTER_DRAW_CONNECT); } -FASTBOOL SdrEdgeObj::ImpFindConnector(const Point& rPt, const SdrPageView& rPV, SdrObjConnection& rCon, const SdrEdgeObj* pThis, OutputDevice* pOut) +bool SdrEdgeObj::ImpFindConnector(const Point& rPt, const SdrPageView& rPV, SdrObjConnection& rCon, const SdrEdgeObj* pThis, OutputDevice* pOut) { rCon.ResetVars(); if (pOut==NULL) pOut=rPV.GetView().GetFirstOutputDevice(); // GetWin(0); @@ -2095,11 +2075,9 @@ FASTBOOL SdrEdgeObj::ImpFindConnector(const Point& rPt, const SdrPageView& rPV, aMouseRect.Bottom()+=aHalfConSiz.Height(); USHORT nBoundHitTol=(USHORT)aHalfConSiz.Width()/2; if (nBoundHitTol==0) nBoundHitTol=1; ULONG no=pOL->GetObjCount(); - FASTBOOL bFnd=FALSE; + bool bFnd = false; SdrObjConnection aTestCon; SdrObjConnection aBestCon; - FASTBOOL bTestBoundHit=FALSE; - //FASTBOOL bBestBoundHit=FALSE; while (no>0 && !bFnd) { // Problem: Gruppenobjekt mit verschiedenen Layern liefert LayerID 0 !!!! @@ -2112,43 +2090,42 @@ FASTBOOL SdrEdgeObj::ImpFindConnector(const Point& rPt, const SdrPageView& rPV, Rectangle aObjBound(pObj->GetCurrentBoundRect()); if (aObjBound.IsOver(aMouseRect)) { aTestCon.ResetVars(); - bTestBoundHit=FALSE; - FASTBOOL bEdge=HAS_BASE(SdrEdgeObj,pObj); // kein BestCon fuer Edge + bool bEdge=HAS_BASE(SdrEdgeObj,pObj); // kein BestCon fuer Edge // Die Userdefined Konnektoren haben absolute Prioritaet. // Danach kommt Vertex, Corner und Mitte(Best) gleich priorisiert. // Zum Schluss kommt noch ein HitTest aufs Obj. const SdrGluePointList* pGPL=pObj->GetGluePointList(); USHORT nConAnz=pGPL==NULL ? 0 : pGPL->GetCount(); USHORT nGesAnz=nConAnz+9; - FASTBOOL bUserFnd=FALSE; + bool bUserFnd = false; ULONG nBestDist=0xFFFFFFFF; - for (USHORT i=0; i<nGesAnz; i++) + for (USHORT i=0; i<nGesAnz; i++) { - FASTBOOL bUser=i<nConAnz; - FASTBOOL bVertex=i>=nConAnz+0 && i<nConAnz+4; - FASTBOOL bCorner=i>=nConAnz+4 && i<nConAnz+8; - FASTBOOL bCenter=i==nConAnz+8; - FASTBOOL bOk=FALSE; + bool bUser=i<nConAnz; + bool bVertex=i>=nConAnz+0 && i<nConAnz+4; + bool bCorner=i>=nConAnz+4 && i<nConAnz+8; + bool bCenter=i==nConAnz+8; + bool bOk = false; Point aConPos; USHORT nConNum=i; if (bUser) { const SdrGluePoint& rGP=(*pGPL)[nConNum]; aConPos=rGP.GetAbsolutePos(*pObj); nConNum=rGP.GetId(); - bOk=TRUE; + bOk = true; } else if (bVertex && !bUserFnd) { nConNum=nConNum-nConAnz; if (rPV.GetView().IsAutoVertexConnectors()) { SdrGluePoint aPt(pObj->GetVertexGluePoint(nConNum)); aConPos=aPt.GetAbsolutePos(*pObj); - bOk=TRUE; + bOk = true; } else i+=3; } else if (bCorner && !bUserFnd) { nConNum-=nConAnz+4; if (rPV.GetView().IsAutoCornerConnectors()) { SdrGluePoint aPt(pObj->GetCornerGluePoint(nConNum)); aConPos=aPt.GetAbsolutePos(*pObj); - bOk=TRUE; + bOk = true; } else i+=3; } else if (bCenter && !bUserFnd && !bEdge) @@ -2160,12 +2137,12 @@ FASTBOOL SdrEdgeObj::ImpFindConnector(const Point& rPt, const SdrPageView& rPV, // Edges nicht! nConNum=0; aConPos=aObjBound.Center(); - bOk=TRUE; + bOk = true; } } if (bOk && aMouseRect.IsInside(aConPos)) { - if (bUser) bUserFnd=TRUE; - bFnd=TRUE; + if (bUser) bUserFnd = true; + bFnd = true; ULONG nDist=(ULONG)Abs(aConPos.X()-rPt.X())+(ULONG)Abs(aConPos.Y()-rPt.Y()); if (nDist<nBestDist) { nBestDist=nDist; @@ -2180,15 +2157,15 @@ FASTBOOL SdrEdgeObj::ImpFindConnector(const Point& rPt, const SdrPageView& rPV, } // Falls kein Konnektor getroffen wird nochmal // HitTest versucht fuer BestConnector (=bCenter) - if(!bFnd && - !bEdge && + if(!bFnd && + !bEdge && SdrObjectPrimitiveHit(*pObj, rPt, nBoundHitTol, rPV, &rVisLayer, false)) { // #109007# // Suppress default connect at object inside bound if(!pThis || !pThis->GetSuppressDefaultConnect()) { - bFnd=TRUE; + bFnd = true; aTestCon.pObj=pObj; aTestCon.bBestConn=TRUE; } @@ -2199,7 +2176,7 @@ FASTBOOL SdrEdgeObj::ImpFindConnector(const Point& rPt, const SdrPageView& rPV, aMouseRect.Top() -=nBoundHitTol; aMouseRect.Right() +=nBoundHitTol; aMouseRect.Bottom()+=nBoundHitTol; - bTestBoundHit=aObjBound.IsOver(aMouseRect2); + aObjBound.IsOver(aMouseRect2); } } @@ -2495,3 +2472,5 @@ void SdrEdgeObj::TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const b ////////////////////////////////////////////////////////////////////////////// // eof + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |