summaryrefslogtreecommitdiffstats
path: root/sw/source/core/txtnode/txatbase.cxx
diff options
context:
space:
mode:
authorDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 05:54:39 +0000
committerDaniel Baumann <daniel.baumann@progress-linux.org>2024-04-15 05:54:39 +0000
commit267c6f2ac71f92999e969232431ba04678e7437e (patch)
tree358c9467650e1d0a1d7227a21dac2e3d08b622b2 /sw/source/core/txtnode/txatbase.cxx
parentInitial commit. (diff)
downloadlibreoffice-267c6f2ac71f92999e969232431ba04678e7437e.tar.xz
libreoffice-267c6f2ac71f92999e969232431ba04678e7437e.zip
Adding upstream version 4:24.2.0.upstream/4%24.2.0
Signed-off-by: Daniel Baumann <daniel.baumann@progress-linux.org>
Diffstat (limited to 'sw/source/core/txtnode/txatbase.cxx')
-rw-r--r--sw/source/core/txtnode/txatbase.cxx187
1 files changed, 187 insertions, 0 deletions
diff --git a/sw/source/core/txtnode/txatbase.cxx b/sw/source/core/txtnode/txatbase.cxx
new file mode 100644
index 0000000000..1d57f0e0dd
--- /dev/null
+++ b/sw/source/core/txtnode/txatbase.cxx
@@ -0,0 +1,187 @@
+/* -*- 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 .
+ */
+
+#include <optional>
+#include <libxml/xmlwriter.h>
+#include <svl/itempool.hxx>
+#include <txatbase.hxx>
+#include <fmtfld.hxx>
+
+SwTextAttr::SwTextAttr( SfxPoolItem& rAttr, sal_Int32 nStart )
+ : m_pAttr( &rAttr )
+ , m_nStart( nStart )
+ , m_bDontExpand( false )
+ , m_bLockExpandFlag( false )
+ , m_bDontMoveAttr( false )
+ , m_bCharFormatAttr( false )
+ , m_bOverlapAllowedAttr( false )
+ , m_bPriorityAttr( false )
+ , m_bDontExpandStart( false )
+ , m_bNesting( false )
+ , m_bHasDummyChar( false )
+ , m_bFormatIgnoreStart(false)
+ , m_bFormatIgnoreEnd(false)
+ , m_bHasContent( false )
+{
+}
+
+SwTextAttr::~SwTextAttr() COVERITY_NOEXCEPT_FALSE
+{
+}
+
+const sal_Int32* SwTextAttr::GetEnd() const
+{
+ return nullptr;
+}
+
+void SwTextAttr::SetEnd(sal_Int32 )
+{
+ assert(false);
+}
+
+void SwTextAttr::Destroy( SwTextAttr * pToDestroy, SfxItemPool& rPool )
+{
+ if (!pToDestroy) return;
+ SfxPoolItem * const pAttr = pToDestroy->m_pAttr;
+ delete pToDestroy;
+ rPool.DirectRemoveItemFromPool( *pAttr );
+}
+
+bool SwTextAttr::operator==( const SwTextAttr& rAttr ) const
+{
+ return GetAttr() == rAttr.GetAttr();
+}
+
+SwTextAttrEnd::SwTextAttrEnd( SfxPoolItem& rAttr,
+ sal_Int32 nStart, sal_Int32 nEnd ) :
+ SwTextAttr( rAttr, nStart ), m_nEnd( nEnd )
+{
+}
+
+const sal_Int32* SwTextAttrEnd::GetEnd() const
+{
+ return & m_nEnd;
+}
+
+void SwTextAttrEnd::SetEnd(sal_Int32 n)
+{
+ m_nEnd = n;
+ if (m_pHints)
+ m_pHints->EndPosChanged();
+}
+
+void SwTextAttr::dumpAsXml(xmlTextWriterPtr pWriter) const
+{
+ (void)xmlTextWriterStartElement(pWriter, BAD_CAST("SwTextAttr"));
+ (void)xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("ptr"), "%p", this);
+ (void)xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("symbol"), "%s",
+ BAD_CAST(typeid(*this).name()));
+
+ (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("start"), BAD_CAST(OString::number(m_nStart).getStr()));
+ (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("dont-expand"),
+ BAD_CAST(OString::boolean(m_bDontExpand).getStr()));
+ if (End())
+ (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("end"), BAD_CAST(OString::number(*End()).getStr()));
+ (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("whichId"), BAD_CAST(OString::number(Which()).getStr()));
+ (void)xmlTextWriterWriteFormatAttribute(pWriter, BAD_CAST("m_pAttr"), "%p", m_pAttr);
+ const char* pWhich = nullptr;
+ std::optional<OString> oValue;
+ switch (Which())
+ {
+ case RES_TXTATR_AUTOFMT:
+ pWhich = "autofmt";
+ break;
+ case RES_TXTATR_ANNOTATION:
+ pWhich = "annotation";
+ break;
+ case RES_TXTATR_FLYCNT:
+ pWhich = "fly content";
+ break;
+ case RES_TXTATR_INETFMT:
+ {
+ pWhich = "inet format";
+ const SwFormatINetFormat& rFormat = GetINetFormat();
+ oValue = OString("url: " + rFormat.GetValue().toUtf8());
+ break;
+ }
+ case RES_TXTATR_CJK_RUBY:
+ {
+ pWhich = "ruby";
+ const SwFormatRuby& rFormat = GetRuby();
+ oValue = OString("rubytext: " + rFormat.GetText().toUtf8());
+ break;
+ }
+ case RES_TXTATR_META:
+ {
+ pWhich = "meta";
+ break;
+ }
+ case RES_TXTATR_FIELD:
+ {
+ pWhich = "field";
+ break;
+ }
+ default:
+ break;
+ }
+ if (pWhich)
+ (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("which"), BAD_CAST(pWhich));
+ if (oValue)
+ (void)xmlTextWriterWriteAttribute(pWriter, BAD_CAST("value"), BAD_CAST(oValue->getStr()));
+ switch (Which())
+ {
+ case RES_TXTATR_AUTOFMT:
+ GetAutoFormat().dumpAsXml(pWriter);
+ break;
+ case RES_TXTATR_FIELD:
+ case RES_TXTATR_INPUTFIELD:
+ GetFormatField().dumpAsXml(pWriter);
+ break;
+ case RES_TXTATR_FTN:
+ GetFootnote().dumpAsXml(pWriter);
+ break;
+ case RES_TXTATR_LINEBREAK:
+ GetLineBreak().dumpAsXml(pWriter);
+ break;
+ case RES_TXTATR_META:
+ break;
+ case RES_TXTATR_CONTENTCONTROL:
+ GetContentControl().dumpAsXml(pWriter);
+ break;
+ case RES_TXTATR_FLYCNT:
+ GetFlyCnt().dumpAsXml(pWriter);
+ break;
+ case RES_TXTATR_CHARFMT:
+ GetCharFormat().dumpAsXml(pWriter);
+ break;
+ case RES_TXTATR_REFMARK:
+ GetRefMark().dumpAsXml(pWriter);
+ break;
+ case RES_TXTATR_INETFMT:
+ GetINetFormat().dumpAsXml(pWriter);
+ break;
+ default:
+ SAL_WARN("sw.core", "Unhandled TXTATR");
+ break;
+ }
+
+ (void)xmlTextWriterEndElement(pWriter);
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */