You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@openoffice.apache.org by al...@apache.org on 2013/10/17 20:36:04 UTC

svn commit: r1533203 [3/3] - in /openoffice/branches/alg/aw080/main: basctl/source/dlged/ filter/source/msfilter/ reportdesign/source/ui/report/ sc/source/ui/drawfunc/ sd/source/ui/animations/ sd/source/ui/dlg/ sd/source/ui/func/ sd/source/ui/view/ svx...

Modified: openoffice/branches/alg/aw080/main/svx/source/svdraw/svdobj.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/source/svdraw/svdobj.cxx?rev=1533203&r1=1533202&r2=1533203&view=diff
==============================================================================
--- openoffice/branches/alg/aw080/main/svx/source/svdraw/svdobj.cxx (original)
+++ openoffice/branches/alg/aw080/main/svx/source/svdraw/svdobj.cxx Thu Oct 17 18:36:03 2013
@@ -327,7 +327,7 @@ SdrObjUserData* SdrObjUserDataList::Remo
 SdrObjGeoData::SdrObjGeoData()
 :	maSdrObjectTransformation(),
     maObjectAnchor(0.0, 0.0),
-    mpGPL(0),
+    mpGluePointProvider(0),
 	mnLayerID(0),
 	mbMoveProtect(false),
 	mbSizeProtect(false),
@@ -338,14 +338,16 @@ SdrObjGeoData::SdrObjGeoData()
 
 SdrObjGeoData::~SdrObjGeoData()
 {
-	delete mpGPL;
+    if(mpGluePointProvider)
+    {
+        delete mpGluePointProvider;
+    }
 }
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 
 SdrObjPlusData::SdrObjPlusData()
 :	mpUserDataList(0),
-	mpGluePoints(0),
     maObjName(),
     maObjTitle(),
     maObjDescription(),
@@ -361,11 +363,6 @@ SdrObjPlusData::~SdrObjPlusData()
     {
         delete mpUserDataList;
     }
-
-	if(mpGluePoints) 
-    {
-        delete mpGluePoints;
-    }
 }
 
 SdrObjPlusData* SdrObjPlusData::Clone(SdrObject* pObj1) const
@@ -394,12 +391,6 @@ SdrObjPlusData* SdrObjPlusData::Clone(Sd
 		}
 	}
 
-    // copy GluePoints
-    if(mpGluePoints) 
-    {
-        pNeuPlusData->mpGluePoints = new sdr::glue::List(*mpGluePoints);
-    }
-
 	// copy object name, title and description
 	pNeuPlusData->maObjName = maObjName;
 	pNeuPlusData->maObjTitle = maObjTitle;
@@ -485,12 +476,12 @@ sdr::contact::ViewContact& SdrObject::Ge
 	return *mpViewContact;
 }
 
-sdr::gluepoint::GluePointProvider* SdrObject::CreateObjectSpecificGluePointProvider()
+sdr::glue::GluePointProvider* SdrObject::CreateObjectSpecificGluePointProvider()
 {
-	return new sdr::gluepoint::GluePointProvider();
+	return new sdr::glue::StandardGluePointProvider();
 }
 
-sdr::gluepoint::GluePointProvider& SdrObject::GetGluePointProvider() const
+sdr::glue::GluePointProvider& SdrObject::GetGluePointProvider() const
 {
 	if(!mpGluePointProvider)
 	{
@@ -975,7 +966,7 @@ void SdrObject::copyDataFromSdrObject(co
 
         if(rSource.mpGluePointProvider)
         {
-            mpGluePointProvider = &rSource.GetGluePointProvider().Clone();
+            mpGluePointProvider = rSource.mpGluePointProvider->Clone();
         }
 
 		maSdrObjectTransformation = rSource.maSdrObjectTransformation.getB2DHomMatrix();
@@ -1576,26 +1567,17 @@ void SdrObject::SaveGeoData(SdrObjGeoDat
 	rGeo.mbVisible = mbVisible;
 	rGeo.mnLayerID = mnLayerID;
 
-	// Benutzerdefinierte Klebepunkte
-	if(mpPlusData && mpPlusData->mpGluePoints) 
-    {
-        if(rGeo.mpGPL) 
-        {
-			*rGeo.mpGPL = *mpPlusData->mpGluePoints;
-		} 
-        else 
-        {
-			rGeo.mpGPL = new sdr::glue::List(*mpPlusData->mpGluePoints);
-		}
-	} 
-    else 
+    // gluepoints
+    if(mpGluePointProvider)
     {
-		if(rGeo.mpGPL) 
+        if(rGeo.mpGluePointProvider)
         {
-			delete rGeo.mpGPL;
-			rGeo.mpGPL = 0;
-		}
-	}
+            delete rGeo.mpGluePointProvider;
+            rGeo.mpGluePointProvider = 0;
+        }
+
+        rGeo.mpGluePointProvider = mpGluePointProvider->Clone();
+    }
 }
 
 void SdrObject::RestGeoData(const SdrObjGeoData& rGeo)
@@ -1620,28 +1602,17 @@ void SdrObject::RestGeoData(const SdrObj
 	mbVisible = rGeo.mbVisible;
 	mnLayerID = rGeo.mnLayerID;
 
-	// Benutzerdefinierte Klebepunkte
-	if(rGeo.mpGPL) 
+    // gluepoints
+    if(rGeo.mpGluePointProvider)
     {
-		ImpForcePlusData();
-	
-        if(mpPlusData->mpGluePoints) 
-        {
-			*mpPlusData->mpGluePoints = *rGeo.mpGPL;
-		} 
-        else 
-        {
-			mpPlusData->mpGluePoints = new sdr::glue::List(*rGeo.mpGPL);
-		}
-	} 
-    else 
-    {
-		if(mpPlusData && mpPlusData->mpGluePoints) 
+        if(mpGluePointProvider)
         {
-			delete mpPlusData->mpGluePoints;
-			mpPlusData->mpGluePoints = 0;
-		}
-	}
+            delete mpGluePointProvider;
+            mpGluePointProvider = 0;
+        }
+
+        mpGluePointProvider = rGeo.mpGluePointProvider->Clone();
+    }
 }
 
 SdrObjGeoData* SdrObject::GetGeoData() const
@@ -2063,80 +2034,6 @@ void SdrObject::SetStyleSheet(SfxStyleSh
 	}
 }
 
