LCOV - code coverage report
Current view: top level - svx/source/svdraw - svdmark.cxx (source / functions) Hit Total Coverage
Test: libreoffice_filtered.info Lines: 254 401 63.3 %
Date: 2012-08-25 Functions: 27 32 84.4 %
Legend: Lines: hit not hit | Branches: + taken - not taken # not executed Branches: 190 620 30.6 %

           Branch data     Line data    Source code
       1                 :            : /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
       2                 :            : /*************************************************************************
       3                 :            :  *
       4                 :            :  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
       5                 :            :  *
       6                 :            :  * Copyright 2000, 2010 Oracle and/or its affiliates.
       7                 :            :  *
       8                 :            :  * OpenOffice.org - a multi-platform office productivity suite
       9                 :            :  *
      10                 :            :  * This file is part of OpenOffice.org.
      11                 :            :  *
      12                 :            :  * OpenOffice.org is free software: you can redistribute it and/or modify
      13                 :            :  * it under the terms of the GNU Lesser General Public License version 3
      14                 :            :  * only, as published by the Free Software Foundation.
      15                 :            :  *
      16                 :            :  * OpenOffice.org is distributed in the hope that it will be useful,
      17                 :            :  * but WITHOUT ANY WARRANTY; without even the implied warranty of
      18                 :            :  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
      19                 :            :  * GNU Lesser General Public License version 3 for more details
      20                 :            :  * (a copy is included in the LICENSE file that accompanied this code).
      21                 :            :  *
      22                 :            :  * You should have received a copy of the GNU Lesser General Public License
      23                 :            :  * version 3 along with OpenOffice.org.  If not, see
      24                 :            :  * <http://www.openoffice.org/license.html>
      25                 :            :  * for a copy of the LGPLv3 License.
      26                 :            :  *
      27                 :            :  ************************************************************************/
      28                 :            : 
      29                 :            : 
      30                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
      31                 :            : 
      32                 :            : #include <svx/svdmark.hxx>
      33                 :            : #include <svx/svdetc.hxx>
      34                 :            : #include <svx/svdobj.hxx>
      35                 :            : #include <svx/svdpage.hxx>
      36                 :            : #include "svx/svditer.hxx"
      37                 :            : #include <svx/svdpagv.hxx>
      38                 :            : #include <svx/svdopath.hxx> // To turn off
      39                 :            : #include <svx/svdogrp.hxx>  // the cache at
      40                 :            : #include <svx/svdorect.hxx> // GetMarkDescription.
      41                 :            : #include "svx/svdstr.hrc"   // names taken from the resource
      42                 :            : #include "svx/svdglob.hxx"  // StringCache
      43                 :            : 
      44                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
      45                 :            : #include <svx/obj3d.hxx>
      46                 :            : #include <svx/scene3d.hxx>
      47                 :            : #include <svl/brdcst.hxx>
      48                 :            : #include <svx/svdoedge.hxx>
      49                 :            : 
      50                 :            : 
      51                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
      52                 :            : 
      53                 :       1138 : SdrMark::SdrMark(SdrObject* pNewObj, SdrPageView* pNewPageView)
      54                 :            : :   mpSelectedSdrObject(pNewObj),
      55                 :            :     mpPageView(pNewPageView),
      56                 :            :     mpPoints(0L),
      57                 :            :     mpLines(0L),
      58                 :            :     mpGluePoints(0L),
      59                 :            :     mbCon1(sal_False),
      60                 :            :     mbCon2(sal_False),
      61                 :       1138 :     mnUser(0)
      62                 :            : {
      63         [ +  - ]:       1138 :     if(mpSelectedSdrObject)
      64                 :            :     {
      65         [ +  - ]:       1138 :         mpSelectedSdrObject->AddObjectUser( *this );
      66                 :            :     }
      67                 :       1138 : }
      68                 :            : 
      69                 :       1178 : SdrMark::SdrMark(const SdrMark& rMark)
      70                 :            : :   ObjectUser(),
      71                 :            :     mpSelectedSdrObject(0L),
      72                 :            :     mpPageView(0L),
      73                 :            :     mpPoints(0L),
      74                 :            :     mpLines(0L),
      75                 :            :     mpGluePoints(0L),
      76                 :            :     mbCon1(sal_False),
      77                 :            :     mbCon2(sal_False),
      78                 :       1178 :     mnUser(0)
      79                 :            : {
      80         [ +  - ]:       1178 :     *this = rMark;
      81                 :       1178 : }
      82                 :            : 
      83                 :       2316 : SdrMark::~SdrMark()
      84                 :            : {
      85         [ +  - ]:       2316 :     if(mpSelectedSdrObject)
      86                 :            :     {
      87         [ +  - ]:       2316 :         mpSelectedSdrObject->RemoveObjectUser( *this );
      88                 :            :     }
      89                 :            : 
      90         [ -  + ]:       2316 :     if(mpPoints)
      91                 :            :     {
      92         [ #  # ]:          0 :         delete mpPoints;
      93                 :            :     }
      94                 :            : 
      95         [ -  + ]:       2316 :     if(mpLines)
      96                 :            :     {
      97         [ #  # ]:          0 :         delete mpLines;
      98                 :            :     }
      99                 :            : 
     100         [ -  + ]:       2316 :     if(mpGluePoints)
     101                 :            :     {
     102         [ #  # ]:          0 :         delete mpGluePoints;
     103                 :            :     }
     104         [ -  + ]:       3494 : }
     105                 :            : 
     106                 :          0 : void SdrMark::ObjectInDestruction(const SdrObject& rObject)
     107                 :            : {
     108                 :            :     (void) rObject; // avoid warnings
     109                 :            :     OSL_ENSURE(mpSelectedSdrObject && mpSelectedSdrObject == &rObject, "SdrMark::ObjectInDestruction: called form object different from hosted one (!)");
     110                 :            :     OSL_ENSURE(mpSelectedSdrObject, "SdrMark::ObjectInDestruction: still selected SdrObject is deleted, deselect first (!)");
     111                 :          0 :     mpSelectedSdrObject = 0L;
     112                 :          0 : }
     113                 :            : 
     114                 :       1178 : void SdrMark::SetMarkedSdrObj(SdrObject* pNewObj)
     115                 :            : {
     116         [ -  + ]:       1178 :     if(mpSelectedSdrObject)
     117                 :            :     {
     118                 :          0 :         mpSelectedSdrObject->RemoveObjectUser( *this );
     119                 :            :     }
     120                 :            : 
     121                 :       1178 :     mpSelectedSdrObject = pNewObj;
     122                 :            : 
     123         [ +  - ]:       1178 :     if(mpSelectedSdrObject)
     124                 :            :     {
     125                 :       1178 :         mpSelectedSdrObject->AddObjectUser( *this );
     126                 :            :     }
     127                 :       1178 : }
     128                 :            : 
     129                 :      12623 : SdrObject* SdrMark::GetMarkedSdrObj() const
     130                 :            : {
     131                 :      12623 :     return mpSelectedSdrObject;
     132                 :            : }
     133                 :            : 
     134                 :       1178 : SdrMark& SdrMark::operator=(const SdrMark& rMark)
     135                 :            : {
     136                 :       1178 :     SetMarkedSdrObj(rMark.mpSelectedSdrObject);
     137                 :       1178 :     mpPageView = rMark.mpPageView;
     138                 :       1178 :     mbCon1 = rMark.mbCon1;
     139                 :       1178 :     mbCon2 = rMark.mbCon2;
     140                 :       1178 :     mnUser = rMark.mnUser;
     141                 :            : 
     142         [ +  - ]:       1178 :     if(!rMark.mpPoints)
     143                 :            :     {
     144         [ -  + ]:       1178 :         if(mpPoints)
     145                 :            :         {
     146         [ #  # ]:          0 :             delete mpPoints;
     147                 :          0 :             mpPoints = 0L;
     148                 :            :         }
     149                 :            :     }
     150                 :            :     else
     151                 :            :     {
     152         [ #  # ]:          0 :         if(!mpPoints)
     153                 :            :         {
     154         [ #  # ]:          0 :             mpPoints = new SdrUShortCont(*rMark.mpPoints);
     155                 :            :         }
     156                 :            :         else
     157                 :            :         {
     158                 :          0 :             *mpPoints = *rMark.mpPoints;
     159                 :            :         }
     160                 :            :     }
     161                 :            : 
     162         [ +  - ]:       1178 :     if(!rMark.mpLines)
     163                 :            :     {
     164         [ -  + ]:       1178 :         if(mpLines)
     165                 :            :         {
     166         [ #  # ]:          0 :             delete mpLines;
     167                 :          0 :             mpLines = 0L;
     168                 :            :         }
     169                 :            :     }
     170                 :            :     else
     171                 :            :     {
     172         [ #  # ]:          0 :         if(!mpLines)
     173                 :            :         {
     174         [ #  # ]:          0 :             mpLines = new SdrUShortCont(*rMark.mpLines);
     175                 :            :         }
     176                 :            :         else
     177                 :            :         {
     178                 :          0 :             *mpLines = *rMark.mpLines;
     179                 :            :         }
     180                 :            :     }
     181                 :            : 
     182         [ +  - ]:       1178 :     if(!rMark.mpGluePoints)
     183                 :            :     {
     184         [ -  + ]:       1178 :         if(mpGluePoints)
     185                 :            :         {
     186         [ #  # ]:          0 :             delete mpGluePoints;
     187                 :          0 :             mpGluePoints = 0L;
     188                 :            :         }
     189                 :            :     }
     190                 :            :     else
     191                 :            :     {
     192         [ #  # ]:          0 :         if(!mpGluePoints)
     193                 :            :         {
     194         [ #  # ]:          0 :             mpGluePoints = new SdrUShortCont(*rMark.mpGluePoints);
     195                 :            :         }
     196                 :            :         else
     197                 :            :         {
     198                 :          0 :             *mpGluePoints = *rMark.mpGluePoints;
     199                 :            :         }
     200                 :            :     }
     201                 :            : 
     202                 :       1178 :     return *this;
     203                 :            : }
     204                 :            : 
     205                 :          0 : sal_Bool SdrMark::operator==(const SdrMark& rMark) const
     206                 :            : {
     207 [ #  # ][ #  # ]:          0 :     sal_Bool bRet(mpSelectedSdrObject == rMark.mpSelectedSdrObject && mpPageView == rMark.mpPageView && mbCon1 == rMark.mbCon1 && mbCon2 == rMark.mbCon2 && mnUser == rMark.mnUser);
         [ #  # ][ #  # ]
                 [ #  # ]
     208                 :            : 
     209         [ #  # ]:          0 :     if((mpPoints != 0L) != (rMark.mpPoints != 0L))
     210                 :          0 :         bRet = sal_False;
     211                 :            : 
     212         [ #  # ]:          0 :     if((mpLines != 0L) != (rMark.mpLines != 0L))
     213                 :          0 :         bRet = sal_False;
     214                 :            : 
     215         [ #  # ]:          0 :     if((mpGluePoints != 0L) != (rMark.mpGluePoints != 0L))
     216                 :          0 :         bRet = sal_False;
     217                 :            : 
     218 [ #  # ][ #  # ]:          0 :     if(bRet && mpPoints && *mpPoints != *rMark.mpPoints)
         [ #  # ][ #  # ]
     219                 :          0 :         bRet = sal_False;
     220                 :            : 
     221 [ #  # ][ #  # ]:          0 :     if(bRet && mpLines && *mpLines != *rMark.mpLines)
         [ #  # ][ #  # ]
     222                 :          0 :         bRet = sal_False;
     223                 :            : 
     224 [ #  # ][ #  # ]:          0 :     if(bRet && mpGluePoints && *mpGluePoints != *rMark.mpGluePoints)
         [ #  # ][ #  # ]
     225                 :          0 :         bRet = sal_False;
     226                 :            : 
     227                 :          0 :     return bRet;
     228                 :            : }
     229                 :            : 
     230                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     231                 :            : 
     232                 :         84 : static bool ImpSdrMarkListSorter(SdrMark* const& lhs, SdrMark* const& rhs)
     233                 :            : {
     234                 :         84 :     SdrObject* pObj1 = lhs->GetMarkedSdrObj();
     235                 :         84 :     SdrObject* pObj2 = rhs->GetMarkedSdrObj();
     236         [ +  - ]:         84 :     SdrObjList* pOL1 = (pObj1) ? pObj1->GetObjList() : 0L;
     237         [ +  - ]:         84 :     SdrObjList* pOL2 = (pObj2) ? pObj2->GetObjList() : 0L;
     238                 :            : 
     239         [ +  - ]:         84 :     if (pOL1 == pOL2)
     240                 :            :     {
     241                 :            :         // AF: Note that I reverted a change from sal_uInt32 to sal_uLong (made
     242                 :            :         // for 64bit compliance, #i78198#) because internally in SdrObject
     243                 :            :         // both nOrdNum and mnNavigationPosition are stored as sal_uInt32.
     244         [ +  - ]:         84 :         sal_uInt32 nObjOrd1((pObj1) ? pObj1->GetNavigationPosition() : 0);
     245         [ +  - ]:         84 :         sal_uInt32 nObjOrd2((pObj2) ? pObj2->GetNavigationPosition() : 0);
     246                 :            : 
     247                 :         84 :         return nObjOrd1 < nObjOrd2;
     248                 :            :     }
     249                 :            :     else
     250                 :            :     {
     251                 :         84 :         return (long)pOL1 < (long)pOL2;
     252                 :            :     }
     253                 :            : }
     254                 :            : 
     255                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     256                 :            : 
     257                 :      15885 : void SdrMarkList::ForceSort() const
     258                 :            : {
     259         [ +  + ]:      15885 :     if(!mbSorted)
     260                 :            :     {
     261                 :       4408 :         ((SdrMarkList*)this)->ImpForceSort();
     262                 :            :     }
     263                 :      15885 : }
     264                 :            : 
     265                 :       4408 : void SdrMarkList::ImpForceSort()
     266                 :            : {
     267         [ +  - ]:       4408 :     if(!mbSorted)
     268                 :            :     {
     269                 :       4408 :         mbSorted = sal_True;
     270                 :       4408 :         sal_uLong nAnz = maList.size();
     271                 :            : 
     272                 :            :         // remove invalid
     273         [ +  + ]:       4408 :         if(nAnz > 0 )
     274                 :            :         {
     275 [ +  - ][ +  + ]:        104 :             for(std::vector<SdrMark*>::iterator it = maList.begin(); it != maList.end(); )
     276                 :            :             {
     277         [ +  - ]:         80 :                 SdrMark* pAkt = *it;
     278 [ +  - ][ -  + ]:         80 :                 if(pAkt->GetMarkedSdrObj() == 0)
     279                 :            :                 {
     280         [ #  # ]:          0 :                     it = maList.erase( it );
     281 [ #  # ][ #  # ]:          0 :                     delete pAkt;
     282                 :            :                 }
     283                 :            :                 else
     284         [ +  - ]:         80 :                     ++it;
     285                 :            :             }
     286                 :         24 :             nAnz = maList.size();
     287                 :            :         }
     288                 :            : 
     289         [ +  + ]:       4408 :         if(nAnz > 1)
     290                 :            :         {
     291                 :         24 :             std::sort(maList.begin(), maList.end(), ImpSdrMarkListSorter);
     292                 :            : 
     293                 :            :             // remove duplicates
     294         [ +  - ]:         24 :             if(maList.size() > 1)
     295                 :            :             {
     296         [ +  - ]:         24 :                 SdrMark* pAkt = maList.back();
     297                 :         24 :                 int i = maList.size() - 2;
     298         [ +  + ]:         56 :                 while(i)
     299                 :            :                 {
     300         [ +  - ]:         32 :                     SdrMark* pCmp = maList[i];
     301 [ +  - ][ +  - ]:         32 :                     if(pAkt->GetMarkedSdrObj() == pCmp->GetMarkedSdrObj() && pAkt->GetMarkedSdrObj())
         [ -  + ][ #  # ]
         [ #  # ][ -  + ]
     302                 :            :                     {
     303                 :            :                         // Con1/Con2 Merging
     304         [ #  # ]:          0 :                         if(pCmp->IsCon1())
     305                 :          0 :                             pAkt->SetCon1(sal_True);
     306                 :            : 
     307         [ #  # ]:          0 :                         if(pCmp->IsCon2())
     308                 :          0 :                             pAkt->SetCon2(sal_True);
     309                 :            : 
     310                 :            :                         // delete pCmp
     311 [ #  # ][ #  # ]:          0 :                         maList.erase(maList.begin() + i);
     312                 :            : 
     313 [ #  # ][ #  # ]:          0 :                         delete pCmp;
     314                 :            :                     }
     315                 :            :                     else
     316                 :            :                     {
     317                 :         32 :                         pAkt = pCmp;
     318                 :            :                     }
     319                 :            : 
     320                 :         32 :                     --i;
     321                 :            :                 }
     322                 :            :             }
     323                 :            :         }
     324                 :            :     }
     325                 :       4408 : }
     326                 :            : 
     327                 :      29922 : void SdrMarkList::Clear()
     328                 :            : {
     329         [ +  + ]:      30786 :     for(sal_uLong i(0L); i < GetMarkCount(); i++)
     330                 :            :     {
     331                 :        864 :         SdrMark* pMark = GetMark(i);
     332         [ +  - ]:        864 :         delete pMark;
     333                 :            :     }
     334                 :            : 
     335                 :      29922 :     maList.clear();
     336                 :      29922 :     SetNameDirty();
     337                 :      29922 : }
     338                 :            : 
     339                 :         72 : void SdrMarkList::operator=(const SdrMarkList& rLst)
     340                 :            : {
     341                 :         72 :     Clear();
     342                 :            : 
     343         [ +  + ]:         75 :     for(sal_uLong i(0L); i < rLst.GetMarkCount(); i++)
     344                 :            :     {
     345         [ +  - ]:          3 :         SdrMark* pMark = rLst.GetMark(i);
     346 [ +  - ][ +  - ]:          3 :         SdrMark* pNeuMark = new SdrMark(*pMark);
     347         [ +  - ]:          3 :         maList.push_back(pNeuMark);
     348                 :            :     }
     349                 :            : 
     350                 :         72 :     maMarkName = rLst.maMarkName;
     351                 :         72 :     mbNameOk = rLst.mbNameOk;
     352                 :         72 :     maPointName = rLst.maPointName;
     353                 :         72 :     mbPointNameOk = rLst.mbPointNameOk;
     354                 :         72 :     maGluePointName = rLst.maGluePointName;
     355                 :         72 :     mbGluePointNameOk = rLst.mbGluePointNameOk;
     356                 :         72 :     mbSorted = rLst.mbSorted;
     357                 :         72 : }
     358                 :            : 
     359                 :         10 : sal_uLong SdrMarkList::FindObject(const SdrObject* pObj) const
     360                 :            : {
     361                 :            :     // Since relying on OrdNums is not allowed for the selection because objects in the
     362                 :            :     // selection may not be inserted in a list if they are e.g. modified ATM, i changed
     363                 :            :     // this loop to just look if the object pointer is in the selection.
     364                 :            :     //
     365                 :            :     // Problem is that GetOrdNum() which is const, internally casts to non-const and
     366                 :            :     // hardly sets the OrdNum member of the object (nOrdNum) to 0 (ZERO) if the object
     367                 :            :     // is not inserted in a object list.
     368                 :            :     // Since this may be by purpose and necessary somewhere else i decided that it is
     369                 :            :     // less dangerous to change this method then changing SdrObject::GetOrdNum().
     370 [ +  - ][ -  + ]:         10 :     if(pObj && !maList.empty())
                 [ -  + ]
     371                 :            :     {
     372         [ #  # ]:          0 :         for(sal_uLong a(0L); a < maList.size(); a++)
     373                 :            :         {
     374         [ #  # ]:          0 :             if(maList[a]->GetMarkedSdrObj() == pObj)
     375                 :            :             {
     376                 :          0 :                 return a;
     377                 :            :             }
     378                 :            :         }
     379                 :            :     }
     380                 :            : 
     381                 :         10 :     return CONTAINER_ENTRY_NOTFOUND;
     382                 :            : }
     383                 :            : 
     384                 :       1135 : void SdrMarkList::InsertEntry(const SdrMark& rMark, sal_Bool bChkSort)
     385                 :            : {
     386                 :       1135 :     SetNameDirty();
     387                 :       1135 :     sal_uLong nAnz(maList.size());
     388                 :            : 
     389 [ +  + ][ +  + ]:       1135 :     if(!bChkSort || !mbSorted || nAnz == 0)
                 [ +  + ]
     390                 :            :     {
     391         [ +  + ]:        931 :         if(!bChkSort)
     392                 :         28 :             mbSorted = sal_False;
     393                 :            : 
     394 [ +  - ][ +  - ]:        931 :         maList.push_back(new SdrMark(rMark));
     395                 :            :     }
     396                 :            :     else
     397                 :            :     {
     398                 :        204 :         SdrMark* pLast = GetMark(sal_uLong(nAnz - 1));
     399                 :        204 :         const SdrObject* pLastObj = pLast->GetMarkedSdrObj();
     400                 :        204 :         const SdrObject* pNeuObj = rMark.GetMarkedSdrObj();
     401                 :            : 
     402         [ -  + ]:        204 :         if(pLastObj == pNeuObj)
     403                 :            :         {
     404                 :            :             // This one already exists.
     405                 :            :             // Con1/Con2 Merging
     406         [ #  # ]:          0 :             if(rMark.IsCon1())
     407                 :          0 :                 pLast->SetCon1(sal_True);
     408                 :            : 
     409         [ #  # ]:          0 :             if(rMark.IsCon2())
     410                 :          0 :                 pLast->SetCon2(sal_True);
     411                 :            :         }
     412                 :            :         else
     413                 :            :         {
     414 [ +  - ][ +  - ]:        204 :             SdrMark* pKopie = new SdrMark(rMark);
     415         [ +  - ]:        204 :             maList.push_back(pKopie);
     416                 :            : 
     417                 :            :             // now check if the sort is ok
     418 [ +  - ][ +  - ]:        204 :             const SdrObjList* pLastOL = pLastObj!=0L ? pLastObj->GetObjList() : 0L;
     419 [ +  - ][ +  - ]:        204 :             const SdrObjList* pNeuOL = pNeuObj !=0L ? pNeuObj ->GetObjList() : 0L;
     420                 :            : 
     421         [ +  - ]:        204 :             if(pLastOL == pNeuOL)
     422                 :            :             {
     423 [ +  - ][ +  - ]:        204 :                 const sal_uLong nLastNum(pLastObj!=0L ? pLastObj->GetOrdNum() : 0);
     424 [ +  - ][ +  - ]:        204 :                 const sal_uLong nNeuNum(pNeuObj !=0L ? pNeuObj ->GetOrdNum() : 0);
     425                 :            : 
     426         [ +  + ]:        204 :                 if(nNeuNum < nLastNum)
     427                 :            :                 {
     428                 :            :                     // at some point, we have to sort
     429                 :         21 :                     mbSorted = sal_False;
     430                 :            :                 }
     431                 :            :             }
     432                 :            :             else
     433                 :            :             {
     434                 :            :                 // at some point, we have to sort
     435                 :        204 :                 mbSorted = sal_False;
     436                 :            :             }
     437                 :            :         }
     438                 :            :     }
     439                 :            : 
     440                 :       1135 :     return;
     441                 :            : }
     442                 :            : 
     443                 :         37 : void SdrMarkList::DeleteMark(sal_uLong nNum)
     444                 :            : {
     445                 :         37 :     SdrMark* pMark = GetMark(nNum);
     446                 :            :     DBG_ASSERT(pMark!=0L,"DeleteMark: MarkEntry not found.");
     447                 :            : 
     448         [ +  - ]:         37 :     if(pMark)
     449                 :            :     {
     450 [ +  - ][ +  - ]:         37 :         maList.erase(maList.begin() + nNum);
     451         [ +  - ]:         37 :         delete pMark;
     452                 :         37 :         SetNameDirty();
     453                 :            :     }
     454                 :         37 : }
     455                 :            : 
     456                 :         40 : void SdrMarkList::ReplaceMark(const SdrMark& rNewMark, sal_uLong nNum)
     457                 :            : {
     458                 :         40 :     SdrMark* pMark = GetMark(nNum);
     459                 :            :     DBG_ASSERT(pMark!=0L,"ReplaceMark: MarkEntry not found.");
     460                 :            : 
     461         [ +  - ]:         40 :     if(pMark)
     462                 :            :     {
     463         [ +  - ]:         40 :         delete pMark;
     464                 :         40 :         SetNameDirty();
     465         [ +  - ]:         40 :         SdrMark* pKopie = new SdrMark(rNewMark);
     466                 :         40 :         maList[nNum] = pKopie;
     467                 :         40 :         mbSorted = sal_False;
     468                 :            :     }
     469                 :         40 : }
     470                 :            : 
     471                 :         18 : void SdrMarkList::Merge(const SdrMarkList& rSrcList, sal_Bool bReverse)
     472                 :            : {
     473                 :         18 :     sal_uLong nAnz(rSrcList.maList.size());
     474                 :            : 
     475         [ +  + ]:         18 :     if(rSrcList.mbSorted)
     476                 :            :     {
     477                 :            :         // merge without forcing a Sort in rSrcList
     478                 :          9 :         bReverse = sal_False;
     479                 :            :     }
     480                 :            : 
     481         [ +  + ]:         18 :     if(!bReverse)
     482                 :            :     {
     483         [ +  + ]:         18 :         for(sal_uLong i(0L); i < nAnz; i++)
     484                 :            :         {
     485                 :          9 :             SdrMark* pM = rSrcList.maList[i];
     486                 :          9 :             InsertEntry(*pM);
     487                 :            :         }
     488                 :            :     }
     489                 :            :     else
     490                 :            :     {
     491         [ +  + ]:         37 :         for(sal_uLong i(nAnz); i > 0;)
     492                 :            :         {
     493                 :         28 :             i--;
     494                 :         28 :             SdrMark* pM = rSrcList.maList[i];
     495                 :         28 :             InsertEntry(*pM);
     496                 :            :         }
     497                 :            :     }
     498                 :         18 : }
     499                 :            : 
     500                 :       2966 : sal_Bool SdrMarkList::DeletePageView(const SdrPageView& rPV)
     501                 :            : {
     502                 :       2966 :     sal_Bool bChgd(sal_False);
     503                 :            : 
     504 [ +  - ][ +  + ]:       3203 :     for(std::vector<SdrMark*>::iterator it = maList.begin(); it != maList.end(); )
     505                 :            :     {
     506         [ +  - ]:        237 :         SdrMark* pMark = *it;
     507                 :            : 
     508         [ +  - ]:        237 :         if(pMark->GetPageView()==&rPV)
     509                 :            :         {
     510         [ +  - ]:        237 :             it = maList.erase(it);
     511 [ +  - ][ +  - ]:        237 :             delete pMark;
     512                 :        237 :             SetNameDirty();
     513                 :        237 :             bChgd = sal_True;
     514                 :            :         }
     515                 :            :         else
     516         [ #  # ]:          0 :             ++it;
     517                 :            :     }
     518                 :            : 
     519                 :       2966 :     return bChgd;
     520                 :            : }
     521                 :            : 
     522                 :          0 : sal_Bool SdrMarkList::InsertPageView(const SdrPageView& rPV)
     523                 :            : {
     524                 :          0 :     sal_Bool bChgd(sal_False);
     525                 :          0 :     DeletePageView(rPV); // delete all of them, then append the entire page
     526                 :            :     SdrObject* pObj;
     527                 :          0 :     const SdrObjList* pOL = rPV.GetObjList();
     528                 :          0 :     sal_uLong nObjAnz(pOL->GetObjCount());
     529                 :            : 
     530         [ #  # ]:          0 :     for(sal_uLong nO(0L); nO < nObjAnz; nO++)
     531                 :            :     {
     532                 :          0 :         pObj = pOL->GetObj(nO);
     533                 :          0 :         sal_Bool bDoIt(rPV.IsObjMarkable(pObj));
     534                 :            : 
     535         [ #  # ]:          0 :         if(bDoIt)
     536                 :            :         {
     537 [ #  # ][ #  # ]:          0 :             SdrMark* pM = new SdrMark(pObj, (SdrPageView*)&rPV);
     538         [ #  # ]:          0 :             maList.push_back(pM);
     539                 :          0 :             SetNameDirty();
     540                 :          0 :             bChgd = sal_True;
     541                 :            :         }
     542                 :            :     }
     543                 :            : 
     544                 :          0 :     return bChgd;
     545                 :            : }
     546                 :            : 
     547                 :         46 : const XubString& SdrMarkList::GetMarkDescription() const
     548                 :            : {
     549                 :         46 :     sal_uLong nAnz(GetMarkCount());
     550                 :            : 
     551 [ #  # ][ -  + ]:         46 :     if(mbNameOk && 1L == nAnz)
     552                 :            :     {
     553                 :            :         // if it's a single selection, cache only text frame
     554                 :          0 :         const SdrObject* pObj = GetMark(0)->GetMarkedSdrObj();
     555 [ #  # ][ #  # ]:          0 :         const SdrTextObj* pTextObj = PTR_CAST(SdrTextObj, pObj);
     556                 :            : 
     557 [ #  # ][ #  # ]:          0 :         if(!pTextObj || !pTextObj->IsTextFrame())
                 [ #  # ]
     558                 :            :         {
     559                 :          0 :             ((SdrMarkList*)(this))->mbNameOk = sal_False;
     560                 :            :         }
     561                 :            :     }
     562                 :            : 
     563         [ +  - ]:         46 :     if(!mbNameOk)
     564                 :            :     {
     565         [ +  - ]:         46 :         SdrMark* pMark = GetMark(0);
     566         [ +  - ]:         46 :         XubString aNam;
     567                 :            : 
     568         [ -  + ]:         46 :         if(!nAnz)
     569                 :            :         {
     570 [ #  # ][ #  # ]:          0 :             ((SdrMarkList*)(this))->maMarkName = ImpGetResStr(STR_ObjNameNoObj);
                 [ #  # ]
     571                 :            :         }
     572         [ +  + ]:         46 :         else if(1L == nAnz)
     573                 :            :         {
     574 [ +  - ][ +  - ]:         13 :             if(pMark->GetMarkedSdrObj())
     575                 :            :             {
     576 [ +  - ][ +  - ]:         13 :                 pMark->GetMarkedSdrObj()->TakeObjNameSingul(aNam);
     577                 :            :             }
     578                 :            :         }
     579                 :            :         else
     580                 :            :         {
     581 [ +  - ][ +  - ]:         33 :             if(pMark->GetMarkedSdrObj())
     582                 :            :             {
     583 [ +  - ][ +  - ]:         33 :                 pMark->GetMarkedSdrObj()->TakeObjNamePlural(aNam);
     584         [ +  - ]:         33 :                 XubString aStr1;
     585                 :         33 :                 sal_Bool bEq(sal_True);
     586                 :            : 
     587 [ +  + ][ +  + ]:         84 :                 for(sal_uLong i = 1; i < GetMarkCount() && bEq; i++)
                 [ +  + ]
     588                 :            :                 {
     589         [ +  - ]:         51 :                     SdrMark* pMark2 = GetMark(i);
     590 [ +  - ][ +  - ]:         51 :                     pMark2->GetMarkedSdrObj()->TakeObjNamePlural(aStr1);
     591         [ +  - ]:         51 :                     bEq = aNam.Equals(aStr1);
     592                 :            :                 }
     593                 :            : 
     594         [ +  + ]:         33 :                 if(!bEq)
     595                 :            :                 {
     596 [ +  - ][ +  - ]:         20 :                     aNam = ImpGetResStr(STR_ObjNamePlural);
                 [ +  - ]
     597         [ +  - ]:         33 :                 }
     598                 :            :             }
     599                 :            : 
     600         [ +  - ]:         33 :             aNam.Insert(sal_Unicode(' '), 0);
     601 [ +  - ][ +  - ]:         33 :             aNam.Insert(UniString::CreateFromInt32(nAnz), 0);
                 [ +  - ]
     602                 :            :         }
     603                 :            : 
     604         [ +  - ]:         46 :         ((SdrMarkList*)(this))->maMarkName = aNam;
     605         [ +  - ]:         46 :         ((SdrMarkList*)(this))->mbNameOk = sal_True;
     606                 :            :     }
     607                 :            : 
     608                 :         46 :     return maMarkName;
     609                 :            : }
     610                 :            : 
     611                 :          0 : const XubString& SdrMarkList::GetPointMarkDescription(sal_Bool bGlue) const
     612                 :            : {
     613         [ #  # ]:          0 :     sal_Bool& rNameOk = (sal_Bool&)(bGlue ? mbGluePointNameOk : mbPointNameOk);
     614         [ #  # ]:          0 :     XubString& rName = (XubString&)(bGlue ? maGluePointName : maPointName);
     615                 :          0 :     sal_uLong nMarkAnz(GetMarkCount());
     616                 :          0 :     sal_uLong nMarkPtAnz(0L);
     617                 :          0 :     sal_uLong nMarkPtObjAnz(0L);
     618                 :          0 :     sal_uLong n1stMarkNum(ULONG_MAX);
     619                 :            : 
     620         [ #  # ]:          0 :     for(sal_uLong nMarkNum(0L); nMarkNum < nMarkAnz; nMarkNum++)
     621                 :            :     {
     622                 :          0 :         const SdrMark* pMark = GetMark(nMarkNum);
     623         [ #  # ]:          0 :         const SdrUShortCont* pPts = bGlue ? pMark->GetMarkedGluePoints() : pMark->GetMarkedPoints();
     624         [ #  # ]:          0 :         sal_uLong nAnz(pPts ? pPts->size() : 0);
     625                 :            : 
     626         [ #  # ]:          0 :         if(nAnz)
     627                 :            :         {
     628         [ #  # ]:          0 :             if(n1stMarkNum == ULONG_MAX)
     629                 :            :             {
     630                 :          0 :                 n1stMarkNum = nMarkNum;
     631                 :            :             }
     632                 :            : 
     633                 :          0 :             nMarkPtAnz += nAnz;
     634                 :          0 :             nMarkPtObjAnz++;
     635                 :            :         }
     636                 :            : 
     637 [ #  # ][ #  # ]:          0 :         if(nMarkPtObjAnz > 1 && rNameOk)
     638                 :            :         {
     639                 :            :             // preliminary decision
     640                 :          0 :             return rName;
     641                 :            :         }
     642                 :            :     }
     643                 :            : 
     644 [ #  # ][ #  # ]:          0 :     if(rNameOk && 1L == nMarkPtObjAnz)
     645                 :            :     {
     646                 :            :         // if it's a single selection, cache only text frame
     647                 :          0 :         const SdrObject* pObj = GetMark(0)->GetMarkedSdrObj();
     648 [ #  # ][ #  # ]:          0 :         const SdrTextObj* pTextObj = PTR_CAST(SdrTextObj,pObj);
     649                 :            : 
     650 [ #  # ][ #  # ]:          0 :         if(!pTextObj || !pTextObj->IsTextFrame())
                 [ #  # ]
     651                 :            :         {
     652                 :          0 :             rNameOk = sal_False;
     653                 :            :         }
     654                 :            :     }
     655                 :            : 
     656         [ #  # ]:          0 :     if(!nMarkPtObjAnz)
     657                 :            :     {
     658                 :          0 :         rName.Erase();
     659                 :          0 :         rNameOk = sal_True;
     660                 :            :     }
     661         [ #  # ]:          0 :     else if(!rNameOk)
     662                 :            :     {
     663         [ #  # ]:          0 :         const SdrMark* pMark = GetMark(n1stMarkNum);
     664         [ #  # ]:          0 :         XubString aNam;
     665                 :            : 
     666         [ #  # ]:          0 :         if(1L == nMarkPtObjAnz)
     667                 :            :         {
     668 [ #  # ][ #  # ]:          0 :             if(pMark->GetMarkedSdrObj())
     669                 :            :             {
     670 [ #  # ][ #  # ]:          0 :                 pMark->GetMarkedSdrObj()->TakeObjNameSingul(aNam);
     671                 :            :             }
     672                 :            :         }
     673                 :            :         else
     674                 :            :         {
     675 [ #  # ][ #  # ]:          0 :             if(pMark->GetMarkedSdrObj())
     676                 :            :             {
     677 [ #  # ][ #  # ]:          0 :                 pMark->GetMarkedSdrObj()->TakeObjNamePlural(aNam);
     678                 :            :             }
     679                 :            : 
     680         [ #  # ]:          0 :             XubString aStr1;
     681                 :          0 :             sal_Bool bEq(sal_True);
     682                 :            : 
     683 [ #  # ][ #  # ]:          0 :             for(sal_uLong i(n1stMarkNum + 1L); i < GetMarkCount() && bEq; i++)
                 [ #  # ]
     684                 :            :             {
     685         [ #  # ]:          0 :                 const SdrMark* pMark2 = GetMark(i);
     686         [ #  # ]:          0 :                 const SdrUShortCont* pPts = bGlue ? pMark2->GetMarkedGluePoints() : pMark2->GetMarkedPoints();
     687                 :            : 
     688 [ #  # ][ #  # ]:          0 :                 if(pPts && !pPts->empty() && pMark2->GetMarkedSdrObj())
         [ #  # ][ #  # ]
                 [ #  # ]
     689                 :            :                 {
     690 [ #  # ][ #  # ]:          0 :                     pMark2->GetMarkedSdrObj()->TakeObjNamePlural(aStr1);
     691         [ #  # ]:          0 :                     bEq = aNam.Equals(aStr1);
     692                 :            :                 }
     693                 :            :             }
     694                 :            : 
     695         [ #  # ]:          0 :             if(!bEq)
     696                 :            :             {
     697 [ #  # ][ #  # ]:          0 :                 aNam = ImpGetResStr(STR_ObjNamePlural);
                 [ #  # ]
     698                 :            :             }
     699                 :            : 
     700         [ #  # ]:          0 :             aNam.Insert(sal_Unicode(' '), 0);
     701 [ #  # ][ #  # ]:          0 :             aNam.Insert(UniString::CreateFromInt32(nMarkPtObjAnz), 0);
         [ #  # ][ #  # ]
     702                 :            :         }
     703                 :            : 
     704         [ #  # ]:          0 :         XubString aStr1;
     705                 :            : 
     706         [ #  # ]:          0 :         if(1L == nMarkPtAnz)
     707                 :            :         {
     708 [ #  # ][ #  # ]:          0 :             aStr1 = (ImpGetResStr(bGlue ? STR_ViewMarkedGluePoint : STR_ViewMarkedPoint));
         [ #  # ][ #  # ]
     709                 :            :         }
     710                 :            :         else
     711                 :            :         {
     712 [ #  # ][ #  # ]:          0 :             aStr1 = (ImpGetResStr(bGlue ? STR_ViewMarkedGluePoints : STR_ViewMarkedPoints));
         [ #  # ][ #  # ]
     713 [ #  # ][ #  # ]:          0 :             aStr1.SearchAndReplaceAscii("%2", UniString::CreateFromInt32(nMarkPtAnz));
                 [ #  # ]
     714                 :            :         }
     715                 :            : 
     716         [ #  # ]:          0 :         aStr1.SearchAndReplaceAscii("%1", aNam);
     717         [ #  # ]:          0 :         rName = aStr1;
     718 [ #  # ][ #  # ]:          0 :         rNameOk = sal_True;
     719                 :            :     }
     720                 :            : 
     721                 :          0 :     return rName;
     722                 :            : }
     723                 :            : 
     724                 :      15020 : sal_Bool SdrMarkList::TakeBoundRect(SdrPageView* pPV, Rectangle& rRect) const
     725                 :            : {
     726                 :      15020 :     sal_Bool bFnd(sal_False);
     727         [ +  - ]:      15020 :     Rectangle aR;
     728                 :            : 
     729         [ +  + ]:      16021 :     for(sal_uLong i(0L); i < GetMarkCount(); i++)
     730                 :            :     {
     731         [ +  - ]:       1001 :         SdrMark* pMark = GetMark(i);
     732                 :            : 
     733 [ +  - ][ +  - ]:       1001 :         if(!pPV || pMark->GetPageView() == pPV)
                 [ +  - ]
     734                 :            :         {
     735 [ +  - ][ +  - ]:       1001 :             if(pMark->GetMarkedSdrObj())
     736                 :            :             {
     737 [ +  - ][ +  - ]:       1001 :                 aR = pMark->GetMarkedSdrObj()->GetCurrentBoundRect();
     738                 :            : 
     739         [ +  + ]:       1001 :                 if(bFnd)
     740                 :            :                 {
     741         [ +  - ]:        107 :                     rRect.Union(aR);
     742                 :            :                 }
     743                 :            :                 else
     744                 :            :                 {
     745                 :        894 :                     rRect = aR;
     746                 :        894 :                     bFnd = sal_True;
     747                 :            :                 }
     748                 :            :             }
     749                 :            :         }
     750                 :            :     }
     751                 :            : 
     752                 :      15020 :     return bFnd;
     753                 :            : }
     754                 :            : 
     755                 :      15020 : sal_Bool SdrMarkList::TakeSnapRect(SdrPageView* pPV, Rectangle& rRect) const
     756                 :            : {
     757                 :      15020 :     sal_Bool bFnd(sal_False);
     758                 :            : 
     759         [ +  + ]:      16021 :     for(sal_uLong i(0L); i < GetMarkCount(); i++)
     760                 :            :     {
     761                 :       1001 :         SdrMark* pMark = GetMark(i);
     762                 :            : 
     763 [ +  - ][ +  - ]:       1001 :         if(!pPV || pMark->GetPageView() == pPV)
                 [ +  - ]
     764                 :            :         {
     765         [ +  - ]:       1001 :             if(pMark->GetMarkedSdrObj())
     766                 :            :             {
     767 [ +  - ][ +  - ]:       1001 :                 Rectangle aR(pMark->GetMarkedSdrObj()->GetSnapRect());
     768                 :            : 
     769         [ +  + ]:       1001 :                 if(bFnd)
     770                 :            :                 {
     771         [ +  - ]:        107 :                     rRect.Union(aR);
     772                 :            :                 }
     773                 :            :                 else
     774                 :            :                 {
     775                 :        894 :                     rRect = aR;
     776                 :       1001 :                     bFnd = sal_True;
     777                 :            :                 }
     778                 :            :             }
     779                 :            :         }
     780                 :            :     }
     781                 :            : 
     782                 :      15020 :     return bFnd;
     783                 :            : }
     784                 :            : 
     785                 :            : ////////////////////////////////////////////////////////////////////////////////////////////////////
     786                 :            : 
     787                 :            : namespace sdr
     788                 :            : {
     789                 :       4699 :     ViewSelection::ViewSelection()
     790 [ +  - ][ +  - ]:       4699 :     :   mbEdgesOfMarkedNodesDirty(sal_False)
                 [ +  - ]
     791                 :            :     {
     792                 :       4699 :     }
     793                 :            : 
     794                 :       3748 :     void ViewSelection::SetEdgesOfMarkedNodesDirty()
     795                 :            :     {
     796         [ +  + ]:       3748 :         if(!mbEdgesOfMarkedNodesDirty)
     797                 :            :         {
     798                 :       2109 :             mbEdgesOfMarkedNodesDirty = sal_True;
     799                 :       2109 :             maEdgesOfMarkedNodes.Clear();
     800                 :       2109 :             maMarkedEdgesOfMarkedNodes.Clear();
     801                 :       2109 :             maAllMarkedObjects.clear();
     802                 :            :         }
     803                 :       3748 :     }
     804                 :            : 
     805                 :          0 :     const SdrMarkList& ViewSelection::GetEdgesOfMarkedNodes() const
     806                 :            :     {
     807         [ #  # ]:          0 :         if(mbEdgesOfMarkedNodesDirty)
     808                 :            :         {
     809                 :          0 :             ((ViewSelection*)this)->ImpForceEdgesOfMarkedNodes();
     810                 :            :         }
     811                 :            : 
     812                 :          0 :         return maEdgesOfMarkedNodes;
     813                 :            :     }
     814                 :            : 
     815                 :         44 :     const SdrMarkList& ViewSelection::GetMarkedEdgesOfMarkedNodes() const
     816                 :            :     {
     817         [ -  + ]:         44 :         if(mbEdgesOfMarkedNodesDirty)
     818                 :            :         {
     819                 :          0 :             ((ViewSelection*)this)->ImpForceEdgesOfMarkedNodes();
     820                 :            :         }
     821                 :            : 
     822                 :         44 :         return maMarkedEdgesOfMarkedNodes;
     823                 :            :     }
     824                 :            : 
     825                 :         44 :     const std::vector<SdrObject*>& ViewSelection::GetAllMarkedObjects() const
     826                 :            :     {
     827         [ +  - ]:         44 :         if(mbEdgesOfMarkedNodesDirty)
     828                 :         44 :             ((ViewSelection*)this)->ImpForceEdgesOfMarkedNodes();
     829                 :            : 
     830                 :         44 :         return maAllMarkedObjects;
     831                 :            :     }
     832                 :            : 
     833                 :        197 :     void ViewSelection::ImplCollectCompleteSelection(SdrObject* pObj)
     834                 :            :     {
     835         [ +  - ]:        197 :         if(pObj)
     836                 :            :         {
     837                 :        197 :             sal_Bool bIsGroup(pObj->IsGroupObject());
     838                 :            : 
     839 [ -  + ][ #  # ]:        197 :             if(bIsGroup && pObj->ISA(E3dObject) && !pObj->ISA(E3dScene))
         [ -  + ][ +  + ]
     840                 :            :             {
     841                 :          0 :                 bIsGroup = sal_False;
     842                 :            :             }
     843                 :            : 
     844         [ +  + ]:        197 :             if(bIsGroup)
     845                 :            :             {
     846                 :          9 :                 SdrObjList* pList = pObj->GetSubList();
     847                 :            : 
     848         [ +  + ]:         37 :                 for(sal_uLong a(0L); a < pList->GetObjCount(); a++)
     849                 :            :                 {
     850                 :         28 :                     SdrObject* pObj2 = pList->GetObj(a);
     851                 :         28 :                     ImplCollectCompleteSelection(pObj2);
     852                 :            :                 }
     853                 :            :             }
     854                 :            : 
     855                 :        197 :             maAllMarkedObjects.push_back(pObj);
     856                 :            :         }
     857                 :        197 :     }
     858                 :            : 
     859                 :         44 :     void ViewSelection::ImpForceEdgesOfMarkedNodes()
     860                 :            :     {
     861         [ +  - ]:         44 :         if(mbEdgesOfMarkedNodesDirty)
     862                 :            :         {
     863                 :         44 :             mbEdgesOfMarkedNodesDirty = sal_False;
     864                 :         44 :             maMarkedObjectList.ForceSort();
     865                 :         44 :             maEdgesOfMarkedNodes.Clear();
     866                 :         44 :             maMarkedEdgesOfMarkedNodes.Clear();
     867                 :         44 :             maAllMarkedObjects.clear();
     868                 :            : 
     869                 :            :             // GetMarkCount after ForceSort
     870                 :         44 :             const sal_uLong nMarkAnz(maMarkedObjectList.GetMarkCount());
     871                 :            : 
     872         [ +  + ]:        213 :             for(sal_uLong a(0L); a < nMarkAnz; a++)
     873                 :            :             {
     874                 :        169 :                 SdrObject* pCandidate = maMarkedObjectList.GetMark(a)->GetMarkedSdrObj();
     875                 :            : 
     876         [ +  - ]:        169 :                 if(pCandidate)
     877                 :            :                 {
     878                 :            :                     // build transitive hull
     879                 :        169 :                     ImplCollectCompleteSelection(pCandidate);
     880                 :            : 
     881         [ +  - ]:        169 :                     if(pCandidate->IsNode())
     882                 :            :                     {
     883                 :            :                         // travel over broadcaster/listener to access edges connected to the selected object
     884                 :        169 :                         const SfxBroadcaster* pBC = pCandidate->GetBroadcaster();
     885                 :            : 
     886         [ -  + ]:        169 :                         if(pBC)
     887                 :            :                         {
     888                 :          0 :                             sal_uInt16 nLstAnz(pBC->GetListenerCount());
     889                 :            : 
     890         [ #  # ]:          0 :                             for(sal_uInt16 nl(0); nl < nLstAnz; nl++)
     891                 :            :                             {
     892                 :          0 :                                 SfxListener* pLst = pBC->GetListener(nl);
     893 [ #  # ][ #  # ]:          0 :                                 SdrEdgeObj* pEdge = PTR_CAST(SdrEdgeObj, pLst);
     894                 :            : 
     895 [ #  # ][ #  # ]:          0 :                                 if(pEdge && pEdge->IsInserted() && pEdge->GetPage() == pCandidate->GetPage())
         [ #  # ][ #  # ]
     896                 :            :                                 {
     897 [ #  # ][ #  # ]:          0 :                                     SdrMark aM(pEdge, maMarkedObjectList.GetMark(a)->GetPageView());
     898                 :            : 
     899 [ #  # ][ #  # ]:          0 :                                     if(pEdge->GetConnectedNode(sal_True) == pCandidate)
     900                 :            :                                     {
     901                 :          0 :                                         aM.SetCon1(sal_True);
     902                 :            :                                     }
     903                 :            : 
     904 [ #  # ][ #  # ]:          0 :                                     if(pEdge->GetConnectedNode(sal_False) == pCandidate)
     905                 :            :                                     {
     906                 :          0 :                                         aM.SetCon2(sal_True);
     907                 :            :                                     }
     908                 :            : 
     909 [ #  # ][ #  # ]:          0 :                                     if(CONTAINER_ENTRY_NOTFOUND == maMarkedObjectList.FindObject(pEdge))
     910                 :            :                                     {
     911                 :            :                                         // check if it itself is selected
     912         [ #  # ]:          0 :                                         maEdgesOfMarkedNodes.InsertEntry(aM);
     913                 :            :                                     }
     914                 :            :                                     else
     915                 :            :                                     {
     916         [ #  # ]:          0 :                                         maMarkedEdgesOfMarkedNodes.InsertEntry(aM);
     917         [ #  # ]:          0 :                                     }
     918                 :            :                                 }
     919                 :            :                             }
     920                 :            :                         }
     921                 :            :                     }
     922                 :            :                 }
     923                 :            :             }
     924                 :            : 
     925                 :         44 :             maEdgesOfMarkedNodes.ForceSort();
     926                 :         44 :             maMarkedEdgesOfMarkedNodes.ForceSort();
     927                 :            :         }
     928                 :         44 :     }
     929                 :            : } // end of namespace sdr
     930                 :            : 
     931                 :            : /* vim:set shiftwidth=4 softtabstop=4 expandtab: */

Generated by: LCOV version 1.10