diff options
author | Tomaž Vajngerl <tomaz.vajngerl@collabora.com> | 2014-03-07 16:40:33 +0100 |
---|---|---|
committer | Tomaž Vajngerl <tomaz.vajngerl@collabora.com> | 2014-03-07 16:48:23 +0100 |
commit | 5797d7633419bb1775056d513e89d1fc0ce461e0 (patch) | |
tree | dbb5f47b493fae870a236c10a132e4e3f7eecbc6 /oox | |
parent | 25d154bbf94157f0bdf71a71964409857634c570 (diff) |
ooxml: make GrabBagStack ready for reuse and move it to oox
Change-Id: Ia7d52a003138a275860d3462382e636747343488
Diffstat (limited to 'oox')
-rw-r--r-- | oox/Library_oox.mk | 1 | ||||
-rw-r--r-- | oox/source/helper/grabbagstack.cxx | 93 |
2 files changed, 94 insertions, 0 deletions
diff --git a/oox/Library_oox.mk b/oox/Library_oox.mk index d17626750b49..cdda38a17929 100644 --- a/oox/Library_oox.mk +++ b/oox/Library_oox.mk @@ -217,6 +217,7 @@ $(eval $(call gb_Library_add_exception_objects,oox,\ oox/source/helper/binarystreambase \ oox/source/helper/containerhelper \ oox/source/helper/graphichelper \ + oox/source/helper/grabbagstack \ oox/source/helper/modelobjecthelper \ oox/source/helper/progressbar \ oox/source/helper/propertymap \ diff --git a/oox/source/helper/grabbagstack.cxx b/oox/source/helper/grabbagstack.cxx new file mode 100644 index 000000000000..ee7ec7079ec0 --- /dev/null +++ b/oox/source/helper/grabbagstack.cxx @@ -0,0 +1,93 @@ +/* -*- 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 "oox/helper/grabbagstack.hxx" +#include <com/sun/star/uno/Sequence.hxx> + +namespace oox +{ + +using namespace css::beans; +using namespace css::uno; + +GrabBagStack::GrabBagStack(OUString aName) +{ + mCurrentElement.maName = aName; +} + +GrabBagStack::~GrabBagStack() +{} + +OUString GrabBagStack::getCurrentName() +{ + return mCurrentElement.maName; +} + +PropertyValue GrabBagStack::getRootProperty() +{ + while(!mStack.empty()) + pop(); + + PropertyValue aProperty; + aProperty.Name = mCurrentElement.maName; + + Sequence<PropertyValue> aSequence(mCurrentElement.maPropertyList.size()); + PropertyValue* pSequence = aSequence.getArray(); + std::vector<PropertyValue>::iterator i; + for (i = mCurrentElement.maPropertyList.begin(); i != mCurrentElement.maPropertyList.end(); ++i) + *pSequence++ = *i; + + aProperty.Value = makeAny(aSequence); + + return aProperty; +} + +void GrabBagStack::appendElement(OUString aName, Any aAny) +{ + PropertyValue aValue; + aValue.Name = aName; + aValue.Value = aAny; + mCurrentElement.maPropertyList.push_back(aValue); +} + +void GrabBagStack::push(OUString aKey) +{ + mStack.push(mCurrentElement); + mCurrentElement.maName = aKey; + mCurrentElement.maPropertyList.clear(); +} + +void GrabBagStack::pop() +{ + OUString aName = mCurrentElement.maName; + Sequence<PropertyValue> aSequence(mCurrentElement.maPropertyList.size()); + PropertyValue* pSequence = aSequence.getArray(); + std::vector<PropertyValue>::iterator i; + for (i = mCurrentElement.maPropertyList.begin(); i != mCurrentElement.maPropertyList.end(); ++i) + *pSequence++ = *i; + + mCurrentElement = mStack.top(); + mStack.pop(); + appendElement(aName, makeAny(aSequence)); +} + +void GrabBagStack::addInt32(OUString aElementName, sal_Int32 aIntValue) +{ + appendElement(aElementName, makeAny(aIntValue)); +} + +void GrabBagStack::addString(OUString aElementName, OUString aStringValue) +{ + appendElement(aElementName, makeAny(aStringValue)); +} + +} // namespace oox + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |