summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/svx/svdobj.hxx556
1 files changed, 251 insertions, 305 deletions
diff --git a/include/svx/svdobj.hxx b/include/svx/svdobj.hxx
index 611b365cf8f6..76f0e2155f05 100644
--- a/include/svx/svdobj.hxx
+++ b/include/svx/svdobj.hxx
@@ -98,60 +98,59 @@ namespace svx
// Defines
-enum SdrObjKind {OBJ_NONE = 0, // Abstraktes Objekt (SdrObject)
- OBJ_GRUP = 1, // Objektgruppe
- OBJ_LINE = 2, // Strecke
- OBJ_RECT = 3, // Rechteck ww. mit runden Ecken
- OBJ_CIRC = 4, // Kreis, Ellipse
- OBJ_SECT = 5, // Kreissektor
- OBJ_CARC = 6, // Kreisbogen
- OBJ_CCUT = 7, // Kreisabschnitt
- OBJ_POLY = 8, // Polygon, PolyPolygon
+enum SdrObjKind {OBJ_NONE = 0, // abstract object (SdrObject)
+ OBJ_GRUP = 1, // object group
+ OBJ_LINE = 2, // line
+ OBJ_RECT = 3, // rectangle (round corners optional)
+ OBJ_CIRC = 4, // circle, ellipse
+ OBJ_SECT = 5, // circle section
+ OBJ_CARC = 6, // circle arc
+ OBJ_CCUT = 7, // circle cut
+ OBJ_POLY = 8, // polygon, PolyPolygon
OBJ_PLIN = 9, // PolyLine
- OBJ_PATHLINE =10, // Offene Bezierkurve
- OBJ_PATHFILL =11, // Geschlossene Bezierkurve
- OBJ_FREELINE =12, // Offene Freihandlinie
- OBJ_FREEFILL =13, // Geschlossene Freihandlinie
+ OBJ_PATHLINE =10, // open Bezier-curve
+ OBJ_PATHFILL =11, // closed Bezier-curve
+ OBJ_FREELINE =12, // open free-hand line
+ OBJ_FREEFILL =13, // closed free-hand line
OBJ_SPLNLINE =14, // Natuerlicher kubischer Spline (ni)
OBJ_SPLNFILL =15, // Periodischer kubischer Spline (ni)
- OBJ_TEXT =16, // Textobjekt
+ OBJ_TEXT =16, // text object
OBJ_TEXTEXT =17, // Texterweiterungsrahmen (ni)
OBJ_wegFITTEXT, // FitToSize-Text (alle Zeilen gleich)
OBJ_wegFITALLTEXT, // FitToSize-Text (Zeilenweise) (ni)
OBJ_TITLETEXT =20, // Titeltext. Spezial-Textobjekt fuer StarDraw
OBJ_OUTLINETEXT=21, // OutlineText. Spezial-Textobjekt fuer StarDraw
OBJ_GRAF =22, // Fremdgrafik - (StarView Graphic)
- OBJ_OLE2 =23, // OLE-Objekt
+ OBJ_OLE2 =23, // OLE object
OBJ_EDGE =24, // Verbindungsobjekt fuer Konnektoren
OBJ_CAPTION =25, // Legendenobjekt
OBJ_PATHPOLY =26, // Polygon/PolyPolygon dargestellt durch SdrPathObj
OBJ_PATHPLIN =27, // Polyline dargestellt durch SdrPathObj
- OBJ_PAGE =28, // Objekt, das eine SdrPage darstellt
- OBJ_MEASURE =29, // Bemassungsobjekt
- OBJ_DUMMY =30, // Dummyobjekt zum speichern von Luecken (zur anschliessenden Wiederherstellung der Surrogate)
- OBJ_FRAME =31, // staendig aktives OLE (PlugIn-Frame oder sowas)
- OBJ_UNO =32, // Universal Network Object im SvDraw-Obj eingepackt
- OBJ_CUSTOMSHAPE=33, // CustomShape
- OBJ_MEDIA =34, // Media shape
- OBJ_TABLE =35, // Table
+ OBJ_PAGE =28, // object that represents a SdrPage
+ OBJ_MEASURE =29, // measurement object
+ OBJ_DUMMY =30, // dummy object for saving holes (to recover surrogates later)
+ OBJ_FRAME =31, // continiously activated aktives OLE (PlugIn-Frame or similar)
+ OBJ_UNO =32, // Universal Network Object packed into SvDraw object
+ OBJ_CUSTOMSHAPE=33, // custom shape
+ OBJ_MEDIA =34, // media shape
+ OBJ_TABLE =35, // table
OBJ_MAXI};
-enum SdrUserCallType {SDRUSERCALL_MOVEONLY, // Nur verschoben, Groesse unveraendert
- SDRUSERCALL_RESIZE, // Groesse und evtl. auch Pos veraendert
- SDRUSERCALL_CHGATTR, // Attribute veraendert. Moeglicherweise neue Groesse wg. Linienbreite
- SDRUSERCALL_DELETE, // Obj gibt es gleich nicht mehr. Schon keine Attr mehr.
- SDRUSERCALL_COPY, // Zuweisungsoperator gerufen. Kann alles geaendert sein
- SDRUSERCALL_INSERTED, // In eine Objektliste (z.B. Page) eingefuegt
- SDRUSERCALL_REMOVED, // Aus der Objektliste entfernt
- SDRUSERCALL_CHILD_MOVEONLY, // Ein Child einer Gruppe hat sich veraendert
- SDRUSERCALL_CHILD_RESIZE, // Ein Child einer Gruppe hat sich veraendert
- SDRUSERCALL_CHILD_CHGATTR, // Ein Child einer Gruppe hat sich veraendert
- SDRUSERCALL_CHILD_DELETE, // Ein Child einer Gruppe hat sich veraendert
- SDRUSERCALL_CHILD_COPY, // Ein Child einer Gruppe hat sich veraendert
- SDRUSERCALL_CHILD_INSERTED, // Ein Child einer Gruppe hat sich veraendert
- SDRUSERCALL_CHILD_REMOVED}; // Ein Child einer Gruppe hat sich veraendert
-
-// Hilfsklasse SdrObjUserCall
+enum SdrUserCallType {SDRUSERCALL_MOVEONLY, // only moved, size unchanged
+ SDRUSERCALL_RESIZE, // size and maybe position changed
+ SDRUSERCALL_CHGATTR, // attribute changed. Eventually new size, because of line width
+ SDRUSERCALL_DELETE, // object is going to be deleted soon, no attributes anymore
+ SDRUSERCALL_COPY, // assign operator called, everything can be changed
+ SDRUSERCALL_INSERTED, // inserted into an object list (e.g. Page)
+ SDRUSERCALL_REMOVED, // removed from an object list
+ SDRUSERCALL_CHILD_MOVEONLY, // a child within a group has changed
+ SDRUSERCALL_CHILD_RESIZE, // a child within a group has changed
+ SDRUSERCALL_CHILD_CHGATTR, // a child within a group has changed
+ SDRUSERCALL_CHILD_DELETE, // a child within a group has changed
+ SDRUSERCALL_CHILD_COPY, // a child within a group has changed
+ SDRUSERCALL_CHILD_INSERTED, // a child within a group has changed
+ SDRUSERCALL_CHILD_REMOVED}; // a child within a group has changed
+
class SVX_DLLPUBLIC SdrObjUserCall
{
public:
@@ -160,7 +159,6 @@ public:
virtual void Changed(const SdrObject& rObj, SdrUserCallType eType, const Rectangle& rOldBoundRect);
};
-// Hilfsklasse SdrObjMacroHitRec
class SVX_DLLPUBLIC SdrObjMacroHitRec
{
public:
@@ -175,13 +173,9 @@ public:
SdrObjMacroHitRec();
};
-// Hilfsklasse SdrObjUserData
-//
-// Anwenderdaten an einem Zeichenobjekt, z.B. applikationsspezifische Daten.
-// Jedes Zeichenobjekt kann beliebig viele dieser Records haben (SV-Liste).
-// Wer hier Daten halten will, muss sich ableiten und auch an der Factory
-// einen entsprechenden Link setzen.
-//
+// User data of a drawing object, e.g. application specific data.
+// Every drawing object can have arbitrarily many such records (SV list).
+// Whoever wants to save data here, must inherit from this and set a corresponding link in the factory.
class SVX_DLLPUBLIC SdrObjUserData
{
protected:
@@ -213,7 +207,6 @@ public:
virtual OUString GetMacroPopupComment(const SdrObjMacroHitRec& rRec, const SdrObject* pObj) const;
};
-// Hilfsklasse SdrObjUserDataList
class SdrObjUserDataList
{
typedef boost::ptr_vector<SdrObjUserData> ListType;
@@ -230,9 +223,7 @@ public:
void DeleteUserData(size_t nNum);
};
-// Hilfsklasse SdrObjGeoData
-//
-// Alle geometrischen Daten eines beliebigen Objektes zur ??bergabe an's Undo/Redo
+// all geometrical data of an arbitrary object for use in undo/redo
class SVX_DLLPUBLIC SdrObjGeoData
{
public:
@@ -251,16 +242,14 @@ public:
virtual ~SdrObjGeoData();
};
-// Hilfsklasse SdrObjPlusData
-//
-// Bitsack fuer DrawObjekte
+// Bitsack for DrawObjects
class SdrObjPlusData
{
friend class SdrObject;
- SfxBroadcaster* pBroadcast; // Broadcaster, falls dieses Obj referenziert wird (bVirtObj=true). Auch fuer Konnektoren etc.
- SdrObjUserDataList* pUserDataList; // applikationsspeziefische Daten
- SdrGluePointList* pGluePoints; // Klebepunkte zum Ankleben von Objektverbindern
+ SfxBroadcaster* pBroadcast; // broadcaster, if this object is referenced (bVirtObj=true). Also for connectors etc.
+ SdrObjUserDataList* pUserDataList; // application specific data
+ SdrGluePointList* pGluePoints; // glue points for glueing object connectors
// #i68101#
// object name, title and description
@@ -277,39 +266,35 @@ public:
void SetGluePoints(const SdrGluePointList& rPts);
};
-// Hilfsklasse SdrObjTransformInfoRec
-//
-// gibt Auskunft ueber verschiedene Eigenschaften eines ZObjects
+// provides information about various ZObject properties
class SVX_DLLPUBLIC SdrObjTransformInfoRec
{
public:
- bool bSelectAllowed : 1; // false=Obj kann nicht selektiert werden
- bool bMoveAllowed : 1; // false=Obj kann nicht verschoben werden
- bool bResizeFreeAllowed : 1; // false=Obj kann nicht frei resized werden
- bool bResizePropAllowed : 1; // false=Obj kann nichtmal proportional resized werden
- bool bRotateFreeAllowed : 1; // false=Obj kann nicht frei gedreht werden
- bool bRotate90Allowed : 1; // false=Obj kann nichtmal im 90deg Raster gedreht werden
- bool bMirrorFreeAllowed : 1; // false=Obj kann nicht frei gespiegelt werden
- bool bMirror45Allowed : 1; // false=Obj kann nichtmal ueber Achse im 45deg Raster gespiegelt werden
- bool bMirror90Allowed : 1; // false=Obj kann ebenfalls nicht ueber Achse im 90deg Raster gespiegelt werden
- bool bTransparenceAllowed : 1; // false=Obj does not have an interactive transparence control
- bool bGradientAllowed : 1; // false=Obj dooes not have an interactive gradient control
- bool bShearAllowed : 1; // false=Obj kann nicht verzerrt werden
+ bool bSelectAllowed : 1; // if false, object cannot be selected
+ bool bMoveAllowed : 1; // if false, object cannot be moved
+ bool bResizeFreeAllowed : 1; // if false, object cannot be resized freely
+ bool bResizePropAllowed : 1; // if false, object cannot even be resized proportionally
+ bool bRotateFreeAllowed : 1; // if false, object cannot be rotated freely
+ bool bRotate90Allowed : 1; // if false, object cannot even be rotated in 90 degree steps
+ bool bMirrorFreeAllowed : 1; // if false, object cannot be mirrored freely
+ bool bMirror45Allowed : 1; // if false, object cannot even be mirrored over axes in a 45 degree raster
+ bool bMirror90Allowed : 1; // if false, object cannot even be mirrored over axes in a 90 degree raster
+ bool bTransparenceAllowed : 1; // if false, object does not have an interactive transparence control
+ bool bGradientAllowed : 1; // if false, object dooes not have an interactive gradient control
+ bool bShearAllowed : 1; // if false, object cannot be sheared
bool bEdgeRadiusAllowed : 1;
- bool bNoOrthoDesired : 1; // true bei Rect; ... false bei BMP,MTF;
- bool bNoContortion : 1; // false=Kein verzerren (bei Crook) moeglich (nur true bei PathObj und Gruppierten PathObjs)
- bool bCanConvToPath : 1; // false=Keine Konvertierung in PathObj moeglich
- bool bCanConvToPoly : 1; // false=Keine Konvertierung in PolyObj moeglich
- bool bCanConvToContour : 1; // false=no conversion down to whole contour possible
- bool bCanConvToPathLineToArea : 1; // false=Keine Konvertierung in PathObj moeglich mit Wandlung von LineToArea
- bool bCanConvToPolyLineToArea : 1; // false=Keine Konvertierung in PolyObj moeglich mit Wandlung von LineToArea
+ bool bNoOrthoDesired : 1; // is true for Rect; is false for BMP, MTF
+ bool bNoContortion : 1; // if false, Kein verzerren (bei Crook) moeglich (nur true bei PathObj und Gruppierten PathObjs)
+ bool bCanConvToPath : 1; // if false, no conversion into PathObj possible
+ bool bCanConvToPoly : 1; // if false, no conversion into PolyObj possible
+ bool bCanConvToContour : 1; // if false, no conversion down to whole contour possible
+ bool bCanConvToPathLineToArea : 1; // if false, no conversion into PathObj with transformation from LineToArea possible
+ bool bCanConvToPolyLineToArea : 1; // if false, no conversion into PolyObj with transformation from LineToArea possible
SdrObjTransformInfoRec();
};
-////////////////////////////////////////////////////////////////////////////////////////////////////
-// Abstraktes DrawObject
-////////////////////////////////////////////////////////////////////////////////////////////////////
+// Abstract DrawObject
class SvxShape;
class SVX_DLLPUBLIC SdrObject: public SfxListener, public tools::WeakBase< SdrObject >
@@ -330,7 +315,6 @@ protected:
public:
virtual sdr::properties::BaseProperties& GetProperties() const;
- ///////////////////////////////////////////////////////////////////////////////
// #110094# DrawContact section
private:
sdr::contact::ViewContact* mpViewContact;
@@ -348,54 +332,52 @@ private:
friend class SdrRectObj;
protected:
- Rectangle aOutRect; // umschliessendes Rechteck fuer Paint (inkl. LineWdt, ...)
- Point aAnchor; // Ankerposition (Writer)
+ Rectangle aOutRect; // surrounding rectangle for Paint (incl. LineWdt, ...)
+ Point aAnchor; // anchor position (Writer)
Point aGridOffset; // hack (Calc)
- SdrObjList* pObjList; // Liste, in dem das Obj eingefuegt ist.
+ SdrObjList* pObjList; // list that includes this object
SdrPage* pPage;
SdrModel* pModel;
SdrObjUserCall* pUserCall;
- SdrObjPlusData* pPlusData; // Broadcaster, UserData, Konnektoren, ... (Das ist der Bitsack)
+ SdrObjPlusData* pPlusData; // Broadcaster, UserData, connektors, ... (this is the Bitsack)
- sal_uInt32 nOrdNum; // Rangnummer des Obj in der Liste
+ sal_uInt32 nOrdNum; // order number of the object in the list
- SfxGrabBagItem* pGrabBagItem; // Holds the GrabBagItem property
+ SfxGrabBagItem* pGrabBagItem; // holds the GrabBagItem property
- /** Position in the navigation order. SAL_MAX_UINT32 when not used.
- */
+ // Position in the navigation order. SAL_MAX_UINT32 when not used.
sal_uInt32 mnNavigationPosition;
SdrLayerID mnLayerID;
- // Objekt zeigt nur auf ein Anderes
+ // object is only pointing to another one
bool bVirtObj : 1;
bool bSnapRectDirty : 1;
bool bNetLock : 1; // ni
- bool bInserted : 1; // nur wenn true gibt's RepaintBroadcast & SetModify
- bool bGrouped : 1; // Member eines GroupObjektes?
-
- // Die folgende Flags werden gestreamt
- bool bMovProt : 1; // If true, the position is protected
- bool bSizProt : 1; // If true, the size is protected
- bool bNoPrint : 1; // If true, the object is not printed.
- bool mbVisible : 1; // If false, the object is not visible on screen (but maybe on printer, depending on bNoprint
- // Wenn bEmptyPresObj true ist, handelt es sich um ein
- // Praesentationsobjekt, dem noch kein Inhalt zugewiesen
- // wurde. Default ist das Flag auf FALSE. Die Verwaltung
- // uebernimmt die Applikation. Im Zuweisungsoperator sowie
- // beim Clone wird das Flag nicht mitkopiert!
- // Das Flag ist persistent.
- bool bEmptyPresObj : 1; // Leeres Praesentationsobjekt (Draw)
-
- // true=Objekt ist als Objekt der MasterPage nicht sichtbar
+ bool bInserted : 1; // only if set to true, there are RepaintBroadcast & SetModify
+ bool bGrouped : 1; // member of a group object?
+
+ // the following flags will be streamed
+ bool bMovProt : 1; // if true, the position is protected
+ bool bSizProt : 1; // if true, the size is protected
+ bool bNoPrint : 1; // if true, the object is not printed.
+ bool mbVisible : 1; // if false, the object is not visible on screen (but maybe on printer, depending on bNoprint
+ // If bEmptyPresObj is true, it is a presentation object that has no content yet.
+ // The flag's default value is false.
+ // The management is done by the application.
+ // Neither assign operator nor cloning copies the flag!
+ // The flag is persistent.
+ bool bEmptyPresObj : 1; // empty presentation object (Draw)
+
+ // if true, object is invisible as object of the MasterPage
bool bNotVisibleAsMaster : 1;
- // true=Es handelt sich hierbei um ein geschlossenes Objekt, also nicht Linie oder Kreisbogen ...
+ // if true, the object is closed, i.e. no line, arc...
bool bClosedObj : 1;
bool bIsEdge : 1;
bool bIs3DObj : 1;
- bool bMarkProt : 1; // Markieren verboten. Persistent
+ bool bMarkProt : 1; // marking forbidden, persistent
bool bIsUnoObj : 1;
bool bNotMasterCachable : 1;
@@ -409,7 +391,7 @@ protected:
// in this case the following member is initialized as nonempty rectangle
Rectangle maBLIPSizeRectangle;
- // global static ItemPool for not-yet-insetred items
+ // global static ItemPool for not-yet-inserted items
private:
static SdrItemPool* mpGlobalItemPool;
boost::optional<double> mnRelativeWidth;
@@ -434,7 +416,7 @@ protected:
SdrObjUserData* ImpGetMacroUserData() const;
Rectangle ImpDragCalcRect(const SdrDragStat& rDrag) const;
- // Fuer GetDragComment
+ // for GetDragComment
void ImpTakeDescriptionStr(sal_uInt16 nStrCacheID, OUString& rStr, sal_uInt16 nVal=0) const;
void ImpForcePlusData();
@@ -442,14 +424,14 @@ protected:
OUString GetWinkStr(long nWink, bool bNoDegChar = false) const;
OUString GetMetrStr(long nVal, MapUnit eWantMap=MAP_MM, bool bNoUnitChars = false) const;
- // bNotMyself=true bedeutet: Nur die ObjList auf Dirty setzen, nicht mich.
- // Wird z.B. benoetigt fuer NbcMove, denn da movt man SnapRect und aOutRect
- // i.d.R. gleich mit um die Neuberechnung zu sparen.
+ // bNotMyself=true means: set only ObjList to dirty, don't mark this object as dirty.
+ // This is needed for instance for NbcMove, because usually one moves SnapRect and aOutRect
+ // at the same time to avoid recomputation.
public:
virtual void SetRectsDirty(sal_Bool bNotMyself = false);
protected:
- // ueberladen, wenn man sich von SdrObjPlusData abgeleitet hat:
+ // override if the class inherits from SdrObjPlusData:
virtual SdrObjPlusData* NewPlusData() const;
protected:
@@ -468,14 +450,12 @@ public:
TYPEINFO();
SdrObject();
- /** frees the SdrObject pointed to by the argument
-
- In case the object has an SvxShape, which has the ownership of the object, it
- is actually *not* deleted.
- */
+ // frees the SdrObject pointed to by the argument
+ // In case the object has an SvxShape, which has the ownership of the object, it
+ // is actually *not* deleted.
static void Free( SdrObject*& _rpObject );
- // This method is only for access from Property objects
+ // this method is only for access from Property objects
virtual void SetBoundRectDirty();
virtual void SetObjList(SdrObjList* pNewObjList);
@@ -510,9 +490,9 @@ public:
SdrObjUserCall* GetUserCall() const;
void SendUserCall(SdrUserCallType eUserCall, const Rectangle& rBoundRect) const;
- // Ein solcher Referenzpunkt ist z.B. der Punkt eines Symbols, der
- // der beim Einfuegen des Symbols auf das Raster gefangen werden soll
- // oder der Fixpunkt eines Bildes innerhalb eines Animationsobjektes.
+ // Such a reference point is for instance:
+ // - a symbol's point that should snap to the raster when inserting the symbol
+ // - or an image's fix point within an animation object
virtual bool HasRefPoint() const;
virtual Point GetRefPoint() const;
virtual void SetRefPoint(const Point& rPnt);
@@ -528,7 +508,7 @@ public:
void SetDescription(const OUString& rStr);
OUString GetDescription() const;
- // Fuer Gruppenobjekte
+ // for group objects
bool IsGroupObject() const;
virtual SdrObjList* GetSubList() const;
SdrObject* GetUpGroup() const;
@@ -541,12 +521,10 @@ public:
// werden die Ordnungsnummer aller Objekte der Liste neu bestimmt.
sal_uInt32 GetOrdNum() const;
- // Diese Methode sollte nur verwendet werden, wenn man ganz genau weiss,
- // was man macht:
+ // Warning: this method should only be used if you really knows what you're doing
sal_uInt32 GetOrdNumDirect() const;
- // Das Setzen der Ordnungsnummer sollte nur vom Model bzw. von der Page
- // geschehen.
+ // setting the order number should only happen from the model or from the page
void SetOrdNum(sal_uInt32 nNum);
// GrabBagItem for interim interop purposes
@@ -554,23 +532,21 @@ public:
void SetGrabBagItem(const com::sun::star::uno::Any& rVal);
- /** Return the position in the navigation order for the called object.
- Note that this method may update the navigation position of the
- called and of other SdrObjects. Therefore this method can not be
- const.
- @return
- If no navigation position has been explicitly defined then the
- result of GetOrdNum() is returned.
- */
+ // Return the position in the navigation order for the called object.
+ // Note that this method may update the navigation position of the
+ // called and of other SdrObjects. Therefore this method can not be
+ // const.
+ // @return
+ // If no navigation position has been explicitly defined then the
+ // result of GetOrdNum() is returned.
sal_uInt32 GetNavigationPosition (void);
- /** Set the position in the navigation position to the given value.
- This method is typically used only by the model after a change to
- the navigation order.
- This method does not change the navigation position of other
- objects.
- Use SdrObjList::SetObjectNavigationPosition() instead.
- */
+ // Set the position in the navigation position to the given value.
+ // This method is typically used only by the model after a change to
+ // the navigation order.
+ // This method does not change the navigation position of other
+ // objects.
+ // Use SdrObjList::SetObjectNavigationPosition() instead.
void SetNavigationPosition (const sal_uInt32 nPosition);
// #111111#
@@ -591,7 +567,7 @@ public:
void BroadcastObjectChange() const;
- // Modified-Flag am Model setzen
+ // set modified-flag in the model
virtual void SetChanged();
// Tooling for painting a single object to a OutputDevice. This will be needed as long
@@ -599,18 +575,14 @@ public:
bool SingleObjectPainter(OutputDevice& rOut) const;
bool LineGeometryUsageIsNecessary() const;
- /**
- Returns a copy of the object. Every inherited class must reimplement this (in class Foo
- it should be sufficient to do "virtual Foo* Clone() const { return CloneHelper< Foo >(); }".
- Note that this function uses operator= internally.
- */
+ // Returns a copy of the object. Every inherited class must reimplement this (in class Foo
+ // it should be sufficient to do "virtual Foo* Clone() const { return CloneHelper< Foo >(); }".
+ // Note that this function uses operator= internally.
virtual SdrObject* Clone() const;
- /**
- Implemented mainly for the purposes of Clone().
- */
+ // implemented mainly for the purposes of Clone()
SdrObject& operator=(const SdrObject& rObj);
- // TakeObjName...() ist fuer die Anzeige in der UI, z.B. "3 Rahmen selektiert".
+ // TakeObjName...() is for the display in the UI, e.g. "3 frames selected"
virtual OUString TakeObjNameSingul() const;
virtual OUString TakeObjNamePlural() const;
@@ -677,9 +649,9 @@ public:
// enthaelt die Anzahl der Mausklicks (so die App diese durchreicht).
// BckCreate() -> Letztes EndCreate() rueckgaengig machen (z.B. letzten
// Polygonpunkt wieder loeschen).
- // RetrunCode: true=Weiter gehts, false=Create dadurch abgebrochen.
+ // ReturnCode: true=Weiter gehts, false=Create dadurch abgebrochen.
virtual bool BegCreate(SdrDragStat& rStat);
- virtual bool MovCreate(SdrDragStat& rStat); // TRUE=Xor muss repainted werden
+ virtual bool MovCreate(SdrDragStat& rStat); // if true, Xor needs to be repainted
virtual bool EndCreate(SdrDragStat& rStat, SdrCreateCmd eCmd);
virtual bool BckCreate(SdrDragStat& rStat);
virtual void BrkCreate(SdrDragStat& rStat);
@@ -727,20 +699,19 @@ public:
virtual void SetSnapRect(const Rectangle& rRect);
virtual void NbcSetSnapRect(const Rectangle& rRect);
- // Logic Rect: Beim Rect z.B. ohne Beruecksichtigung des Drehwinkels, Shear, ...
+ // Logic Rect: for the Rect for instance without regard to rotation angle, shear, ...
virtual const Rectangle& GetLogicRect() const;
virtual void SetLogicRect(const Rectangle& rRect);
virtual void NbcSetLogicRect(const Rectangle& rRect);
- /** the defaul is to set the logic rect to the given rectangle rMaxRect. If the shape
- has an intrinsic aspect ratio it may set the logic rect so the aspect
- ratio is kept but still inside the rectangle rMaxRect.
-
- If bShrinkOnly is set to true, the size of the current logic rect will not
- be changed if it is smaller than the given rectangle rMaxRect. */
+ // the default is to set the logic rect to the given rectangle rMaxRect. If the shape
+ // has an intrinsic aspect ratio it may set the logic rect so the aspect
+ // ratio is kept but still inside the rectangle rMaxRect.
+ // If bShrinkOnly is set to true, the size of the current logic rect will not
+ // be changed if it is smaller than the given rectangle rMaxRect.
virtual void AdjustToMaxRect( const Rectangle& rMaxRect, bool bShrinkOnly = false );
- // Drehwinkel und Shear
+ // rotation and shear angle
virtual long GetRotateAngle() const;
virtual long GetShearAngle(bool bVertical = false) const;
@@ -749,19 +720,18 @@ public:
virtual sal_uInt32 GetSnapPointCount() const;
virtual Point GetSnapPoint(sal_uInt32 i) const;
- // Fuer Objekte, bei denen jeder einzelne Punkt verschoben werden kann,
- // z.B. Polygone, Polylines, Linien, ... . Bei diesen Objekten werden
- // Punkte selektiert (ggf. Mehrfachselektion), geloescht, eingefuegt,
- // als Mehrfachselektion verschoben und gedreht, ...
- // Nur solche Objekte koennen PlusHandles haben (z.B. die Gewichte an den
- // Bezierkurven.
+ // For objects, whose points can be moved individually.
+ // (e.g. polygons, polylines, lines)
+ // The points of those objects are selected (if necessary multiselection),
+ // deleted, inserted, or as a multiselection moved or rotated...
+ // Only such objects can have PlusHandles (e.g. the weights of an Bezier curve).
virtual sal_Bool IsPolyObj() const;
virtual sal_uInt32 GetPointCount() const;
virtual Point GetPoint(sal_uInt32 i) const;
void SetPoint(const Point& rPnt, sal_uInt32 i);
virtual void NbcSetPoint(const Point& rPnt, sal_uInt32 i);
- // Alle geometrischen Daten holen fuer's Undo/Redo
+ // get all geometrical data for undo/redo
virtual SdrObjGeoData* GetGeoData() const;
virtual void SetGeoData(const SdrObjGeoData& rGeo);
@@ -786,26 +756,25 @@ public:
// syntactical sugar for ItemSet accesses
void SetMergedItemSetAndBroadcast(const SfxItemSet& rSet, bool bClearAllItems = false);
- // NotPersistAttr fuer Layer, ObjName, geometrische Transformationen, ...
+ // NotPersistAttr for Layer, ObjName, geometrical transformations etc.
void TakeNotPersistAttr(SfxItemSet& rAttr, bool bMerge) const;
void ApplyNotPersistAttr(const SfxItemSet& rAttr);
void NbcApplyNotPersistAttr(const SfxItemSet& rAttr);
- // bDontRemoveHardAttr=FALSE: alle in der Vorlage gesetzten Attribute werden am
- // Zeichenobjekt auf Default gesetzt; TRUE: alle harten Attribute bleiben erhalten.
+ // if bDontRemoveHardAttr is false, set all attributes, which were set in the style sheet, to their default value
+ // if true, all hard attributes keep their values
void SetStyleSheet(SfxStyleSheet* pNewStyleSheet, bool bDontRemoveHardAttr);
virtual void NbcSetStyleSheet(SfxStyleSheet* pNewStyleSheet, sal_Bool bDontRemoveHardAttr);
SfxStyleSheet* GetStyleSheet() const;
- // TextEdit
virtual bool HasTextEdit() const;
- // Return==TRUE: TextEditMode gestartet
+ // returns true if TextEditMode started
virtual sal_Bool BegTextEdit(SdrOutliner& rOutl);
virtual void EndTextEdit(SdrOutliner& rOutl);
- // Text wird im Format des Outliners gehalten
- // SetOutlinerParaObject: Eigentumsuebereignung von *pTextObject!
+ // keep text in outliner's format
+ // SetOutlinerParaObject: transfer ownership of *pTextObject!
virtual void SetOutlinerParaObject(OutlinerParaObject* pTextObject);
virtual void NbcSetOutlinerParaObject(OutlinerParaObject* pTextObject);
virtual OutlinerParaObject* GetOutlinerParaObject() const;
@@ -814,7 +783,7 @@ public:
void BurnInStyleSheetAttributes();
- // Macrofaehigkeit, z.B. ein Rechteck als PushButton.
+ // macro abilities, e.g. a rectangle as PushButton.
virtual bool HasMacro() const;
virtual SdrObject* CheckMacroHit (const SdrObjMacroHitRec& rRec) const;
virtual Pointer GetMacroPointer (const SdrObjMacroHitRec& rRec) const;
@@ -823,92 +792,84 @@ public:
virtual OUString GetMacroPopupComment(const SdrObjMacroHitRec& rRec) const;
bool IsMacroHit(const SdrObjMacroHitRec& rRec) const;
- // Konnektoren. (siehe auch Dokumentation in SvdoEdge.HXX, SdrEdgeObj
- // sowie SvdGlue.HXX und SvdGlEV.HXX)
- // Es gibt Knoten und Kanten. Eine Kante kann theoretisch auch Knoten
- // sein, das ist jedoch in dieser Version noch nicht implementiert.
- // Ein Knoten hat eine Anzahl von Klebepunkten, wo Kanten angeklebt
- // werden koennen.
- // Eine Kante kann
- // - ohne Verbindungen sein
- // - an einem Ende auf der Wiese stehen und am anderen Ende an
- // genau einem Knoten gebunden sein
- // - an beiden Enden mit jeweils genau einem Knoten verbunden sein.
- // Die Kante ist Listener bei seinen bis zu 2 Knoten.
- // Wird der Knoten verschoben oder Resized, folgen alle angebundenen
- // Kanten. Ebenso bei SetGluePoint()... am Knoten.
- // Beim Verschieben/Resizen der Kante wird dagegen die Verbindung
- // geloesst.
- // Objekt ist ein Knoten?
+ // Connectors
+ // (see also documentation in SvdoEdge.hxx, SdrEdgeObj,
+ // as well as SvdGlue.hxx and SvdGlEV.hxx)
+ // There are nodes and edges. In theory an edge can also be a node, but this isn't implemented yet.
+ // A node has a number of glue points, onto which edges can glued to
+ // An edge can be either
+ // - without any connection to any node,
+ // - or connected on one end to a node, while the other end is not connected,
+ // - or connected on both ends with exactly one node each.
+ // The edge is listener for its upto two nodes.
+ // Whenever a node is moved or resized, all its connected edges follow.
+ // This is also true for SetGluePoint()... on the node.
+ // On the other hand, moving/resizing an edge breaks the connection.
+
+ // is object a node?
virtual bool IsNode() const;
- // Automatische Klebepunkte:
- // je 4 Scheitelpunkt- und Eckpositionen muss ein Knotenobjekt liefern
- // i.d.R. 0=oben, 1=rechts, 2=unten, 3=links
+ // automatic glue points:
+ // a node object must provide four vertex and corner positions
+ // usually 0: top, 1: right, 2: bottom, 3: left
virtual SdrGluePoint GetVertexGluePoint(sal_uInt16 nNum) const;
- // i.d.R. 0=linksoben, 1=rechtsoben, 2=rechtsunten, 3=linksunten
+ // usually:
+ // 0: top-left, 1: top-right, 2: bottom-right, 3: bottom-left
virtual SdrGluePoint GetCornerGluePoint(sal_uInt16 nNum) const;
- // Liste aller Klebepunkte. Kann NULL sein.
+ // list of all glue points, can be NULL
virtual const SdrGluePointList* GetGluePointList() const;
//virtual SdrGluePointList* GetGluePointList();
- // Nach veraendern der GluePointList muss man am Obj SendRepaintBroadcast rufen!
+ // after changing the GluePointList, one has to call the object's SendRepaintBroadcast!
virtual SdrGluePointList* ForceGluePointList();
- // Temporaer zu setzen fuer Transformationen am Bezugsobjekt
+ // to be set temporarily when transforming related object(?)
void SetGlueReallyAbsolute(bool bOn);
void NbcRotateGluePoints(const Point& rRef, long nWink, double sn, double cs);
void NbcMirrorGluePoints(const Point& rRef1, const Point& rRef2);
void NbcShearGluePoints (const Point& rRef, long nWink, double tn, bool bVShear);
- // Objekt ist eine Kante?
+ // is object an edge?
virtual bool IsEdge() const;
- // bTail1=TRUE: Linienanfang, sonst LinienEnde
- // pObj=NULL: Disconnect
+ // if bTail1 is true, line start, otherwise line end
+ // if pObj is null disconnect
virtual void ConnectToNode(bool bTail1, SdrObject* pObj);
virtual void DisconnectFromNode(bool bTail1);
virtual SdrObject* GetConnectedNode(bool bTail1) const;
- /** sets the writing mode of the object's context
-
- Objects which itself do not support different writing modes will ignore this call.
-
- Objects which support different writing modes, but have an own, explicit writing mode set,
- will also ignore this call.
-
- Objects which support different writing modes, and whose own mode is set to css.text.WritingMode2.CONTEXT,
- will use the given writing mode to calculate their "effective writing mode".
-
- The behaviour of this method is undefined if you pass css.text.WritingMode2.CONTEXT.
-
- @param _nContextWritingMode
- the effective writing mode of the context of the object
- */
+ // sets the writing mode of the object's context
+ // Objects which itself do not support different writing modes will ignore this call.
+ // Objects which support different writing modes, but have an own, explicit writing mode set,
+ // will also ignore this call.
+ // Objects which support different writing modes, and whose own mode is set to css.text.WritingMode2.CONTEXT,
+ // will use the given writing mode to calculate their "effective writing mode".
+ // The behaviour of this method is undefined if you pass css.text.WritingMode2.CONTEXT.
+ // @param _nContextWritingMode
+ // the effective writing mode of the context of the object
virtual void SetContextWritingMode( const sal_Int16 _nContextWritingMode );
- // Wenn ein Objekt in der Lage ist, sich in ein Polygon oder in eine
- // Bezierkurve (oder beides) zu verwandeln, dann sollten die folgenden
- // Methoden ueberladen werden.
- // Z.B. Ein RectObj mit Strichstaerke 10, SOLID_PEN in Polygon wandeln:
- // Im Modus bLineToArea=false soll ein PolyObj mit 4 Stuetzstellen,
- // Strichstaerke 10 und SOLiD_PEN erzeugt werden.
- // Im Modus bLineToArea=true dagegen soll das generierte Obj immer ein
- // LinienAttribut NULL_PEN haben, und die Linie (auch Linienmuster) selbst
- // durch Polygonflaechen emuliert werden, die dadurch anschliessend vom
- // Anwender manipuliert werden koennen. Das RectObj kann sich somit also
- // nur korrekt konvertieren, wenn es als Flaechenattribut NULL_BRUSH
- // besitzt. Es muesste in diesem Fall dann:
- // - SOLID_BRUSH mit der Farbe des gesetzten Pen setzen
- // - NULL_PEN setzen
- // - PolyPolygon mit 2 Polygonen zu je 4 Stuetzstellen generieren.
- // Der Returnwert ist jeweils ein SdrObject*, da als Rueckgabe zur Not
- // auch Gruppenobjekte erlaubt sind (z.B. fuer SdrTextObj).
- // Bei der Konvertierung von TextObj nach PathObj wird es wohl so sein,
- // dass beide Modi (bLineToArea=true/false) identisch sind.
- // Defaulted sind diese Methoden auf "Ich kann das nicht" (FALSE/NULL).
+ // If an object is able to convert itself into a polygon or into a Bezier curve (or into both),
+ // then the following methods should be overridden.
+ // E.g., convert a RectObj with line width 10, SOLID_PEN into a polygon:
+ // In the bLineToArea=false mode a PolyObj with four supporting points,
+ // line width 10 and SOLID_PEN shall be created.
+ // On the contrary in the bLineToArea=true mode the generated object should
+ // still have a line attribute NULL_PEN, and the line (also line pattern)
+ // itself should be emulated by the polygon area, which thereby can be
+ // manipulated by the user afterwards.
+ // The RectObj therefore can only convert correctly if it has an area attribute NULL_BRUSH.
+ // In this case it would have to:
+ // - set SOLID_BRUSH with the color of the given pen,
+ // - set NULL_PEN, and
+ // - generate PolyPolygon with two polygons with four supporting points each.
+ // In each case the return value is a SdrObject*, because it is also
+ // allowed to return group objects (e.g. for SdrTextObj).
+ // In the case of the conversion from TextObj to PathObj,
+ // both modi (bLineToArea=true/false) would be identical.
+ // The methods' default implementations report "I'm unable to do this" (false/null).
virtual SdrObject* DoConvertToPolyObj(sal_Bool bBezier, bool bAddText) const;
SdrObject* ConvertToPolyObj(bool bBezier, bool bLineToArea) const;
@@ -918,11 +879,12 @@ public:
SdrObject* ConvertToContourObj(SdrObject* pRet, bool bForceLineDash = false) const;
SdrObject* ImpConvertToContourObj(SdrObject* pRet, bool bForceLineDash = false) const;
- // TRUE: Referenz auf ein Obj
+ // if true, reference onto an object
bool IsVirtualObj() const;
- // true=Obj kann warsch. gefuellt werden; false=Obj kann warsch. Linienenden haben.
- // ungueltig, wenn es sich um ein GroupObj handelt.
+ // is true, if object can probably be filled
+ // is false, if object has probably line ends
+ // is invalid, if this is a group object
bool IsClosedObj() const;
bool IsEdgeObj() const;
@@ -951,59 +913,50 @@ public:
// #i25616#
bool DoesSupportTextIndentingOnLineWidthChange() const;
- // applikationsspeziefische Daten
+ // application specific data
sal_uInt16 GetUserDataCount() const;
SdrObjUserData* GetUserData(sal_uInt16 nNum) const;
void AppendUserData(SdrObjUserData* pData);
- // Delete entfernt den Record aus der Liste und ruft
- // ein delete (FreeMem+Dtor).
+ // removes the record from the list and performs delete (FreeMem+Dtor).
void DeleteUserData(sal_uInt16 nNum);
- // ItemPool fuer dieses Objekt wechseln
+ // switch ItemPool for this object
void MigrateItemPool(SfxItemPool* pSrcPool, SfxItemPool* pDestPool, SdrModel* pNewModel = 0L);
- ////////////////////////////////////////////////////////////////////////////////////////////////////
// access to the UNO representation of the shape
virtual ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > getUnoShape();
::com::sun::star::uno::WeakReference< ::com::sun::star::uno::XInterface > getWeakUnoShape() const { return maWeakUnoShape; }
static SdrObject* getSdrObjectFromXShape( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& xInt );
- /** Sets a new UNO representation of the shape
- *
- * This is only a public interface function. The actual work is
- * done by impl_setUnoShape().
- *
- * Calling this function is only allowed for the UNO representation
- * itself!
- */
+ // sets a new UNO representation of the shape
+ // This is only a public interface function. The actual work is
+ // done by impl_setUnoShape().
+ // Calling this function is only allowed for the UNO representation
+ // itself!
void setUnoShape(
const com::sun::star::uno::Reference<
com::sun::star::uno::XInterface>& _rxUnoShape);
- /** retrieves the instance responsible for notifying changes in the properties of the shape associated with
- the SdrObject
-
- @precond
- There already exists an SvxShape instance associated with the SdrObject
- @throws ::com::sun::star::uno::RuntimeException
- if there does nt yet exists an SvxShape instance associated with the SdrObject.
- */
+ // retrieves the instance responsible for notifying changes in the properties of the shape associated with
+ // the SdrObject
+ //
+ // @precond
+ // There already exists an SvxShape instance associated with the SdrObject
+ // @throws ::com::sun::star::uno::RuntimeException
+ // if there does nt yet exists an SvxShape instance associated with the SdrObject.
::svx::PropertyChangeNotifier&
getShapePropertyChangeNotifier();
- /** notifies a change in the given property, to all applicable listeners registered at the associated SvxShape
-
- This method is equivalent to calling getShapePropertyChangeNotifier().notifyPropertyChange( _eProperty ),
- exception that it is allowed to be called when there does not yet exist an associated SvxShape - in which
- case the method will silently return without doing anything.
- */
+ // notifies a change in the given property, to all applicable listeners registered at the associated SvxShape
+ //
+ // This method is equivalent to calling getShapePropertyChangeNotifier().notifyPropertyChange( _eProperty ),
+ // exception that it is allowed to be called when there does not yet exist an associated SvxShape - in which
+ // case the method will silently return without doing anything.
void notifyShapePropertyChange( const ::svx::ShapeProperty _eProperty ) const;
- ////////////////////////////////////////////////////////////////////////////////////////////////////
- //
// transformation interface for StarOfficeAPI. This implements support for
// homogen 3x3 matrices containing the transformation of the SdrObject. At the
// moment it contains a shearX, rotation and translation, but for setting all linear
@@ -1019,7 +972,7 @@ public:
virtual void TRSetBaseGeometry(const basegfx::B2DHomMatrix& rMatrix, const basegfx::B2DPolyPolygon& rPolyPolygon);
// #116168#
- // Give info if object is in destruction
+ // give info if object is in destruction
bool IsInDestruction() const;
// return if fill is != XFILL_NONE
@@ -1028,7 +981,7 @@ public:
// on import of OLE object from MS documents the BLIP size might be retrieved,
// the following methods are used to control it;
- // usually this data makes no sence after the import is finished, since the object
+ // usually this data makes no sense after the import is finished, since the object
// might be resized
Rectangle GetBLIPSizeRectangle() const;
void SetBLIPSizeRectangle( const Rectangle& aRect );
@@ -1044,58 +997,51 @@ public:
virtual OString stringify() const;
protected:
- /** Sets a new UNO shape
- *
- * The default implementation of this function sets the new UNO
- * shape. Derived classes should override the function to handle
- * any other actions that are needed when the shape is being
- * changed.
- *
- * The implementation _must_ call the same method of its parent
- * class (preferably as the first step)!
- */
+ // Sets a new UNO shape
+ //
+ // The default implementation of this function sets the new UNO
+ // shape. Derived classes should override the function to handle
+ // any other actions that are needed when the shape is being
+ // changed.
+ //
+ // The implementation _must_ call the same method of its parent
+ // class (preferably as the first step)!
virtual void impl_setUnoShape( const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface >& _rxUnoShape );
- /**
- Helper function for reimplementing Clone().
- */
+ // helper function for reimplementing Clone().
template< typename T > T* CloneHelper() const;
private:
- /** only for internal use!
- */
+ // only for internal use!
SvxShape* getSvxShape();
- /** do not use directly, always use getSvxShape() if you have to! */
+ // do not use directly, always use getSvxShape() if you have to!
SvxShape* mpSvxShape;
::com::sun::star::uno::WeakReference< ::com::sun::star::uno::XInterface >
maWeakUnoShape;
- /** HACK: Do not automatically insert newly created object into a page.
- *
- * The user needs to do it manually later.
- */
+ // HACK: Do not automatically insert newly created object into a page.
+ // The user needs to do it manually later.
bool mbDoNotInsertIntoPageAutomatically;
};
-// Wer sich eigene Objekte schafft muss einen Link in der Klasse
-// SdrObjFactory setzen. Der Handler hat folgendes aussehen:
+// Whoever creates his own objects must set a link in the SdrObjFactory class.
+// The handler must have the following signature:
// void Hdl(SdrObjFactory*)
-// Er muss sich aus der uebergebenen Instanz die Werte nInventor und
-// nIdentifier ansehen und entsprechend mit new eine Zeichenobjektinstanz
-// erzeugen. Einen Zeiger auf diese Instanz hat er in der Membervariablen
-// pNewObj zu hinterlassen.
+// He must take a look at the referenced instance's nInventor and nIdentifier values,
+// and must create a new drawing object instance accordingly.
+// He must also make the pNewObj pointer reference to this instance.
class SVX_DLLPUBLIC SdrObjFactory
{
public:
sal_uInt32 nInventor;
sal_uInt16 nIdentifier;
- // fuer MakeNewObj():
+ // for MakeNewObj():
SdrPage* pPage;
SdrModel* pModel;
SdrObject* pNewObj;
- // fuer MakeNewObjUserData():
+ // for MakeNewObjUserData():
SdrObject* pObj;
SdrObjUserData* pNewData;