From 267c6f2ac71f92999e969232431ba04678e7437e Mon Sep 17 00:00:00 2001 From: Daniel Baumann Date: Mon, 15 Apr 2024 07:54:39 +0200 Subject: Adding upstream version 4:24.2.0. Signed-off-by: Daniel Baumann --- sw/source/core/txtnode/txatbase.cxx | 187 ++++++++++++++++++++++++++++++++++++ 1 file changed, 187 insertions(+) create mode 100644 sw/source/core/txtnode/txatbase.cxx (limited to 'sw/source/core/txtnode/txatbase.cxx') 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 +#include +#include +#include +#include + +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 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: */ -- cgit v1.2.3