0a063f3a36
Patch contributed by Christian Lippka impress212: #i113063# patch: dubios self assign in svx/source/dialog/framelink.cxx http://svn.apache.org/viewvc?view=revision&revision=1167619 Patches contributed by Mathias Bauer gnumake4 work variously http://svn.apache.org/viewvc?view=revision&revision=1394707 http://svn.apache.org/viewvc?view=revision&revision=1394326 cws mba34issues01: #i117712#: fix several resource errors introduced by IAccessible2 implementation http://svn.apache.org/viewvc?view=revision&revision=1172343 cws mba34issues01: #i117719#: use correct resource ID http://svn.apache.org/viewvc?view=revision&revision=1172351 Patch contributed by Andre Fischer Do not add targets for junit tests when junit is disabled. http://svn.apache.org/viewvc?view=revision&revision=1241508 Patches contributed by Armin Le-Grand #118804# corrected GraphicExporter behaviour on shortcut when pixel graphic is requested http://svn.apache.org/viewvc?view=revision&revision=1240195 fix for #118525#: Using primitives for chart sub-geometry visualisation http://svn.apache.org/viewvc?view=revision&revision=1226879 #118485# - Styles for OLEs are not saved. http://svn.apache.org/viewvc?view=revision&revision=1182166 #118524: apply patch, followup fixes to 118485 http://svn.apache.org/viewvc?view=revision&revision=1186077 13f79535-47bb-0310-9956-ffa450edef68 Patch contributed by Regina Henschel linecap: Reintegrating finished LineCap feature http://svn.apache.org/viewvc?view=revision&revision=1232507 Patch contributed by Wang Lei (leiw) #i118760# split the first table cell vertically, then undo&redo, the Presentation app will crash http://svn.apache.org/viewvc?view=revision&revision=1301361 cleanup globlmn hacks, undo dependent fixmes.
298 lines
7.9 KiB
C++
298 lines
7.9 KiB
C++
/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
|
|
/*
|
|
* This file is part of the LibreOffice project.
|
|
*
|
|
* This Source Code Form is subject to the terms of the Mozilla Public
|
|
* License, v. 2.0. If a copy of the MPL was not distributed with this
|
|
* file, You can obtain one at http://mozilla.org/MPL/2.0/.
|
|
*
|
|
* This file incorporates work covered by the following license notice:
|
|
*
|
|
* Licensed to the Apache Software Foundation (ASF) under one or more
|
|
* contributor license agreements. See the NOTICE file distributed
|
|
* with this work for additional information regarding copyright
|
|
* ownership. The ASF licenses this file to you under the Apache
|
|
* License, Version 2.0 (the "License"); you may not use this file
|
|
* except in compliance with the License. You may obtain a copy of
|
|
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
|
*/
|
|
|
|
#ifndef _SVDMARK_HXX
|
|
#define _SVDMARK_HXX
|
|
|
|
#include <vector>
|
|
|
|
#include <tools/string.hxx>
|
|
#include "svx/svxdllapi.h"
|
|
#include <svx/sdrobjectuser.hxx>
|
|
|
|
#include <set>
|
|
|
|
class Rectangle;
|
|
class SdrPage;
|
|
class SdrObjList;
|
|
class SdrObject;
|
|
class SdrPageView;
|
|
|
|
typedef std::set<sal_uInt16> SdrUShortCont;
|
|
|
|
|
|
// Alles was eine View ueber ein markiertes Objekt wissen muss
|
|
class SVX_DLLPUBLIC SdrMark : public sdr::ObjectUser
|
|
{
|
|
protected:
|
|
SdrObject* mpSelectedSdrObject; // the seleceted object
|
|
SdrPageView* mpPageView;
|
|
SdrUShortCont* mpPoints; // Markierte Punkte
|
|
SdrUShortCont* mpLines; // Markierte Linienabschnitte
|
|
SdrUShortCont* mpGluePoints; // Markierte Klebepunkte (deren Id's)
|
|
sal_Bool mbCon1; // fuer Connectoren
|
|
sal_Bool mbCon2; // fuer Connectoren
|
|
sal_uInt16 mnUser; // z.B. fuer CopyObjects, mitkopieren von Edges
|
|
|
|
public:
|
|
explicit SdrMark(SdrObject* pNewObj = 0L, SdrPageView* pNewPageView = 0L);
|
|
SdrMark(const SdrMark& rMark);
|
|
virtual ~SdrMark();
|
|
|
|
// derived from ObjectUser
|
|
virtual void ObjectInDestruction(const SdrObject& rObject);
|
|
|
|
SdrMark& operator=(const SdrMark& rMark);
|
|
sal_Bool operator==(const SdrMark& rMark) const;
|
|
sal_Bool operator!=(const SdrMark& rMark) const
|
|
{
|
|
return !(operator==(rMark));
|
|
}
|
|
|
|
void SetMarkedSdrObj(SdrObject* pNewObj);
|
|
SdrObject* GetMarkedSdrObj() const;
|
|
|
|
SdrPageView* GetPageView() const
|
|
{
|
|
return mpPageView;
|
|
}
|
|
|
|
void SetPageView(SdrPageView* pNewPageView)
|
|
{
|
|
mpPageView = pNewPageView;
|
|
}
|
|
|
|
void SetCon1(sal_Bool bOn)
|
|
{
|
|
mbCon1 = bOn;
|
|
}
|
|
|
|
sal_Bool IsCon1() const
|
|
{
|
|
return mbCon1;
|
|
}
|
|
|
|
void SetCon2(sal_Bool bOn)
|
|
{
|
|
mbCon2 = bOn;
|
|
}
|
|
|
|
sal_Bool IsCon2() const
|
|
{
|
|
return mbCon2;
|
|
}
|
|
|
|
void SetUser(sal_uInt16 nVal)
|
|
{
|
|
mnUser = nVal;
|
|
}
|
|
|
|
sal_uInt16 GetUser() const
|
|
{
|
|
return mnUser;
|
|
}
|
|
|
|
const SdrUShortCont* GetMarkedPoints() const
|
|
{
|
|
return mpPoints;
|
|
}
|
|
|
|
const SdrUShortCont* GetMarkedLines() const
|
|
{
|
|
return mpLines;
|
|
}
|
|
|
|
const SdrUShortCont* GetMarkedGluePoints() const
|
|
{
|
|
return mpGluePoints;
|
|
}
|
|
|
|
SdrUShortCont* GetMarkedPoints()
|
|
{
|
|
return mpPoints;
|
|
}
|
|
|
|
SdrUShortCont* GetMarkedLines()
|
|
{
|
|
return mpLines;
|
|
}
|
|
|
|
SdrUShortCont* GetMarkedGluePoints()
|
|
{
|
|
return mpGluePoints;
|
|
}
|
|
|
|
SdrUShortCont* ForceMarkedPoints()
|
|
{
|
|
if(!mpPoints)
|
|
mpPoints = new SdrUShortCont;
|
|
|
|
return mpPoints;
|
|
}
|
|
|
|
SdrUShortCont* ForceMarkedLines()
|
|
{
|
|
if(!mpLines)
|
|
mpLines = new SdrUShortCont;
|
|
|
|
return mpLines;
|
|
}
|
|
|
|
SdrUShortCont* ForceMarkedGluePoints()
|
|
{
|
|
if(!mpGluePoints)
|
|
mpGluePoints = new SdrUShortCont;
|
|
|
|
return mpGluePoints;
|
|
}
|
|
};
|
|
|
|
class SVX_DLLPUBLIC SdrMarkList
|
|
{
|
|
protected:
|
|
std::vector<SdrMark*> maList;
|
|
|
|
String maMarkName;
|
|
String maPointName;
|
|
String maGluePointName;
|
|
|
|
sal_Bool mbPointNameOk;
|
|
sal_Bool mbGluePointNameOk;
|
|
sal_Bool mbNameOk;
|
|
sal_Bool mbSorted;
|
|
|
|
private:
|
|
SVX_DLLPRIVATE sal_Bool operator==(const SdrMarkList& rCmpMarkList) const;
|
|
SVX_DLLPRIVATE void ImpForceSort();
|
|
|
|
private:
|
|
SVX_DLLPRIVATE const XubString& GetPointMarkDescription(sal_Bool bGlue) const;
|
|
|
|
public:
|
|
SdrMarkList()
|
|
: maList(),
|
|
mbPointNameOk(sal_False),
|
|
mbGluePointNameOk(sal_False),
|
|
mbNameOk(sal_False),
|
|
mbSorted(sal_True)
|
|
{
|
|
}
|
|
|
|
SdrMarkList(const SdrMarkList& rLst)
|
|
: maList()
|
|
{
|
|
*this = rLst;
|
|
}
|
|
|
|
~SdrMarkList()
|
|
{
|
|
Clear();
|
|
}
|
|
|
|
void Clear();
|
|
void ForceSort() const;
|
|
void SetUnsorted()
|
|
{
|
|
mbSorted = sal_False;
|
|
}
|
|
|
|
sal_uLong GetMarkCount() const
|
|
{
|
|
return maList.size();
|
|
}
|
|
|
|
SdrMark* GetMark(sal_uLong nNum) const;
|
|
sal_uLong FindObject(const SdrObject* pObj) const;
|
|
void InsertEntry(const SdrMark& rMark, sal_Bool bChkSort = sal_True);
|
|
void DeleteMark(sal_uLong nNum);
|
|
void ReplaceMark(const SdrMark& rNewMark, sal_uLong nNum);
|
|
void Merge(const SdrMarkList& rSrcList, sal_Bool bReverse = sal_False);
|
|
sal_Bool DeletePageView(const SdrPageView& rPV);
|
|
sal_Bool InsertPageView(const SdrPageView& rPV);
|
|
|
|
void SetNameDirty()
|
|
{
|
|
mbNameOk = sal_False;
|
|
mbPointNameOk = sal_False;
|
|
mbGluePointNameOk = sal_False;
|
|
}
|
|
|
|
// Eine verbale Beschreibung der markierten Objekte z.B.:
|
|
// "27 Linien", "12 Objekte", "Polygon" oder auch "Kein Objekt"
|
|
const String& GetMarkDescription() const;
|
|
const String& GetPointMarkDescription() const
|
|
{
|
|
return GetPointMarkDescription(sal_False);
|
|
}
|
|
|
|
const String& GetGluePointMarkDescription() const
|
|
{
|
|
return GetPointMarkDescription(sal_True);
|
|
}
|
|
|
|
// pPage=0L: Die Markierungen aller! Seiten beruecksichtigen
|
|
sal_Bool TakeBoundRect(SdrPageView* pPageView, Rectangle& rRect) const;
|
|
sal_Bool TakeSnapRect(SdrPageView* pPageView, Rectangle& rRect) const;
|
|
|
|
// Es werden saemtliche Entries kopiert!
|
|
void operator=(const SdrMarkList& rLst);
|
|
};
|
|
|
|
////////////////////////////////////////////////////////////////////////////////////////////////////
|
|
// migrate selections
|
|
|
|
namespace sdr
|
|
{
|
|
class SVX_DLLPUBLIC ViewSelection
|
|
{
|
|
SdrMarkList maMarkedObjectList;
|
|
SdrMarkList maEdgesOfMarkedNodes;
|
|
SdrMarkList maMarkedEdgesOfMarkedNodes;
|
|
std::vector<SdrObject*> maAllMarkedObjects;
|
|
|
|
// bitfield
|
|
unsigned mbEdgesOfMarkedNodesDirty : 1;
|
|
|
|
SVX_DLLPRIVATE void ImpForceEdgesOfMarkedNodes();
|
|
SVX_DLLPRIVATE void ImplCollectCompleteSelection(SdrObject* pObj);
|
|
|
|
public:
|
|
ViewSelection();
|
|
|
|
void SetEdgesOfMarkedNodesDirty();
|
|
|
|
const SdrMarkList& GetMarkedObjectList() const
|
|
{
|
|
return maMarkedObjectList;
|
|
}
|
|
|
|
const SdrMarkList& GetEdgesOfMarkedNodes() const;
|
|
const SdrMarkList& GetMarkedEdgesOfMarkedNodes() const;
|
|
const std::vector<SdrObject*>& GetAllMarkedObjects() const;
|
|
|
|
SdrMarkList& GetMarkedObjectListWriteAccess()
|
|
{
|
|
return maMarkedObjectList;
|
|
}
|
|
};
|
|
} // end of namespace sdr
|
|
|
|
#endif //_SVDMARK_HXX
|
|
|
|
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
|