summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--oox/CustomTarget_generated.mk6
-rw-r--r--oox/Library_oox.mk4
-rw-r--r--oox/Package_generated.mk1
-rw-r--r--oox/source/export/preset-definitions-to-shape-types.pl70
-rw-r--r--oox/source/export/vmlexport.cxx30
-rw-r--r--scp2/source/ooo/module_filter.scp10
6 files changed, 66 insertions, 55 deletions
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 <<EOF;
-Usage: preset-definitions-to-shape-types.pl <shapes> <text>
+Usage: preset-definitions-to-shape-types.pl [ --drawingml-adj-names-data | --vml-shape-types-data ] <shapes> <text>
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'} ) ) {
"</v:shapetype>";
}
-# 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 <<EOF;
-// Shape types generated from
-// '$src_shapes'
-// and
-// '$src_text'
-// which are part of the OOXML documentation
-
-#include <map>
-#include <filter/msfilter/escherex.hxx>
-
-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 <<EOF;
-};
-
-EOF
+# should not happen
+exit 1;
# vim:set ft=perl shiftwidth=4 softtabstop=4 expandtab: #
diff --git a/oox/source/export/vmlexport.cxx b/oox/source/export/vmlexport.cxx
index b4b97b54dfe7..0f3038b5115a 100644
--- a/oox/source/export/vmlexport.cxx
+++ b/oox/source/export/vmlexport.cxx
@@ -17,6 +17,8 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <config_folders.h>
+#include "rtl/bootstrap.hxx"
#include <oox/export/vmlexport.hxx>
#include <oox/token/tokens.hxx>
@@ -927,7 +929,26 @@ void VMLExport::AddShapeAttribute( sal_Int32 nAttribute, const OString& rValue )
m_pShapeAttrList->add( nAttribute, rValue );
}
-extern const char* pShapeTypes[];
+std::vector<OString> lcl_getShapeTypes()
+{
+ std::vector<OString> 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<OString> 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;
}
}
diff --git a/scp2/source/ooo/module_filter.scp b/scp2/source/ooo/module_filter.scp
index 2caac9cfec93..e4fdeae9aa3f 100644
--- a/scp2/source/ooo/module_filter.scp
+++ b/scp2/source/ooo/module_filter.scp
@@ -17,7 +17,8 @@ Module gid_Module_Filter
Styles = (HIDDEN_ROOT);
Dirs = (gid_Dir_Share_Filter);
Files = (
- gid_File_Dat_OoxDrawingmlAdjNames);
+ gid_File_Dat_OoxDrawingmlAdjNames,
+ gid_File_Dat_VmlShapeTypes);
End
Directory gid_Dir_Share_Filter
@@ -32,4 +33,11 @@ File gid_File_Dat_OoxDrawingmlAdjNames
Styles = (PACKED);
End
+File gid_File_Dat_OoxVmlShapeTypes
+ TXT_FILE_BODY;
+ Dir = gid_Dir_Share_Filter;
+ Name = "vml-shape-types";
+ Styles = (PACKED);
+End
+
/* vim:set shiftwidth=4 softtabstop=4 expandtab: */