-sdr::glue::Point SdrObject::GetVertexGluePoint(sal_uInt32 nPosNum) const
-{
-    basegfx::B2DPoint aGluePosition(0.5, 0.5);
-
-    switch(nPosNum)
-    {
-        default: //case 0: TopCenter
-        {
-            aGluePosition.setY(0.0);
-            break;
-        }
-        case 1: // RightCenter
-        {
-            aGluePosition.setX(1.0);
-            break;
-        }
-        case 2: // BottomCenter
-        {
-            aGluePosition.setY(1.0);
-            break;
-        }
-        case 3: // LeftCenter
-        {
-            aGluePosition.setX(0.0);
-            break;
-        }
-    }
-
-    // create GluePoint, need to set UserDefined to false for these default GluePoints
-    return sdr::glue::Point(
-        aGluePosition,
-        sdr::glue::Point::ESCAPE_DIRECTION_SMART,
-        sdr::glue::Point::Alignment_Center,
-        sdr::glue::Point::Alignment_Center,
-        true,   // mbRelative
-        false); // mbUserDefined
-
-    // TTTT:GLUE
-    //aGluePosition = getSdrObjectTransformation() * aGluePosition;
-    //sdr::glue::Point aGP(aGluePosition - sdr::legacy::GetSnapRange(*this).getCenter());
-    //aGP.SetPercent(false);
-    //
-    //return aGP;
-}
-
-// TTTT:GLUE
-//const sdr::glue::List* SdrObject::GetGluePointList() const
-//{
-//	if(mpPlusData) 
-//    {
-//        return mpPlusData->mpGluePoints;
-//    }
-//
-//	return 0;
-//}
-
-sdr::glue::List* SdrObject::GetGluePointList(bool bForce) const
-{
-    if(bForce)
-    {
-        if(!mpPlusData)
-        {
-            const_cast< SdrObject* >(this)->ImpForcePlusData();
-        }
-
-        if(!mpPlusData->mpGluePoints)
-        {
-            const_cast< SdrObject* >(this)->mpPlusData->mpGluePoints = new sdr::glue::List;
-        }
-    }
-
-    return mpPlusData ? mpPlusData->mpGluePoints : 0;
-}
-
 void extractLineContourFromPrimitive2DSequence(
     const drawinglayer::primitive2d::Primitive2DSequence& rxSequence,
     basegfx::B2DPolygonVector& rExtractedHairlines,
@@ -2628,9 +2525,9 @@ void SdrObject::setSdrObjectTransformati
     if(rTransformation != getSdrObjectTransformation())
     {
         basegfx::B2DVector aOldAbsoluteScale;
-        sdr::glue::List* pGPL = GetGluePointList(false);
+        const bool bTransformGluePoints(mpGluePointProvider && mpGluePointProvider->hasUserGluePoints());
 
-        if(pGPL) 
+        if(bTransformGluePoints) 
         {
             // remember old absolute size
             aOldAbsoluteScale = basegfx::absolute(getSdrObjectScale());
@@ -2641,7 +2538,7 @@ void SdrObject::setSdrObjectTransformati
         maSdrObjectTransformation.setB2DHomMatrix(rTransformation);
         SetChanged();
 
-        if(pGPL) 
+        if(bTransformGluePoints) 
         {
             // get new absolute size
             const basegfx::B2DVector aNewAbsoluteScale(basegfx::absolute(getSdrObjectScale()));
@@ -2649,7 +2546,7 @@ void SdrObject::setSdrObjectTransformati
             if(!aOldAbsoluteScale.equal(aNewAbsoluteScale))
             {
                 // adapt the non-relative gluepoints according to their alignments
-                pGPL->adaptToChangedScale(aOldAbsoluteScale, aNewAbsoluteScale);
+                mpGluePointProvider->adaptUserGluePointsToChangedScale(aOldAbsoluteScale, aNewAbsoluteScale);
             }
         }
     }

Modified: openoffice/branches/alg/aw080/main/svx/source/svdraw/svdoedge.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/source/svdraw/svdoedge.cxx?rev=1533203&r1=1533202&r2=1533203&view=diff
==============================================================================
--- openoffice/branches/alg/aw080/main/svx/source/svdraw/svdoedge.cxx (original)
+++ openoffice/branches/alg/aw080/main/svx/source/svdraw/svdoedge.cxx Thu Oct 17 18:36:03 2013
@@ -55,8 +55,8 @@
 
 ////////////////////////////////////////////////////////////////////////////////////////////////////
 
-#define SDRESC_VERT (sdr::glue::Point::ESCAPE_DIRECTION_TOP|sdr::glue::Point::ESCAPE_DIRECTION_BOTTOM)
-#define SDRESC_HORZ (sdr::glue::Point::ESCAPE_DIRECTION_LEFT|sdr::glue::Point::ESCAPE_DIRECTION_RIGHT)
+#define SDRESC_VERT (sdr::glue::GluePoint::ESCAPE_DIRECTION_TOP|sdr::glue::GluePoint::ESCAPE_DIRECTION_BOTTOM)
+#define SDRESC_HORZ (sdr::glue::GluePoint::ESCAPE_DIRECTION_LEFT|sdr::glue::GluePoint::ESCAPE_DIRECTION_RIGHT)
 #define SDRESC_ALL (SDRESC_HORZ|SDRESC_VERT)
 
 SdrObjConnection::~SdrObjConnection()
@@ -72,53 +72,36 @@ void SdrObjConnection::ResetVars()
 	mbAutoVertex = false;
 }
 
-bool SdrObjConnection::TakeGluePoint(sdr::glue::Point& rGP/* TTTT:GLUE, bool bSetAbsPos*/) const
+bool SdrObjConnection::TakeGluePoint(sdr::glue::GluePoint& rGP) const
 {
     bool bRet(false);
 
     if(mpConnectedSdrObject) 
     { 
         // Ein Obj muss schon angedockt sein!
+        const sdr::glue::GluePointProvider& rProvider = mpConnectedSdrObject->GetGluePointProvider();
+
         if(mbAutoVertex) 
         {
-            rGP = mpConnectedSdrObject->GetVertexGluePoint(mnConnectorId);
+            rGP = rProvider.getAutoGluePointByIndex(mnConnectorId);
             bRet = true;
         } 
         else 
         {
-            const sdr::glue::List* pGPL = mpConnectedSdrObject->GetGluePointList(false);
 
-            if(pGPL) 
+            if(rProvider.hasUserGluePoints()) 
             {
-                sdr::glue::Point* pCandidate = pGPL->findByID(mnConnectorId);
+                const sdr::glue::GluePoint* pCandidate = rProvider.findUserGluePointByID(mnConnectorId);
 
                 if(pCandidate)
                 {
                     rGP = *pCandidate;
                     bRet = true;
                 }
-
-                // TTTT:GLUE
-                //const sal_uInt32 nNum(pGPL->FindGluePoint(mnConnectorId));
-                //
-                //if(SDRGLUEPOINT_NOTFOUND != nNum) 
-                //{
-                //    rGP=(*pGPL)[nNum];
-                //    bRet = true;
-                //}
             }
         }
     }
 
-    //if(bRet && bSetAbsPos) 
-    //{
-    //
-    //
-    //    const basegfx::B2DPoint aPt(rGP.GetAbsolutePos(sdr::legacy::GetSnapRange(*mpConnectedSdrObject)));
-    //
-    //    rGP.SetPos(aPt + maObjOfs);
-    //}
-
     return bRet;
 }
 
@@ -212,6 +195,149 @@ sdr::contact::ViewContact* SdrEdgeObj::C
 }
 
 //////////////////////////////////////////////////////////////////////////////
