diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.co.uk> | 2023-12-29 20:54:43 +0900 |
---|---|---|
committer | Tomaž Vajngerl <quikee@gmail.com> | 2024-01-01 04:34:20 +0100 |
commit | 916268c70a5673680c86eaac11c543fd45b90eb3 (patch) | |
tree | fe6eaf1b9d8dd41e758ef3a8e00ce1defda3c53b /editeng | |
parent | 0020f05df2e7fc739e5e017e035efbe3c9bc8b35 (diff) |
editeng: move ParaPortion into its own header file
Change-Id: I3fefe4a9fc5d391b1c3af335893a084eaeddba4d
Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161475
Tested-by: Tomaž Vajngerl <quikee@gmail.com>
Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'editeng')
-rw-r--r-- | editeng/inc/ParagraphPortion.hxx | 133 | ||||
-rw-r--r-- | editeng/inc/editdoc.hxx | 104 |
2 files changed, 134 insertions, 103 deletions
diff --git a/editeng/inc/ParagraphPortion.hxx b/editeng/inc/ParagraphPortion.hxx new file mode 100644 index 000000000000..93eb8356f611 --- /dev/null +++ b/editeng/inc/ParagraphPortion.hxx @@ -0,0 +1,133 @@ +/* -*- 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 . + */ + +#pragma once + +#include "EditLineList.hxx" +#include "TextPortionList.hxx" + +struct ScriptTypePosInfo +{ + short nScriptType; + sal_Int32 nStartPos; + sal_Int32 nEndPos; + + ScriptTypePosInfo(short Type, sal_Int32 Start, sal_Int32 End) + : nScriptType(Type) + , nStartPos(Start) + , nEndPos(End) + { + } +}; + +typedef std::vector<ScriptTypePosInfo> ScriptTypePosInfos; + +struct WritingDirectionInfo +{ + sal_uInt8 nType; + sal_Int32 nStartPos; + sal_Int32 nEndPos; + + WritingDirectionInfo(sal_uInt8 Type, sal_Int32 Start, sal_Int32 End) + : nType(Type) + , nStartPos(Start) + , nEndPos(End) + { + } +}; + +typedef std::vector<WritingDirectionInfo> WritingDirectionInfos; + +class ParaPortion +{ + friend class ImpEditEngine; // to adjust the height +private: + EditLineList aLineList; + TextPortionList aTextPortionList; + ContentNode* pNode; + tools::Long nHeight; + + ScriptTypePosInfos aScriptInfos; + WritingDirectionInfos aWritingDirectionInfos; + + sal_Int32 nInvalidPosStart; + sal_Int32 nFirstLineOffset; // For Writer-LineSpacing-Interpretation + sal_Int32 nBulletX; + sal_Int32 nInvalidDiff; + + bool bInvalid : 1; + bool bSimple : 1; // only linear Tap + bool bVisible : 1; // Belongs to the node! + bool bForceRepaint : 1; + + ParaPortion(const ParaPortion&) = delete; + +public: + ParaPortion(ContentNode* pNode); + ~ParaPortion(); + + sal_Int32 GetLineNumber(sal_Int32 nIndex) const; + + EditLineList& GetLines() { return aLineList; } + const EditLineList& GetLines() const { return aLineList; } + + bool IsInvalid() const { return bInvalid; } + bool IsSimpleInvalid() const { return bSimple; } + void SetValid() + { + bInvalid = false; + bSimple = true; + } + + bool MustRepaint() const { return bForceRepaint; } + void SetMustRepaint(bool bRP) { bForceRepaint = bRP; } + + sal_Int32 GetBulletX() const { return nBulletX; } + void SetBulletX(sal_Int32 n) { nBulletX = n; } + + void MarkInvalid(sal_Int32 nStart, sal_Int32 nDiff); + void MarkSelectionInvalid(sal_Int32 nStart); + + void SetVisible(bool bVisible); + bool IsVisible() const { return bVisible; } + + bool IsEmpty() { return GetTextPortions().Count() == 1 && GetTextPortions()[0].GetLen() == 0; } + + tools::Long GetHeight() const { return (bVisible ? nHeight : 0); } + sal_Int32 GetFirstLineOffset() const { return (bVisible ? nFirstLineOffset : 0); } + void ResetHeight() + { + nHeight = 0; + nFirstLineOffset = 0; + } + + ContentNode* GetNode() const { return pNode; } + TextPortionList& GetTextPortions() { return aTextPortionList; } + const TextPortionList& GetTextPortions() const { return aTextPortionList; } + + sal_Int32 GetInvalidPosStart() const { return nInvalidPosStart; } + short GetInvalidDiff() const { return nInvalidDiff; } + + void CorrectValuesBehindLastFormattedLine(sal_Int32 nLastFormattedLine); +#if OSL_DEBUG_LEVEL > 0 + static bool DbgCheckTextPortions(ParaPortion const&); +#endif +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/editeng/inc/editdoc.hxx b/editeng/inc/editdoc.hxx index f81eac050b76..1b93d52a6a88 100644 --- a/editeng/inc/editdoc.hxx +++ b/editeng/inc/editdoc.hxx @@ -37,6 +37,7 @@ #include "EditLineList.hxx" #include "EditPaM.hxx" #include "EditSelection.hxx" +#include "ParagraphPortion.hxx" #include <cstddef> #include <memory> @@ -58,39 +59,6 @@ EditCharAttrib* MakeCharAttrib( SfxItemPool& rPool, const SfxPoolItem& rAttr, sa class EditDoc; -struct ScriptTypePosInfo -{ - short nScriptType; - sal_Int32 nStartPos; - sal_Int32 nEndPos; - - ScriptTypePosInfo( short Type, sal_Int32 Start, sal_Int32 End ) - : nScriptType(Type) - , nStartPos(Start) - , nEndPos(End) - { - } -}; - -typedef std::vector<ScriptTypePosInfo> ScriptTypePosInfos; - -struct WritingDirectionInfo -{ - sal_uInt8 nType; - sal_Int32 nStartPos; - sal_Int32 nEndPos; - - WritingDirectionInfo( sal_uInt8 Type, sal_Int32 Start, sal_Int32 End ) - : nType(Type) - , nStartPos(Start) - , nEndPos(End) - { - } -}; - - -typedef std::vector<WritingDirectionInfo> WritingDirectionInfos; - class ContentAttribsInfo { private: @@ -114,76 +82,6 @@ enum class DeleteMode { Simple, RestOfWord, RestOfContent }; -class ParaPortion -{ - friend class ImpEditEngine; // to adjust the height -private: - EditLineList aLineList; - TextPortionList aTextPortionList; - ContentNode* pNode; - tools::Long nHeight; - - ScriptTypePosInfos aScriptInfos; - WritingDirectionInfos aWritingDirectionInfos; - - sal_Int32 nInvalidPosStart; - sal_Int32 nFirstLineOffset; // For Writer-LineSpacing-Interpretation - sal_Int32 nBulletX; - sal_Int32 nInvalidDiff; - - bool bInvalid : 1; - bool bSimple : 1; // only linear Tap - bool bVisible : 1; // Belongs to the node! - bool bForceRepaint : 1; - - ParaPortion( const ParaPortion& ) = delete; - -public: - ParaPortion( ContentNode* pNode ); - ~ParaPortion(); - - sal_Int32 GetLineNumber( sal_Int32 nIndex ) const; - - EditLineList& GetLines() { return aLineList; } - const EditLineList& GetLines() const { return aLineList; } - - bool IsInvalid() const { return bInvalid; } - bool IsSimpleInvalid() const { return bSimple; } - void SetValid() { bInvalid = false; bSimple = true;} - - bool MustRepaint() const { return bForceRepaint; } - void SetMustRepaint( bool bRP ) { bForceRepaint = bRP; } - - sal_Int32 GetBulletX() const { return nBulletX; } - void SetBulletX( sal_Int32 n ) { nBulletX = n; } - - void MarkInvalid( sal_Int32 nStart, sal_Int32 nDiff); - void MarkSelectionInvalid( sal_Int32 nStart ); - - void SetVisible( bool bVisible ); - bool IsVisible() const { return bVisible; } - - bool IsEmpty() { return GetTextPortions().Count() == 1 && GetTextPortions()[0].GetLen() == 0; } - - tools::Long GetHeight() const { return ( bVisible ? nHeight : 0 ); } - sal_Int32 GetFirstLineOffset() const { return ( bVisible ? nFirstLineOffset : 0 ); } - void ResetHeight() { nHeight = 0; nFirstLineOffset = 0; } - - ContentNode* GetNode() const { return pNode; } - TextPortionList& GetTextPortions() { return aTextPortionList; } - const TextPortionList& GetTextPortions() const { return aTextPortionList; } - - sal_Int32 GetInvalidPosStart() const { return nInvalidPosStart; } - short GetInvalidDiff() const { return nInvalidDiff; } - - void CorrectValuesBehindLastFormattedLine( sal_Int32 nLastFormattedLine ); -#if OSL_DEBUG_LEVEL > 0 - static bool DbgCheckTextPortions(ParaPortion const&); -#endif -}; - - - class ParaPortionList { mutable sal_Int32 nLastCache; |