class SwTextNode; class SwTextFrame; class Point; class MultiSelection; enumclass SwFontScript; namespace sw { struct MergedPara; } namespace sw::mark { class Bookmark; }
#define SPACING_PRECISION_FACTOR 100
// encapsulates information about script changes class SwScriptInfo
{ public: enum CompType { KANA, SPECIAL_LEFT, SPECIAL_RIGHT, NONE, SPECIAL_MIDDLE}; enumclass MarkKind { Start = (1<<0), End = (1<<1), Point = (1<<2) };
private: //! Records a single change in script type. struct ScriptChangeInfo
{
TextFrameIndex position; //!< Character position at which we change script
sal_uInt8 type; //!< Script type (Latin/Asian/Complex) that we change to.
ScriptChangeInfo(TextFrameIndex pos, sal_uInt8 typ) : position(pos), type(typ) {};
}; //TODO - This is sorted, so should probably be a std::set rather than vector. // But we also use random access (probably unnecessarily).
std::vector<ScriptChangeInfo> m_ScriptChanges; //! Records a single change in direction. struct DirectionChangeInfo
{
TextFrameIndex position; //!< Character position at which we change direction.
sal_uInt8 type; //!< Direction that we change to.
DirectionChangeInfo(TextFrameIndex pos, sal_uInt8 typ) : position(pos), type(typ) {};
};
std::vector<DirectionChangeInfo> m_DirectionChanges;
std::vector<TextFrameIndex> m_Kashida;
std::vector<TextFrameIndex> m_HiddenChg;
std::vector<std::tuple<TextFrameIndex, MarkKind, Color, SwMarkName, OUString>> m_Bookmarks; //! Records a single change in compression. struct CompressionChangeInfo
{
TextFrameIndex position; //!< Character position where the change occurs.
TextFrameIndex length; //!< Length of the segment.
CompType type; //!< Type of compression that we change to.
CompressionChangeInfo(TextFrameIndex pos, TextFrameIndex len, CompType typ) : position(pos), length(len), type(typ) {};
};
std::vector<CompressionChangeInfo> m_CompressionChanges; #ifdef DBG_UTIL
CompType DbgCompType(const TextFrameIndex nPos) const; #endif
// examines the range [ nStart, nStart + nEnd ] if there are kanas // returns start index of kana entry in array, otherwise SAL_MAX_SIZE
size_t HasKana(TextFrameIndex nStart, TextFrameIndex nEnd) const;
// set/get position from which data is invalid void SetInvalidityA(const TextFrameIndex nPos)
{ if (nPos < m_nInvalidityPos)
m_nInvalidityPos = nPos;
}
TextFrameIndex GetInvalidityA() const
{ return m_nInvalidityPos;
}
// get default direction for paragraph
sal_uInt8 GetDefaultDir() const { return m_nDefaultDir; };
// "high" level operations, nPos refers to string position
TextFrameIndex NextScriptChg(TextFrameIndex nPos) const;
sal_Int16 ScriptType(const TextFrameIndex nPos) const;
// Returns the position of the next direction level change. // If bLevel is set, the position of the next level which is smaller // than the level at position nPos is returned. This is required to // obtain the end of a SwBidiPortion
TextFrameIndex NextDirChg(const TextFrameIndex nPos, const sal_uInt8* pLevel = nullptr) const;
sal_uInt8 DirType(const TextFrameIndex nPos) const;
// HIDDEN TEXT STUFF START
/** Hidden text range information - static and non-version
/// return a frame for the node, ScriptInfo is its member... /// (many clients need both frame and SI, and both have to match) static SwScriptInfo* GetScriptInfo( const SwTextNode& rNode,
SwTextFrame const** o_pFrame = nullptr, bool bAllowInvalid = false);
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.