From 96e9fdd49b61d6342bde5a71098b3892f59fa38a Mon Sep 17 00:00:00 2001 From: Miklos Vajna Date: Tue, 15 Apr 2014 12:30:05 +0200 Subject: oox: generate data, not code for VML export preset definitions Change-Id: Ied9171715de948d30b360eb56626b93b695b7b93 --- oox/CustomTarget_generated.mk | 6 +- oox/Library_oox.mk | 4 -- oox/Package_generated.mk | 1 + .../export/preset-definitions-to-shape-types.pl | 70 +++++++++------------- oox/source/export/vmlexport.cxx | 30 ++++++++-- 5 files changed, 57 insertions(+), 54 deletions(-) (limited to 'oox') diff --git a/oox/CustomTarget_generated.mk b/oox/CustomTarget_generated.mk index 0b81f11eb9f4..70aa0d2739df 100644 --- a/oox/CustomTarget_generated.mk +++ b/oox/CustomTarget_generated.mk @@ -14,14 +14,14 @@ oox_MISC := $(call gb_CustomTarget_get_workdir,oox/generated)/misc oox_INC := $(call gb_CustomTarget_get_workdir,oox/generated) oox_GENHEADERPATH := $(oox_INC)/oox/token -$(oox_MISC)/vmlexport-shape-types.cxx : \ +$(oox_MISC)/vml-shape-types : \ $(SRCDIR)/oox/source/export/preset-definitions-to-shape-types.pl \ $(SRCDIR)/oox/source/drawingml/customshapes/presetShapeDefinitions.xml \ $(SRCDIR)/oox/source/export/presetTextWarpDefinitions.xml \ $(SRCDIR)/oox/CustomTarget_generated.mk $(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),build,PRL,1) mkdir -p $(dir $@) - perl $^ > $@.in_progress 2> $@.log && mv $@.in_progress $@ + perl $< --vml-shape-types-data $(filter-out $<,$^) > $@.in_progress 2> $@.log && mv $@.in_progress $@ $(oox_MISC)/oox-drawingml-adj-names : \ $(SRCDIR)/oox/source/export/preset-definitions-to-shape-types.pl \ @@ -58,8 +58,8 @@ $(eval $(call oox_GenTarget,properties,property,)) $(eval $(call oox_GenTarget,tokens,token,tokenhash.gperf)) $(call gb_CustomTarget_get_target,oox/generated) : \ - $(oox_MISC)/vmlexport-shape-types.cxx \ $(oox_MISC)/oox-drawingml-adj-names \ + $(oox_MISC)/vml-shape-types \ $(oox_INC)/tokenhash.inc \ $(oox_INC)/tokennames.inc \ $(oox_INC)/namespacenames.inc \ diff --git a/oox/Library_oox.mk b/oox/Library_oox.mk index 007c22feec68..06f047782c58 100644 --- a/oox/Library_oox.mk +++ b/oox/Library_oox.mk @@ -296,8 +296,4 @@ $(eval $(call gb_Library_add_exception_objects,oox,\ oox/source/vml/vmltextbox \ )) -$(eval $(call gb_Library_add_generated_exception_objects,oox,\ - CustomTarget/oox/generated/misc/vmlexport-shape-types \ -)) - # vim: set noet sw=4 ts=4: diff --git a/oox/Package_generated.mk b/oox/Package_generated.mk index e23366292ecf..6ed8f83e2a28 100644 --- a/oox/Package_generated.mk +++ b/oox/Package_generated.mk @@ -11,6 +11,7 @@ $(eval $(call gb_Package_Package,oox_generated,$(call gb_CustomTarget_get_workdi $(eval $(call gb_Package_add_files,oox_generated,$(LIBO_SHARE_FOLDER)/filter,\ misc/oox-drawingml-adj-names \ + misc/vml-shape-types \ )) # vim: set noet sw=4 ts=4: diff --git a/oox/source/export/preset-definitions-to-shape-types.pl b/oox/source/export/preset-definitions-to-shape-types.pl index 005d9cdc5e21..cd324d1bb72d 100644 --- a/oox/source/export/preset-definitions-to-shape-types.pl +++ b/oox/source/export/preset-definitions-to-shape-types.pl @@ -22,7 +22,7 @@ use warnings; sub usage() { print STDERR < +Usage: preset-definitions-to-shape-types.pl [ --drawingml-adj-names-data | --vml-shape-types-data ] Converts presetShapeDefinitions.xml and presetTextWarpDefinitions.xml to a .cxx that contains VML with the definitions of the shapes. The result is @@ -47,10 +47,14 @@ sub show_call_stack } my $drawingml_adj_names_data = 0; +my $vml_shape_types_data = 0; my $src_shapes = shift; if ($src_shapes eq "--drawingml-adj-names-data") { $drawingml_adj_names_data = 1; $src_shapes = shift; +} elsif ($src_shapes eq "--vml-shape-types-data") { + $vml_shape_types_data = 1; + $src_shapes = shift; } my $src_text = shift; @@ -1191,7 +1195,7 @@ if ( !defined( $result_shapes{'textBox'} ) ) { ""; } -# Generate the code +# Generate the data if ($drawingml_adj_names_data eq 1) { foreach my $adj_name (keys %adj_names) { @@ -1201,52 +1205,32 @@ if ($drawingml_adj_names_data eq 1) { } } exit 0; -} - -print < -#include - -const char* pShapeTypes[ ESCHER_ShpInst_COUNT ] = -{ -EOF - -for ( my $i = 0; $i < 203; ++$i ) { - if ( $i < 4 ) { - print " /* $i - $shapes_ids{$i} - handled separately */\n NULL,\n"; - } - else { - print " /* $i - $shapes_ids{$i} */\n"; - my $out = $result_shapes{$shapes_ids{$i}}; - if ( defined( $out ) ) { - # set the id - $out =~ s/__ID__/$i/g; - - # escape the '"'s - $out =~ s/"/\\"/g; - - # output as string - $out =~ s/^/ "/; - $out =~ s/\n/"\n "/g; - $out =~ s/$/"/; - - print "$out,\n"; +} elsif ($vml_shape_types_data eq 1) { + for ( my $i = 0; $i < 203; ++$i ) { + if ( $i < 4 ) { + print "/* $i - $shapes_ids{$i} - handled separately */\nNULL\n"; } else { - print " NULL,\n"; + print "/* $i - $shapes_ids{$i} */\n"; + my $out = $result_shapes{$shapes_ids{$i}}; + if ( defined( $out ) ) { + # set the id + $out =~ s/__ID__/$i/g; + + # output as string + $out =~ s/\n//g; + + print "$out\n"; + } + else { + print "NULL\n"; + } } } + exit 0; } -print < +#include "rtl/bootstrap.hxx" #include #include @@ -927,7 +929,26 @@ void VMLExport::AddShapeAttribute( sal_Int32 nAttribute, const OString& rValue ) m_pShapeAttrList->add( nAttribute, rValue ); } -extern const char* pShapeTypes[]; +std::vector lcl_getShapeTypes() +{ + std::vector aRet; + + OUString aPath("$BRAND_BASE_DIR/" LIBO_SHARE_FOLDER "/filter/vml-shape-types"); + rtl::Bootstrap::expandMacros(aPath); + SvFileStream aStream(aPath, STREAM_READ); + if (aStream.GetError() != ERRCODE_NONE) + SAL_WARN("oox", "failed to open vml-shape-types"); + OString aLine; + bool bNotDone = aStream.ReadLine(aLine); + while (bNotDone) + { + // Filter out comments. + if (!aLine.startsWith("/")) + aRet.push_back(aLine); + bNotDone = aStream.ReadLine(aLine); + } + return aRet; +} sal_Int32 VMLExport::StartShape() { @@ -951,13 +972,14 @@ sal_Int32 VMLExport::StartShape() nShapeElement = XML_shape; // a predefined shape? - const char* pShapeType = pShapeTypes[ m_nShapeType ]; - if ( pShapeType ) + static std::vector aShapeTypes = lcl_getShapeTypes(); + OString aShapeType = aShapeTypes[ m_nShapeType ]; + if ( aShapeType != "NULL" ) { bReferToShapeType = true; if ( !m_pShapeTypeWritten[ m_nShapeType ] ) { - m_pSerializer->write( pShapeType ); + m_pSerializer->write( aShapeType.getStr() ); m_pShapeTypeWritten[ m_nShapeType ] = true; } } -- cgit