+// GluePoint section
+
+namespace sdr
+{
+    namespace glue
+    {
+        // SdrEdgeObj implements it's own GluePointProvider since
+        // - it does not support UserGluePoints -> use GluePointProvider
+        // - it supports AutoGluePoints, but different from standard -> replace
+        //   AutoGluePoint methods
+
+        class SdrEdgeObjGluePointProvider : public GluePointProvider
+        {
+        private:
+            // we need a reference to the owner object, given as reference in
+            // the constructor to express that it will always be set
+            const SdrEdgeObj*           mpSource;
+
+        protected:
+            SdrEdgeObjGluePointProvider(const SdrEdgeObjGluePointProvider& rCandidate);
+            virtual GluePointProvider& operator=(const GluePointProvider& rCandidate);
+
+        public:
+            // construction, destruction, copying
+            SdrEdgeObjGluePointProvider(const SdrEdgeObj& rSource);
+            virtual ~SdrEdgeObjGluePointProvider();
+
+            // copying
+            virtual GluePointProvider* Clone() const;
+
+            // AutoGluePoint read access (read only)
+            virtual sal_uInt32 getAutoGluePointCount() const;
+            virtual GluePoint getAutoGluePointByIndex(sal_uInt32 nIndex) const;
+        };
+
+        SdrEdgeObjGluePointProvider::SdrEdgeObjGluePointProvider(const SdrEdgeObj& rSource)
+        :   GluePointProvider(),
+            mpSource(&rSource)
+        {
+        }
+
+        SdrEdgeObjGluePointProvider::~SdrEdgeObjGluePointProvider()
+        {
+        }
+
+        SdrEdgeObjGluePointProvider::SdrEdgeObjGluePointProvider(const SdrEdgeObjGluePointProvider& rCandidate)
+        :   GluePointProvider(),
+            mpSource(rCandidate.mpSource)
+        {
+        }
+
+        GluePointProvider& SdrEdgeObjGluePointProvider::operator=(const GluePointProvider& rCandidate)
+        {
+            // call parent to copy UserGluePoints
+            GluePointProvider::operator=(rCandidate);
+
+            const SdrEdgeObjGluePointProvider* pSource = dynamic_cast< const SdrEdgeObjGluePointProvider* >(&rCandidate);
+
+            if(pSource)
+            {
+                mpSource = pSource->mpSource;
+            }
+
+            return *this;
+        }
+
+        GluePointProvider* SdrEdgeObjGluePointProvider::Clone() const
+        {
+            return new SdrEdgeObjGluePointProvider(*this);
+        }
+
+        sal_uInt32 SdrEdgeObjGluePointProvider::getAutoGluePointCount() const
+        {
+            // to stay compatible, also use four points (anyways UNO API uses a fixed count of four
+            // currently). Seel below, 0,1 create the same point, 2 the start, 3, the end
+            return 4;
+        }
+
+        GluePoint SdrEdgeObjGluePointProvider::getAutoGluePointByIndex(sal_uInt32 nIndex) const
+        {
+            // no error with indices, just repeatedly return last GluePoint as fallback
+            const basegfx::B2DPolygon aEdgeTrack(mpSource->GetEdgeTrackPath());
+            const sal_uInt32 nPntAnz(aEdgeTrack.count());
+            basegfx::B2DPoint aOldPoint(0.0, 0.0);
+
+            if(nPntAnz)
+            {
+                switch(nIndex)
+                {
+                    case 2:
+                    {
+                        if(!mpSource->GetConnectedNode(true)) 
+                        {
+                            aOldPoint = aEdgeTrack.getB2DPoint(0);
+                        }
+                        break;
+                    }
+                    case 3:
+                    {
+                        if(!mpSource->GetConnectedNode(false)) 
+                        {
+                            aOldPoint = aEdgeTrack.getB2DPoint(nPntAnz - 1);
+                        }
+                        break;
+                    }
+                    default:
+                    {
+                        if(1 == (nPntAnz & 1)) 
+                        {
+                            aOldPoint = aEdgeTrack.getB2DPoint(nPntAnz / 2);
+                        } 
+                        else 
+                        {
+                            aOldPoint = (aEdgeTrack.getB2DPoint((nPntAnz/2) - 1) + aEdgeTrack.getB2DPoint(nPntAnz/2)) * 0.5;
+                        }
+                        break;
+                    }
+                }
+            }
+
+            // need to make absolute position relative. temporarily correct zero sizes for invert
+            basegfx::B2DHomMatrix aTransform(basegfx::tools::guaranteeMinimalScaling(mpSource->getSdrObjectTransformation()));
+
+            aTransform.invert();
+            aOldPoint = aTransform * aOldPoint;
+
+            return sdr::glue::GluePoint(
+                aOldPoint,
+                sdr::glue::GluePoint::ESCAPE_DIRECTION_SMART,
+                sdr::glue::GluePoint::Alignment_Center,
+                sdr::glue::GluePoint::Alignment_Center,
+                true,   // mbRelative
+                false); // mbUserDefined
+        }
+    } // end of namespace glue
+} // end of namespace sdr
+
+sdr::glue::GluePointProvider* SdrEdgeObj::CreateObjectSpecificGluePointProvider()
+{
+    return new sdr::glue::SdrEdgeObjGluePointProvider(*this);
+}
+
+//////////////////////////////////////////////////////////////////////////////
 
 SdrEdgeObj::SdrEdgeObj(SdrModel& rSdrModel)
 :	SdrTextObj(rSdrModel),
@@ -468,64 +594,6 @@ sal_uInt16 SdrEdgeObj::GetObjIdentifier(
 	return sal_uInt16(OBJ_EDGE);
 }
 
