/* -*- 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/. */ #include #include using namespace com::sun::star; namespace writerfilter { namespace rtftok { RTFValue::RTFValue(int nValue, const OUString& sValue, RTFSprms rAttributes, RTFSprms rSprms, uno::Reference const& xShape, uno::Reference const& xStream, uno::Reference const& xObject, bool bForceString, const RTFShape& aShape) : m_nValue(nValue), m_sValue(sValue), m_pAttributes(std::make_shared(rAttributes)), m_pSprms(std::make_shared(rSprms)), m_xShape(xShape), m_xStream(xStream), m_xObject(xObject), m_bForceString(bForceString), m_pShape(std::make_shared(aShape)) { } RTFValue::RTFValue() : m_nValue(0), m_sValue(), m_pAttributes(std::make_shared()), m_pSprms(std::make_shared()), m_xShape(), m_xStream(), m_xObject(), m_bForceString(false), m_pShape(std::make_shared()) { } RTFValue::RTFValue(int nValue) : m_nValue(nValue), m_sValue(), m_pAttributes(std::make_shared()), m_pSprms(std::make_shared()), m_xShape(), m_xStream(), m_xObject(), m_bForceString(false) { m_pShape.reset(new RTFShape()); } RTFValue::RTFValue(const OUString& sValue, bool bForce) : m_nValue(), m_sValue(sValue), m_pAttributes(std::make_shared()), m_pSprms(std::make_shared()), m_xShape(), m_xStream(), m_xObject(), m_bForceString(bForce), m_pShape(std::make_shared()) { } RTFValue::RTFValue(RTFSprms rAttributes) : m_nValue(), m_sValue(), m_pAttributes(std::make_shared(rAttributes)), m_pSprms(std::make_shared()), m_xShape(), m_xStream(), m_xObject(), m_bForceString(false), m_pShape(std::make_shared()) { } RTFValue::RTFValue(RTFSprms rAttributes, RTFSprms rSprms) : m_nValue(), m_sValue(), m_pAttributes(std::make_shared(rAttributes)), m_pSprms(std::make_shared(rSprms)), m_xShape(), m_xStream(), m_xObject(), m_bForceString(false), m_pShape(std::make_shared()) { } RTFValue::RTFValue(uno::Reference const& xShape) : m_nValue(), m_sValue(), m_pAttributes(std::make_shared()), m_pSprms(std::make_shared()), m_xShape(xShape), m_xStream(), m_xObject(), m_bForceString(false), m_pShape(std::make_shared()) { } RTFValue::RTFValue(uno::Reference const& xStream) : m_nValue(), m_sValue(), m_pAttributes(std::make_shared()), m_pSprms(std::make_shared()), m_xShape(), m_xStream(xStream), m_xObject(), m_bForceString(false), m_pShape(std::make_shared()) { } RTFValue::RTFValue(uno::Reference const& xObject) : m_nValue(), m_sValue(), m_pAttributes(std::make_shared()), m_pSprms(std::make_shared()), m_xShape(), m_xStream(), m_xObject(xObject), m_bForceString(false), m_pShape(std::make_shared()) { } RTFValue::RTFValue(const RTFShape& aShape) : m_nValue(), m_sValue(), m_pAttributes(std::make_shared()), m_pSprms(std::make_shared()), m_xShape(), m_xStream(), m_xObject(), m_bForceString(false), m_pShape(std::make_shared(aShape)) { } RTFValue::~RTFValue() = default; int RTFValue::getInt() const { return m_nValue; } OUString RTFValue::getString() const { if (!m_sValue.isEmpty() || m_bForceString) return m_sValue; else return OUString::number(m_nValue); } void RTFValue::setString(const OUString& sValue) { m_sValue = sValue; } uno::Any RTFValue::getAny() const { uno::Any ret; if (!m_sValue.isEmpty() || m_bForceString) ret <<= m_sValue; else if (m_xShape.is()) ret <<= m_xShape; else if (m_xStream.is()) ret <<= m_xStream; else if (m_xObject.is()) ret <<= m_xObject; else ret <<= static_cast(m_nValue); return ret; } RTFShape& RTFValue::getShape() const { return *m_pShape; } writerfilter::Reference::Pointer_t RTFValue::getProperties() { return std::make_shared(*m_pAttributes, *m_pSprms); } writerfilter::Reference::Pointer_t RTFValue::getBinary() { return writerfilter::Reference::Pointer_t(); } #ifdef DEBUG_WRITERFILTER std::string RTFValue::toString() const { if (!m_sValue.isEmpty() || m_bForceString) return OUStringToOString(m_sValue, RTL_TEXTENCODING_UTF8).getStr(); else return OString::number(m_nValue).getStr(); } #endif RTFValue* RTFValue::Clone() { return new RTFValue(m_nValue, m_sValue, *m_pAttributes, *m_pSprms, m_xShape, m_xStream, m_xObject, m_bForceString, *m_pShape); } RTFValue* RTFValue::CloneWithSprms(RTFSprms const& rAttributes, RTFSprms const& rSprms) { return new RTFValue(m_nValue, m_sValue, rAttributes, rSprms, m_xShape, m_xStream, m_xObject, m_bForceString, *m_pShape); } bool RTFValue::equals(RTFValue& rOther) { if (m_nValue != rOther.m_nValue) return false; if (m_sValue != rOther.m_sValue) return false; if (m_pAttributes->size() != rOther.m_pAttributes->size()) return false; else if (!m_pAttributes->equals(rOther)) return false; if (m_pSprms->size() != rOther.m_pSprms->size()) return false; else if (!m_pSprms->equals(rOther)) return false; return true; } RTFSprms& RTFValue::getAttributes() { return *m_pAttributes; } RTFSprms& RTFValue::getSprms() { return *m_pSprms; } } // namespace rtftok } // namespace writerfilter /* vim:set shiftwidth=4 softtabstop=4 expandtab: */