/* -*- 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 INCLUDED_SW_INC_NDHINTS_HXX #define INCLUDED_SW_INC_NDHINTS_HXX
#include"swtypes.hxx"
class SwTextNode; class SwRegHistory; // Is in RolBck.hxx. class SwTextAttr; class SwTextAttrNesting;
class SfxPoolItem; class SfxItemSet; class SwDoc;
enumclass CopyOrNewType { Copy, New };
/// if COPY then pTextNode must be given!
SwTextAttr * MakeTextAttr(
SwDoc & rDoc,
SfxPoolItem & rNew,
sal_Int32 const nStt,
sal_Int32 const nEnd,
CopyOrNewType const bIsCopy = CopyOrNewType::New,
SwTextNode *const pTextNode = nullptr );
/// create redline dummy text hint that must not be inserted into hints array
SwTextAttr* MakeRedlineTextAttr(
SwDoc & rDoc,
SfxPoolItem const & rAttr );
struct CompareSwpHtEnd
{ booloperator()( sal_Int32 nEndPos, const SwTextAttr* rhs ) const; booloperator()( const SwTextAttr* lhs, const SwTextAttr* rhs ) const;
}; typedef std::pair<sal_Int32, sal_Int32> WhichStartPair; struct CompareSwpHtWhichStart
{ booloperator()( const SwTextAttr* lhs, const sal_uInt16 nWhich ) const; booloperator()( const SwTextAttr* lhs, const SwTextAttr* rhs ) const; // used when we sort only a partial range of the map booloperator()( const SwTextAttr* lhs, const WhichStartPair nWhich ) const; booloperator()( const WhichStartPair nWhich, const SwTextAttr* lhs ) const;
};
/// An SwTextAttr container, stores all directly formatted text portions for a text node. class SwpHints
{ private: const SwTextNode& m_rParent;
// SAL_MAX_SIZE is used by GetStartOf to return // failure, so just allow SAL_MAX_SIZE-1 hints staticconst size_t MAX_HINTS = SAL_MAX_SIZE-1;
/// true: the Node is in Split and Frames are moved bool m_bInSplitNode : 1; // m_bHiddenByParaField is invalid, call CalcHiddenParaField() mutablebool m_bCalcHiddenParaField : 1; // if all fields controlling visibility of the paragraph require to hide it // (if there's no such fields, or if any field requires to show, then this is false) mutablebool m_bHiddenByParaField : 1; bool m_bFootnote : 1; ///< footnotes bool m_bDDEFields : 1; ///< the TextNode has DDE fields // Sort on demand to avoid O(n^2) behaviour // SAL_MAX_INT32 means nothing needs sorting, -1 means everything needs sorting mutable std::pair<sal_Int32, sal_Int32> m_StartMapNeedsSortingRange { SAL_MAX_INT32, -1 }; mutable std::pair<sal_Int32, sal_Int32> m_EndMapNeedsSortingRange { SAL_MAX_INT32, -1 }; // we are storing pairs of { Which, Start } here mutable std::pair<WhichStartPair, WhichStartPair> m_WhichMapNeedsSortingRange { { SAL_MAX_INT32, -1 }, { -1, -1 } };
/// records a new attribute in m_pHistory. void NoteInHistory( SwTextAttr *pAttr, constbool bNew = false );
void CalcFlags( );
/** Delete methods may only be called by the TextNode! Because the TextNode also guarantees removal of the Character for
attributes without an end. */ friendclass SwTextNode; void DeleteAtPos( size_t nPos ); /// Delete the given Hint. The Hint must actually be in the array! voidDelete( SwTextAttr const * pTextHt );
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.