/// These all set both nNode and nContent void Assign( const SwNode& rNd, SwNodeOffset nDelta, sal_Int32 nContentOffset = 0 ); void Assign( SwNodeOffset nNodeOffset, sal_Int32 nContentOffset = 0 ); void Assign( const SwContentNode& rNode, sal_Int32 nContentOffset = 0 ); void Assign( const SwNode& rNd, sal_Int32 nContentOffset = 0 ); void Assign( const SwNodeIndex& rNdIdx, sal_Int32 nContentOffset = 0 ); /// Set nNode to rNd, and nContent to the beginning of rNd void AssignStartIndex( const SwContentNode& rNd ); /// Set nNode to rNd, and nContent to the end of rNd void AssignEndIndex( const SwContentNode& rNd ); /// Adjust node position, and resets content position to zero void Adjust( SwNodeOffset nDelta ); /// Adjust content index, only valid to call this if the position points to a SwContentNode subclass void AdjustContent( sal_Int32 nDelta ); /// Set content index, only valid to call this if the position points to a SwContentNode subclass void SetContent( sal_Int32 nContentIndex );
};
// Result of comparing positions. enumclass SwComparePosition {
Before, ///< Pos1 before Pos2.
Behind, ///< Pos1 behind Pos2.
Inside, ///< Pos1 completely contained in Pos2.
Outside, ///< Pos2 completely contained in Pos1.
Equal, ///< Pos1 is as large as Pos2.
OverlapBefore, ///< Pos1 overlaps Pos2 at the beginning.
OverlapBehind, ///< Pos1 overlaps Pos2 at the end.
CollideStart, ///< Pos1 start touches at Pos2 end.
CollideEnd ///< Pos1 end touches at Pos2 start.
};
/** *PaMisPointandMark:aselectionofthedocumentmodel. * *Thereasonforthedistinctionisthatthepointmovesaroundduringadjustingtheselectionwith *shift-arrowkeys,whilethemarkremainswhereitis.
*/ class SAL_WARN_UNUSED SW_DLLPUBLIC SwPaM : public sw::Ring<SwPaM>
{
SwPosition m_Bound1;
SwPosition m_Bound2;
SwPosition * m_pPoint; ///< points at either m_Bound1 or m_Bound2
SwPosition * m_pMark; ///< points at either m_Bound1 or m_Bound2 bool m_bIsInFrontOfLabel;
/// this takes a second parameter, which indicates the Ring that /// the new PaM should be part of (may be null)
SwPaM(SwPaM const& rPaM, SwPaM * pRing); /// @@@ semantic: no copy assignment for super class Ring.
SwPaM& operator=( const SwPaM & );
/// Movement of cursor. bool Move( SwMoveFnCollection const & fnMove = fnMoveForward,
SwGoInDoc fnGo = GoInContent );
/// Unless this is called, the getter method of Mark will return Point. virtualvoid SetMark();
void DeleteMark()
{ if (HasMark())
{ /** clear the mark position; this helps if mark's SwContentIndex is
registered at some node, and that node is then deleted */
m_pMark->Assign( *GetPointNode().GetNodes()[SwNodeOffset(0)] );
m_pMark = m_pPoint;
}
} void Exchange()
{ if (HasMark())
std::swap(m_pPoint, m_pMark);
}
/** A PaM marks a selection if Point and Mark are distinct positions. @returntrueifthePaMspansaselection
*/ bool HasMark() const { return m_pPoint != m_pMark; }
/// @return the document (SwDoc) at which the PaM is registered
SwDoc& GetDoc() const { return m_pPoint->nNode.GetNode().GetDoc(); }
SwPosition& GetBound( bool bOne = true )
{ return bOne ? m_Bound1 : m_Bound2; } const SwPosition& GetBound( bool bOne = true ) const
{ return bOne ? m_Bound1 : m_Bound2; }
/// Get number of page which contains cursor.
sal_uInt16 GetPageNum( bool bAtPoint = true, const Point* pLayPos = nullptr );
/** Is in something protected (readonly) or selection contains
something protected. */ bool HasReadonlySel(bool bFormView, bool isReplace) const; /** Is there hidden sections in the selected area. */ bool HasHiddenSections() const;
Die Informationen auf dieser Webseite wurden
nach bestem Wissen sorgfältig zusammengestellt. Es wird jedoch weder Vollständigkeit, noch Richtigkeit,
noch Qualität der bereit gestellten Informationen zugesichert.
Bemerkung:
Die farbliche Syntaxdarstellung und die Messung sind noch experimentell.