Kaydet (Commit) 96e9fdd4 authored tarafından Miklos Vajna's avatar Miklos Vajna

oox: generate data, not code for VML export preset definitions

Change-Id: Ied9171715de948d30b360eb56626b93b695b7b93
üst b720ee5d
...@@ -14,14 +14,14 @@ oox_MISC := $(call gb_CustomTarget_get_workdir,oox/generated)/misc ...@@ -14,14 +14,14 @@ oox_MISC := $(call gb_CustomTarget_get_workdir,oox/generated)/misc
oox_INC := $(call gb_CustomTarget_get_workdir,oox/generated) oox_INC := $(call gb_CustomTarget_get_workdir,oox/generated)
oox_GENHEADERPATH := $(oox_INC)/oox/token 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/export/preset-definitions-to-shape-types.pl \
$(SRCDIR)/oox/source/drawingml/customshapes/presetShapeDefinitions.xml \ $(SRCDIR)/oox/source/drawingml/customshapes/presetShapeDefinitions.xml \
$(SRCDIR)/oox/source/export/presetTextWarpDefinitions.xml \ $(SRCDIR)/oox/source/export/presetTextWarpDefinitions.xml \
$(SRCDIR)/oox/CustomTarget_generated.mk $(SRCDIR)/oox/CustomTarget_generated.mk
$(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),build,PRL,1) $(call gb_Output_announce,$(subst $(WORKDIR)/,,$@),build,PRL,1)
mkdir -p $(dir $@) 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 : \ $(oox_MISC)/oox-drawingml-adj-names : \
$(SRCDIR)/oox/source/export/preset-definitions-to-shape-types.pl \ $(SRCDIR)/oox/source/export/preset-definitions-to-shape-types.pl \
...@@ -58,8 +58,8 @@ $(eval $(call oox_GenTarget,properties,property,)) ...@@ -58,8 +58,8 @@ $(eval $(call oox_GenTarget,properties,property,))
$(eval $(call oox_GenTarget,tokens,token,tokenhash.gperf)) $(eval $(call oox_GenTarget,tokens,token,tokenhash.gperf))
$(call gb_CustomTarget_get_target,oox/generated) : \ $(call gb_CustomTarget_get_target,oox/generated) : \
$(oox_MISC)/vmlexport-shape-types.cxx \
$(oox_MISC)/oox-drawingml-adj-names \ $(oox_MISC)/oox-drawingml-adj-names \
$(oox_MISC)/vml-shape-types \
$(oox_INC)/tokenhash.inc \ $(oox_INC)/tokenhash.inc \
$(oox_INC)/tokennames.inc \ $(oox_INC)/tokennames.inc \
$(oox_INC)/namespacenames.inc \ $(oox_INC)/namespacenames.inc \
......
...@@ -296,8 +296,4 @@ $(eval $(call gb_Library_add_exception_objects,oox,\ ...@@ -296,8 +296,4 @@ $(eval $(call gb_Library_add_exception_objects,oox,\
oox/source/vml/vmltextbox \ 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: # vim: set noet sw=4 ts=4:
...@@ -11,6 +11,7 @@ $(eval $(call gb_Package_Package,oox_generated,$(call gb_CustomTarget_get_workdi ...@@ -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,\ $(eval $(call gb_Package_add_files,oox_generated,$(LIBO_SHARE_FOLDER)/filter,\
misc/oox-drawingml-adj-names \ misc/oox-drawingml-adj-names \
misc/vml-shape-types \
)) ))
# vim: set noet sw=4 ts=4: # vim: set noet sw=4 ts=4:
...@@ -22,7 +22,7 @@ use warnings; ...@@ -22,7 +22,7 @@ use warnings;
sub usage() { sub usage() {
print STDERR <<EOF; 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 Converts presetShapeDefinitions.xml and presetTextWarpDefinitions.xml to a
.cxx that contains VML with the definitions of the shapes. The result is .cxx that contains VML with the definitions of the shapes. The result is
...@@ -47,10 +47,14 @@ sub show_call_stack ...@@ -47,10 +47,14 @@ sub show_call_stack
} }
my $drawingml_adj_names_data = 0; my $drawingml_adj_names_data = 0;
my $vml_shape_types_data = 0;
my $src_shapes = shift; my $src_shapes = shift;
if ($src_shapes eq "--drawingml-adj-names-data") { if ($src_shapes eq "--drawingml-adj-names-data") {
$drawingml_adj_names_data = 1; $drawingml_adj_names_data = 1;
$src_shapes = shift; $src_shapes = shift;
} elsif ($src_shapes eq "--vml-shape-types-data") {
$vml_shape_types_data = 1;
$src_shapes = shift;
} }
my $src_text = shift; my $src_text = shift;
...@@ -1191,7 +1195,7 @@ if ( !defined( $result_shapes{'textBox'} ) ) { ...@@ -1191,7 +1195,7 @@ if ( !defined( $result_shapes{'textBox'} ) ) {
"</v:shapetype>"; "</v:shapetype>";
} }
# Generate the code # Generate the data
if ($drawingml_adj_names_data eq 1) { if ($drawingml_adj_names_data eq 1) {
foreach my $adj_name (keys %adj_names) foreach my $adj_name (keys %adj_names)
{ {
...@@ -1201,52 +1205,32 @@ if ($drawingml_adj_names_data eq 1) { ...@@ -1201,52 +1205,32 @@ if ($drawingml_adj_names_data eq 1) {
} }
} }
exit 0; exit 0;
} } elsif ($vml_shape_types_data eq 1) {
for ( my $i = 0; $i < 203; ++$i ) {
print <<EOF; if ( $i < 4 ) {
// Shape types generated from print "/* $i - $shapes_ids{$i} - handled separately */\nNULL\n";
// '$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";
} }
else { 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; # should not happen
}; exit 1;
EOF
# vim:set ft=perl shiftwidth=4 softtabstop=4 expandtab: # # vim:set ft=perl shiftwidth=4 softtabstop=4 expandtab: #
...@@ -17,6 +17,8 @@ ...@@ -17,6 +17,8 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 . * 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/export/vmlexport.hxx>
#include <oox/token/tokens.hxx> #include <oox/token/tokens.hxx>
...@@ -927,7 +929,26 @@ void VMLExport::AddShapeAttribute( sal_Int32 nAttribute, const OString& rValue ) ...@@ -927,7 +929,26 @@ void VMLExport::AddShapeAttribute( sal_Int32 nAttribute, const OString& rValue )
m_pShapeAttrList->add( nAttribute, 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() sal_Int32 VMLExport::StartShape()
{ {
...@@ -951,13 +972,14 @@ sal_Int32 VMLExport::StartShape() ...@@ -951,13 +972,14 @@ sal_Int32 VMLExport::StartShape()
nShapeElement = XML_shape; nShapeElement = XML_shape;
// a predefined shape? // a predefined shape?
const char* pShapeType = pShapeTypes[ m_nShapeType ]; static std::vector<OString> aShapeTypes = lcl_getShapeTypes();
if ( pShapeType ) OString aShapeType = aShapeTypes[ m_nShapeType ];
if ( aShapeType != "NULL" )
{ {
bReferToShapeType = true; bReferToShapeType = true;
if ( !m_pShapeTypeWritten[ m_nShapeType ] ) if ( !m_pShapeTypeWritten[ m_nShapeType ] )
{ {
m_pSerializer->write( pShapeType ); m_pSerializer->write( aShapeType.getStr() );
m_pShapeTypeWritten[ m_nShapeType ] = true; m_pShapeTypeWritten[ m_nShapeType ] = true;
} }
} }
......
...@@ -17,7 +17,8 @@ Module gid_Module_Filter ...@@ -17,7 +17,8 @@ Module gid_Module_Filter
Styles = (HIDDEN_ROOT); Styles = (HIDDEN_ROOT);
Dirs = (gid_Dir_Share_Filter); Dirs = (gid_Dir_Share_Filter);
Files = ( Files = (
gid_File_Dat_OoxDrawingmlAdjNames); gid_File_Dat_OoxDrawingmlAdjNames,
gid_File_Dat_VmlShapeTypes);
End End
Directory gid_Dir_Share_Filter Directory gid_Dir_Share_Filter
...@@ -32,4 +33,11 @@ File gid_File_Dat_OoxDrawingmlAdjNames ...@@ -32,4 +33,11 @@ File gid_File_Dat_OoxDrawingmlAdjNames
Styles = (PACKED); Styles = (PACKED);
End 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: */ /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment