summaryrefslogtreecommitdiff
path: root/chart2
diff options
context:
space:
mode:
authorMarkus Mohrhard <markus.mohrhard@googlemail.com>2012-04-27 23:28:16 +0200
committerMarkus Mohrhard <markus.mohrhard@googlemail.com>2012-04-27 23:28:16 +0200
commitbeccf477581b1f3e85100d43be81ea55d3b3f912 (patch)
treebd0a3675fae6bc771f42e94126e2029c7bbf8c78 /chart2
parent52348aa791c6006d27c94146907c788b6318e816 (diff)
move xshape dumper into test
XShapeDumper can now be used by other parts of the code too. Please keep in mind that changing the dumper affects other parts too and might require a regneration of reference files. Change-Id: I540420a8bdf8afd8d43c5ea0bb0d82d7e0ecc44b
Diffstat (limited to 'chart2')
-rw-r--r--chart2/Library_chartview.mk1
-rw-r--r--chart2/source/view/main/ChartView.cxx116
2 files changed, 4 insertions, 113 deletions
diff --git a/chart2/Library_chartview.mk b/chart2/Library_chartview.mk
index ab3952e1d7af..3977a779b41f 100644
--- a/chart2/Library_chartview.mk
+++ b/chart2/Library_chartview.mk
@@ -54,6 +54,7 @@ $(eval $(call gb_Library_use_libraries,chartview,\
svl \
svt \
svxcore \
+ test \
tl \
utl \
vcl \
diff --git a/chart2/source/view/main/ChartView.cxx b/chart2/source/view/main/ChartView.cxx
index 9020d7bf5266..3f44b851d136 100644
--- a/chart2/source/view/main/ChartView.cxx
+++ b/chart2/source/view/main/ChartView.cxx
@@ -113,9 +113,7 @@
#include <rtl/strbuf.hxx>
#include <rtl/oustringostreaminserter.hxx>
-//libxml2 for dumping
-#include <libxml/xmlwriter.h>
-
+#include <test/xshape_dumper.hxx>
//.............................................................................
namespace chart
@@ -3026,102 +3024,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();
@@ -3131,20 +3033,8 @@ rtl::OUString ChartView::dump() throw (uno::RuntimeException)
if (!xPageShapes.is())
return rtl::OUString();
- 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);
+ XShapeDumper aDumper(xPageShapes);
+ return aDumper.dump();
}
//.............................................................................