[Libreoffice-commits] core.git: Branch 'distro/cib/libreoffice-5-3' - 382 commits - accessibility/source avmedia/source basic/source bin/lo-commit-stat bin/symstore.sh canvas/source chart2/qa chart2/source configure.ac connectivity/source cppcanvas/source cui/source cui/uiconfig dbaccess/source desktop/source desktop/unx desktop/win32 dictionaries download.lst editeng/source embeddedobj/source extensions/source external/curl external/expat external/icu external/libcmis external/libmwaw external/liborcus external/libstaroffice external/libwpd external/libxml2 external/nss external/poppler external/python3 external/redland extras/source filter/source forms/source formula/source hwpfilter/source i18npool/source icon-themes/elementary icon-themes/galaxy icon-themes/sifr include/editeng include/formula include/o3tl include/oox include/sfx2 include/svtools include/svx include/vcl include/xmloff instsetoo_native/inc_common instsetoo_native/util jvmfwk/plugins libreofficekit/qa libreofficekit/source lotu swordpro/source Makefile.in officecfg/registry oox/inc oox/source package/source postprocess/CustomTarget_registry.mk postprocess/CustomTarget_signing.mk readlicense_oo/license sal/textenc sax/source sc/inc sc/qa scripting/source sc/source sc/uiconfig sdext/source sd/inc sd/qa sd/source sfx2/source shell/source slideshow/source solenv/gbuild solenv/gdb starmath/source svgio/inc svgio/source svl/source svtools/source svx/source swext/mediawiki sw/inc sw/qa sw/source sw/uiconfig translations ucb/source vcl/headless vcl/inc vcl/source vcl/unx vcl/win wizards/com writerfilter/source xmloff/inc xmloff/Library_xo.mk xmloff/source xmlscript/source xmlsecurity/qa xmlsecurity/source
Thorsten Behrens
Thorsten.Behrens at CIB.de
Wed Jan 31 14:01:39 UTC 2018
Rebased ref, commits from common ancestor:
commit 2e8fcee1e79afaa01aedf6e27ae0683d15876c83
Author: Thorsten Behrens <Thorsten.Behrens at CIB.de>
Date: Sun Jan 15 11:50:27 2017 +0100
gbuild: populate local symstore on Windows
Script based on Lubos' tb master script from
http://nabble.documentfoundation.org/Daily-Win32-debug-builds-td4067279.html
Change-Id: I7f3247367a63078881f3cf51cf3e2cad59ad67b5
Reviewed-on: https://gerrit.libreoffice.org/33088
Reviewed-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
Tested-by: Thorsten Behrens <Thorsten.Behrens at CIB.de>
(cherry picked from commit 17e9a5bf94eb08f88f8c78c9982dd0ce48a5e2d9)
diff --git a/Makefile.in b/Makefile.in
index 50d9dc0cfb09..c2b090c6b608 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -401,6 +401,7 @@ symbols:
mkdir -p $(WORKDIR)/symbols/
ifeq ($(OS),WNT)
$(SRCDIR)/bin/symbolstore.py $(WORKDIR)/UnpackedTarball/breakpad/src/tools/windows/binaries/dump_syms.exe $(WORKDIR)/symbols/ $(INSTDIR)/program/*
+ $(SRCDIR)/bin/symstore.sh
else
$(SRCDIR)/bin/symbolstore.py $(WORKDIR)/UnpackedTarball/breakpad/src/tools/linux/dump_syms/dump_syms $(WORKDIR)/symbols/ $(INSTDIR)/program/*
endif
diff --git a/bin/symstore.sh b/bin/symstore.sh
new file mode 100755
index 000000000000..56260c0b3906
--- /dev/null
+++ b/bin/symstore.sh
@@ -0,0 +1,81 @@
+#!/usr/bin/env bash
+
+add_pdb()
+{
+ extension=$1
+ type=$2
+ list=$3
+ for file in $(find "${INSTDIR}/" -name "*.${extension}"); do
+ filename=$(basename "$file" ".${extension}")
+ pdb="${WORKDIR}/LinkTarget/${type}/${filename}.pdb"
+ if [ -f "$pdb" ]; then
+ cygpath -w "$pdb" >> "$list"
+ fi
+ done
+
+}
+
+# check preconditions
+if [ -z "${INSTDIR}" ] || [ -z "${WORKDIR}" ]; then
+ echo "INSTDIR or WORKDIR not set - script expects calling inside buildenv"
+ exit 1
+fi
+if [ ! -d "${INSTDIR}" ] || [ ! -d "${WORKDIR}" ]; then
+ echo "INSTDIR or WORKDIR not present - script expects calling after full build"
+ exit 1
+fi
+which symstore.exe > /dev/null 2>&1 || {
+ echo "symstore.exe is expected in the PATH"
+ exit 1
+}
+
+# defaults
+MAX_KEEP=5
+SYM_PATH=${WORKDIR}/symstore
+
+USAGE="Usage: $0 [-h|-k <keep_num_versions>|-p <symbol_store_path>]
+ -h: this cruft
+ -k <int>: keep this number of old symbol versions around
+ (default: ${MAX_KEEP}. Set to 0 for unlimited)
+ -p <path>: specify full path to symbol store tree
+If no path is specified, defaults to ${SYM_PATH}.
+"
+
+# process args
+while :
+do
+ case "$1" in
+ -k|--keep) MAX_KEEP="$2"; shift 2;;
+ -p|--path) SYM_PATH="$2"; shift 2;;
+ -h|--help) echo "${USAGE}"; exit 0; shift;;
+ -*) echo "${USAGE}" >&2; exit 1;;
+ *) break;;
+ esac
+done
+
+if [ $# -gt 0 ]; then
+ echo "${USAGE}" >&2
+ exit 1
+fi
+
+# populate symbol store from here
+TMPFILE=$(mktemp) || exit 1
+trap '{ rm -f ${TMPFILE}; }' EXIT
+
+# add dlls and executables
+add_pdb dll Library "${TMPFILE}"
+add_pdb exe Executable "${TMPFILE}"
+
+# stick all of it into symbol store
+symstore.exe add /compress /f "@$(cygpath -w "${TMPFILE}")" /s "$(cygpath -w "${SYM_PATH}")" /t "${PRODUCTNAME}" /v "${LIBO_VERSION_MAJOR}.${LIBO_VERSION_MINOR}.${LIBO_VERSION_MICRO}.${LIBO_VERSION_PATCH}${LIBO_VERSION_SUFFIX}${LIBO_VERSION_SUFFIX_SUFFIX}"
+rm -f "${TMPFILE}"
+
+# Cleanup symstore, older revisions will be removed. Unless the
+# .dll/.exe changes, the .pdb should be shared, so with incremental
+# tinderbox several revisions should not be that space-demanding.
+if [ "${MAX_KEEP}" -gt 0 ] && [ -d "${SYM_PATH}/000Admin" ]; then
+ to_remove=$(ls -1 "${SYM_PATH}/000Admin" | grep -v '\.txt' | grep -v '\.deleted' | sort | head -n "-${MAX_KEEP}")
+ for revision in $to_remove; do
+ symstore.exe del /i "${revision}" /s "$(cygpath -w "${SYM_PATH}")"
+ done
+fi
commit 32008ea00ab92fd86c0ea94c81e7174aaf6c6fbe
Author: Thorsten Behrens <Thorsten.Behrens at CIB.de>
Date: Fri Dec 9 02:00:49 2016 +0100
cmis: add error handling on checkin
Change-Id: I3951a237789ee4b7697f70bc527ffbb6a626206a
diff --git a/ucb/source/ucp/cmis/cmis_content.cxx b/ucb/source/ucp/cmis/cmis_content.cxx
index c3fca0792a7d..ebcee7dc9653 100644
--- a/ucb/source/ucp/cmis/cmis_content.cxx
+++ b/ucb/source/ucp/cmis/cmis_content.cxx
@@ -1051,8 +1051,14 @@ namespace cmis
{
object = getObject( xEnv );
}
- catch ( const libcmis::Exception& )
+ catch ( const libcmis::Exception& e )
{
+ SAL_INFO( "ucb.ucp.cmis", "Unexpected libcmis exception: " << e.what( ) );
+ ucbhelper::cancelCommandExecution(
+ ucb::IOErrorCode_GENERAL,
+ uno::Sequence< uno::Any >( 0 ),
+ xEnv,
+ OUString::createFromAscii( e.what() ) );
}
libcmis::Document* pPwc = dynamic_cast< libcmis::Document* >( object.get( ) );
@@ -1070,8 +1076,22 @@ namespace cmis
copyData( xIn, xOutput );
map< string, libcmis::PropertyPtr > newProperties;
- libcmis::DocumentPtr pDoc = pPwc->checkIn( rArg.MajorVersion, OUSTR_TO_STDSTR( rArg.VersionComment ), newProperties,
- pOut, OUSTR_TO_STDSTR( rArg.MimeType ), OUSTR_TO_STDSTR( rArg.NewTitle ) );
+ libcmis::DocumentPtr pDoc;
+
+ try
+ {
+ pDoc = pPwc->checkIn( rArg.MajorVersion, OUSTR_TO_STDSTR( rArg.VersionComment ), newProperties,
+ pOut, OUSTR_TO_STDSTR( rArg.MimeType ), OUSTR_TO_STDSTR( rArg.NewTitle ) );
+ }
+ catch ( const libcmis::Exception& e )
+ {
+ SAL_INFO( "ucb.ucp.cmis", "Unexpected libcmis exception: " << e.what( ) );
+ ucbhelper::cancelCommandExecution(
+ ucb::IOErrorCode_GENERAL,
+ uno::Sequence< uno::Any >( 0 ),
+ xEnv,
+ OUString::createFromAscii( e.what() ) );
+ }
// Get the URL and send it back as a result
URL aCmisUrl( m_sURL );
commit 2c3fad1495c4069af684da02765b9914185cbfd1
Author: Thorsten Behrens <Thorsten.Behrens at CIB.de>
Date: Fri Dec 9 02:40:53 2016 +0100
libcmis: error handling for datetime string parser
Change-Id: Ie5be0307fa8ac0292f7692f9674e07776cb1948d
diff --git a/external/libcmis/UnpackedTarball_cmis.mk b/external/libcmis/UnpackedTarball_cmis.mk
index 0b76efd254a1..58373bdbcbf6 100644
--- a/external/libcmis/UnpackedTarball_cmis.mk
+++ b/external/libcmis/UnpackedTarball_cmis.mk
@@ -19,6 +19,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,cmis, \
external/libcmis/libcmis-google-2FA-implementation.patch \
external/libcmis/libcmis-fix-google-drive-2.patch \
external/libcmis/libcmis-sharepoint-repository-root.patch \
+ external/libcmis/libcmis-fix-error-handling.patch \
))
ifeq ($(OS)$(COM),WNTMSC)
diff --git a/external/libcmis/libcmis-fix-error-handling.patch b/external/libcmis/libcmis-fix-error-handling.patch
new file mode 100644
index 000000000000..09df7ac9ebe5
--- /dev/null
+++ b/external/libcmis/libcmis-fix-error-handling.patch
@@ -0,0 +1,20 @@
+diff -ur cmis.org/src/libcmis/xml-utils.cxx cmis/src/libcmis/xml-utils.cxx
+--- cmis.org/src/libcmis/xml-utils.cxx 2016-12-09 02:19:47.900961750 +0100
++++ cmis/src/libcmis/xml-utils.cxx 2016-12-09 02:23:56.392206339 +0100
+@@ -382,9 +382,14 @@
+ // Get the time zone offset
+ boost::posix_time::time_duration tzOffset( boost::posix_time::duration_from_string( "+00:00" ) );
+
++ if ( dateTimeStr.empty( ) )
++ return t; // obviously not a time
++
+ size_t teePos = dateTimeStr.find( 'T' );
+- string noTzStr = dateTimeStr.substr( 0, teePos + 1 );
++ if ( teePos == string::npos )
++ return t; // obviously not a time
+
++ string noTzStr = dateTimeStr.substr( 0, teePos + 1 );
+ string timeStr = dateTimeStr.substr( teePos + 1 );
+
+ // Get the TZ if any
+
commit d50224306a5c070918c55cd9434d070912dd9a02
Author: Katarina Behrens <Katarina.Behrens at cib.de>
Date: Wed Feb 10 14:42:18 2016 +0100
Branded images for msi installer
The sizes are 122 x 234, 374 x 44 installed units respectively, according to
http://msdn.microsoft.com/de-de/library/windows/desktop/aa369490%28v=vs.85%29.aspx
it is 163x312, 499x58 pixels at 96 dpi. I bumped dpi to 120 and it still looks pixelated,
but it's as good as it gets.
For better results, we need different graphics, with less fine details given the very limited
space
Change-Id: I4a7eafed16fd79f377d27afa8151cfab614b464b
diff --git a/instsetoo_native/inc_common/windows/msi_templates/Binary/Banner.bmp b/instsetoo_native/inc_common/windows/msi_templates/Binary/Banner.bmp
index e267d49ab73e..471eea4c22e6 100644
Binary files a/instsetoo_native/inc_common/windows/msi_templates/Binary/Banner.bmp and b/instsetoo_native/inc_common/windows/msi_templates/Binary/Banner.bmp differ
diff --git a/instsetoo_native/inc_common/windows/msi_templates/Binary/Image.bmp b/instsetoo_native/inc_common/windows/msi_templates/Binary/Image.bmp
index b824ddf35d9d..2703670952bd 100644
Binary files a/instsetoo_native/inc_common/windows/msi_templates/Binary/Image.bmp and b/instsetoo_native/inc_common/windows/msi_templates/Binary/Image.bmp differ
commit 67fbe10fa8cf8740948e3ae6205163fa579a66ce
Author: Katarina Behrens <Katarina.Behrens at cib.de>
Date: Tue Feb 9 11:09:30 2016 +0100
Branded application icons
sadly, this doesn't replace Windows taskbar icon, that must be living somewhere
else. It works on Linux though.
Conflicts:
icon-themes/galaxy/res/main128.png
icon-themes/galaxy/res/mainapp_16.png
icon-themes/galaxy/res/mainapp_16_8.png
icon-themes/galaxy/res/mainapp_32.png
icon-themes/galaxy/res/mainapp_32_8.png
icon-themes/galaxy/res/mainapp_48_8.png
Change-Id: I028fc68d96f02113622c5e1ec3ed830ac797be0b
diff --git a/icon-themes/galaxy/res/main128.png b/icon-themes/galaxy/res/main128.png
index 2779337e7b0a..818b7330c25b 100644
Binary files a/icon-themes/galaxy/res/main128.png and b/icon-themes/galaxy/res/main128.png differ
diff --git a/icon-themes/galaxy/res/mainapp_16.png b/icon-themes/galaxy/res/mainapp_16.png
index 94abb952996b..13945eeadfd4 100644
Binary files a/icon-themes/galaxy/res/mainapp_16.png and b/icon-themes/galaxy/res/mainapp_16.png differ
diff --git a/icon-themes/galaxy/res/mainapp_16_8.png b/icon-themes/galaxy/res/mainapp_16_8.png
index 94abb952996b..13945eeadfd4 100644
Binary files a/icon-themes/galaxy/res/mainapp_16_8.png and b/icon-themes/galaxy/res/mainapp_16_8.png differ
diff --git a/icon-themes/galaxy/res/mainapp_32.png b/icon-themes/galaxy/res/mainapp_32.png
index 2c8a21fbcf3b..c653935c0c6b 100644
Binary files a/icon-themes/galaxy/res/mainapp_32.png and b/icon-themes/galaxy/res/mainapp_32.png differ
diff --git a/icon-themes/galaxy/res/mainapp_32_8.png b/icon-themes/galaxy/res/mainapp_32_8.png
index 2c8a21fbcf3b..c653935c0c6b 100644
Binary files a/icon-themes/galaxy/res/mainapp_32_8.png and b/icon-themes/galaxy/res/mainapp_32_8.png differ
diff --git a/icon-themes/galaxy/res/mainapp_48_8.png b/icon-themes/galaxy/res/mainapp_48_8.png
index cdebedf6a051..562ea23e89c2 100644
Binary files a/icon-themes/galaxy/res/mainapp_48_8.png and b/icon-themes/galaxy/res/mainapp_48_8.png differ
commit 38c6f12f0887d37b45a0e02951a350c29046880d
Author: Katarina Behrens <Katarina.Behrens at cib.de>
Date: Tue Feb 9 10:38:29 2016 +0100
Point to CIB helpdesk
it's pretty mean, b/c German translation (which I can't change) says the site
is in English, while CIB site is in German only and can't be switched to other
lang
Conflicts:
sfx2/source/appl/appserv.cxx
Change-Id: Ifbbb9e9d2bbee40998c07d1c68b61cd20d77dbc3
diff --git a/sfx2/source/appl/appserv.cxx b/sfx2/source/appl/appserv.cxx
index de9b8af352f0..1ae278ea01a6 100644
--- a/sfx2/source/appl/appserv.cxx
+++ b/sfx2/source/appl/appserv.cxx
@@ -497,8 +497,7 @@ void SfxApplication::MiscExec_Impl( SfxRequest& rReq )
case SID_SEND_FEEDBACK:
{
OUString module = SfxHelp::GetCurrentModuleIdentifier();
- OUString sURL("http://hub.libreoffice.org/send-feedback/?LOversion=" + utl::ConfigManager::getAboutBoxProductVersion() +
- "&LOlocale=" + utl::ConfigManager::getLocale() + "&LOmodule=" + module.copy(module.lastIndexOf('.') + 1 ) );
+ OUString sURL("http://libreoffice.cib.de/support");
sfx2::openUriExternally(sURL, false);
break;
}
commit 34ab3071aba06c21711a813cbbeb20abbb246ed6
Author: Katarina Behrens <Katarina.Behrens at cib.de>
Date: Tue Feb 9 10:00:30 2016 +0100
Point to CIB website
this idiotic postprocess script hard-codes libreoffice.org for some reason, grr
Change-Id: Ide1f19d4da9a437e01118e8baf74c0d1a8ca2e10
diff --git a/instsetoo_native/util/openoffice.lst.in b/instsetoo_native/util/openoffice.lst.in
index 7a8b9b8055bc..5de46938107e 100644
--- a/instsetoo_native/util/openoffice.lst.in
+++ b/instsetoo_native/util/openoffice.lst.in
@@ -68,7 +68,7 @@ LibreOffice
CHANGETARGETDIR 1
PATCHCODEFILE ooo_patchcodes.txt
STARTCENTER_ADDFEATURE_URL http://extensions.libreoffice.org/
- STARTCENTER_INFO_URL https://www.libreoffice.org/
+ STARTCENTER_INFO_URL http://libreoffice.cib.de/
STARTCENTER_TEMPLREP_URL http://templates.libreoffice.org/
DICT_REPO_URL http://extensions.libreoffice.org/dictionaries/
STARTCENTER_HIDE_EXTERNAL_LINKS 0
@@ -121,7 +121,7 @@ LibreOfficeDev
CODEFILENAME codes_ooodev.txt
LOCALUSERDIR $ORIGIN/..
STARTCENTER_ADDFEATURE_URL http://extensions.libreoffice.org/
- STARTCENTER_INFO_URL https://www.libreoffice.org/
+ STARTCENTER_INFO_URL http://libreoffice.cib.de/
STARTCENTER_TEMPLREP_URL http://templates.libreoffice.org/
DICT_REPO_URL http://extensions.libreoffice.org/dictionaries/
STARTCENTER_HIDE_EXTERNAL_LINKS 0
@@ -163,7 +163,7 @@ LibreOffice_SDK
CHANGETARGETDIR 1
DONTUSESTARTMENUFOLDER 1
STARTCENTER_ADDFEATURE_URL http://extensions.libreoffice.org/
- STARTCENTER_INFO_URL https://www.libreoffice.org/
+ STARTCENTER_INFO_URL http://libreoffice.cib.de/
STARTCENTER_TEMPLREP_URL http://templates.libreoffice.org/
DICT_REPO_URL http://extensions.libreoffice.org/dictionaries/
STARTCENTER_HIDE_EXTERNAL_LINKS 0
@@ -209,7 +209,7 @@ LibreOfficeDev_SDK
CHANGETARGETDIR 1
DONTUSESTARTMENUFOLDER 1
STARTCENTER_ADDFEATURE_URL http://extensions.libreoffice.org/
- STARTCENTER_INFO_URL https://www.libreoffice.org/
+ STARTCENTER_INFO_URL http://libreoffice.cib.de/
STARTCENTER_TEMPLREP_URL http://templates.libreoffice.org/
DICT_REPO_URL http://extensions.libreoffice.org/dictionaries/
STARTCENTER_HIDE_EXTERNAL_LINKS 0
diff --git a/postprocess/CustomTarget_registry.mk b/postprocess/CustomTarget_registry.mk
index 5fa06e63c484..66a0dbec80b3 100644
--- a/postprocess/CustomTarget_registry.mk
+++ b/postprocess/CustomTarget_registry.mk
@@ -544,7 +544,7 @@ postprocess_main_SED := \
-e 's,$${PRODUCTVERSION},$(PRODUCTVERSION),g' \
-e 's,$${PRODUCTEXTENSION},.$(LIBO_VERSION_MICRO).$(LIBO_VERSION_PATCH)$(LIBO_VERSION_SUFFIX),g' \
-e 's,$${STARTCENTER_ADDFEATURE_URL},http://extensions.libreoffice.org/,g' \
- -e 's,$${STARTCENTER_INFO_URL},https://www.libreoffice.org/,g' \
+ -e 's,$${STARTCENTER_INFO_URL},http://libreoffice.cib.de/,g' \
-e 's,$${STARTCENTER_HIDE_EXTERNAL_LINKS},0,g' \
-e 's,$${STARTCENTER_TEMPLREP_URL},http://templates.libreoffice.org/,g' \
-e 's,$${SYSTEM_LIBEXTTEXTCAT_DATA},$(SYSTEM_LIBEXTTEXTCAT_DATA),g' \
diff --git a/svtools/source/misc/langhelp.cxx b/svtools/source/misc/langhelp.cxx
index 16a3a1d8191c..24b066a9dac3 100644
--- a/svtools/source/misc/langhelp.cxx
+++ b/svtools/source/misc/langhelp.cxx
@@ -16,6 +16,7 @@
void localizeWebserviceURI( OUString& rURI )
{
+ const OUString aPrefix = "?lang=";
OUString aLang = Application::GetSettings().GetUILanguageTag().getLanguage();
if ( aLang.equalsIgnoreAsciiCase("pt")
&& Application::GetSettings().GetUILanguageTag().getCountry().equalsIgnoreAsciiCase("br") )
@@ -30,6 +31,7 @@ void localizeWebserviceURI( OUString& rURI )
aLang = "zh-tw";
}
+ rURI += aPrefix;
rURI += aLang;
}
commit 45aa25cc34ef1d16dd11ade0f88d91f7b2e39663
Author: Katarina Behrens <Katarina.Behrens at cib.de>
Date: Mon Sep 21 13:47:57 2015 +0200
CIB branding for start center
Conflicts:
icon-themes/galaxy/sfx2/res/startcenter-logo.png
Change-Id: I9887fded72131c7888d6e1b1165a778c8da2952d
diff --git a/icon-themes/galaxy/sfx2/res/logo.png b/icon-themes/galaxy/sfx2/res/logo.png
index 5d7e59c8d549..1f215d3ba8d0 100644
Binary files a/icon-themes/galaxy/sfx2/res/logo.png and b/icon-themes/galaxy/sfx2/res/logo.png differ
diff --git a/icon-themes/galaxy/sfx2/res/startcenter-logo.png b/icon-themes/galaxy/sfx2/res/startcenter-logo.png
index 78bc4ebd9e20..ef903fb008a0 100644
Binary files a/icon-themes/galaxy/sfx2/res/startcenter-logo.png and b/icon-themes/galaxy/sfx2/res/startcenter-logo.png differ
diff --git a/icon-themes/galaxy/sfx2/res/startcenter-logo.svg b/icon-themes/galaxy/sfx2/res/startcenter-logo.svg
new file mode 100644
index 000000000000..e1c80e595d6a
--- /dev/null
+++ b/icon-themes/galaxy/sfx2/res/startcenter-logo.svg
@@ -0,0 +1,144 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<!-- Created with Inkscape (http://www.inkscape.org/) -->
+
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ xmlns:xlink="http://www.w3.org/1999/xlink"
+ xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
+ xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
+ id="svg3360"
+ version="1.1"
+ inkscape:version="0.91 r13725"
+ width="368.00235"
+ height="116.34795"
+ viewBox="0 0 368.00235 116.34795"
+ sodipodi:docname="startcenter-logo.svg">
+ <metadata
+ id="metadata3366">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <defs
+ id="defs3364">
+ <clipPath
+ clipPathUnits="userSpaceOnUse"
+ id="clipPath3372">
+ <rect
+ style="fill:#ffd5d5"
+ id="rect3374"
+ width="368.00235"
+ height="116.34795"
+ x="2.077642"
+ y="105.41204" />
+ </clipPath>
+ </defs>
+ <sodipodi:namedview
+ pagecolor="#ffffff"
+ bordercolor="#666666"
+ borderopacity="1"
+ objecttolerance="10"
+ gridtolerance="10"
+ guidetolerance="10"
+ inkscape:pageopacity="0"
+ inkscape:pageshadow="2"
+ inkscape:window-width="1920"
+ inkscape:window-height="1173"
+ id="namedview3362"
+ showgrid="false"
+ fit-margin-top="0"
+ fit-margin-left="0"
+ fit-margin-right="0"
+ fit-margin-bottom="0"
+ inkscape:zoom="0.96262974"
+ inkscape:cx="182.96235"
+ inkscape:cy="110.88"
+ inkscape:window-x="1911"
+ inkscape:window-y="-9"
+ inkscape:window-maximized="1"
+ inkscape:current-layer="svg3360" />
+ <image
+ width="370.07999"
+ height="221.75999"
+ preserveAspectRatio="none"
+ xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgIAAAE0CAYAAABejlvhAAAABHNCSVQICAgIfAhkiAAAAAlwSFlz
+AAATOQAAEzkBj8JWAQAAABl0RVh0U29mdHdhcmUAd3d3Lmlua3NjYXBlLm9yZ5vuPBoAAA2VSURB
+VHic7d17tJV1mcDx58ABEVkKjnhhLaTERhGJCW+V5n2p43U0Fa8BXijzlrryMs6k2aRLTYs0zBjN
+0WLQaTIgkTFRtPKaISZKyk1BFLnfDwcOzB/qck7vFhTOfvdxns/nz9+zOe/DX+e79tnvfuuGdu+1
+LgCAlNrUegEAoHaEAAAkJgQAIDEhAACJCQEASEwIAEBiQgAAEhMCAJCYEACAxIQAACQmBAAgMSEA
+AIkJAQBITAgAQGJCAAASEwIAkJgQAIDEhAAAJCYEACAxIQAAiQkBAEhMCABAYkIAABITAgCQmBAA
+gMSEAAAkJgQAIDEhAACJCQEASEwIAEBiQgAAEhMCAJCYEACAxIQAACQmBAAgMSEAAIkJAQBITAgA
+QGJCAAASEwIAkJgQAIDEhAAAJCYEACAxIQAAiQkBAEhMCABAYkIAABITAgCQmBAAgMSEAAAkJgQA
+IDEhAACJCQEASEwIAEBiQgAAEhMCAJCYEACAxIQAACQmBAAgMSEAAIkJAQBITAgAQGJCAAASEwIA
+kJgQAIDEhAAAJCYEACAxIQAAiQkBAEhMCABAYkIAABITAgCQmBAAgMSEAAAkJgQAIDEhAACJCQEA
+SEwIAEBiQgAAEhMCAJCYEACAxIQAACQmBAAgMSEAAIkJAQBITAgAQGJCAAASEwIAkJgQAIDEhAAA
+JCYEACAxIQAAiQkBAEhMCABAYkIAABITAgCQmBAAgMSEAAAkJgQAIDEhAACJCQEASEwIAEBiQgAA
+EhMCAJCYEACAxIQAACQmBAAgMSEAAIkJAQBITAgAQGJCAAASEwIAkJgQAIDEhAAAJCYEACAxIQAA
+iQkBAEhMCABAYkIAABITAgCQmBAAgMSEAAAkJgQAIDEhAACJCQEASEwIAEBiQgAAEhMCAJCYEACA
+xIQAACQmBAAgMSEAAIkJAQBITAgAQGJCAAASEwIAkJgQAIDEhAAAJCYEACAxIQAAiQkBAEhMCABA
+YkIAABITAgCQmBAAgMSEAAAkJgQAIDEhAACJCQEASEwIAEBiQgAAEhMCAJCYEACAxIQAACQmBAAg
+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
+i6MwXbQAAAAASUVORK5CYII=
+"
+ id="image3368"
+ x="0"
+ y="0"
+ clip-path="url(#clipPath3372)"
+ transform="translate(-2.077642,-105.41204)" />
+</svg>
diff --git a/officecfg/registry/schema/org/openoffice/Office/Common.xcs b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
index c0d4f00eff45..16342a527ce3 100644
--- a/officecfg/registry/schema/org/openoffice/Office/Common.xcs
+++ b/officecfg/registry/schema/org/openoffice/Office/Common.xcs
@@ -3600,14 +3600,14 @@
<info>
<desc>Specifies the background color of the start center.</desc>
</info>
- <value>14540253</value>
+ <value>9903402</value>
</prop>
<prop oor:name="StartCenterTextColor" oor:type="xs:int" oor:nillable="false">
<!-- Default 3355443 = 0x333333 as specified in tdf#90452, comment 45 -->
<info>
<desc>Specifies the text color of the buttons in the start center.</desc>
</info>
- <value>3355443</value>
+ <value>15658734</value>
</prop>
<prop oor:name="StartCenterThumbnailsBackgroundColor" oor:type="xs:int" oor:nillable="false">
<!-- Default 6710886 = 0x666666 as specified in tdf#90452, comment 45 -->
commit 3d5aba02a6fc3ce118c8eb31e3b2ec7794d48533
Author: Szymon Kłos <szymon.klos at collabora.com>
Date: Thu Dec 21 18:02:13 2017 +0100
tdf#114628 correct line spacing for impress
* use line spacing also for the first line
* correct spacing in case of > 100% proportional spacing
* impedit2.cxx only code readability change
Change-Id: I24832e7dc2fa8cfbb2f9cdfe7062eaaaa63f1729
Reviewed-on: https://gerrit.libreoffice.org/46925
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
Tested-by: Szymon Kłos <szymon.klos at collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/47571
Reviewed-by: Andras Timar <andras.timar at collabora.com>
diff --git a/editeng/source/editeng/impedit2.cxx b/editeng/source/editeng/impedit2.cxx
index 71694a77efaf..bb0d71ad39d8 100644
--- a/editeng/source/editeng/impedit2.cxx
+++ b/editeng/source/editeng/impedit2.cxx
@@ -3586,11 +3586,12 @@ Range ImpEditEngine::GetInvalidYOffsets( ParaPortion* pPortion )
aRange.Max() += rL.GetHeight();
}
- if( ( rLSItem.GetInterLineSpaceRule() == SvxInterLineSpaceRule::Prop ) && rLSItem.GetPropLineSpace() &&
- ( rLSItem.GetPropLineSpace() < 100 ) )
+ sal_uInt16 nPropLineSpace = rLSItem.GetPropLineSpace();
+ if ( ( rLSItem.GetInterLineSpaceRule() == SvxInterLineSpaceRule::Prop )
+ && nPropLineSpace && ( nPropLineSpace < 100 ) )
{
const EditLine& rL = pPortion->GetLines()[nFirstInvalid];
- long n = rL.GetTxtHeight() * ( 100L - rLSItem.GetPropLineSpace() );
+ long n = rL.GetTxtHeight() * ( 100L - nPropLineSpace );
n /= 100;
aRange.Min() -= n;
aRange.Max() += n;
diff --git a/editeng/source/editeng/impedit3.cxx b/editeng/source/editeng/impedit3.cxx
index 9334293cb8a8..cb3723dcf1c4 100644
--- a/editeng/source/editeng/impedit3.cxx
+++ b/editeng/source/editeng/impedit3.cxx
@@ -1398,24 +1398,34 @@ bool ImpEditEngine::CreateLines( sal_Int32 nPara, sal_uInt32 nStartPosY )
}
else if ( rLSItem.GetInterLineSpaceRule() == SvxInterLineSpaceRule::Prop )
{
- if ( nPara || pLine->GetStartPortion() ) // Not the very first line
+ // There are documents with PropLineSpace 0, why?
+ // (cmc: re above question :-) such documents can be seen by importing a .ppt
+ if ( rLSItem.GetPropLineSpace() && ( rLSItem.GetPropLineSpace() < 100 ) )
{
- // There are documents with PropLineSpace 0, why?
- // (cmc: re above question :-) such documents can be seen by importing a .ppt
- if ( rLSItem.GetPropLineSpace() && ( rLSItem.GetPropLineSpace() != 100 ) )
+ // Adapted code from sw/source/core/text/itrform2.cxx
+ sal_uInt16 nPropLineSpace = rLSItem.GetPropLineSpace();
+ sal_uInt16 nAscent = pLine->GetMaxAscent();
+ sal_uInt16 nNewAscent = pLine->GetTxtHeight() * nPropLineSpace / 100 * 4 / 5; // 80%
+ if ( !nAscent || nAscent > nNewAscent )
{
- sal_uInt16 nTxtHeight = pLine->GetHeight();
- sal_Int32 nH = nTxtHeight;
- nH *= rLSItem.GetPropLineSpace();
- nH /= 100;
- // The Ascent has to be adjusted for the difference:
- long nDiff = pLine->GetHeight() - nH;
- if ( nDiff > pLine->GetMaxAscent() )
- nDiff = pLine->GetMaxAscent();
- pLine->SetMaxAscent( (sal_uInt16)(pLine->GetMaxAscent() - nDiff) );
- pLine->SetHeight( (sal_uInt16)nH, nTxtHeight );
+ sal_uInt16 nHeight = pLine->GetHeight() * nPropLineSpace / 100;
+ pLine->SetHeight( nHeight, pLine->GetTxtHeight() );
+ pLine->SetMaxAscent( nNewAscent );
}
}
+ else if ( rLSItem.GetPropLineSpace() && ( rLSItem.GetPropLineSpace() != 100 ) )
+ {
+ sal_uInt16 nTxtHeight = pLine->GetHeight();
+ sal_Int32 nH = nTxtHeight;
+ nH *= rLSItem.GetPropLineSpace();
+ nH /= 100;
+ // The Ascent has to be adjusted for the difference:
+ long nDiff = pLine->GetHeight() - nH;
+ if ( nDiff > pLine->GetMaxAscent() )
+ nDiff = pLine->GetMaxAscent();
+ pLine->SetMaxAscent( (sal_uInt16)( pLine->GetMaxAscent() - nDiff ) * 4 / 5 ); // 80%
+ pLine->SetHeight( (sal_uInt16)nH, nTxtHeight );
+ }
}
}
commit 2b48e006b8f52eaf44e1b1c1ef3dbb898c69a5fc
Author: Szymon Kłos <szymon.klos at collabora.com>
Date: Fri Jan 5 18:12:08 2018 +0100
tdf#114848 Don't save empty themes
Change-Id: I7136f5c0bc884a2f9ea945b4e0bc093a5ef2d8df
Reviewed-on: https://gerrit.libreoffice.org/47481
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/47579
Reviewed-by: Andras Timar <andras.timar at collabora.com>
Tested-by: Andras Timar <andras.timar at collabora.com>
diff --git a/sd/qa/unit/data/pptx/tdf114848.pptx b/sd/qa/unit/data/pptx/tdf114848.pptx
new file mode 100644
index 000000000000..5b8b6c3fad7f
Binary files /dev/null and b/sd/qa/unit/data/pptx/tdf114848.pptx differ
diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx
index 9bad50abbdab..f678ab64f940 100644
--- a/sd/qa/unit/export-tests-ooxml2.cxx
+++ b/sd/qa/unit/export-tests-ooxml2.cxx
@@ -112,6 +112,7 @@ public:
void testGroupsPosition();
void testGroupsRotatedPosition();
void testAccentColor();
+ void testTdf114848();
CPPUNIT_TEST_SUITE(SdOOXMLExportTest2);
@@ -145,6 +146,7 @@ public:
CPPUNIT_TEST(testGroupsPosition);
CPPUNIT_TEST(testGroupsRotatedPosition);
CPPUNIT_TEST(testAccentColor);
+ CPPUNIT_TEST(testTdf114848);
CPPUNIT_TEST_SUITE_END();
@@ -889,6 +891,19 @@ void SdOOXMLExportTest2::testAccentColor()
assertXPath(pXmlDocTheme2, "/a:theme/a:themeElements/a:clrScheme/a:accent6/a:srgbClr", "val", "deb340");
}
+void SdOOXMLExportTest2::testTdf114848()
+{
+ ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/tdf114848.pptx"), PPTX);
+ utl::TempFile tempFile;
+ xDocShRef = saveAndReload(xDocShRef.get(), PPTX, &tempFile);
+ xDocShRef->DoClose();
+
+ xmlDocPtr pXmlDocTheme1 = parseExport(tempFile, "ppt/theme/theme1.xml");
+ assertXPath(pXmlDocTheme1, "/a:theme/a:themeElements/a:clrScheme/a:dk2/a:srgbClr", "val", "1f497d");
+ xmlDocPtr pXmlDocTheme2 = parseExport(tempFile, "ppt/theme/theme2.xml");
+ assertXPath(pXmlDocTheme2, "/a:theme/a:themeElements/a:clrScheme/a:dk2/a:srgbClr", "val", "1f497d");
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(SdOOXMLExportTest2);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sd/source/filter/eppt/pptx-epptooxml.cxx b/sd/source/filter/eppt/pptx-epptooxml.cxx
index 0ac4d87f6dbf..0e6793deb9cc 100644
--- a/sd/source/filter/eppt/pptx-epptooxml.cxx
+++ b/sd/source/filter/eppt/pptx-epptooxml.cxx
@@ -2224,6 +2224,9 @@ bool PowerPointExport::WriteColorSchemes(FSHelperPtr pFS, const OUString& rTheme
aGrabBag.getValue(rThemePath) >>= aCurrentTheme;
+ if (!aCurrentTheme.getLength())
+ return false;
+
// Order is important
for (int nId = PredefinedClrSchemeId::dk2; nId != PredefinedClrSchemeId::Count; nId++)
{
commit e7738ab7b824fde359a7783ab65a4f4a26675528
Author: Eike Rathke <erack at redhat.com>
Date: Wed Nov 8 17:17:44 2017 +0100
Add ICU changeset-40324 fix for CVE-2017-14952
(cherry picked from commit cebe1279665960b732c9cb05c18e481c33e778bb)
Conflicts:
external/icu/UnpackedTarball_icu.mk
Change-Id: Ia457669c5ec6ef5c568f4550c44ef5df32a4be66
Reviewed-on: https://gerrit.libreoffice.org/44494
Tested-by: Eike Rathke <erack at redhat.com>
Reviewed-by: Andras Timar <andras.timar at collabora.com>
diff --git a/external/icu/UnpackedTarball_icu.mk b/external/icu/UnpackedTarball_icu.mk
index 58fedc9f3951..f1658a229586 100644
--- a/external/icu/UnpackedTarball_icu.mk
+++ b/external/icu/UnpackedTarball_icu.mk
@@ -28,6 +28,7 @@ $(eval $(call gb_UnpackedTarball_add_patches,icu,\
$(if $(filter EMSCRIPTEN,$(OS)),external/icu/icu4c-emscripten.patch.1) \
external/icu/khmerbreakengine.patch \
external/icu/icu4c-changeset-39671.patch.1 \
+ external/icu/icu4c-changeset-40324.patch.1 \
))
$(eval $(call gb_UnpackedTarball_add_file,icu,source/data/brkitr/khmerdict.dict,external/icu/khmerdict.dict))
diff --git a/external/icu/icu4c-changeset-40324.patch.1 b/external/icu/icu4c-changeset-40324.patch.1
new file mode 100644
index 000000000000..a651eb19415d
--- /dev/null
+++ b/external/icu/icu4c-changeset-40324.patch.1
@@ -0,0 +1,11 @@
+# https://ssl.icu-project.org/trac/changeset/40324/trunk/icu4c/source/i18n/zonemeta.cpp
+Index: trunk/icu4c/source/i18n/zonemeta.cpp
+===================================================================
+--- icu.orig/source/i18n/zonemeta.cpp
++++ icu/source/i18n/zonemeta.cpp
+@@ -691,5 +691,4 @@
+ if (U_FAILURE(status)) {
+ delete mzMappings;
+- deleteOlsonToMetaMappingEntry(entry);
+ uprv_free(entry);
+ break;
commit 7f1297d9b4f449eb9ada8008fb21b7046d1a8f19
Author: Eike Rathke <erack at redhat.com>
Date: Thu Nov 2 12:53:14 2017 +0100
Resolves: tdf#111428 swap ScColumn::mnBlkCountFormula
This is a combination of 2 commits.
(cherry picked from commit 423df1fa929784c14e3a133c06468589fe9269cd)
(cherry picked from commit 911e2aff3cc37cb7410292728ffea05fffbfb0b3)
CellStoreEvent remembered the original ScColumn::mnBlkCountFormula,
hence after inserting a column to the left the quick check of
ScColumn::HasFormulaCell() whether there are any formula cells worked on
the swapped in count (originally the one to the right) that happens to
be empty in the scenario. Things worked correctly by accident if the
next column to the right already contained a formula cell.
c44fed96c49bea7365bf1200e06788860966795c
Change-Id: If993856ceee657736f516a81c293506041a6b7eb
Reviewed-on: https://gerrit.libreoffice.org/44210
Reviewed-by: Markus Mohrhard <markus.mohrhard at googlemail.com>
Tested-by: Eike Rathke <erack at redhat.com>
Reviewed-on: https://gerrit.libreoffice.org/44493
diff --git a/sc/source/core/data/column.cxx b/sc/source/core/data/column.cxx
index ac65f8a1b7ca..d868333c8b7a 100644
--- a/sc/source/core/data/column.cxx
+++ b/sc/source/core/data/column.cxx
@@ -1891,6 +1891,9 @@ void ScColumn::SwapCol(ScColumn& rCol)
maCellTextAttrs.swap(rCol.maCellTextAttrs);
maCellNotes.swap(rCol.maCellNotes);
+ // Swap all CellStoreEvent mdds event_func related.
+ std::swap( mnBlkCountFormula, rCol.mnBlkCountFormula);
+
// notes update caption
UpdateNoteCaptions(0, MAXROW);
rCol.UpdateNoteCaptions(0, MAXROW);
commit d71ac6936bd47e4e19d25c2c10c51d41ae759991
Author: Justin Luth <justin_luth at sil.org>
Date: Thu Jul 6 14:54:27 2017 -0400
tdf#103978 textboxhelper: syncProperty OPAQUE (wrap in background)
Although the containing shape is in the background (and thus the
normal paragraph text is still visible), the shape's text
was still painting over top of the normal paragraph text because
the textbox was set as opaque and not transparent.
Setting the textbox to sync the opacity value of its containing shape.
Change-Id: I02477e2fa7def1f13590afcaa7c6564dd79d6406
Reviewed-on: https://gerrit.libreoffice.org/39672
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Justin Luth <justin_luth at sil.org>
(cherry picked from commit cc438f60d6ad0855f754dd32da9c9a80c7cabf92)
Reviewed-on: https://gerrit.libreoffice.org/44431
Reviewed-by: Andras Timar <andras.timar at collabora.com>
diff --git a/sw/qa/extras/uiwriter/data/tdf103978_backgroundTextShape.docx b/sw/qa/extras/uiwriter/data/tdf103978_backgroundTextShape.docx
new file mode 100644
index 000000000000..b99b65e47630
Binary files /dev/null and b/sw/qa/extras/uiwriter/data/tdf103978_backgroundTextShape.docx differ
diff --git a/sw/qa/extras/uiwriter/uiwriter.cxx b/sw/qa/extras/uiwriter/uiwriter.cxx
index 7803895f2fba..c568cb420f40 100644
--- a/sw/qa/extras/uiwriter/uiwriter.cxx
+++ b/sw/qa/extras/uiwriter/uiwriter.cxx
@@ -198,6 +198,7 @@ public:
void testTdf87922();
void testTdf77014();
void testTdf92648();
+ void testTdf103978_backgroundTextShape();
void testTdf96515();
void testTdf96943();
void testTdf96536();
@@ -314,6 +315,7 @@ public:
CPPUNIT_TEST(testTdf87922);
CPPUNIT_TEST(testTdf77014);
CPPUNIT_TEST(testTdf92648);
+ CPPUNIT_TEST(testTdf103978_backgroundTextShape);
CPPUNIT_TEST(testTdf96515);
CPPUNIT_TEST(testTdf96943);
CPPUNIT_TEST(testTdf96536);
@@ -3636,6 +3638,25 @@ void SwUiWriterTest::testTdf92648()
CPPUNIT_ASSERT_EQUAL(sal_Int32(5), nCount);
}
+void SwUiWriterTest::testTdf103978_backgroundTextShape()
+{
+ SwDoc* pDoc = createDoc("tdf103978_backgroundTextShape.docx");
+
+ // there is only one shape. It has an attached textbox
+ bool bShapeIsOpaque = getProperty<bool>(getShape(1), "Opaque");
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Shape is in the foreground", false, bShapeIsOpaque );
+ sal_Int32 nCount = 0;
+ for (const SwFrameFormat* pFormat : *pDoc->GetSpzFrameFormats())
+ {
+ if (!SwTextBoxHelper::isTextBox(pFormat, RES_FLYFRMFMT))
+ continue;
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Textbox syncs the shape's transparency", bShapeIsOpaque, pFormat->GetOpaque().GetValue() );
+ ++nCount;
+ }
+ //ensure that we don't skip the for loop without an error
+ CPPUNIT_ASSERT_EQUAL_MESSAGE("Number of TextBoxes", sal_Int32(1), nCount);
+}
+
void SwUiWriterTest::testTdf96515()
{
// Enable hide whitespace mode.
diff --git a/sw/source/core/doc/textboxhelper.cxx b/sw/source/core/doc/textboxhelper.cxx
index bfa3d3a1836d..bead3f97bd8a 100644
--- a/sw/source/core/doc/textboxhelper.cxx
+++ b/sw/source/core/doc/textboxhelper.cxx
@@ -517,6 +517,9 @@ void SwTextBoxHelper::syncProperty(SwFrameFormat* pShape, sal_uInt16 nWID, sal_u
break;
}
break;
+ case RES_OPAQUE:
+ aPropertyName = UNO_NAME_OPAQUE;
+ break;
}
if (!aPropertyName.isEmpty())
commit 0dda116236e1532f2006f488b974bb9c7067ac5f
Author: Justin Luth <justin_luth at sil.org>
Date: Wed Aug 30 18:08:15 2017 -0400
tdf#104602: don't re-draw page background when bOnlyTextBackground
In 2014 Writer gained support for Paragraph and PageStyle DrawingLayer
FillAttributes, it changed some behaviour with PaintBackground,
so that compat setting BACKGROUND_PARA_OVER_DRAWINGS now overwrote
the entire "hell" layer as the page background was re-applied.
Only DOCX uses this 2012 compatibility setting.
Change-Id: I69517efb7d82acd719d6a27a09ba61554dbf1ec9
Reviewed-on: https://gerrit.libreoffice.org/41744
Reviewed-by: Justin Luth <justin_luth at sil.org>
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Miklos Vajna <vmiklos at collabora.co.uk>
(cherry picked from commit de0993097cad2fd5819f8bea5ff53cddce7cde41)
Reviewed-on: https://gerrit.libreoffice.org/41902
(cherry picked from commit 7117e92448ea328bd4798e873a2faecda748a369)
Reviewed-on: https://gerrit.libreoffice.org/44442
Tested-by: Justin Luth <justin_luth at sil.org>
Reviewed-by: Andras Timar <andras.timar at collabora.com>
diff --git a/sw/source/core/layout/paintfrm.cxx b/sw/source/core/layout/paintfrm.cxx
index ba8fdc916207..68d1440ac520 100644
--- a/sw/source/core/layout/paintfrm.cxx
+++ b/sw/source/core/layout/paintfrm.cxx
@@ -6543,7 +6543,7 @@ void SwFrame::PaintBackground( const SwRect &rRect, const SwPageFrame *pPage,
if( IsTextFrame() || IsSctFrame() )
aPaintRect = UnionFrame( true );
- if ( aPaintRect.IsOver( rRect ) )
+ if ( (!bOnlyTextBackground || IsTextFrame()) && aPaintRect.IsOver( rRect ) )
{
if ( bBack || bPageFrame || !bLowerMode )
{
@@ -6637,7 +6637,6 @@ void SwFrame::PaintBackground( const SwRect &rRect, const SwPageFrame *pPage,
// background transparency have to be considered
// Set missing 5th parameter to the default value GRFNUM_NO
// - see declaration in /core/inc/frmtool.hxx.
- if (IsTextFrame() || !bOnlyTextBackground)
::DrawGraphic(
pItem,
pOut,
@@ -6682,7 +6681,7 @@ void SwFrame::PaintBackground( const SwRect &rRect, const SwPageFrame *pPage,
if ( ( pFrame->IsLayoutFrame() && bLowerBorder ) ||
aFrameRect.IsOver( aRect ) )
pFrame->PaintBackground( aRect, pPage, rTmpAttrs, bLowMode,
- bLowerBorder );
+ bLowerBorder, bOnlyTextBackground );
if ( bLowerBorder )
pFrame->PaintBorder( aBorderRect, pPage, rTmpAttrs );
}
commit 8d366246234e5df784e7596e4c5b21891ae463c1
Author: Szymon Kłos <szymon.klos at collabora.com>
Date: Tue Oct 24 22:39:08 2017 +0200
PPTX export: correct position of rotated groups
* added testcase for tdf#113263
Change-Id: I7abf68d8fb4ffd8b883cfbf4d69916912add8182
Reviewed-on: https://gerrit.libreoffice.org/43794
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/44082
Reviewed-by: Andras Timar <andras.timar at collabora.com>
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index e33dca9f5fe6..40e0c7abe7d2 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -1174,11 +1174,17 @@ void DrawingML::WriteShapeTransformation( const Reference< XShape >& rXShape, sa
awt::Point aPos = rXShape->getPosition();
awt::Size aSize = rXShape->getSize();
+ bool bPositiveY = true;
+ bool bPositiveX = true;
+
if (m_xParent.is())
{
awt::Point aParentPos = m_xParent->getPosition();
aPos.X -= aParentPos.X;
aPos.Y -= aParentPos.Y;
+
+ bPositiveX = aParentPos.X > 0;
+ bPositiveY = aParentPos.Y > 0;
}
if ( aSize.Width < 0 )
@@ -1196,6 +1202,17 @@ void DrawingML::WriteShapeTransformation( const Reference< XShape >& rXShape, sa
aPos.X-=(1-faccos*cos(nRotation*F_PI18000))*aSize.Width/2-facsin*sin(nRotation*F_PI18000)*aSize.Height/2;
aPos.Y-=(1-faccos*cos(nRotation*F_PI18000))*aSize.Height/2+facsin*sin(nRotation*F_PI18000)*aSize.Width/2;
}
+ else if(nRotation == 18000)
+ {
+ if (!bFlipV && bPositiveX)
+ {
+ aPos.X -= aSize.Width;
+ }
+ if (!bFlipH && bPositiveY)
+ {
+ aPos.Y -= aSize.Height;
+ }
+ }
// The RotateAngle property's value is independent from any flipping, and that's exactly what we need here.
uno::Reference<beans::XPropertySet> xPropertySet(rXShape, uno::UNO_QUERY);
diff --git a/sd/qa/unit/data/pptx/group-rot.pptx b/sd/qa/unit/data/pptx/group-rot.pptx
new file mode 100755
index 000000000000..11b2d6367da0
Binary files /dev/null and b/sd/qa/unit/data/pptx/group-rot.pptx differ
diff --git a/sd/qa/unit/data/pptx/group.pptx b/sd/qa/unit/data/pptx/group.pptx
new file mode 100755
index 000000000000..8895fe2a2203
Binary files /dev/null and b/sd/qa/unit/data/pptx/group.pptx differ
diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx
index edac049c2ba7..9bad50abbdab 100644
--- a/sd/qa/unit/export-tests-ooxml2.cxx
+++ b/sd/qa/unit/export-tests-ooxml2.cxx
@@ -109,6 +109,8 @@ public:
void testTdf112552();
void testTdf112647();
void testSmartartRotation2();
+ void testGroupsPosition();
+ void testGroupsRotatedPosition();
void testAccentColor();
CPPUNIT_TEST_SUITE(SdOOXMLExportTest2);
@@ -140,6 +142,8 @@ public:
CPPUNIT_TEST(testTdf112552);
CPPUNIT_TEST(testTdf112647);
CPPUNIT_TEST(testSmartartRotation2);
+ CPPUNIT_TEST(testGroupsPosition);
+ CPPUNIT_TEST(testGroupsRotatedPosition);
CPPUNIT_TEST(testAccentColor);
CPPUNIT_TEST_SUITE_END();
@@ -842,6 +846,32 @@ void SdOOXMLExportTest2::testSmartartRotation2()
assertXPath(pXmlDocContent, "/p:sld/p:cSld/p:spTree/p:sp[3]/p:txBody/a:bodyPr", "rot", "10800000");
}
+void SdOOXMLExportTest2::testGroupsPosition()
+{
+ ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/group.pptx"), PPTX);
+ utl::TempFile tempFile;
+ xDocShRef = saveAndReload(xDocShRef.get(), PPTX, &tempFile);
+ xDocShRef->DoClose();
+
+ xmlDocPtr pXmlDocContent = parseExport(tempFile, "ppt/slides/slide1.xml");
+ assertXPath(pXmlDocContent, "/p:sld/p:cSld/p:spTree/p:sp[3]/p:spPr/a:xfrm/a:off", "x", "4817880");
+ assertXPath(pXmlDocContent, "/p:sld/p:cSld/p:spTree/p:sp[3]/p:spPr/a:xfrm/a:off", "y", "1810440");
+ assertXPath(pXmlDocContent, "/p:sld/p:cSld/p:spTree/p:sp[1]/p:spPr/a:xfrm/a:off", "x", "457200");
+ assertXPath(pXmlDocContent, "/p:sld/p:cSld/p:spTree/p:sp[1]/p:spPr/a:xfrm/a:off", "y", "1798560");
+}
+
+void SdOOXMLExportTest2::testGroupsRotatedPosition()
+{
+ ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/group-rot.pptx"), PPTX);
+ utl::TempFile tempFile;
+ xDocShRef = saveAndReload(xDocShRef.get(), PPTX, &tempFile);
+ xDocShRef->DoClose();
+
+ xmlDocPtr pXmlDocContent = parseExport(tempFile, "ppt/slides/slide1.xml");
+ assertXPath(pXmlDocContent, "/p:sld/p:cSld/p:spTree/p:sp[3]/p:spPr/a:xfrm/a:off", "x", "2857320");
+ assertXPath(pXmlDocContent, "/p:sld/p:cSld/p:spTree/p:sp[3]/p:spPr/a:xfrm/a:off", "y", "4026960");
+}
+
void SdOOXMLExportTest2::testAccentColor()
{
::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/accent-color.pptx"), PPTX);
commit c344d74a6961ec39685d718fbb7c29dd186ca0a4
Author: Szymon Kłos <szymon.klos at collabora.com>
Date: Tue Oct 17 22:14:38 2017 +0200
PPTX export: remember color schemes in theme
Remember color scheme from loaded pptx file
or use default values.
Change-Id: Icb69c51603afc5f332c20c75e4ed5f659f4b5614
Reviewed-on: https://gerrit.libreoffice.org/43470
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/44081
Reviewed-by: Andras Timar <andras.timar at collabora.com>
diff --git a/include/oox/drawingml/clrscheme.hxx b/include/oox/drawingml/clrscheme.hxx
index ccb1517e44eb..ccf918d7ba74 100644
--- a/include/oox/drawingml/clrscheme.hxx
+++ b/include/oox/drawingml/clrscheme.hxx
@@ -28,9 +28,42 @@
#include <oox/dllapi.h>
#include <sal/types.h>
+#include <rtl/ustring.hxx>
namespace oox { namespace drawingml {
+enum PredefinedClrSchemeId {
+ //dk1,
+ //lt1,
+ dk2 = 0,
+ lt2,
+ accent1,
+ accent2,
+ accent3,
+ accent4,
+ accent5,
+ accent6,
+ hlink,
+ folHlink,
+ Count
+};
+
+static std::map<PredefinedClrSchemeId, rtl::OUString> PredefinedClrNames =
+{
+ //{ dk1, "dk1" },
+ //{ lt1, "lt1" },
+ { dk2, "dk2" },
+ { lt2, "lt2" },
+ { accent1, "accent1" },
+ { accent2, "accent2" },
+ { accent3, "accent3" },
+ { accent4, "accent4" },
+ { accent5, "accent5" },
+ { accent6, "accent6" },
+ { hlink, "hlink" },
+ { folHlink, "folHlink" }
+};
+
class ClrMap
{
std::map < sal_Int32, sal_Int32 > maClrMap;
diff --git a/include/oox/export/utils.hxx b/include/oox/export/utils.hxx
index 599e45ee55f8..9f13cf87c4c8 100644
--- a/include/oox/export/utils.hxx
+++ b/include/oox/export/utils.hxx
@@ -24,8 +24,19 @@
#include <rtl/textenc.h>
#include <sal/types.h>
-#define I32S(x) OString::number( (sal_Int32) x ).getStr()
-#define I64S(x) OString::number( (sal_Int64) x ).getStr()
+inline OString I32S_(sal_Int32 x) { return OString::number(x); }
+inline OString I32SHEX_(sal_Int32 x)
+{
+ OString aStr = OString::number(x, 16);
+ while (aStr.getLength() < 6)
+ aStr = OString("0") + aStr;
+ return aStr.getStr();
+}
+inline OString I64S_(sal_Int64 x) { return OString::number(x); }
+inline OString DS_(double x) { return OString::number(x); }
+#define I32S(x) I32S_(x).getStr()
+#define I32SHEX(x) I32SHEX_(x).getStr()
+#define I64S(x) I64S_(x).getStr()
#define IS(x) OString::number( x ).getStr()
#define BS(x) (x ? "1":"0")
#define USS(x) OUStringToOString( x, RTL_TEXTENCODING_UTF8 ).getStr()
diff --git a/include/oox/ppt/presentationfragmenthandler.hxx b/include/oox/ppt/presentationfragmenthandler.hxx
index aeda119cd2f1..637e70643be7 100644
--- a/include/oox/ppt/presentationfragmenthandler.hxx
+++ b/include/oox/ppt/presentationfragmenthandler.hxx
@@ -53,6 +53,7 @@ protected:
private:
void importSlide(sal_uInt32 nSlide, bool bFirstSlide, bool bImportNotes);
+ void saveThemeToGrabBag(oox::drawingml::ThemePtr pThemePtr, const OUString& sTheme);
std::vector< OUString > maSlideMasterVector;
std::vector< OUString > maSlidesVector;
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 14f7c363ec4b..e33dca9f5fe6 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -2790,7 +2790,7 @@ void DrawingML::WriteStyleProperties( sal_Int32 nTokenId, const Sequence< Proper
aProperties[i].Value >>= aTransformations;
}
mpFS->startElementNS( XML_a, nTokenId, XML_idx, I32S( nIdx ), FSEND );
- WriteColor( sSchemeClr, aTransformations );
+ WriteColor(sSchemeClr, aTransformations);
mpFS->endElementNS( XML_a, nTokenId );
}
else
diff --git a/oox/source/ppt/presentationfragmenthandler.cxx b/oox/source/ppt/presentationfragmenthandler.cxx
index b67eb8b56817..3aa58f62c7bd 100644
--- a/oox/source/ppt/presentationfragmenthandler.cxx
+++ b/oox/source/ppt/presentationfragmenthandler.cxx
@@ -61,6 +61,22 @@ using namespace ::com::sun::star::xml::sax;
namespace oox { namespace ppt {
+static std::map<PredefinedClrSchemeId, sal_Int32> PredefinedClrTokens =
+{
+ //{ dk1, XML_dk1 },
+ //{ lt1, XML_lt1 },
+ { dk2, XML_dk2 },
+ { lt2, XML_lt2 },
+ { accent1, XML_accent1 },
+ { accent2, XML_accent2 },
+ { accent3, XML_accent3 },
+ { accent4, XML_accent4 },
+ { accent5, XML_accent5 },
+ { accent6, XML_accent6 },
+ { hlink, XML_hlink },
+ { folHlink, XML_folHlink }
+};
+
PresentationFragmentHandler::PresentationFragmentHandler( XmlFilterBase& rFilter, const OUString& rFragmentPath ) throw()
: FragmentHandler2( rFilter, rFragmentPath )
, mpTextListStyle( new TextListStyle )
@@ -140,6 +156,65 @@ void ResolveTextFields( XmlFilterBase& rFilter )
}
}
+void PresentationFragmentHandler::saveThemeToGrabBag(oox::drawingml::ThemePtr pThemePtr, const OUString& sTheme)
+{
+ if (!pThemePtr)
+ return;
+
+ try
+ {
+ uno::Reference<beans::XPropertySet> xDocProps(getFilter().getModel(), uno::UNO_QUERY);
+ if (xDocProps.is())
+ {
+ uno::Reference<beans::XPropertySetInfo> xPropsInfo = xDocProps->getPropertySetInfo();
+
+ const OUString aGrabBagPropName = "InteropGrabBag";
+ if (xPropsInfo.is() && xPropsInfo->hasPropertyByName(aGrabBagPropName))
+ {
+ // get existing grab bag
+ comphelper::SequenceAsHashMap aGrabBag(xDocProps->getPropertyValue(aGrabBagPropName));
+
+ uno::Sequence<beans::PropertyValue> aTheme(1);
+ comphelper::SequenceAsHashMap aThemesHashMap;
+
+ // create current theme
+ uno::Sequence<beans::PropertyValue> aCurrentTheme(PredefinedClrSchemeId::Count);
+
+ ClrScheme rClrScheme = pThemePtr->getClrScheme();
+ for (int nId = PredefinedClrSchemeId::dk2; nId != PredefinedClrSchemeId::Count; nId++)
+ {
+ sal_uInt32 nToken = PredefinedClrTokens[static_cast<PredefinedClrSchemeId>(nId)];
+ const OUString& sName = PredefinedClrNames[static_cast<PredefinedClrSchemeId>(nId)];
+ sal_Int32 nColor = 0;
+
+ rClrScheme.getColor(nToken, nColor);
+ const uno::Any& rColor = uno::makeAny(nColor);
+
+ aCurrentTheme[nId].Name = sName;
+ aCurrentTheme[nId].Value = rColor;
+ }
+
+ // add new theme to the sequence
+ aTheme[0].Name = sTheme;
+ const uno::Any& rCurrentTheme = makeAny(aCurrentTheme);
+ aTheme[0].Value = rCurrentTheme;
+
+ aThemesHashMap << aTheme;
+
+ // put the new items
+ aGrabBag.update(aThemesHashMap);
+
+ // put it back to the document
+ xDocProps->setPropertyValue(aGrabBagPropName, uno::Any(aGrabBag.getAsConstPropertyValueList()));
+ }
+ }
+ }
+ catch (const uno::Exception&)
+ {
+ SAL_WARN("oox", "oox::ppt::PresentationFragmentHandler::saveThemeToGrabBag, Failed to save grab bag");
+ }
+}
+
void PresentationFragmentHandler::importSlide(sal_uInt32 nSlide, bool bFirstPage, bool bImportNotesPage)
{
PowerPointImport& rFilter = dynamic_cast< PowerPointImport& >( getFilter() );
@@ -229,6 +304,7 @@ void PresentationFragmentHandler::importSlide(sal_uInt32 nSlide, bool bFirstPage
UNO_QUERY_THROW));
rThemes[ aThemeFragmentPath ] = pThemePtr;
pThemePtr->setFragment(xDoc);
+ saveThemeToGrabBag(pThemePtr, aThemeFragmentPath);
}
else
{
diff --git a/sd/qa/unit/data/pptx/accent-color.pptx b/sd/qa/unit/data/pptx/accent-color.pptx
new file mode 100755
index 000000000000..b23de21776a2
Binary files /dev/null and b/sd/qa/unit/data/pptx/accent-color.pptx differ
diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx
index 12cdd1580806..edac049c2ba7 100644
--- a/sd/qa/unit/export-tests-ooxml2.cxx
+++ b/sd/qa/unit/export-tests-ooxml2.cxx
@@ -109,6 +109,7 @@ public:
void testTdf112552();
void testTdf112647();
void testSmartartRotation2();
+ void testAccentColor();
CPPUNIT_TEST_SUITE(SdOOXMLExportTest2);
@@ -139,6 +140,7 @@ public:
CPPUNIT_TEST(testTdf112552);
CPPUNIT_TEST(testTdf112647);
CPPUNIT_TEST(testSmartartRotation2);
+ CPPUNIT_TEST(testAccentColor);
CPPUNIT_TEST_SUITE_END();
@@ -840,6 +842,23 @@ void SdOOXMLExportTest2::testSmartartRotation2()
assertXPath(pXmlDocContent, "/p:sld/p:cSld/p:spTree/p:sp[3]/p:txBody/a:bodyPr", "rot", "10800000");
}
+void SdOOXMLExportTest2::testAccentColor()
+{
+ ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/accent-color.pptx"), PPTX);
+ utl::TempFile tempFile;
+ xDocShRef = saveAndReload(xDocShRef.get(), PPTX, &tempFile);
+ xDocShRef->DoClose();
+
+ xmlDocPtr pXmlDocContent1 = parseExport(tempFile, "ppt/slides/slide1.xml");
+ assertXPath(pXmlDocContent1, "/p:sld/p:cSld/p:spTree/p:sp/p:style/a:fillRef/a:schemeClr", "val", "accent6");
+ xmlDocPtr pXmlDocContent2 = parseExport(tempFile, "ppt/slides/slide2.xml");
+ assertXPath(pXmlDocContent2, "/p:sld/p:cSld/p:spTree/p:sp/p:style/a:fillRef/a:schemeClr", "val", "accent6");
+ xmlDocPtr pXmlDocTheme1 = parseExport(tempFile, "ppt/theme/theme1.xml");
+ assertXPath(pXmlDocTheme1, "/a:theme/a:themeElements/a:clrScheme/a:accent6/a:srgbClr", "val", "70ad47");
+ xmlDocPtr pXmlDocTheme2 = parseExport(tempFile, "ppt/theme/theme2.xml");
+ assertXPath(pXmlDocTheme2, "/a:theme/a:themeElements/a:clrScheme/a:accent6/a:srgbClr", "val", "deb340");
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(SdOOXMLExportTest2);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/sd/source/filter/eppt/epptooxml.hxx b/sd/source/filter/eppt/epptooxml.hxx
index 178261b7e449..c38be6881d2c 100644
--- a/sd/source/filter/eppt/epptooxml.hxx
+++ b/sd/source/filter/eppt/epptooxml.hxx
@@ -26,6 +26,8 @@
#include <oox/export/shapes.hxx>
#include "epptbase.hxx"
+using ::sax_fastparser::FSHelperPtr;
+
namespace com { namespace sun { namespace star {
namespace animations {
class XAnimate;
@@ -92,6 +94,8 @@ protected:
virtual void ImplWriteSlideMaster( sal_uInt32 nPageNum, css::uno::Reference< css::beans::XPropertySet > const & aXBackgroundPropSet ) override;
virtual void ImplWriteLayout( sal_Int32 nOffset, sal_uInt32 nMasterNum ) override;
void ImplWritePPTXLayout( sal_Int32 nOffset, sal_uInt32 nMasterNum );
+ bool WriteColorSchemes(FSHelperPtr pFS, const OUString& rThemePath);
+ static void WriteDefaultColorSchemes(FSHelperPtr pFS);
void WriteTheme( sal_Int32 nThemeNum );
virtual bool ImplCreateDocument() override;
diff --git a/sd/source/filter/eppt/pptx-epptooxml.cxx b/sd/source/filter/eppt/pptx-epptooxml.cxx
index 03ddcd056e3f..0ac4d87f6dbf 100644
--- a/sd/source/filter/eppt/pptx-epptooxml.cxx
+++ b/sd/source/filter/eppt/pptx-epptooxml.cxx
@@ -20,6 +20,8 @@
#include <stdio.h>
#include <o3tl/any.hxx>
#include <oox/drawingml/chart/chartconverter.hxx>
+#include <oox/drawingml/clrscheme.hxx>
+#include <oox/token/namespaces.hxx>
#include <oox/token/tokens.hxx>
#include <oox/ole/vbaproject.hxx>
#include <epptooxml.hxx>
@@ -28,6 +30,7 @@
#include <cppuhelper/implementationentry.hxx>
#include <cppuhelper/factory.hxx>
+#include <comphelper/sequenceashashmap.hxx>
#include <sax/fshelper.hxx>
#include <rtl/ustrbuf.hxx>
#include <filter/msfilter/escherex.hxx>
@@ -67,6 +70,7 @@
#include <com/sun/star/document/XDocumentPropertiesSupplier.hpp>
// presentation namespaces
+#define DMLNS "http://schemas.openxmlformats.org/drawingml/2006/main"
#define PNMSS FSNS(XML_xmlns, XML_a), "http://schemas.openxmlformats.org/drawingml/2006/main", \
FSNS(XML_xmlns, XML_p), "http://schemas.openxmlformats.org/presentationml/2006/main", \
FSNS(XML_xmlns, XML_r), "http://schemas.openxmlformats.org/officeDocument/2006/relationships", \
@@ -1958,46 +1962,14 @@ ShapeExport& PowerPointShapeExport::WritePlaceholderShape( const Reference< XSha
return *this;
}
-#define MINIMAL_THEME " <a:themeElements>\
- <a:clrScheme name=\"Office\">\
- <a:dk1>\
+#define SYS_COLOR_SCHEMES " <a:dk1>\
<a:sysClr val=\"windowText\" lastClr=\"000000\"/>\
</a:dk1>\
<a:lt1>\
<a:sysClr val=\"window\" lastClr=\"FFFFFF\"/>\
- </a:lt1>\
- <a:dk2>\
- <a:srgbClr val=\"1F497D\"/>\
- </a:dk2>\
- <a:lt2>\
- <a:srgbClr val=\"EEECE1\"/>\
- </a:lt2>\
- <a:accent1>\
- <a:srgbClr val=\"4F81BD\"/>\
- </a:accent1>\
- <a:accent2>\
- <a:srgbClr val=\"C0504D\"/>\
- </a:accent2>\
- <a:accent3>\
- <a:srgbClr val=\"9BBB59\"/>\
- </a:accent3>\
- <a:accent4>\
- <a:srgbClr val=\"8064A2\"/>\
- </a:accent4>\
- <a:accent5>\
- <a:srgbClr val=\"4BACC6\"/>\
- </a:accent5>\
- <a:accent6>\
- <a:srgbClr val=\"F79646\"/>\
- </a:accent6>\
- <a:hlink>\
- <a:srgbClr val=\"0000FF\"/>\
- </a:hlink>\
- <a:folHlink>\
- <a:srgbClr val=\"800080\"/>\
- </a:folHlink>\
- </a:clrScheme>\
- <a:fontScheme name=\"Office\">\
+ </a:lt1>"
+
+#define MINIMAL_THEME " <a:fontScheme name=\"Office\">\
<a:majorFont>\
<a:latin typeface=\"Arial\"/>\
<a:ea typeface=\"DejaVu Sans\"/>\
@@ -2174,25 +2146,163 @@ ShapeExport& PowerPointShapeExport::WritePlaceholderShape( const Reference< XSha
</a:path>\
</a:gradFill>\
</a:bgFillStyleLst>\
- </a:fmtScheme>\
- </a:themeElements>"
+ </a:fmtScheme>"
+
+void PowerPointExport::WriteDefaultColorSchemes(FSHelperPtr pFS)
+{
+ for (int nId = PredefinedClrSchemeId::dk2; nId != PredefinedClrSchemeId::Count; nId++)
+ {
+ OUString sName = PredefinedClrNames[static_cast<PredefinedClrSchemeId>(nId)];
+ sal_Int32 nColor = 0;
+
+ switch (nId)
+ {
+ case PredefinedClrSchemeId::dk2:
+ nColor = 0x1F497D;
+ break;
+ case PredefinedClrSchemeId::lt2:
+ nColor = 0xEEECE1;
+ break;
+ case PredefinedClrSchemeId::accent1:
+ nColor = 0x4F81BD;
+ break;
+ case PredefinedClrSchemeId::accent2:
+ nColor = 0xC0504D;
+ break;
+ case PredefinedClrSchemeId::accent3:
+ nColor = 0x9BBB59;
+ break;
+ case PredefinedClrSchemeId::accent4:
+ nColor = 0x8064A2;
+ break;
+ case PredefinedClrSchemeId::accent5:
+ nColor = 0x4BACC6;
+ break;
+ case PredefinedClrSchemeId::accent6:
+ nColor = 0xF79646;
+ break;
+ case PredefinedClrSchemeId::hlink:
+ nColor = 0x0000FF;
+ break;
+ case PredefinedClrSchemeId::folHlink:
+ nColor = 0x800080;
+ break;
+ }
+
+ OUString sOpenColorScheme = OUStringBuffer()
+ .append("<a:")
+ .append(sName)
+ .append(">")
+ .makeStringAndClear();
+ pFS->write(sOpenColorScheme);
+
+ pFS->singleElementNS(XML_a, XML_srgbClr, XML_val, I32SHEX(nColor), FSEND);
+
+ OUString sCloseColorScheme = OUStringBuffer()
+ .append("</a:")
+ .append(sName)
+ .append(">")
+ .makeStringAndClear();
+ pFS->write(sCloseColorScheme);
+ }
+}
+
+bool PowerPointExport::WriteColorSchemes(FSHelperPtr pFS, const OUString& rThemePath)
+{
+ try
+ {
+ uno::Reference<beans::XPropertySet> xDocProps(getModel(), uno::UNO_QUERY);
+ if (xDocProps.is())
+ {
+ uno::Reference<beans::XPropertySetInfo> xPropsInfo = xDocProps->getPropertySetInfo();
+
+ const OUString aGrabBagPropName = "InteropGrabBag";
+ if (xPropsInfo.is() && xPropsInfo->hasPropertyByName(aGrabBagPropName))
+ {
+ comphelper::SequenceAsHashMap aGrabBag(xDocProps->getPropertyValue(aGrabBagPropName));
+ uno::Sequence<beans::PropertyValue> aCurrentTheme;
+
+ aGrabBag.getValue(rThemePath) >>= aCurrentTheme;
+
+ // Order is important
+ for (int nId = PredefinedClrSchemeId::dk2; nId != PredefinedClrSchemeId::Count; nId++)
+ {
+ OUString sName = PredefinedClrNames[static_cast<PredefinedClrSchemeId>(nId)];
+ sal_Int32 nColor = 0;
+
+ for (auto aIt = aCurrentTheme.begin(); aIt != aCurrentTheme.end(); aIt++)
+ {
+ if (aIt->Name == sName)
+ {
+ aIt->Value >>= nColor;
+ break;
+ }
+ }
+
+ OUString sOpenColorScheme = OUStringBuffer()
+ .append("<a:")
+ .append(sName)
+ .append(">")
+ .makeStringAndClear();
+ pFS->write(sOpenColorScheme);
+
+ pFS->singleElementNS(XML_a, XML_srgbClr, XML_val, I32SHEX(nColor), FSEND);
+
+ OUString sCloseColorScheme = OUStringBuffer()
+ .append("</a:")
+ .append(sName)
+ .append(">")
+ .makeStringAndClear();
+ pFS->write(sCloseColorScheme);
+ }
+
+ // TODO: write complete color schemes & only if successful, protection against partial export
+ return true;
+ }
+ }
+ }
+ catch (const uno::Exception&)
+ {
+ SAL_WARN("writerfilter", "Failed to save documents grab bag");
+ }
+
+ return false;
+}
void PowerPointExport::WriteTheme( sal_Int32 nThemeNum )
{
- FSHelperPtr pFS = openFragmentStreamWithSerializer( OUStringBuffer()
- .append( "ppt/theme/theme" )
- .append( (sal_Int32) nThemeNum + 1 )
- .append( ".xml" )
- .makeStringAndClear(),
- "application/vnd.openxmlformats-officedocument.theme+xml" );
-
- pFS->startElementNS( XML_a, XML_theme,
- FSNS( XML_xmlns, XML_a), "http://schemas.openxmlformats.org/drawingml/2006/main",
- XML_name, "Office Theme",
- FSEND );
+ OUString sThemePath = OUStringBuffer()
+ .append("ppt/theme/theme")
+ .append(nThemeNum + 1)
+ .append(".xml")
+ .makeStringAndClear();
+
+ FSHelperPtr pFS = openFragmentStreamWithSerializer(sThemePath,
+ "application/vnd.openxmlformats-officedocument.theme+xml");
+
+ pFS->startElementNS(XML_a, XML_theme,
+ FSNS(XML_xmlns, XML_a), OString(DMLNS),
+ XML_name, "Office Theme",
+ FSEND);
+
+ pFS->startElementNS(XML_a, XML_themeElements, FSEND);
+ pFS->startElementNS(XML_a, XML_clrScheme, XML_name, "Office", FSEND);
+
+ pFS->write(SYS_COLOR_SCHEMES);
+
+ if (!WriteColorSchemes(pFS, sThemePath))
+ {
+ // color schemes are required - use default values
+ WriteDefaultColorSchemes(pFS);
+ }
+
+ pFS->endElementNS(XML_a, XML_clrScheme);
+
+ // export remaining part
+ pFS->write(MINIMAL_THEME);
- pFS->write( MINIMAL_THEME );
- pFS->endElementNS( XML_a, XML_theme );
+ pFS->endElementNS(XML_a, XML_themeElements);
+ pFS->endElementNS(XML_a, XML_theme);
}
bool PowerPointExport::ImplCreateDocument()
commit 54293c1fae0c774c72a8564a25844aecf6d40f7f
Author: Szymon Kłos <szymon.klos at collabora.com>
Date: Fri Oct 6 16:04:25 2017 +0200
SmartArt: export text rotation in the PPTX
Change-Id: I74bfc172fe7434d14de468ecfd3412636e53780c
Reviewed-on: https://gerrit.libreoffice.org/43202
Tested-by: Jenkins <ci at libreoffice.org>
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/44080
Reviewed-by: Andras Timar <andras.timar at collabora.com>
Tested-by: Andras Timar <andras.timar at collabora.com>
diff --git a/include/oox/drawingml/drawingmltypes.hxx b/include/oox/drawingml/drawingmltypes.hxx
index 2aac13c669a7..aaed34b11ab9 100644
--- a/include/oox/drawingml/drawingmltypes.hxx
+++ b/include/oox/drawingml/drawingmltypes.hxx
@@ -150,6 +150,21 @@ struct IndexRange {
/** retrieve the content of CT_IndexRange */
IndexRange GetIndexRange( const css::uno::Reference< css::xml::sax::XFastAttributeList >& xAttributes );
+/**
+* nRotation is a 100th of a degree and the return value is
+* in a 60,000th of a degree
+*
+* Also rotation is in opposite directions so multiply with -1
+*/
+inline OString calcRotationValue(sal_Int32 nRotation)
+{
+ if (nRotation > 18000) // 180 degree
+ {
+ nRotation -= 36000;
+ }
+ nRotation *= -600;
+ return OString::number(nRotation);
+}
const sal_Int32 EMU_PER_HMM = 360; /// 360 EMUs per 1/100 mm.
diff --git a/oox/source/export/chartexport.cxx b/oox/source/export/chartexport.cxx
index 41faecacdbdb..e2c386194d0b 100644
--- a/oox/source/export/chartexport.cxx
+++ b/oox/source/export/chartexport.cxx
@@ -1038,26 +1038,6 @@ void ChartExport::exportLegend( const Reference< css::chart::XChartDocument >& x
pFS->endElement( FSNS( XML_c, XML_legend ) );
}
-namespace {
-
-/**
- * nRotation is a 100th of a degree and the return value is
- * in a 60,000th of a degree
- *
- * Also rotation is in opposite directions so multiply with -1
- */
-OString calcRotationValue(sal_Int32 nRotation)
-{
- if (nRotation > 18000) // 180 degree
- {
- nRotation -= 36000;
- }
- nRotation *= -600;
- return OString::number(nRotation);
-}
-
-}
-
void ChartExport::exportTitle( const Reference< XShape >& xShape )
{
OUString sText;
@@ -1090,7 +1070,7 @@ void ChartExport::exportTitle( const Reference< XShape >& xShape )
pFS->singleElement( FSNS( XML_a, XML_bodyPr ),
XML_vert, sWritingMode,
- XML_rot, calcRotationValue(nRotation).getStr(),
+ XML_rot, oox::drawingml::calcRotationValue(nRotation).getStr(),
FSEND );
// TODO: lstStyle
pFS->singleElement( FSNS( XML_a, XML_lstStyle ),
diff --git a/oox/source/export/drawingml.cxx b/oox/source/export/drawingml.cxx
index 4f1aa7223ee1..14f7c363ec4b 100644
--- a/oox/source/export/drawingml.cxx
+++ b/oox/source/export/drawingml.cxx
@@ -2079,6 +2079,8 @@ void DrawingML::WriteText( const Reference< XInterface >& rXIface, const OUStrin
if( !xXText.is() )
return;
+ sal_Int32 nTextRotateAngle = 0;
+
#define DEFLRINS 254
#define DEFTBINS 127
sal_Int32 nLeft, nRight, nTop, nBottom;
@@ -2118,7 +2120,6 @@ void DrawingML::WriteText( const Reference< XInterface >& rXIface, const OUStrin
{
for ( sal_Int32 i = 0, nElems = aProps.getLength(); i < nElems; ++i )
{
- sal_Int32 nTextRotateAngle = 0;
if ( aProps[ i ].Name == "TextPreRotateAngle" && ( aProps[ i ].Value >>= nTextRotateAngle ) )
{
if ( nTextRotateAngle == -90 )
@@ -2175,6 +2176,7 @@ void DrawingML::WriteText( const Reference< XInterface >& rXIface, const OUStrin
XML_anchor, sVerticalAlignment,
XML_anchorCtr, bHorizontalCenter ? "1" : nullptr,
XML_vert, sWritingMode,
+ XML_rot, (nTextRotateAngle != 0) ? oox::drawingml::calcRotationValue( nTextRotateAngle * 100 ).getStr() : nullptr,
FSEND );
if( !presetWarp.isEmpty())
{
diff --git a/sd/qa/unit/data/pptx/smartart-rotation2.pptx b/sd/qa/unit/data/pptx/smartart-rotation2.pptx
new file mode 100755
index 000000000000..e1c4493a7407
Binary files /dev/null and b/sd/qa/unit/data/pptx/smartart-rotation2.pptx differ
diff --git a/sd/qa/unit/export-tests-ooxml2.cxx b/sd/qa/unit/export-tests-ooxml2.cxx
index 4b467568921b..12cdd1580806 100644
--- a/sd/qa/unit/export-tests-ooxml2.cxx
+++ b/sd/qa/unit/export-tests-ooxml2.cxx
@@ -108,6 +108,7 @@ public:
void testTdf105739();
void testTdf112552();
void testTdf112647();
+ void testSmartartRotation2();
CPPUNIT_TEST_SUITE(SdOOXMLExportTest2);
@@ -137,6 +138,7 @@ public:
CPPUNIT_TEST(testTdf105739);
CPPUNIT_TEST(testTdf112552);
CPPUNIT_TEST(testTdf112647);
+ CPPUNIT_TEST(testSmartartRotation2);
CPPUNIT_TEST_SUITE_END();
@@ -827,6 +829,17 @@ void SdOOXMLExportTest2::testTdf112647()
xDocShRef->DoClose();
}
+void SdOOXMLExportTest2::testSmartartRotation2()
+{
+ ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/smartart-rotation2.pptx"), PPTX);
+ utl::TempFile tempFile;
+ xDocShRef = saveAndReload(xDocShRef.get(), PPTX, &tempFile);
+ xDocShRef->DoClose();
+
+ xmlDocPtr pXmlDocContent = parseExport(tempFile, "ppt/slides/slide1.xml");
+ assertXPath(pXmlDocContent, "/p:sld/p:cSld/p:spTree/p:sp[3]/p:txBody/a:bodyPr", "rot", "10800000");
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(SdOOXMLExportTest2);
CPPUNIT_PLUGIN_IMPLEMENT();
commit e7a0948db44f049b1cf03a6e6fcaca7e63e88ac2
Author: Szymon Kłos <szymon.klos at collabora.com>
Date: Thu Oct 26 10:33:45 2017 +0200
ODP: export TextPreRotateAngle
Change-Id: I13eb005195ebbdee5016bf279cba423e388723a0
Reviewed-on: https://gerrit.libreoffice.org/43910
Reviewed-by: Szymon Kłos <szymon.klos at collabora.com>
Tested-by: Szymon Kłos <szymon.klos at collabora.com>
Reviewed-on: https://gerrit.libreoffice.org/44079
Reviewed-by: Andras Timar <andras.timar at collabora.com>
Tested-by: Andras Timar <andras.timar at collabora.com>
diff --git a/sd/qa/unit/data/pptx/shape-text-rotate.pptx b/sd/qa/unit/data/pptx/shape-text-rotate.pptx
new file mode 100755
index 000000000000..4a433c748d32
Binary files /dev/null and b/sd/qa/unit/data/pptx/shape-text-rotate.pptx differ
diff --git a/sd/qa/unit/export-tests.cxx b/sd/qa/unit/export-tests.cxx
index 6bbb2a53648b..f7240647814d 100644
--- a/sd/qa/unit/export-tests.cxx
+++ b/sd/qa/unit/export-tests.cxx
@@ -93,6 +93,7 @@ public:
void testTdf62176();
void testTransparentBackground();
void testEmbeddedPdf();
+ void testTextRotation();
CPPUNIT_TEST_SUITE(SdExportTest);
@@ -108,6 +109,7 @@ public:
CPPUNIT_TEST(testTdf62176);
CPPUNIT_TEST(testTransparentBackground);
CPPUNIT_TEST(testEmbeddedPdf);
+ CPPUNIT_TEST(testTextRotation);
CPPUNIT_TEST_SUITE_END();
@@ -653,6 +655,28 @@ void SdExportTest::testEmbeddedPdf()
#endif
}
+void SdExportTest::testTextRotation()
+{
+ ::sd::DrawDocShellRef xDocShRef = loadURL(m_directories.getURLFromSrc("sd/qa/unit/data/pptx/shape-text-rotate.pptx"), PPTX);
+ utl::TempFile tempFile;
+ xDocShRef = saveAndReload(xDocShRef.get(), ODP, &tempFile);
+
+ uno::Reference<drawing::XDrawPage> xPage(getPage(0, xDocShRef));
+ uno::Reference<beans::XPropertySet> xPropSet(getShape(0, xPage));
+
+ CPPUNIT_ASSERT(xPropSet.is());
+
+ auto aGeomPropSeq = xPropSet->getPropertyValue("CustomShapeGeometry").get<uno::Sequence<beans::PropertyValue>>();
+ comphelper::SequenceAsHashMap aCustomShapeGeometry(aGeomPropSeq);
+
+ auto it = aCustomShapeGeometry.find("TextRotateAngle");
+ CPPUNIT_ASSERT(it != aCustomShapeGeometry.end());
+
+ CPPUNIT_ASSERT_EQUAL((double)(-90), aCustomShapeGeometry["TextRotateAngle"].get<double>());
+
+ xDocShRef->DoClose();
+}
+
CPPUNIT_TEST_SUITE_REGISTRATION(SdExportTest);
CPPUNIT_PLUGIN_IMPLEMENT();
diff --git a/xmloff/inc/EnhancedCustomShapeToken.hxx b/xmloff/inc/EnhancedCustomShapeToken.hxx
index dafe8b8ec8ec..92e200333dbc 100644
--- a/xmloff/inc/EnhancedCustomShapeToken.hxx
+++ b/xmloff/inc/EnhancedCustomShapeToken.hxx
@@ -93,6 +93,7 @@ namespace xmloff { namespace EnhancedCustomShapeToken {
EAS_MirroredY,
EAS_ViewBox,
EAS_TextRotateAngle,
+ EAS_TextPreRotateAngle,
EAS_ExtrusionAllowed,
EAS_ConcentricGradientFillAllowed,
EAS_TextPathAllowed,
diff --git a/xmloff/source/draw/EnhancedCustomShapeToken.cxx b/xmloff/source/draw/EnhancedCustomShapeToken.cxx
index 076ae2728fbd..9e6c25b49e4d 100644
--- a/xmloff/source/draw/EnhancedCustomShapeToken.cxx
+++ b/xmloff/source/draw/EnhancedCustomShapeToken.cxx
@@ -108,6 +108,7 @@ static const TokenTable pTokenTableArray[] =
{ "MirroredY", EAS_MirroredY },
{ "ViewBox", EAS_ViewBox },
{ "TextRotateAngle", EAS_TextRotateAngle },
+ { "TextPreRotateAngle", EAS_TextPreRotateAngle },
{ "ExtrusionAllowed", EAS_ExtrusionAllowed },
{ "TextPathAllowed", EAS_TextPathAllowed },
{ "ConcentricGradientFillAllowed", EAS_ConcentricGradientFillAllowed },
diff --git a/xmloff/source/draw/shapeexport.cxx b/xmloff/source/draw/shapeexport.cxx
index e4ec98689841..34786ce43d31 100644
--- a/xmloff/source/draw/shapeexport.cxx
+++ b/xmloff/source/draw/shapeexport.cxx
@@ -4268,10 +4268,11 @@ void ImpExportEnhancedGeometry( SvXMLExport& rExport, const uno::Reference< bean
}
}
break;
+ case EAS_TextPreRotateAngle :
case EAS_TextRotateAngle :
{
double fTextRotateAngle = 0;
- if ( rGeoProp.Value >>= fTextRotateAngle )
+ if ( ( rGeoProp.Value >>= fTextRotateAngle ) && fTextRotateAngle != 0 )
{
::sax::Converter::convertDouble(
aStrBuffer, fTextRotateAngle );
commit 8c827202086256b8f5826d18268d50ada7b49b8c
Author: Christian Lohmaier <lohmaier+LibreOffice at googlemail.com>
Date: Tue Oct 24 12:36:02 2017 +0200
update credits
Change-Id: I6de45254981f24b05dbcc4bdde43d6ff25b7d001
(cherry picked from commit 49b338b76020682328acbb76cacf82b7699d8891)
diff --git a/readlicense_oo/license/CREDITS.fodt b/readlicense_oo/license/CREDITS.fodt
index 01fb19b19d2e..faf2b7abb552 100644
--- a/readlicense_oo/license/CREDITS.fodt
+++ b/readlicense_oo/license/CREDITS.fodt
@@ -1,13 +1,13 @@
<?xml version="1.0" encoding="UTF-8"?>
<office:document xmlns:office="urn:oasis:names:tc:opendocument:xmlns:office:1.0" xmlns:style="urn:oasis:names:tc:opendocument:xmlns:style:1.0" xmlns:text="urn:oasis:names:tc:opendocument:xmlns:text:1.0" xmlns:table="urn:oasis:names:tc:opendocument:xmlns:table:1.0" xmlns:draw="urn:oasis:names:tc:opendocument:xmlns:drawing:1.0" xmlns:fo="urn:oasis:names:tc:opendocument:xmlns:xsl-fo-compatible:1.0" xmlns:xlink="http://www.w3.org/1999/xlink" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:meta="urn:oasis:names:tc:opendocument:xmlns:meta:1.0" xmlns:number="urn:oasis:names:tc:opendocument:xmlns:datastyle:1.0" xmlns:svg="urn:oasis:names:tc:opendocument:xmlns:svg-compatible:1.0" xmlns:chart="urn:oasis:names:tc:opendocument:xmlns:chart:1.0" xmlns:dr3d="urn:oasis:names:tc:opendocument:xmlns:dr3d:1.0" xmlns:math="http://www.w3.org/1998/Math/MathML" xmlns:form="urn:oasis:names:tc:opendocument:xmlns:form:1.0" xmlns:script="urn:oasis:names:tc:opendocument:xmlns:script:1.0" xmlns:config="urn:oas
is:names:tc:opendocument:xmlns:config:1.0" xmlns:ooo="http://openoffice.org/2004/office" xmlns:ooow="http://openoffice.org/2004/writer" xmlns:oooc="http://openoffice.org/2004/calc" xmlns:dom="http://www.w3.org/2001/xml-events" xmlns:xforms="http://www.w3.org/2002/xforms" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:rpt="http://openoffice.org/2005/report" xmlns:of="urn:oasis:names:tc:opendocument:xmlns:of:1.2" xmlns:xhtml="http://www.w3.org/1999/xhtml" xmlns:grddl="http://www.w3.org/2003/g/data-view#" xmlns:officeooo="http://openoffice.org/2009/office" xmlns:tableooo="http://openoffice.org/2009/table" xmlns:drawooo="http://openoffice.org/2010/draw" xmlns:calcext="urn:org:documentfoundation:names:experimental:calc:xmlns:calcext:1.0" xmlns:loext="urn:org:documentfoundation:names:experimental:office:xmlns:loext:1.0" xmlns:field="urn:openoffice:names:experimental:ooo-ms-interop:xmlns:field:1.0" xmlns:formx="urn:openoffice:names:
experimental:ooxml-odf-interop:xmlns:form:1.0" xmlns:css3t="http://www.w3.org/TR/css3-text/" office:version="1.2" office:mimetype="application/vnd.oasis.opendocument.text">
- <office:meta><dc:title>Credits » LibreOffice</dc:title><meta:keyword>Credits</meta:keyword><meta:keyword>contributors</meta:keyword><meta:keyword>coders</meta:keyword><meta:keyword>developers</meta:keyword><dc:description>Credits for the LibreOffice development/coding.</dc:description><meta:generator>LibreOffice/5.4.1.2$Linux_X86_64 LibreOffice_project/ea7cb86e6eeb2bf3a5af73a8f7777ac570321527</meta:generator><dc:date>2012-02-20T22:17:18.060000000</dc:date><meta:editing-duration>PT14M12S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:document-statistic meta:table-count="5" meta:image-count="1" meta:object-count="0" meta:page-count="2" meta:paragraph-count="3943" meta:word-count="13771" meta:character-count="99263" meta:non-whitespace-character-count="86849"/><meta:user-defined meta:name="google-site-verification">JUebjoxEpqXoQcpltWRTwzBZEEHtch3wApdhgiQPFiA</meta:user-defined></office:meta>
+ <office:meta><dc:title>Credits » LibreOffice</dc:title><meta:keyword>Credits</meta:keyword><meta:keyword>contributors</meta:keyword><meta:keyword>coders</meta:keyword><meta:keyword>developers</meta:keyword><dc:description>Credits for the LibreOffice development/coding.</dc:description><meta:generator>LibreOffice/5.4.2.2$Linux_X86_64 LibreOffice_project/22b09f6418e8c2d508a9eaf86b2399209b0990f4</meta:generator><dc:date>2012-02-20T22:17:18.060000000</dc:date><meta:editing-duration>PT14M12S</meta:editing-duration><meta:editing-cycles>3</meta:editing-cycles><meta:document-statistic meta:table-count="5" meta:image-count="1" meta:object-count="0" meta:page-count="2" meta:paragraph-count="4026" meta:word-count="13948" meta:character-count="100616" meta:non-whitespace-character-count="88028"/><meta:user-defined meta:name="google-site-verification">JUebjoxEpqXoQcpltWRTwzBZEEHtch3wApdhgiQPFiA</meta:user-defined></office:meta>
<office:settings>
<config:config-item-set config:name="ooo:view-settings">
- <config:config-item config:name="ViewAreaTop" config:type="long">679</config:config-item>
+ <config:config-item config:name="ViewAreaTop" config:type="long">501</config:config-item>
<config:config-item config:name="ViewAreaLeft" config:type="long">501</config:config-item>
<config:config-item config:name="ViewAreaWidth" config:type="long">41965</config:config-item>
- <config:config-item config:name="ViewAreaHeight" config:type="long">21380</config:config-item>
+ <config:config-item config:name="ViewAreaHeight" config:type="long">21327</config:config-item>
<config:config-item config:name="ShowRedlineChanges" config:type="boolean">true</config:config-item>
<config:config-item config:name="InBrowseMode" config:type="boolean">true</config:config-item>
<config:config-item-map-indexed config:name="Views">
@@ -16,9 +16,9 @@
<config:config-item config:name="ViewLeft" config:type="long">3649</config:config-item>
<config:config-item config:name="ViewTop" config:type="long">3471</config:config-item>
<config:config-item config:name="VisibleLeft" config:type="long">501</config:config-item>
- <config:config-item config:name="VisibleTop" config:type="long">679</config:config-item>
+ <config:config-item config:name="VisibleTop" config:type="long">501</config:config-item>
<config:config-item config:name="VisibleRight" config:type="long">42464</config:config-item>
- <config:config-item config:name="VisibleBottom" config:type="long">22057</config:config-item>
+ <config:config-item config:name="VisibleBottom" config:type="long">21826</config:config-item>
<config:config-item config:name="ZoomType" config:type="short">0</config:config-item>
<config:config-item config:name="ViewLayoutColumns" config:type="short">0</config:config-item>
<config:config-item config:name="ViewLayoutBookMode" config:type="boolean">false</config:config-item>
@@ -71,7 +71,7 @@
<config:config-item config:name="InvertBorderSpacing" config:type="boolean">false</config:config-item>
<config:config-item config:name="SaveGlobalDocumentLinks" config:type="boolean">false</config:config-item>
<config:config-item config:name="TabsRelativeToIndent" config:type="boolean">true</config:config-item>
- <config:config-item config:name="Rsid" config:type="int">7113569</config:config-item>
+ <config:config-item config:name="Rsid" config:type="int">7159477</config:config-item>
<config:config-item config:name="PrintProspectRTL" config:type="boolean">false</config:config-item>
<config:config-item config:name="PrintEmptyPages" config:type="boolean">false</config:config-item>
<config:config-item config:name="ApplyUserData" config:type="boolean">false</config:config-item>
@@ -317,26 +317,23 @@
</office:styles>
<office:automatic-styles>
<style:style style:name="Tabelle1" style:family="table">
- <style:table-properties style:width="25.01cm" table:align="left"/>
+ <style:table-properties style:width="24.904cm" table:align="left"/>
</style:style>
<style:style style:name="Tabelle1.A" style:family="table-column">
- <style:table-column-properties style:column-width="5.77cm"/>
+ <style:table-column-properties style:column-width="5.505cm"/>
</style:style>
<style:style style:name="Tabelle1.B" style:family="table-column">
- <style:table-column-properties style:column-width="6.061cm"/>
+ <style:table-column-properties style:column-width="6.828cm"/>
</style:style>
<style:style style:name="Tabelle1.C" style:family="table-column">
- <style:table-column-properties style:column-width="6.828cm"/>
+ <style:table-column-properties style:column-width="6.749cm"/>
</style:style>
<style:style style:name="Tabelle1.D" style:family="table-column">
- <style:table-column-properties style:column-width="6.352cm"/>
+ <style:table-column-properties style:column-width="5.823cm"/>
</style:style>
<style:style style:name="Tabelle1.A1" style:family="table-cell">
<style:table-cell-properties style:vertical-align="middle" fo:padding="0.049cm" fo:border="none"/>
</style:style>
- <style:style style:name="Tabelle1.B289" style:family="table-cell">
- <style:table-cell-properties fo:padding="0.049cm" fo:border="none"/>
- </style:style>
<style:style style:name="Tabelle2" style:family="table">
<style:table-properties style:width="18.263cm" table:align="left"/>
</style:style>
@@ -398,24 +395,24 @@
<style:table-cell-properties fo:padding="0.049cm" fo:border="none"/>
</style:style>
<style:style style:name="Tabelle5" style:family="table">
- <style:table-properties style:width="31.678cm" table:align="left"/>
+ <style:table-properties style:width="31.492cm" table:align="left"/>
</style:style>
<style:style style:name="Tabelle5.A" style:family="table-column">
- <style:table-column-properties style:column-width="6.854cm"/>
+ <style:table-column-properties style:column-width="6.669cm"/>
</style:style>
<style:style style:name="Tabelle5.B" style:family="table-column">
- <style:table-column-properties style:column-width="6.246cm"/>
+ <style:table-column-properties style:column-width="11.829cm"/>
</style:style>
<style:style style:name="Tabelle5.C" style:family="table-column">
- <style:table-column-properties style:column-width="11.829cm"/>
+ <style:table-column-properties style:column-width="6.087cm"/>
</style:style>
<style:style style:name="Tabelle5.D" style:family="table-column">
- <style:table-column-properties style:column-width="6.749cm"/>
+ <style:table-column-properties style:column-width="6.907cm"/>
</style:style>
<style:style style:name="Tabelle5.A1" style:family="table-cell">
<style:table-cell-properties style:vertical-align="middle" fo:padding="0.049cm" fo:border="none"/>
</style:style>
- <style:style style:name="Tabelle5.D654" style:family="table-cell">
+ <style:style style:name="Tabelle5.D674" style:family="table-cell">
<style:table-cell-properties fo:padding="0.049cm" fo:border="none"/>
</style:style>
<style:style style:name="P1" style:family="paragraph" style:parent-style-name="Table_20_Contents">
@@ -1047,7 +1044,7 @@
</office:binary-data>
</draw:image>
</draw:frame>Credits</text:p>
- <text:p text:style-name="Text_20_body">1282 individuals contributed to OpenOffice.org (and whose contributions were imported into LibreOffice) or LibreOffice until 2017-08-24 17:26:38.</text:p>
+ <text:p text:style-name="Text_20_body">1285 individuals contributed to OpenOffice.org (and whose contributions were imported into LibreOffice) or LibreOffice until 2017-10-24 11:55:40.</text:p>
<text:p text:style-name="Text_20_body"><text:span text:style-name="T1">*</text:span> marks developers whose first contributions happened after 2010-09-28.</text:p>
<text:h text:style-name="Heading_20_2" text:outline-level="2">Developers committing code since 2010-09-28</text:h>
<table:table table:name="Tabelle1" table:style-name="Tabelle1">
@@ -1074,10 +1071,10 @@
<text:p text:style-name="Table_20_Contents">Vladimir Glazunov<text:line-break/>Commits: 25434<text:line-break/>Joined: 2000-12-04</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Caolán McNamara<text:line-break/>Commits: 22634<text:line-break/>Joined: 2000-10-10</text:p>
+ <text:p text:style-name="Table_20_Contents">Caolán McNamara<text:line-break/>Commits: 22763<text:line-break/>Joined: 2000-10-10</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Stephan Bergmann<text:line-break/>Commits: 14922<text:line-break/>Joined: 2000-10-04</text:p>
+ <text:p text:style-name="Table_20_Contents">Stephan Bergmann<text:line-break/>Commits: 15131<text:line-break/>Joined: 2000-10-04</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Ivo Hinkelmann<text:line-break/>Commits: 9480<text:line-break/>Joined: 2002-09-09</text:p>
@@ -1085,16 +1082,16 @@
</table:table-row>
<table:table-row>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits: 8150<text:line-break/>Joined: <text:span text:style-name="T2">2011-12-12</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Noel Grandin<text:line-break/>Commits: 8239<text:line-break/>Joined: <text:span text:style-name="T2">2011-12-12</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Tor Lillqvist<text:line-break/>Commits: 7981<text:line-break/>Joined: 2010-03-23</text:p>
+ <text:p text:style-name="Table_20_Contents">Tor Lillqvist<text:line-break/>Commits: 7994<text:line-break/>Joined: 2010-03-23</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Miklos Vajna<text:line-break/>Commits: 6560<text:line-break/>Joined: 2010-07-29</text:p>
+ <text:p text:style-name="Table_20_Contents">Miklos Vajna<text:line-break/>Commits: 6596<text:line-break/>Joined: 2010-07-29</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Michael Stahl<text:line-break/>Commits: 6187<text:line-break/>Joined: 2008-06-16</text:p>
+ <text:p text:style-name="Table_20_Contents">Michael Stahl<text:line-break/>Commits: 6212<text:line-break/>Joined: 2008-06-16</text:p>
</table:table-cell>
</table:table-row>
<table:table-row>
@@ -1102,18 +1099,18 @@
<text:p text:style-name="Table_20_Contents">Kohei Yoshida<text:line-break/>Commits: 5521<text:line-break/>Joined: 2009-06-19</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Markus Mohrhard<text:line-break/>Commits: 5069<text:line-break/>Joined: <text:span text:style-name="T2">2011-03-17</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Markus Mohrhard<text:line-break/>Commits: 5084<text:line-break/>Joined: <text:span text:style-name="T2">2011-03-17</text:span></text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Frank Schoenheit [fs]<text:line-break/>Commits: 5008<text:line-break/>Joined: 2000-09-19</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Eike Rathke<text:line-break/>Commits: 4085<text:line-break/>Joined: 2000-10-11</text:p>
+ <text:p text:style-name="Table_20_Contents">Eike Rathke<text:line-break/>Commits: 4111<text:line-break/>Joined: 2000-10-11</text:p>
</table:table-cell>
</table:table-row>
<table:table-row>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">David Tardon<text:line-break/>Commits: 3501<text:line-break/>Joined: 2009-11-12</text:p>
+ <text:p text:style-name="Table_20_Contents">David Tardon<text:line-break/>Commits: 3512<text:line-break/>Joined: 2009-11-12</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents">Hans-Joachim Lankenau<text:line-break/>Commits: 3007<text:line-break/>Joined: 2000-09-19</text:p>
@@ -1130,18 +1127,18 @@
<text:p text:style-name="Table_20_Contents">Oliver Specht<text:line-break/>Commits: 2548<text:line-break/>Joined: 2000-09-21</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Jan Holesovsky<text:line-break/>Commits: 2475<text:line-break/>Joined: 2009-06-23</text:p>
+ <text:p text:style-name="Table_20_Contents">Jan Holesovsky<text:line-break/>Commits: 2478<text:line-break/>Joined: 2009-06-23</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Michael Meeks<text:line-break/>Commits: 2251<text:line-break/>Joined: 2004-08-05</text:p>
+ <text:p text:style-name="Table_20_Contents">Michael Meeks<text:line-break/>Commits: 2253<text:line-break/>Joined: 2004-08-05</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents">Bjoern Michaelsen<text:line-break/>Commits: 2225<text:line-break/>Joined: 2009-10-14</text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Julien Nabet<text:line-break/>Commits: 2232<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-04</text:span></text:p>
</table:table-cell>
</table:table-row>
<table:table-row>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Julien Nabet<text:line-break/>Commits: 2183<text:line-break/>Joined: <text:span text:style-name="T2">2010-11-04</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents">Bjoern Michaelsen<text:line-break/>Commits: 2225<text:line-break/>Joined: 2009-10-14</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
<text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Norbert Thiebaud<text:line-break/>Commits: 2176<text:line-break/>Joined: <text:span text:style-name="T2">2010-09-29</text:span></text:p>
@@ -1158,13 +1155,13 @@
<text:p text:style-name="Table_20_Contents">Christian Lippka<text:line-break/>Commits: 1805<text:line-break/>Joined: 2000-09-25</text:p>
</table:table-cell>
<table:table-cell table:style-name="Tabelle1.A1" office:value-type="string">
- <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andras Timar<text:line-break/>Commits: 1763<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-02</text:span></text:p>
+ <text:p text:style-name="Table_20_Contents"><text:span text:style-name="T1">*</text:span>Andras Timar<text:line-break/>Commits: 1766<text:line-break/>Joined: <text:span text:style-name="T2">2010-10-02</text:span></text:p>
</table:table-cell>
... etc. - the rest is truncated
More information about the Libreoffice-commits
mailing list