class SwLayoutFrame; class SwFont; class SwFormatAnchor; class SwViewShell; class SwPageFrame; class SwFlyFrame; class SwContentFrame; class SwRootFrame; class SwDoc; class SdrObject; class SvxBrushItem; class SdrMarkList; class GraphicObject; class GraphicAttr; class SwPageDesc; class SwRegionRects; class SwTextNode; namespace basegfx::utils { class B2DClipState; }
#define FAR_AWAY (SAL_MAX_INT32 - 20000) // initial position of a Fly
constexpr tools::Long BROWSE_HEIGHT = 56700 * 10; // 10 Meters #define GRFNUM_NO 0 #define GRFNUM_YES 1 #define GRFNUM_REPLACE 2
// get Fly, if no List is given use the current shell // Implementation in feshview.cxx
SwFlyFrame *GetFlyFromMarked( const SdrMarkList *pLst, SwViewShell *pSh );
// Notify classes memorize the current sizes in their constructor and do // the necessary notifications in their destructor if needed class SwFrameNotify
{ private: void ImplDestroy();
// SwBorderAttrs encapsulates the calculation for margin attributes including // border. The whole class is cached.
// WARNING! If more attributes should be cached also adjust the method // Modify::Modify! class SwBorderAttrs final : public SwCacheObj
{ const SwAttrSet &m_rAttrSet; const SvxULSpaceItem &m_rUL;
std::unique_ptr<SvxFirstLineIndentItem> m_pFirstLineIndent;
std::unique_ptr<SvxTextLeftMarginItem> m_pTextLeftMargin;
std::unique_ptr<SvxRightMarginItem> m_pRightMargin;
std::shared_ptr<SvxLRSpaceItem> m_xLR; const SvxBoxItem &m_rBox; const SvxShadowItem &m_rShadow; const Size m_aFrameSize;
// the following bool values set the cached values to INVALID - until they // are calculated for the first time bool m_bTopLine : 1; bool m_bBottomLine : 1; bool m_bLeftLine : 1; bool m_bRightLine : 1; bool m_bTop : 1; bool m_bBottom : 1; bool m_bLine : 1; bool m_bLineSpacing : 1;
bool m_bIsLine : 1; // border on at least one side?
bool m_bCacheGetLine : 1; // cache GetTopLine(), GetBottomLine()? bool m_bCachedGetTopLine : 1; // is GetTopLine() cached? bool m_bCachedGetBottomLine : 1; // is GetBottomLine() cached? // Booleans indicate that <m_bJoinedWithPrev> and <m_bJoinedWithNext> are // cached and valid. // Caching depends on value of <m_bCacheGetLine>. mutablebool m_bCachedJoinedWithPrev : 1; mutablebool m_bCachedJoinedWithNext : 1; // Booleans indicate that borders are joined with previous/next frame. mutablebool m_bJoinedWithPrev :1; mutablebool m_bJoinedWithNext :1;
// The cached values (un-defined until calculated for the first time)
sal_uInt16 m_nTopLine,
m_nBottomLine,
m_nLeftLine,
m_nRightLine,
m_nTop,
m_nBottom,
m_nGetTopLine,
m_nGetBottomLine,
m_nLineSpacing;
// only calculate lines and shadow void CalcTopLine_(); void CalcBottomLine_(); void CalcLeftLine_(); void CalcRightLine_();
// #i25029# - If <_pPrevFrame> is set, its value is taken for testing, if // borders/shadow have to be joined with previous frame. void GetTopLine_ ( const SwFrame& _rFrame, const SwFrame* _pPrevFrame ); void GetBottomLine_( const SwFrame& _rFrame );
// calculate cached values <m_bJoinedWithPrev> and <m_bJoinedWithNext> // #i25029# - If <_pPrevFrame> is set, its value is taken for testing, if // borders/shadow have to be joined with previous frame. void CalcJoinedWithPrev( const SwFrame& _rFrame, const SwFrame* _pPrevFrame ) const; void CalcJoinedWithNext( const SwFrame& _rFrame ) const;
// internal helper method for CalcJoinedWithPrev and CalcJoinedWithNext bool JoinWithCmp( const SwFrame& _rCallerFrame, const SwFrame& _rCmpFrame ) const;
// Are the left and right line and the LRSpace equal? bool CmpLeftRight( const SwBorderAttrs &rCmpAttrs, const SwFrame *pCaller, const SwFrame *pCmp ) const;
// tdf#125300 line spacing before cell border void CalcLineSpacing_();
// Should upper (or lower) border be evaluated for this frame? // #i25029# - If <_pPrevFrame> is set, its value is taken for testing, if // borders/shadow have to be joined with previous frame. inline sal_uInt16 GetTopLine ( const SwFrame& _rFrame, const SwFrame* _pPrevFrame = nullptr ) const; inline sal_uInt16 GetBottomLine( const SwFrame& _rFrame ) const; inlinevoid SetGetCacheLine( bool bNew ) const;
// Accessors for cached values <m_bJoinedWithPrev> and <m_bJoinedWithNext> // #i25029# - If <_pPrevFrame> is set, its value is taken for testing, if // borders/shadow have to be joined with previous frame. bool JoinedWithPrev( const SwFrame& _rFrame, const SwFrame* _pPrevFrame = nullptr ) const; bool JoinedWithNext( const SwFrame& _rFrame ) const;
};
class SwBorderAttrAccess final : public SwCacheAccess
{ const SwFrame *m_pConstructor; //opt: for passing on to SwBorderAttrs
// Iterator for draw objects of a page. The objects will be iterated sorted by // their Z-order. Iterating is not cheap since for each operation the _whole_ // SortArray needs to be traversed. class SwOrderIter
{ const SwPageFrame *m_pPage; const SdrObject *m_pCurrent;
/** helper class to check if a frame has been deleted during an operation *WARNING!Thisshouldonlybeusedasalastanddesperatemeanstomakethe *coderobust.
*/
class SwDeletionChecker
{ private: const SwFrame* mpFrame; const sw::BroadcastingModify* mpRegIn;
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.