diff options
-rw-r--r-- | chart2/Library_chartview.mk | 1 | ||||
-rw-r--r-- | chart2/source/view/main/ChartView.cxx | 116 | ||||
-rw-r--r-- | sc/Module_sc.mk | 12 | ||||
-rw-r--r-- | test/Library_test.mk | 1 | ||||
-rw-r--r-- | test/Package_inc.mk | 1 | ||||
-rw-r--r-- | test/inc/test/xshape_dumper.hxx | 57 | ||||
-rw-r--r-- | test/source/xshape_dumper.cxx | 149 |
7 files changed, 212 insertions, 125 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(); } //............................................................................. diff --git a/sc/Module_sc.mk b/sc/Module_sc.mk index 18ab35875f60..c632de4b1af4 100644 --- a/sc/Module_sc.mk +++ b/sc/Module_sc.mk @@ -51,19 +51,7 @@ $(eval $(call gb_Module_add_slowcheck_targets,sc,\ )) $(eval $(call gb_Module_add_subsequentcheck_targets,sc,\ - JunitTest_sc_complex \ - JunitTest_sc_unoapi \ CppunitTest_sc_chart_regression_test \ - CppunitTest_sc_cellrangeobj \ - $(if $(filter-out $(OS),IOS), \ - CppunitTest_sc_databaserangeobj) \ - CppunitTest_sc_datapilottableobj \ - CppunitTest_sc_datapilotfieldobj \ - CppunitTest_sc_macros_test \ - CppunitTest_sc_namedrangeobj \ - CppunitTest_sc_namedrangesobj \ - CppunitTest_sc_tablesheetobj \ - CppunitTest_sc_tablesheetsobj \ )) # vim: set noet sw=4 ts=4: diff --git a/test/Library_test.mk b/test/Library_test.mk index 8ca0289364e5..c4a9dc992fa7 100644 --- a/test/Library_test.mk +++ b/test/Library_test.mk @@ -68,6 +68,7 @@ $(eval $(call gb_Library_use_external,test,cppunit)) $(eval $(call gb_Library_add_exception_objects,test,\ test/source/bootstrapfixture \ test/source/diff/diff \ + test/source/xshape_dumper \ )) # vim: set noet sw=4 ts=4: diff --git a/test/Package_inc.mk b/test/Package_inc.mk index aac4b3822577..8c2970e6847d 100644 --- a/test/Package_inc.mk +++ b/test/Package_inc.mk @@ -27,6 +27,7 @@ $(eval $(call gb_Package_Package,test_inc,$(SRCDIR)/test/inc)) $(eval $(call gb_Package_add_file,test_inc,inc/test/xmldiff.hxx,test/xmldiff.hxx)) +$(eval $(call gb_Package_add_file,test_inc,inc/test/xshape_dumper.hxx,test/xshape_dumper.hxx)) $(eval $(call gb_Package_add_file,test_inc,inc/test/bootstrapfixture.hxx,test/bootstrapfixture.hxx)) $(eval $(call gb_Package_add_file,test_inc,inc/test/testdllapi.hxx,test/testdllapi.hxx)) $(eval $(call gb_Package_add_file,test_inc,inc/test/unoapi_test.hxx,test/unoapi_test.hxx)) diff --git a/test/inc/test/xshape_dumper.hxx b/test/inc/test/xshape_dumper.hxx new file mode 100644 index 000000000000..d4f1ba6ee857 --- /dev/null +++ b/test/inc/test/xshape_dumper.hxx @@ -0,0 +1,57 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License or as specified alternatively below. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * Major Contributor(s): + * Copyright (C) 2012 Markus Mohrhard <markus.mohrhard@googlemail.com> (initial developer) + * + * All Rights Reserved. + * + * For minor contributions see the git repository. + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ + +#include <rtl/ustring.hxx> +#include <com/sun/star/uno/Reference.hxx> +#include <libxml/xmlwriter.h> +#include <com/sun/star/drawing/XShapes.hpp> +#include <com/sun/star/drawing/XShape.hpp> +#include <com/sun/star/awt/Point.hpp> +#include <com/sun/star/awt/Size.hpp> +#include <test/testdllapi.hxx> + +class OOO_DLLPUBLIC_TEST XShapeDumper +{ +public: + XShapeDumper(com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > xShapes ): + mxShapes(xShapes) {} + + rtl::OUString dump(); +private: + void dumpPositionAsAttribute(const com::sun::star::awt::Point& rPointr); + void dumpSizeAsAttribute(const com::sun::star::awt::Size& rSize); + void dumpShapeDescriptorAsAttribute( com::sun::star::uno::Reference< com::sun::star::drawing::XShapeDescriptor > xDescr ); + void dumpXShape( com::sun::star::uno::Reference< com::sun::star::drawing::XShape > xShape ); + void dumpXShapes( com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > xShapes ); + + com::sun::star::uno::Reference< com::sun::star::drawing::XShapes > mxShapes; + xmlTextWriterPtr mxmlWriter; + +}; + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ diff --git a/test/source/xshape_dumper.cxx b/test/source/xshape_dumper.cxx new file mode 100644 index 000000000000..806fff7f449f --- /dev/null +++ b/test/source/xshape_dumper.cxx @@ -0,0 +1,149 @@ +/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */ +/* + * Version: MPL 1.1 / GPLv3+ / LGPLv3+ + * + * The contents of this file are subject to the Mozilla Public License Version + * 1.1 (the "License"); you may not use this file except in compliance with + * the License or as specified alternatively below. You may obtain a copy of + * the License at http://www.mozilla.org/MPL/ + * + * Software distributed under the License is distributed on an "AS IS" basis, + * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License + * for the specific language governing rights and limitations under the + * License. + * + * Major Contributor(s): + * Copyright (C) 2012 Markus Mohrhard <markus.mohrhard@googlemail.com> (initial developer) + * + * All Rights Reserved. + * + * For minor contributions see the git repository. + * + * Alternatively, the contents of this file may be used under the terms of + * either the GNU General Public License Version 3 or later (the "GPLv3+"), or + * the GNU Lesser General Public License Version 3 or later (the "LGPLv3+"), + * in which case the provisions of the GPLv3+ or the LGPLv3+ are applicable + * instead of those above. + */ + +#include "test/xshape_dumper.hxx" +#include <rtl/strbuf.hxx> +#include <rtl/oustringostreaminserter.hxx> +#include <com/sun/star/lang/XServiceInfo.hpp> +#include <com/sun/star/beans/XPropertySet.hpp> +#include <com/sun/star/text/XText.hpp> + +using namespace com::sun::star; + +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 XShapeDumper::dumpPositionAsAttribute(const awt::Point& rPoint) +{ + xmlTextWriterWriteFormatAttribute(mxmlWriter, BAD_CAST("positionX"), "%" SAL_PRIdINT32, rPoint.X); + xmlTextWriterWriteFormatAttribute(mxmlWriter, BAD_CAST("positionY"), "%" SAL_PRIdINT32, rPoint.Y); +} + +void XShapeDumper::dumpSizeAsAttribute(const awt::Size& rSize) +{ + xmlTextWriterWriteFormatAttribute(mxmlWriter, BAD_CAST("sizeX"), "%" SAL_PRIdINT32, rSize.Width); + xmlTextWriterWriteFormatAttribute(mxmlWriter, BAD_CAST("sizeY"), "%" SAL_PRIdINT32, rSize.Height); +} + +void XShapeDumper::dumpShapeDescriptorAsAttribute( uno::Reference< drawing::XShapeDescriptor > xDescr ) +{ + xmlTextWriterWriteFormatAttribute(mxmlWriter, BAD_CAST("type"), "%s", rtl::OUStringToOString(xDescr->getShapeType(), RTL_TEXTENCODING_UTF8).getStr()); +} + +void XShapeDumper::dumpXShape( uno::Reference< drawing::XShape > xShape ) +{ + xmlTextWriterStartElement( mxmlWriter, BAD_CAST( "XShape" ) ); + + dumpPositionAsAttribute(xShape->getPosition()); + dumpSizeAsAttribute(xShape->getSize()); + uno::Reference< drawing::XShapeDescriptor > xDescr(xShape, uno::UNO_QUERY_THROW); + dumpShapeDescriptorAsAttribute(xDescr); + + 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( mxmlWriter, 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( mxmlWriter, 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); + } +#if DEBUG_DUMPER + sal_Int32 nServices = aServiceNames.getLength(); + for (sal_Int32 i = 0; i < nServices; ++i) + { + xmlTextWriterStartElement(mxmlWriter, BAD_CAST( "ServiceName" )); + xmlTextWriterWriteFormatAttribute(mxmlWriter, BAD_CAST( "name" ), "%s", rtl::OUStringToOString(aServiceNames[i], RTL_TEXTENCODING_UTF8).getStr()); + xmlTextWriterEndElement( mxmlWriter ); + } +#endif + + xmlTextWriterEndElement( mxmlWriter ); +} + +void XShapeDumper::dumpXShapes( uno::Reference< drawing::XShapes > xShapes ) +{ + xmlTextWriterStartElement( mxmlWriter, 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 ); + } + + xmlTextWriterEndElement( mxmlWriter ); +} + +rtl::OUString XShapeDumper::dump() +{ + rtl::OStringBuffer aString; + xmlOutputBufferPtr xmlOutBuffer = xmlOutputBufferCreateIO( writeCallback, closeCallback, &aString, NULL ); + mxmlWriter = xmlNewTextWriter( xmlOutBuffer ); + xmlTextWriterSetIndent( mxmlWriter, 1 ); + + xmlTextWriterStartDocument( mxmlWriter, NULL, NULL, NULL ); + + dumpXShapes( mxShapes ); + + xmlTextWriterEndDocument( mxmlWriter ); + xmlFreeTextWriter( mxmlWriter ); + + return OStringToOUString(aString.makeStringAndClear(), RTL_TEXTENCODING_UTF8); +} + +/* vim:set shiftwidth=4 softtabstop=4 expandtab: */ |