summaryrefslogtreecommitdiffstats
path: root/writerfilter/source/ooxml/OOXMLPropertySet.hxx
diff options
context:
space:
mode:
Diffstat (limited to 'writerfilter/source/ooxml/OOXMLPropertySet.hxx')
-rw-r--r--writerfilter/source/ooxml/OOXMLPropertySet.hxx413
1 files changed, 413 insertions, 0 deletions
diff --git a/writerfilter/source/ooxml/OOXMLPropertySet.hxx b/writerfilter/source/ooxml/OOXMLPropertySet.hxx
new file mode 100644
index 000000000..b30fbaf61
--- /dev/null
+++ b/writerfilter/source/ooxml/OOXMLPropertySet.hxx
@@ -0,0 +1,413 @@
+/* -*- 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 <vector>
+#include "OOXMLBinaryObjectReference.hxx"
+#include <com/sun/star/embed/XEmbeddedObject.hpp>
+#include <dmapper/resourcemodel.hxx>
+
+namespace writerfilter::ooxml
+{
+class OOXMLValue : public Value
+{
+public:
+ typedef tools::SvRef<OOXMLValue> Pointer_t;
+ OOXMLValue();
+ virtual ~OOXMLValue() override;
+
+ OOXMLValue(OOXMLValue const&) = default;
+ OOXMLValue(OOXMLValue&&) = default;
+ OOXMLValue& operator=(OOXMLValue const&) = default;
+ OOXMLValue& operator=(OOXMLValue&&) = default;
+
+ virtual int getInt() const override;
+ ;
+ virtual OUString getString() const override;
+ virtual css::uno::Any getAny() const override;
+ virtual writerfilter::Reference<Properties>::Pointer_t getProperties() override;
+ virtual writerfilter::Reference<BinaryObj>::Pointer_t getBinary() override;
+#ifdef DBG_UTIL
+ virtual std::string toString() const override;
+#endif
+ virtual OOXMLValue* clone() const;
+};
+
+class OOXMLProperty : public Sprm
+{
+public:
+ typedef tools::SvRef<OOXMLProperty> Pointer_t;
+ enum Type_t
+ {
+ SPRM,
+ ATTRIBUTE
+ };
+
+private:
+ Id mId;
+ mutable OOXMLValue::Pointer_t mpValue;
+ Type_t meType;
+
+public:
+ OOXMLProperty(Id id, const OOXMLValue::Pointer_t& pValue, Type_t eType);
+ OOXMLProperty(const OOXMLProperty& rSprm) = delete;
+ virtual ~OOXMLProperty() override;
+
+ sal_uInt32 getId() const override;
+ Value::Pointer_t getValue() override;
+ writerfilter::Reference<Properties>::Pointer_t getProps() override;
+#ifdef DBG_UTIL
+ std::string getName() const override;
+ std::string toString() const override;
+#endif
+ void resolve(Properties& rProperties);
+};
+
+class OOXMLBinaryValue : public OOXMLValue
+{
+ mutable OOXMLBinaryObjectReference::Pointer_t mpBinaryObj;
+
+public:
+ explicit OOXMLBinaryValue(OOXMLBinaryObjectReference::Pointer_t const& pBinaryObj);
+ virtual ~OOXMLBinaryValue() override;
+
+ virtual writerfilter::Reference<BinaryObj>::Pointer_t getBinary() override;
+#ifdef DBG_UTIL
+ virtual std::string toString() const override;
+#endif
+ virtual OOXMLValue* clone() const override;
+};
+
+class OOXMLBooleanValue : public OOXMLValue
+{
+ bool mbValue;
+ explicit OOXMLBooleanValue(bool bValue);
+
+public:
+ static OOXMLValue::Pointer_t const& Create(bool bValue);
+ static OOXMLValue::Pointer_t const& Create(const char* pValue);
+
+ virtual ~OOXMLBooleanValue() override;
+
+ OOXMLBooleanValue(OOXMLBooleanValue const&) = default;
+ OOXMLBooleanValue(OOXMLBooleanValue&&) = default;
+ OOXMLBooleanValue& operator=(OOXMLBooleanValue const&) = delete; // due to const mbValue
+ OOXMLBooleanValue& operator=(OOXMLBooleanValue&&) = delete; // due to const mbValue
+
+ virtual int getInt() const override;
+ virtual css::uno::Any getAny() const override;
+#ifdef DBG_UTIL
+ virtual std::string toString() const override;
+#endif
+ virtual OOXMLValue* clone() const override;
+};
+
+class OOXMLStringValue : public OOXMLValue
+{
+ OUString mStr;
+
+public:
+ explicit OOXMLStringValue(const OUString& rStr);
+ virtual ~OOXMLStringValue() override;
+
+ OOXMLStringValue(OOXMLStringValue const&) = default;
+ OOXMLStringValue(OOXMLStringValue&&) = default;
+ OOXMLStringValue& operator=(OOXMLStringValue const&) = delete; // due to const mStr
+ OOXMLStringValue& operator=(OOXMLStringValue&&) = delete; // due to const mStr
+
+ virtual css::uno::Any getAny() const override;
+ virtual OUString getString() const override;
+#ifdef DBG_UTIL
+ virtual std::string toString() const override;
+#endif
+ virtual OOXMLValue* clone() const override;
+};
+
+class OOXMLInputStreamValue : public OOXMLValue
+{
+ css::uno::Reference<css::io::XInputStream> mxInputStream;
+
+public:
+ explicit OOXMLInputStreamValue(css::uno::Reference<css::io::XInputStream> const& xInputStream);
+ virtual ~OOXMLInputStreamValue() override;
+
+ virtual css::uno::Any getAny() const override;
+#ifdef DBG_UTIL
+ virtual std::string toString() const override;
+#endif
+ virtual OOXMLValue* clone() const override;
+};
+
+class OOXMLPropertySet : public writerfilter::Reference<Properties>
+{
+public:
+ typedef std::vector<OOXMLProperty::Pointer_t> OOXMLProperties_t;
+ typedef tools::SvRef<OOXMLPropertySet> Pointer_t;
+
+private:
+ OOXMLProperties_t mProperties;
+ void add(const OOXMLProperty::Pointer_t& pProperty);
+
+public:
+ OOXMLPropertySet();
+ virtual ~OOXMLPropertySet() override;
+
+ OOXMLPropertySet(OOXMLPropertySet const&) = default;
+ OOXMLPropertySet(OOXMLPropertySet&&) = default;
+ OOXMLPropertySet& operator=(OOXMLPropertySet const&) = default;
+ OOXMLPropertySet& operator=(OOXMLPropertySet&&) = default;
+
+ void resolve(Properties& rHandler) override;
+ void add(Id id, const OOXMLValue::Pointer_t& pValue, OOXMLProperty::Type_t eType);
+ void add(const OOXMLPropertySet::Pointer_t& pPropertySet);
+ OOXMLPropertySet* clone() const;
+
+ OOXMLProperties_t::iterator begin();
+ OOXMLProperties_t::iterator end();
+ OOXMLProperties_t::const_iterator begin() const;
+ OOXMLProperties_t::const_iterator end() const;
+
+#ifdef DBG_UTIL
+ std::string toString();
+#endif
+};
+
+class OOXMLValue;
+
+class OOXMLTable : public writerfilter::Reference<Table>
+{
+public:
+ typedef tools::SvRef<OOXMLValue> ValuePointer_t;
+ OOXMLTable();
+ virtual ~OOXMLTable() override;
+
+ OOXMLTable(OOXMLTable const&) = default;
+ OOXMLTable(OOXMLTable&&) = default;
+ OOXMLTable& operator=(OOXMLTable const&) = default;
+ OOXMLTable& operator=(OOXMLTable&&) = default;
+
+ void resolve(Table& rTable) override;
+ void add(const ValuePointer_t& pPropertySet);
+ OOXMLTable* clone() const;
+
+private:
+ typedef std::vector<ValuePointer_t> PropertySets_t;
+ PropertySets_t mPropertySets;
+};
+
+class OOXMLPropertySetValue : public OOXMLValue
+{
+ OOXMLPropertySet::Pointer_t mpPropertySet;
+
+public:
+ explicit OOXMLPropertySetValue(const OOXMLPropertySet::Pointer_t& pPropertySet);
+ virtual ~OOXMLPropertySetValue() override;
+
+ OOXMLPropertySetValue(OOXMLPropertySetValue const&) = default;
+ OOXMLPropertySetValue(OOXMLPropertySetValue&&) = default;
+ OOXMLPropertySetValue& operator=(OOXMLPropertySetValue const&)
+ = delete; // due to const mpPropertySet
+ OOXMLPropertySetValue& operator=(OOXMLPropertySetValue&&)
+ = delete; // due to const mpPropertySet
+
+ virtual writerfilter::Reference<Properties>::Pointer_t getProperties() override;
+#ifdef DBG_UTIL
+ virtual std::string toString() const override;
+#endif
+ virtual OOXMLValue* clone() const override;
+};
+
+class OOXMLIntegerValue : public OOXMLValue
+{
+ sal_Int32 mnValue;
+ explicit OOXMLIntegerValue(sal_Int32 nValue);
+
+public:
+ static OOXMLValue::Pointer_t Create(sal_Int32 nValue);
+ virtual ~OOXMLIntegerValue() override;
+
+ OOXMLIntegerValue(OOXMLIntegerValue const&) = default;
+ OOXMLIntegerValue(OOXMLIntegerValue&&) = default;
+ OOXMLIntegerValue& operator=(OOXMLIntegerValue const&) = delete; // due to const mnValue
+ OOXMLIntegerValue& operator=(OOXMLIntegerValue&&) = delete; // due to const mnValue
+
+ virtual int getInt() const override;
+ virtual css::uno::Any getAny() const override;
+#ifdef DBG_UTIL
+ virtual std::string toString() const override;
+#endif
+ virtual OOXMLValue* clone() const override;
+};
+
+class OOXMLHexValue : public OOXMLValue
+{
+protected:
+ sal_uInt32 mnValue;
+
+public:
+ explicit OOXMLHexValue(sal_uInt32 nValue);
+ explicit OOXMLHexValue(const char* pValue);
+ virtual ~OOXMLHexValue() override;
+
+ OOXMLHexValue(OOXMLHexValue const&) = default;
+ OOXMLHexValue(OOXMLHexValue&&) = default;
+ OOXMLHexValue& operator=(OOXMLHexValue const&) = default;
+ OOXMLHexValue& operator=(OOXMLHexValue&&) = default;
+
+ virtual int getInt() const override;
+#ifdef DBG_UTIL
+ virtual std::string toString() const override;
+#endif
+ virtual OOXMLValue* clone() const override;
+};
+
+class OOXMLHexColorValue : public OOXMLHexValue
+{
+public:
+ explicit OOXMLHexColorValue(const char* pValue);
+};
+
+class OOXMLUniversalMeasureValue : public OOXMLValue
+{
+private:
+ int mnValue;
+
+public:
+ OOXMLUniversalMeasureValue(const char* pValue, sal_uInt32 npPt);
+ virtual ~OOXMLUniversalMeasureValue() override;
+
+ OOXMLUniversalMeasureValue(OOXMLUniversalMeasureValue const&) = default;
+ OOXMLUniversalMeasureValue(OOXMLUniversalMeasureValue&&) = default;
+ OOXMLUniversalMeasureValue& operator=(OOXMLUniversalMeasureValue const&) = default;
+ OOXMLUniversalMeasureValue& operator=(OOXMLUniversalMeasureValue&&) = default;
+
+ virtual int getInt() const override;
+#ifdef DBG_UTIL
+ virtual std::string toString() const override;
+#endif
+};
+
+/// npPt is quotient defining how much units are in 1 pt
+template <sal_uInt32 npPt> class OOXMLNthPtMeasureValue : public OOXMLUniversalMeasureValue
+{
+public:
+ explicit OOXMLNthPtMeasureValue(const char* pValue)
+ : OOXMLUniversalMeasureValue(pValue, npPt)
+ {
+ }
+ virtual OOXMLValue* clone() const override { return new OOXMLNthPtMeasureValue<npPt>(*this); }
+};
+
+/// Handles OOXML's ST_TwipsMeasure value.
+typedef OOXMLNthPtMeasureValue<20> OOXMLTwipsMeasureValue;
+
+/// Handles OOXML's ST_HpsMeasure value.
+typedef OOXMLNthPtMeasureValue<2> OOXMLHpsMeasureValue;
+
+class OOXMLMeasurementOrPercentValue : public OOXMLValue
+{
+ int mnValue;
+
+public:
+ explicit OOXMLMeasurementOrPercentValue(const char* pValue);
+
+ virtual int getInt() const override;
+ virtual OOXMLValue* clone() const override { return new OOXMLMeasurementOrPercentValue(*this); }
+#ifdef DBG_UTIL
+ virtual std::string toString() const override;
+#endif
+};
+
+class OOXMLShapeValue : public OOXMLValue
+{
+ css::uno::Reference<css::drawing::XShape> mrShape;
+
+public:
+ explicit OOXMLShapeValue(css::uno::Reference<css::drawing::XShape> const& rShape);
+ virtual ~OOXMLShapeValue() override;
+
+ virtual css::uno::Any getAny() const override;
+#ifdef DBG_UTIL
+ virtual std::string toString() const override;
+#endif
+ virtual OOXMLValue* clone() const override;
+};
+
+class OOXMLStarMathValue : public OOXMLValue
+{
+ css::uno::Reference<css::embed::XEmbeddedObject> component;
+
+public:
+ explicit OOXMLStarMathValue(css::uno::Reference<css::embed::XEmbeddedObject> const& component);
+ virtual ~OOXMLStarMathValue() override;
+
+ virtual css::uno::Any getAny() const override;
+#ifdef DBG_UTIL
+ virtual std::string toString() const override;
+#endif
+ virtual OOXMLValue* clone() const override;
+};
+
+class OOXMLPropertySetEntryToString : public Properties
+{
+ Id mnId;
+ OUString mStr;
+
+public:
+ explicit OOXMLPropertySetEntryToString(Id nId);
+ virtual ~OOXMLPropertySetEntryToString() override;
+
+ virtual void sprm(Sprm& rSprm) override;
+ virtual void attribute(Id nId, Value& rValue) override;
+
+ const OUString& getString() const { return mStr; }
+};
+
+class OOXMLPropertySetEntryToInteger : public Properties
+{
+ Id mnId;
+ int mnValue;
+
+public:
+ explicit OOXMLPropertySetEntryToInteger(Id nId);
+ virtual ~OOXMLPropertySetEntryToInteger() override;
+
+ virtual void sprm(Sprm& rSprm) override;
+ virtual void attribute(Id nId, Value& rValue) override;
+
+ int getValue() const { return mnValue; }
+};
+
+class OOXMLPropertySetEntryToBool : public Properties
+{
+ Id mnId;
+ bool mValue;
+
+public:
+ explicit OOXMLPropertySetEntryToBool(Id nId);
+ virtual ~OOXMLPropertySetEntryToBool() override;
+
+ virtual void sprm(Sprm& rSprm) override;
+ virtual void attribute(Id nId, Value& rValue) override;
+
+ bool getValue() const { return mValue; }
+};
+}
+
+/* vim:set shiftwidth=4 softtabstop=4 expandtab: */