summaryrefslogtreecommitdiff
path: root/editeng
diff options
context:
space:
mode:
authorTomaž Vajngerl <tomaz.vajngerl@collabora.co.uk>2023-12-09 15:26:34 +0900
committerTomaž Vajngerl <quikee@gmail.com>2023-12-29 02:42:14 +0100
commit1958805f61612a7b23f1c5c2d532be4d5dc24a2a (patch)
tree35584ec576aba087e3536b06b0beb9843ddcd51d /editeng
parent0f6f5048d223731aa52b768a77244d0208711391 (diff)
editeng: move TextPortion to own header file
Change-Id: I54d0bbad4ef142705191672319774f26abf3e735 Reviewed-on: https://gerrit.libreoffice.org/c/core/+/161348 Tested-by: Jenkins Reviewed-by: Tomaž Vajngerl <quikee@gmail.com>
Diffstat (limited to 'editeng')
-rw-r--r--editeng/inc/TextPortion.hxx147
-rw-r--r--editeng/inc/editdoc.hxx124
-rw-r--r--editeng/source/editeng/editdoc.cxx26
-rw-r--r--editeng/source/editeng/impedit3.cxx1
4 files changed, 149 insertions, 149 deletions
diff --git a/editeng/inc/TextPortion.hxx b/editeng/inc/TextPortion.hxx
new file mode 100644
index 000000000000..e5560f260326
--- /dev/null
+++ b/editeng/inc/TextPortion.hxx
@@ -0,0 +1,147 @@
+/* -*- 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 "editattr.hxx"
+#include "edtspell.hxx"
+#include "eerdll2.hxx"
+#include <editeng/svxfont.hxx>
+#include <editeng/EPaM.hxx>
+#include <svl/itemset.hxx>
+#include <svl/style.hxx>
+#include <svl/itempool.hxx>
+#include <svl/languageoptions.hxx>
+#include <tools/lineend.hxx>
+#include <o3tl/typed_flags_set.hxx>
+
+#include <vector>
+
+enum class PortionKind
+{
+ TEXT = 0,
+ TAB = 1,
+ LINEBREAK = 2,
+ FIELD = 3,
+ HYPHENATOR = 4
+};
+
+enum class AsianCompressionFlags
+{
+ Normal = 0x00,
+ Kana = 0x01,
+ PunctuationLeft = 0x02,
+ PunctuationRight = 0x04,
+};
+namespace o3tl
+{
+template <> struct typed_flags<AsianCompressionFlags> : is_typed_flags<AsianCompressionFlags, 0x07>
+{
+};
+}
+
+struct ExtraPortionInfo
+{
+ ExtraPortionInfo() {}
+
+ tools::Long nOrgWidth = 0;
+ tools::Long nWidthFullCompression = 0;
+
+ tools::Long nPortionOffsetX = 0;
+
+ sal_uInt16 nMaxCompression100thPercent = 0;
+
+ AsianCompressionFlags nAsianCompressionTypes = AsianCompressionFlags::Normal;
+ bool bFirstCharIsRightPunktuation = false;
+ bool bCompressed = false;
+
+ std::unique_ptr<sal_Int32[]> pOrgDXArray;
+ std::vector<sal_Int32> lineBreaksList;
+
+ void SaveOrgDXArray(const sal_Int32* pDXArray, sal_Int32 nLen)
+ {
+ if (pDXArray)
+ {
+ pOrgDXArray.reset(new sal_Int32[nLen]);
+ memcpy(pOrgDXArray.get(), pDXArray, nLen * sizeof(sal_Int32));
+ }
+ else
+ pOrgDXArray.reset();
+ }
+};
+
+class TextPortion
+{
+private:
+ std::unique_ptr<ExtraPortionInfo> xExtraInfos;
+ sal_Int32 nLen;
+ Size aOutSz = Size(-1, -1);
+ PortionKind nKind = PortionKind::TEXT;
+ sal_uInt8 nRightToLeftLevel = 0;
+ sal_Unicode nExtraValue = 0;
+
+public:
+ TextPortion(sal_Int32 nL)
+ : nLen(nL)
+ {
+ }
+
+ TextPortion(const TextPortion& r)
+ : nLen(r.nLen)
+ , aOutSz(r.aOutSz)
+ , nKind(r.nKind)
+ , nRightToLeftLevel(r.nRightToLeftLevel)
+ , nExtraValue(r.nExtraValue)
+ {
+ }
+
+ sal_Int32 GetLen() const { return nLen; }
+ void SetLen(sal_Int32 nL) { nLen = nL; }
+
+ void setWidth(tools::Long nWidth) { aOutSz.setWidth(nWidth); }
+
+ void setHeight(tools::Long nHeight) { aOutSz.setHeight(nHeight); }
+
+ void adjustSize(tools::Long nDeltaX, tools::Long nDeltaY)
+ {
+ if (nDeltaX != 0)
+ aOutSz.AdjustWidth(nDeltaX);
+ if (nDeltaY != 0)
+ aOutSz.AdjustHeight(nDeltaY);
+ }
+
+ void SetSize(const Size& rSize) { aOutSz = rSize; }
+
+ const Size& GetSize() const { return aOutSz; }
+
+ void SetKind(PortionKind n) { nKind = n; }
+ PortionKind GetKind() const { return nKind; }
+
+ void SetRightToLeftLevel(sal_uInt8 n) { nRightToLeftLevel = n; }
+ sal_uInt8 GetRightToLeftLevel() const { return nRightToLeftLevel; }
+ bool IsRightToLeft() const { return (nRightToLeftLevel & 1); }
+
+ sal_Unicode GetExtraValue() const { return nExtraValue; }
+ void SetExtraValue(sal_Unicode n) { nExtraValue = n; }
+
+ ExtraPortionInfo* GetExtraInfos() const { return xExtraInfos.get(); }
+ void SetExtraInfos(ExtraPortionInfo* p) { xExtraInfos.reset(p); }
+};
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */
diff --git a/editeng/inc/editdoc.hxx b/editeng/inc/editdoc.hxx
index 565012ad97cc..240bcbfc9e37 100644
--- a/editeng/inc/editdoc.hxx
+++ b/editeng/inc/editdoc.hxx
@@ -30,6 +30,7 @@
#include <svl/languageoptions.hxx>
#include <tools/lineend.hxx>
#include <o3tl/typed_flags_set.hxx>
+#include "TextPortion.hxx"
#include <cstddef>
#include <memory>
@@ -301,133 +302,10 @@ public:
bool operator !() const { return !pNode && !nIndex; }
};
-enum class PortionKind
-{
- TEXT = 0,
- TAB = 1,
- LINEBREAK = 2,
- FIELD = 3,
- HYPHENATOR = 4
-};
-
enum class DeleteMode {
Simple, RestOfWord, RestOfContent
};
-enum class AsianCompressionFlags {
- Normal = 0x00,
- Kana = 0x01,
- PunctuationLeft = 0x02,
- PunctuationRight = 0x04,
-};
-namespace o3tl {
- template<> struct typed_flags<AsianCompressionFlags> : is_typed_flags<AsianCompressionFlags, 0x07> {};
-}
-
-
-
-// struct ExtraPortionInfos
-
-struct ExtraPortionInfo
-{
- tools::Long nOrgWidth;
- tools::Long nWidthFullCompression;
-
- tools::Long nPortionOffsetX;
-
- sal_uInt16 nMaxCompression100thPercent;
-
- AsianCompressionFlags nAsianCompressionTypes;
- bool bFirstCharIsRightPunktuation;
- bool bCompressed;
-
- std::unique_ptr<sal_Int32[]> pOrgDXArray;
- std::vector< sal_Int32 > lineBreaksList;
-
-
- ExtraPortionInfo();
- ~ExtraPortionInfo();
-
- void SaveOrgDXArray( const sal_Int32* pDXArray, sal_Int32 nLen );
-};
-
-
-
-class TextPortion
-{
-private:
- std::unique_ptr<ExtraPortionInfo> xExtraInfos;
- sal_Int32 nLen;
- Size aOutSz;
- PortionKind nKind;
- sal_uInt8 nRightToLeftLevel;
- sal_Unicode nExtraValue;
-
-
-public:
- TextPortion( sal_Int32 nL )
- : nLen( nL )
- , aOutSz( -1, -1 )
- , nKind( PortionKind::TEXT )
- , nRightToLeftLevel( 0 )
- , nExtraValue( 0 )
- {
- }
-
- TextPortion( const TextPortion& r )
- : nLen( r.nLen )
- , aOutSz( r.aOutSz )
- , nKind( r.nKind )
- , nRightToLeftLevel( r.nRightToLeftLevel )
- , nExtraValue( r.nExtraValue )
- {
- }
-
-
- sal_Int32 GetLen() const { return nLen; }
- void SetLen( sal_Int32 nL ) { nLen = nL; }
-
- void setWidth(tools::Long nWidth)
- {
- aOutSz.setWidth(nWidth);
- }
-
- void setHeight(tools::Long nHeight)
- {
- aOutSz.setHeight(nHeight);
- }
-
- void adjustSize(tools::Long nDeltaX, tools::Long nDeltaY)
- {
- if (nDeltaX != 0)
- aOutSz.AdjustWidth(nDeltaX);
- if (nDeltaY != 0)
- aOutSz.AdjustHeight(nDeltaY);
- }
-
- void SetSize(const Size& rSize)
- {
- aOutSz = rSize;
- }
-
- const Size& GetSize() const { return aOutSz; }
-
- void SetKind(PortionKind n) { nKind = n; }
- PortionKind GetKind() const { return nKind; }
-
- void SetRightToLeftLevel( sal_uInt8 n ) { nRightToLeftLevel = n; }
- sal_uInt8 GetRightToLeftLevel() const { return nRightToLeftLevel; }
- bool IsRightToLeft() const { return (nRightToLeftLevel&1); }
-
- sal_Unicode GetExtraValue() const { return nExtraValue; }
- void SetExtraValue( sal_Unicode n ) { nExtraValue = n; }
-
- ExtraPortionInfo* GetExtraInfos() const { return xExtraInfos.get(); }
- void SetExtraInfos( ExtraPortionInfo* p ) { xExtraInfos.reset(p); }
-};
-
-
-
class TextPortionList
{
typedef std::vector<std::unique_ptr<TextPortion> > PortionsType;
diff --git a/editeng/source/editeng/editdoc.cxx b/editeng/source/editeng/editdoc.cxx
index d892bd1c3a25..0856a594f7ae 100644
--- a/editeng/source/editeng/editdoc.cxx
+++ b/editeng/source/editeng/editdoc.cxx
@@ -480,32 +480,6 @@ sal_Int32 TextPortionList::GetStartPos(sal_Int32 nPortion)
return nPos;
}
-ExtraPortionInfo::ExtraPortionInfo()
-: nOrgWidth(0)
-, nWidthFullCompression(0)
-, nPortionOffsetX(0)
-, nMaxCompression100thPercent(0)
-, nAsianCompressionTypes(AsianCompressionFlags::Normal)
-, bFirstCharIsRightPunktuation(false)
-, bCompressed(false)
-{
-}
-
-ExtraPortionInfo::~ExtraPortionInfo()
-{
-}
-
-void ExtraPortionInfo::SaveOrgDXArray( const sal_Int32* pDXArray, sal_Int32 nLen )
-{
- if (pDXArray)
- {
- pOrgDXArray.reset(new sal_Int32[nLen]);
- memcpy( pOrgDXArray.get(), pDXArray, nLen * sizeof(sal_Int32) );
- }
- else
- pOrgDXArray.reset();
-}
-
ParaPortion::ParaPortion( ContentNode* pN ) :
pNode(pN),
nHeight(0),
diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx
index 01b2d52b3fa7..84332897736b 100644
--- a/editeng/source/editeng/impedit3.cxx
+++ b/editeng/source/editeng/impedit3.cxx
@@ -46,6 +46,7 @@
#include <editeng/charscaleitem.hxx>
#include <editeng/numitem.hxx>
#include <outleeng.hxx>
+#include <TextPortion.hxx>
#include <svtools/colorcfg.hxx>
#include <svl/ctloptions.hxx>