include/oox/helper/propertymap.hxx | 2 include/sal/log-areas.dox | 1 oox/source/drawingml/customshapeproperties.cxx | 3 oox/source/drawingml/customshapes/generatePresetsCXX.pl | 72 +++++++++++++++- oox/source/drawingml/shape.cxx | 1 oox/source/helper/propertymap.cxx | 19 ++++ 6 files changed, 97 insertions(+), 1 deletion(-)
New commits: commit e1f9e73893e3d5760dab45b9322eca9fb8ce7ac4 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Wed Apr 16 18:29:46 2014 +0200 oox: add --data switch to generatePresetsCXX.pl generatePresetsCXX.pl (as its name says) by default generates C++ code, but with the new switch it filters out data from the provided custom-shapes.log. Change-Id: Ic59c666422db667112c280716f98342fabdae692 diff --git a/oox/source/drawingml/customshapes/generatePresetsCXX.pl b/oox/source/drawingml/customshapes/generatePresetsCXX.pl index 2ce96f5..29a3c19 100755 --- a/oox/source/drawingml/customshapes/generatePresetsCXX.pl +++ b/oox/source/drawingml/customshapes/generatePresetsCXX.pl @@ -7,6 +7,54 @@ # file, You can obtain one at http://mozilla.org/MPL/2.0/. # +sub loadData() +{ + open (IN, "<custom-shapes.log"); + + my %sources; + + while (<IN>) + { + if (/==csdata== /) + { + if (/shape name: '/) + { + chop; + s/.*shape name: '([^']+)'.*/$1/; + $name = $_; + } + else + { + if (/==csdata== begin/) + { + $inside = true; + @code = (); + } + else + { + if (/==csdata== end/) + { + s/^ <\/([^>]+)>/$1/; + undef $inside; + $sources{$name} = [ @code ]; + } + } + } + } + else + { + if ($inside) + { + push @code, $_; + } + } + } + + close (IN); + + return \%sources; +} + sub loadSourceCode() { open (IN, "<custom-shapes.log"); @@ -168,6 +216,28 @@ EOS close OUT; } -generateSource (loadSourceCode ()); +sub generateData +{ + my $sources = shift; + open (OUT, ">oox-drawingml-cs-presets"); + + foreach $shape (sort(keys %$sources)) + { + printf OUT "/* %s */\n", $shape; + print OUT @{$sources->{$shape}}; + } + + close OUT; +} + +my $arg = shift; + +if ($arg eq "--data") +{ + generateData(loadData()); +} else +{ + generateSource (loadSourceCode ()); +} # vim:set ft=perl shiftwidth=4 softtabstop=4 expandtab: # diff --git a/oox/source/drawingml/shape.cxx b/oox/source/drawingml/shape.cxx index c1d00f6..f7150db 100644 --- a/oox/source/drawingml/shape.cxx +++ b/oox/source/drawingml/shape.cxx @@ -895,6 +895,7 @@ Reference< XShape > Shape::createAndInsert( } SAL_INFO("oox.cscode", "==cscode== shape name: '" << msName << "'"); + SAL_INFO("oox.csdata", "==csdata== shape name: '" << msName << "'"); mpCustomShapePropertiesPtr->pushToPropSet( rFilterBase, xSet, mxShape, maSize ); } else if( getTextBody() ) commit 142d63d01567b5c7e513258f2835dbde54b30012 Author: Miklos Vajna <vmik...@collabora.co.uk> Date: Wed Apr 16 18:15:21 2014 +0200 oox: add a method to dump a PropertyMap as data It was already possible to dump a PropertyMap as code, but not as data. The plan here is that if we dump the customshape preset definitions as data, then once there is a parser for it, we can get rid of the ugly generated code. Change-Id: If596941fedf71693e5d0bff436446ac0855c4c84 diff --git a/include/oox/helper/propertymap.hxx b/include/oox/helper/propertymap.hxx index 4b4f416..5cd606b 100644 --- a/include/oox/helper/propertymap.hxx +++ b/include/oox/helper/propertymap.hxx @@ -110,6 +110,8 @@ public: #endif static void dumpCode( ::com::sun::star::uno::Reference< ::com::sun::star::beans::XPropertySet > rXPropSet); void dumpCode(); + static void dumpData(com::sun::star::uno::Reference<com::sun::star::beans::XPropertySet> rXPropSet); + void dumpData(); #endif private: const PropertyNameVector* mpPropNames; diff --git a/include/sal/log-areas.dox b/include/sal/log-areas.dox index 90fd1c0..c924dcb 100644 --- a/include/sal/log-areas.dox +++ b/include/sal/log-areas.dox @@ -173,6 +173,7 @@ certain functionality. @li @c filter.tiff @li @c filter.xslt - xslt import/export @li @c oox.cscode - see oox/source/drawingml/customshapes/README +@li @c oox.csdata - see oox/source/drawingml/customshapes/README @li @c oox.drawingml - DrawingML @li @c oox.ppt - pptx filter @li @c oox.storage - ZipStorage class diff --git a/oox/source/drawingml/customshapeproperties.cxx b/oox/source/drawingml/customshapeproperties.cxx index 4886912..cfaec25 100644 --- a/oox/source/drawingml/customshapeproperties.cxx +++ b/oox/source/drawingml/customshapeproperties.cxx @@ -351,6 +351,9 @@ void CustomShapeProperties::pushToPropSet( const ::oox::core::FilterBase& /* rFi SAL_INFO("oox.cscode", "==cscode== begin"); aPropertyMap.dumpCode(); SAL_INFO("oox.cscode", "==cscode== end"); + SAL_INFO("oox.csdata", "==csdata== begin"); + aPropertyMap.dumpData(); + SAL_INFO("oox.csdata", "==csdata== end"); #endif // converting the vector to a sequence Sequence< PropertyValue > aSeq = aPropertyMap.makePropertyValueSequence(); diff --git a/oox/source/helper/propertymap.cxx b/oox/source/helper/propertymap.cxx index 05c3b13..1e5af51 100644 --- a/oox/source/helper/propertymap.cxx +++ b/oox/source/helper/propertymap.cxx @@ -27,6 +27,8 @@ # include <com/sun/star/text/WritingMode.hpp> using ::com::sun::star::style::LineSpacing; using ::com::sun::star::text::WritingMode; +#include <comphelper/anytostring.hxx> +#include <iostream> #endif #include <com/sun/star/beans/PropertyValue.hpp> @@ -929,10 +931,27 @@ void PropertyMap::dumpCode( Reference< XPropertySet > rXPropSet ) } } +void PropertyMap::dumpData(Reference<XPropertySet> xPropertySet) +{ + Reference<XPropertySetInfo> xPropertySetInfo = xPropertySet->getPropertySetInfo(); + Sequence<Property> aProperties = xPropertySetInfo->getProperties(); + + for (int i = 0; i < aProperties.getLength(); ++i) + { + std::cerr << aProperties[i].Name << std::endl; + std::cerr << comphelper::anyToString(xPropertySet->getPropertyValue(aProperties[i].Name)) << std::endl; + } +} + void PropertyMap::dumpCode() { dumpCode( Reference< XPropertySet >( makePropertySet(), UNO_QUERY ) ); } + +void PropertyMap::dumpData() +{ + dumpData( Reference< XPropertySet >( makePropertySet(), UNO_QUERY ) ); +} #endif } // namespace oox _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits