diff options
author | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2012-07-13 21:16:54 +0200 |
---|---|---|
committer | Markus Mohrhard <markus.mohrhard@googlemail.com> | 2012-07-13 21:16:54 +0200 |
commit | f1139806e56c468181d250bcfbb878d3a97eb94a (patch) | |
tree | c3963835b6c4f7897ed9aca9ae33cc96454e5feb /chart2/source | |
parent | getParagraph helper (diff) | |
parent | test: move XMLDiff implementation details to cxx file (diff) | |
download | core-f1139806e56c468181d250bcfbb878d3a97eb94a.tar.gz core-f1139806e56c468181d250bcfbb878d3a97eb94a.zip |
Merge branch 'feature/gsoc_test_improvements2'
Diffstat (limited to 'chart2/source')
-rw-r--r-- | chart2/source/view/main/ChartView.cxx | 117 |
1 files changed, 7 insertions, 110 deletions
diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx index 8714040fed9d..8dce0da90f12 100644 --- a/chart2/source/view/main/ChartView.cxx +++ b/chart2/source/view/main/ChartView.cxx @@ -73,6 +73,8 @@ #include <osl/mutex.hxx> #include <svx/unofill.hxx> +#include <drawinglayer/XShapeDumper.hxx> + #include <time.h> #include <com/sun/star/chart/ChartAxisPosition.hpp> @@ -3023,102 +3025,6 @@ uno::Sequence< ::rtl::OUString > ChartView::getAvailableServiceNames() throw (un return aServiceNames; } -namespace { - -#define DEBUG_DUMPER 0 - -int writeCallback(void* pContext, const char* sBuffer, int nLen) -{ - rtl::OStringBuffer* pBuffer = static_cast<rtl::OStringBuffer*>(pContext); - pBuffer->append(sBuffer); - return nLen; -} - -int closeCallback(void* ) -{ - return 0; -} - -void dumpPositionAsAttribute(const awt::Point& rPoint, xmlTextWriterPtr xmlWriter) -{ - xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("positionX"), "%" SAL_PRIdINT32, rPoint.X); - xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("positionY"), "%" SAL_PRIdINT32, rPoint.Y); -} - -void dumpSizeAsAttribute(const awt::Size& rSize, xmlTextWriterPtr xmlWriter) -{ - xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("sizeX"), "%" SAL_PRIdINT32, rSize.Width); - xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("sizeY"), "%" SAL_PRIdINT32, rSize.Height); -} - -void dumpShapeDescriptorAsAttribute( uno::Reference< drawing::XShapeDescriptor > xDescr, xmlTextWriterPtr xmlWriter ) -{ - xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST("type"), "%s", rtl::OUStringToOString(xDescr->getShapeType(), RTL_TEXTENCODING_UTF8).getStr()); -} - -void dumpXShapes( uno::Reference< drawing::XShapes > xShapes, xmlTextWriterPtr xmlWriter ); - -void dumpXShape( uno::Reference< drawing::XShape > xShape, xmlTextWriterPtr xmlWriter ) -{ - xmlTextWriterStartElement( xmlWriter, BAD_CAST( "XShape" ) ); - - dumpPositionAsAttribute(xShape->getPosition(), xmlWriter); - dumpSizeAsAttribute(xShape->getSize(), xmlWriter); - uno::Reference< drawing::XShapeDescriptor > xDescr(xShape, uno::UNO_QUERY_THROW); - dumpShapeDescriptorAsAttribute(xDescr, xmlWriter); - - uno::Reference< lang::XServiceInfo > xServiceInfo( xShape, uno::UNO_QUERY_THROW ); - uno::Sequence< rtl::OUString > aServiceNames = xServiceInfo->getSupportedServiceNames(); - - uno::Reference< beans::XPropertySet > xPropSet(xShape, uno::UNO_QUERY_THROW); - uno::Any aAny = xPropSet->getPropertyValue("Name"); - rtl::OUString aName; - if (aAny >>= aName) - { - if (!aName.isEmpty()) - xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("name"), "%s", rtl::OUStringToOString(aName, RTL_TEXTENCODING_UTF8).getStr()); - } - if (xServiceInfo->supportsService("com.sun.star.drawing.Text")) - { - uno::Reference< text::XText > xText(xShape, uno::UNO_QUERY_THROW); - rtl::OUString aText = xText->getString(); - if(!aText.isEmpty()) - xmlTextWriterWriteFormatAttribute( xmlWriter, BAD_CAST("text"), "%s", rtl::OUStringToOString(aText, RTL_TEXTENCODING_UTF8).getStr()); - } - else if(xServiceInfo->supportsService("com.sun.star.drawing.GroupShape")) - { - uno::Reference< drawing::XShapes > xShapes(xShape, uno::UNO_QUERY_THROW); - dumpXShapes(xShapes, xmlWriter); - } -#if DEBUG_DUMPER - sal_Int32 nServices = aServiceNames.getLength(); - for (sal_Int32 i = 0; i < nServices; ++i) - { - xmlTextWriterStartElement(xmlWriter, BAD_CAST( "ServiceName" )); - xmlTextWriterWriteFormatAttribute(xmlWriter, BAD_CAST( "name" ), "%s", rtl::OUStringToOString(aServiceNames[i], RTL_TEXTENCODING_UTF8).getStr()); - xmlTextWriterEndElement( xmlWriter ); - } -#endif - - xmlTextWriterEndElement( xmlWriter ); -} - -void dumpXShapes( uno::Reference< drawing::XShapes > xShapes, xmlTextWriterPtr xmlWriter ) -{ - xmlTextWriterStartElement( xmlWriter, BAD_CAST( "XShapes" ) ); - uno::Reference< container::XIndexAccess > xIA( xShapes, uno::UNO_QUERY_THROW); - sal_Int32 nLength = xIA->getCount(); - for (sal_Int32 i = 0; i < nLength; ++i) - { - uno::Reference< drawing::XShape > xShape( xIA->getByIndex( i ), uno::UNO_QUERY_THROW ); - dumpXShape( xShape, xmlWriter ); - } - - xmlTextWriterEndElement( xmlWriter ); -} - -} - rtl::OUString ChartView::dump() throw (uno::RuntimeException) { impl_updateView(); @@ -3127,21 +3033,12 @@ rtl::OUString ChartView::dump() throw (uno::RuntimeException) if (!xPageShapes.is()) return rtl::OUString(); + else + { + XShapeDumper dumper; + return dumper.dump(xPageShapes); + } - rtl::OStringBuffer aString; - xmlOutputBufferPtr xmlOutBuffer = xmlOutputBufferCreateIO( writeCallback, closeCallback, &aString, NULL ); - xmlTextWriterPtr xmlWriter = xmlNewTextWriter( xmlOutBuffer ); - xmlTextWriterSetIndent( xmlWriter, 1 ); - - xmlTextWriterStartDocument( xmlWriter, NULL, NULL, NULL ); - - dumpXShapes( xPageShapes, xmlWriter ); - - xmlTextWriterEndDocument( xmlWriter ); - xmlFreeTextWriter( xmlWriter ); - - - return OStringToOUString(aString.makeStringAndClear(), RTL_TEXTENCODING_UTF8); } //............................................................................. |