/* -*- 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 "rtfreferenceproperties.hxx" #include "rtfdocumentimpl.hxx" using namespace com::sun::star; namespace writerfilter { namespace rtftok { RTFValue::RTFValue(int nValue, OUString sValue, RTFSprms rAttributes, RTFSprms rSprms, uno::Reference xShape, uno::Reference xStream, uno::Reference xObject, bool bForceString, const RTFShape& aShape, const RTFPicture& rPicture) : m_nValue(nValue) , m_sValue(std::move(sValue)) , m_pAttributes(std::make_shared(rAttributes)) , m_pSprms(std::make_shared(rSprms)) , m_xShape(std::move(xShape)) , m_xStream(std::move(xStream)) , m_xObject(std::move(xObject)) , m_bForceString(bForceString) , m_pShape(std::make_shared(aShape)) , m_pPicture(std::make_shared(rPicture)) { } RTFValue::RTFValue() : m_pAttributes(std::make_shared()) , m_pSprms(std::make_shared()) , m_pShape(std::make_shared()) , m_pPicture(std::make_shared()) { } RTFValue::RTFValue(int nValue) : m_nValue(nValue) , m_pAttributes(std::make_shared()) , m_pSprms(std::make_shared()) , m_pPicture(std::make_shared()) { m_pShape.reset(new RTFShape()); } RTFValue::RTFValue(OUString sValue, bool bForce) : m_sValue(std::move(sValue)) , m_pAttributes(std::make_shared()) , m_pSprms(std::make_shared()) , m_bForceString(bForce) , m_pShape(std::make_shared()) , m_pPicture(std::make_shared()) { } RTFValue::RTFValue(RTFSprms rAttributes) : m_pAttributes(std::make_shared(rAttributes)) , m_pSprms(std::make_shared()) , m_pShape(std::make_shared()) , m_pPicture(std::make_shared()) { } RTFValue::RTFValue(RTFSprms rAttributes, RTFSprms rSprms) : m_pAttributes(std::make_shared(rAttributes)) , m_pSprms(std::make_shared(rSprms)) , m_pShape(std::make_shared()) , m_pPicture(std::make_shared()) { } RTFValue::RTFValue(uno::Reference xShape) : m_pAttributes(std::make_shared()) , m_pSprms(std::make_shared()) , m_xShape(std::move(xShape)) , m_pShape(std::make_shared()) , m_pPicture(std::make_shared()) { } RTFValue::RTFValue(uno::Reference xStream) : m_pAttributes(std::make_shared()) , m_pSprms(std::make_shared()) , m_xStream(std::move(xStream)) , m_pShape(std::make_shared()) , m_pPicture(std::make_shared()) { } RTFValue::RTFValue(uno::Reference xObject) : m_pAttributes(std::make_shared()) , m_pSprms(std::make_shared()) , m_xObject(std::move(xObject)) , m_pShape(std::make_shared()) , m_pPicture(std::make_shared()) { } RTFValue::RTFValue(const RTFShape& aShape) : m_pAttributes(std::make_shared()) , m_pSprms(std::make_shared()) , m_pShape(std::make_shared(aShape)) , m_pPicture(std::make_shared()) { } RTFValue::RTFValue(const RTFPicture& rPicture) : m_pAttributes(std::make_shared()) , m_pSprms(std::make_shared()) , m_pShape(std::make_shared()) , m_pPicture(std::make_shared(rPicture)) { } RTFValue::~RTFValue() = default; int RTFValue::getInt() const { return m_nValue; } OUString RTFValue::getString() const { if (!m_sValue.isEmpty() || m_bForceString) return m_sValue; 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; } RTFPicture& RTFValue::getPicture() const { return *m_pPicture; } 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(); 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, *m_pPicture); } 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, *m_pPicture); } 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; if (!m_pAttributes->equals(rOther)) return false; if (m_pSprms->size() != rOther.m_pSprms->size()) return false; 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: */