From 5797d7633419bb1775056d513e89d1fc0ce461e0 Mon Sep 17 00:00:00 2001 From: Tomaž Vajngerl Date: Fri, 7 Mar 2014 16:40:33 +0100 Subject: ooxml: make GrabBagStack ready for reuse and move it to oox Change-Id: Ia7d52a003138a275860d3462382e636747343488 --- oox/source/helper/grabbagstack.cxx | 93 ++++++++++++++++++++++++++++++++++++++ 1 file changed, 93 insertions(+) create mode 100644 oox/source/helper/grabbagstack.cxx (limited to 'oox/source/helper/grabbagstack.cxx') 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 + +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 aSequence(mCurrentElement.maPropertyList.size()); + PropertyValue* pSequence = aSequence.getArray(); + std::vector::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 aSequence(mCurrentElement.maPropertyList.size()); + PropertyValue* pSequence = aSequence.getArray(); + std::vector::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: */ -- cgit