-sdr::glue::Point SdrEdgeObj::GetVertexGluePoint(sal_uInt32 nNum) const
-{
-    //basegfx::B2DPoint aPoint(0.0, 0.0);
-    const sal_uInt32 nPntAnz(maEdgeTrack.count());
-    basegfx::B2DPoint aOldPoint;
-
-    if(nPntAnz)
-    {
-        if(2 == nNum && !GetConnectedNode(true)) 
-        {
-            aOldPoint = maEdgeTrack.getB2DPoint(0);
-        }
-        else if(3 == nNum && !GetConnectedNode(false)) 
-        {
-            aOldPoint = maEdgeTrack.getB2DPoint(nPntAnz - 1);
-        }
-        else 
-        {
-            if(1 == (nPntAnz & 1)) 
-            {
-                aOldPoint = maEdgeTrack.getB2DPoint(nPntAnz / 2);
-            } 
-            else 
-            {
-                aOldPoint = (maEdgeTrack.getB2DPoint((nPntAnz/2) - 1) + maEdgeTrack.getB2DPoint(nPntAnz/2)) * 0.5;
-            }
-        }
-    }
-
-    // TTTT:GLUE
-    //sdr::glue::Point aGP(aOldPoint);
-    //aGP.SetPercent(false);
-
-    // need to make absolute position relative. temporarily correct zero sizes for invert
-    basegfx::B2DHomMatrix aTransform(basegfx::tools::guaranteeMinimalScaling(getSdrObjectTransformation()));
-
-    aTransform.invert();
-    aOldPoint = aTransform * aOldPoint;
-
-    return sdr::glue::Point(
-        aOldPoint,
-        sdr::glue::Point::ESCAPE_DIRECTION_SMART,
-        sdr::glue::Point::Alignment_Center,
-        sdr::glue::Point::Alignment_Center,
-        true,   // mbRelative
-        false); // mbUserDefined
-}
-
-sdr::glue::List* SdrEdgeObj::GetGluePointList(bool /*bForce*/) const
-{
-    return NULL; // Keine benutzerdefinierten Klebepunkte fuer Verbinder #31671#
-}
-
-//sdr::glue::List* SdrEdgeObj::ForceGluePointList()
-//{
-//	return NULL; // Keine benutzerdefinierten Klebepunkte fuer Verbinder #31671#
-//}
-
 void SdrEdgeObj::ConnectToNode(bool bTail1, SdrObject* pObj)
 {
 	SdrObjConnection& rCon=GetConnection(bTail1);
@@ -574,37 +642,41 @@ bool SdrEdgeObj::CheckNodeConnection(boo
     
     if(rCon.mpConnectedSdrObject && rCon.mpConnectedSdrObject->getSdrPageFromSdrObject() == getSdrPageFromSdrObject() && nPtAnz) 
     {
-        const sdr::glue::List* pGPL = rCon.mpConnectedSdrObject->GetGluePointList(false);
-        const sdr::glue::PointVector aGluePointVector(pGPL ? pGPL->getVector() : sdr::glue::PointVector());
-        const sal_uInt32 nConAnz(aGluePointVector.size());
-        const sal_uInt32 nGesAnz(nConAnz + 4);
-        const basegfx::B2DPoint aTail(bTail1 ? maEdgeTrack.getB2DPoint(0) : maEdgeTrack.getB2DPoint(nPtAnz - 1));
-
-        for(sal_uInt32 i(0); i < nGesAnz && !bRet; i++) 
-        {
-            if(i < nConAnz) 
-            { 
-                // UserDefined or CustomShape
-                const sdr::glue::Point* pCandidate = aGluePointVector[i];
+        const sdr::glue::GluePointProvider& rProvider = rCon.mpConnectedSdrObject->GetGluePointProvider();
 
-                if(pCandidate)
-                {
-                    const basegfx::B2DPoint aGluePos(rCon.mpConnectedSdrObject->getSdrObjectTransformation() * pCandidate->getUnitPosition());
+        if(rProvider.hasUserGluePoints())
+        {
+            const sdr::glue::GluePointVector aGluePointVector(rProvider.getUserGluePointVector());
+            const sal_uInt32 nConAnz(aGluePointVector.size());
+            const sal_uInt32 nGesAnz(nConAnz + rProvider.getAutoGluePointCount());
+            const basegfx::B2DPoint aTail(bTail1 ? maEdgeTrack.getB2DPoint(0) : maEdgeTrack.getB2DPoint(nPtAnz - 1));
+
+            for(sal_uInt32 i(0); i < nGesAnz && !bRet; i++) 
+            {
+                if(i < nConAnz) 
+                { 
+                    // UserDefined or CustomShape
+                    const sdr::glue::GluePoint* pCandidate = aGluePointVector[i];
+
+                    if(pCandidate)
+                    {
+                        const basegfx::B2DPoint aGluePos(rCon.mpConnectedSdrObject->getSdrObjectTransformation() * pCandidate->getUnitPosition());
+
+                        bRet = (aTail == aGluePos);
+                    }
+                    else
+                    {
+                        OSL_ENSURE(false, "Got sdr::glue::PointVector with emty entries (!)");
+                    }
+                } 
+                else //if (i<nConAnz+4) 
+                { 
+                    // Vertex
+                    const sdr::glue::GluePoint aPt(rProvider.getAutoGluePointByIndex(i - nConAnz));
+                    const basegfx::B2DPoint aGluePos(rCon.mpConnectedSdrObject->getSdrObjectTransformation() * aPt.getUnitPosition());
 
                     bRet = (aTail == aGluePos);
                 }
-                else
-                {
-                    OSL_ENSURE(false, "Got sdr::glue::PointVector with emty entries (!)");
-                }
-            } 
-            else //if (i<nConAnz+4) 
-            { 
-                // Vertex
-                const sdr::glue::Point aPt(rCon.mpConnectedSdrObject->GetVertexGluePoint(i - nConAnz));
-                const basegfx::B2DPoint aGluePos(rCon.mpConnectedSdrObject->getSdrObjectTransformation() * aPt.getUnitPosition());
-
-                bRet = (aTail == aGluePos);
             }
         }
     }
@@ -726,22 +798,22 @@ sal_uInt16 SdrEdgeObj::ImpCalcEscAngle(S
 		if (byMitt) nRet|=SDRESC_VERT;
 		if (bxMitt) nRet|=SDRESC_HORZ;
 		if (dxl<dxr) { // Links
-			if (dyo<dyu) nRet|=sdr::glue::Point::ESCAPE_DIRECTION_LEFT | sdr::glue::Point::ESCAPE_DIRECTION_TOP;
-			else nRet|=sdr::glue::Point::ESCAPE_DIRECTION_LEFT | sdr::glue::Point::ESCAPE_DIRECTION_BOTTOM;
+			if (dyo<dyu) nRet|=sdr::glue::GluePoint::ESCAPE_DIRECTION_LEFT | sdr::glue::GluePoint::ESCAPE_DIRECTION_TOP;
+			else nRet|=sdr::glue::GluePoint::ESCAPE_DIRECTION_LEFT | sdr::glue::GluePoint::ESCAPE_DIRECTION_BOTTOM;
 		} else {       // Rechts
-			if (dyo<dyu) nRet|=sdr::glue::Point::ESCAPE_DIRECTION_RIGHT | sdr::glue::Point::ESCAPE_DIRECTION_TOP;
-			else nRet|=sdr::glue::Point::ESCAPE_DIRECTION_RIGHT | sdr::glue::Point::ESCAPE_DIRECTION_BOTTOM;
+			if (dyo<dyu) nRet|=sdr::glue::GluePoint::ESCAPE_DIRECTION_RIGHT | sdr::glue::GluePoint::ESCAPE_DIRECTION_TOP;
+			else nRet|=sdr::glue::GluePoint::ESCAPE_DIRECTION_RIGHT | sdr::glue::GluePoint::ESCAPE_DIRECTION_BOTTOM;
 		}
 		return nRet;
 	}
 	if (dx<dy) { // waagerecht
 		if (bxMitt) return SDRESC_HORZ;
-		if (dxl<dxr) return sdr::glue::Point::ESCAPE_DIRECTION_LEFT;
-		else return sdr::glue::Point::ESCAPE_DIRECTION_RIGHT;
+		if (dxl<dxr) return sdr::glue::GluePoint::ESCAPE_DIRECTION_LEFT;
+		else return sdr::glue::GluePoint::ESCAPE_DIRECTION_RIGHT;
 	} else {     // senkrecht
 		if (byMitt) return SDRESC_VERT;
-		if (dyo<dyu) return sdr::glue::Point::ESCAPE_DIRECTION_TOP;
-		else return sdr::glue::Point::ESCAPE_DIRECTION_BOTTOM;
+		if (dyo<dyu) return sdr::glue::GluePoint::ESCAPE_DIRECTION_TOP;
+		else return sdr::glue::GluePoint::ESCAPE_DIRECTION_BOTTOM;
 	}
 }
 
@@ -828,7 +900,7 @@ basegfx::B2DPolygon SdrEdgeObj::ImpCalcE
 		basegfx::B2DPoint aPt1(maEdgeTrack.getB2DPoint(0));
 		basegfx::B2DPoint aPt2(maEdgeTrack.getB2DPoint(nCount - 1));
         const basegfx::B2DRange aBaseRange(aPt1, aPt2);
-	    sdr::glue::Point aGP1,aGP2;
+	    sdr::glue::GluePoint aGP1,aGP2;
 	    sal_uInt16 nEsc1(SDRESC_ALL);
 	    sal_uInt16 nEsc2(SDRESC_ALL);
 	    basegfx::B2DRange aBoundRange1;
@@ -851,8 +923,6 @@ basegfx::B2DPolygon SdrEdgeObj::ImpCalcE
 			    aBoundRange1 = rCon1.mpConnectedSdrObject->getObjectRange(0);
 		    }
 	
-		    // TTTT:GLUE aBoundRange1.transform(basegfx::tools::createTranslateB2DHomMatrix(rCon1.maObjOfs));
-
 		    const sal_Int32 nH(((SdrEdgeNode1HorzDistItem&)rSet.Get(SDRATTR_EDGENODE1HORZDIST)).GetValue());
 		    const sal_Int32 nV(((SdrEdgeNode1VertDistItem&)rSet.Get(SDRATTR_EDGENODE1VERTDIST)).GetValue());
 
@@ -862,7 +932,7 @@ basegfx::B2DPolygon SdrEdgeObj::ImpCalcE
 	    } 
 	    else 
 	    {
-		    aBewareRange1 = aBoundRange1 = basegfx::B2DRange(aPt1); // TTTT:GLUE + rCon1.maObjOfs);
+		    aBewareRange1 = aBoundRange1 = basegfx::B2DRange(aPt1);
 	    }
 	
 	    if(bCon2) 
@@ -876,8 +946,6 @@ basegfx::B2DPolygon SdrEdgeObj::ImpCalcE
 			    aBoundRange2 = rCon2.mpConnectedSdrObject->getObjectRange(0);
 		    }
 
-		    // TTTT:GLUE aBoundRange2.transform(basegfx::tools::createTranslateB2DHomMatrix(rCon2.maObjOfs));
-
 		    const sal_Int32 nH(((SdrEdgeNode2HorzDistItem&)rSet.Get(SDRATTR_EDGENODE2HORZDIST)).GetValue());
 		    const sal_Int32 nV(((SdrEdgeNode2VertDistItem&)rSet.Get(SDRATTR_EDGENODE2VERTDIST)).GetValue());
 
@@ -887,7 +955,7 @@ basegfx::B2DPolygon SdrEdgeObj::ImpCalcE
 	    } 
 	    else 
 	    {
-		    aBewareRange2 = aBoundRange2 = basegfx::B2DRange(aPt2); // TTTT:GLUE + rCon2.maObjOfs);
+		    aBewareRange2 = aBoundRange2 = basegfx::B2DRange(aPt2);
 	    }
 	
 	    sal_uInt32 nBestQual=0xFFFFFFFF;
@@ -933,14 +1001,14 @@ basegfx::B2DPolygon SdrEdgeObj::ImpCalcE
                 rCon1.mnConnectorId = nNum1;
             }
 
-		    if(bCon1 && rCon1.TakeGluePoint(aGP1/*TTTT:GLUE, true*/)) 
+		    if(bCon1 && rCon1.TakeGluePoint(aGP1)) 
             {
 			    aPt1 = rCon1.mpConnectedSdrObject->getSdrObjectTransformation() * aGP1.getUnitPosition();
 			    nEsc1 = aGP1.getEscapeDirections();
 
-                if(sdr::glue::Point::ESCAPE_DIRECTION_SMART == nEsc1) 
+                if(sdr::glue::GluePoint::ESCAPE_DIRECTION_SMART == nEsc1) 
                 {
-                    nEsc1 = ImpCalcEscAngle(rCon1.mpConnectedSdrObject, aPt1); // TTTT:GLUE - rCon1.maObjOfs);
+                    nEsc1 = ImpCalcEscAngle(rCon1.mpConnectedSdrObject, aPt1);
                 }
 		    }
 
@@ -951,24 +1019,24 @@ basegfx::B2DPolygon SdrEdgeObj::ImpCalcE
                     rCon2.mnConnectorId = nNum2;
                 }
 
-			    if(bCon2 && rCon2.TakeGluePoint(aGP2/*TTTT:GLUE, true*/)) 
+			    if(bCon2 && rCon2.TakeGluePoint(aGP2)) 
                 {
 				    aPt2 = rCon2.mpConnectedSdrObject->getSdrObjectTransformation() * aGP2.getUnitPosition();
 				    nEsc2 = aGP2.getEscapeDirections();
 
-                    if(sdr::glue::Point::ESCAPE_DIRECTION_SMART == nEsc2) 
+                    if(sdr::glue::GluePoint::ESCAPE_DIRECTION_SMART == nEsc2) 
                     {
-                        nEsc2 = ImpCalcEscAngle(rCon2.mpConnectedSdrObject, aPt2); // TTTT:GLUE - rCon2.maObjOfs);
+                        nEsc2 = ImpCalcEscAngle(rCon2.mpConnectedSdrObject, aPt2);
                     }
 			    }
 
                 for(long nA1(0); nA1 < 36000; nA1 += 9000) 
                 {
-				    const sal_uInt16 nE1(!nA1 ? sdr::glue::Point::ESCAPE_DIRECTION_RIGHT : 9000 == nA1 ? sdr::glue::Point::ESCAPE_DIRECTION_TOP : 18000 == nA1 ? sdr::glue::Point::ESCAPE_DIRECTION_LEFT : 27000 == nA1 ? sdr::glue::Point::ESCAPE_DIRECTION_BOTTOM : 0);
+				    const sal_uInt16 nE1(!nA1 ? sdr::glue::GluePoint::ESCAPE_DIRECTION_RIGHT : 9000 == nA1 ? sdr::glue::GluePoint::ESCAPE_DIRECTION_TOP : 18000 == nA1 ? sdr::glue::GluePoint::ESCAPE_DIRECTION_LEFT : 27000 == nA1 ? sdr::glue::GluePoint::ESCAPE_DIRECTION_BOTTOM : 0);
 				    
                     for(long nA2(0); nA2 < 36000; nA2 += 9000) 
                     {
-					    const sal_uInt16 nE2(!nA2 ? sdr::glue::Point::ESCAPE_DIRECTION_RIGHT : 9000 == nA2 ? sdr::glue::Point::ESCAPE_DIRECTION_TOP : 18000 == nA2 ? sdr::glue::Point::ESCAPE_DIRECTION_LEFT : 27000 == nA2 ? sdr::glue::Point::ESCAPE_DIRECTION_BOTTOM : 0);
+					    const sal_uInt16 nE2(!nA2 ? sdr::glue::GluePoint::ESCAPE_DIRECTION_RIGHT : 9000 == nA2 ? sdr::glue::GluePoint::ESCAPE_DIRECTION_TOP : 18000 == nA2 ? sdr::glue::GluePoint::ESCAPE_DIRECTION_LEFT : 27000 == nA2 ? sdr::glue::GluePoint::ESCAPE_DIRECTION_BOTTOM : 0);
 
                         if((nEsc1 & nE1) && (nEsc2 & nE2)) 
                         {
@@ -2192,17 +2260,6 @@ basegfx::B2DPolygon SdrEdgeObj::ImplAddC
 		SdrObjConnection aMyCon1(maCon1);
 		SdrObjConnection aMyCon2(maCon2);
 		
-        // TTTT:GLUE
-		//if (bTail1) 
-		//{
-        //    aMyCon1.maObjOfs *= rDragMethod.getCurrentTransformation();
-		//}
-        //
-		//if (bTail2) 
-		//{
-        //    aMyCon2.maObjOfs *= rDragMethod.getCurrentTransformation();
-		//}
-		
 		SdrEdgeInfoRec aInfo(maEdgeInfo);
 		aResult = ImpCalcEdgeTrack(aMyCon1, aMyCon2, &aInfo);
 	} 
@@ -2368,24 +2425,26 @@ void SdrEdgeObj::FindConnector(
                     // Die Userdefined Konnektoren haben absolute Prioritaet.
                     // Danach kommt Vertex, Corner und Mitte(Best) gleich priorisiert.
                     // Zum Schluss kommt noch ein HitTest aufs Obj.
-                    const sdr::glue::List* pGPL = pObj->GetGluePointList(false);
-                    const sdr::glue::PointVector aGluePointVector(pGPL ? pGPL->getVector() : sdr::glue::PointVector());
-                    const sal_uInt32 nConAnz(aGluePointVector.size());
-                    sal_uInt32 nGesAnz=nConAnz+9;
+                    const sdr::glue::GluePointProvider& rProvider = pObj->GetGluePointProvider();
+                    const sdr::glue::GluePointVector aUserGluePointVector(rProvider.getUserGluePointVector());
+                    const sal_uInt32 nUserGluePointCount(aUserGluePointVector.size());
+                    const sal_uInt32 nAutoGluePointCount(rProvider.getAutoGluePointCount());
+                    const sal_uInt32 nAllGluePointCount(nUserGluePointCount + nAutoGluePointCount + 1);
                     bool bUserFnd=false;
                     sal_uInt32 nBestDist=0xFFFFFFFF;
-                    for (sal_uInt32 i=0; i<nGesAnz; i++) 
+
+                    for (sal_uInt32 i=0; i<nAllGluePointCount; i++) 
                     {
-                        bool bUser=i<nConAnz;
-                        bool bVertex=i>=nConAnz+0 && i<nConAnz+4;
-                        bool bCenter=i==nConAnz+4;
+                        const bool bUser(i < nUserGluePointCount);
+                        const bool bVertex(i >= nUserGluePointCount && i < nUserGluePointCount + nAutoGluePointCount);
+                        const bool bCenter(i + 1 == nAllGluePointCount);
                         bool bOk=false;
                         Point aConPos;
                         sal_uInt32 nConNum=i;
 
                         if(bUser) 
                         {
-                            const sdr::glue::Point* pCandidate = aGluePointVector[nConNum];
+                            const sdr::glue::GluePoint* pCandidate = aUserGluePointVector[nConNum];
 
                             if(pCandidate)
                             {
@@ -2402,9 +2461,9 @@ void SdrEdgeObj::FindConnector(
                         } 
                         else if (bVertex && !bUserFnd) 
                         {
-                            nConNum = nConNum - nConAnz;
+                            nConNum = nConNum - nUserGluePointCount;
 
-                            const sdr::glue::Point aLocalPt(pObj->GetVertexGluePoint(nConNum));
+                            const sdr::glue::GluePoint aLocalPt(rProvider.getAutoGluePointByIndex(nConNum));
                             const basegfx::B2DPoint aPoint(pObj->getSdrObjectTransformation() * aLocalPt.getUnitPosition());
 
                             aConPos = Point(basegfx::fround(aPoint.getX()), basegfx::fround(aPoint.getY()));
@@ -2749,17 +2808,20 @@ void SdrEdgeObj::setGluePointIndex(bool 
 
     if( nIndex > 3 )
     {
-        // TTTT:GLUE no more; check if this works
-        // nIndex -= 3;		// SJ: the start api index is 0, whereas the implementation in svx starts from 1
-        nIndex -= 4;        // SJ: the start api index is 0, whereas the implementation in svx starts from 1
+        nIndex -= 4; // The start api index and the implementation index is now both 0
 
         // for user defined glue points we have
         // to get the id for this index first
-        const sdr::glue::List* pList = rConn1.GetObject() ? rConn1.GetObject()->GetGluePointList(false) : NULL;
+        const SdrObject* pCandidate = rConn1.GetObject();
 
-        if(!pList || !pList->findByID(nIndex))
+        if(pCandidate)
         {
-            return;
+            const sdr::glue::GluePointProvider& rProvider = pCandidate->GetGluePointProvider();
+
+            if(!rProvider.hasUserGluePoints() || !rProvider.findUserGluePointByID(nIndex))
+            {
+                return;
+            }
         }
     }
     else if( nIndex < 0 )

Modified: openoffice/branches/alg/aw080/main/svx/source/svdraw/svdpntv.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/source/svdraw/svdpntv.cxx?rev=1533203&r1=1533202&r2=1533203&view=diff
==============================================================================
--- openoffice/branches/alg/aw080/main/svx/source/svdraw/svdpntv.cxx (original)
+++ openoffice/branches/alg/aw080/main/svx/source/svdraw/svdpntv.cxx Thu Oct 17 18:36:03 2013
@@ -45,7 +45,6 @@
 #include <svx/svdmodel.hxx>
 #include <svx/svdundo.hxx>
 #include <svx/svdview.hxx>
-#include <svx/sdrglue.hxx>
 #include <svx/svdobj.hxx>
 #include <svx/svdograf.hxx>
 #include <svx/svdattrx.hxx>
@@ -55,7 +54,6 @@
 #include <svx/sdr/overlay/overlayobjectlist.hxx>
 #include <svx/sdr/overlay/overlayrollingrectangle.hxx>
 #include <svx/sdr/overlay/overlaymanager.hxx>
-#include <svx/sdrglue.hxx>
 #include <svx/svdobj.hxx>
 #include <svx/svdview.hxx>
 #include <svl/itemiter.hxx>
@@ -75,6 +73,7 @@
 #include <basegfx/numeric/ftools.hxx>
 #include <drawinglayer/primitive2d/metafileprimitive2d.hxx>
 #include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <svx/sdr/contact/viewobjectcontact.hxx>
 
 using namespace ::rtl;
 using namespace ::com::sun::star;
@@ -947,50 +946,38 @@ bool SdrPaintView::KeyInput(const KeyEve
 
 void SdrPaintView::GlueInvalidate() const
 {
-    const sal_uInt32 nWindowCount(PaintWindowCount());
-
-    for(sal_uInt32 nWinNum(0); nWinNum < nWindowCount; nWinNum++)
+    if(mpPageView)
     {
-        SdrPaintWindow* pPaintWindow = GetPaintWindow(nWinNum);
-
-        if(pPaintWindow->OutputToWindow()) 
+        // start at current ObjectList (evtl. entered groups)
+        const SdrObjList* pOL = mpPageView->GetCurrentObjectList();
+        const sal_uInt32 nObjAnz(pOL->GetObjCount());
+                
+        for(sal_uInt32 nObjNum(0); nObjNum < nObjAnz; nObjNum++) 
         {
-            OutputDevice& rOutDev = pPaintWindow->GetOutputDevice();
-            const basegfx::B2DVector aLogicHalfSevenPix(rOutDev.GetInverseViewTransformation() * basegfx::B2DVector(3.5, 3.5));
+            const SdrObject* pObj = pOL->GetObj(nObjNum);
 
-            if(mpPageView)
+            if(pObj)
             {
-                const SdrObjList* pOL = mpPageView->GetCurrentObjectList();
-                const sal_uInt32 nObjAnz(pOL->GetObjCount());
-                
-                for(sal_uInt32 nObjNum(0); nObjNum < nObjAnz; nObjNum++) 
-                {
-                    const SdrObject* pObj = pOL->GetObj(nObjNum);
-                    const sdr::glue::List* pGPL = pObj ? pObj->GetGluePointList(false) : 0;
+                const sdr::glue::GluePointProvider& rProvider = pObj->GetGluePointProvider();
 
-                    if(pGPL) 
+                if(rProvider.hasUserGluePoints()) 
+                {
+                    // SdrObject has GluePoints, thus invalidate VOC to force recreation. Do this in
+                    // just the VOC belonging to this PageWindow's ObjectContacts, not in all views
+                    for(sal_uInt32 b(0); b < mpPageView->PageWindowCount(); b++)
                     {
-                        const sdr::glue::PointVector aGluePointVecor(pGPL->getVector());
-
-                        for(sal_uInt32 a(0); a < aGluePointVecor.size(); a++)
-                        {
-                            const sdr::glue::Point* pCandidate = aGluePointVecor[a];
+                        const SdrPageWindow& rPageWindow = *(mpPageView->GetPageWindow(b));
+                        sdr::contact::ObjectContact& rObjectContact = rPageWindow.GetObjectContact();
+                        sdr::contact::ViewObjectContact& rVOC = pObj->GetViewContact().GetViewObjectContact(rObjectContact);
 
-                            if(pCandidate)
-                            {
-                                const basegfx::B2DPoint aPos(pObj->getSdrObjectTransformation() * pCandidate->getUnitPosition());
-                                const basegfx::B2DRange aRange(aPos - aLogicHalfSevenPix, aPos + aLogicHalfSevenPix);
-
-                                InvalidateOneWin((Window&)rOutDev, aRange);
-                            }
-                            else
-                            {
-                                OSL_ENSURE(false, "Got sdr::glue::PointVector with empty entries (!)");
-                            }
-                        }
+                        rVOC.ActionChanged();
                     }
                 }
             }
+            else
+            {
+                OSL_ENSURE(false, "Got selection with empty slots (!)");
+            }
         }
     }
 }

Modified: openoffice/branches/alg/aw080/main/svx/source/svdraw/svdview.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/source/svdraw/svdview.cxx?rev=1533203&r1=1533202&r2=1533203&view=diff
==============================================================================
--- openoffice/branches/alg/aw080/main/svx/source/svdraw/svdview.cxx (original)
+++ openoffice/branches/alg/aw080/main/svx/source/svdraw/svdview.cxx Thu Oct 17 18:36:03 2013
@@ -2179,7 +2179,6 @@ void SdrView::SetMasterPagePaintCaching(
 	}
 }
 
-// TTTT:HANDLE
 void SdrView::MoveHandleByVector(const SdrHdl& rHdl, const basegfx::B2DVector& rDistance, Window* pMakeVisibleWindow, SdrDragMethod* pOwnDragMethod)
 {
     if(!rDistance.equalZero())

Modified: openoffice/branches/alg/aw080/main/svx/source/unodraw/gluepts.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/svx/source/unodraw/gluepts.cxx?rev=1533203&r1=1533202&r2=1533203&view=diff
==============================================================================
--- openoffice/branches/alg/aw080/main/svx/source/unodraw/gluepts.cxx (original)
+++ openoffice/branches/alg/aw080/main/svx/source/unodraw/gluepts.cxx Thu Oct 17 18:36:03 2013
@@ -28,7 +28,6 @@
 #include <cppuhelper/implbase2.hxx>
 #include <svx/svdmodel.hxx>
 #include <svx/svdobj.hxx>
-#include <svx/sdrglue.hxx>
 #include <svx/svdpage.hxx>
 
 using namespace ::com::sun::star;
@@ -90,17 +89,17 @@ sal_Int32 SAL_CALL SvxUnoGluePointAccess
 {
     if( mpObject.is() )
     {
-        sdr::glue::List* pList = mpObject->GetGluePointList(true);
+        sdr::glue::GluePointProvider& rProvider = mpObject->GetGluePointProvider();
 
-        if( pList )
+        if(rProvider.allowsUserGluePoints())
         {
             drawing::GluePoint2 aUnoGlue;
 
             if( aElement >>= aUnoGlue )
             {
                 const basegfx::B2DVector aAbsoluteScale(basegfx::absolute(mpObject->getSdrObjectScale()));
-                const sdr::glue::Point aSdrGlue(aUnoGlue, aAbsoluteScale);
-                const sdr::glue::Point& rAdded = pList->add(aSdrGlue);
+                sdr::glue::GluePoint aSdrGlue(aUnoGlue, aAbsoluteScale);
+                const sdr::glue::GluePoint& rAdded = rProvider.addUserGluePoint(aSdrGlue);
 
                 // only repaint, no objectchange
                 mpObject->ActionChanged();
@@ -120,15 +119,15 @@ void SAL_CALL SvxUnoGluePointAccess::rem
     if( mpObject.is() && ( Identifier >= NON_USER_DEFINED_GLUE_POINTS ))
     {
         const sal_uInt32 nId(Identifier - NON_USER_DEFINED_GLUE_POINTS);
-        sdr::glue::List* pList = mpObject->GetGluePointList(false);
+        sdr::glue::GluePointProvider& rProvider = mpObject->GetGluePointProvider();
 
-        if(pList)
+        if(rProvider.hasUserGluePoints())
         {
-            const sdr::glue::Point* pCandidate = pList->findByID(nId);
+            const sdr::glue::GluePoint* pCandidate = rProvider.findUserGluePointByID(nId);
 
             if(pCandidate)
             {
-                pList->remove(*pCandidate);
+                rProvider.removeUserGluePoint(*pCandidate);
 
                 // only repaint, no objectchange
                 mpObject->ActionChanged();
@@ -136,23 +135,6 @@ void SAL_CALL SvxUnoGluePointAccess::rem
                 return;
             }
         }
-
-        // TTTT:GLUE
-        //const sal_uInt32 nCount = pList ? pList->GetCount() : 0;
-        //sal_uInt32 i;
-        //
-        //for( i = 0; i < nCount; i++ )
-        //{
-        //    if( (*pList)[i].GetId() == nId )
-        //    {
-        //        pList->Delete( i );
-        //        
-        //        // only repaint, no objectchange
-        //        mpObject->ActionChanged();
-        //
-        //        return;
-        //    }
-        //}
     }
 
     throw container::NoSuchElementException();
@@ -169,17 +151,17 @@ void SAL_CALL SvxUnoGluePointAccess::rep
             throw lang::IllegalArgumentException();
 
         const sal_uInt32 nId(Identifier - NON_USER_DEFINED_GLUE_POINTS);
-        sdr::glue::List* pList = mpObject->GetGluePointList(false);
+        sdr::glue::GluePointProvider& rProvider = mpObject->GetGluePointProvider();
 
-        if(pList)
+        if(rProvider.hasUserGluePoints())
         {
-            sdr::glue::Point* pCandidate = pList->findByID(nId);
+            sdr::glue::GluePoint* pCandidate = rProvider.findUserGluePointByID(nId);
 
             if(pCandidate)
             {
                 // change the glue point (but start with a new GluePoint)
                 const basegfx::B2DVector aAbsoluteScale(basegfx::absolute(mpObject->getSdrObjectScale()));
-                const sdr::glue::Point aSdrGlue(aGluePoint, aAbsoluteScale);
+                const sdr::glue::GluePoint aSdrGlue(aGluePoint, aAbsoluteScale);
 
                 *pCandidate = aSdrGlue;
 
@@ -190,24 +172,6 @@ void SAL_CALL SvxUnoGluePointAccess::rep
             }
         }
 
-        // TTTT:GLUE
-        //const sal_uInt32 nCount = pList ? pList->GetCount() : 0;
-        //sal_uInt32 i;
-        //for( i = 0; i < nCount; i++ )
-        //{
-        //    if( (*pList)[i].GetId() == nId )
-        //    {
-        //        // change the glue point
-        //        sdr::glue::Point& rTempPoint = (*pList)[i];
-        //        convert( aGluePoint, rTempPoint );
-        //
-        //        // only repaint, no objectchange
-        //        mpObject->ActionChanged();
-        //
-        //        return;					
-        //    }
-        //}
-
         throw container::NoSuchElementException();
     }
 }
@@ -217,9 +181,11 @@ uno::Any SAL_CALL SvxUnoGluePointAccess:
 {
     if(mpObject.is())
     {
+        const sdr::glue::GluePointProvider& rProvider = mpObject->GetGluePointProvider();
+
         if( Identifier < NON_USER_DEFINED_GLUE_POINTS ) // default glue point?
         {
-            const sdr::glue::Point aTempPoint(mpObject->GetVertexGluePoint(Identifier));
+            const sdr::glue::GluePoint aTempPoint(rProvider.getAutoGluePointByIndex(Identifier));
             const basegfx::B2DVector aAbsoluteScale(basegfx::absolute(mpObject->getSdrObjectScale()));
             const drawing::GluePoint2 aGluePoint(aTempPoint.convertToGluePoint2(aAbsoluteScale));
 
@@ -228,11 +194,10 @@ uno::Any SAL_CALL SvxUnoGluePointAccess:
         else
         {
             const sal_uInt32 nId(Identifier - NON_USER_DEFINED_GLUE_POINTS);
-            const sdr::glue::List* pList = mpObject->GetGluePointList(false);
 
-            if(pList)
+            if(rProvider.hasUserGluePoints())
             {
-                const sdr::glue::Point* pCandidate = pList->findByID(nId);
+                const sdr::glue::GluePoint* pCandidate = rProvider.findUserGluePointByID(nId);
 
                 if(pCandidate)
                 {
@@ -242,25 +207,6 @@ uno::Any SAL_CALL SvxUnoGluePointAccess:
                     return uno::makeAny( aGluePoint );
                 }
             }
-
-            // TTTT:GLUE
-            //const sal_uInt32 nCount = pList ? pList->GetCount() : 0;
-            //
-            //for( sal_uInt32 i = 0; i < nCount; i++ )
-            //{
-            //    const sdr::glue::Point& rTempPoint = (*pList)[i];
-            //    if( rTempPoint.GetId() == nId )
-            //    {
-            //        // #i38892#
-            //        if(rTempPoint.IsUserDefined())
-            //        {
-            //            aGluePoint.IsUserDefined = sal_True;
-            //        }
-            //
-            //        convert( rTempPoint, aGluePoint );
-            //        return uno::makeAny( aGluePoint );
-            //    }
-            //}
         }
     }
 
@@ -271,8 +217,8 @@ uno::Sequence< sal_Int32 > SAL_CALL SvxU
 {
     if( mpObject.is() )
     { 
-        const sdr::glue::List* pList = mpObject->GetGluePointList(false);
-        const sdr::glue::PointVector aGluePointVector(pList ? pList->getVector() : sdr::glue::PointVector());
+        const sdr::glue::GluePointProvider& rProvider = mpObject->GetGluePointProvider();
+        const sdr::glue::GluePointVector aGluePointVector(rProvider.getUserGluePointVector());
         uno::Sequence< sal_Int32 > aIdSequence(aGluePointVector.size() + NON_USER_DEFINED_GLUE_POINTS);
         sal_Int32 *pIdentifier = aIdSequence.getArray();
         sal_uInt32 i(0);
@@ -284,7 +230,7 @@ uno::Sequence< sal_Int32 > SAL_CALL SvxU
 
         for(i = 0; i < aGluePointVector.size(); i++)
         {
-            const sdr::glue::Point* pCandidate = aGluePointVector[i];
+            const sdr::glue::GluePoint* pCandidate = aGluePointVector[i];
 
             if(pCandidate)
             {
@@ -296,19 +242,6 @@ uno::Sequence< sal_Int32 > SAL_CALL SvxU
             }
         }
 
-        // TTTT:GLUE
-        //const sal_uInt32 nCount = pList ? pList->GetCount() : 0;
-        //sal_uInt32 i;
-        //
-        //uno::Sequence< sal_Int32 > aIdSequence( nCount + NON_USER_DEFINED_GLUE_POINTS );
-        //sal_Int32 *pIdentifier = aIdSequence.getArray();
-        //
-        //for( i = 0; i < NON_USER_DEFINED_GLUE_POINTS; i++ )
-        //    *pIdentifier++ = i;
-        //
-        //for( i = 0; i < nCount; i++ )
-        //    *pIdentifier++ = ( (*pList)[i].GetId() + NON_USER_DEFINED_GLUE_POINTS ) - 1;
-
         return aIdSequence;
     }
     else
@@ -325,18 +258,18 @@ void SAL_CALL SvxUnoGluePointAccess::ins
 {
     if( mpObject.is() )
     {
-        sdr::glue::List* pList = mpObject->GetGluePointList(true);
+        sdr::glue::GluePointProvider& rProvider = mpObject->GetGluePointProvider();
 
-        if( pList )
+        if(rProvider.allowsUserGluePoints())
         {
             drawing::GluePoint2 aUnoGlue;
 
             if( Element >>= aUnoGlue )
             {
                 const basegfx::B2DVector aAbsoluteScale(basegfx::absolute(mpObject->getSdrObjectScale()));
-                const sdr::glue::Point aSdrGlue(aUnoGlue, aAbsoluteScale);
+                sdr::glue::GluePoint aSdrGlue(aUnoGlue, aAbsoluteScale);
 
-                pList->add(aSdrGlue);
+                rProvider.addUserGluePoint(aSdrGlue);
 
                 // only repaint, no objectchange
                 mpObject->ActionChanged();
@@ -355,39 +288,25 @@ void SAL_CALL SvxUnoGluePointAccess::rem
 {
     if( mpObject.is() )
     {
-        sdr::glue::List* pList = mpObject->GetGluePointList(true);
+        sdr::glue::GluePointProvider& rProvider = mpObject->GetGluePointProvider();
 
-        if( pList )
+        if(rProvider.hasUserGluePoints())
         {
             Index -= 4;
 
             if(Index >= 0)
             {
-                const sdr::glue::Point* pCandidate = pList->findByID(Index);
+                const sdr::glue::GluePoint* pCandidate = rProvider.findUserGluePointByID(Index);
 
                 if(pCandidate)
                 {
-                    pList->remove(*pCandidate);
+                    rProvider.removeUserGluePoint(*pCandidate);
 
                     // only repaint, no objectchange
                     mpObject->ActionChanged();
 
                     return;
                 }
-
-                // TTTT:GLUE
-                //{
-                //    const sdr::glue::Point* pCandidate = pList->findByID(sal_uInt32 nID) const;
-                //
-                //
-                //
-                //    pList->Delete( (sal_uInt32)Index );
-                //
-                //    // only repaint, no objectchange
-                //    mpObject->ActionChanged();
-                //
-                //    return;
-                //}
             }
         }
     }
@@ -407,17 +326,17 @@ void SAL_CALL SvxUnoGluePointAccess::rep
 
     if( mpObject.is() && Index >= 0 )
     {
-        const sdr::glue::List* pList = mpObject->GetGluePointList(false);
-        const sdr::glue::PointVector aGluePointVector(pList ? pList->getVector() : sdr::glue::PointVector());
+        const sdr::glue::GluePointProvider& rProvider = mpObject->GetGluePointProvider();
+        const sdr::glue::GluePointVector aGluePointVector(rProvider.getUserGluePointVector());
 
         if(Index < (sal_Int32)aGluePointVector.size())
         {
-            sdr::glue::Point* pCandidate = aGluePointVector[Index];
+            sdr::glue::GluePoint* pCandidate = aGluePointVector[Index];
 
             if(pCandidate)
             {
                 const basegfx::B2DVector aAbsoluteScale(basegfx::absolute(mpObject->getSdrObjectScale()));
-                const sdr::glue::Point aSdrGlue(aUnoGlue, aAbsoluteScale);
+                const sdr::glue::GluePoint aSdrGlue(aUnoGlue, aAbsoluteScale);
 
                 *pCandidate = aSdrGlue;
 
@@ -428,13 +347,6 @@ void SAL_CALL SvxUnoGluePointAccess::rep
             {
                 OSL_ENSURE(false, "Got a sdr::glue::PointVector with empty entries (!)");
             }
-
-            // TTTT:GLUE
-            //rGlue = (*pList)[(sal_uInt32)Index];
-            //convert( aUnoGlue, rGlue );
-            //
-            //// only repaint, no objectchange
-            //mpObject->ActionChanged();
         }
     }
 
@@ -452,8 +364,8 @@ sal_Int32 SAL_CALL SvxUnoGluePointAccess
         // and any number of user defined glue points
         nCount += 4;
 
-        const sdr::glue::List* pList = mpObject->GetGluePointList(false);
-        const sdr::glue::PointVector aGluePointVector(pList ? pList->getVector() : sdr::glue::PointVector());
+        const sdr::glue::GluePointProvider& rProvider = mpObject->GetGluePointProvider();
+        const sdr::glue::GluePointVector aGluePointVector(rProvider.getUserGluePointVector());
 
         nCount += aGluePointVector.size();
     }
@@ -465,9 +377,11 @@ uno::Any SAL_CALL SvxUnoGluePointAccess:
 {
     if(Index >= 0 && mpObject.is())
     {
-        if( Index < 4 ) // default glue point?
+        const sdr::glue::GluePointProvider& rProvider = mpObject->GetGluePointProvider();
+
+        if(Index < 4) // default glue point?
         {
-            const sdr::glue::Point aTempPoint(mpObject->GetVertexGluePoint(Index));
+            const sdr::glue::GluePoint aTempPoint(rProvider.getAutoGluePointByIndex(Index));
             const basegfx::B2DVector aAbsoluteScale(basegfx::absolute(mpObject->getSdrObjectScale()));
             const drawing::GluePoint2 aGluePoint(aTempPoint.convertToGluePoint2(aAbsoluteScale));
             uno::Any aAny;
@@ -478,12 +392,11 @@ uno::Any SAL_CALL SvxUnoGluePointAccess:
         else
         {
             Index -= 4;
-            const sdr::glue::List* pList = mpObject->GetGluePointList(false);
-            const sdr::glue::PointVector aGluePointVector(pList ? pList->getVector() : sdr::glue::PointVector());
+            const sdr::glue::GluePointVector aGluePointVector(rProvider.getUserGluePointVector());
 
-            if(pList && Index < (sal_Int32)aGluePointVector.size())
+            if(Index < (sal_Int32)aGluePointVector.size())
             {
-                const sdr::glue::Point* pCandidate = aGluePointVector[Index];
+                const sdr::glue::GluePoint* pCandidate = aGluePointVector[Index];
 
                 if(pCandidate)
                 {
@@ -498,14 +411,6 @@ uno::Any SAL_CALL SvxUnoGluePointAccess:
                 {
                     OSL_ENSURE(false, "Got a sdr::glue::PointVector with empty entries (!)");
                 }
-
-                // TTTT:GLUE
-                //rTempPoint = (*pList)[(sal_uInt32)Index];
-                //aGluePoint.IsUserDefined = sal_True;
-                //convert( rTempPoint, aGluePoint );
-                //uno::Any aAny;
-                //aAny <<= aGluePoint;
-                //return aAny;
             }
         }
     }

Modified: openoffice/branches/alg/aw080/main/sw/source/ui/docvw/edtwin.cxx
URL: http://svn.apache.org/viewvc/openoffice/branches/alg/aw080/main/sw/source/ui/docvw/edtwin.cxx?rev=1533203&r1=1533202&r2=1533203&view=diff
==============================================================================
--- openoffice/branches/alg/aw080/main/sw/source/ui/docvw/edtwin.cxx (original)
+++ openoffice/branches/alg/aw080/main/sw/source/ui/docvw/edtwin.cxx Thu Oct 17 18:36:03 2013
@@ -1262,37 +1262,7 @@ void SwEditWin::ChangeDrawing( sal_uInt8
                 {
                     // move handle with index nHandleIndex
                     pSdrView->MoveHandleByVector(*pHdl, basegfx::B2DVector(nX, nY), 0, 0);
-
-                    // TTTT:HANDLE
-                    //// now move the Handle (nX, nY)
-                    //const basegfx::B2DPoint aStartPoint(pHdl->getPosition());
-                    //const basegfx::B2DPoint aEndPoint(aStartPoint + basegfx::B2DPoint(nX, nY));
-                    //const SdrDragStat& rDragStat = pSdrView->GetDragStat();
-                    //
-                    //// start dragging
-                    //pSdrView->BegDragObj(aStartPoint, pHdl, 0.0);
-                    //
-                    //if(pSdrView->IsDragObj())
-                    //{
-                    //    const bool bWasNoSnap(rDragStat.IsNoSnap());
-                    //    const bool bWasSnapEnabled(pSdrView->IsSnapEnabled());
-                    //
-                    //    // switch snapping off
-                    //    if(!bWasNoSnap)
-                    //        ((SdrDragStat&)rDragStat).SetNoSnap(true);
-                    //    if(bWasSnapEnabled)
-                    //        pSdrView->SetSnapEnabled(false);
-                    //
-                    //    pSdrView->MovAction(aEndPoint);
-                    //    pSdrView->EndDragObj();
-                        rSh.SetModified();
-
-                    //    // restore snap
-                    //    if(!bWasNoSnap)
-                    //        ((SdrDragStat&)rDragStat).SetNoSnap(bWasNoSnap);
-                    //    if(bWasSnapEnabled)
-                    //        pSdrView->SetSnapEnabled(bWasSnapEnabled);
-                    //}
+                    rSh.SetModified();
                 }
             }
         }