[Libreoffice-commits] .: Branch 'libreoffice-3-3' - 2 commits - configure.in download.in patches/dev300
Fridrich Strba
fridrich at kemper.freedesktop.org
Tue Nov 16 04:42:41 PST 2010
configure.in | 20
download.in | 18
patches/dev300/apply | 82
patches/dev300/config_office-testing.diff | 29
patches/dev300/libwpd-testing.diff | 35
patches/dev300/libwpg-testing.diff | 35
patches/dev300/libwps-testing.diff | 25
patches/dev300/writerperfect-testing.diff | 4353 ------------------------------
8 files changed, 55 insertions(+), 4542 deletions(-)
New commits:
commit ccf5cd6fd26b8b7315d2e558bb160ad080aa48e1
Author: Fridrich Å trba <fridrich.strba at bluewin.ch>
Date: Tue Nov 16 13:42:06 2010 +0100
fix a merge conflict separately
diff --git a/patches/dev300/apply b/patches/dev300/apply
index 75173ba..105a76a 100755
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -30,7 +30,7 @@ Win32Common : Common, Defaults, Win32Only, CliMonoCommon, CliComponent, NotDebia
Experimental: VBAUntested, ArkOnlyExperimental, \
UnUsedButNotYetRemovedFromGit, WebDAVUpstream, \
PostgreSQL, SELinux, \
- UnitBootstrap, RadioButtons, UnstableLibwpd, WWInProgress, \
+ UnitBootstrap, RadioButtons, WWInProgress, \
KDE4Experimental, MinGW, CalcExperimental, \
OOXMLExportExperimental, CrossWin32Patches, AutoLayout, \
WriterNavigation \
@@ -46,7 +46,6 @@ NLPSolver : NLPSolverBits
Piece : PieceBits
#Localize
Localize : LocalizeFixes
-UnstableWP : UnstableLibwpd
# Novell
NovellBase : LinuxCommon, NovellOnly, NovellOnlyUnix, \
@@ -2149,13 +2148,6 @@ iso-ooxml-sw.diff, cbosdo
# which follows:
xlsx-shared-oox-chart-export-part1-pptx-part.diff
-[ UnstableLibwpd ]
-config_office-testing.diff
-libwpd-testing.diff
-libwpg-testing.diff
-libwps-testing.diff
-writerperfect-testing.diff
-
[ PieceBits ]
SectionOwner => michael
# Experimental piece-wise source code split for build
commit d0a6a0f030cc322fb6cbdeead65c916f56e7c3e0
Author: Fridrich Å trba <fridrich.strba at bluewin.ch>
Date: Tue Nov 16 13:38:33 2010 +0100
Use the new stable libwp* releases as default
diff --git a/configure.in b/configure.in
index 1242e3d..23cf784 100755
--- a/configure.in
+++ b/configure.in
@@ -1272,14 +1272,6 @@ AC_SUBST(ENABLE_ACCESS)
AC_SUBST(MDBTOOLS_SRC)
AC_SUBST(SYSTEM_MDBTOOLS)
-UNSTABLE_WP=NO
-if test -n "$with_unstable_wp" && test "$with_unstable_wp" = "yes"; then
- UNSTABLE_WP=YES
-else
- UNSTABLE_WP=NO
-fi
-AC_SUBST(UNSTABLE_WP)
-
if test -n "$with_system_mdds" && test "$with_system_mdds" = "yes"; then
SYSTEM_MDDS=YES
else
@@ -1291,34 +1283,22 @@ if test -n "$with_system_libwpd" && test "$with_system_libwpd" = "yes"; then
SYSTEM_LIBWPD=YES
else
SYSTEM_LIBWPD=NO
- if test "$UNSTABLE_WP" = "YES"; then
- LIBWPD_TARBALL=86e390f015e505dd71a66f0123c62f09-libwpd-0.9.0.tar.bz2
- fi
fi
AC_SUBST(SYSTEM_LIBWPD)
-AC_SUBST(LIBWPD_TARBALL)
if test -n "$with_system_libwps" && test "$with_system_libwps" = "yes"; then
SYSTEM_LIBWPS=YES
else
SYSTEM_LIBWPS=NO
- if test "$UNSTABLE_WP" = "YES"; then
- LIBWPS_TARBALL=9e436bff44c60dc8b97cba0c7fc11a5c-libwps-0.2.0.tar.bz2
- fi
fi
AC_SUBST(SYSTEM_LIBWPS)
-AC_SUBST(LIBWPS_TARBALL)
if test "$with_system_libwpg" = "yes"; then
SYSTEM_LIBWPG=YES
else
SYSTEM_LIBWPG=NO
- if test "$UNSTABLE_WP" = "YES"; then
- LIBWPG_TARBALL=5ba6a61a2f66dfd5fee8cdd4cd262a37-libwpg-0.2.0.tar.bz2
- fi
fi
AC_SUBST(SYSTEM_LIBWPG)
-AC_SUBST(LIBWPG_TARBALL)
if test "$with_system_zlib" = "yes"; then
SYSTEM_ZLIB=YES
diff --git a/download.in b/download.in
index f2929c1..8e78c10 100755
--- a/download.in
+++ b/download.in
@@ -175,12 +175,6 @@ sub download_tests_dependencies() {
'WNTMSCI.*\.zip' => 'http://tools.openoffice.org/moz_prebuild/OOo3.2',
# Windows .ico icons
'ooo-windows-icons-0.2.tar.bz2' => '@MIRROR@/OOO300',
-# Updated libwpd
- '*libwpd-*' => '@MIRROR@/src',
-# MS Works importer bits
- '*libwps-*' => '@MIRROR@/src',
-# WPG importer bits
- '*libwpg-*' => '@MIRROR@/src',
# cairo sources
'cairo-.*' => 'http://cairographics.org/releases/',
# OxygenOffice extras
@@ -550,18 +544,6 @@ if ('@PIECE@' eq 'bootstrap') {
source_file( 'setup_native_packinfo-3.2.99.3.tar.bz2' );
}
-if ('@SYSTEM_LIBWPD@' eq 'NO') {
- source_file( '@LIBWPD_TARBALL@' );
-}
-
-if ('@SYSTEM_LIBWPS@' eq 'NO') {
- source_file( '@LIBWPS_TARBALL@' );
-}
-
-if ('@SYSTEM_LIBWPG@' eq 'NO') {
- source_file( '@LIBWPG_TARBALL@' );
-}
-
if ('@OOOP_FONTS_PACK@' ne '') {
source_file( '@OOOP_FONTS_PACK@' );
}
diff --git a/patches/dev300/apply b/patches/dev300/apply
index 57994f1..75173ba 100755
--- a/patches/dev300/apply
+++ b/patches/dev300/apply
@@ -147,6 +147,7 @@ OOo4Kids: OOo4KidsPatches
Raw: RawCommon RawPatches
# LibreOffice
LibreOfficeWin32: LibreOfficeCommon LibreOfficePatches LibreOfficeWin32Patches
+LibreOfficeWin64: LibreOfficeCommon LibreOfficePatches LibreOfficeWin32Patches
LibreOfficeLinux: LibreOfficeCommon LibreOfficePatches LibreOfficeLinuxPatches
LibreOfficeLinuxDevel: LibreOfficeCommon LibreOfficePatches LibreOfficeLinuxPatches
LibreOfficeMacOSX: LibreOfficeCommon LibreOfficePatches LibreOfficeMacOSXPatches
@@ -840,11 +841,6 @@ system-python-uno-path.diff, i#97629
liberation_packaging_fix.diff, kami
#liberation_making_fix.diff, kami
-[ VCL ]
-# prioritize hebrew culmus fonts, Debian bugs #280084, #296152, #300642
-hebrew-culmus.diff, noelpwer
-
-
[ AddressBooks ]
# build either the driver for Evolution 1.x or 2.x
# they produce the same binary and configuration, so they can't be built at once
@@ -961,7 +957,8 @@ SectionOwner => noelpwer
# is disabled in vbasupportdev300 upstream )
cws-vbasupportdev300_m83-fix.diff, cbosdo
vba-enable-fieldrelatedbits.diff
-vba-container-controls.diff
+# This one is in the repo, it seems
+#vba-container-controls.diff
# need to adapt ooo-build wrt the changes intorduced into container_controls
oox-projectname-oobuild-specifix.diff
# fix problem with inserting imported modules with oox
@@ -1891,10 +1888,6 @@ sd-slideshow-slideshowview-transformation-fix.diff, rodo
# version compat distinction?
sd-custom-show-fix.diff, n#355638, i#90145, thorsten
-# apply this patch if you need to disable vcl grabbing your mouse -
-# after applying the patch, set SAL_NO_MOUSEGRABS in your env
-#vcl-disable-mouse-grab.diff
-
# temporary fix. does no harm and gets the job done but its not
# beautiful. Since the whole section needs to be refactored anyway decided not
# to waste for time with this fix but to focus on the refactoring
@@ -1975,9 +1968,35 @@ base64.diff, i#100620, hmth
ooop-langpack-policy.diff
[ OOXMLExport ]
+pptx-filter-as-a-separate-lib.diff
+
+[ OOXMLExport and not OpenGLTransitions ]
+pptx-filter-as-a-separate-lib-sd-build-lst-without-transogl.diff
+
+[ OOXMLExport and OpenGLTransitions ]
+pptx-filter-as-a-separate-lib-sd-build-lst-with-transogl.diff
+
+# Snapshot of the pptx export filter at the time of creation of ooxml03
+# This is until 0475--fix-crash-introduced-by-Jonathan-s-changes-in-eppt.patch
+# (including)
+[ OOXMLExport ]
+pptx-snapshot-at-ooxml03-creation.diff
+
+# ...and the rest from the git tree
+# (until 'more qnimations export work', including)
+
+pptx-the-rest-from-git.diff
+pptx-export-empty-animations-node-and-groupshape-fix.diff, rodo
+
+# handles case where a connector shape is not connected
+pptx-fix-connector-crash.diff, n#499129, thorsten
+
+[ OOXMLExport ]
# hack to ignore writerfilter when odf-converter is present
odf-converter-ignore-writerfilter.diff, n#348471, n#502173, jholesov
+oox-pptx-export-fix-hidden-slides.diff, n#499131, rodo
+
[ Fixes ]
external-apm-header.diff, freuter
wmf-mm-text.diff, n#417818, rodo
@@ -2012,6 +2031,22 @@ svx-fix-fit-to-frame-crash.diff, n#508621, rodo
# expand path placeholders early in template dialog
normalize-template-paths-fix.diff, n#512146, thorsten
+[ OOXMLExport ]
+oox-pptx-export-vertical-text.diff, n#498737, rodo
+oox-pptx-export-para-linespacing.diff, n#498737, rodo
+oox-pptx-export-fix-action-button-presets.diff, n#497570, rodo
+oox-drawingml-fix-shapes-map-crash.diff, rodo
+
+[ OOXMLExportDevel ]
+# equivalent of ooxml-drawing-fix-shapes-map-crash-xlsx-part for shared filter
+xlsx-shared-oox-drawingml-fix-shapes-map-crash.diff, rodo
+
+[ OOXMLExport ]
+oox-pptx-export-animations-filter.diff, n#497570, rodo
+oox-pptx-export-animations-paragraph-target.diff, n#497570, rodo
+oox-pptx-export-blip-luminance.diff, n#497570, rodo
+
+
[ Experimental ]
experimental_ooapi.diff, flr
@@ -2019,15 +2054,6 @@ experimental_ooapi.diff, flr
# It's empty but please don't remove this section.
SectionOwner => kohei
-[ NovellOnlyWin32 ]
-# when reading csv file, don't read multiple physical lines for one logical
-# line even if matching quotes are on separate lines.
-
-# This is a risky patch but we put it in NovellOnlyWin32 so that we
-# don't need to produce a PTF with just this for the one customer that
-# wants it.
-stream-read-csv-always-single-line.diff, n#523517, kohei
-
[ AutoLayout ]
impress-autolayout.diff, cocofan
@@ -2110,6 +2136,7 @@ solenv-unpack-oxt.diff, pmladek
system-lpsolve-link-with-colamd.diff, rengelha
[ OOXMLExport ]
+oox-pptx-export-update-to-ooo320.diff, rodo
iso-ooxml-sw.diff, cbosdo
[ OOXMLExportDevel ]
@@ -2117,6 +2144,11 @@ iso-ooxml-sw.diff, cbosdo
# mostly merged into git by now, except for
# xlsx-export-row-limit-fix.diff, n#504623, kohei
+# this used to be xlsx-shared-oox-chart-export-part1.diff, Fong
+# it is now merged into git, except for the hunk patching pptx
+# which follows:
+xlsx-shared-oox-chart-export-part1-pptx-part.diff
+
[ UnstableLibwpd ]
config_office-testing.diff
libwpd-testing.diff
@@ -2335,6 +2367,10 @@ sled10-splash.diff, i#123456, pmladek
[ Fixes ]
svx-ppt-bullet-offset-fix.diff, n#593609, rodo
+[ OOXMLExport ]
+sd-pptx-export-build-fix.diff, rodo
+sd-pptx-export-build-fix-2.diff, rodo
+
[ Fixes ]
svx-fix-layout-build.diff, rodo
sfx2-style-edit-greyentry.diff, i#85003, simonaw
diff --git a/patches/dev300/config_office-testing.diff b/patches/dev300/config_office-testing.diff
deleted file mode 100644
index caea524..0000000
--- a/patches/dev300/config_office-testing.diff
+++ /dev/null
@@ -1,29 +0,0 @@
---- configure.in 2008-06-23 14:46:06.000000000 +0200
-+++ configure.in 2008-06-23 14:47:00.000000000 +0200
-@@ -3534,7 +3534,7 @@
- test "$with_system_libwpd" != "no"; then
- AC_MSG_RESULT([external])
- SYSTEM_LIBWPD=YES
-- PKG_CHECK_MODULES( LIBWPD, libwpd-0.8 )
-+ PKG_CHECK_MODULES( LIBWPD, libwpd-0.9 libwpd-stream-0.9 )
- else
- AC_MSG_RESULT([internal])
- SYSTEM_LIBWPD=NO
-@@ -3552,7 +3552,7 @@
- test "$with_system_libwps" != "no"; then
- AC_MSG_RESULT([external])
- SYSTEM_LIBWPS=YES
-- PKG_CHECK_MODULES( LIBWPS, libwps-0.1 )
-+ PKG_CHECK_MODULES( LIBWPS, libwps-0.2 )
- else
- AC_MSG_RESULT([internal])
- SYSTEM_LIBWPS=NO
-@@ -3570,7 +3570,7 @@
- test "$with_system_libwpg" != "no"; then
- AC_MSG_RESULT([external])
- SYSTEM_LIBWPG=YES
-- PKG_CHECK_MODULES( LIBWPG, libwpg-0.1 )
-+ PKG_CHECK_MODULES( LIBWPG, libwpg-0.2 )
- else
- AC_MSG_RESULT([internal])
- SYSTEM_LIBWPG=NO
diff --git a/patches/dev300/libwpd-testing.diff b/patches/dev300/libwpd-testing.diff
deleted file mode 100644
index bfb5a18..0000000
--- a/patches/dev300/libwpd-testing.diff
+++ /dev/null
@@ -1,35 +0,0 @@
---- libwpd/makefile.mk 2010-10-10 13:27:50.000000000 +0200
-+++ libwpd/makefile.mk 2010-11-06 16:04:03.000000000 +0100
-@@ -41,8 +41,8 @@
- @echo "Using system libwpd..."
- .ENDIF
-
--TARFILE_NAME=libwpd-0.8.14
--TARFILE_MD5=64d66018897d759358f454010b6e75d2
-+TARFILE_NAME=libwpd-0.9.0
-+TARFILE_MD5=86e390f015e505dd71a66f0123c62f09
- BUILD_ACTION=dmake $(MFLAGS) $(CALLMACROS)
- BUILD_DIR=src$/lib
-
---- libwpd/prj/d.lst 2010-10-10 13:27:50.000000000 +0200
-+++ libwpd/prj/d.lst 2010-11-06 16:25:53.000000000 +0100
-@@ -1,12 +1,15 @@
- mkdir: %_DEST%\inc%_EXT%\libwpd
-+mkdir: %_DEST%\inc%_EXT%\libwpd-stream
- ..\%__SRC%\misc\build\libwpd*\src\lib\libwpd.h %_DEST%\inc%_EXT%\libwpd\
--..\%__SRC%\misc\build\libwpd*\src\lib\libwpd_types.h %_DEST%\inc%_EXT%\libwpd\
--..\%__SRC%\misc\build\libwpd*\src\lib\WPXStream.h %_DEST%\inc%_EXT%\libwpd\
-+..\%__SRC%\misc\build\libwpd*\src\lib\WPDocument.h %_DEST%\inc%_EXT%\libwpd\
-+..\%__SRC%\misc\build\libwpd*\src\lib\WPXBinaryData.h %_DEST%\inc%_EXT%\libwpd\
-+..\%__SRC%\misc\build\libwpd*\src\lib\WPXDocumentInterface.h %_DEST%\inc%_EXT%\libwpd\
- ..\%__SRC%\misc\build\libwpd*\src\lib\WPXProperty.h %_DEST%\inc%_EXT%\libwpd\
- ..\%__SRC%\misc\build\libwpd*\src\lib\WPXPropertyList.h %_DEST%\inc%_EXT%\libwpd\
- ..\%__SRC%\misc\build\libwpd*\src\lib\WPXString.h %_DEST%\inc%_EXT%\libwpd\
- ..\%__SRC%\misc\build\libwpd*\src\lib\WPXPropertyListVector.h %_DEST%\inc%_EXT%\libwpd\
--..\%__SRC%\misc\build\libwpd*\src\lib\WPDocument.h %_DEST%\inc%_EXT%\libwpd\
--..\%__SRC%\misc\build\libwpd*\src\lib\WPXHLListenerImpl.h %_DEST%\inc%_EXT%\libwpd\
-+..\%__SRC%\misc\build\libwpd*\src\lib\libwpd-stream.h %_DEST%\inc%_EXT%\libwpd-stream\
-+..\%__SRC%\misc\build\libwpd*\src\lib\WPXStream.h %_DEST%\inc%_EXT%\libwpd-stream\
-+..\%__SRC%\misc\build\libwpd*\src\lib\WPXStreamImplementation.h %_DEST%\inc%_EXT%\libwpd-stream\
- ..\%__SRC%\lib\*.a %_DEST%\lib%_EXT%\*.a
- ..\%__SRC%\slb\*.lib %_DEST%\lib%_EXT%\*.lib
diff --git a/patches/dev300/libwpg-testing.diff b/patches/dev300/libwpg-testing.diff
deleted file mode 100644
index 84c37cc..0000000
--- a/patches/dev300/libwpg-testing.diff
+++ /dev/null
@@ -1,35 +0,0 @@
---- libwpg/makefile.mk 2010-10-10 13:27:50.000000000 +0200
-+++ libwpg/makefile.mk 2010-11-06 16:22:22.000000000 +0100
-@@ -46,10 +46,11 @@
- INCPRE+=$(LIBWPD_CFLAGS)
- .ELSE
- INCPRE+=$(SOLARVER)$/$(UPD)$/$(INPATH)$/inc$/libwpd
-+INCPRE+=$(SOLARVER)$/$(UPD)$/$(INPATH)$/inc$/libwpd-stream
- .ENDIF
-
--TARFILE_NAME=libwpg-0.1.3
--TARFILE_MD5=db556b750bf3eac8481a4cc5e29e5af1
-+TARFILE_NAME=libwpg-0.2.0
-+TARFILE_MD5=5ba6a61a2f66dfd5fee8cdd4cd262a37
- BUILD_ACTION=dmake $(MFLAGS) $(CALLMACROS)
- BUILD_DIR=src/lib
-
---- libwpg/prj/d.lst 2010-10-10 13:27:50.000000000 +0200
-+++ libwpg/prj/d.lst 2010-11-06 16:14:35.000000000 +0100
-@@ -1,16 +1,6 @@
- mkdir: %_DEST%\inc%_EXT%\libwpg
- ..\%__SRC%\misc\build\libwpg*\src\lib\libwpg.h %_DEST%\inc%_EXT%\libwpg\
--..\%__SRC%\misc\build\libwpg*\src\lib\WPGBitmap.h %_DEST%\inc%_EXT%\libwpg\
--..\%__SRC%\misc\build\libwpg*\src\lib\WPGBinaryData.h %_DEST%\inc%_EXT%\libwpg\
--..\%__SRC%\misc\build\libwpg*\src\lib\WPGBrush.h %_DEST%\inc%_EXT%\libwpg\
--..\%__SRC%\misc\build\libwpg*\src\lib\WPGColor.h %_DEST%\inc%_EXT%\libwpg\
--..\%__SRC%\misc\build\libwpg*\src\lib\WPGGradient.h %_DEST%\inc%_EXT%\libwpg\
- ..\%__SRC%\misc\build\libwpg*\src\lib\WPGPaintInterface.h %_DEST%\inc%_EXT%\libwpg\
--..\%__SRC%\misc\build\libwpg*\src\lib\WPGPath.h %_DEST%\inc%_EXT%\libwpg\
--..\%__SRC%\misc\build\libwpg*\src\lib\WPGPen.h %_DEST%\inc%_EXT%\libwpg\
--..\%__SRC%\misc\build\libwpg*\src\lib\WPGPoint.h %_DEST%\inc%_EXT%\libwpg\
- ..\%__SRC%\misc\build\libwpg*\src\lib\WPGraphics.h %_DEST%\inc%_EXT%\libwpg\
--..\%__SRC%\misc\build\libwpg*\src\lib\WPGRect.h %_DEST%\inc%_EXT%\libwpg\
--..\%__SRC%\misc\build\libwpg*\src\lib\WPGString.h %_DEST%\inc%_EXT%\libwpg\
- ..\%__SRC%\lib\*.a %_DEST%\lib%_EXT%\*.a
- ..\%__SRC%\slb\*.lib %_DEST%\lib%_EXT%\*.lib
diff --git a/patches/dev300/libwps-testing.diff b/patches/dev300/libwps-testing.diff
deleted file mode 100644
index 3dc4f5a..0000000
--- a/patches/dev300/libwps-testing.diff
+++ /dev/null
@@ -1,25 +0,0 @@
---- libwps/makefile.mk 2010-10-10 13:27:50.000000000 +0200
-+++ libwps/makefile.mk 2010-11-06 12:03:50.000000000 +0100
-@@ -46,10 +46,11 @@
- INCPRE+=$(LIBWPD_CFLAGS)
- .ELSE
- INCPRE+=$(SOLARVER)$/$(UPD)$/$(INPATH)$/inc$/libwpd
-+INCPRE+=$(SOLARVER)$/$(UPD)$/$(INPATH)$/inc$/libwpd-stream
- .ENDIF
-
--TARFILE_NAME=libwps-0.1.2
--TARFILE_MD5=799fc3b835a79adce8c88a3fee0150c1
-+TARFILE_NAME=libwps-0.2.0
-+TARFILE_MD5=9e436bff44c60dc8b97cba0c7fc11a5c
- BUILD_ACTION=dmake $(MFLAGS) $(CALLMACROS)
- BUILD_DIR=src/lib
-
---- libwps/prj/d.lst 2010-10-10 13:27:50.000000000 +0200
-+++ libwps/prj/d.lst 2010-11-06 11:55:59.000000000 +0100
-@@ -1,6 +1,5 @@
- mkdir: %_DEST%\inc%_EXT%\libwps
- ..\%__SRC%\misc\build\libwps*\src\lib\libwps.h %_DEST%\inc%_EXT%\libwps\
--..\%__SRC%\misc\build\libwps*\src\lib\WPSStream.h %_DEST%\inc%_EXT%\libwps\
- ..\%__SRC%\misc\build\libwps*\src\lib\WPSDocument.h %_DEST%\inc%_EXT%\libwps\
- ..\%__SRC%\lib\*.a %_DEST%\lib%_EXT%\*.a
- ..\%__SRC%\slb\*.lib %_DEST%\lib%_EXT%\*.lib
diff --git a/patches/dev300/writerperfect-testing.diff b/patches/dev300/writerperfect-testing.diff
deleted file mode 100644
index 0710a30..0000000
--- a/patches/dev300/writerperfect-testing.diff
+++ /dev/null
@@ -1,4353 +0,0 @@
---- writerperfect/prj/build.lst 2010-10-10 13:15:28.000000000 +0200
-+++ writerperfect/prj/build.lst 2010-11-06 13:52:55.000000000 +0100
-@@ -1,4 +1,4 @@
--wp writerperfect : LIBWPG:libwpg LIBWPS:libwps LIBWPD:libwpd sot comphelper xmloff svtools NULL
-+wp writerperfect : LIBWPG:libwpg LIBWPS:libwps LIBWPD:libwpd sot comphelper xmloff svtools sfx2 NULL
- wp writerperfect usr1 - all wp_mkout NULL
- wp writerperfect\source\stream nmake - all wp_stream NULL
- wp writerperfect\source\filter nmake - all wp_filter NULL
---- writerperfect/source/filter/DocumentCollector.cxx 2010-10-17 15:38:36.000000000 +0200
-+++ writerperfect/source/filter/DocumentCollector.cxx 2010-11-06 23:13:35.000000000 +0100
-@@ -40,6 +40,8 @@
-
- #include "DocumentCollector.hxx"
- #include "DocumentElement.hxx"
-+#include "DocumentHandler.hxx"
-+#include "InternalHandler.hxx"
- #include "TextRunStyle.hxx"
- #include "FontStyle.hxx"
- #include "ListStyle.hxx"
-@@ -48,34 +50,49 @@
- #include "TableStyle.hxx"
- #include "FilterInternal.hxx"
- #include "WriterProperties.hxx"
-+#include "OdgExporter.hxx"
-
- _WriterDocumentState::_WriterDocumentState() :
- mbFirstElement(true),
-+ mbFirstParagraphInPageSpan(true),
- mbInFakeSection(false),
- mbListElementOpenedAtCurrentLevel(false),
- mbTableCellOpened(false),
- mbHeaderRow(false),
-- mbInNote(false)
-+ mbInNote(false),
-+ mbInTextBox(false),
-+ mbInFrame(false)
- {
- }
-
--DocumentCollector::DocumentCollector(WPSInputStream *pInput, DocumentHandler *pHandler) :
-+_WriterListState::_WriterListState() :
-+ mpCurrentListStyle(NULL),
-+ miCurrentListLevel(0),
-+ miLastListLevel(0),
-+ miLastListNumber(0),
-+ mbListContinueNumbering(false),
-+ mbListElementParagraphOpened(false),
-+ mbListElementOpened()
-+{
-+}
-+
-+DocumentCollector::DocumentCollector(WPXInputStream *pInput, DocumentHandlerInterface *pHandler) :
- mpInput(pInput),
- mpHandler(pHandler),
- mbUsed(false),
-+ mWriterDocumentStates(),
-+ mWriterListStates(),
- mfSectionSpaceAfter(0.0f),
- miNumListStyles(0),
- mpCurrentContentElements(&mBodyElements),
- mpCurrentPageSpan(NULL),
- miNumPageStyles(0),
-- mpCurrentListStyle(NULL),
-- miCurrentListLevel(0),
-- miLastListLevel(0),
-- miLastListNumber(0),
-- mbListContinueNumbering(false),
-- mbListElementOpened(false),
-- mbListElementParagraphOpened(false)
-+ miObjectNumber(0),
-+ mbIsFlatXML(true),
-+ mpPassword(NULL)
- {
-+ mWriterDocumentStates.push(WriterDocumentState());
-+ mWriterListStates.push(WriterListState());
- }
-
- DocumentCollector::~DocumentCollector()
-@@ -103,7 +120,7 @@
-
- WRITER_DEBUG_MSG(("Destroying the body elements\n"));
- for (std::vector<DocumentElement *>::iterator iterBody = mBodyElements.begin(); iterBody != mBodyElements.end(); iterBody++) {
-- delete((*iterBody));
-+ delete (*iterBody);
- (*iterBody) = NULL;
- }
-
-@@ -116,14 +133,14 @@
-
- WRITER_DEBUG_MSG(("Destroying the rest of the styles elements\n"));
- for (std::map<WPXString, ParagraphStyle *, ltstr>::iterator iterTextStyle = mTextStyleHash.begin(); iterTextStyle != mTextStyleHash.end(); iterTextStyle++) {
-- delete iterTextStyle->second;
-+ delete (iterTextStyle->second);
- }
- for (std::map<WPXString, SpanStyle *, ltstr>::iterator iterSpanStyle = mSpanStyleHash.begin(); iterSpanStyle != mSpanStyleHash.end(); iterSpanStyle++) {
-- delete iterSpanStyle->second;
-+ delete(iterSpanStyle->second);
- }
-
- for (std::map<WPXString, FontStyle *, ltstr>::iterator iterFont = mFontHash.begin(); iterFont != mFontHash.end(); iterFont++) {
-- delete iterFont->second;
-+ delete(iterFont->second);
- }
-
- for (std::vector<ListStyle *>::iterator iterListStyles = mListStyles.begin(); iterListStyles != mListStyles.end(); iterListStyles++) {
-@@ -133,80 +150,101 @@
- delete (*iterSectionStyles);
- }
- for (std::vector<TableStyle *>::iterator iterTableStyles = mTableStyles.begin(); iterTableStyles != mTableStyles.end(); iterTableStyles++) {
-- delete (*iterTableStyles);
-+ delete((*iterTableStyles));
- }
-
- for (std::vector<PageSpan *>::iterator iterPageSpans = mPageSpans.begin(); iterPageSpans != mPageSpans.end(); iterPageSpans++) {
- delete (*iterPageSpans);
- }
-+ for (std::vector<DocumentElement *>::iterator iterFrameStyles = mFrameStyles.begin(); iterFrameStyles != mFrameStyles.end(); iterFrameStyles++) {
-+ delete(*iterFrameStyles);
-+ }
-+ for (std::vector<DocumentElement *>::iterator iterFrameAutomaticStyles = mFrameAutomaticStyles.begin();
-+ iterFrameAutomaticStyles != mFrameAutomaticStyles.end(); iterFrameAutomaticStyles++) {
-+ delete(*iterFrameAutomaticStyles);
-+ }
-+ for (std::vector<DocumentElement *>::iterator iterMetaData = mMetaData.begin(); iterMetaData != mMetaData.end(); iterMetaData++) {
-+ delete(*iterMetaData);
-+ }
-
- return true;
- }
-
--void DocumentCollector::_writeDefaultStyles(DocumentHandler *pHandler)
-+void DocumentCollector::_writeDefaultStyles(DocumentHandlerInterface *pHandler)
- {
-- TagOpenElement stylesOpenElement("office:styles");
-- stylesOpenElement.write(pHandler);
-+ TagOpenElement("office:styles").write(pHandler);
-
- TagOpenElement defaultParagraphStyleOpenElement("style:default-style");
- defaultParagraphStyleOpenElement.addAttribute("style:family", "paragraph");
- defaultParagraphStyleOpenElement.write(pHandler);
-
-- TagOpenElement defaultParagraphStylePropertiesOpenElement("style:properties");
-- defaultParagraphStylePropertiesOpenElement.addAttribute("style:family", "paragraph");
-- defaultParagraphStylePropertiesOpenElement.addAttribute("style:tab-stop-distance", "0.5inch");
-+ TagOpenElement defaultParagraphStylePropertiesOpenElement("style:paragraph-properties");
-+ defaultParagraphStylePropertiesOpenElement.addAttribute("style:tab-stop-distance", "0.5in");
- defaultParagraphStylePropertiesOpenElement.write(pHandler);
-- TagCloseElement defaultParagraphStylePropertiesCloseElement("style:properties");
-+ TagCloseElement defaultParagraphStylePropertiesCloseElement("style:paragraph-properties");
- defaultParagraphStylePropertiesCloseElement.write(pHandler);
-
-- TagCloseElement defaultParagraphStyleCloseElement("style:default-style");
-- defaultParagraphStyleCloseElement.write(pHandler);
-+ pHandler->endElement("style:default-style");
-+
-+ TagOpenElement defaultTableRowStyleOpenElement("style:default-style");
-+ defaultTableRowStyleOpenElement.addAttribute("style:family", "table-row");
-+ defaultTableRowStyleOpenElement.write(pHandler);
-+
-+ TagOpenElement defaultTableRowPropertiesOpenElement("style:table-row-properties");
-+ defaultTableRowPropertiesOpenElement.addAttribute("fo:keep-together", "auto");
-+ defaultTableRowPropertiesOpenElement.write(pHandler);
-+
-+ pHandler->endElement("style:table-row-properties");
-+ pHandler->endElement("style:default-style");
-
- TagOpenElement standardStyleOpenElement("style:style");
- standardStyleOpenElement.addAttribute("style:name", "Standard");
- standardStyleOpenElement.addAttribute("style:family", "paragraph");
- standardStyleOpenElement.addAttribute("style:class", "text");
- standardStyleOpenElement.write(pHandler);
-- TagCloseElement standardStyleCloseElement("style:style");
-- standardStyleCloseElement.write(pHandler);
-+
-+ pHandler->endElement("style:style");
-
- TagOpenElement textBodyStyleOpenElement("style:style");
-- textBodyStyleOpenElement.addAttribute("style:name", "Text Body");
-+ textBodyStyleOpenElement.addAttribute("style:name", "Text_Body");
-+ textBodyStyleOpenElement.addAttribute("style:display-name", "Text Body");
- textBodyStyleOpenElement.addAttribute("style:family", "paragraph");
- textBodyStyleOpenElement.addAttribute("style:parent-style-name", "Standard");
- textBodyStyleOpenElement.addAttribute("style:class", "text");
- textBodyStyleOpenElement.write(pHandler);
-- TagCloseElement textBodyStyleCloseElement("style:style");
-- textBodyStyleCloseElement.write(pHandler);
-+
-+ pHandler->endElement("style:style");
-
- TagOpenElement tableContentsStyleOpenElement("style:style");
-- tableContentsStyleOpenElement.addAttribute("style:name", "Table Contents");
-+ tableContentsStyleOpenElement.addAttribute("style:name", "Table_Contents");
-+ tableContentsStyleOpenElement.addAttribute("style:display-name", "Table Contents");
- tableContentsStyleOpenElement.addAttribute("style:family", "paragraph");
-- tableContentsStyleOpenElement.addAttribute("style:parent-style-name", "Text Body");
-+ tableContentsStyleOpenElement.addAttribute("style:parent-style-name", "Text_Body");
- tableContentsStyleOpenElement.addAttribute("style:class", "extra");
- tableContentsStyleOpenElement.write(pHandler);
-- TagCloseElement tableContentsStyleCloseElement("style:style");
-- tableContentsStyleCloseElement.write(pHandler);
-+
-+ pHandler->endElement("style:style");
-
- TagOpenElement tableHeadingStyleOpenElement("style:style");
-- tableHeadingStyleOpenElement.addAttribute("style:name", "Table Heading");
-+ tableHeadingStyleOpenElement.addAttribute("style:name", "Table_Heading");
-+ tableHeadingStyleOpenElement.addAttribute("style:display-name", "Table Heading");
- tableHeadingStyleOpenElement.addAttribute("style:family", "paragraph");
-- tableHeadingStyleOpenElement.addAttribute("style:parent-style-name", "Table Contents");
-+ tableHeadingStyleOpenElement.addAttribute("style:parent-style-name", "Table_Contents");
- tableHeadingStyleOpenElement.addAttribute("style:class", "extra");
- tableHeadingStyleOpenElement.write(pHandler);
-- TagCloseElement tableHeadingStyleCloseElement("style:style");
-- tableHeadingStyleCloseElement.write(pHandler);
-
-- TagCloseElement stylesCloseElement("office:styles");
-- stylesCloseElement.write(pHandler);
-+ pHandler->endElement("style:style");
-
-+ for (std::vector<DocumentElement *>::const_iterator iter = mFrameStyles.begin();
-+ iter != mFrameStyles.end(); iter++)
-+ (*iter)->write(pHandler);
-+
-+ pHandler->endElement("office:styles");
- }
-
--void DocumentCollector::_writeMasterPages(DocumentHandler *pHandler)
-+void DocumentCollector::_writeMasterPages(DocumentHandlerInterface *pHandler)
- {
-- WPXPropertyList xBlankAttrList;
--
-- pHandler->startElement("office:master-styles", xBlankAttrList);
-+ TagOpenElement("office:master-styles").write(mpHandler);
- int pageNumber = 1;
- for (unsigned int i=0; i<mPageSpans.size(); i++)
- {
-@@ -218,65 +256,79 @@
- pHandler->endElement("office:master-styles");
- }
-
--void DocumentCollector::_writePageMasters(DocumentHandler *pHandler)
-+void DocumentCollector::_writePageLayouts(DocumentHandlerInterface *pHandler)
- {
- for (unsigned int i=0; i<mPageSpans.size(); i++)
- {
-- mPageSpans[i]->writePageMaster(i, pHandler);
-+ mPageSpans[i]->writePageLayout(i, pHandler);
- }
- }
-
--bool DocumentCollector::_writeTargetDocument(DocumentHandler *pHandler)
-+bool DocumentCollector::_writeTargetDocument(DocumentHandlerInterface *pHandler)
- {
- WRITER_DEBUG_MSG(("WriterWordPerfect: Document Body: Printing out the header stuff..\n"));
-- WPXPropertyList xBlankAttrList;
-
- WRITER_DEBUG_MSG(("WriterWordPerfect: Document Body: Start Document\n"));
- mpHandler->startDocument();
-
- WRITER_DEBUG_MSG(("WriterWordPerfect: Document Body: preamble\n"));
- WPXPropertyList docContentPropList;
-- docContentPropList.insert("xmlns:office", "http://openoffice.org/2000/office");
-- docContentPropList.insert("xmlns:style", "http://openoffice.org/2000/style");
-- docContentPropList.insert("xmlns:text", "http://openoffice.org/2000/text");
-- docContentPropList.insert("xmlns:table", "http://openoffice.org/2000/table");
-- docContentPropList.insert("xmlns:draw", "http://openoffice.org/2000/draw");
-- docContentPropList.insert("xmlns:fo", "http://www.w3.org/1999/XSL/Format");
-+ docContentPropList.insert("xmlns:office", "urn:oasis:names:tc:opendocument:xmlns:office:1.0");
-+ docContentPropList.insert("xmlns:meta", "urn:oasis:names:tc:opendocument:xmlns:meta:1.0");
-+ docContentPropList.insert("xmlns:dc", "http://purl.org/dc/elements/1.1/");
-+ docContentPropList.insert("xmlns:config", "urn:oasis:names:tc:opendocument:xmlns:config:1.0");
-+ docContentPropList.insert("xmlns:text", "urn:oasis:names:tc:opendocument:xmlns:text:1.0");
-+ docContentPropList.insert("xmlns:table", "urn:oasis:names:tc:opendocument:xmlns:table:1.0");
-+ docContentPropList.insert("xmlns:draw", "urn:oasis:names:tc:opendocument:xmlns:drawing:1.0");
-+ docContentPropList.insert("xmlns:fo", "urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0");
- docContentPropList.insert("xmlns:xlink", "http://www.w3.org/1999/xlink");
- docContentPropList.insert("xmlns:number", "http://openoffice.org/2000/datastyle");
-- docContentPropList.insert("xmlns:svg", "http://www.w3.org/2000/svg");
-- docContentPropList.insert("xmlns:chart", "http://openoffice.org/2000/chart");
-- docContentPropList.insert("xmlns:dr3d", "http://openoffice.org/2000/dr3d");
-+ docContentPropList.insert("xmlns:svg", "urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0");
-+ docContentPropList.insert("xmlns:chart", "urn:oasis:names:tc:opendocument:xmlns:chart:1.0");
-+ docContentPropList.insert("xmlns:dr3d", "urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0");
- docContentPropList.insert("xmlns:math", "http://www.w3.org/1998/Math/MathML");
-- docContentPropList.insert("xmlns:form", "http://openoffice.org/2000/form");
-- docContentPropList.insert("xmlns:script", "http://openoffice.org/2000/script");
-- docContentPropList.insert("office:class", "text");
-+ docContentPropList.insert("xmlns:form", "urn:oasis:names:tc:opendocument:xmlns:form:1.0");
-+ docContentPropList.insert("xmlns:script", "urn:oasis:names:tc:opendocument:xmlns:script:1.0");
-+ docContentPropList.insert("xmlns:style", "urn:oasis:names:tc:opendocument:xmlns:style:1.0");
- docContentPropList.insert("office:version", "1.0");
-- mpHandler->startElement("office:document-content", docContentPropList);
-+ docContentPropList.insert("office:mimetype", "application/vnd.oasis.opendocument.text");
-+ mpHandler->startElement("office:document", docContentPropList);
-+
-+ // write out the metadata
-+ TagOpenElement("office:meta").write(mpHandler);
-+ for (std::vector<DocumentElement *>::const_iterator iterMetaData = mMetaData.begin(); iterMetaData != mMetaData.end(); iterMetaData++) {
-+ (*iterMetaData)->write(mpHandler);
-+ }
-+ mpHandler->endElement("office:meta");
-
- // write out the font styles
-- mpHandler->startElement("office:font-decls", xBlankAttrList);
-+ TagOpenElement("office:font-face-decls").write(mpHandler);
- for (std::map<WPXString, FontStyle *, ltstr>::iterator iterFont = mFontHash.begin(); iterFont != mFontHash.end(); iterFont++) {
- iterFont->second->write(mpHandler);
- }
-- TagOpenElement symbolFontOpen("style:font-decl");
-+ TagOpenElement symbolFontOpen("style:font-face");
- symbolFontOpen.addAttribute("style:name", "StarSymbol");
-- symbolFontOpen.addAttribute("fo:font-family", "StarSymbol");
-+ symbolFontOpen.addAttribute("svg:font-family", "StarSymbol");
- symbolFontOpen.addAttribute("style:font-charset", "x-symbol");
- symbolFontOpen.write(mpHandler);
-- mpHandler->endElement("style:font-decl");
--
-- mpHandler->endElement("office:font-decls");
-+ mpHandler->endElement("style:font-face");
-
-+ mpHandler->endElement("office:font-face-decls");
-
- WRITER_DEBUG_MSG(("WriterWordPerfect: Document Body: Writing out the styles..\n"));
-
- // write default styles
- _writeDefaultStyles(mpHandler);
-
-- mpHandler->startElement("office:automatic-styles", xBlankAttrList);
-+ TagOpenElement("office:automatic-styles").write(mpHandler);
-+
-+ for (std::vector<DocumentElement *>::const_iterator iterFrameAutomaticStyles = mFrameAutomaticStyles.begin();
-+ iterFrameAutomaticStyles != mFrameAutomaticStyles.end(); iterFrameAutomaticStyles++)
-+ {
-+ (*iterFrameAutomaticStyles)->write(pHandler);
-+ }
-
-- for (std::map<WPXString, ParagraphStyle *, ltstr>::iterator iterTextStyle = mTextStyleHash.begin();
-+ for (std::map<WPXString, ParagraphStyle *, ltstr>::const_iterator iterTextStyle = mTextStyleHash.begin();
- iterTextStyle != mTextStyleHash.end(); iterTextStyle++)
- {
- // writing out the paragraph styles
-@@ -288,29 +340,29 @@
- }
-
- // span styles..
-- for (std::map<WPXString, SpanStyle *, ltstr>::iterator iterSpanStyle = mSpanStyleHash.begin();
-+ for (std::map<WPXString, SpanStyle *, ltstr>::const_iterator iterSpanStyle = mSpanStyleHash.begin();
- iterSpanStyle != mSpanStyleHash.end(); iterSpanStyle++)
- {
- (iterSpanStyle->second)->write(pHandler);
- }
-
- // writing out the sections styles
-- for (std::vector<SectionStyle *>::iterator iterSectionStyles = mSectionStyles.begin(); iterSectionStyles != mSectionStyles.end(); iterSectionStyles++) {
-+ for (std::vector<SectionStyle *>::const_iterator iterSectionStyles = mSectionStyles.begin(); iterSectionStyles != mSectionStyles.end(); iterSectionStyles++) {
- (*iterSectionStyles)->write(pHandler);
- }
-
- // writing out the lists styles
-- for (std::vector<ListStyle *>::iterator iterListStyles = mListStyles.begin(); iterListStyles != mListStyles.end(); iterListStyles++) {
-+ for (std::vector<ListStyle *>::const_iterator iterListStyles = mListStyles.begin(); iterListStyles != mListStyles.end(); iterListStyles++) {
- (*iterListStyles)->write(pHandler);
- }
-
- // writing out the table styles
-- for (std::vector<TableStyle *>::iterator iterTableStyles = mTableStyles.begin(); iterTableStyles != mTableStyles.end(); iterTableStyles++) {
-+ for (std::vector<TableStyle *>::const_iterator iterTableStyles = mTableStyles.begin(); iterTableStyles != mTableStyles.end(); iterTableStyles++) {
- (*iterTableStyles)->write(pHandler);
- }
-
- // writing out the page masters
-- _writePageMasters(pHandler);
-+ _writePageLayouts(pHandler);
-
-
- pHandler->endElement("office:automatic-styles");
-@@ -319,15 +371,17 @@
-
- WRITER_DEBUG_MSG(("WriterWordPerfect: Document Body: Writing out the document..\n"));
- // writing out the document
-- pHandler->startElement("office:body", xBlankAttrList);
-+ TagOpenElement("office:body").write(mpHandler);
-+ TagOpenElement("office:text").write(mpHandler);
-
-- for (std::vector<DocumentElement *>::iterator iterBodyElements = mBodyElements.begin(); iterBodyElements != mBodyElements.end(); iterBodyElements++) {
-+ for (std::vector<DocumentElement *>::const_iterator iterBodyElements = mBodyElements.begin(); iterBodyElements != mBodyElements.end(); iterBodyElements++) {
- (*iterBodyElements)->write(pHandler);
- }
- WRITER_DEBUG_MSG(("WriterWordPerfect: Document Body: Finished writing all doc els..\n"));
-
-+ pHandler->endElement("office:text");
- pHandler->endElement("office:body");
-- pHandler->endElement("office:document-content");
-+ pHandler->endElement("office:document");
-
- pHandler->endDocument();
-
-@@ -375,11 +429,31 @@
- }
- }
-
-+void DocumentCollector::setDocumentMetaData(const WPXPropertyList &propList)
-+{
-+ WPXPropertyList::Iter i(propList);
-+ for (i.rewind(); i.next(); )
-+ {
-+ // filter out libwpd elements
-+ if (strncmp(i.key(), "libwpd", 6) != 0 && strncmp(i.key(), "dcterms", 7) != 0)
-+ {
-+ mMetaData.push_back(new TagOpenElement(i.key()));
-+ WPXString sStringValue(i()->getStr(), true);
-+ mMetaData.push_back(new CharDataElement(sStringValue.cstr()));
-+ mMetaData.push_back(new TagCloseElement(i.key()));
-+ }
-+ }
-+
-+}
-+
- void DocumentCollector::openPageSpan(const WPXPropertyList &propList)
- {
- PageSpan *pPageSpan = new PageSpan(propList);
- mPageSpans.push_back(pPageSpan);
- mpCurrentPageSpan = pPageSpan;
-+ miNumPageStyles++;
-+
-+ mWriterDocumentStates.top().mbFirstParagraphInPageSpan = true;
- }
-
- void DocumentCollector::openHeader(const WPXPropertyList &propList)
-@@ -419,16 +493,20 @@
- void DocumentCollector::openSection(const WPXPropertyList &propList, const WPXPropertyListVector &columns)
- {
- int iNumColumns = columns.count();
-- float fSectionMarginLeft = 0.0f;
-- float fSectionMarginRight = 0.0f;
-+ double fSectionMarginLeft = 0.0;
-+ double fSectionMarginRight = 0.0;
- if (propList["fo:margin-left"])
-- fSectionMarginLeft = propList["fo:margin-left"]->getFloat();
-+ fSectionMarginLeft = propList["fo:margin-left"]->getDouble();
- if (propList["fo:margin-right"])
-- fSectionMarginRight = propList["fo:margin-right"]->getFloat();
-+ fSectionMarginRight = propList["fo:margin-right"]->getDouble();
-
- if (iNumColumns > 1 || fSectionMarginLeft != 0 || fSectionMarginRight != 0)
- {
-- mfSectionSpaceAfter = propList["fo:margin-bottom"]->getFloat();
-+ if (propList["fo:margin-bottom"])
-+ mfSectionSpaceAfter = propList["fo:margin-bottom"]->getDouble();
-+ else if (propList["libwpd:margin-bottom"])
-+ mfSectionSpaceAfter = propList["libwpd:margin-bottom"]->getDouble();
-+
- WPXString sSectionName;
- sSectionName.sprintf("Section%i", mSectionStyles.size());
-
-@@ -438,29 +516,20 @@
- TagOpenElement *pSectionOpenElement = new TagOpenElement("text:section");
- pSectionOpenElement->addAttribute("text:style-name", pSectionStyle->getName());
- pSectionOpenElement->addAttribute("text:name", pSectionStyle->getName());
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pSectionOpenElement));
-+ mpCurrentContentElements->push_back(pSectionOpenElement);
- }
- else
-- mWriterDocumentState.mbInFakeSection = true;
-+ mWriterDocumentStates.top().mbInFakeSection = true;
- }
-
- void DocumentCollector::closeSection()
- {
-- if (!mWriterDocumentState.mbInFakeSection)
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:section")));
-+ if (!mWriterDocumentStates.top().mbInFakeSection)
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:section"));
- else
-- mWriterDocumentState.mbInFakeSection = false;
-+ mWriterDocumentStates.top().mbInFakeSection = false;
-
-- // open as many paragraphs as needed to simulate section space after
-- // WLACH_REFACTORING: disable this for now..
-- #if 0
-- for (float f=0.0f; f<mfSectionSpaceAfter; f+=1.0f) {
-- vector<WPXTabStop> dummyTabStops;
-- openParagraph(WPX_PARAGRAPH_JUSTIFICATION_LEFT, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, 0.0f, dummyTabStops, false, false);
-- closeParagraph();
-- }
-- #endif
-- mfSectionSpaceAfter = 0.0f;
-+ mfSectionSpaceAfter = 0.0;
- }
-
- void DocumentCollector::openParagraph(const WPXPropertyList &propList, const WPXPropertyListVector &tabStops)
-@@ -471,7 +540,7 @@
- WPXPropertyList *pPersistPropList = new WPXPropertyList(propList);
- ParagraphStyle *pStyle = NULL;
-
-- if (mWriterDocumentState.mbFirstElement && mpCurrentContentElements == &mBodyElements)
-+ if (mWriterDocumentStates.top().mbFirstElement && mpCurrentContentElements == &mBodyElements)
- {
- // we don't have to go through the fuss of determining if the paragraph style is
- // unique in this case, because if we are the first document element, then we
-@@ -483,26 +552,36 @@
- sName.sprintf("FS");
-
- WPXString sParagraphHashKey("P|FS");
-- pPersistPropList->insert("style:master-page-name", "Page Style 1");
-+ pPersistPropList->insert("style:master-page-name", "Page_Style_1");
- pStyle = new ParagraphStyle(pPersistPropList, tabStops, sName);
- mTextStyleHash[sParagraphHashKey] = pStyle;
-- mWriterDocumentState.mbFirstElement = false;
-+ mWriterDocumentStates.top().mbFirstElement = false;
-+ mWriterDocumentStates.top().mbFirstParagraphInPageSpan = false;
- }
- else
- {
-- if (mWriterDocumentState.mbTableCellOpened)
-+ if (mWriterDocumentStates.top().mbFirstParagraphInPageSpan && mpCurrentContentElements == &mBodyElements)
- {
-- if (mWriterDocumentState.mbHeaderRow)
-- pPersistPropList->insert("style:parent-style-name", "Table Heading");
-+ WPXString sPageStyleName;
-+ sPageStyleName.sprintf("Page_Style_%i", miNumPageStyles);
-+ pPersistPropList->insert("style:master-page-name", sPageStyleName);
-+ mWriterDocumentStates.top().mbFirstParagraphInPageSpan = false;
-+ }
-+
-+ if (mWriterDocumentStates.top().mbTableCellOpened)
-+ {
-+ if (mWriterDocumentStates.top().mbHeaderRow)
-+ pPersistPropList->insert("style:parent-style-name", "Table_Heading");
- else
-- pPersistPropList->insert("style:parent-style-name", "Table Contents");
-+ pPersistPropList->insert("style:parent-style-name", "Table_Contents");
- }
- else
- pPersistPropList->insert("style:parent-style-name", "Standard");
-
- WPXString sKey = getParagraphStyleKey(*pPersistPropList, tabStops);
-
-- if (mTextStyleHash.find(sKey) == mTextStyleHash.end()) {
-+ if (mTextStyleHash.find(sKey) == mTextStyleHash.end())
-+ {
- WPXString sName;
- sName.sprintf("S%i", mTextStyleHash.size());
-
-@@ -519,12 +598,12 @@
- // create a document element corresponding to the paragraph, and append it to our list of document elements
- TagOpenElement *pParagraphOpenElement = new TagOpenElement("text:p");
- pParagraphOpenElement->addAttribute("text:style-name", pStyle->getName());
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pParagraphOpenElement));
-+ mpCurrentContentElements->push_back(pParagraphOpenElement);
- }
-
- void DocumentCollector::closeParagraph()
- {
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:p")));
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:p"));
- }
-
- void DocumentCollector::openSpan(const WPXPropertyList &propList)
-@@ -552,12 +631,12 @@
- // create a document element corresponding to the paragraph, and append it to our list of document elements
- TagOpenElement *pSpanOpenElement = new TagOpenElement("text:span");
- pSpanOpenElement->addAttribute("text:style-name", sName.cstr());
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pSpanOpenElement));
-+ mpCurrentContentElements->push_back(pSpanOpenElement);
- }
-
- void DocumentCollector::closeSpan()
- {
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:span")));
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:span"));
- }
-
- void DocumentCollector::defineOrderedListLevel(const WPXPropertyList &propList)
-@@ -567,8 +646,8 @@
- id = propList["libwpd:id"]->getInt();
-
- OrderedListStyle *pOrderedListStyle = NULL;
-- if (mpCurrentListStyle && mpCurrentListStyle->getListID() == id)
-- pOrderedListStyle = static_cast<OrderedListStyle *>(mpCurrentListStyle); // FIXME: using a dynamic cast here causes oo to crash?!
-+ if (mWriterListStates.top().mpCurrentListStyle && mWriterListStates.top().mpCurrentListStyle->getListID() == id)
-+ pOrderedListStyle = static_cast<OrderedListStyle *>(mWriterListStates.top().mpCurrentListStyle); // FIXME: using a dynamic cast here causes oo to crash?!
-
- // this rather appalling conditional makes sure we only start a new list (rather than continue an old
- // one) if: (1) we have no prior list OR (2) the prior list is actually definitively different
-@@ -576,27 +655,27 @@
- // is starting a new list at level 1 (and only level 1)
- if (pOrderedListStyle == NULL || pOrderedListStyle->getListID() != id ||
- (propList["libwpd:level"] && propList["libwpd:level"]->getInt()==1 &&
-- (propList["text:start-value"] && (unsigned int)(propList["text:start-value"]->getInt()) != (miLastListNumber+1))))
-+ (propList["text:start-value"] && propList["text:start-value"]->getInt() != (mWriterListStates.top().miLastListNumber+1))))
- {
- WRITER_DEBUG_MSG(("Attempting to create a new ordered list style (listid: %i)\n", id));
- WPXString sName;
- sName.sprintf("OL%i", miNumListStyles);
- miNumListStyles++;
-- pOrderedListStyle = new OrderedListStyle(sName.cstr(), propList["libwpd:id"]->getInt());
-- mListStyles.push_back(static_cast<ListStyle *>(pOrderedListStyle));
-- mpCurrentListStyle = static_cast<ListStyle *>(pOrderedListStyle);
-- mbListContinueNumbering = false;
-- miLastListNumber = 0;
-+ pOrderedListStyle = new OrderedListStyle(sName.cstr(), id);
-+ mListStyles.push_back(pOrderedListStyle);
-+ mWriterListStates.top().mpCurrentListStyle = pOrderedListStyle;
-+ mWriterListStates.top().mbListContinueNumbering = false;
-+ mWriterListStates.top().miLastListNumber = 0;
- }
- else
-- mbListContinueNumbering = true;
-+ mWriterListStates.top().mbListContinueNumbering = true;
-
- // Iterate through ALL list styles with the same WordPerfect list id and define a level if it is not already defined
- // This solves certain problems with lists that start and finish without reaching certain levels and then begin again
- // and reach those levels. See gradguide0405_PC.wpd in the regression suite
- for (std::vector<ListStyle *>::iterator iterOrderedListStyles = mListStyles.begin(); iterOrderedListStyles != mListStyles.end(); iterOrderedListStyles++)
- {
-- if ((* iterOrderedListStyles)->getListID() == propList["libwpd:id"]->getInt())
-+ if ((* iterOrderedListStyles)->getListID() == id)
- (* iterOrderedListStyles)->updateListLevel((propList["libwpd:level"]->getInt() - 1), propList);
- }
- }
-@@ -608,106 +687,114 @@
- id = propList["libwpd:id"]->getInt();
-
- UnorderedListStyle *pUnorderedListStyle = NULL;
-- if (mpCurrentListStyle && mpCurrentListStyle->getListID() == id)
-- pUnorderedListStyle = static_cast<UnorderedListStyle *>(mpCurrentListStyle); // FIXME: using a dynamic cast here causes oo to crash?!
-+ if (mWriterListStates.top().mpCurrentListStyle && mWriterListStates.top().mpCurrentListStyle->getListID() == id)
-+ pUnorderedListStyle = static_cast<UnorderedListStyle *>(mWriterListStates.top().mpCurrentListStyle); // FIXME: using a dynamic cast here causes oo to crash?!
-
- if (pUnorderedListStyle == NULL) {
- WRITER_DEBUG_MSG(("Attempting to create a new unordered list style (listid: %i)\n", id));
- WPXString sName;
- sName.sprintf("UL%i", miNumListStyles);
-+ miNumListStyles++;
- pUnorderedListStyle = new UnorderedListStyle(sName.cstr(), id);
-- mListStyles.push_back(static_cast<ListStyle *>(pUnorderedListStyle));
-- mpCurrentListStyle = static_cast<ListStyle *>(pUnorderedListStyle);
-+ mListStyles.push_back(pUnorderedListStyle);
-+ mWriterListStates.top().mpCurrentListStyle = pUnorderedListStyle;
- }
-
- // See comment in DocumentCollector::defineOrderedListLevel
- for (std::vector<ListStyle *>::iterator iterUnorderedListStyles = mListStyles.begin(); iterUnorderedListStyles != mListStyles.end(); iterUnorderedListStyles++)
- {
-- if ((* iterUnorderedListStyles)->getListID() == propList["libwpd:id"]->getInt())
-+ if ((* iterUnorderedListStyles)->getListID() == id)
- (* iterUnorderedListStyles)->updateListLevel((propList["libwpd:level"]->getInt() - 1), propList);
- }
- }
-
- void DocumentCollector::openOrderedListLevel(const WPXPropertyList & /* propList */)
- {
-- miCurrentListLevel++;
-- TagOpenElement *pListLevelOpenElement = new TagOpenElement("text:ordered-list");
-+ if (mWriterListStates.top().mbListElementParagraphOpened)
-+ {
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:p"));
-+ mWriterListStates.top().mbListElementParagraphOpened = false;
-+ }
-+ TagOpenElement *pListLevelOpenElement = new TagOpenElement("text:list");
- _openListLevel(pListLevelOpenElement);
-
-- if (mbListContinueNumbering) {
-+ if (mWriterListStates.top().mbListContinueNumbering) {
- pListLevelOpenElement->addAttribute("text:continue-numbering", "true");
- }
-
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pListLevelOpenElement));
-+ mpCurrentContentElements->push_back(pListLevelOpenElement);
- }
-
- void DocumentCollector::openUnorderedListLevel(const WPXPropertyList & /* propList */)
- {
-- miCurrentListLevel++;
-- TagOpenElement *pListLevelOpenElement = new TagOpenElement("text:unordered-list");
-+ if (mWriterListStates.top().mbListElementParagraphOpened)
-+ {
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:p"));
-+ mWriterListStates.top().mbListElementParagraphOpened = false;
-+ }
-+ TagOpenElement *pListLevelOpenElement = new TagOpenElement("text:list");
- _openListLevel(pListLevelOpenElement);
-
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pListLevelOpenElement));
-+ mpCurrentContentElements->push_back(pListLevelOpenElement);
- }
-
- void DocumentCollector::_openListLevel(TagOpenElement *pListLevelOpenElement)
- {
-- if (!mbListElementOpened && miCurrentListLevel > 1)
-- {
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("text:list-item")));
-- }
-- else if (mbListElementParagraphOpened)
-+ if (!mWriterListStates.top().mbListElementOpened.empty() &&
-+ !mWriterListStates.top().mbListElementOpened.top())
- {
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:p")));
-- mbListElementParagraphOpened = false;
-+ mpCurrentContentElements->push_back(new TagOpenElement("text:list-item"));
-+ mWriterListStates.top().mbListElementOpened.top() = true;
- }
-
-- if (miCurrentListLevel==1) {
-- pListLevelOpenElement->addAttribute("text:style-name", mpCurrentListStyle->getName());
-+ mWriterListStates.top().mbListElementOpened.push(false);
-+ if (mWriterListStates.top().mbListElementOpened.size() == 1) {
-+ pListLevelOpenElement->addAttribute("text:style-name", mWriterListStates.top().mpCurrentListStyle->getName());
- }
--
-- mbListElementOpened = false;
- }
-
- void DocumentCollector::closeOrderedListLevel()
- {
-- _closeListLevel("ordered-list");
-+ _closeListLevel();
- }
-
- void DocumentCollector::closeUnorderedListLevel()
- {
-- _closeListLevel("unordered-list");
-+ _closeListLevel();
- }
-
--void DocumentCollector::_closeListLevel(const char *szListType)
-+void DocumentCollector::_closeListLevel()
- {
-- if (mbListElementOpened)
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:list-item")));
--
-- miCurrentListLevel--;
-+ if (mWriterListStates.top().mbListElementOpened.top())
-+ {
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:list-item"));
-+ mWriterListStates.top().mbListElementOpened.top() = false;
-+ }
-
-- WPXString sCloseElement;
-- sCloseElement.sprintf("text:%s", szListType);
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement(sCloseElement.cstr())));
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:list"));
-
-- if (miCurrentListLevel > 0)
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:list-item")));
-- mbListElementOpened = false;
-+ if (!mWriterListStates.top().mbListElementOpened.empty())
-+ {
-+ mWriterListStates.top().mbListElementOpened.pop();
-+ }
- }
-
- void DocumentCollector::openListElement(const WPXPropertyList &propList, const WPXPropertyListVector &tabStops)
- {
-- miLastListLevel = miCurrentListLevel;
-- if (miCurrentListLevel == 1)
-- miLastListNumber++;
-+ mWriterListStates.top().miLastListLevel = mWriterListStates.top().miCurrentListLevel;
-+ if (mWriterListStates.top().miCurrentListLevel == 1)
-+ mWriterListStates.top().miLastListNumber++;
-
-- if (mbListElementOpened)
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:list-item")));
-+ if (mWriterListStates.top().mbListElementOpened.top())
-+ {
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:list-item"));
-+ mWriterListStates.top().mbListElementOpened.top() = false;
-+ }
-
- ParagraphStyle *pStyle = NULL;
-
- WPXPropertyList *pPersistPropList = new WPXPropertyList(propList);
-- pPersistPropList->insert("style:list-style-name", mpCurrentListStyle->getName());
-+ pPersistPropList->insert("style:list-style-name", mWriterListStates.top().mpCurrentListStyle->getName());
- pPersistPropList->insert("style:parent-style-name", "Standard");
-
- WPXString sKey = getParagraphStyleKey(*pPersistPropList, tabStops);
-@@ -727,17 +814,18 @@
- delete pPersistPropList;
- }
-
-- TagOpenElement *pOpenListElement = new TagOpenElement("text:list-item");
-- TagOpenElement *pOpenListElementParagraph = new TagOpenElement("text:p");
-+ mpCurrentContentElements->push_back(new TagOpenElement("text:list-item"));
-
-+ TagOpenElement *pOpenListElementParagraph = new TagOpenElement("text:p");
- pOpenListElementParagraph->addAttribute("text:style-name", pStyle->getName());
-+ mpCurrentContentElements->push_back(pOpenListElementParagraph);
-
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pOpenListElement));
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pOpenListElementParagraph));
-+ if (mpCurrentContentElements == &mBodyElements)
-+ mWriterDocumentStates.top().mbFirstParagraphInPageSpan = false;
-
-- mbListElementOpened = true;
-- mbListElementParagraphOpened = true;
-- mbListContinueNumbering = false;
-+ mWriterListStates.top().mbListElementOpened.top() = true;
-+ mWriterListStates.top().mbListElementParagraphOpened = true;
-+ mWriterListStates.top().mbListContinueNumbering = false;
- }
-
- void DocumentCollector::closeListElement()
-@@ -746,69 +834,100 @@
- // could contain another list level in OOo's implementation of lists). that is done in the closeListLevel
- // code (or when we open another list element)
-
-- if (mbListElementParagraphOpened)
-+ if (mWriterListStates.top().mbListElementParagraphOpened)
- {
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:p")));
-- mbListElementParagraphOpened = false;
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:p"));
-+ mWriterListStates.top().mbListElementParagraphOpened = false;
- }
- }
-
- void DocumentCollector::openFootnote(const WPXPropertyList &propList)
- {
-- TagOpenElement *pOpenFootNote = new TagOpenElement("text:footnote");
-+ mWriterListStates.push(WriterListState());
-+ TagOpenElement *pOpenFootNote = new TagOpenElement("text:note");
-+ pOpenFootNote->addAttribute("text:note-class", "footnote");
- if (propList["libwpd:number"])
- {
- WPXString tmpString("ftn");
- tmpString.append(propList["libwpd:number"]->getStr());
- pOpenFootNote->addAttribute("text:id", tmpString);
- }
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pOpenFootNote));
-+ mpCurrentContentElements->push_back(pOpenFootNote);
-
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("text:footnote-citation")));
-+ mpCurrentContentElements->push_back(new TagOpenElement("text:note-citation"));
- if (propList["libwpd:number"])
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new CharDataElement(propList["libwpd:number"]->getStr().cstr())));
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:footnote-citation")));
-+ mpCurrentContentElements->push_back(new CharDataElement(propList["libwpd:number"]->getStr().cstr()));
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:note-citation"));
-
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("text:footnote-body")));
-+ mpCurrentContentElements->push_back(new TagOpenElement("text:note-body"));
-
-- mWriterDocumentState.mbInNote = true;
-+ mWriterDocumentStates.top().mbInNote = true;
- }
-
- void DocumentCollector::closeFootnote()
- {
-- mWriterDocumentState.mbInNote = false;
-+ mWriterDocumentStates.top().mbInNote = false;
-+ if (mWriterListStates.size() > 1)
-+ mWriterListStates.pop();
-
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:footnote-body")));
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:footnote")));
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:note-body"));
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:note"));
- }
-
- void DocumentCollector::openEndnote(const WPXPropertyList &propList)
- {
-- TagOpenElement *pOpenEndNote = new TagOpenElement("text:endnote");
-+ mWriterListStates.push(WriterListState());
-+ TagOpenElement *pOpenEndNote = new TagOpenElement("text:note");
-+ pOpenEndNote->addAttribute("text:note-class", "endnote");
- if (propList["libwpd:number"])
- {
- WPXString tmpString("edn");
- tmpString.append(propList["libwpd:number"]->getStr());
- pOpenEndNote->addAttribute("text:id", tmpString);
- }
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pOpenEndNote));
-+ mpCurrentContentElements->push_back(pOpenEndNote);
-
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("text:endnote-citation")));
-+ mpCurrentContentElements->push_back(new TagOpenElement("text:note-citation"));
- if (propList["libwpd:number"])
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new CharDataElement(propList["libwpd:number"]->getStr().cstr())));
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:endnote-citation")));
-+ mpCurrentContentElements->push_back(new CharDataElement(propList["libwpd:number"]->getStr().cstr()));
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:note-citation"));
-
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("text:endnote-body")));
-+ mpCurrentContentElements->push_back(new TagOpenElement("text:note-body"));
-
-+ mWriterDocumentStates.top().mbInNote = true;
- }
-+
- void DocumentCollector::closeEndnote()
- {
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:endnote-body")));
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:endnote")));
-+ mWriterDocumentStates.top().mbInNote = false;
-+ if (mWriterListStates.size() > 1)
-+ mWriterListStates.pop();
-+
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:note-body"));
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:note"));
-+}
-+
-+void DocumentCollector::openComment(const WPXPropertyList & /*propList*/)
-+{
-+ mWriterListStates.push(WriterListState());
-+ mpCurrentContentElements->push_back(new TagOpenElement("office:annotation"));
-+
-+ mWriterDocumentStates.top().mbInNote = true;
-+}
-+
-+void DocumentCollector::closeComment()
-+{
-+ mWriterDocumentStates.top().mbInNote = false;
-+ if (mWriterListStates.size() > 1)
-+ mWriterListStates.pop();
-+
-+ mpCurrentContentElements->push_back(new TagCloseElement("office:annotation"));
- }
-
- void DocumentCollector::openTable(const WPXPropertyList &propList, const WPXPropertyListVector &columns)
- {
-+ if (!mWriterDocumentStates.top().mbInNote)
-+ {
- WPXString sTableName;
- sTableName.sprintf("Table%i", mTableStyles.size());
-
-@@ -817,11 +936,11 @@
- // WLACH_REFACTORING: characterize this behaviour, probably should nip it at the bud within libwpd
- TableStyle *pTableStyle = new TableStyle(propList, columns, sTableName.cstr());
-
-- if (mWriterDocumentState.mbFirstElement && mpCurrentContentElements == &mBodyElements)
-+ if (mWriterDocumentStates.top().mbFirstElement && mpCurrentContentElements == &mBodyElements)
- {
-- WPXString sMasterPageName("Page Style 1");
-+ WPXString sMasterPageName("Page_Style_1");
- pTableStyle->setMasterPageName(sMasterPageName);
-- mWriterDocumentState.mbFirstElement = false;
-+ mWriterDocumentStates.top().mbFirstElement = false;
- }
-
- mTableStyles.push_back(pTableStyle);
-@@ -832,7 +951,7 @@
-
- pTableOpenElement->addAttribute("table:name", sTableName.cstr());
- pTableOpenElement->addAttribute("table:style-name", sTableName.cstr());
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pTableOpenElement));
-+ mpCurrentContentElements->push_back(pTableOpenElement);
-
- for (int i=0; i<pTableStyle->getNumColumns(); i++)
- {
-@@ -846,13 +965,16 @@
- mpCurrentContentElements->push_back(pTableColumnCloseElement);
- }
- }
-+}
-
- void DocumentCollector::openTableRow(const WPXPropertyList &propList)
- {
-+ if (!mWriterDocumentStates.top().mbInNote)
-+ {
- if (propList["libwpd:is-header-row"] && (propList["libwpd:is-header-row"]->getInt()))
- {
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("table:table-header-rows")));
-- mWriterDocumentState.mbHeaderRow = true;
-+ mpCurrentContentElements->push_back(new TagOpenElement("table:table-header-rows"));
-+ mWriterDocumentStates.top().mbHeaderRow = true;
- }
-
- WPXString sTableRowStyleName;
-@@ -862,21 +984,27 @@
-
- TagOpenElement *pTableRowOpenElement = new TagOpenElement("table:table-row");
- pTableRowOpenElement->addAttribute("table:style-name", sTableRowStyleName);
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pTableRowOpenElement));
-+ mpCurrentContentElements->push_back(pTableRowOpenElement);
-+ }
- }
-
- void DocumentCollector::closeTableRow()
- {
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("table:table-row")));
-- if (mWriterDocumentState.mbHeaderRow)
-+ if (!mWriterDocumentStates.top().mbInNote)
- {
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("table:table-header-rows")));
-- mWriterDocumentState.mbHeaderRow = false;
-+ mpCurrentContentElements->push_back(new TagCloseElement("table:table-row"));
-+ if (mWriterDocumentStates.top().mbHeaderRow)
-+ {
-+ mpCurrentContentElements->push_back(new TagCloseElement("table:table-header-rows"));
-+ mWriterDocumentStates.top().mbHeaderRow = false;
-+ }
- }
- }
-
- void DocumentCollector::openTableCell(const WPXPropertyList &propList)
- {
-+ if (!mWriterDocumentStates.top().mbInNote)
-+ {
- WPXString sTableCellStyleName;
- sTableCellStyleName.sprintf( "%s.Cell%i", mpCurrentTableStyle->getName().cstr(), mpCurrentTableStyle->getNumTableCellStyles());
- TableCellStyle *pTableCellStyle = new TableCellStyle(propList, sTableCellStyleName.cstr());
-@@ -890,39 +1018,72 @@
- if (propList["table:number-rows-spanned"])
- pTableCellOpenElement->addAttribute("table:number-rows-spanned",
- propList["table:number-rows-spanned"]->getStr().cstr());
-- pTableCellOpenElement->addAttribute("table:value-type", "string");
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(pTableCellOpenElement));
-+ // pTableCellOpenElement->addAttribute("table:value-type", "string");
-+ mpCurrentContentElements->push_back(pTableCellOpenElement);
-
-- mWriterDocumentState.mbTableCellOpened = true;
-+ mWriterDocumentStates.top().mbTableCellOpened = true;
-+ }
- }
-
- void DocumentCollector::closeTableCell()
- {
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("table:table-cell")));
-- mWriterDocumentState.mbTableCellOpened = false;
-+ if (!mWriterDocumentStates.top().mbInNote)
-+ {
-+ mpCurrentContentElements->push_back(new TagCloseElement("table:table-cell"));
-+ mWriterDocumentStates.top().mbTableCellOpened = false;
-+ }
- }
-
- void DocumentCollector::insertCoveredTableCell(const WPXPropertyList & /* propList */)
- {
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("table:covered-table-cell")));
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("table:covered-table-cell")));
-+ if (!mWriterDocumentStates.top().mbInNote)
-+ {
-+ mpCurrentContentElements->push_back(new TagOpenElement("table:covered-table-cell"));
-+ mpCurrentContentElements->push_back(new TagCloseElement("table:covered-table-cell"));
-+ }
- }
-
- void DocumentCollector::closeTable()
- {
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("table:table")));
-+ if (!mWriterDocumentStates.top().mbInNote)
-+ {
-+ mpCurrentContentElements->push_back(new TagCloseElement("table:table"));
-+ }
- }
-+
-
- void DocumentCollector::insertTab()
- {
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("text:tab-stop")));
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:tab-stop")));
-+ mpCurrentContentElements->push_back(new TagOpenElement("text:tab"));
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:tab"));
-+}
-+
-+void DocumentCollector::insertSpace()
-+{
-+ mpCurrentContentElements->push_back(new TagOpenElement("text:s"));
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:s"));
- }
-
- void DocumentCollector::insertLineBreak()
- {
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagOpenElement("text:line-break")));
-- mpCurrentContentElements->push_back(static_cast<DocumentElement *>(new TagCloseElement("text:line-break")));
-+ mpCurrentContentElements->push_back(new TagOpenElement("text:line-break"));
-+ mpCurrentContentElements->push_back(new TagCloseElement("text:line-break"));
-+}
-+
-+void DocumentCollector::insertField(const WPXString &type, const WPXPropertyList &propList)
-+{
-+ if (!type.len())
-+ return;
-+
-+ TagOpenElement *openElement = new TagOpenElement(type.cstr());
-+ if (type == "text:page-number")
-+ openElement->addAttribute("text:select-page", "current");
-+
-+ if (propList["style:num-format"])
-+ openElement->addAttribute("style:num-format", propList["style:num-format"]->getStr());
-+
-+ mpCurrentContentElements->push_back(openElement);
-+ mpCurrentContentElements->push_back(new TagCloseElement(type.cstr()));
- }
-
- void DocumentCollector::insertText(const WPXString &text)
-@@ -931,4 +1092,221 @@
- mpCurrentContentElements->push_back(pText);
- }
-
-+void DocumentCollector::openFrame(const WPXPropertyList &propList)
-+{
-+ mWriterListStates.push(WriterListState());
-+
-+ // First, let's create a Frame Style for this box
-+ TagOpenElement *frameStyleOpenElement = new TagOpenElement("style:style");
-+ WPXString frameStyleName;
-+ frameStyleName.sprintf("GraphicFrame_%i", miObjectNumber);
-+ frameStyleOpenElement->addAttribute("style:name", frameStyleName);
-+ frameStyleOpenElement->addAttribute("style:family", "graphic");
-+
-+ mFrameStyles.push_back(frameStyleOpenElement);
-+
-+ TagOpenElement *frameStylePropertiesOpenElement = new TagOpenElement("style:graphic-properties");
-+
-+ if (propList["text:anchor-type"])
-+ frameStylePropertiesOpenElement->addAttribute("text:anchor-type", propList["text:anchor-type"]->getStr());
-+ else
-+ frameStylePropertiesOpenElement->addAttribute("text:anchor-type","paragraph");
-+
-+ if (propList["text:anchor-page-number"])
-+ frameStylePropertiesOpenElement->addAttribute("text:anchor-page-number", propList["text:anchor-page-number"]->getStr());
-+
-+ if (propList["svg:x"])
-+ frameStylePropertiesOpenElement->addAttribute("svg:x", propList["svg:x"]->getStr());
-+
-+ if (propList["svg:y"])
-+ frameStylePropertiesOpenElement->addAttribute("svg:y", propList["svg:y"]->getStr());
-+
-+ if (propList["svg:width"])
-+ frameStylePropertiesOpenElement->addAttribute("svg:width", propList["svg:width"]->getStr());
-+
-+ if (propList["svg:height"])
-+ frameStylePropertiesOpenElement->addAttribute("svg:height", propList["svg:height"]->getStr());
-+
-+ if (propList["style:rel-width"])
-+ frameStylePropertiesOpenElement->addAttribute("style:rel-width", propList["style:rel-width"]->getStr());
-+
-+ if (propList["style:rel-height"])
-+ frameStylePropertiesOpenElement->addAttribute("style:rel-height", propList["style:rel-height"]->getStr());
-+
-+ if (propList["fo:max-width"])
-+ frameStylePropertiesOpenElement->addAttribute("fo:max-width", propList["fo:max-width"]->getStr());
-+
-+ if (propList["fo:max-height"])
-+ frameStylePropertiesOpenElement->addAttribute("fo:max-height", propList["fo:max-height"]->getStr());
-+
-+ if (propList["style:wrap"])
-+ frameStylePropertiesOpenElement->addAttribute("style:wrap", propList["style:wrap"]->getStr());
-+
-+ mFrameStyles.push_back(frameStylePropertiesOpenElement);
-+
-+ mFrameStyles.push_back(new TagCloseElement("style:graphic-properties"));
-+
-+ mFrameStyles.push_back(new TagCloseElement("style:style"));
-+
-+ // Now, let's create an automatic style for this frame
-+ TagOpenElement *frameAutomaticStyleElement = new TagOpenElement("style:style");
-+ WPXString frameAutomaticStyleName;
-+ frameAutomaticStyleName.sprintf("fr%i", miObjectNumber);
-+ frameAutomaticStyleElement->addAttribute("style:name", frameAutomaticStyleName);
-+ frameAutomaticStyleElement->addAttribute("style:family", "graphic");
-+ frameAutomaticStyleElement->addAttribute("style:parent-style-name", frameStyleName);
-+
-+ mFrameAutomaticStyles.push_back(frameAutomaticStyleElement);
-+
-+ TagOpenElement *frameAutomaticStylePropertiesElement = new TagOpenElement("style:graphic-properties");
-+ if (propList["style:horizontal-pos"])
-+ frameAutomaticStylePropertiesElement->addAttribute("style:horizontal-pos", propList["style:horizontal-pos"]->getStr());
-+ else
-+ frameAutomaticStylePropertiesElement->addAttribute("style:horizontal-pos", "left");
-+
-+ if (propList["style:horizontal-rel"])
-+ frameAutomaticStylePropertiesElement->addAttribute("style:horizontal-rel", propList["style:horizontal-rel"]->getStr());
-+ else
-+ frameAutomaticStylePropertiesElement->addAttribute("style:horizontal-rel", "paragraph");
-+
-+ if (propList["style:vertical-pos"])
-+ frameAutomaticStylePropertiesElement->addAttribute("style:vertical-pos", propList["style:vertical-pos"]->getStr());
-+ else
-+ frameAutomaticStylePropertiesElement->addAttribute("style:vertical-pos", "top");
-+
-+ if (propList["style:vertical-rel"])
-+ frameAutomaticStylePropertiesElement->addAttribute("style:vertical-rel", propList["style:vertical-rel"]->getStr());
-+ else
-+ frameAutomaticStylePropertiesElement->addAttribute("style:vertical-rel", "page-content");
-+
-+ if (propList["fo:max-width"])
-+ frameAutomaticStylePropertiesElement->addAttribute("fo:max-width", propList["fo:max-width"]->getStr());
-+
-+ if (propList["fo:max-height"])
-+ frameAutomaticStylePropertiesElement->addAttribute("fo:max-height", propList["fo:max-height"]->getStr());
-+
-+ frameAutomaticStylePropertiesElement->addAttribute("draw:ole-draw-aspect", "1");
-+
-+ mFrameAutomaticStyles.push_back(frameAutomaticStylePropertiesElement);
-+
-+ mFrameAutomaticStyles.push_back(new TagCloseElement("style:graphic-properties"));
-+
-+ mFrameAutomaticStyles.push_back(new TagCloseElement("style:style"));
-+
-+ // And write the frame itself
-+ TagOpenElement *drawFrameOpenElement = new TagOpenElement("draw:frame");
-+
-+ drawFrameOpenElement->addAttribute("draw:style-name", frameAutomaticStyleName);
-+ WPXString objectName;
-+ objectName.sprintf("Object%i", miObjectNumber++);
-+ drawFrameOpenElement->addAttribute("draw:name", objectName);
-+ if (propList["text:anchor-type"])
-+ drawFrameOpenElement->addAttribute("text:anchor-type", propList["text:anchor-type"]->getStr());
-+ else
-+ drawFrameOpenElement->addAttribute("text:anchor-type","paragraph");
-+
-+ if (propList["text:anchor-page-number"])
-+ drawFrameOpenElement->addAttribute("text:anchor-page-number", propList["text:anchor-page-number"]->getStr());
-+
-+ if (propList["svg:x"])
-+ drawFrameOpenElement->addAttribute("svg:x", propList["svg:x"]->getStr());
-+
-+ if (propList["svg:y"])
-+ drawFrameOpenElement->addAttribute("svg:y", propList["svg:y"]->getStr());
-+
-+ if (propList["svg:width"])
-+ drawFrameOpenElement->addAttribute("svg:width", propList["svg:width"]->getStr());
-+
-+ if (propList["svg:height"])
-+ drawFrameOpenElement->addAttribute("svg:height", propList["svg:height"]->getStr());
-+
-+ if (propList["style:rel-width"])
-+ drawFrameOpenElement->addAttribute("style:rel-width", propList["style:rel-width"]->getStr());
-+
-+ if (propList["style:rel-height"])
-+ drawFrameOpenElement->addAttribute("style:rel-height", propList["style:rel-height"]->getStr());
-+
-+ mpCurrentContentElements->push_back(drawFrameOpenElement);
-+
-+ mWriterDocumentStates.top().mbInFrame = true;
-+}
-+
-+void DocumentCollector::closeFrame()
-+{
-+ if (mWriterListStates.size() > 1)
-+ mWriterListStates.pop();
-+
-+ mpCurrentContentElements->push_back(new TagCloseElement("draw:frame"));
-+
-+ mWriterDocumentStates.top().mbInFrame = false;
-+}
-+
-+void DocumentCollector::insertBinaryObject(const WPXPropertyList &propList, const WPXBinaryData &data)
-+{
-+ if (!data.size())
-+ return;
-+ if (!mWriterDocumentStates.top().mbInFrame) // Embedded objects without a frame simply don't make sense for us
-+ return;
-+ if (!propList["libwpd:mimetype"])
-+ return;
-+
-+ if (propList["libwpd:mimetype"]->getStr() == "image/x-wpg")
-+ {
-+ std::vector<DocumentElement *> tmpContentElements;
-+ InternalHandler tmpHandler(&tmpContentElements);
-+ OdgExporter exporter(&tmpHandler);
-+
-+ libwpg::WPGFileFormat fileFormat = libwpg::WPG_AUTODETECT;
-+
-+ if (!libwpg::WPGraphics::isSupported(const_cast<WPXInputStream *>(data.getDataStream())))
-+ fileFormat = libwpg::WPG_WPG1;
-+
-+ if (libwpg::WPGraphics::parse(const_cast<WPXInputStream *>(data.getDataStream()), &exporter, fileFormat) && !tmpContentElements.empty())
-+ {
-+ mpCurrentContentElements->push_back(new TagOpenElement("draw:object"));
-+ for (std::vector<DocumentElement *>::const_iterator iter = tmpContentElements.begin(); iter != tmpContentElements.end(); iter++)
-+ mpCurrentContentElements->push_back(*iter);
-+ mpCurrentContentElements->push_back(new TagCloseElement("draw:object"));
-+ }
-+ }
-+ else
-+ {
-+ mpCurrentContentElements->push_back(new TagOpenElement("draw:image"));
-+
-+ mpCurrentContentElements->push_back(new TagOpenElement("office:binary-data"));
-+
-+ WPXString binaryBase64Data = data.getBase64Data();
-+
-+ mpCurrentContentElements->push_back(new CharDataElement(binaryBase64Data.cstr()));
-+
-+ mpCurrentContentElements->push_back(new TagCloseElement("office:binary-data"));
-+
-+ mpCurrentContentElements->push_back(new TagCloseElement("draw:image"));
-+ }
-+}
-+
-+void DocumentCollector::openTextBox(const WPXPropertyList & /*propList*/)
-+{
-+ if (!mWriterDocumentStates.top().mbInFrame) // Text box without a frame simply doesn't make sense for us
-+ return;
-+ mWriterListStates.push(WriterListState());
-+ mWriterDocumentStates.push(WriterDocumentState());
-+ mpCurrentContentElements->push_back(new TagOpenElement("draw:text-box"));
-+ mWriterDocumentStates.top().mbInTextBox = true;
-+ mWriterDocumentStates.top().mbFirstElement = false;
-+}
-+
-+void DocumentCollector::closeTextBox()
-+{
-+ if (!mWriterDocumentStates.top().mbInTextBox)
-+ return;
-+ if (mWriterListStates.size() > 1)
-+ mWriterListStates.pop();
-+ if (mWriterDocumentStates.size() > 1)
-+ mWriterDocumentStates.pop();
-+
-+ mpCurrentContentElements->push_back(new TagCloseElement("draw:text-box"));
-+}
-+
-+
- /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
---- writerperfect/source/filter/DocumentCollector.hxx 2010-11-04 13:37:48.000000000 +0100
-+++ writerperfect/source/filter/DocumentCollector.hxx 2010-11-06 23:09:43.000000000 +0100
-@@ -46,8 +46,9 @@
- #include <stack>
- #include <string.h>
-
-+#include "DocumentHandlerInterface.hxx"
-+
- class DocumentElement;
--class DocumentHandler;
- class TagOpenElement;
- class FontStyle;
- class ListStyle;
-@@ -64,11 +65,29 @@
- _WriterDocumentState();
-
- bool mbFirstElement;
-+ bool mbFirstParagraphInPageSpan;
- bool mbInFakeSection;
- bool mbListElementOpenedAtCurrentLevel;
- bool mbTableCellOpened;
- bool mbHeaderRow;
- bool mbInNote;
-+ bool mbInTextBox;
-+ bool mbInFrame;
-+};
-+
-+// list state
-+typedef struct _WriterListState WriterListState;
-+struct _WriterListState
-+{
-+ _WriterListState();
-+
-+ ListStyle *mpCurrentListStyle;
-+ unsigned int miCurrentListLevel;
-+ unsigned int miLastListLevel;
-+ unsigned int miLastListNumber;
-+ bool mbListContinueNumbering;
-+ bool mbListElementParagraphOpened;
-+ std::stack<bool> mbListElementOpened;
- };
-
- enum WriterListType { unordered, ordered };
-@@ -81,20 +100,23 @@
- }
- };
-
--class DocumentCollector : public WPXHLListenerImpl
-+class DocumentCollector : public WPXDocumentInterface
- {
- public:
-- DocumentCollector(WPSInputStream *pInput, DocumentHandler *pHandler);
-+ DocumentCollector(WPXInputStream *pInput, DocumentHandlerInterface *pHandler);
- virtual ~DocumentCollector();
- bool filter();
-
-- virtual void setDocumentMetaData(const WPXPropertyList & /* propList */) {}
-+ // WPXDocumentInterface's callbacks
-+ virtual void setDocumentMetaData(const WPXPropertyList &propList);
- virtual void startDocument() {}
- virtual void endDocument() {}
-
-+ virtual void definePageStyle(const WPXPropertyList&) {}
- virtual void openPageSpan(const WPXPropertyList &propList);
- virtual void closePageSpan() {}
-
-+ virtual void defineSectionStyle(const WPXPropertyList&, const WPXPropertyListVector&) {}
- virtual void openSection(const WPXPropertyList &propList, const WPXPropertyListVector &columns);
- virtual void closeSection();
-
-@@ -103,9 +125,11 @@
- virtual void openFooter(const WPXPropertyList &propList);
- virtual void closeFooter();
-
-+ virtual void defineParagraphStyle(const WPXPropertyList&, const WPXPropertyListVector&) {}
- virtual void openParagraph(const WPXPropertyList &propList, const WPXPropertyListVector &tabStops);
- virtual void closeParagraph();
-
-+ virtual void defineCharacterStyle(const WPXPropertyList&) {}
- virtual void openSpan(const WPXPropertyList &propList);
- virtual void closeSpan();
-
-@@ -109,10 +133,11 @@
- virtual void openSpan(const WPXPropertyList &propList);
- virtual void closeSpan();
-
--
- virtual void insertTab();
-+ virtual void insertSpace();
- virtual void insertText(const WPXString &text);
- virtual void insertLineBreak();
-+ virtual void insertField(const WPXString &type, const WPXPropertyList &propList);
-
- virtual void defineOrderedListLevel(const WPXPropertyList &propList);
- virtual void defineUnorderedListLevel(const WPXPropertyList &propList);
-@@ -127,6 +152,10 @@
- virtual void closeFootnote();
- virtual void openEndnote(const WPXPropertyList &propList);
- virtual void closeEndnote();
-+ virtual void openComment(const WPXPropertyList &propList);
-+ virtual void closeComment();
-+ virtual void openTextBox(const WPXPropertyList &propList);
-+ virtual void closeTextBox();
-
- virtual void openTable(const WPXPropertyList &propList, const WPXPropertyListVector &columns);
- virtual void openTableRow(const WPXPropertyList &propList);
-@@ -135,25 +164,34 @@
- virtual void closeTableCell();
- virtual void insertCoveredTableCell(const WPXPropertyList &propList);
- virtual void closeTable();
-- virtual bool parseSourceDocument(WPSInputStream &input) = 0;
-+
-+ virtual void openFrame(const WPXPropertyList & propList);
-+ virtual void closeFrame();
-+
-+ virtual void insertBinaryObject(const WPXPropertyList &propList, const WPXBinaryData &data);
-+ virtual void insertEquation(const WPXPropertyList & /* propList */, const WPXString & /* data */) {}
-+
-+ virtual bool parseSourceDocument(WPXInputStream &input) = 0;
-
- protected:
- void _resetDocumentState();
-- bool _writeTargetDocument(DocumentHandler *pHandler);
-- void _writeDefaultStyles(DocumentHandler *pHandler);
-- void _writeMasterPages(DocumentHandler *pHandler);
-- void _writePageMasters(DocumentHandler *pHandler);
-+ bool _writeTargetDocument(DocumentHandlerInterface *pHandler);
-+ void _writeDefaultStyles(DocumentHandlerInterface *pHandler);
-+ void _writeMasterPages(DocumentHandlerInterface *pHandler);
-+ void _writePageLayouts(DocumentHandlerInterface *pHandler);
- void _allocateFontName(const WPXString &);
-
- private:
- void _openListLevel(TagOpenElement *pListLevelOpenElement);
-- void _closeListLevel(const char *szListType);
-+ void _closeListLevel();
-
-- WPSInputStream *mpInput;
-- DocumentHandler *mpHandler;
-+ WPXInputStream *mpInput;
-+ DocumentHandlerInterface *mpHandler;
- bool mbUsed; // whether or not it has been before (you can only use me once!)
-
-- WriterDocumentState mWriterDocumentState;
-+ std::stack<WriterDocumentState> mWriterDocumentStates;
-+
-+ std::stack<WriterListState> mWriterListStates;
-
- // paragraph styles
- std::map<WPXString, ParagraphStyle *, ltstr> mTextStyleHash;
-@@ -171,6 +209,14 @@
- // table styles
- std::vector<TableStyle *> mTableStyles;
-
-+ // frame styles
-+ std::vector<DocumentElement *> mFrameStyles;
-+
-+ std::vector<DocumentElement *> mFrameAutomaticStyles;
-+
-+ // metadata
-+ std::vector<DocumentElement *> mMetaData;
-+
- // list styles
- unsigned int miNumListStyles;
-
-@@ -186,18 +232,18 @@
- PageSpan *mpCurrentPageSpan;
- int miNumPageStyles;
-
-- // list styles / state
-- ListStyle *mpCurrentListStyle;
-- unsigned int miCurrentListLevel;
-- unsigned int miLastListLevel;
-- unsigned int miLastListNumber;
-+ // list styles
- std::vector<ListStyle *> mListStyles;
-- bool mbListContinueNumbering;
-- bool mbListElementOpened;
-- bool mbListElementParagraphOpened;
-+
-+ // object state
-+ unsigned miObjectNumber;
-
- // table state
- TableStyle *mpCurrentTableStyle;
-+
-+ const bool mbIsFlatXML;
-+
-+ const char * mpPassword;
- };
-
- #endif
---- writerperfect/source/filter/DocumentElement.cxx 2010-10-17 15:38:36.000000000 +0200
-+++ writerperfect/source/filter/DocumentElement.cxx 2010-11-06 23:09:43.000000000 +0100
-@@ -27,6 +27,7 @@
- */
-
- #include "DocumentElement.hxx"
-+#include "DocumentHandler.hxx"
- #include "FilterInternal.hxx"
- #include <string.h>
-
-@@ -37,7 +38,7 @@
- WRITER_DEBUG_MSG(("%s\n", msTagName.cstr()));
- }
-
--void TagOpenElement::write(DocumentHandler *pHandler) const
-+void TagOpenElement::write(DocumentHandlerInterface *pHandler) const
- {
- pHandler->startElement(getTagName().cstr(), maAttrList);
- }
-@@ -52,14 +53,14 @@
- maAttrList.insert(szAttributeName, sAttributeValue);
- }
-
--void TagCloseElement::write(DocumentHandler *pHandler) const
-+void TagCloseElement::write(DocumentHandlerInterface *pHandler) const
- {
- WRITER_DEBUG_MSG(("TagCloseElement: write (%s)\n", getTagName().cstr()));
-
- pHandler->endElement(getTagName().cstr());
- }
-
--void CharDataElement::write(DocumentHandler *pHandler) const
-+void CharDataElement::write(DocumentHandlerInterface *pHandler) const
- {
- WRITER_DEBUG_MSG(("TextElement: write\n"));
- pHandler->characters(msData);
-@@ -72,8 +73,10 @@
-
- // write: writes a text run, appropriately converting spaces to <text:s>
- // elements
--void TextElement::write(DocumentHandler *pHandler) const
-+void TextElement::write(DocumentHandlerInterface *pHandler) const
- {
-+ if (msTextBuf.len() <= 0)
-+ return;
- WPXPropertyList xBlankAttrList;
-
- WPXString sTemp;
---- writerperfect/source/filter/DocumentElement.hxx 2010-11-04 13:37:48.000000000 +0100
-+++ writerperfect/source/filter/DocumentElement.hxx 2010-11-06 23:09:43.000000000 +0100
-@@ -28,30 +28,25 @@
-
- #ifndef _DOCUMENTELEMENT_H
- #define _DOCUMENTELEMENT_H
--#if defined _MSC_VER
--#pragma warning( push, 1 )
--#endif
- #include <libwpd/libwpd.h>
- #include <libwpd/WPXProperty.h>
- #include <libwpd/WPXString.h>
--#if defined _MSC_VER
--#pragma warning( pop )
--#endif
- #include <vector>
-
--#include "DocumentHandler.hxx"
-+#include "DocumentHandlerInterface.hxx"
-
- class DocumentElement
- {
- public:
- virtual ~DocumentElement() {}
-- virtual void write(DocumentHandler *pHandler) const = 0;
-+ virtual void write(DocumentHandlerInterface *pHandler) const = 0;
- virtual void print() const {}
- };
-
- class TagElement : public DocumentElement
- {
- public:
-+ virtual ~TagElement() {}
- TagElement(const char *szTagName) : msTagName(szTagName) {}
- const WPXString & getTagName() const { return msTagName; }
- virtual void print() const;
-@@ -63,9 +58,9 @@
- {
- public:
- TagOpenElement(const char *szTagName) : TagElement(szTagName) {}
-- ~TagOpenElement() {}
-+ virtual ~TagOpenElement() {}
- void addAttribute(const char *szAttributeName, const WPXString &sAttributeValue);
-- virtual void write(DocumentHandler *pHandler) const;
-+ virtual void write(DocumentHandlerInterface *pHandler) const;
- virtual void print () const;
- private:
- WPXPropertyList maAttrList;
-@@ -75,14 +70,16 @@
- {
- public:
- TagCloseElement(const char *szTagName) : TagElement(szTagName) {}
-- virtual void write(DocumentHandler *pHandler) const;
-+ virtual ~TagCloseElement() {}
-+ virtual void write(DocumentHandlerInterface *pHandler) const;
- };
-
- class CharDataElement : public DocumentElement
- {
- public:
- CharDataElement(const char *sData) : DocumentElement(), msData(sData) {}
-- virtual void write(DocumentHandler *pHandler) const;
-+ virtual ~CharDataElement() {}
-+ virtual void write(DocumentHandlerInterface *pHandler) const;
- private:
- WPXString msData;
- };
-@@ -91,7 +88,8 @@
- {
- public:
- TextElement(const WPXString & sTextBuf);
-- virtual void write(DocumentHandler *pHandler) const;
-+ virtual ~TextElement() {}
-+ virtual void write(DocumentHandlerInterface *pHandler) const;
-
- private:
- WPXString msTextBuf;
---- writerperfect/source/filter/DocumentHandler.cxx 2010-10-17 15:38:36.000000000 +0200
-+++ writerperfect/source/filter/DocumentHandler.cxx 2010-11-06 23:09:43.000000000 +0100
-@@ -29,6 +29,8 @@
-
- #include <xmloff/attrlist.hxx>
-
-+// #define DEBUG_XML 1
-+
- using namespace ::rtl;
- using rtl::OUString;
-
-@@ -41,19 +43,19 @@
-
- void DocumentHandler::startDocument()
- {
-- WRITER_DEBUG_MSG(("DocumentHandler::startDocument\n"));
- mxHandler->startDocument();
- }
-
- void DocumentHandler::endDocument()
- {
-- WRITER_DEBUG_MSG(("DocumentHandler::endDocument\n"));
- mxHandler->endDocument();
- }
-
- void DocumentHandler::startElement(const char *psName, const WPXPropertyList &xPropList)
- {
-- WRITER_DEBUG_MSG(("DocumentHandler::startElement\n"));
-+#ifdef DEBUG_XML
-+ printf("<%s", psName);
-+#endif
- SvXMLAttributeList *pAttrList = new SvXMLAttributeList();
- Reference < XAttributeList > xAttrList(pAttrList);
- WPXPropertyList::Iter i(xPropList);
-@@ -61,23 +63,36 @@
- {
- // filter out libwpd elements
- if (strncmp(i.key(), "libwpd", 6) != 0)
-+ {
- pAttrList->AddAttribute(OUString::createFromAscii(i.key()),
- OUString::createFromAscii(i()->getStr().cstr()));
-+#ifdef DEBUG_XML
-+ printf(" %s=\"%s\"", i.key(), i()->getStr().cstr());
-+#endif
-+ }
- }
-+#ifdef DEBUG_XML
-+ printf(">");
-+#endif
-
- mxHandler->startElement(OUString::createFromAscii(psName), xAttrList);
- }
-
- void DocumentHandler::endElement(const char *psName)
- {
-- WRITER_DEBUG_MSG(("DocumentHandler::endElement\n"));
-+#ifdef DEBUG_XML
-+ printf("</%s>", psName);
-+#endif
- mxHandler->endElement(OUString::createFromAscii(psName));
- }
-
- void DocumentHandler::characters(const WPXString &sCharacters)
- {
-- WRITER_DEBUG_MSG(("DocumentHandler::characters\n"));
- OUString sCharU16(sCharacters.cstr(), strlen(sCharacters.cstr()), RTL_TEXTENCODING_UTF8);
-+#ifdef DEBUG_XML
-+ WPXString sEscapedCharacters(sCharacters, true);
-+ printf("%s", sEscapedCharacters.cstr());
-+#endif
- mxHandler->characters(sCharU16);
- }
-
---- writerperfect/source/filter/DocumentHandler.hxx 2010-11-04 13:37:48.000000000 +0100
-+++ writerperfect/source/filter/DocumentHandler.hxx 2010-11-06 23:09:43.000000000 +0100
-@@ -12,10 +12,12 @@
- #pragma warning( pop )
- #endif
-
-+#include "DocumentHandlerInterface.hxx"
-+
- using com::sun::star::uno::Reference;
- using com::sun::star::xml::sax::XDocumentHandler;
-
--class DocumentHandler
-+class DocumentHandler: public DocumentHandlerInterface
- {
- public:
- DocumentHandler(Reference < XDocumentHandler > &xHandler);
---- writerperfect/source/filter/DocumentHandlerInterface.hxx 1970-01-01 01:00:00.000000000 +0100
-+++ writerperfect/source/filter/DocumentHandlerInterface.hxx 2010-11-06 23:09:43.000000000 +0100
-@@ -0,0 +1,45 @@
-+/*
-+ * Copyright (C) 2004 William Lachance (wlach at interlog.com)
-+ * Copyright (C) 2004 Net Integration Technologies (http://www.net-itech.com)
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU General Public License
-+ * as published by the Free Software Foundation; either version 2
-+ * of the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-+ * GNU General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU General Public License
-+ * along with this program; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA
-+ * 02111-1307, USA.
-+ *
-+ * Contributor(s): Martin Gallwey (gallwey at sun.com)
-+ *
-+ */
-+
-+/* "This product is not manufactured, approved, or supported by
-+ * Corel Corporation or Corel Corporation Limited."
-+ */
-+#ifndef _DOCUMENTHANDLERINTERFACE_H
-+#define _DOCUMENTHANDLERINTERFACE_H
-+#include <libwpd/libwpd.h>
-+#include <libwpd/WPXProperty.h>
-+#include <libwpd/WPXString.h>
-+
-+class DocumentHandlerInterface
-+{
-+public:
-+ DocumentHandlerInterface() {};
-+ virtual ~DocumentHandlerInterface() {};
-+
-+ virtual void startDocument() = 0;
-+ virtual void endDocument() = 0;
-+ virtual void startElement(const char *psName, const WPXPropertyList &xPropList) = 0;
-+ virtual void endElement(const char *psName) = 0;
-+ virtual void characters(const WPXString &sCharacters) = 0;
-+};
-+#endif
---- writerperfect/source/filter/FilterInternal.hxx 2010-11-04 13:37:48.000000000 +0100
-+++ writerperfect/source/filter/FilterInternal.hxx 2010-11-06 23:09:43.000000000 +0100
-@@ -20,6 +20,10 @@
- * For further information visit http://libwpd.sourceforge.net
- *
- */
-+
-+#ifndef _FILTERINTERNAL_HXX
-+#define _FILTERINTERNAL_HXX
-+
- #include <stdio.h>
- #ifdef DEBUG
- #define WRITER_DEBUG_MSG(M) printf M
-@@ -31,4 +35,6 @@
- const float fDefaultPageWidth = 8.5f; // inches (OOo required default: we will handle this later)
- const float fDefaultPageHeight = 11.0f; // inches
-
-+#endif
-+
- /* vim:set shiftwidth=4 softtabstop=4 expandtab: */
---- writerperfect/source/filter/FontStyle.cxx 2010-10-17 15:38:36.000000000 +0200
-+++ writerperfect/source/filter/FontStyle.cxx 2010-11-06 23:09:43.000000000 +0100
-@@ -30,7 +30,7 @@
- #include "DocumentElement.hxx"
-
- FontStyle::FontStyle(const char *psName, const char *psFontFamily) : Style(psName),
-- msFontFamily(psFontFamily),
-+ msFontFamily(psFontFamily, true),
- msFontPitch(IMP_DEFAULT_FONT_PITCH)
- {
- }
-@@ -39,14 +39,14 @@
- {
- }
-
--void FontStyle::write(DocumentHandler *pHandler) const
-+void FontStyle::write(DocumentHandlerInterface *pHandler) const
- {
-- TagOpenElement styleOpen("style:font-decl");
-+ TagOpenElement styleOpen("style:font-face");
- styleOpen.addAttribute("style:name", getName());
-- styleOpen.addAttribute("fo:font-family", msFontFamily);
-- styleOpen.addAttribute("style:font-pitch", msFontPitch);
-+ styleOpen.addAttribute("svg:font-family", msFontFamily);
-+// styleOpen.addAttribute("style:font-pitch", msFontPitch);
- styleOpen.write(pHandler);
-- TagCloseElement styleClose("style:font-decl");
-+ TagCloseElement styleClose("style:font-face");
- styleClose.write(pHandler);
- }
-
---- writerperfect/source/filter/FontStyle.hxx 2010-11-04 13:37:48.000000000 +0100
-+++ writerperfect/source/filter/FontStyle.hxx 2010-11-06 23:09:43.000000000 +0100
-@@ -27,23 +27,18 @@
- */
- #ifndef _FONTSTYLE_H
- #define _FONTSTYLE_H
--#if defined _MSC_VER
--#pragma warning( push, 1 )
--#endif
- #include <libwpd/libwpd.h>
--#if defined _MSC_VER
--#pragma warning( pop )
--#endif
-
- #include "Style.hxx"
- #include "WriterProperties.hxx"
-+#include "DocumentHandlerInterface.hxx"
-
- class FontStyle : public Style
- {
- public:
- FontStyle(const char *psName, const char *psFontFamily);
- ~FontStyle();
-- virtual void write(DocumentHandler *pHandler) const;
-+ virtual void write(DocumentHandlerInterface *pHandler) const;
- const WPXString &getFontFamily() const { return msFontFamily; }
-
- private:
---- writerperfect/source/filter/GraphicsStyle.cxx 1970-01-01 01:00:00.000000000 +0100
-+++ writerperfect/source/filter/GraphicsStyle.cxx 2010-11-06 23:09:43.000000000 +0100
-@@ -0,0 +1,40 @@
-+/* GraphicsStyle:
-+ *
-+ * Copyright (C) 2007 Fridrich Strba .strba at bluewin.ch)
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2 of the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
-+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
-+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
-+ * Library General Public License for more details.
-+ *
-+ * You should have received a copy of the GNU Library General Public
-+ * License along with this library; if not, write to the Free Software
-+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
-+ *
-+ * For further information visit http://libwpd.sourceforge.net
-+ *
-+ */
-+
-+/* "This product is not manufactured, approved, or supported by
-+ * Corel Corporation or Corel Corporation Limited."
-+ */
-+#include "GraphicsStyle.hxx"
-+#include "WriterProperties.hxx"
-+#include "DocumentElement.hxx"
-+
-+GraphicsStyle::GraphicsStyle(const char *psName) : Style(psName)
-+{
-+}
-+
-+GraphicsStyle::~GraphicsStyle()
-+{
-+}
-+
-+void GraphicsStyle::write(DocumentHandlerInterface * /* pHandler */) const
-+{
-+}
---- writerperfect/source/filter/GraphicsStyle.hxx 1970-01-01 01:00:00.000000000 +0100
-+++ writerperfect/source/filter/GraphicsStyle.hxx 2010-11-06 23:09:43.000000000 +0100
-@@ -0,0 +1,40 @@
-+/* GraphicsStyle:
-+ *
-+ * Copyright (C) 2007 Fridrich Strba .strba at bluewin.ch)
-+ *
-+ * This program is free software; you can redistribute it and/or
-+ * modify it under the terms of the GNU Lesser General Public
-+ * License as published by the Free Software Foundation; either
-+ * version 2 of the License, or (at your option) any later version.
-+ *
-+ * This program is distributed in the hope that it will be useful,
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list