summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/build-ooo6
-rwxr-xr-xbin/oowintool2
-rwxr-xr-xbin/package-ooo29
-rw-r--r--patches/OOO_1_1/allow-free-jars.diff116
-rw-r--r--patches/OOO_1_1/calc-new-acceleration.diff11
-rw-r--r--patches/OOO_1_1/crash-sw-checkbox-field.diff2
-rw-r--r--patches/OOO_1_1/fixup-typedetection-mimetypes.diff209
-rw-r--r--patches/OOO_1_1/gui-toolbox-large-icons.diff31
-rw-r--r--patches/OOO_1_1/i18n-calc-encoding.diff69
-rw-r--r--patches/OOO_1_1/i18n-indic-default-fonts.diff110
-rw-r--r--patches/OOO_1_1/i18n-indic-resource-fixes.diff523
-rw-r--r--patches/OOO_1_1/l10n-YTL.diff26
-rw-r--r--patches/OOO_1_1/ms-interoperability-email-attachment-as-xls-ppt.diff505
-rw-r--r--patches/OOO_1_1/native-fpicker-not-default.diff17
-rw-r--r--patches/OOO_1_1/no-splash-takeover.patch7
-rw-r--r--patches/OOO_1_1/qpro-build.diff125
-rw-r--r--patches/OOO_1_1/sc-autofilter-empty-nonempty.diff42
-rw-r--r--patches/OOO_1_1/sc-datapilot-autoformat.diff406
-rw-r--r--patches/OOO_1_1/sc-paste-insert-rows.diff13
-rw-r--r--patches/OOO_1_1/sc-standard-filter-options.diff362
-rw-r--r--patches/OOO_1_1/sfx2-no-summary-crash-fix.diff16
-rw-r--r--patches/OOO_1_1/svx-default-font-tracks-LANGUAGE_SYSTEM.diff75
-rw-r--r--patches/OOO_1_1/sw-online-layout-crash-fix.diff19
-rw-r--r--patches/OOO_1_1/sysui-translations.diff266
-rw-r--r--patches/OOO_1_1/vfs-uno-register.diff2
-rw-r--r--patches/OOO_1_1/word-count.diff153
-rw-r--r--patches/OOO_1_1/writer-default-as-optimal-page-wrap.diff16
-rw-r--r--patches/order3
-rw-r--r--patches/vclplug/crash-ppd-parse.diff50
-rw-r--r--patches/vclplug/font-substitution-fixups.diff505
-rw-r--r--patches/vclplug/psprint-m46-to-m53.diff1618
-rw-r--r--patches/vclplug/vcl-source-gdi-utf8-msfonts-fixup.diff214
-rw-r--r--patches/vclplug/vcl-source-gdi.diff22
-rw-r--r--patches/vclplug/vcl-source-glyphs.diff395
-rw-r--r--patches/vclplug/vcl-unx-source-gdi.diff421
35 files changed, 3880 insertions, 2506 deletions
diff --git a/bin/build-ooo b/bin/build-ooo
index 9e46c4e31..c4b1dde52 100755
--- a/bin/build-ooo
+++ b/bin/build-ooo
@@ -28,7 +28,7 @@ fi
# inject its %{optflags} everywhere. Since gcc33 doesn't support
# -mtune, override that here
if test "z$FORCE_GCC33" = "zYES"; then
- if test "z$DISTRO" = "zRHFedora"; then
+ if test "z$DISTRO" = "zFedoraCore3" -o "z$DISTRO" = "zRHEL4"; then
# Set up x86 optimization flags that gcc33 can deal with
ARCH_FLAGS=""
if test "z$INPATH" = "zunxlngi4.pro"; then
@@ -49,7 +49,7 @@ export LANG="C";
if test "z$ENABLE_JAVA" = "zyes"; then
# Many Java's can't cope with the NPTL on Linux.
- LD_ASSUME_KERNEL=2.2.5 /bin/true 2> /dev/null || LD_ASSUME_KERNEL=2.4.10 /bin/true 2> /dev/null || LD_ASSUME_KERNEL=2.6.0 2> /dev/null || unset LD_ASSUME_KERNEL
+ LD_ASSUME_KERNEL=2.2.5 /bin/true 2> /dev/null || LD_ASSUME_KERNEL=2.4.10 /bin/true 2> /dev/null || LD_ASSUME_KERNEL=2.6.0 /bin/true 2> /dev/null || unset LD_ASSUME_KERNEL
export LD_ASSUME_KERNEL
fi
# Don't do a massive painful install
@@ -90,7 +90,7 @@ EXTRA_BUILD_FLAGS=
if test $BUILD_NCPUS -gt 1; then
EXTRA_BUILD_FLAGS="-P$BUILD_NCPUS"
fi
-if test "z$BUILD_WIN32"="z"; then
+if test "z$BUILD_WIN32" = "z"; then
EXTRA_BUILD_FLAGS="--dlv_switch link $EXTRA_BUILD_FLAGS"
fi
diff --git a/bin/oowintool b/bin/oowintool
index 38cf6b04b..983bd9ad5 100755
--- a/bin/oowintool
+++ b/bin/oowintool
@@ -88,7 +88,7 @@ my %msvc6 = (
my %msvs_net_2002 = (
'ver' => '7.0',
'key' => 'Microsoft/VisualStudio/7.0/Setup/VC/ProductDir',
- 'dll_path' => '../SDK/v1.1/Bin', # testme ...
+ 'dll_path' => '../Visual Studio .NET Professional - English', # testme ...
'dll_suffix' => '70'
);
my %msvs_net_2003 = (
diff --git a/bin/package-ooo b/bin/package-ooo
index 42bdb544a..dd83ba78a 100755
--- a/bin/package-ooo
+++ b/bin/package-ooo
@@ -52,6 +52,33 @@ create_simple_wrapper()
cat <<EOT >$2
#!/bin/sh
+# Keep in ~sync with ooo-wrapper
+
+SystemInstallDir="$OOINSTBASE"
+
+if [ -n "\$GNOME_DESKTOP_SESSION_ID" -a -d "\$SystemInstallDir/program/resource.gnome" ]; then
+ icon_set="gnome"
+elif [ -n "\$KDE_FULL_SESSION" -a -d "\$SystemInstallDir/program/resource.kde" ]; then
+ icon_set="kde"
+fi
+
+if [ -z "\$icon_set" ]; then
+ if [ -d "\$SystemInstallDir/program/resource.default" ]; then
+ icon_set="default"
+ elif [ -d "\$SystemInstallDir/program/resource.kde" ]; then
+ icon_set="kde"
+ elif [ -d "\$SystemInstallDir/program/resource.gnome" ]; then
+ icon_set="gnome"
+ else
+ icon_set="default"
+ fi
+fi
+
+if [ -d "\$SystemInstallDir/program/resource.\$icon_set" ]; then
+ OOO_PREFERRED_RESOURCE_PATH="\$SystemInstallDir/program/resource.\$icon_set"
+ export OOO_PREFERRED_RESOURCE_PATH
+fi
+
exec "$1" "\$@"
EOT
chmod 755 $2
@@ -100,7 +127,7 @@ if test "z$VENDORNAME" = "zRedHat" ; then
mkdir -p $PREFIX/share/applications
for i in openoffice-printeradmin openoffice-setup redhat-drawing \
redhat-math redhat-presentations redhat-word-processor redhat-spreadsheet; do
- cp -f /usr/share/desktop-menu-patches/$i.desktop $PREFIX/share/applications/$i.desktop
+ ln -sf /usr/share/desktop-menu-patches/$i.desktop $PREFIX/share/applications/$i.desktop
echo "StartupNotify=true" >> $PREFIX/share/applications/$i.desktop
done
diff --git a/patches/OOO_1_1/allow-free-jars.diff b/patches/OOO_1_1/allow-free-jars.diff
new file mode 100644
index 000000000..d24c83b2d
--- /dev/null
+++ b/patches/OOO_1_1/allow-free-jars.diff
@@ -0,0 +1,116 @@
+--- officecfg/org/openoffice/configuration/XMLDefaultGenerator.java.orig Mon Oct 20 09:53:18 2003
++++ officecfg/org/openoffice/configuration/XMLDefaultGenerator.java Mon Oct 20 15:05:46 2003
+@@ -62,12 +62,12 @@
+
+ import org.xml.sax.*;
+ import org.w3c.dom.*;
+-import com.sun.xml.tree.XmlDocument;
++//import com.sun.xml.tree.XmlDocument;
+ import org.xml.sax.SAXException;
+ import org.xml.sax.SAXParseException;
+ import javax.xml.parsers.SAXParserFactory;
+ import javax.xml.parsers.SAXParser;
+-import com.sun.xml.tree.*;
++//import com.sun.xml.tree.*;
+ import java.util.*;
+ import java.io.*;
+ import com.jclark.xsl.sax.Driver;
+--- XmlSearch/prj/build.lst.orig Mon Oct 20 13:58:06 2003
++++ XmlSearch/prj/build.lst Mon Oct 20 13:58:11 2003
+@@ -1,2 +1 @@
+ xh XmlSearch : external codemaker NULL
+-xh XmlSearch\src\com\sun\xmlsearch nmake - all xs NULL
+--- xmlhelp/prj/build.lst.orig Mon Oct 20 13:53:25 2003
++++ xmlhelp/prj/build.lst Mon Oct 20 13:53:33 2003
+@@ -2,7 +2,6 @@
+ xh xmlhelp usr1 - all xh_mkout NULL
+ xh xmlhelp\source\helpprovider nmake - all xh_helpprovider NULL
+ xh xmlhelp\source\treeview nmake - all xh_treeview NULL
+-xh xmlhelp\source\com\sun\star\help nmake - all xh_help NULL
+ xh xmlhelp\source\cxxhelp\util nmake - all xh_cutil NULL
+ xh xmlhelp\source\cxxhelp\qe nmake - all xh_qe NULL
+ xh xmlhelp\source\cxxhelp\db nmake - all xh_db NULL
+Index: util/makefile.pmk
+===================================================================
+RCS file: /cvs/installation/readlicense/util/makefile.pmk,v
+retrieving revision 1.2.30.1
+diff -u -u -r1.2.30.1 makefile.pmk
+--- readlicense_oo/util/makefile.pmk 9 Jan 2004 18:10:12 -0000 1.2.30.1
++++ readlicense_oo/util/makefile.pmk 17 Oct 2004 22:32:06 -0000
+@@ -79,7 +79,7 @@
+ $(MISC)$/%.html :
+ @+-$(MKDIR) $(@:d)
+ .IF "$(SOLAR_JAVA)"!=""
+- $(JAVA) -classpath $(COMMON_BUILD_TOOLS)$/xt.jar$(PATH_SEPERATOR)$(COMMON_BUILD_TOOLS)$/parser.jar -Dcom.jclark.xsl.sax.parser=com.sun.xml.parser.Parser com.jclark.xsl.sax.Driver $(subst,$(@::d:d:b), $(@:b).xrm) ..$/readme.xsl os1=$(OS) gui1=$(GUI) cp1=$(CPUNAME) com1=$(COM) lang1=$(iso_$(@:d:d:b)) type=html file=$@
++ $(JAVA) -classpath $(COMMON_BUILD_TOOLS)$/xt.jar$(PATH_SEPERATOR)$(COMMON_BUILD_TOOLS)$/parser.jar com.jclark.xsl.sax.Driver $(subst,$(@::d:d:b), $(@:b).xrm) ..$/readme.xsl os1=$(OS) gui1=$(GUI) cp1=$(CPUNAME) com1=$(COM) lang1=$(iso_$(@:d:d:b)) type=html file=$@
+ .ELSE
+ sed 's|xmlns:xt="http://www.jclark.com/xt"||;s|extension-element-prefixes="xt"||;s|.*xt:document.*||;s|<xsl:output method = "HTML" doctype-public = "-//W3C//DTD HTML 3.2//EN" />|<xsl:output method="html" doctype-public="-//W3C//DTD HTML 3.2//EN" />|' < ..$/readme.xsl > ..$/readme2.xsl
+ xsltproc -o $@ \
+@@ -97,7 +97,7 @@
+ $(MISC)$/%.txt :
+ @+-$(MKDIR) $(@:d)
+ .IF "$(SOLAR_JAVA)"!=""
+- $(JAVA) -classpath $(COMMON_BUILD_TOOLS)$/xt.jar$(PATH_SEPERATOR)$(COMMON_BUILD_TOOLS)$/parser.jar -Dcom.jclark.xsl.sax.parser=com.sun.xml.parser.Parser com.jclark.xsl.sax.Driver $(subst,$(@::d:d:b), $(@:b).xrm) ..$/readme.xsl os1=$(OS) gui1=$(GUI) cp1=$(CPUNAME) com1=$(COM) lang1=$(iso_$(@:d:d:b)) type=text file=$@
++ $(JAVA) -classpath $(COMMON_BUILD_TOOLS)$/xt.jar$(PATH_SEPERATOR)$(COMMON_BUILD_TOOLS)$/parser.jar com.jclark.xsl.sax.Driver $(subst,$(@::d:d:b), $(@:b).xrm) ..$/readme.xsl os1=$(OS) gui1=$(GUI) cp1=$(CPUNAME) com1=$(COM) lang1=$(iso_$(@:d:d:b)) type=text file=$@
+ .ELSE
+ sed 's|xmlns:xt="http://www.jclark.com/xt"||;s|extension-element-prefixes="xt"||;s|.*xt:document.*||;s|<xsl:output method = "HTML" doctype-public = "-//W3C//DTD HTML 3.2//EN" />|<xsl:output method="text" />|' < ..$/readme.xsl > ..$/readme2.xsl
+ xsltproc -o $@ \
+Index: makefile.pmk
+===================================================================
+RCS file: /cvs/util/officecfg/util/makefile.pmk,v
+retrieving revision 1.23.94.1
+diff -u -u -r1.23.94.1 makefile.pmk
+--- officecfg/util/makefile.pmk 9 Jan 2004 18:06:41 -0000 1.23.94.1
++++ officecfg/util/makefile.pmk 17 Oct 2004 22:35:53 -0000
+@@ -68,11 +68,11 @@
+ @+echo -------------+ validating and stripping schema files
+ -$(MKDIR) -p $(@:d)
+ .IF "$(SOLAR_JAVA)"!=""
+- $(JAVA) -classpath $(SOLARBINDIR)$/jaxp.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar$(PATH_SEPERATOR)$(CLASSDIR)$/cfgimport.jar -Djavax.xml.parsers.SAXParserFactory=com.sun.xml.parser.SAXParserFactoryImpl org.openoffice.configuration.Inspector $<
+- $(JAVA) -classpath $(SOLARBINDIR)$/xt.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar -Dcom.jclark.xsl.sax.parser=com.sun.xml.parser.Parser com.jclark.xsl.sax.Driver $< $(PRJ)$/util$/schema_val.xsl $(@:d)$(<:b).val file=$(<:d)$(<:b) pathSeparator=$/
+- $(JAVA) -classpath $(SOLARBINDIR)$/xt.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar -Dcom.jclark.xsl.sax.parser=com.sun.xml.parser.Parser com.jclark.xsl.sax.Driver $< $(PRJ)$/util$/sanity.xsl $(@:d)$(<:b).san file=$(<:d)$(<:b) pathSeparator=$/
+- $(JAVA) -classpath $(SOLARBINDIR)$/xt.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar -Dcom.jclark.xsl.sax.parser=com.sun.xml.parser.Parser com.jclark.xsl.sax.Driver $< $(PRJ)$/util$/schema_trim.xsl $(@:d)$(<:b).tmp
+- $(JAVA) -classpath $(SOLARBINDIR)$/jaxp.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar$(PATH_SEPERATOR)$(CLASSDIR)$/schema.jar -Djavax.xml.parsers.SAXParserFactory=com.sun.xml.parser.SAXParserFactoryImpl org.openoffice.helper.PrettyPrinter $(@:d)$(<:b).tmp $(@:d)$(<:b).xcs
++ $(JAVA) -classpath $(SOLARBINDIR)$/jaxp.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar$(PATH_SEPERATOR)$(CLASSDIR)$/cfgimport.jar org.openoffice.configuration.Inspector $<
++ $(JAVA) -classpath $(SOLARBINDIR)$/xt.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar com.jclark.xsl.sax.Driver $< $(PRJ)$/util$/schema_val.xsl $(@:d)$(<:b).val file=$(<:d)$(<:b) pathSeparator=$/
++ $(JAVA) -classpath $(SOLARBINDIR)$/xt.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar com.jclark.xsl.sax.Driver $< $(PRJ)$/util$/sanity.xsl $(@:d)$(<:b).san file=$(<:d)$(<:b) pathSeparator=$/
++ $(JAVA) -classpath $(SOLARBINDIR)$/xt.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar com.jclark.xsl.sax.Driver $< $(PRJ)$/util$/schema_trim.xsl $(@:d)$(<:b).tmp
++ $(JAVA) -classpath $(SOLARBINDIR)$/jaxp.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar$(PATH_SEPERATOR)$(CLASSDIR)$/schema.jar org.openoffice.helper.PrettyPrinter $(@:d)$(<:b).tmp $(@:d)$(<:b).xcs
+ .ELSE
+ # xsltproc already validates against the dtd. For additional validation,
+ # org.openoffice.configuration.Inspector should be replaced and the
+@@ -98,7 +98,7 @@
+ @+echo -------------+ creating locale dependent resource bundles
+ -$(MKDIR) -p $(@:d)
+ .IF "$(SOLAR_JAVA)"!=""
+- $(JAVA) -classpath $(SOLARBINDIR)$/xt.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar -Dcom.jclark.xsl.sax.parser=com.sun.xml.parser.Parser com.jclark.xsl.sax.Driver $< $(PRJ)$/util$/resource.xsl $(@:d)$(<:b).properties locale={$(subst,$/$<, $(subst,$(MISC)$/registry$/res$/, $(subst,.properties,.xcs $@)))}
++ $(JAVA) -classpath $(SOLARBINDIR)$/xt.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar com.jclark.xsl.sax.Driver $< $(PRJ)$/util$/resource.xsl $(@:d)$(<:b).properties locale={$(subst,$/$<, $(subst,$(MISC)$/registry$/res$/, $(subst,.properties,.xcs $@)))}
+ .ELSE
+ $(XSLTPROC) -o $(@:d)$(<:b).properties \
+ --stringparam locale {$(subst,$/$<, $(subst,$(MISC)$/registry$/res$/, $(subst,.properties,.xcs $@)))} \
+@@ -111,10 +111,10 @@
+ @+echo -------------+ validating and creating a locale independent file
+ -$(MKDIR) -p $(@:d)
+ .IF "$(SOLAR_JAVA)"!=""
+- $(JAVA) -classpath $(SOLARBINDIR)$/jaxp.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar$(PATH_SEPERATOR)$(CLASSDIR)$/cfgimport.jar -Djavax.xml.parsers.SAXParserFactory=com.sun.xml.parser.SAXParserFactoryImpl org.openoffice.configuration.Inspector $<
+- $(JAVA) -classpath $(SOLARBINDIR)$/xt.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar$(PATH_SEPERATOR)$(CLASSDIR)$/cfgimport.jar -Dcom.jclark.xsl.sax.parser=com.sun.xml.parser.Parser com.jclark.xsl.sax.Driver $< $(PRJ)$/util$/data_val.xsl $(@:d)$(<:b).val xcs=$(PRJ)$/registry$/schema$/$(<:d)$(<:b).xcs schemaRoot=$(PRJ)$/registry$/schema
+- $(JAVA) -classpath $(SOLARBINDIR)$/xt.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar$(PATH_SEPERATOR)$(CLASSDIR)$/cfgimport.jar -Dcom.jclark.xsl.sax.parser=com.sun.xml.parser.Parser com.jclark.xsl.sax.Driver $< $(PRJ)$/util$/alllang.xsl $(@:d)$(<:b).tmp xcs=$(PRJ)$/registry$/schema$/$(<:d)$(<:b).xcs schemaRoot=$(PRJ)$/registry$/schema
+- $(JAVA) -classpath $(SOLARBINDIR)$/jaxp.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar$(PATH_SEPERATOR)$(CLASSDIR)$/schema.jar -Djavax.xml.parsers.SAXParserFactory=com.sun.xml.parser.SAXParserFactoryImpl org.openoffice.helper.PrettyPrinter $(@:d)$(<:b).tmp $(@:d)$(<:b).xcu
++ $(JAVA) -classpath $(SOLARBINDIR)$/jaxp.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar$(PATH_SEPERATOR)$(CLASSDIR)$/cfgimport.jar org.openoffice.configuration.Inspector $<
++ $(JAVA) -classpath $(SOLARBINDIR)$/xt.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar$(PATH_SEPERATOR)$(CLASSDIR)$/cfgimport.jar com.jclark.xsl.sax.Driver $< $(PRJ)$/util$/data_val.xsl $(@:d)$(<:b).val xcs=$(PRJ)$/registry$/schema$/$(<:d)$(<:b).xcs schemaRoot=$(PRJ)$/registry$/schema
++ $(JAVA) -classpath $(SOLARBINDIR)$/xt.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar$(PATH_SEPERATOR)$(CLASSDIR)$/cfgimport.jar com.jclark.xsl.sax.Driver $< $(PRJ)$/util$/alllang.xsl $(@:d)$(<:b).tmp xcs=$(PRJ)$/registry$/schema$/$(<:d)$(<:b).xcs schemaRoot=$(PRJ)$/registry$/schema
++ $(JAVA) -classpath $(SOLARBINDIR)$/jaxp.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar$(PATH_SEPERATOR)$(CLASSDIR)$/schema.jar org.openoffice.helper.PrettyPrinter $(@:d)$(<:b).tmp $(@:d)$(<:b).xcu
+ .ELSE
+ # xsltproc already validates against the dtd. For additional validation,
+ # org.openoffice.configuration.Inspector should be replaced and the
+@@ -142,8 +142,8 @@
+ @+echo -------------+ creating locale dependent entries
+ -$(MKDIR) -p $(@:d)
+ .IF "$(SOLAR_JAVA)"!=""
+- $(JAVA) -classpath $(SOLARBINDIR)$/xt.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar$(PATH_SEPERATOR)$(CLASSDIR)$/cfgimport.jar -Dcom.jclark.xsl.sax.parser=com.sun.xml.parser.Parser com.jclark.xsl.sax.Driver $< $(PRJ)$/util$/alllang.xsl $(@:d)$(<:b).tmp xcs=$(PRJ)$/registry$/schema$/$(<:d)$(<:b).xcs schemaRoot=$(PRJ)$/registry$/schema locale={$(subst,$/$<, $(subst,$(MISC)$/registry$/res$/, $@))}
+- $(JAVA) -classpath $(SOLARBINDIR)$/jaxp.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar$(PATH_SEPERATOR)$(CLASSDIR)$/schema.jar -Djavax.xml.parsers.SAXParserFactory=com.sun.xml.parser.SAXParserFactoryImpl org.openoffice.helper.PrettyPrinter $(@:d)$(<:b).tmp $(@:d)$(<:b).xcu
++ $(JAVA) -classpath $(SOLARBINDIR)$/xt.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar$(PATH_SEPERATOR)$(CLASSDIR)$/cfgimport.jar com.jclark.xsl.sax.Driver $< $(PRJ)$/util$/alllang.xsl $(@:d)$(<:b).tmp xcs=$(PRJ)$/registry$/schema$/$(<:d)$(<:b).xcs schemaRoot=$(PRJ)$/registry$/schema locale={$(subst,$/$<, $(subst,$(MISC)$/registry$/res$/, $@))}
++ $(JAVA) -classpath $(SOLARBINDIR)$/jaxp.jar$(PATH_SEPERATOR)$(SOLARBINDIR)$/parser.jar$(PATH_SEPERATOR)$(CLASSDIR)$/schema.jar org.openoffice.helper.PrettyPrinter $(@:d)$(<:b).tmp $(@:d)$(<:b).xcu
+ .ELSE
+ $(SED) 's|xmlns:filehelper="http://www.jclark.com/xt/java/org.openoffice.configuration.FileHelper"||;s|extension-element-prefixes="filehelper"||;s|filehelper:makeAbs(\(.*\))|\1|' < $(PRJ)$/util$/alllang.xsl > $(PRJ)$/util$/alllang2.xsl
+ $(XSLTPROC) -o $(@:d)$(<:b).tmp \
diff --git a/patches/OOO_1_1/calc-new-acceleration.diff b/patches/OOO_1_1/calc-new-acceleration.diff
new file mode 100644
index 000000000..a96465af6
--- /dev/null
+++ b/patches/OOO_1_1/calc-new-acceleration.diff
@@ -0,0 +1,11 @@
+--- sc/source/ui/src/menue.src 2004-10-24 14:11:02.854529808 +0530
++++ sc/source/ui/src/menue.src 2004-10-24 14:08:25.446459472 +0530
+@@ -236,6 +236,8 @@
+ USR_ACCEL ( SID_STYLE_CATALOG , KEY_F11 , FALSE , TRUE , FALSE )
+ USR_ACCEL ( FID_FILL_TO_BOTTOM, KEY_D , FALSE , TRUE , FALSE )
+ USR_ACCEL ( SID_SETINPUTMODE , KEY_F2 , FALSE , FALSE , FALSE )
++ USR_ACCEL ( FID_DELETE_CELL , KEY_SUBTRACT , FALSE , TRUE , FALSE )
++ USR_ACCEL ( FID_INS_CELL , KEY_ADD , FALSE , TRUE , FALSE )
+ USR_ACCEL ( SID_OPENDLG_FUNCTION , KEY_F2 , FALSE , TRUE , FALSE )
+ USR_ACCEL ( SID_FOCUS_INPUTLINE , KEY_F2 , TRUE , TRUE , FALSE )
+ USR_ACCEL ( FID_DEFINE_NAME , KEY_F3 , FALSE , TRUE , FALSE )
diff --git a/patches/OOO_1_1/crash-sw-checkbox-field.diff b/patches/OOO_1_1/crash-sw-checkbox-field.diff
index c24f15820..731a91bfd 100644
--- a/patches/OOO_1_1/crash-sw-checkbox-field.diff
+++ b/patches/OOO_1_1/crash-sw-checkbox-field.diff
@@ -35,7 +35,7 @@ diff -u -p -r1.115.68.4 ww8par.hxx
+ com::sun::star::lang::XMultiServiceFactory> &rServiceFactory,
+ com::sun::star::uno::Reference <
+ com::sun::star::form::XFormComponent> &rFComp,
-+ com::sun::star::awt::Size &rSz) {}
++ com::sun::star::awt::Size &rSz) { return FALSE; }
private:
//No copying
WW8FormulaControl(const WW8FormulaControl&);
diff --git a/patches/OOO_1_1/fixup-typedetection-mimetypes.diff b/patches/OOO_1_1/fixup-typedetection-mimetypes.diff
new file mode 100644
index 000000000..0c85425e9
--- /dev/null
+++ b/patches/OOO_1_1/fixup-typedetection-mimetypes.diff
@@ -0,0 +1,209 @@
+--- officecfg/registry/data/org/openoffice/Office/TypeDetection.xcu 27 Apr 2004 16:32:24 -0000 1.44.8.5
++++ officecfg/registry/data/org/openoffice/Office/TypeDetection.xcu 8 Nov 2004 11:56:22 -0000
+@@ -232,7 +232,7 @@
+ <value xml:lang="en-US">Microsoft Excel 4.0</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,,,,xls;xlw,0,</value>
++ <value>0,application/vnd.ms-excel,,,xls;xlw,0,</value>
+ </prop>
+ </node>
+ <node oor:name="calc_MS_Excel_40_VorlageTemplate" oor:op="replace">
+@@ -240,7 +240,7 @@
+ <value xml:lang="en-US">MS Excel 4.0 Template</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,,,,xlt,0,</value>
++ <value>0,application/vnd.ms-excel,,,xlt,0,</value>
+ </prop>
+ </node>
+ <node oor:name="calc_MS_Excel_5095" oor:op="replace">
+@@ -248,7 +248,7 @@
+ <value xml:lang="en-US">Microsoft Excel 5.0</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,,Biff5,,xls;xlw,0,</value>
++ <value>0,application/vnd.ms-excel,Biff5,,xls;xlw,0,</value>
+ </prop>
+ </node>
+ <node oor:name="calc_MS_Excel_5095_VorlageTemplate" oor:op="replace">
+@@ -256,7 +256,7 @@
+ <value xml:lang="en-US">MS Excel 5.0 Template</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,,Biff5,,xlt,0,</value>
++ <value>0,application/vnd.ms-excel,Biff5,,xlt,0,</value>
+ </prop>
+ </node>
+ <node oor:name="calc_MS_Excel_95" oor:op="replace">
+@@ -264,7 +264,7 @@
+ <value xml:lang="en-US">Microsoft Excel 95</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,,Biff5,,xls;xlw,0,</value>
++ <value>0,application/vnd.ms-excel,Biff5,,xls;xlw,0,</value>
+ </prop>
+ </node>
+ <node oor:name="calc_MS_Excel_95_VorlageTemplate" oor:op="replace">
+@@ -272,7 +272,7 @@
+ <value xml:lang="en-US">MS Excel 95 Template</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,,Biff5,,xlt,0,</value>
++ <value>0,application/vnd.ms-excel,Biff5,,xlt,0,</value>
+ </prop>
+ </node>
+ <node oor:name="calc_MS_Excel_97" oor:op="replace">
+@@ -280,7 +280,7 @@
+ <value xml:lang="en-US">Microsoft Excel 97/2000/XP</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>1,,Biff8,,xls;xlw,0,</value>
++ <value>1,application/vnd.ms-excel,Biff8,,xls;xlw,0,</value>
+ </prop>
+ </node>
+ <node oor:name="calc_MS_Excel_97_VorlageTemplate" oor:op="replace">
+@@ -288,7 +288,7 @@
+ <value xml:lang="en-US">MS Excel 97/2000 Template</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>1,,Biff8,,xlt,0,</value>
++ <value>1,application/vnd.ms-excel,Biff8,,xlt,0,</value>
+ </prop>
+ </node>
+ <node oor:name="calc_SYLK" oor:op="replace">
+@@ -1112,7 +1112,7 @@
+ <value xml:lang="en-US">Microsoft MacWord 3.0</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,,,,doc,20002,</value>
++ <value>0,application/vnd.ms-word,,,doc,20002,</value>
+ </prop>
+ </node>
+ <node oor:name="writer_MS_MacWord_40_W4W" oor:op="replace">
+@@ -1120,7 +1120,7 @@
+ <value xml:lang="en-US">Microsoft MacWord 4.0</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,,,,doc,20002,</value>
++ <value>0,application/vnd.ms-word,,,doc,20002,</value>
+ </prop>
+ </node>
+ <node oor:name="writer_MS_MacWord_5x_W4W" oor:op="replace">
+@@ -1128,7 +1128,7 @@
+ <value xml:lang="en-US">Microsoft MacWord 5.x</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,,,,doc,20002,</value>
++ <value>0,application/vnd.ms-word,,,doc,20002,</value>
+ </prop>
+ </node>
+ <node oor:name="writer_MS_WinWord_1x_W4W" oor:op="replace">
+@@ -1136,7 +1136,7 @@
+ <value xml:lang="en-US">Microsoft WinWord 1.x</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,,,,doc,20002,</value>
++ <value>0,application/vnd.ms-word,,,doc,20002,</value>
+ </prop>
+ </node>
+ <node oor:name="writer_MS_WinWord_2x_W4W" oor:op="replace">
+@@ -1144,7 +1144,7 @@
+ <value xml:lang="en-US">Microsoft WinWord 2.x</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,,,,doc,20002,</value>
++ <value>0,application/vnd.ms-word,,,doc,20002,</value>
+ </prop>
+ </node>
+ <node oor:name="writer_MS_WinWord_5" oor:op="replace">
+@@ -1152,7 +1152,7 @@
+ <value xml:lang="en-US">Microsoft WinWord 5</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,application/msword,MSWordDoc,,doc,20002,</value>
++ <value>0,application/vnd.ms-word,MSWordDoc,,doc,20002,</value>
+ </prop>
+ </node>
+ <node oor:name="writer_MS_WinWord_60" oor:op="replace">
+@@ -1160,7 +1160,7 @@
+ <value xml:lang="en-US">Microsoft Word 6.0</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,application/msword,MSWordDoc,,doc,20002,</value>
++ <value>0,application/vnd.ms-word,MSWordDoc,,doc,20002,</value>
+ </prop>
+ </node>
+ <node oor:name="writer_MS_Word_3x_W4W" oor:op="replace">
+@@ -1168,7 +1168,7 @@
+ <value xml:lang="en-US">Microsoft Word 3.x</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,,,,txt,20002,</value>
++ <value>0,application/vnd.ms-word,,,txt,20002,</value>
+ </prop>
+ </node>
+ <node oor:name="writer_MS_Word_4x_W4W" oor:op="replace">
+@@ -1176,7 +1176,7 @@
+ <value xml:lang="en-US">Microsoft Word 4.x</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,,,,txt,20002,</value>
++ <value>0,application/vnd.ms-word,,,txt,20002,</value>
+ </prop>
+ </node>
+ <node oor:name="writer_MS_Word_5x_W4W" oor:op="replace">
+@@ -1184,7 +1184,7 @@
+ <value xml:lang="en-US">Microsoft Word 5.x</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,,,,txt,20002,</value>
++ <value>0,application/vnd.ms-word,,,txt,20002,</value>
+ </prop>
+ </node>
+ <node oor:name="writer_MS_Word_6x_W4W" oor:op="replace">
+@@ -1192,7 +1192,7 @@
+ <value xml:lang="en-US">Microsoft Word 6.x</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,,,,txt,20002,</value>
++ <value>0,application/vnd.ms-word,,,txt,20002,</value>
+ </prop>
+ </node>
+ <node oor:name="writer_MS_Word_95" oor:op="replace">
+@@ -1200,7 +1200,7 @@
+ <value xml:lang="en-US">Microsoft Word 95</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,application/msword,MSWordDoc,,doc,20002,</value>
++ <value>0,application/vnd.ms-word,MSWordDoc,,doc,20002,</value>
+ </prop>
+ </node>
+ <node oor:name="writer_MS_Word_95_Vorlage" oor:op="replace">
+@@ -1208,7 +1208,7 @@
+ <value xml:lang="en-US">MS Word 95 Template</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>0,application/msword,MSWordDoc,,dot,20002,</value>
++ <value>0,application/vnd.ms-word,MSWordDoc,,dot,20002,</value>
+ </prop>
+ </node>
+ <node oor:name="writer_MS_Word_97" oor:op="replace">
+@@ -1216,7 +1216,7 @@
+ <value xml:lang="en-US">Microsoft Word 97/2000/XP</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>1,application/msword,MSWordDoc,,doc,20002,</value>
++ <value>1,application/vnd.ms-word,MSWordDoc,,doc,20002,</value>
+ </prop>
+ </node>
+ <node oor:name="writer_MS_Word_97_Vorlage" oor:op="replace">
+@@ -1224,7 +1224,7 @@
+ <value xml:lang="en-US">MS Word 97/2000 Template</value>
+ </prop>
+ <prop oor:name="Data">
+- <value>1,application/msword,MSWordDoc,,dot,20002,</value>
++ <value>1,application/vnd.ms-word,MSWordDoc,,dot,20002,</value>
+ </prop>
+ </node>
+ <node oor:name="writer_MS_Works_20_DOS_W4W" oor:op="replace">
diff --git a/patches/OOO_1_1/gui-toolbox-large-icons.diff b/patches/OOO_1_1/gui-toolbox-large-icons.diff
index 3e8c9eed7..3bef667bf 100644
--- a/patches/OOO_1_1/gui-toolbox-large-icons.diff
+++ b/patches/OOO_1_1/gui-toolbox-large-icons.diff
@@ -2,10 +2,11 @@ Index: registry/schema/org/openoffice/Office/Common.xcs
===================================================================
RCS file: /cvs/util/officecfg/registry/schema/org/openoffice/Office/Common.xcs,v
retrieving revision 1.84.8.5
-diff -u -r1.84.8.5 Common.xcs
---- officecfg/registry/schema/org/openoffice/Office/Common.xcs 27 Apr 2004 16:35:22 -0000 1.84.8.5
-+++ officecfg/registry/schema/org/openoffice/Office/Common.xcs 8 Jun 2004 23:01:08 -0000
-@@ -28992,41 +28992,46 @@
+Index: officecfg/registry/schema/org/openoffice/Office/Common.xcs
+===================================================================
+--- officecfg/registry/schema/org/openoffice/Office/Common.xcs.orig 2004-09-12 12:14:15.192985792 +0200
++++ officecfg/registry/schema/org/openoffice/Office/Common.xcs 2004-09-12 12:18:47.003664288 +0200
+@@ -36038,50 +36038,55 @@
</enumeration>
<enumeration oor:value="1">
<info>
@@ -32,7 +33,7 @@ diff -u -r1.84.8.5 Common.xcs
- <desc xml:lang="pt-BR">32x32 pixel icons</desc>
- <desc xml:lang="ja">32×32 ピクセルアイコン</desc>
- <desc xml:lang="ko">32x32 pixel icons</desc>
-- <desc xml:lang="tr">32x32 pixel icons</desc>
+- <desc xml:lang="tr">32x32 piksel simgeler</desc>
- <desc xml:lang="th">32x32 pixel icons</desc>
- <desc xml:lang="x-comment">32x32 pixel icons</desc>
- <desc xml:lang="hu">32x32 pixel icons</desc>
@@ -40,6 +41,15 @@ diff -u -r1.84.8.5 Common.xcs
- <desc xml:lang="ns">32x32 pixel icons</desc>
- <desc xml:lang="af">32x32 pixel icons</desc>
- <desc xml:lang="zu">32x32 pixel icons</desc>
+- <desc xml:lang="nb">32x32 pixel icons</desc>
+- <desc xml:lang="et">32x32 pixel icons</desc>
+- <desc xml:lang="cy">32x32 pixel icons</desc>
+- <desc xml:lang="tn">32x32 pixel icons</desc>
+- <desc xml:lang="nn">32x32 pixel icons</desc>
+- <desc xml:lang="eu">32x32 pixel icons</desc>
+- <desc xml:lang="lt">32x32 taškų paveikslai</desc>
+- <desc xml:lang="kn-IN">32x32 pixel icons</desc>
+- <desc xml:lang="gl">32x32 pixel icons</desc>
+ <desc xml:lang="en-US">24x24 pixel icons</desc>
+ <desc xml:lang="el">24x24 pixel icons</desc>
+ <desc xml:lang="nl">24x24 pixel iconen</desc>
@@ -63,7 +73,7 @@ diff -u -r1.84.8.5 Common.xcs
+ <desc xml:lang="pt-BR">24x24 pixel icons</desc>
+ <desc xml:lang="ja">24×24 ピクセルアイコン</desc>
+ <desc xml:lang="ko">24x24 pixel icons</desc>
-+ <desc xml:lang="tr">24x24 pixel icons</desc>
++ <desc xml:lang="tr">24x24 piksel simgeler</desc>
+ <desc xml:lang="th">24x24 pixel icons</desc>
+ <desc xml:lang="x-comment">24x24 pixel icons</desc>
+ <desc xml:lang="hu">24x24 pixel icons</desc>
@@ -71,6 +81,15 @@ diff -u -r1.84.8.5 Common.xcs
+ <desc xml:lang="ns">24x24 pixel icons</desc>
+ <desc xml:lang="af">24x24 pixel icons</desc>
+ <desc xml:lang="zu">24x24 pixel icons</desc>
++ <desc xml:lang="nb">24x24 pixel icons</desc>
++ <desc xml:lang="et">24x24 pixel icons</desc>
++ <desc xml:lang="cy">24x24 pixel icons</desc>
++ <desc xml:lang="tn">24x24 pixel icons</desc>
++ <desc xml:lang="nn">24x24 pixel icons</desc>
++ <desc xml:lang="eu">24x24 pixel icons</desc>
++ <desc xml:lang="lt">24x24 taškų paveikslai</desc>
++ <desc xml:lang="kn-IN">24x24 pixel icons</desc>
++ <desc xml:lang="gl">24x24 pixel icons</desc>
+ </info>
+ </enumeration>
+ <enumeration oor:value="2">
diff --git a/patches/OOO_1_1/i18n-calc-encoding.diff b/patches/OOO_1_1/i18n-calc-encoding.diff
index 15c23ed17..11c0cf3b2 100644
--- a/patches/OOO_1_1/i18n-calc-encoding.diff
+++ b/patches/OOO_1_1/i18n-calc-encoding.diff
@@ -2,10 +2,11 @@ Index: calc/profile_calc.lng
===================================================================
RCS file: /cvs/installation/scp/source/calc/Attic/profile_calc.lng,v
retrieving revision 1.49.24.5
-diff -u -r1.49.24.5 profile_calc.lng
---- scp/source/calc/profile_calc.lng 27 Apr 2004 18:15:09 -0000 1.49.24.5
-+++ scp/source/calc/profile_calc.lng 10 Jun 2004 15:28:49 -0000
-@@ -598,7 +598,7 @@
+Index: scp/source/calc/profile_calc.lng
+===================================================================
+--- scp/source/calc/profile_calc.lng.orig 2004-09-13 22:31:50.000000000 +0200
++++ scp/source/calc/profile_calc.lng 2004-09-14 15:49:37.746332016 +0200
+@@ -678,7 +678,7 @@
82 = "%PRODUCTNAME %PRODUCTVERSION 스프레드시트"
86 = "%PRODUCTNAME %PRODUCTVERSION 工作表"
88 = "%PRODUCTNAME %PRODUCTVERSION 工作表"
@@ -14,23 +15,11 @@ diff -u -r1.49.24.5 profile_calc.lng
07 = " %PRODUCTNAME %PRODUCTVERSION"
30 = " %PRODUCTNAME %PRODUCTVERSION"
31 = "%PRODUCTNAME %PRODUCTVERSION Werkblad"
-@@ -636,7 +636,7 @@
- 34 = "Hoja de ~clculo"
- 55 = "~Planilha"
- 48 = "~Arkusz kalkulacyjny"
--03 = "Folha de ~cálculo"
-+03 = "Folha de ~clculo"
- 82 = "스프레드시트(~S)"
- 33 = "~Classeur"
- 96 = "~Spreadsheet"
-Index: impress/profile_impress.lng
+Index: scp/source/impress/profile_impress.lng
===================================================================
-RCS file: /cvs/installation/scp/source/impress/Attic/profile_impress.lng,v
-retrieving revision 1.57.24.5
-diff -u -r1.57.24.5 profile_impress.lng
---- scp/source/impress/profile_impress.lng 27 Apr 2004 18:18:43 -0000 1.57.24.5
-+++ scp/source/impress/profile_impress.lng 10 Jun 2004 15:28:51 -0000
-@@ -639,7 +639,7 @@
+--- scp/source/impress/profile_impress.lng.orig 2004-09-13 22:32:00.000000000 +0200
++++ scp/source/impress/profile_impress.lng 2004-09-14 15:49:37.749331560 +0200
+@@ -724,7 +724,7 @@
82 = "%PRODUCTNAME %PRODUCTVERSION 프레젠테이션"
86 = "%PRODUCTNAME %PRODUCTVERSION 演示文稿"
88 = "%PRODUCTNAME %PRODUCTVERSION 簡報"
@@ -39,7 +28,7 @@ diff -u -r1.57.24.5 profile_impress.lng
07 = " %PRODUCTNAME %PRODUCTVERSION"
30 = " %PRODUCTNAME %PRODUCTVERSION"
31 = "%PRODUCTNAME %PRODUCTVERSION Presentatie"
-@@ -677,7 +677,7 @@
+@@ -767,7 +767,7 @@
34 = "~Presentacin"
55 = "A~presentao"
48 = "~Prezentacja"
@@ -48,7 +37,7 @@ diff -u -r1.57.24.5 profile_impress.lng
82 = "프레젠테이션(~P)"
33 = "~Prsentation"
96 = " ~"
-@@ -714,7 +714,7 @@
+@@ -809,7 +809,7 @@
34 = "~Presentacin..."
55 = "A~presentao..."
48 = "~Prezentacja..."
@@ -56,15 +45,12 @@ diff -u -r1.57.24.5 profile_impress.lng
+03 = "A~presentao..."
82 = "프레젠테이션(~P)..."
33 = "~Prsentation..."
- 96 = "~Presentation..."
-Index: math/profile_math.lng
+ 96 = "~ ..."
+Index: scp/source/math/profile_math.lng
===================================================================
-RCS file: /cvs/installation/scp/source/math/Attic/profile_math.lng,v
-retrieving revision 1.40.24.4
-diff -u -r1.40.24.4 profile_math.lng
---- scp/source/math/profile_math.lng 27 Apr 2004 18:20:23 -0000 1.40.24.4
-+++ scp/source/math/profile_math.lng 10 Jun 2004 15:28:51 -0000
-@@ -80,7 +80,7 @@
+--- scp/source/math/profile_math.lng.orig 2004-09-13 22:32:04.000000000 +0200
++++ scp/source/math/profile_math.lng 2004-09-14 15:49:37.750331408 +0200
+@@ -90,7 +90,7 @@
34 = "~Frmula"
55 = "~Frmula"
48 = "F~ormua"
@@ -73,14 +59,11 @@ diff -u -r1.40.24.4 profile_math.lng
82 = "수식(~O)"
33 = "F~ormule"
96 = ""
-Index: office/profile.lng
+Index: scp/source/office/profile.lng
===================================================================
-RCS file: /cvs/installation/scp/source/office/Attic/profile.lng,v
-retrieving revision 1.58.24.8
-diff -u -r1.58.24.8 profile.lng
---- scp/source/office/profile.lng 4 May 2004 06:48:05 -0000 1.58.24.8
-+++ scp/source/office/profile.lng 10 Jun 2004 15:28:53 -0000
-@@ -1080,7 +1080,7 @@
+--- scp/source/office/profile.lng.orig 2004-09-13 22:32:06.000000000 +0200
++++ scp/source/office/profile.lng 2004-09-14 15:49:37.756330496 +0200
+@@ -1225,7 +1225,7 @@
34 = "~Tarjetas de visita"
55 = "Cartes de ~Visita"
48 = "~Wizytwki"
@@ -88,8 +71,8 @@ diff -u -r1.58.24.8 profile.lng
+03 = "Cartes de ~visita"
82 = "명함(~U)"
33 = "Cartes de ~visite"
- 96 = "B~usiness Cards"
-@@ -1302,7 +1302,7 @@
+ 96 = "~ "
+@@ -1477,7 +1477,7 @@
34 = "Pgina ~Web..."
55 = "Pgina da ~Web..."
48 = "Strona ~WWW..."
@@ -97,8 +80,8 @@ diff -u -r1.58.24.8 profile.lng
+03 = "Pgina ~Web..."
82 = "웹 페이지(~W)..."
33 = "Page ~Web..."
- 96 = "~Web Page..."
-@@ -1339,7 +1339,7 @@
+ 96 = "~ ..."
+@@ -1519,7 +1519,7 @@
34 = "Formulario..."
55 = "~Formulrio..."
48 = "Fo~rmularz..."
@@ -106,8 +89,8 @@ diff -u -r1.58.24.8 profile.lng
+03 = "F~ormulrio..."
82 = "양식(~R)..."
33 = "Form~ulaire..."
- 96 = "Form..."
-@@ -1520,7 +1520,7 @@
+ 96 = "~..."
+@@ -1725,7 +1725,7 @@
01 = "Address Data Source..."
44 = "Address Data Source..."
49 = "Adress-Datenquelle..."
diff --git a/patches/OOO_1_1/i18n-indic-default-fonts.diff b/patches/OOO_1_1/i18n-indic-default-fonts.diff
new file mode 100644
index 000000000..5fb5aabec
--- /dev/null
+++ b/patches/OOO_1_1/i18n-indic-default-fonts.diff
@@ -0,0 +1,110 @@
+--- officecfg/registry/data/org/openoffice/VCL.xcu.indic 2004-10-19 13:56:32.755677016 -0400
++++ officecfg/registry/data/org/openoffice/VCL.xcu 2004-10-19 14:38:10.975889816 -0400
+@@ -383,7 +383,106 @@
+ <value>Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;Tahoma;Luxi Sans;Interface User;WarpSans;Geneva;Tahoma;MS Sans Serif;Helv;Dialog;Albany AMT;Albany;Lucida;Helvetica;Charcoal;Chicago;Arial;Nimbus Sans L;Helmet;Interface System;Sans Serif</value>
+ </prop>
+ </node>
+-
++ <node oor:name="hi-IN" oor:op="replace">
++ <prop oor:name="UI_SANS" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Hindi;Tahoma;Lucidasans;Lucida Sans;Supplement;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;clearlyU;Interface User;WarpSans;Geneva;MS Sans Serif;Helv;Dialog;Albany AMT;Albany;Lucida;Helvetica;Charcoal;Chicago;Arial;Nimbus Sans L;Helmet;Interface System;Sans Serif</value>
++ </prop>
++ <prop oor:name="CTL_DISPLAY" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Hindi;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_HEADING" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Hindi;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_PRESENTATION" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Hindi;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_SPREADSHEET" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Hindi;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_TEXT" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Hindi;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ </node>
++ <node oor:name="bn-IN" oor:op="replace">
++ <prop oor:name="UI_SANS" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Bengali;Tahoma;Lucidasans;Lucida Sans;Supplement;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;clearlyU;Interface User;WarpSans;Geneva;MS Sans Serif;Helv;Dialog;Albany AMT;Albany;Lucida;Helvetica;Charcoal;Chicago;Arial;Nimbus Sans L;Helmet;Interface System;Sans Serif</value>
++ </prop>
++ <prop oor:name="CTL_DISPLAY" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Bengali;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_HEADING" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Bengali;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_PRESENTATION" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Bengali;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_SPREADSHEET" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Bengali;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_TEXT" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Bengali;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ </node>
++ <node oor:name="gu-IN" oor:op="replace">
++ <prop oor:name="UI_SANS" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Gujarati;Tahoma;Lucidasans;Lucida Sans;Supplement;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;clearlyU;Interface User;WarpSans;Geneva;MS Sans Serif;Helv;Dialog;Albany AMT;Albany;Lucida;Helvetica;Charcoal;Chicago;Arial;Nimbus Sans L;Helmet;Interface System;Sans Serif</value>
++ </prop>
++ <prop oor:name="CTL_DISPLAY" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Gujarati;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_HEADING" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Gujarati;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_PRESENTATION" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Gujarati;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_SPREADSHEET" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Gujarati;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_TEXT" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Gujarati;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ </node>
++ <node oor:name="pa-IN" oor:op="replace">
++ <prop oor:name="UI_SANS" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Punjabi;Tahoma;Lucidasans;Lucida Sans;Supplement;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;clearlyU;Interface User;WarpSans;Geneva;MS Sans Serif;Helv;Dialog;Albany AMT;Albany;Lucida;Helvetica;Charcoal;Chicago;Arial;Nimbus Sans L;Helmet;Interface System;Sans Serif</value>
++ </prop>
++ <prop oor:name="CTL_DISPLAY" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Punjabi;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_HEADING" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Punjabi;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_PRESENTATION" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Punjabi;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_SPREADSHEET" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Punjabi;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_TEXT" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Punjabi;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ </node>
++ <node oor:name="ta-IN" oor:op="replace">
++ <prop oor:name="UI_SANS" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Tamil;Tahoma;Lucidasans;Lucida Sans;Supplement;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;clearlyU;Interface User;WarpSans;Geneva;MS Sans Serif;Helv;Dialog;Albany AMT;Albany;Lucida;Helvetica;Charcoal;Chicago;Arial;Nimbus Sans L;Helmet;Interface System;Sans Serif</value>
++ </prop>
++ <prop oor:name="CTL_DISPLAY" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Tamil;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_HEADING" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Tamil;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_PRESENTATION" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Tamil;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_SPREADSHEET" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Tamil;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ <prop oor:name="CTL_TEXT" oor:op="replace" oor:type="xs:string">
++ <value>Lohit Tamil;Tahoma;Lucidasans;Lucida Sans;Arial Unicode MS</value>
++ </prop>
++ </node>
+ <node oor:name="ar" oor:op="replace">
+ <prop oor:name="UI_SANS" oor:op="replace" oor:type="xs:string">
+ <value>Tahoma;Traditional Arabic;Simplified Arabic;Lucidasans;Lucida Sans;Supplement;Andale Sans UI;Arial Unicode MS;Lucida Sans Unicode;clearlyU;Interface User;WarpSans;Geneva;MS Sans Serif;Helv;Dialog;Albany AMT;Albany;Lucida;Helvetica;Charcoal;Chicago;Arial;Nimbus Sans L;Helmet;Interface System;Sans Serif</value>
diff --git a/patches/OOO_1_1/i18n-indic-resource-fixes.diff b/patches/OOO_1_1/i18n-indic-resource-fixes.diff
new file mode 100644
index 000000000..bd2e7d347
--- /dev/null
+++ b/patches/OOO_1_1/i18n-indic-resource-fixes.diff
@@ -0,0 +1,523 @@
+--- ./tools/source/generic/l2txtenc.cxx.indic 2004-11-25 14:50:34.000000000 -0500
++++ ./tools/source/generic/l2txtenc.cxx 2004-11-25 14:53:58.000000000 -0500
+@@ -96,6 +96,8 @@
+ #define CATALAN 37
+ #define THAI 66
+ #define HINDI 91
++#define TAMIL 92
++#define GUJARATI 94
+ #define EXTERN 99
+
+ rtl_TextEncoding Langcode2TextEncoding( USHORT nLang )
+@@ -137,6 +139,8 @@
+ case NORTHERNSOTHO: return RTL_TEXTENCODING_UTF8;
+ case AFRIKAANS: return RTL_TEXTENCODING_UTF8;
+ case ZULU: return RTL_TEXTENCODING_UTF8;
++ case TAMIL: return RTL_TEXTENCODING_UTF8;
++ case GUJARATI: return RTL_TEXTENCODING_UTF8;
+ }
+ return RTL_TEXTENCODING_MS_1252;
+ }
+--- ./tools/source/rc/resmgr.cxx.indic 2004-11-25 14:50:46.000000000 -0500
++++ ./tools/source/rc/resmgr.cxx 2004-11-25 14:53:58.000000000 -0500
+@@ -1268,6 +1268,10 @@
+ return "66";
+ case LANGUAGE_HINDI:
+ return "91";
++ case LANGUAGE_TAMIL:
++ return "92";
++ case LANGUAGE_GUJARATI:
++ return "94";
+
+ case LANGUAGE_ARABIC:
+ case LANGUAGE_ARABIC_IRAQ:
+@@ -1446,7 +1450,9 @@
+ LANGUAGE_HEBREW,
+ LANGUAGE_NORTHERNSOTHO,
+ LANGUAGE_AFRIKAANS,
+- LANGUAGE_ZULU
++ LANGUAGE_ZULU,
++ LANGUAGE_TAMIL,
++ LANGUAGE_GUJARATI
+ };
+
+ for( size_t i = 0; i < sizeof( aLanguages )/sizeof( aLanguages[0] ); ++i )
+--- ./solenv/inc/postset.mk.indic 2004-11-25 16:16:07.957481328 -0500
++++ ./solenv/inc/postset.mk 2004-11-25 16:20:44.931374896 -0500
+@@ -518,6 +518,32 @@
+ RCLANGFLAGS_28+= -d ZULU
+ iso_28=zu
+
++.IF "$(RES_TAMIL)"!="" || "$(give_me_all_languages)"!=""
++alllangext+=92
++.ENDIF
++completelangext+=92
++tamil$(LANG_GUI)*=$(default$(LANG_GUI))
++lang_92=tamil
++longlang_92=tamil
++langext_92=92
++rsclang_92=-lgTAMIL $(UTF8)
++rescharset_92=$(tamil$(LANG_GUI))
++RCLANGFLAGS_92+= -d TAMIL
++iso_92=ta
++
++.IF "$(RES_GUJARATI)"!="" || "$(give_me_all_languages)"!=""
++alllangext+=94
++.ENDIF
++completelangext+=94
++gujarati$(LANG_GUI)*=$(default$(LANG_GUI))
++lang_94=gujarati
++longlang_94=gujarati
++langext_94=94
++rsclang_94=-lgGUJARATI $(UTF8)
++rescharset_94=$(gujarati$(LANG_GUI))
++RCLANGFLAGS_94+= -d GUJARATI
++iso_94=gu
++
+ .IF "$(L10N_framework)"!=""
+ .IF "$(native_lang_list)"!=""
+ helplist=$(uniq $(alllangext) $(native_lang_list))
+--- ./solenv/inc/lang.mk.indic 2004-11-25 16:22:31.007248912 -0500
++++ ./solenv/inc/lang.mk 2004-11-25 16:22:55.972453624 -0500
+@@ -96,6 +96,8 @@
+ nsotho$(LANG_GUI)=-CHARSET_UTF8
+ afrik$(LANG_GUI)=-CHARSET_UTF8
+ zulu$(LANG_GUI)=-CHARSET_UTF8
++tamil$(LANG_GUI)=-CHARSET_UTF8
++gujarati$(LANG_GUI)=-CHARSET_UTF8
+
+ ###################################################
+ #
+--- ./transex3/inc/export.hxx.indic 2004-11-25 14:49:10.000000000 -0500
++++ ./transex3/inc/export.hxx 2004-11-25 14:53:58.000000000 -0500
+@@ -223,11 +223,21 @@
+ #define NORWEGIAN_NYNORSK_ISO "nn"
+ #define NORWEGIAN_NYNORSK_INDEX 37
+
++#define TAMIL 92
++#define TAMIL_ISO "ta-IN"
++#define TAMIL_INDEX 38
++
++#define GUJARATI 94
++#define GUJARATI_ISO "ga-IN"
++#define GUJARATI_INDEX 39
++
++
++
+ // special language for l10n framework
+ #define EXTERN 99
+-#define EXTERN_INDEX 38
++#define EXTERN_INDEX 40
+
+-#define LANGUAGES 39
++#define LANGUAGES 41
+
+ #define NO_TRANSLATE_ISO "x-no-translate"
+
+@@ -244,6 +254,7 @@
+ ( Export::LangId[ n ] == 88 ) || ( Export::LangId[ n ] == 90 ) || ( Export::LangId[ n ] == 96 ) || \
+ ( Export::LangId[ n ] == 42 ) || ( Export::LangId[ n ] == 43 ) || ( Export::LangId[ n ] == 97 ) || \
+ ( Export::LangId[ n ] == 66 ) || ( Export::LangId[ n ] == 91 ) || ( Export::LangId[ n ] == 00 ) || \
++ ( Export::LangId[ n ] == 92 ) || ( Export::LangId[ n ] == 94 ) || \
+ ( Export::LangId[ n ] == 99 ) || ( Export::LangId[ n ] == 77 ) || ( Export::LangId[ n ] == 36 )))
+
+ #define GERMAN_LIST_LINE_INDEX LANGUAGES
+--- ./transex3/source/export2.cxx.indic 2004-11-25 14:50:01.000000000 -0500
++++ ./transex3/source/export2.cxx 2004-11-25 14:53:58.000000000 -0500
+@@ -154,6 +154,8 @@
+ AFRIKAANS,
+ ZULU,
+ NORWEGIAN_NYNORSK,
++ TAMIL,
++ GUJARATI,
+ EXTERN
+ };
+
+@@ -257,6 +259,10 @@
+ return HINDI;
+ else if ( sLang == ByteString( ESTONIAN_ISO ).ToUpperAscii())
+ return ESTONIAN;
++ else if ( sLang == ByteString( TAMIL_ISO ).ToUpperAscii())
++ return TAMIL;
++ else if ( sLang == ByteString( GUJARATI_ISO ).ToUpperAscii())
++ return GUJARATI;
+ else if ( sLang == ByteString( sIsoCode99 ).ToUpperAscii())
+ return EXTERN;
+
+@@ -305,6 +311,8 @@
+ case NORTHERNSOTHO_INDEX: return NORTHERNSOTHO_ISO;
+ case AFRIKAANS_INDEX: return AFRIKAANS_ISO;
+ case ZULU_INDEX: return ZULU_ISO;
++ case TAMIL_INDEX: return TAMIL_ISO;
++ case GUJARATI_INDEX: return GUJARATI_ISO;
+ case EXTERN_INDEX: return sIsoCode99;
+ }
+ return "";
+@@ -439,6 +447,8 @@
+ "afrikaans",
+ "zulu",
+ "norwegian_nynorsk",
++ "tamil",
++ "gujarati",
+ "extern"
+ };
+
+--- ./transex3/source/export.cxx.indic 2004-11-25 14:49:45.000000000 -0500
++++ ./transex3/source/export.cxx 2004-11-25 14:53:58.000000000 -0500
+@@ -585,7 +585,7 @@
+ // cur. line has macro line end
+ ByteString sTmpLine( sToken );
+ sTmpLine.EraseAllChars( '\t' ); sTmpLine.EraseAllChars( ' ' );
+- if( sTmpLine.Len() < 0 ){
++ if( sTmpLine.Len() > 0 ){
+ if ( sTmpLine.GetChar(( USHORT )( sTmpLine.Len() - 1 )) != '\\' )
+ bNextMustBeDefineEOL = TRUE;
+ }
+@@ -1277,6 +1277,10 @@
+ return THAI_INDEX;
+ else if ( sLang == "HINDI" )
+ return HINDI_INDEX;
++ else if ( sLang == "TAMIL" )
++ return TAMIL_INDEX;
++ else if ( sLang == "GUJARATI" )
++ return GUJARATI_INDEX;
+ else if ( sLang == "EXTERN" )
+ return EXTERN_INDEX;
+
+@@ -2416,7 +2420,8 @@
+ if ( sLine.GetChar( nEnd ) == '\"' )
+ bFound = TRUE;
+ }
+- nEnd --;
++ if (sLine.Search (" \"\\\"\" ;") == STRING_NOTFOUND)
++ nEnd --;
+ ByteString sPostFix( sLine.Copy( ++nEnd ));
+ sLine.Erase( nStart );
+
+--- ./transex3/source/merge.cxx.indic 2004-11-25 14:50:17.000000000 -0500
++++ ./transex3/source/merge.cxx 2004-11-25 14:53:58.000000000 -0500
+@@ -183,7 +183,8 @@
+ aInputStream.ReadLine( sLine );
+ sLine = sLine.Convert( RTL_TEXTENCODING_MS_1252, aCharSet );
+
+- if ( sLine.GetTokenCount( '\t' ) == 15 ) {
++ int tcnt = sLine.GetTokenCount( '\t' );
++ if ( tcnt >= 13 && tcnt <= 16 ) {
+ if ( nFileFormat != FFORMAT_NEW ) {
+ nFileFormat = FFORMAT_NEW;
+ fprintf( stdout, "File detection: Version 2.0 detected!\n" );
+@@ -428,6 +429,8 @@
+ case NORTHERNSOTHO: return NORTHERNSOTHO_INDEX;
+ case AFRIKAANS: return AFRIKAANS_INDEX;
+ case ZULU: return ZULU_INDEX;
++ case TAMIL: return TAMIL_INDEX;
++ case GUJARATI: return GUJARATI_INDEX;
+ case EXTERN: return EXTERN_INDEX;
+ }
+ return 0xFFFF;
+--- ./transex3/source/srclex.l.indic 2004-11-25 14:51:04.000000000 -0500
++++ ./transex3/source/srclex.l 2004-11-25 14:54:10.000000000 -0500
+@@ -129,6 +129,12 @@
+ WorkOnTokenSet( LEVELDOWN, yytext );
+ }
+
++"}"[ \t]* {
++/* LEVELDOWN alternate */
++ YYWarning ("Missing ; at end of block (should be '};')");
++ WorkOnTokenSet( LEVELDOWN, yytext );
++}
++
+ [a-zA-Z0-9_]+[ \t]*"="[ \t]*"MAP_APPFONT"[ \t]*"(".+")".* {
+ /* APPFONTMAPPING Typ = MAP_APPFONT( ... ) */
+ WorkOnTokenSet( APPFONTMAPPING, yytext );
+--- ./readlicense_oo/prj/d.lst.indic 2004-11-27 15:49:19.000000000 -0500
++++ ./readlicense_oo/prj/d.lst 2004-11-27 16:07:19.000000000 -0500
+@@ -71,6 +71,10 @@
+ mkdir: %_DEST%\bin%_EXT%\90\osl
+ mkdir: %_DEST%\bin%_EXT%\91
+ mkdir: %_DEST%\bin%_EXT%\91\osl
++mkdir: %_DEST%\bin%_EXT%\92
++mkdir: %_DEST%\bin%_EXT%\92\osl
++mkdir: %_DEST%\bin%_EXT%\94
++mkdir: %_DEST%\bin%_EXT%\94\osl
+ mkdir: %_DEST%\bin%_EXT%\96
+ mkdir: %_DEST%\bin%_EXT%\96\osl
+ mkdir: %_DEST%\bin%_EXT%\97
+@@ -205,6 +209,18 @@
+ ..\%__SRC%\misc\license\%GUI%\LICENSE %_DEST%\bin%_EXT%\90\osl\LICENSE90
+ ..\%__SRC%\misc\license\WNT\license.txt %_DEST%\bin%_EXT%\90\osl\license90.txt
+ ..\%__SRC%\misc\license\%GUI%\license.html %_DEST%\bin%_EXT%\90\osl\LICENSE90.html
++..\%__SRC%\misc\license\%GUI%\* %_DEST%\bin%_EXT%\91\osl\*
++..\%__SRC%\misc\license\%GUI%\LICENSE %_DEST%\bin%_EXT%\91\osl\LICENSE91
++..\%__SRC%\misc\license\WNT\license.txt %_DEST%\bin%_EXT%\91\osl\license91.txt
++..\%__SRC%\misc\license\%GUI%\license.html %_DEST%\bin%_EXT%\91\osl\LICENSE91.html
++..\%__SRC%\misc\license\%GUI%\* %_DEST%\bin%_EXT%\92\osl\*
++..\%__SRC%\misc\license\%GUI%\LICENSE %_DEST%\bin%_EXT%\92\osl\LICENSE92
++..\%__SRC%\misc\license\WNT\license.txt %_DEST%\bin%_EXT%\92\osl\license92.txt
++..\%__SRC%\misc\license\%GUI%\license.html %_DEST%\bin%_EXT%\92\osl\LICENSE92.html
++..\%__SRC%\misc\license\%GUI%\* %_DEST%\bin%_EXT%\94\osl\*
++..\%__SRC%\misc\license\%GUI%\LICENSE %_DEST%\bin%_EXT%\94\osl\LICENSE94
++..\%__SRC%\misc\license\WNT\license.txt %_DEST%\bin%_EXT%\94\osl\license94.txt
++..\%__SRC%\misc\license\%GUI%\license.html %_DEST%\bin%_EXT%\94\osl\LICENSE94.html
+ ..\%__SRC%\misc\license\%GUI%\* %_DEST%\bin%_EXT%\96\osl\*
+ ..\%__SRC%\misc\license\%GUI%\LICENSE %_DEST%\bin%_EXT%\96\osl\LICENSE96
+ ..\%__SRC%\misc\license\WNT\license.txt %_DEST%\bin%_EXT%\96\osl\license96.txt
+@@ -317,6 +333,12 @@
+ ..\%__SRC%\misc\91\* %_DEST%\bin%_EXT%\91\osl\*
+ ..\%__SRC%\misc\91\readme91.txt %_DEST%\bin%_EXT%\91\osl\README91
+ ..\%__SRC%\misc\91\readme91.html %_DEST%\bin%_EXT%\91\osl\README91.html
++..\%__SRC%\misc\92\* %_DEST%\bin%_EXT%\92\osl\*
++..\%__SRC%\misc\92\readme92.txt %_DEST%\bin%_EXT%\92\osl\README92
++..\%__SRC%\misc\92\readme92.html %_DEST%\bin%_EXT%\92\osl\README92.html
++..\%__SRC%\misc\94\* %_DEST%\bin%_EXT%\94\osl\*
++..\%__SRC%\misc\94\readme94.txt %_DEST%\bin%_EXT%\94\osl\README94
++..\%__SRC%\misc\94\readme94.html %_DEST%\bin%_EXT%\94\osl\README94.html
+ ..\%__SRC%\misc\96\* %_DEST%\bin%_EXT%\96\osl\*
+ ..\%__SRC%\misc\96\readme96.txt %_DEST%\bin%_EXT%\96\osl\README96
+ ..\%__SRC%\misc\96\readme96.html %_DEST%\bin%_EXT%\96\osl\README96.html
+--- ./scp/inc/gcfg.inc.indic 2004-11-27 15:13:34.000000000 -0500
++++ ./scp/inc/gcfg.inc 2004-11-27 15:40:16.000000000 -0500
+@@ -264,6 +264,8 @@
+ ident (88) = resid; \
+ ident (90) = resid; \
+ ident (91) = resid; \
++ ident (92) = resid; \
++ ident (94) = resid; \
+ ident (96) = resid; \
+ ident (97) = resid; \
+ ident (99) = resid
+@@ -303,6 +305,8 @@
+ Name (88) = RESFILENAME(name,88); \
+ Name (90) = RESFILENAME(name,90); \
+ Name (91) = RESFILENAME(name,91); \
++ Name (92) = RESFILENAME(name,92); \
++ Name (94) = RESFILENAME(name,94); \
+ Name (96) = RESFILENAME(name,96); \
+ Name (97) = RESFILENAME(name,97); \
+ Name (99) = RESFILENAME(name,99)
+@@ -342,6 +346,8 @@
+ Name (88) = SHORTRESFILENAME(name,88); \
+ Name (90) = SHORTRESFILENAME(name,90); \
+ Name (91) = SHORTRESFILENAME(name,91); \
++ Name (92) = SHORTRESFILENAME(name,92); \
++ Name (94) = SHORTRESFILENAME(name,94); \
+ Name (96) = SHORTRESFILENAME(name,96); \
+ Name (97) = SHORTRESFILENAME(name,97); \
+ Name (99) = SHORTRESFILENAME(name,99)
+@@ -381,6 +387,8 @@
+ key (88) = READMETXTFILENAME(name,88,ext); \
+ key (90) = READMETXTFILENAME(name,90,ext); \
+ key (91) = READMETXTFILENAME(name,91,ext); \
++ key (92) = READMETXTFILENAME(name,92,ext); \
++ key (94) = READMETXTFILENAME(name,94,ext); \
+ key (96) = READMETXTFILENAME(name,96,ext); \
+ key (97) = READMETXTFILENAME(name,97,ext); \
+ key (99) = READMETXTFILENAME(name,99,ext)
+@@ -420,6 +428,8 @@
+ key (88) = READMEFILENAME(name,88); \
+ key (90) = READMEFILENAME(name,90); \
+ key (91) = READMEFILENAME(name,91); \
++ key (92) = READMEFILENAME(name,92); \
++ key (94) = READMEFILENAME(name,94); \
+ key (96) = READMEFILENAME(name,96); \
+ key (97) = READMEFILENAME(name,97); \
+ key (99) = READMEFILENAME(name,99)
+@@ -459,6 +469,8 @@
+ Name (88) = EXTRAFILENAME(name,88); \
+ Name (90) = EXTRAFILENAME(name,90); \
+ Name (91) = EXTRAFILENAME(name,91); \
++ Name (92) = EXTRAFILENAME(name,92); \
++ Name (94) = EXTRAFILENAME(name,94); \
+ Name (96) = EXTRAFILENAME(name,96); \
+ Name (97) = EXTRAFILENAME(name,97); \
+ Name (99) = EXTRAFILENAME(name,99)
+@@ -498,6 +510,8 @@
+ Name (88) = STRING(name); \
+ Name (90) = STRING(name); \
+ Name (91) = STRING(name); \
++ Name (92) = STRING(name); \
++ Name (94) = STRING(name); \
+ Name (96) = STRING(name); \
+ Name (97) = STRING(name); \
+ Name (99) = STRING(name)
+@@ -537,6 +551,8 @@
+ Name (88) = HELPFILENAME(name,88); \
+ Name (90) = HELPFILENAME(name,90); \
+ Name (91) = HELPFILENAME(name,91); \
++ Name (92) = HELPFILENAME(name,92); \
++ Name (94) = HELPFILENAME(name,94); \
+ Name (96) = HELPFILENAME(name,96); \
+ Name (97) = HELPFILENAME(name,97); \
+ Name (99) = HELPFILENAME(name,99)
+@@ -576,6 +592,8 @@
+ Name (88) = HELPFILENAME(name,88x); \
+ Name (90) = HELPFILENAME(name,90x); \
+ Name (91) = HELPFILENAME(name,91x); \
++ Name (92) = HELPFILENAME(name,92x); \
++ Name (94) = HELPFILENAME(name,94x); \
+ Name (96) = HELPFILENAME(name,96x); \
+ Name (97) = HELPFILENAME(name,97x); \
+ Name (99) = HELPFILENAME(name,99x)
+@@ -615,6 +633,8 @@
+ Name (88) = HELPFILENAME(name,endung); \
+ Name (90) = HELPFILENAME(name,endung); \
+ Name (91) = HELPFILENAME(name,endung); \
++ Name (92) = HELPFILENAME(name,endung); \
++ Name (94) = HELPFILENAME(name,endung); \
+ Name (96) = HELPFILENAME(name,endung); \
+ Name (97) = HELPFILENAME(name,endung); \
+ Name (99) = HELPFILENAME(name,endung)
+@@ -654,6 +674,8 @@
+ Dir (88) = GID_DIR_HELP_88; \
+ Dir (90) = GID_DIR_HELP_90; \
+ Dir (91) = GID_DIR_HELP_91; \
++ Dir (92) = GID_DIR_HELP_92; \
++ Dir (94) = GID_DIR_HELP_94; \
+ Dir (96) = GID_DIR_HELP_96; \
+ Dir (97) = GID_DIR_HELP_97; \
+ Dir (99) = GID_DIR_HELP_99
+@@ -693,6 +715,8 @@
+ DosName (88) = STRING(name); \
+ DosName (90) = STRING(name); \
+ DosName (91) = STRING(name); \
++ DosName (92) = STRING(name); \
++ DosName (94) = STRING(name); \
+ DosName (96) = STRING(name); \
+ DosName (97) = STRING(name); \
+ DosName (99) = STRING(name)
+@@ -732,6 +756,8 @@
+ DosName (88) = "chinese_traditional"; \
+ DosName (90) = "turkish"; \
+ DosName (91) = "hindi"; \
++ DosName (92) = "tamil"; \
++ DosName (94) = "gujarati"; \
+ DosName (96) = "arabic"; \
+ DosName (97) = "hebrew"; \
+ DosName (99) = STRING(ISO_CODE)
+@@ -771,6 +797,8 @@
+ DosName (88) = "zh-TW"; \
+ DosName (90) = "tr"; \
+ DosName (91) = "hi-IN"; \
++ DosName (92) = "ta-IN"; \
++ DosName (94) = "gu-IN"; \
+ DosName (96) = "ar"; \
+ DosName (97) = "he"; \
+ DosName (99) = STRING(ISO_CODE)
+@@ -810,6 +838,8 @@
+ DosName (88) = "zh-TW"; \
+ DosName (90) = "tr"; \
+ DosName (91) = "hi-IN"; \
++ DosName (92) = "ta-IN"; \
++ DosName (94) = "gu-IN"; \
+ DosName (96) = "ar"; \
+ DosName (97) = "he"; \
+ DosName (99) = STRING(ISO_CODE)
+@@ -849,6 +879,8 @@
+ Section (88) = STRING(ident##-88); \
+ Section (90) = STRING(ident##-90); \
+ Section (91) = STRING(ident##-91); \
++ Section (92) = STRING(ident##-92); \
++ Section (94) = STRING(ident##-94); \
+ Section (96) = STRING(ident##-96); \
+ Section (97) = STRING(ident##-97); \
+ Section (99) = STRING(ident##-99)
+@@ -891,6 +923,8 @@
+ Key (88) = STRING(ident##-88-C); \
+ Key (90) = STRING(ident##-90-C); \
+ Key (91) = STRING(ident##-91-C); \
++ Key (92) = STRING(ident##-92-C); \
++ Key (94) = STRING(ident##-94-C); \
+ Key (96) = STRING(ident##-96-C); \
+ Key (97) = STRING(ident##-97); \
+ Key (99) = STRING(ident##-99)
+@@ -948,7 +982,9 @@
+ Key (86) = STRING(2052); \
+ Key (88) = STRING(1028); \
+ Key (90) = STRING(1055); \
+- Key (91) = STRING(91); \
++ Key (91) = STRING(1081); \
++ Key (92) = STRING(1097); \
++ Key (94) = STRING(1095); \
+ Key (96) = STRING(1055); \
+ Key (97) = STRING(1037); \
+ Key (99) = STRING(ISO_CODE)
+@@ -988,6 +1024,8 @@
+ Key (88) = STRING(zh-TW); \
+ Key (90) = STRING(tr); \
+ Key (91) = STRING(hi-IN); \
++ Key (92) = STRING(ta-IN); \
++ Key (94) = STRING(gu-IN); \
+ Key (96) = STRING(ar); \
+ Key (97) = STRING(he); \
+ Key (99) = STRING(ISO_CODE)
+@@ -1025,7 +1063,9 @@
+ Value (86) = STRING(2052); \
+ Value (88) = STRING(1028); \
+ Value (90) = STRING(1055); \
+- Value (91) = STRING(91); \
++ Value (91) = STRING(1081); \
++ Value (92) = STRING(1097); \
++ Value (94) = STRING(1095); \
+ Value (96) = STRING(1025); \
+ Value (97) = STRING(1037); \
+ Value (99) = STRING(ISO_CODE)
+@@ -1065,6 +1105,8 @@
+ Value (88) = STRING(zh-TW); \
+ Value (90) = STRING(tr); \
+ Value (91) = STRING(hi-IN); \
++ Value (92) = STRING(ta-IN); \
++ Value (94) = STRING(gu-IN); \
+ Value (96) = STRING(ar); \
+ Value (97) = STRING(he); \
+ Value (99) = STRING(ISO_CODE)
+@@ -1104,6 +1146,8 @@
+ Value (88) = STRING(en-US); \
+ Value (90) = STRING(tr); \
+ Value (91) = STRING(hi-IN); \
++ Value (92) = STRING(ta-IN); \
++ Value (94) = STRING(gu-IN); \
+ Value (96) = STRING(ar); \
+ Value (97) = STRING(he); \
+ Value (99) = STRING(ISO_CODE)
+@@ -1143,6 +1187,8 @@
+ Value (88) = STRING(zh-TW); \
+ Value (90) = STRING(tr); \
+ Value (91) = STRING(hi-IN); \
++ Value (92) = STRING(ta-IN); \
++ Value (94) = STRING(gu-IN); \
+ Value (96) = STRING(ar); \
+ Value (97) = STRING(he); \
+ Value (99) = STRING(ISO_CODE)
+@@ -1182,6 +1228,8 @@
+ Value (88) = STRING(88); \
+ Value (90) = STRING(90); \
+ Value (91) = STRING(91); \
++ Value (92) = STRING(92); \
++ Value (94) = STRING(94); \
+ Value (96) = STRING(96); \
+ Value (97) = STRING(97); \
+ Value (99) = STRING(99)
+--- ./scp/source/global/setupzip.scp.indic 2004-11-27 15:14:12.000000000 -0500
++++ ./scp/source/global/setupzip.scp 2004-11-27 16:13:24.000000000 -0500
+@@ -653,6 +653,8 @@
+ Name (88) = "fontunxpsprint.zip";
+ Name (90) = "fontunxpsprint.zip";
+ Name (91) = "fontunxpsprint.zip";
++ Name (92) = "fontunxpsprint.zip";
++ Name (94) = "fontunxpsprint.zip";
+ Name (96) = "fontunxpsprint.zip";
+ Name (97) = "fontunxpsprint.zip";
+ Name (99) = "fontunxpsprint.zip";
+--- ./i18npool/source/breakiterator/breakiteratorImpl.cxx.orig 2004-12-09 01:57:22.922849304 -0500
++++ ./i18npool/source/breakiterator/breakiteratorImpl.cxx 2004-12-08 22:51:27.000000000 -0500
+@@ -403,6 +403,10 @@
+ { UnicodeScript_kHebrew, ScriptType::COMPLEX }, // 10,
+ { UnicodeScript_kArabic, ScriptType::COMPLEX }, // 11,
+ { UnicodeScript_kDevanagari, ScriptType::COMPLEX }, // 14,
++ { UnicodeScript_kBengali, ScriptType::COMPLEX }, // 15,
++ { UnicodeScript_kGurmukhi, ScriptType::COMPLEX }, // 16,
++ { UnicodeScript_kGujarati, ScriptType::COMPLEX }, // 17,
++ { UnicodeScript_kTamil, ScriptType::COMPLEX }, // 19,
+ { UnicodeScript_kThai, ScriptType::COMPLEX }, // 24,
+
+ { UnicodeScript_kTibetan, ScriptType::LATIN }, // 26,
diff --git a/patches/OOO_1_1/l10n-YTL.diff b/patches/OOO_1_1/l10n-YTL.diff
new file mode 100644
index 000000000..dbc646a89
--- /dev/null
+++ b/patches/OOO_1_1/l10n-YTL.diff
@@ -0,0 +1,26 @@
+===================================================================
+RCS file: /opt/sourcecast/data/ccvs/repository/l10n/i18npool/source/localedata/data/tr_TR.xml,v
+retrieving revision 1.7
+retrieving revision 1.7.130.1
+diff -u -r1.7 -r1.7.130.1
+--- i18npool/source/localedata/data/tr_TR.xml 2003/04/08 15:58:56 1.7
++++ i18npool/source/localedata/data/tr_TR.xml 2004/10/13 15:38:38 1.7.130.1
+@@ -342,10 +342,17 @@
+ </Calendar>
+ </LC_CALENDAR>
+ <LC_CURRENCY>
+-<Currency default="true" usedInCompatibleFormatCodes="true">
++<Currency default="false" usedInCompatibleFormatCodes="true">
+ <CurrencyID>TL</CurrencyID>
+ <CurrencySymbol>TL</CurrencySymbol>
+ <BankSymbol>TRL</BankSymbol>
++<CurrencyName>Lira</CurrencyName>
++<DecimalPlaces>2</DecimalPlaces>
++</Currency>
++<Currency default="true" usedInCompatibleFormatCodes="false">
++<CurrencyID>TRY</CurrencyID>
++<CurrencySymbol>YTL</CurrencySymbol>
++<BankSymbol>TRY</BankSymbol>
+ <CurrencyName>Lira</CurrencyName>
+ <DecimalPlaces>2</DecimalPlaces>
+ </Currency>
diff --git a/patches/OOO_1_1/ms-interoperability-email-attachment-as-xls-ppt.diff b/patches/OOO_1_1/ms-interoperability-email-attachment-as-xls-ppt.diff
new file mode 100644
index 000000000..61620584d
--- /dev/null
+++ b/patches/OOO_1_1/ms-interoperability-email-attachment-as-xls-ppt.diff
@@ -0,0 +1,505 @@
+--- sfx2/source/inc/mailmodel.hxx 2002-08-26 13:30:37.000000000 +0530
++++ sfx2/source/inc/mailmodel.hxx 2004-11-30 17:05:01.000000000 +0530
+@@ -90,6 +90,9 @@
+ enum MailDocType
+ {
+ TYPE_SELF,
++ TYPE_ASMSDOC,
++ TYPE_ASMSEXCEL,
++ TYPE_ASMSPOWERPOINT,
+ TYPE_ASPDF
+ };
+
+@@ -114,7 +117,7 @@
+ void ClearList( AddressList_Impl* pList );
+ void MakeValueList( AddressList_Impl* pList, String& rValueList );
+ SaveResult SaveDocument( String& rFileName, String& rType );
+- SaveResult SaveDocAsPDF( String& rFileName, String& rType );
++ SaveResult SaveDocAs( String& rFileName, String& rType,MailDocType mailDocType );
+
+ DECL_LINK( DoneHdl, void* );
+
+
+--- sfx2/source/dialog/mailmodel.cxx 2004-11-26 21:41:16.000000000 +0530
++++ sfx2/source/dialog/mailmodel.cxx 2004-11-30 17:09:23.000000000 +0530
+@@ -402,7 +402,7 @@
+ return eRet;
+ }
+
+-SfxMailModel_Impl::SaveResult SfxMailModel_Impl::SaveDocAsPDF( String& rFileName, String& rType )
++SfxMailModel_Impl::SaveResult SfxMailModel_Impl::SaveDocAs( String& rFileName, String& rType,MailDocType mailDocType )
+ {
+ SaveResult eRet = SAVE_CANCELLED;
+ SfxViewFrame* pTopViewFrm = mpBindings->GetDispatcher_Impl()->GetFrame()->GetTopViewFrame();
+@@ -422,9 +422,15 @@
+ SfxFactoryFilterContainer* pFilterContainer = xDocShell->GetFactory().GetFilterContainer();
+ if ( pFilterContainer )
+ {
+- String aPDFExtension = String::CreateFromAscii( ".pdf" );
++ String aExtension ;
++ switch (mailDocType){
++ case TYPE_ASPDF : aExtension = String::CreateFromAscii( ".pdf" );break;
++ case TYPE_ASMSDOC : aExtension = String::CreateFromAscii( ".doc" );break;
++ case TYPE_ASMSEXCEL : aExtension = String::CreateFromAscii( ".xls" );break;
++ case TYPE_ASMSPOWERPOINT : aExtension = String::CreateFromAscii( ".ppt" );break;
++ }
+
+- const SfxFilter* pFilter = pFilterContainer->GetFilter4Extension( aPDFExtension, SFX_FILTER_EXPORT );
++ const SfxFilter* pFilter = pFilterContainer->GetFilter4Extension( aExtension, SFX_FILTER_EXPORT );
+ sal_Bool bHasFilter = pFilter ? sal_True : sal_False;
+
+ // create temp file name with leading chars and extension
+@@ -440,7 +446,7 @@
+ String aName;
+ if ( aFileObj.hasExtension() )
+ {
+- pExt = new String( aPDFExtension );
++ pExt = new String( aExtension );
+ aFileObj.removeExtension();
+ aLeadingStr = aFileObj.getName( INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_WITH_CHARSET );
+ // aLeadingStr += String::CreateFromAscii( "_" );
+@@ -463,11 +469,25 @@
+ delete pExt;
+
+ rFileName = aTempFile.GetURL();
++ SfxBoolItem aPicklist( SID_PICKLIST, FALSE );
++ SfxBoolItem aSaveTo( SID_SAVETO, TRUE );
++ SfxStringItem* pFilterName = NULL;
++ if ( pFilter && bHasFilter )
++ pFilterName = new SfxStringItem( SID_FILTER_NAME, pFilter->GetFilterName() );
++
++ SfxStringItem* pPassItem = NULL;
++ String aPasswd;
++ if ( GetPasswd_Impl( xDocShell->GetMedium()->GetItemSet(), aPasswd ) )
++ pPassItem = new SfxStringItem( SID_PASSWORD, aPasswd );
+
+ // save document to temp file
+ SfxStringItem aFileName( SID_FILE_NAME, rFileName );
+- const SfxBoolItem *pRet = (const SfxBoolItem*)pDisp->Execute( SID_EXPORTDOCASPDF, SFX_CALLMODE_SYNCHRON, &aFileName, 0L );
+- BOOL bRet = pRet ? pRet->GetValue() : FALSE;
++ const SfxBoolItem *pRet = (const SfxBoolItem*)pDisp->Execute( SID_SAVEASDOC, SFX_CALLMODE_SYNCHRON, &aFileName, &aPicklist, &aSaveTo,
++ pFilterName ? pFilterName : pPassItem,
++ pFilterName ? pPassItem : 0L, 0L );
++
++/* const SfxBoolItem *pRet = (const SfxBoolItem*)pDisp->Execute( SID_EXPORTDOCASPDF, SFX_CALLMODE_SYNCHRON, &aFileName, 0L );
++*/ BOOL bRet = pRet ? pRet->GetValue() : FALSE;
+ eRet = bRet ? SAVE_SUCCESSFULL : SAVE_CANCELLED;
+
+ if ( pFilter )
+@@ -568,11 +590,16 @@
+ String aFileName, aContentType;
+
+ sal_Bool bSuccessfull = sal_False;
+- if ( eMailDocType == TYPE_SELF )
+- eSaveResult = SaveDocument( aFileName, aContentType );
+- else
+- eSaveResult = SaveDocAsPDF( aFileName, aContentType );
+-
++ switch (eMailDocType){
++ case TYPE_ASMSDOC:
++ case TYPE_ASMSPOWERPOINT:
++ case TYPE_ASPDF:
++ case TYPE_ASMSEXCEL:
++ eSaveResult = SaveDocAs( aFileName, aContentType,eMailDocType );
++ break;
++ default:
++ eSaveResult = SaveDocument( aFileName, aContentType);
++ }
+ if ( eSaveResult == SAVE_SUCCESSFULL )
+ {
+ SfxFrame* pViewFrm = mpBindings->GetDispatcher_Impl()->GetFrame()->GetFrame();
+
+--- sfx2/sdi/sfx.sdi 2004-03-30 18:26:27.000000000 +0530
++++ sfx2/sdi/sfx.sdi 2004-11-30 16:36:40.000000000 +0530
+@@ -6982,7 +6982,6 @@
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DOCUMENT;
+ ]
+-
+ //--------------------------------------------------------------------------
+ SfxBoolItem SendMail SID_MAIL_SENDDOC
+ (SfxStringItem Recipient SID_MAIL_RECIPIENT,SfxStringItem Subject SID_MAIL_SUBJECT,SfxStringItem MailText SID_MAIL_TEXT,SfxUInt16Item Priority SID_MAIL_PRIORITY,SfxBoolItem AttachedDoc SID_MAIL_ATTACH,SfxStringItem AttachFiles SID_MAIL_ATTACH_FILE)
+@@ -7010,7 +7009,88 @@
+ ToolBoxConfig = TRUE,
+ GroupId = GID_DOCUMENT;
+ ]
++SfxBoolItem SendMailDocAsMSDoc SID_MAIL_SENDDOCASMSDOC
++(SfxStringItem Recipient SID_MAIL_RECIPIENT,SfxStringItem Subject SID_MAIL_SUBJECT,SfxStringItem MailText SID_MAIL_TEXT,SfxUInt16Item Priority SID_MAIL_PRIORITY,SfxBoolItem AttachedDoc SID_MAIL_ATTACH,SfxStringItem AttachFiles SID_MAIL_ATTACH_FILE)
++[
++ /* flags: */
++ AutoUpdate = FALSE,
++ Cachable = Cachable,
++ FastCall = FALSE,
++ HasCoreId = FALSE,
++ HasDialog = TRUE,
++ ReadOnlyDoc = TRUE,
++ Toggle = FALSE,
++ Container = FALSE,
++ RecordAbsolute = FALSE,
++ RecordPerSet;
++ Asynchron;
++
++ /* status: */
++ SlotType = SfxStringItem
+
++ /* config: */
++ AccelConfig = TRUE,
++ MenuConfig = TRUE,
++ StatusBarConfig = FALSE,
++ ToolBoxConfig = TRUE,
++ GroupId = GID_DOCUMENT;
++]
++//--------------------------------------------------------------------------
++SfxBoolItem SendMailDocAsMSExcel SID_MAIL_SENDDOCASMSEXCEL
++(SfxStringItem Recipient SID_MAIL_RECIPIENT,SfxStringItem Subject SID_MAIL_SUBJECT,SfxStringItem MailText SID_MAIL_TEXT,SfxUInt16Item Priority SID_MAIL_PRIORITY,SfxBoolItem AttachedDoc SID_MAIL_ATTACH,SfxStringItem AttachFiles SID_MAIL_ATTACH_FILE)
++[
++ /* flags: */
++ AutoUpdate = FALSE,
++ Cachable = Cachable,
++ FastCall = FALSE,
++ HasCoreId = FALSE,
++ HasDialog = TRUE,
++ ReadOnlyDoc = TRUE,
++ Toggle = FALSE,
++ Container = FALSE,
++ RecordAbsolute = FALSE,
++ RecordPerSet;
++ Asynchron;
++
++ /* status: */
++ SlotType = SfxStringItem
++
++ /* config: */
++ AccelConfig = TRUE,
++ MenuConfig = TRUE,
++ StatusBarConfig = FALSE,
++ ToolBoxConfig = TRUE,
++ GroupId = GID_DOCUMENT;
++]
++
++//--------------------------------------------------------------------------
++SfxBoolItem SendMailDocAsMSPowerPoint SID_MAIL_SENDDOCASMSPOWERPOINT
++(SfxStringItem Recipient SID_MAIL_RECIPIENT,SfxStringItem Subject SID_MAIL_SUBJECT,SfxStringItem MailText SID_MAIL_TEXT,SfxUInt16Item Priority SID_MAIL_PRIORITY,SfxBoolItem AttachedDoc SID_MAIL_ATTACH,SfxStringItem AttachFiles SID_MAIL_ATTACH_FILE)
++[
++ /* flags: */
++ AutoUpdate = FALSE,
++ Cachable = Cachable,
++ FastCall = FALSE,
++ HasCoreId = FALSE,
++ HasDialog = TRUE,
++ ReadOnlyDoc = TRUE,
++ Toggle = FALSE,
++ Container = FALSE,
++ RecordAbsolute = FALSE,
++ RecordPerSet;
++ Asynchron;
++
++ /* status: */
++ SlotType = SfxStringItem
++
++ /* config: */
++ AccelConfig = TRUE,
++ MenuConfig = TRUE,
++ StatusBarConfig = FALSE,
++ ToolBoxConfig = TRUE,
++ GroupId = GID_DOCUMENT;
++]
++//--------------------------------------------------------------------------
+ SfxBoolItem SendMailDocAsPDF SID_MAIL_SENDDOCASPDF
+ (SfxStringItem Recipient SID_MAIL_RECIPIENT,SfxStringItem Subject SID_MAIL_SUBJECT,SfxStringItem MailText SID_MAIL_TEXT,SfxUInt16Item Priority SID_MAIL_PRIORITY,SfxBoolItem AttachedDoc SID_MAIL_ATTACH,SfxStringItem AttachFiles SID_MAIL_ATTACH_FILE)
+ [
+
+--- sfx2/sdi/sfxslots.src 2004-11-26 21:41:10.000000000 +0530
++++ sfx2/sdi/sfxslots.src 2004-11-30 16:56:29.000000000 +0530
+@@ -4756,6 +4756,24 @@
+ SlotName[ kannada ] = "ದಸ್ತಾವೇಜನ್ನು ಕಳಿಸು";
+ SlotName[ galician ] = "Enviar o documento";
+ };
++SfxSlotInfo SID_MAIL_SENDDOCASMSDOC
++{
++ SlotName = "Send document as MS-DOC Attachment";
++ SlotName [ english ] = "Send document as MS-DOC Attachment";
++ SlotName [ english_us ] = "Send document as MS-DOC Attachment";
++};
++SfxSlotInfo SID_MAIL_SENDDOCASMSEXCEL
++{
++ SlotName = "Send document as MS-EXCEL Attachment";
++ SlotName [ english ] = "Send document as MS-EXCEL Attachment";
++ SlotName [ english_us ] = "Send document as MS-EXCEL Attachment";
++};
++SfxSlotInfo SID_MAIL_SENDDOCASMSPOWERPOINT
++{
++ SlotName = "Send document as MS-POWERPOINT Attachment";
++ SlotName [ english ] = "Send document as MS-POWERPOINT Attachment";
++ SlotName [ english_us ] = "Send document as MS-POWERPOINT Attachment";
++};
+ SfxSlotInfo SID_MAIL_SENDDOCASPDF
+ {
+ SlotName = "Dokument als PDF-Anhang versenden";
+
+--- sfx2/inc/sfxsids.hrc 2004-11-26 21:41:02.000000000 +0530
++++ sfx2/inc/sfxsids.hrc 2004-11-30 16:30:43.000000000 +0530
+@@ -147,7 +147,10 @@
+ #define SID_MAIL_OPEN (SID_SFX_START + 329)
+ #define SID_MAIL_NOTIFY (SID_SFX_START + 330)
+ #define SID_MAIL_SENDDOC (SID_SFX_START + 331)
+-#define SID_MAIL_SENDDOCASPDF (SID_SFX_START + 1672)
++#define SID_MAIL_SENDDOCASPDF (SID_SFX_START + 1672)
++#define SID_MAIL_SENDDOCASMSDOC (SID_SFX_START + 1686)
++#define SID_MAIL_SENDDOCASMSEXCEL (SID_SFX_START + 1687)
++#define SID_MAIL_SENDDOCASMSPOWERPOINT (SID_SFX_START + 1688)
+ #define SID_MAIL_INBOX (SID_SFX_START + 332)
+
+ #define SID_MAIL_RECIPIENT (SID_SFX_START + 334)
+@@ -554,7 +557,7 @@
+ #define SID_REPAIRPACKAGE (SID_SFX_START + 1683)
+ #define SID_ADDONHELP (SID_SFX_START + 1684)
+ #define SID_OBJECTSHELL (SID_SFX_START + 1685)
+-#define SID_SFX_free_START (SID_SFX_START + 1686)
++#define SID_SFX_free_START (SID_SFX_START + 1689)
+ #define SID_SFX_free_END (SID_SFX_START + 3999)
+
+ #define SID_OPEN_NEW_VIEW (SID_SFX_START + 520)
+
+--- sfx2/sdi/viwslots.sdi 2002-08-26 13:02:06.000000000 +0530
++++ sfx2/sdi/viwslots.sdi 2004-11-30 22:05:45.000000000 +0530
+@@ -22,6 +22,21 @@
+ ExecMethod = ExecMisc_Impl ;
+ StateMethod = GetState_Impl ;
+ ]
++ SID_MAIL_SENDDOCASMSDOC // ole(no) api(todo)
++ [
++ ExecMethod = ExecMisc_Impl ;
++ StateMethod = GetState_Impl ;
++ ]
++ SID_MAIL_SENDDOCASMSEXCEL // ole(no) api(todo)
++ [
++ ExecMethod = ExecMisc_Impl ;
++ StateMethod = GetState_Impl ;
++ ]
++ SID_MAIL_SENDDOCASMSPOWERPOINT // ole(no) api(todo)
++ [
++ ExecMethod = ExecMisc_Impl ;
++ StateMethod = GetState_Impl ;
++ ]
+ //---------------------------------------------------------------------
+ SID_PRINTDOC // ole(no) api(play/rec)
+ [
+
+--- sfx2/source/view/viewsh.cxx 2003-11-07 15:42:06.000000000 +0530
++++ sfx2/source/view/viewsh.cxx 2004-12-01 17:46:28.075380424 +0530
+@@ -185,6 +185,9 @@
+
+ case SID_MAIL_SENDDOCASPDF:
+ case SID_MAIL_SENDDOC:
++ case SID_MAIL_SENDDOCASMSDOC:
++ case SID_MAIL_SENDDOCASMSEXCEL:
++ case SID_MAIL_SENDDOCASMSPOWERPOINT:
+ if ( SvtInternalOptions().MailUIEnabled() )
+ {
+ GetViewFrame()->SetChildWindow( SID_MAIL_CHILDWIN, TRUE );
+@@ -209,10 +212,18 @@
+ }
+
+ SfxMailModel_Impl::SendMailResult eResult = SfxMailModel_Impl::SEND_MAIL_ERROR;
+- if ( nId == SID_MAIL_SENDDOCASPDF )
+- eResult = aModel.Send( SfxMailModel_Impl::TYPE_ASPDF );
+- else
+- eResult = aModel.Send( SfxMailModel_Impl::TYPE_SELF );
++ switch (nId) {
++ case SID_MAIL_SENDDOCASPDF:
++ eResult = aModel.Send( SfxMailModel_Impl::TYPE_ASPDF );break;
++ case SID_MAIL_SENDDOCASMSDOC:
++ eResult = aModel.Send( SfxMailModel_Impl::TYPE_ASMSDOC );break;
++ case SID_MAIL_SENDDOCASMSEXCEL:
++ eResult = aModel.Send( SfxMailModel_Impl::TYPE_ASMSEXCEL );break;
++ case SID_MAIL_SENDDOCASMSPOWERPOINT:
++ eResult = aModel.Send( SfxMailModel_Impl::TYPE_ASMSPOWERPOINT );break;
++ default:
++ eResult = aModel.Send( SfxMailModel_Impl::TYPE_SELF );
++ }
+
+ if ( eResult == SfxMailModel_Impl::SEND_MAIL_ERROR )
+ {
+@@ -325,6 +336,9 @@
+ // Mail-Funktionen
+ case SID_MAIL_SENDDOCASPDF:
+ case SID_MAIL_SENDDOC:
++ case SID_MAIL_SENDDOCASMSDOC:
++ case SID_MAIL_SENDDOCASMSEXCEL:
++ case SID_MAIL_SENDDOCASMSPOWERPOINT:
+ {
+ BOOL bEnable = !GetViewFrame()->HasChildWindow( SID_MAIL_CHILDWIN );
+ if ( !bEnable )
+@@ -348,6 +362,60 @@
+ rSet.DisableItem( nSID );
+ }
+
++ else if ( nSID == SID_MAIL_SENDDOCASMSDOC )
++ {
++ SfxObjectShellRef xDocShell = GetViewFrame()->GetObjectShell();
++ if ( xDocShell.Is() )
++ {
++ // Get PDF Filter from container
++ SfxFactoryFilterContainer* pFilterContainer = xDocShell->GetFactory().GetFilterContainer();
++ if ( pFilterContainer )
++ {
++ String aPDFExtension = String::CreateFromAscii( ".doc" );
++ const SfxFilter* pFilter = pFilterContainer->GetFilter4Extension( aPDFExtension, SFX_FILTER_EXPORT );
++ if ( pFilter != NULL )
++ break;
++ }
++ }
++
++ rSet.DisableItem( nSID );
++ }
++ else if ( nSID == SID_MAIL_SENDDOCASMSEXCEL )
++ {
++ SfxObjectShellRef xDocShell = GetViewFrame()->GetObjectShell();
++ if ( xDocShell.Is() )
++ {
++ // Get PDF Filter from container
++ SfxFactoryFilterContainer* pFilterContainer = xDocShell->GetFactory().GetFilterContainer();
++ if ( pFilterContainer )
++ {
++ String aPDFExtension = String::CreateFromAscii( ".xls" );
++ const SfxFilter* pFilter = pFilterContainer->GetFilter4Extension( aPDFExtension, SFX_FILTER_EXPORT );
++ if ( pFilter != NULL )
++ break;
++ }
++ }
++
++ rSet.DisableItem( nSID );
++ }
++ else if ( nSID == SID_MAIL_SENDDOCASMSPOWERPOINT )
++ {
++ SfxObjectShellRef xDocShell = GetViewFrame()->GetObjectShell();
++ if ( xDocShell.Is() )
++ {
++ // Get PDF Filter from container
++ SfxFactoryFilterContainer* pFilterContainer = xDocShell->GetFactory().GetFilterContainer();
++ if ( pFilterContainer )
++ {
++ String aPDFExtension = String::CreateFromAscii( ".ppt" );
++ const SfxFilter* pFilter = pFilterContainer->GetFilter4Extension( aPDFExtension, SFX_FILTER_EXPORT );
++ if ( pFilter != NULL )
++ break;
++ }
++ }
++
++ rSet.DisableItem( nSID );
++ }
+ break;
+ }
+
+
+--- svx/inc/globlmn.hrc 2004-11-26 21:40:58.000000000 +0530
++++ svx/inc/globlmn.hrc 2004-12-01 17:33:01.865942888 +0530
+@@ -3251,6 +3251,30 @@
+ Text[ kannada ] = "ಸ್ವಯಂಚಾಲಿತ ಅಂಚೆ"; \
+ Text[ galician ] = "~Correo automtico"; \
+
++#define ITEM_FILE_MAIL_SENDDOCASMSDOC \
++ Identifier = SID_MAIL_SENDDOCASMSDOC ; \
++ Command = ".uno:SendMailDocAsMSDoc" ; \
++ HelpID = SID_MAIL_SENDDOCASMSDOC ; \
++ Text = "Dokument als E-~Mail..." ; \
++ Text [ english ] = "Document as MS-~Doc Attachment..." ; \
++ Text [ english_us ] = "Document as MS-~Doc Attachment..." ; \
++
++#define ITEM_FILE_MAIL_SENDDOCASMSEXCEL \
++ Identifier = SID_MAIL_SENDDOCASMSEXCEL ; \
++ Command = ".uno:SendMailDocAsMSExcel" ; \
++ HelpID = SID_MAIL_SENDDOCASMSEXCEL ; \
++ Text = "Dokument als ~E-Mail..." ; \
++ Text [ english ] = "Document as MS-~Excel Attachment..." ; \
++ Text [ english_us ] = "Document as MS-~Excel Attachment..." ; \
++
++#define ITEM_FILE_MAIL_SENDDOCASMSPOWERPOINT \
++ Identifier = SID_MAIL_SENDDOCASMSPOWERPOINT ; \
++ Command = ".uno:SendMailDocAsMSPowerPoint" ; \
++ HelpID = SID_MAIL_SENDDOCASMSPOWERPOINT ; \
++ Text = "Dokument als E-Mail..." ; \
++ Text [ english ] = "Document as MS-~PPT Attachment..." ; \
++ Text [ english_us ] = "Document as MS-~PPT Attachment..." ; \
++
+ #define ITEM_FILE_MAIL_SENDDOC \
+ Identifier = SID_MAIL_SENDDOC ; \
+ Command = ".uno:SendMail" ; \
+
+--- sw/sdi/wviewsh.sdi 2003-03-27 21:09:12.000000000 +0530
++++ sw/sdi/wviewsh.sdi 2004-11-29 20:58:45.000000000 +0530
+@@ -223,6 +223,11 @@
+ [
+ StateMethod = GetState ;
+ ]
++ SID_MAIL_SENDDOCASMSDOC
++ [
++ ExecMethod = Execute ;
++ StateMethod = GetState ;
++ ]
+ }
+
+ shell SwSrcView : SfxViewShell
+
+--- sw/source/ui/inc/swmn.hrc 2004-11-26 21:41:10.000000000 +0530
++++ sw/source/ui/inc/swmn.hrc 2004-11-29 21:04:08.000000000 +0530
+@@ -5121,6 +5121,10 @@
+ {
+ ITEM_FILE_MAIL_SENDDOCASPDF
+ };
++ MenuItem
++ {
++ ITEM_FILE_MAIL_SENDDOCASMSDOC
++ };
+ };
+ };
+ Text[ english_us ] = "Send";
+@@ -5182,6 +5186,11 @@
+ {
+ ITEM_FILE_MAIL_SENDDOCASPDF
+ };
++ MenuItem
++ {
++ ITEM_FILE_MAIL_SENDDOCASMSDOC
++ };
++
+ SEPARATOR ;
+ MenuItem
+ {
+
+--- /home/mjayant/OOO_113_backup/ooo-build/build/OOO_1_1_3/sd/source/ui/app/menuids2.src 2004-11-26 21:41:10.000000000 +0530
++++ sd/source/ui/app/menuids2.src 2004-11-30 21:47:12.000000000 +0530
+@@ -249,6 +249,7 @@
+ {\
+ MI ( ITEM_FILE_MAIL_SENDDOC ) \
+ MI ( ITEM_FILE_MAIL_SENDDOCASPDF ) \
++ MI ( ITEM_FILE_MAIL_SENDDOCASMSPOWERPOINT ) \
+ };\
+ };\
+ Text [ portuguese_brazilian ] = "~Enviar" ; \
+
+--- sc/source/ui/src/menue.src 2004-11-26 21:41:10.000000000 +0530
++++ sc/source/ui/src/menue.src 2004-12-01 18:05:15.435995560 +0530
+@@ -342,6 +342,10 @@
+ {
+ ITEM_FILE_MAIL_SENDDOCASPDF
+ };
++ MenuItem
++ {
++ ITEM_FILE_MAIL_SENDDOCASMSEXCEL
++ };
+ };
+ };
+ Text [ portuguese ] = "~Enviar" ;
+@@ -6397,6 +6401,10 @@
+ {
+ ITEM_FILE_MAIL_SENDDOCASPDF
+ };
++ MenuItem
++ {
++ ITEM_FILE_MAIL_SENDDOCASMSEXCEL
++ };
+ };
+ };
+ Text [ portuguese ] = "~Enviar" ;
diff --git a/patches/OOO_1_1/native-fpicker-not-default.diff b/patches/OOO_1_1/native-fpicker-not-default.diff
new file mode 100644
index 000000000..26de5a2de
--- /dev/null
+++ b/patches/OOO_1_1/native-fpicker-not-default.diff
@@ -0,0 +1,17 @@
+Index: Common.xcu
+===================================================================
+RCS file: /cvs/util/officecfg/registry/data/org/openoffice/Office/Common.xcu,v
+retrieving revision 1.13.34.2
+diff -u -r1.13.34.2 Common.xcu
+--- officecfg/registry/data/org/openoffice/Office/Common.xcu 6 Jul 2004 10:50:06 -0000 1.13.34.2
++++ officecfg/registry/data/org/openoffice/Office/Common.xcu 21 Dec 2004 15:40:02 -0000
+@@ -437,4 +437,9 @@
+ </node>
+ </node>
+ </node>
++ <node oor:name="Misc">
++ <prop oor:name="UseSystemFileDialog" oor:type="xs:boolean">
++ <value>false</value>
++ </prop>
++ </node>
+ </oor:component-data>
diff --git a/patches/OOO_1_1/no-splash-takeover.patch b/patches/OOO_1_1/no-splash-takeover.patch
index 632e24458..167e44bd6 100644
--- a/patches/OOO_1_1/no-splash-takeover.patch
+++ b/patches/OOO_1_1/no-splash-takeover.patch
@@ -1,6 +1,6 @@
---- vcl/source/window/introwin.cxx.nosplashontop 2003-11-17 17:52:25.000000000 -0500
-+++ vcl/source/window/introwin.cxx 2003-11-17 17:52:36.000000000 -0500
-@@ -126,10 +126,10 @@
+--- vcl/source/window/introwin.cxx
++++ vcl/source/window/introwin.cxx
+@@ -114,10 +120,11 @@ void IntroWindow::ImplInitData()
// -----------------------------------------------------------------------
IntroWindow::IntroWindow( ) :
@@ -10,6 +10,7 @@
ImplInitData();
- WorkWindow::ImplInit( 0, WB_INTROWIN, NULL );
+ WorkWindow::ImplInit( 0, WB_NOBORDER, NULL );
++ SetText(XubString(RTL_CONSTASCII_USTRINGPARAM("OpenOffice.org...")));
}
// -----------------------------------------------------------------------
diff --git a/patches/OOO_1_1/qpro-build.diff b/patches/OOO_1_1/qpro-build.diff
new file mode 100644
index 000000000..9613b6c25
--- /dev/null
+++ b/patches/OOO_1_1/qpro-build.diff
@@ -0,0 +1,125 @@
+--- sc/prj/build.lst 2004-07-21 19:19:39.000000000 +0100
++++ sc/prj/build.lst 2004-10-19 15:05:37.208057512 +0100
+@@ -39,6 +39,7 @@
+ sc sc\source\filter\pch get - all sc_fpch sc_sdi NULL
+ sc sc\source\filter\excel nmake - all sc_excel sc_sdi NULL
+ sc sc\source\filter\lotus nmake - all sc_lotus sc_sdi NULL
++sc sc\source\filter\qpro nmake - all sc_qpro sc_sdi NULL
+ sc sc\source\filter\starcalc nmake - all sc_scalc sc_sdi NULL
+ sc sc\source\filter\dif nmake - all sc_dif sc_sdi NULL
+ sc sc\source\filter\rtf nmake - all sc_rtf sc_sdi NULL
+@@ -48,4 +49,4 @@
+ sc sc\addin\datefunc nmake - all sc_addfu sc_sdi NULL
+ sc sc\addin\rot13 nmake - all sc_adrot sc_sdi NULL
+ sc sc\addin\util nmake - all sc_adutil sc_addfu sc_adrot sc_sdi NULL
+-sc sc\util nmake - all sc_util sc_addfu sc_adrot sc_adutil sc_app sc_attr sc_cctrl sc_cosrc sc_data sc_dbgui sc_dif sc_docsh sc_drfnc sc_excel sc_form sc_html sc_lotus sc_misc sc_name sc_nvipi sc_opt sc_page sc_rtf sc_scalc sc_style sc_tool sc_uisrc sc_undo sc_unobj sc_view sc_xcl97 sc_xml sc_acc sc_ftools NULL
++sc sc\util nmake - all sc_util sc_addfu sc_adrot sc_adutil sc_app sc_attr sc_cctrl sc_cosrc sc_data sc_dbgui sc_dif sc_docsh sc_drfnc sc_excel sc_form sc_html sc_lotus sc_qpro sc_misc sc_name sc_nvipi sc_opt sc_page sc_rtf sc_scalc sc_style sc_tool sc_uisrc sc_undo sc_unobj sc_view sc_xcl97 sc_xml sc_acc sc_ftools NULL
+
+--- sc/util/makefile.mk 2004-07-21 19:20:30.000000000 +0100
++++ sc/util/makefile.mk 2004-10-19 15:06:02.413225744 +0100
+@@ -204,6 +204,7 @@
+ $(SLB)$/xcl97.lib \
+ $(SLB)$/html.lib \
+ $(SLB)$/lotus.lib \
++ $(SLB)$/qpro.lib \
+ $(SLB)$/rtf.lib \
+ $(SLB)$/xml.lib \
+ $(SLB)$/accessibility.lib \
+
+--- /dev/null 2004-08-25 18:34:59.000000000 +0100
++++ sc/source/filter/qpro/makefile.mk 2004-10-19 15:13:40.746548488 +0100
+@@ -0,0 +1,94 @@
++#*************************************************************************
++#
++# $RCSfile$
++#
++# $Revision$
++#
++# last change: $Author$ $Date$
++#
++# The Contents of this file are made available subject to the terms of
++# either of the following licenses
++#
++# - GNU Lesser General Public License Version 2.1
++# - Sun Industry Standards Source License Version 1.1
++#
++# Sun Microsystems Inc., October, 2000
++#
++# GNU Lesser General Public License Version 2.1
++# =============================================
++# Copyright 2000 by Sun Microsystems, Inc.
++# 901 San Antonio Road, Palo Alto, CA 94303, USA
++#
++# This library is free software; you can redistribute it and/or
++# modify it under the terms of the GNU Lesser General Public
++# License version 2.1, as published by the Free Software Foundation.
++#
++# This library 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
++# Lesser General Public License for more details.
++#
++# You should have received a copy of the GNU Lesser 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
++#
++#
++# Sun Industry Standards Source License Version 1.1
++# =================================================
++# The contents of this file are subject to the Sun Industry Standards
++# Source License Version 1.1 (the "License"); You may not use this file
++# except in compliance with the License. You may obtain a copy of the
++# License at http://www.openoffice.org/license.html.
++#
++# Software provided under this License is provided on an "AS IS" basis,
++# WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING,
++# WITHOUT LIMITATION, WARRANTIES THAT THE SOFTWARE IS FREE OF DEFECTS,
++# MERCHANTABLE, FIT FOR A PARTICULAR PURPOSE, OR NON-INFRINGING.
++# See the License for the specific provisions governing your rights and
++# obligations concerning the Software.
++#
++# The Initial Developer of the Original Code is: Sun Microsystems, Inc.
++#
++# Copyright: 2000 by Sun Microsystems, Inc.
++#
++# All Rights Reserved.
++#
++# Contributor(s): _______________________________________
++#
++#
++#
++#*************************************************************************
++
++PRJ=..$/..$/..
++
++PRJNAME=sc
++TARGET=qpro
++
++PROJECTPCH4DLL=TRUE
++PROJECTPCH=filt_pch
++PROJECTPCHSOURCE=..\pch\filt_pch
++
++AUTOSEG=true
++
++# --- Settings -----------------------------------------------------
++
++.INCLUDE : scpre.mk
++.INCLUDE : settings.mk
++.INCLUDE : sc.mk
++.INCLUDE : $(PRJ)$/util$/makefile.pmk
++
++# --- Files --------------------------------------------------------
++
++CXXFILES = \
++ qpro.cxx \
++ qproform.cxx
++
++SLOFILES = \
++ $(SLO)$/qpro.obj \
++ $(SLO)$/qproform.obj
++
++# --- Tagets -------------------------------------------------------
++
++.INCLUDE : target.mk
++
diff --git a/patches/OOO_1_1/sc-autofilter-empty-nonempty.diff b/patches/OOO_1_1/sc-autofilter-empty-nonempty.diff
new file mode 100644
index 000000000..564dd650a
--- /dev/null
+++ b/patches/OOO_1_1/sc-autofilter-empty-nonempty.diff
@@ -0,0 +1,42 @@
+--- /home/sragavan/cvs/bk/ooo-build/build/OOO_1_1_2/sc/source/ui/view/gridwin.cxx 2003-06-02 12:58:42.000000000 +0530
++++ sc/source/ui/view/gridwin.cxx 2004-10-11 11:22:24.000000000 +0530
+@@ -159,6 +159,8 @@
+ #define SC_AUTOFILTER_ALL 0
+ #define SC_AUTOFILTER_CUSTOM 1
+ #define SC_AUTOFILTER_TOP10 2
++#define SC_AUTOFILTER_EMPTY 3
++#define SC_AUTOFILTER_NOTEMPTY 4
+
+ // Modi fuer die FilterListBox
+ enum ScFilterBoxMode
+@@ -711,7 +713,7 @@
+ long nMaxText = 0;
+
+ // default entries
+- static const USHORT nDefIDs[] = { SCSTR_ALL, SCSTR_STDFILTER, SCSTR_TOP10FILTER };
++ static const USHORT nDefIDs[] = { SCSTR_ALL, SCSTR_STDFILTER, SCSTR_TOP10FILTER, SCSTR_EMPTY, SCSTR_NOTEMPTY };
+ const USHORT nDefCount = sizeof(nDefIDs) / sizeof(USHORT);
+ for (i=0; i<nDefCount; i++)
+ {
+@@ -1087,6 +1089,21 @@
+ rNewEntry.eOp = SC_TOPVAL;
+ *rNewEntry.pStr = String::CreateFromAscii(RTL_CONSTASCII_STRINGPARAM("10"));
+ }
++ else if (nSel == SC_AUTOFILTER_EMPTY)
++ {
++ rNewEntry.pStr->Erase();
++ rNewEntry.bQueryByString = FALSE;
++ rNewEntry.eOp = SC_EQUAL;
++ rNewEntry.nVal = SC_EMPTYFIELDS;
++
++ }
++ else if (nSel == SC_AUTOFILTER_NOTEMPTY)
++ {
++ rNewEntry.pStr->Erase();
++ rNewEntry.bQueryByString = FALSE;
++ rNewEntry.eOp = SC_EQUAL;
++ rNewEntry.nVal = SC_NONEMPTYFIELDS;
++ }
+ else
+ {
+ rNewEntry.eOp = SC_EQUAL;
diff --git a/patches/OOO_1_1/sc-datapilot-autoformat.diff b/patches/OOO_1_1/sc-datapilot-autoformat.diff
new file mode 100644
index 000000000..d5d229b69
--- /dev/null
+++ b/patches/OOO_1_1/sc-datapilot-autoformat.diff
@@ -0,0 +1,406 @@
+diff -u -r ../OOO_1_1_3_bak/sc/idl/pivotsh.idl sc/idl/pivotsh.idl
+--- ../OOO_1_1_3_bak/sc/idl/pivotsh.idl 2004-10-20 10:04:47.000000000 +0530
++++ sc/idl/pivotsh.idl 2004-11-17 10:31:29.000000000 +0530
+@@ -64,6 +64,7 @@
+
+ SID_PIVOT_RECALC [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_PIVOT_KILL [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
++ SID_PIVOT_AFMT [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ }
+
+ shell ScPivotShell
+diff -u -r ../OOO_1_1_3_bak/sc/idl/scalc.idl sc/idl/scalc.idl
+--- ../OOO_1_1_3_bak/sc/idl/scalc.idl 2004-10-20 10:04:47.000000000 +0530
++++ sc/idl/scalc.idl 2004-11-17 11:26:06.000000000 +0530
+@@ -326,6 +326,63 @@
+ ]
+
+ //--------------------------------------------------------------------------
++SfxVoidItem AutoFormatPivotTable SID_PIVOT_AFMT
++( )
++[
++// ### ACHTUNG: Neuer ConfigName in Resource? "Datenpilottabelle l<94>schen" : "Datenpilottabelle lschen"
++ ConfigName = "Datenpilottabelle l<94>schen" ;
++// ### ACHTUNG: Neuer Helptext in Resource? "Datenpilottabelle l<94>schen" : "Datenpilottabelle lschen"
++ HelpText = "Datenpilottabelle l<94>schen" ;
++
++ /* flags: */
++ AutoUpdate = FALSE ,
++ Cachable = Cachable ,
++ FastCall = FALSE ,
++ HasCoreId = FALSE ,
++ HasDialog = FALSE ,
++ ReadOnlyDoc = TRUE ,
++ Toggle = FALSE ,
++ Synchron ;
++
++ /* plugin: */
++ Container = FALSE ,
++ PlugComm = FALSE ,
++
++ /* api: */
++ Export = TRUE ,
++ IsCollection = FALSE ,
++ RecordAbsolute = FALSE ,
++ RecordPerSet ;
++
++ /* config: */
++ AccelConfig = FALSE ,
++ MenuConfig = TRUE ,
++ StatusBarConfig = FALSE ,
++ ToolBoxConfig = FALSE ,
++ GroupId = GID_DATA ;
++ //idlpp ConfigName [ english_us ] = "Delete DataPilot Table" ;
++ //idlpp HelpText [ english_us ] = "Delete DataPilot table" ;
++ //idlpp ConfigName [ portuguese ] = "Eliminar tabela do Piloto de dados" ;
++ //idlpp HelpText [ portuguese ] = "Elimina a tabela do Piloto de dados" ;
++ //idlpp ConfigName [ dutch ] = "Datapiloottabel wissen" ;
++ //idlpp HelpText [ dutch ] = "Datapiloottabel wissen" ;
++ //idlpp ConfigName [ french ] = "Supprimer tableau analytique du DataPilote" ;
++ //idlpp HelpText [ french ] = "Supprime le tableau analytique du DataPilote" ;
++ //idlpp ConfigName [ spanish ] = "Eliminar tabla del Piloto de datos" ;
++ //idlpp HelpText [ spanish ] = "Eliminar la tabla del piloto de datos" ;
++ //idlpp ConfigName [ italian ] = "Elimina tabella DataPilot" ;
++ //idlpp HelpText [ italian ] = "Datenpilottabelle lschen" ;
++ //idlpp ConfigName [ danish ] = "DeletePivotTable" ;
++ //idlpp HelpText [ danish ] = "Datenpilottabelle lschen" ;
++ //idlpp ConfigName [ swedish ] = "Ta bort datapilottabell" ;
++ //idlpp HelpText [ swedish ] = "Ta bort datapilottabell" ;
++ //idlpp ConfigName [ portuguese_brazilian ] = "DeletePivotTable" ;
++ //idlpp HelpText [ portuguese_brazilian ] = "Datenpilottabelle lschen" ;
++]
++
++
++
++ //--------------------------------------------------------------------------
+ SfxVoidItem DefineDBName SID_DEFINE_DBNAME
+ ( )
+ [
+diff -u -r ../OOO_1_1_3_bak/sc/inc/dpobject.hxx sc/inc/dpobject.hxx
+--- ../OOO_1_1_3_bak/sc/inc/dpobject.hxx 2004-10-20 10:04:48.000000000 +0530
++++ sc/inc/dpobject.hxx 2004-11-17 16:07:35.669577984 +0530
+@@ -131,7 +131,7 @@
+ ScDPOutput* pOutput;
+ BOOL bSettingsChanged;
+ BOOL bAlive; // FALSE if only used to hold settings
+-
++ USHORT nAutoFormatIndex;
+
+ void CreateObjects();
+ void CreateOutput();
+@@ -157,6 +157,9 @@
+ void SetOutRange(const ScRange& rRange);
+ const ScRange& GetOutRange() const { return aOutRange; }
+
++ void SetAutoFormatIndex (const USHORT nIndex);
++ const USHORT GetAutoFormatIndex () { if (this == NULL) return 65535; else return nAutoFormatIndex; }
++
+ void SetSheetDesc(const ScSheetSourceDesc& rDesc);
+ void SetImportDesc(const ScImportSourceDesc& rDesc);
+ void SetServiceData(const ScDPServiceDesc& rDesc);
+diff -u -r ../OOO_1_1_3_bak/sc/inc/sc.hrc sc/inc/sc.hrc
+--- ../OOO_1_1_3_bak/sc/inc/sc.hrc 2004-10-20 10:04:48.000000000 +0530
++++ sc/inc/sc.hrc 2004-11-17 14:08:31.000000000 +0530
+@@ -1575,6 +1575,7 @@
+
+ #define RID_SCDLG_LINKAREA (SC_DIALOGS_START + 132)
+
++#define SID_PIVOT_AFMT (SC_DIALOGS_START + 133)
+ #define SC_DIALOGS_END (SC_DIALOGS_START + 150)
+
+ #ifndef STD_MASKCOLOR
+diff -u -r ../OOO_1_1_3_bak/sc/sdi/pivotsh.sdi sc/sdi/pivotsh.sdi
+--- ../OOO_1_1_3_bak/sc/sdi/pivotsh.sdi 2004-10-20 10:04:54.000000000 +0530
++++ sc/sdi/pivotsh.sdi 2004-11-17 14:55:13.000000000 +0530
+@@ -5,6 +5,7 @@
+ SID_PIVOT_RECALC [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_PIVOT_KILL [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ SID_DP_FILTER [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
++ SID_PIVOT_AFMT [ ExecMethod = Execute; StateMethod = GetState; Export = FALSE; ]
+ }
+
+ shell ScPivotShell
+diff -u -r ../OOO_1_1_3_bak/sc/sdi/scalc.sdi sc/sdi/scalc.sdi
+--- ../OOO_1_1_3_bak/sc/sdi/scalc.sdi 2004-10-20 10:04:54.000000000 +0530
++++ sc/sdi/scalc.sdi 2004-11-17 14:59:48.000000000 +0530
+@@ -1846,6 +1846,31 @@
+ GroupId = GID_DATA;
+ ]
+
++SfxVoidItem AutoFormatPivotTable SID_PIVOT_AFMT
++()
++[
++ /* flags: */
++ AutoUpdate = FALSE,
++ Cachable = Cachable,
++ FastCall = FALSE,
++ HasCoreId = FALSE,
++ HasDialog = FALSE,
++ ReadOnlyDoc = TRUE,
++ Toggle = FALSE,
++ Container = FALSE,
++ RecordAbsolute = FALSE,
++ RecordPerSet;
++ Synchron;
++
++ /* config: */
++ AccelConfig = FALSE,
++ MenuConfig = TRUE,
++ StatusBarConfig = FALSE,
++ ToolBoxConfig = FALSE,
++ GroupId = GID_DATA;
++]
++
++
+ //--------------------------------------------------------------------------
+ SfxVoidItem DeletePrintArea SID_DELETE_PRINTAREA
+ ()
+diff -u -r ../OOO_1_1_3_bak/sc/source/core/data/dpobject.cxx sc/source/core/data/dpobject.cxx
+--- ../OOO_1_1_3_bak/sc/source/core/data/dpobject.cxx 2004-10-20 10:05:04.000000000 +0530
++++ sc/source/core/data/dpobject.cxx 2004-10-28 14:59:46.000000000 +0530
+@@ -171,6 +171,7 @@
+ pImpDesc( NULL ),
+ pServDesc( NULL ),
+ pOutput( NULL ),
++ nAutoFormatIndex(65535),
+ bSettingsChanged( FALSE )
+ {
+ }
+@@ -182,6 +183,7 @@
+ aTableName( r.aTableName ),
+ aTableTag( r.aTableTag ),
+ aOutRange( r.aOutRange ),
++ nAutoFormatIndex(r.nAutoFormatIndex),
+ pSheetDesc( NULL ),
+ pImpDesc( NULL ),
+ pServDesc( NULL ),
+@@ -226,6 +228,11 @@
+ InvalidateData(); // re-init source from SaveData
+ }
+
++void ScDPObject::SetAutoFormatIndex(const USHORT nIndex)
++{
++ nAutoFormatIndex = nIndex;
++}
++
+ void ScDPObject::SetOutRange(const ScRange& rRange)
+ {
+ aOutRange = rRange;
+diff -u -r ../OOO_1_1_3_bak/sc/source/ui/docshell/dbdocfun.cxx sc/source/ui/docshell/dbdocfun.cxx
+--- ../OOO_1_1_3_bak/sc/source/ui/docshell/dbdocfun.cxx 2004-10-20 10:05:03.000000000 +0530
++++ sc/source/ui/docshell/dbdocfun.cxx 2004-10-29 09:10:47.000000000 +0530
+@@ -1357,6 +1357,37 @@
+ delete pNewUndoDoc;
+ delete pUndoDPObj;
+
++ if (const_cast<ScDPObject *>(pNewObj)->GetAutoFormatIndex() != 65535)
++ {
++ ScViewData* pViewData = rDocShell.GetViewData();
++ ScDocument* pDoc = pViewData->GetDocument();
++ rDocShell.GetViewData()->GetViewShell()->GetDBData( TRUE, SC_DB_OLD );
++ const ScMarkData& rMark1 = pViewData->GetMarkData();
++ USHORT nStartCol;
++ USHORT nStartRow;
++ USHORT nStartTab;
++ USHORT nEndCol;
++ USHORT nEndRow;
++ USHORT nEndTab;
++
++ rDocShell.GetViewData()->GetSimpleArea( nStartCol,nStartRow,nStartTab,
++ nEndCol,nEndRow,nEndTab );
++ ScRange Outrange = pNewObj->GetOutRange();
++ if (( (Outrange.aStart.Col() <= nStartCol) && (nStartCol <= Outrange.aEnd.Col() )&& (nStartTab == Outrange.aStart.Tab()))
++ && ( (Outrange.aStart.Row() <= nStartRow) && (nStartRow <= Outrange.aEnd.Row() )) )
++ {
++
++ if ( !rMark1.IsMarked() && !rMark1.IsMultiMarked() )
++ rDocShell.GetViewData()->GetViewShell()->MarkDataArea( TRUE );
++ //FIXME: Autoformat even when clicked from a non-dp cell.
++ pViewData->MoveNextRow();
++ rDocShell.GetViewData()->GetViewShell()->AutoFormat( const_cast<ScDPObject *>(pNewObj)->GetAutoFormatIndex());
++ rDocShell.GetViewData()->GetViewShell()->AutoFormatPivotTable( const_cast<ScDPObject *>(pNewObj), const_cast<ScDPObject *>(pNewObj)->GetAutoFormatIndex() );
++ pViewData->MovePrevRow();
++ }
++ }
++
++
+ if (bDone)
+ aModificator.SetDocumentModified();
+
+diff -u -r ../OOO_1_1_3_bak/sc/source/ui/inc/dbfunc.hxx sc/source/ui/inc/dbfunc.hxx
+--- ../OOO_1_1_3_bak/sc/source/ui/inc/dbfunc.hxx 2004-10-20 10:04:56.000000000 +0530
++++ sc/source/ui/inc/dbfunc.hxx 2004-10-28 15:27:28.000000000 +0530
+@@ -112,7 +112,9 @@
+ const ScDPObject& rSource, BOOL bApi = FALSE );
+ void DeletePivotTable();
+ void RecalcPivotTable();
+-
++ void AutoFormatPivotTable(USHORT nIndex);
++ void AutoFormatPivotTable(ScDPObject* pDPObj, USHORT nIndex);
++
+ void MakeOutline( BOOL bColumns, BOOL bRecord = TRUE );
+ void RemoveOutline( BOOL bColumns, BOOL bRecord = TRUE );
+ void RemoveAllOutlines( BOOL bRecord = TRUE );
+diff -u -r ../OOO_1_1_3_bak/sc/source/ui/inc/viewdata.hxx sc/source/ui/inc/viewdata.hxx
+--- ../OOO_1_1_3_bak/sc/source/ui/inc/viewdata.hxx 2004-10-20 10:04:55.000000000 +0530
++++ sc/source/ui/inc/viewdata.hxx 2004-10-28 16:32:32.000000000 +0530
+@@ -321,6 +321,8 @@
+
+ BOOL GetSimpleArea( USHORT& rStartCol, USHORT& rStartRow, USHORT& rStartTab,
+ USHORT& rEndCol, USHORT& rEndRow, USHORT& rEndTab );
++ void MoveNextRow();
++ void MovePrevRow();
+ BOOL GetSimpleArea( ScRange& rRange );
+ void GetMultiArea( ScRangeListRef& rRange );
+
+diff -u -r ../OOO_1_1_3_bak/sc/source/ui/src/popup.src sc/source/ui/src/popup.src
+--- ../OOO_1_1_3_bak/sc/source/ui/src/popup.src 2004-10-20 10:04:59.000000000 +0530
++++ sc/source/ui/src/popup.src 2004-11-17 15:36:31.310003720 +0530
+@@ -1040,6 +1040,14 @@
+ Text[ kannada ] = "ಆರಂಭ...";
+ };
+ MenuItem
++ {
++ Identifier = SID_PIVOT_AFMT ;
++ HelpId = SID_PIVOT_AFMT ;
++ Text = "A~ktualisieren" ;
++ Text [ ENGLISH ] = "~AutoFormat..." ;
++ Text [ english_us ] = "~AutoFormat..." ;
++ };
++ MenuItem
+ {
+ Identifier = SID_PIVOT_RECALC ;
+ HelpId = SID_PIVOT_RECALC ;
+diff -u -r ../OOO_1_1_3_bak/sc/source/ui/view/dbfunc3.cxx sc/source/ui/view/dbfunc3.cxx
+--- ../OOO_1_1_3_bak/sc/source/ui/view/dbfunc3.cxx 2004-10-20 10:05:00.000000000 +0530
++++ sc/source/ui/view/dbfunc3.cxx 2004-10-28 15:26:15.000000000 +0530
+@@ -679,7 +679,29 @@
+ else
+ ErrorMessage(STR_PIVOT_NOTFOUND);
+ }
++void ScDBFunc::AutoFormatPivotTable(USHORT nIndex)
++{
++ ScDocShell* pDocSh = GetViewData()->GetDocShell();
++ ScDocument* pDoc = GetViewData()->GetDocument();
++
++ // old pivot not used any more
+
++ ScDPObject* pDPObj = pDoc->GetDPAtCursor( GetViewData()->GetCurX(),
++ GetViewData()->GetCurY(),
++ GetViewData()->GetTabNo() );
++ if ( pDPObj )
++ {
++ pDPObj->SetAutoFormatIndex(nIndex);
++ }
++ else
++ ErrorMessage(STR_PIVOT_NOTFOUND);
++
++}
++
++void ScDBFunc::AutoFormatPivotTable(ScDPObject* pDPObj, USHORT nIndex)
++{
++ pDPObj->SetAutoFormatIndex(nIndex);
++}
+
+ //
+ // DB-Operationen (Sortieren, Filtern, Teilergebnisse) wiederholen
+diff -u -r ../OOO_1_1_3_bak/sc/source/ui/view/pivotsh.cxx sc/source/ui/view/pivotsh.cxx
+--- ../OOO_1_1_3_bak/sc/source/ui/view/pivotsh.cxx 2004-10-20 10:05:00.000000000 +0530
++++ sc/source/ui/view/pivotsh.cxx 2004-11-17 10:29:37.000000000 +0530
+@@ -87,6 +87,9 @@
+ #include "dbdocfun.hxx"
+ #include "uiitems.hxx"
+ #include "pfiltdlg.hxx"
++#include "autoform.hxx"
++#include "autofmt.hxx"
++#include "editable.hxx"
+
+ //------------------------------------------------------------------------
+
+@@ -125,13 +128,56 @@
+ {
+ switch ( rReq.GetSlot() )
+ {
+- case SID_PIVOT_RECALC:
+- pViewShell->RecalcPivotTable();
+- break;
++ case SID_PIVOT_AFMT:
++ {
++ ScViewData* pViewData = pViewShell->GetViewData();
++
++ pViewShell->GetDBData( TRUE, SC_DB_OLD );
++ const ScMarkData& rMark1 = pViewData->GetMarkData();
++ if ( !rMark1.IsMarked() && !rMark1.IsMultiMarked() )
++ pViewShell->MarkDataArea( TRUE );
++
++ Window* pDlgParent = pViewShell->GetDialogParent();
++
++ pViewData->MoveNextRow();
++
++ ScGlobal::ClearAutoFormat();
++ ScAutoFormatData* pNewEntry = pViewShell->CreateAutoFormatData();
++ ScAutoFormatDlg* pDlg = new ScAutoFormatDlg(
++ pDlgParent,
++ ScGlobal::GetAutoFormat(),
++ pNewEntry,
++ pViewShell->GetViewData()->GetDocument() );
++
++ if ( pDlg->Execute() == RET_OK )
++ {
++ ScEditableTester aTester( pViewShell );
++ if ( !aTester.IsEditable() )
++ {
++ pViewShell->ErrorMessage(aTester.GetMessageId());
++ }
++ else
++ {
++ /* AutoFormat and Store the index */
++ pViewShell->AutoFormat( pDlg->GetIndex() );
++ pViewShell->AutoFormatPivotTable( pDlg->GetIndex() );
++ }
++ }
++ delete pDlg;
++ delete pNewEntry;
++
+
++ //pViewShell->DeletePivotTable();
++ //pViewShell->RecalcPivotTable();
++ break;
++ }
+ case SID_PIVOT_KILL:
+ pViewShell->DeletePivotTable();
+ break;
++ case SID_PIVOT_RECALC:
++ //pViewShell->DeletePivotTable();
++ pViewShell->RecalcPivotTable();
++ break;
+
+ case SID_DP_FILTER:
+ {
+diff -u -r ../OOO_1_1_3_bak/sc/source/ui/view/viewdata.cxx sc/source/ui/view/viewdata.cxx
+--- ../OOO_1_1_3_bak/sc/source/ui/view/viewdata.cxx 2004-10-20 10:05:00.000000000 +0530
++++ sc/source/ui/view/viewdata.cxx 2004-10-28 16:32:16.000000000 +0530
+@@ -645,6 +645,23 @@
+ aLogicMode.SetScaleY( GetZoomY() );
+ }
+
++void ScViewData::MoveNextRow()
++{
++ ScRange aMarkRange;
++ aMarkData.GetMarkArea(aMarkRange);
++ aMarkRange.aStart.Set(aMarkRange.aStart.Col(), aMarkRange.aStart.Row() +1, aMarkRange.aStart.Tab());
++ aMarkData.SetMarkArea(aMarkRange);
++}
++
++void ScViewData::MovePrevRow()
++{
++ ScRange aMarkRange;
++ aMarkData.GetMarkArea(aMarkRange);
++ aMarkRange.aStart.Set(aMarkRange.aStart.Col(), aMarkRange.aStart.Row() -1, aMarkRange.aStart.Tab());
++ aMarkData.SetMarkArea(aMarkRange);
++}
++
++
+ BOOL ScViewData::GetSimpleArea( USHORT& rStartCol, USHORT& rStartRow, USHORT& rStartTab,
+ USHORT& rEndCol, USHORT& rEndRow, USHORT& rEndTab )
+ {
diff --git a/patches/OOO_1_1/sc-paste-insert-rows.diff b/patches/OOO_1_1/sc-paste-insert-rows.diff
new file mode 100644
index 000000000..ef783c7d6
--- /dev/null
+++ b/patches/OOO_1_1/sc-paste-insert-rows.diff
@@ -0,0 +1,13 @@
+--- /home/sragavan/cvs/bk/ooo-build/build/OOO_1_1_2/sc/source/ui/view/viewfun3.cxx 2003-10-31 21:40:15.000000000 +0530
++++ sc/source/ui/view/viewfun3.cxx 2004-10-14 13:29:36.754960480 +0530
+@@ -442,8 +442,8 @@
+
+ if (pOwnClip)
+ PasteFromClip( IDF_ALL, pOwnClip->GetDocument(),
+- PASTE_NOFUNC, FALSE, FALSE, FALSE, INS_NONE, IDF_NONE,
+- TRUE ); // allow warning dialog
++ PASTE_NOFUNC, FALSE, FALSE, FALSE, INS_CELLSDOWN, IDF_NONE,
++ FALSE );
+ else if (pDrawClip)
+ PasteDraw();
+ else
diff --git a/patches/OOO_1_1/sc-standard-filter-options.diff b/patches/OOO_1_1/sc-standard-filter-options.diff
new file mode 100644
index 000000000..676d97b2d
--- /dev/null
+++ b/patches/OOO_1_1/sc-standard-filter-options.diff
@@ -0,0 +1,362 @@
+--- /home/sragavan/cvs/bk/ooo-build/build/OOO_1_1_2/sc/inc/global.hxx 2003-04-28 21:00:46.000000000 +0530
++++ sc/inc/global.hxx 2004-10-08 16:23:48.000000000 +0530
+@@ -1329,6 +1329,8 @@
+
+ enum ScQueryOp
+ {
++ SC_BEGINS_WITH,
++ SC_ENDS_WITH,
+ SC_EQUAL,
+ SC_LESS,
+ SC_GREATER,
+--- /home/sragavan/cvs/bk/ooo-build/build/OOO_1_1_2/sc/source/ui/dbgui/filtdlg.cxx 2004-01-09 20:11:10.000000000 +0530
++++ sc/source/ui/dbgui/filtdlg.cxx 2004-10-08 16:24:56.000000000 +0530
+@@ -83,6 +83,7 @@
+ #include "viewdata.hxx"
+ #include "document.hxx"
+ #include "scresid.hxx"
++#include "docoptio.hxx"
+
+ #include "foptmgr.hxx"
+
+@@ -219,6 +220,7 @@
+ aBtnMore,
+ aBtnCase,
+ aBtnRegExp,
++ aBtnWholeWord,
+ aBtnHeader,
+ aBtnUnique,
+ aBtnCopyResult,
+@@ -573,6 +575,17 @@
+ bCopyPosOk = ( SCA_VALID == (nResult & SCA_VALID) );
+ }
+
++ /*
++ * The reg exp checkbutton read is moved up, since,
++ * for begins and ends with query we are makeing them as re query transparently
++ * Checking this later spoils the entire transparent work.
++ */
++ theParam.bRegExp = aBtnRegExp.IsChecked();
++
++ ScDocOptions pDocOpts = pDoc->GetDocOptions();
++ pDocOpts.SetMatchWholeCell(aBtnWholeWord.IsChecked());
++ pDoc->SetDocOptions(pDocOpts);
++
+ for ( USHORT i=0; i<3; i++ )
+ {
+ USHORT nField = aFieldLbArr[i]->GetSelectEntryPos();
+@@ -606,6 +619,19 @@
+ }
+ else
+ {
++ if (eOp == SC_BEGINS_WITH ) {
++ String tmp ('^');
++ tmp .Append(aStrVal);
++ ::rtl::OUString str (tmp);
++ aStrVal.Assign(tmp);
++ eOp = SC_EQUAL;
++ theParam.bRegExp = TRUE;
++ }
++ else if (eOp == SC_ENDS_WITH ) {
++ aStrVal.Append (String('$'));
++ eOp = SC_EQUAL;
++ theParam.bRegExp = TRUE;
++ }
+ *rEntry.pStr = aStrVal;
+ rEntry.nVal = 0;
+ rEntry.bQueryByString = TRUE;
+@@ -642,7 +668,7 @@
+ theParam.bByRow = TRUE;
+ theParam.bDuplicate = !aBtnUnique.IsChecked();
+ theParam.bCaseSens = aBtnCase.IsChecked();
+- theParam.bRegExp = aBtnRegExp.IsChecked();
++
+ theParam.bDestPers = aBtnDestPers.IsChecked();
+
+ // nur die drei eingestellten - alles andere zuruecksetzen
+--- /home/sragavan/cvs/bk/ooo-build/build/OOO_1_1_2/sc/source/ui/inc/filtdlg.hxx 2001-09-24 22:59:58.000000000 +0530
++++ sc/source/ui/inc/filtdlg.hxx 2004-10-08 12:23:49.000000000 +0530
+@@ -101,6 +101,7 @@
+ CheckBox aBtnCase; \
+ CheckBox aBtnRegExp; \
+ CheckBox aBtnHeader; \
++ CheckBox aBtnWholeWord; \
+ CheckBox aBtnUnique; \
+ CheckBox aBtnCopyResult; \
+ ListBox aLbCopyArea; \
+@@ -122,6 +123,7 @@
+ aFlOptions ( this, ScResId( FL_OPTIONS ) ), \
+ aBtnCase ( this, ScResId( BTN_CASE ) ), \
+ aBtnRegExp ( this, ScResId( BTN_REGEXP ) ), \
++ aBtnWholeWord ( this, ScResId( BTN_MATCH) ), \
+ aBtnHeader ( this, ScResId( BTN_HEADER ) ), \
+ aBtnUnique ( this, ScResId( BTN_UNIQUE ) ), \
+ aBtnCopyResult ( this, ScResId( BTN_COPY_RESULT ) ), \
+--- /home/sragavan/cvs/bk/ooo-build/build/OOO_1_1_2/sc/source/ui/inc/filter.hrc 2001-05-21 14:52:56.000000000 +0530
++++ sc/source/ui/inc/filter.hrc 2004-10-08 12:27:21.000000000 +0530
+@@ -81,7 +81,7 @@
+ #define FT_DBAREA_LABEL 10
+ #define FT_DBAREA 11
+ #define BTN_DEST_PERS 12
+-
++#define BTN_MATCH 13
+ // Filter:
+ #define FT_OP 20
+ #define FT_FIELD 21
+--- /home/sragavan/cvs/bk/ooo-build/build/OOO_1_1_2/sc/source/ui/src/filter.src 2004-04-27 22:31:47.000000000 +0530
++++ sc/source/ui/src/filter.src 2004-10-08 14:55:38.000000000 +0530
+@@ -66,7 +66,7 @@
+ HelpId = SID_FILTER ;
+ Hide = TRUE ;
+ SVLook = TRUE ;
+- Size = MAP_APPFONT ( 298 , 83 ) ;
++ Size = MAP_APPFONT ( 298 , 98 ) ;
+ Text = "Standardfilter" ;
+ Text [ ENGLISH ] = "Standard Filter" ;
+ Text [ norwegian ] = "Standardfilter" ;
+@@ -708,12 +708,14 @@
+ };
+ stringlist [ english_us ] =
+ {
+- < "=" ; Default ; > ;
++ < "Begins with" ; Default ; > ;
++ < "Ends with" ; Default ; > ;
++ < "Equals" ; Default ; > ;
+ < "<" ; Default ; > ;
+ < ">" ; Default ; > ;
+ < "<=" ; Default ; > ;
+ < ">=" ; Default ; > ;
+- < "<>" ; Default ; > ;
++ < "Not equals" ; Default ; > ;
+ < "Largest" ; Default ; > ;
+ < "Smallest" ; Default ; > ;
+ < "Largest %" ; Default ; > ;
+@@ -2278,6 +2280,14 @@
+ Text[ zulu ] = "Isisho esi~jwayelekile";
+ Text[ norwegian_nynorsk ] = "~Regulrt uttrykk";
+ };
++
++ CheckBox BTN_MATCH
++ {
++ Pos = MAP_APPFONT ( 12 , 126 ) ;
++ Size = MAP_APPFONT ( 239 , 10 ) ;
++ Text [ english_us ] = "Search criteria must apply to ~whole cells" ;
++ };
++
+ CheckBox BTN_HEADER
+ {
+ Hide = TRUE ;
+@@ -2458,7 +2468,7 @@
+ {
+ Border = TRUE ;
+ Hide = TRUE ;
+- Pos = MAP_APPFONT ( 21 , 126 ) ;
++ Pos = MAP_APPFONT ( 21 , 138 ) ;
+ Size = MAP_APPFONT ( 90 , 90 ) ;
+ TabStop = TRUE ;
+ DropDown = TRUE ;
+@@ -2467,7 +2477,7 @@
+ {
+ Border = TRUE ;
+ Hide = TRUE ;
+- Pos = MAP_APPFONT ( 115 , 126 ) ;
++ Pos = MAP_APPFONT ( 115 , 138 ) ;
+ Size = MAP_APPFONT ( 104 , 12 ) ;
+ TabStop = TRUE ;
+ };
+@@ -2475,7 +2485,7 @@
+ {
+ QuickHelpText = "Verkleinern" ;
+ QuickHelpText [ ENGLISH ] = "Shrink" ;
+- Pos = MAP_APPFONT ( 221 , 126 ) ;
++ Pos = MAP_APPFONT ( 221 , 138 ) ;
+ Size = MAP_APPFONT ( 12 , 12 ) ;
+ TabStop = FALSE ;
+ QuickHelpText [ english_us ] = "Shrink" ;
+@@ -2605,7 +2615,7 @@
+ FixedText FT_DBAREA_LABEL
+ {
+ Hide = TRUE ;
+- Pos = MAP_APPFONT ( 6 , 144 ) ;
++ Pos = MAP_APPFONT ( 6 , 156 ) ;
+ Size = MAP_APPFONT ( 58 , 8 ) ;
+ Text = "Datenbereich:" ;
+ Text [ ENGLISH ] = "Data area:" ;
+@@ -3204,10 +3214,10 @@
+ Text [ danish ] = "dummy" ;
+ Text [ french ] = "factice" ;
+ Text [ swedish ] = "dummy" ;
++ Left = TRUE ;
+ Text [ dutch ] = "dummy" ;
+ Text [ spanish ] = "Texto ejemplo" ;
+ Text [ english_us ] = "dummy" ;
+- Left = TRUE ;
+ Text[ chinese_simplified ] = "样本";
+ Text[ russian ] = "";
+ Text[ polish ] = "Zalepka";
+--- /home/sragavan/cvs/bk/ooo-build/build/OOO_1_1_2/sc/source/ui/dbgui/foptmgr.cxx 2001-10-23 14:35:11.000000000 +0530
++++ sc/source/ui/dbgui/foptmgr.cxx 2004-10-08 16:04:15.000000000 +0530
+@@ -76,6 +76,7 @@
+ #include "dbcolect.hxx"
+ #include "viewdata.hxx"
+ #include "document.hxx"
++#include "docoptio.hxx"
+
+ #define _FOPTMGR_CXX
+ #include "foptmgr.hxx"
+@@ -111,6 +111,7 @@
+ rBtnMore ( refBtnMore ),
+ rBtnCase ( refBtnCase ),
+ rBtnRegExp ( refBtnRegExp ),
++ rBtnWholeWord ( refBtnRegExp ),
+ rBtnHeader ( refBtnHeader ),
+ rBtnUnique ( refBtnUnique ),
+ rBtnCopyResult ( refBtnCopyResult ),
+@@ -123,9 +124,53 @@
+ rStrNoName ( refStrNoName ),
+ rStrUndefined ( refStrUndefined )
+ {
+- Init();
++ Init(FALSE);
+ }
+
++ScFilterOptionsMgr::ScFilterOptionsMgr(
++ Dialog* ptrDlg,
++ ScViewData* ptrViewData,
++ const ScQueryParam& refQueryData,
++ MoreButton& refBtnMore,
++ CheckBox& refBtnCase,
++ CheckBox& refBtnRegExp,
++ CheckBox& refBtnWholeWord,
++ CheckBox& refBtnHeader,
++ CheckBox& refBtnUnique,
++ CheckBox& refBtnCopyResult,
++ CheckBox& refBtnDestPers,
++ ListBox& refLbCopyArea,
++ Edit& refEdCopyArea,
++ ScRefButton& refRbCopyArea,
++ FixedText& refFtDbAreaLabel,
++ FixedInfo& refFtDbArea,
++ FixedLine& refFlOptions,
++ const String& refStrNoName,
++ const String& refStrUndefined )
++
++ : pDlg ( ptrDlg ),
++ pViewData ( ptrViewData ),
++ pDoc ( ptrViewData ? ptrViewData->GetDocument() : NULL ),
++ rQueryData ( refQueryData ),
++ rBtnMore ( refBtnMore ),
++ rBtnCase ( refBtnCase ),
++ rBtnRegExp ( refBtnRegExp ),
++ rBtnWholeWord ( refBtnWholeWord),
++ rBtnHeader ( refBtnHeader ),
++ rBtnUnique ( refBtnUnique ),
++ rBtnCopyResult ( refBtnCopyResult ),
++ rBtnDestPers ( refBtnDestPers ),
++ rLbCopyPos ( refLbCopyArea ),
++ rEdCopyPos ( refEdCopyArea ),
++ rRbCopyPos ( refRbCopyArea ),
++ rFtDbAreaLabel ( refFtDbAreaLabel ),
++ rFtDbArea ( refFtDbArea ),
++ rFlOptions ( refFlOptions ),
++ rStrNoName ( refStrNoName ),
++ rStrUndefined ( refStrUndefined )
++{
++ Init(TRUE);
++}
+
+ //----------------------------------------------------------------------------
+
+@@ -141,7 +186,7 @@
+
+ //----------------------------------------------------------------------------
+
+-void ScFilterOptionsMgr::Init()
++void ScFilterOptionsMgr::Init(BOOL param)
+ {
+ DBG_ASSERT( pViewData && pDoc, "Init failed :-/" );
+
+@@ -151,6 +196,8 @@
+
+ rBtnMore.AddWindow( &rBtnCase );
+ rBtnMore.AddWindow( &rBtnRegExp );
++ if (param)
++ rBtnMore.AddWindow(&rBtnWholeWord);
+ rBtnMore.AddWindow( &rBtnHeader );
+ rBtnMore.AddWindow( &rBtnUnique );
+ rBtnMore.AddWindow( &rBtnCopyResult );
+@@ -160,13 +207,18 @@
+ rBtnMore.AddWindow( &rRbCopyPos );
+ rBtnMore.AddWindow( &rFtDbAreaLabel );
+ rBtnMore.AddWindow( &rFtDbArea );
+- rBtnMore.AddWindow( &rFlOptions );
++ rBtnMore.AddWindow( &rFlOptions );
++
+
+ rBtnCase .Check( rQueryData.bCaseSens );
+ rBtnHeader .Check( rQueryData.bHasHeader );
+ rBtnRegExp .Check( rQueryData.bRegExp );
+ rBtnUnique .Check( !rQueryData.bDuplicate );
+-
++ if (param) {
++ BOOL bMatchWholeCell = pDoc->GetDocOptions().IsMatchWholeCell();
++ rBtnWholeWord.Check(bMatchWholeCell);
++ }
++
+ if ( pViewData && pDoc )
+ {
+ String theAreaStr;
+@@ -266,6 +318,7 @@
+ }
+ else
+ rEdCopyPos.SetText( EMPTY_STRING );
++ rFtDbArea.SetPosPixel(Point(158,331));
+ }
+
+
+--- /home/sragavan/cvs/bk/ooo-build/build/OOO_1_1_2/sc/source/ui/inc/foptmgr.hxx 2001-05-21 14:52:56.000000000 +0530
++++ sc/source/ui/inc/foptmgr.hxx 2004-10-08 16:02:56.000000000 +0530
+@@ -108,6 +108,26 @@
+ FixedLine& refFlOptions,
+ const String& refStrNoName,
+ const String& refStrUndefined );
++ ScFilterOptionsMgr( Dialog* ptrDlg,
++ ScViewData* ptrViewData,
++ const ScQueryParam& refQueryData,
++ MoreButton& refBtnMore,
++ CheckBox& refBtnCase,
++ CheckBox& refBtnRegExp,
++ CheckBox& refBtnWholeWord,
++ CheckBox& refBtnHeader,
++ CheckBox& refBtnUnique,
++ CheckBox& refBtnCopyResult,
++ CheckBox& refBtnDestPers,
++ ListBox& refLbCopyArea,
++ Edit& refEdCopyArea,
++ ScRefButton& refRbCopyArea,
++ FixedText& refFtDbAreaLabel,
++ FixedInfo& refFtDbArea,
++ FixedLine& refFlOptions,
++ const String& refStrNoName,
++ const String& refStrUndefined );
++
+ ~ScFilterOptionsMgr();
+
+ BOOL VerifyPosStr ( const String& rPosStr ) const;
+@@ -119,6 +139,7 @@
+
+ MoreButton& rBtnMore;
+ CheckBox& rBtnCase;
++ CheckBox& rBtnWholeWord;
+ CheckBox& rBtnRegExp;
+ CheckBox& rBtnHeader;
+ CheckBox& rBtnUnique;
+@@ -138,7 +159,7 @@
+
+ #ifdef _FOPTMGR_CXX
+ private:
+- void Init();
++ void Init(BOOL param);
+
+ // Handler:
+ DECL_LINK( EdPosModifyHdl, Edit* );
diff --git a/patches/OOO_1_1/sfx2-no-summary-crash-fix.diff b/patches/OOO_1_1/sfx2-no-summary-crash-fix.diff
new file mode 100644
index 000000000..d55ee3bb5
--- /dev/null
+++ b/patches/OOO_1_1/sfx2-no-summary-crash-fix.diff
@@ -0,0 +1,16 @@
+Index: sfx2/source/doc/docinf.cxx
+===================================================================
+RCS file: /cvs/framework/sfx2/source/doc/docinf.cxx,v
+retrieving revision 1.24
+diff -u -p -r1.24 docinf.cxx
+--- sfx2/source/doc/docinf.cxx 26 May 2003 08:29:06 -0000 1.24
++++ sfx2/source/doc/docinf.cxx 1 Nov 2004 11:23:17 -0000
+@@ -924,7 +924,7 @@ ULONG SfxDocumentInfo::LoadPropertySet(
+ {
+ SvStorageStreamRef aStrPropSet = pStorage->OpenStream(
+ String::CreateFromAscii( pPropSlot ), STREAM_STD_READ );
+- if ( !aStrPropSet.Is() )
++ if ( !aStrPropSet.Is() || aStrPropSet->GetError() != SVSTREAM_OK)
+ return ERRCODE_IO_ACCESSDENIED;
+ aStrPropSet->SetBufferSize( STREAM_BUFFER_SIZE );
+ SfxPS_Impl* pPS = new SfxPS_Impl;
diff --git a/patches/OOO_1_1/svx-default-font-tracks-LANGUAGE_SYSTEM.diff b/patches/OOO_1_1/svx-default-font-tracks-LANGUAGE_SYSTEM.diff
new file mode 100644
index 000000000..c226c9710
--- /dev/null
+++ b/patches/OOO_1_1/svx-default-font-tracks-LANGUAGE_SYSTEM.diff
@@ -0,0 +1,75 @@
+Index: svx/source/items/textitem.cxx
+===================================================================
+RCS file: /cvs/graphics/svx/source/items/textitem.cxx,v
+retrieving revision 1.52
+diff -u -p -r1.52 textitem.cxx
+--- svx/source/items/textitem.cxx 17 Apr 2003 09:57:58 -0000 1.52
++++ svx/source/items/textitem.cxx 9 Dec 2004 11:43:56 -0000
+@@ -3704,24 +3704,21 @@ void GetDefaultFonts( SvxFontItem& rLati
+ {
+ const USHORT nItemCnt = 3;
+
+- static struct
++ USHORT aOutTypeArr[ nItemCnt ] =
+ {
+- USHORT nFontType;
+- USHORT nLanguage;
+- }
+- aOutTypeArr[ nItemCnt ] =
+- {
+- { DEFAULTFONT_LATIN_TEXT, LANGUAGE_ENGLISH_US },
+- { DEFAULTFONT_CJK_TEXT, LANGUAGE_ENGLISH_US },
+- { DEFAULTFONT_CTL_TEXT, LANGUAGE_ARABIC_SAUDI_ARABIA }
++ DEFAULTFONT_LATIN_TEXT,
++ DEFAULTFONT_CJK_TEXT,
++ DEFAULTFONT_CTL_TEXT
+ };
+
++ LanguageType eLanguage = Application::GetSettings().GetLanguage();
++
+ SvxFontItem* aItemArr[ nItemCnt ] = { &rLatin, &rAsian, &rComplex };
+
+ for ( USHORT n = 0; n < nItemCnt; ++n )
+ {
+- Font aFont( OutputDevice::GetDefaultFont( aOutTypeArr[ n ].nFontType,
+- aOutTypeArr[ n ].nLanguage,
++ Font aFont( OutputDevice::GetDefaultFont( aOutTypeArr[ n ],
++ eLanguage,
+ DEFAULTFONT_FLAGS_ONLYONE, 0 ) );
+ SvxFontItem* pItem = aItemArr[ n ];
+ pItem->GetFamily() = aFont.GetFamily();
+Index: svx/source/svdraw/svdmodel.cxx
+===================================================================
+RCS file: /cvs/graphics/svx/source/svdraw/svdmodel.cxx,v
+retrieving revision 1.48
+diff -u -p -r1.48 svdmodel.cxx
+--- svx/source/svdraw/svdmodel.cxx 24 Apr 2003 16:42:29 -0000 1.48
++++ svx/source/svdraw/svdmodel.cxx 9 Dec 2004 11:44:19 -0000
+@@ -935,19 +935,20 @@ void SdrModel::SetTextDefaults() const
+ void ImpGetDefaultFontsLanguage( SvxFontItem& rLatin, SvxFontItem& rAsian, SvxFontItem& rComplex)
+ {
+ const USHORT nItemCnt = 3;
+- static struct {
+- USHORT nFntType, nLanguage;
+- } aOutTypeArr[ nItemCnt ] = {
+- { DEFAULTFONT_LATIN_TEXT, LANGUAGE_ENGLISH_US },
+- { DEFAULTFONT_CJK_TEXT, LANGUAGE_ENGLISH_US },
+- { DEFAULTFONT_CTL_TEXT, LANGUAGE_ARABIC_SAUDI_ARABIA }
++ USHORT aOutTypeArr[ nItemCnt ] =
++ {
++ DEFAULTFONT_LATIN_TEXT,
++ DEFAULTFONT_CJK_TEXT,
++ DEFAULTFONT_CTL_TEXT
+ };
++
++ LanguageType eLanguage = Application::GetSettings().GetLanguage();
+ SvxFontItem* aItemArr[ nItemCnt ] = { &rLatin, &rAsian, &rComplex };
+
+ for( USHORT n = 0; n < nItemCnt; ++n )
+ {
+ Font aFnt( OutputDevice::GetDefaultFont(
+- aOutTypeArr[ n ].nFntType, aOutTypeArr[ n ].nLanguage,
++ aOutTypeArr[ n ], eLanguage,
+ DEFAULTFONT_FLAGS_ONLYONE, 0 ));
+ SvxFontItem* pI = aItemArr[ n ];
+ pI->GetFamily() = aFnt.GetFamily();
diff --git a/patches/OOO_1_1/sw-online-layout-crash-fix.diff b/patches/OOO_1_1/sw-online-layout-crash-fix.diff
new file mode 100644
index 000000000..5e80568bd
--- /dev/null
+++ b/patches/OOO_1_1/sw-online-layout-crash-fix.diff
@@ -0,0 +1,19 @@
+Index: source/core/layout/fly.cxx
+===================================================================
+RCS file: /cvs/sw/sw/source/core/layout/fly.cxx,v
+retrieving revision 1.46.52.3
+diff -u -p -r1.46.52.3 fly.cxx
+--- sw/source/core/layout/fly.cxx 28 Apr 2004 10:29:47 -0000 1.46.52.3
++++ sw/source/core/layout/fly.cxx 5 Nov 2004 11:15:08 -0000
+@@ -1695,8 +1695,9 @@ void SwFlyFrm::MakeFlyPos()
+ const long nBottom = GetAnchor()->Frm().Top() + aRelPos.Y() + Frm().Height();
+ if ( nAnchorBottom < nBottom )
+ {
+- ((SwPageFrm*)GetAnchor())->FindBodyCont()->
+- Grow( nBottom - nAnchorBottom PHEIGHT );
++ if (SwPageFrm *pOne = ((SwPageFrm*)GetAnchor()))
++ if (SwLayoutFrm *pTwo = pOne->FindBodyCont())
++ pTwo->Grow( nBottom - nAnchorBottom PHEIGHT );
+ }
+ }
+
diff --git a/patches/OOO_1_1/sysui-translations.diff b/patches/OOO_1_1/sysui-translations.diff
index 177d20444..44a5720c4 100644
--- a/patches/OOO_1_1/sysui-translations.diff
+++ b/patches/OOO_1_1/sysui-translations.diff
@@ -1,11 +1,13 @@
+-*- coding: utf-8 -*-
+
Index: documents.ulf
===================================================================
RCS file: /cvs/gsl/sysui/desktop/share/documents.ulf,v
retrieving revision 1.7.8.5
Index: sysui/desktop/share/documents.ulf
===================================================================
---- sysui/desktop/share/documents.ulf.orig 2004-04-27 20:01:05.000000000 +0200
-+++ sysui/desktop/share/documents.ulf 2004-07-30 22:18:28.430804688 +0200
+--- sysui/desktop/share/documents.ulf.orig 2004-09-13 22:50:54.000000000 +0200
++++ sysui/desktop/share/documents.ulf 2004-09-14 15:46:59.389405928 +0200
@@ -1,12 +1,11 @@
[writer]
en = "%PRODUCTNAME Text Document"
@@ -20,28 +22,24 @@ Index: sysui/desktop/share/documents.ulf
hu = "%PRODUCTNAME-szövegesdokumentum"
it = "%PRODUCTNAME Documento di testo"
cs = "Textový dokument %PRODUCTNAME"
-@@ -21,45 +20,33 @@ zh-CN = "%PRODUCTNAME 文本文档"
+@@ -21,10 +20,8 @@ zh-CN = "%PRODUCTNAME 文本文档"
zh-TW = "%PRODUCTNAME 文字文件"
tr = "PRODUCTNAME Metin belgesi"
ar = "%PRODUCTNAME مستند نص"
-he = "%PRODUCTNAME Textdokument"
-ca = "%PRODUCTNAME Document de text"
--th = "%PRODUCTNAME Textdokument"
--hi-IN = "%PRODUCTNAME Textdokument"
+ca = "Document de text d'%PRODUCTNAME"
+ th = "%PRODUCTNAME เอกสารข้อความ"
+-hi-IN = "%PRODUCTNAME Textdokument"
et = "%PRODUCTNAME-i tekstidokument"
sl = "Dokument z besedilom programa %PRODUCTNAME"
ru = "%PRODUCTNAME Текстовый документ"
- cy = "Dogfen Testun %PRODUCTNAME"
- ns = "%PRODUCTNAME Tokumente ya Sengwalwa"
- af = "%PRODUCTNAME-teksdokument"
--zu = "Ushicilelo Lombhalo lwe-%PRODUCTNAME 5.0"
-+zu = "Ushicilelo Lombhalo lwe-%PRODUCTNAME"
+@@ -42,31 +39,25 @@ gl = "%PRODUCTNAME Text Document"
[writer-template]
en = "%PRODUCTNAME Text Document Template"
de = "%PRODUCTNAME Textdokumentvorlage"
-pt = "%PRODUCTNAME Textdokumentvorlage"
--ru = "%PRODUCTNAME Textdokumentvorlage"
+ ru = "Шаблон текстового документа %PRODUCTNAME"
-el = "%PRODUCTNAME Textdokumentvorlage"
nl = "%PRODUCTNAME Tekstdocumentsjabloon"
fr = "Modèle de texte %PRODUCTNAME"
@@ -60,22 +58,22 @@ Index: sysui/desktop/share/documents.ulf
ko = "%PRODUCTNAME 텍스트 문서 서식 파일"
zh-CN = "%PRODUCTNAME 文本文档样式"
zh-TW = "%PRODUCTNAME 文字文件樣式"
--tr = "%PRODUCTNAME Textdokumentvorlage"
+ tr = "%PRODUCTNAME Metin Belgesi Şablonu"
-ar = "%PRODUCTNAME Textdokumentvorlage"
-he = "%PRODUCTNAME Textdokumentvorlage"
-ca = "%PRODUCTNAME Textdokumentvorlage"
--th = "%PRODUCTNAME Textdokumentvorlage"
--hi-IN = "%PRODUCTNAME Textdokumentvorlage"
+ca = "%PRODUCTNAME Plantilla de document de text d'%PRODUCTNAME"
+ th = "%PRODUCTNAME แม่แบบเอกสารข้อความ"
+-hi-IN = "%PRODUCTNAME Textdokumentvorlage"
et = "%PRODUCTNAME-i tekstidokumendi mall"
sl = "Predloga dokumenta z besedilom programa %PRODUCTNAME"
ns = "%PRODUCTNAME Template ya Tokumente ya Sengwalwa"
-@@ -69,13 +56,12 @@ zu = "Uqwembe loshicilelo lombhalo lwe-%
+@@ -83,13 +74,12 @@ gl = "%PRODUCTNAME Text Document Templat
[writer-global]
en = "%PRODUCTNAME Master Document"
de = "%PRODUCTNAME Globaldokument"
-pt = "%PRODUCTNAME Globaldokument"
- ru = "%PRODUCTNAME Составной документ"
+ ru = "Составной документ %PRODUCTNAME"
el = "%PRODUCTNAME Kύριο έγγραφο"
nl = "%PRODUCTNAME Masterdocument"
fr = "%PRODUCTNAME Document maître"
@@ -85,27 +83,30 @@ Index: sysui/desktop/share/documents.ulf
hu = "%PRODUCTNAME-fődokumentum"
it = "%PRODUCTNAME Documento master"
cs = "Hlavní dokument %PRODUCTNAME"
-@@ -90,26 +76,22 @@ zh-CN = "%PRODUCTNAME 主控文档"
+@@ -104,15 +94,13 @@ zh-CN = "%PRODUCTNAME 主控文档"
zh-TW = "%PRODUCTNAME 主控文件"
- tr = "%PRODUCTNAME Ana belge"
+ tr = "%PRODUCTNAME Ana Belge"
ar = "%PRODUCTNAME مستند شام?"
-he = "%PRODUCTNAME Globaldokument"
-ca = "%PRODUCTNAME Globaldokument"
--th = "%PRODUCTNAME Globaldokument"
--hi-IN = "%PRODUCTNAME Globaldokument"
+ca = "%PRODUCTNAME "Document mestre d'%PRODUCTNAME"
+ th = "%PRODUCTNAME ต้นแบบเอกสาร"
+-hi-IN = "%PRODUCTNAME Globaldokument"
et = "%PRODUCTNAME-i põhidokument"
sl = "Glavni dokument programa %PRODUCTNAME"
ns = "Tokumente ya Master ya %PRODUCTNAME"
af = "%PRODUCTNAME-meesterdokument"
-zu = "Ushicilelo Olukhulu lwe-%PRODUCTNAME 5.0"
+zu = "Ushicilelo Olukhulu lwe-%PRODUCTNAME"
-
+ nb = "%PRODUCTNAME Master Document"
+ cy = "%PRODUCTNAME Master Document"
+ tn = "%PRODUCTNAME Master Document"
+@@ -125,13 +113,12 @@ gl = "%PRODUCTNAME Master Document"
[writer-math]
en = "%PRODUCTNAME Formula"
de = "%PRODUCTNAME Formel"
-pt = "%PRODUCTNAME Formel"
- ru = "%PRODUCTNAME Формула"
+ ru = "Формула %PRODUCTNAME"
el = "%PRODUCTNAME Τύπος"
nl = "%PRODUCTNAME Formule"
fr = "%PRODUCTNAME Formule"
@@ -115,27 +116,30 @@ Index: sysui/desktop/share/documents.ulf
hu = "%PRODUCTNAME-képlet"
it = "%PRODUCTNAME Formula"
cs = "Vzorec %PRODUCTNAME"
-@@ -124,26 +106,22 @@ zh-CN = "%PRODUCTNAME 公式"
+@@ -146,15 +133,13 @@ zh-CN = "%PRODUCTNAME 公式"
zh-TW = "%PRODUCTNAME 公式"
tr = "%PRODUCTNAME Formül"
ar = "%PRODUCTNAME صيغة"
-he = "%PRODUCTNAME Formel"
-ca = "%PRODUCTNAME Formel"
--th = "%PRODUCTNAME Formel"
--hi-IN = "%PRODUCTNAME Formel"
+ca = "Fòrmula d'%PRODUCTNAME"
+ th = "%PRODUCTNAME สมการ"
+-hi-IN = "%PRODUCTNAME Formel"
et = "%PRODUCTNAME-i valem"
sl = "Formula programa %PRODUCTNAME"
ns = "Fomula ya %PRODUCTNAME"
af = "%PRODUCTNAME-formule"
-zu = "Indlela yokwenza ye-%PRODUCTNAME 5.0"
+zu = "Indlela yokwenza ye-%PRODUCTNAME"
-
+ nb = "%PRODUCTNAME Formula"
+ cy = "%PRODUCTNAME Formula"
+ tn = "%PRODUCTNAME Formula"
+@@ -167,13 +152,12 @@ gl = "%PRODUCTNAME Formula"
[impress]
en = "%PRODUCTNAME Presentation"
de = "%PRODUCTNAME Präsentation"
-pt = "%PRODUCTNAME Präsentation"
- ru = "%PRODUCTNAME Презентация"
+ ru = "Презентация %PRODUCTNAME"
el = "%PRODUCTNAME Παρουσίαση"
nl = "%PRODUCTNAME Presentatie"
fr = "%PRODUCTNAME Présentation"
@@ -146,29 +150,31 @@ Index: sysui/desktop/share/documents.ulf
hu = "%PRODUCTNAME-bemutató"
it = "%PRODUCTNAME Presentazione"
cs = "Prezentace %PRODUCTNAME"
-@@ -156,46 +134,32 @@ ja = "%PRODUCTNAME プレゼンテーシ
- ko = "%PRODUCTNAME 프레젠테이션"
+@@ -187,16 +171,13 @@ ko = "%PRODUCTNAME 프레젠테이션"
zh-CN = "%PRODUCTNAME 演示文稿"
zh-TW = "%PRODUCTNAME 簡報"
--tr = "%PRODUCTNAME Pr?sentation"
+ tr = "%PRODUCTNAME Sunu"
-ar = "%PRODUCTNAME Pr?sentation"
-he = "%PRODUCTNAME Präsentation"
-ca = "%PRODUCTNAME Pr„sentation"
--th = "%PRODUCTNAME Präsentation"
--hi-IN = "%PRODUCTNAME Präsentation"
+ca = "Presentació d'%PRODUCTNAME"
+ th = "%PRODUCTNAME การนำเสนอ"
+-hi-IN = "%PRODUCTNAME Präsentation"
et = "%PRODUCTNAME-i esitlus"
sl = "Predstavitev programa %PRODUCTNAME"
ns = "Tlhagišo ya %PRODUCTNAME"
af = "%PRODUCTNAME-voorlegging"
-zu = "Ukunikezwa kolwazi kwe-%PRODUCTNAME 5.0"
+zu = "Ukunikezwa kolwazi kwe-%PRODUCTNAME"
-
+ nb = "%PRODUCTNAME Presentation"
+ cy = "%PRODUCTNAME Presentation"
+ tn = "%PRODUCTNAME Presentation"
+@@ -209,31 +190,25 @@ gl = "%PRODUCTNAME Presentation"
[impress-template]
en = "%PRODUCTNAME Presentation Template"
de = "%PRODUCTNAME Präsentationsvorlage"
-pt = "%PRODUCTNAME Präsentationsvorlage"
--ru = "%PRODUCTNAME Pr?sentationsvorlage"
+ ru = "Шаблон презентации %PRODUCTNAME"
-el = "%PRODUCTNAME Pr?sentationsvorlage"
nl = "%PRODUCTNAME Presentatiesjabloon"
fr = "Modèle de présentation %PRODUCTNAME"
@@ -187,22 +193,22 @@ Index: sysui/desktop/share/documents.ulf
ko = "%PRODUCTNAME 프레젠테이션 서식 파일"
zh-CN = "%PRODUCTNAME 演示文稿样式"
zh-TW = "%PRODUCTNAME 簡報樣式"
--tr = "%PRODUCTNAME Präsentationsvorlage"
+ tr = "%PRODUCTNAME Sunu Şablonu"
-ar = "%PRODUCTNAME Pr?sentationsvorlage"
-he = "%PRODUCTNAME Präsentationsvorlage"
-ca = "%PRODUCTNAME Präsentationsvorlage"
--th = "%PRODUCTNAME Präsentationsvorlage"
--hi-IN = "%PRODUCTNAME Präsentationsvorlage"
+ca = ""Plantilla de presentació d'%PRODUCTNAME"
+ th = "%PRODUCTNAME แม่แบบการนำเสนอ"
+-hi-IN = "%PRODUCTNAME Präsentationsvorlage"
et = "%PRODUCTNAME-i esitluse mall"
sl = "Predloga predstavitve programa %PRODUCTNAME"
ns = "%PRODUCTNAME Template ya Tlhagišo"
-@@ -205,13 +169,12 @@ zu = "Uqwembe Lokunikezelwa kwe-%PRODUCT
+@@ -251,13 +226,12 @@ gl = "%PRODUCTNAME Presentation Template
[draw]
en = "%PRODUCTNAME Drawing"
de = "%PRODUCTNAME Zeichnung"
-pt = "%PRODUCTNAME Zeichnung"
- ru = "%PRODUCTNAME Рисунок"
+ ru = "Рисунок %PRODUCTNAME"
el = "%PRODUCTNAME Σχέδιο"
nl = "%PRODUCTNAME Tekening"
fr = "%PRODUCTNAME Dessin"
@@ -212,27 +218,30 @@ Index: sysui/desktop/share/documents.ulf
hu = "%PRODUCTNAME-rajz"
it = "%PRODUCTNAME Disegno"
cs = "Kresba %PRODUCTNAME"
-@@ -226,44 +189,32 @@ zh-CN = "%PRODUCTNAME 绘图"
+@@ -272,15 +246,13 @@ zh-CN = "%PRODUCTNAME 绘图"
zh-TW = "%PRODUCTNAME 繪圖"
tr = "%PRODUCTNAME Çizim"
ar = "%PRODUCTNAME رسم"
-he = "%PRODUCTNAME Zeichnung"
-ca = "%PRODUCTNAME Dibuix"
--th = "%PRODUCTNAME Zeichnung"
--hi-IN = "%PRODUCTNAME Zeichnung"
+ca = "Dibuix d'%PRODUCTNAME"
+ th = "%PRODUCTNAME รูปวาด"
+-hi-IN = "%PRODUCTNAME Zeichnung"
et = "%PRODUCTNAME-i joonistus"
sl = "Risba programa %PRODUCTNAME"
ns = "Go thala ga %PRODUCTNAME"
af = "%PRODUCTNAME-voorlegging"
-zu = "Ukudweba nge-%PRODUCTNAME 5.0"
+zu = "Ukudweba nge-%PRODUCTNAME"
-
+ nb = "%PRODUCTNAME Drawing"
+ cy = "%PRODUCTNAME Drawing"
+ tn = "%PRODUCTNAME Drawing"
+@@ -293,31 +265,25 @@ gl = "%PRODUCTNAME Drawing"
[draw-template]
en = "%PRODUCTNAME Drawing Template"
de = "%PRODUCTNAME Zeichnungsvorlage"
-pt = "%PRODUCTNAME Zeichnungsvorlage"
--ru = "%PRODUCTNAME Zeichnungsvorlage"
+ ru = "Шаблон рисунка %PRODUCTNAME"
-el = "%PRODUCTNAME Zeichnungsvorlage"
nl = "%PRODUCTNAME Tekeningsjabloon"
fr = "Modèle de dessin %PRODUCTNAME"
@@ -251,22 +260,22 @@ Index: sysui/desktop/share/documents.ulf
ko = "%PRODUCTNAME 그리기 서식 파일"
zh-CN = "%PRODUCTNAME 绘图样式"
zh-TW = "%PRODUCTNAME 繪圖樣式"
--tr = "%PRODUCTNAME Zeichnungsvorlage"
+ tr = "%PRODUCTNAME Çizim Şablonu"
-ar = "%PRODUCTNAME Zeichnungsvorlage"
-he = "%PRODUCTNAME Zeichnungsvorlage"
-ca = "%PRODUCTNAME Zeichnungsvorlage"
--th = "%PRODUCTNAME Zeichnungsvorlage"
--hi-IN = "%PRODUCTNAME Zeichnungsvorlage"
+ca = "Plantilla de dibuix d'%PRODUCTNAME"
+ th = "%PRODUCTNAME แม่แบบรูปวาด"
+-hi-IN = "%PRODUCTNAME Zeichnungsvorlage"
et = "%PRODUCTNAME-i joonistuse mall"
sl = "Predloga risbe programa %PRODUCTNAME"
ns = "%PRODUCTNAME Template ya go Thala"
-@@ -273,13 +224,12 @@ zu = "Uqwembe Lokudweba lwe-%PRODUCTNAME
+@@ -335,13 +301,12 @@ gl = "%PRODUCTNAME Drawing Template"
[calc]
en = "%PRODUCTNAME Spreadsheet"
de = "%PRODUCTNAME Tabelle"
-pt = "%PRODUCTNAME Tabelle"
- ru = "%PRODUCTNAME Электронная таблица"
+ ru = "Электронная таблица %PRODUCTNAME"
el = "%PRODUCTNAME Πίνακας"
nl = "%PRODUCTNAME Tabel"
fr = "%PRODUCTNAME Classeur"
@@ -277,28 +286,31 @@ Index: sysui/desktop/share/documents.ulf
hu = "%PRODUCTNAME-munkafüzet"
it = "%PRODUCTNAME Tabella"
cs = "Sešit %PRODUCTNAME"
-@@ -293,45 +243,32 @@ ko = "%PRODUCTNAME 스프레드시트"
+@@ -355,16 +320,13 @@ ko = "%PRODUCTNAME 스프레드시트"
zh-CN = "%PRODUCTNAME 工作表"
zh-TW = "%PRODUCTNAME 工作表"
- tr = "%PRODUCTNAME Tablo"
+ tr = "%PRODUCTNAME Hesap Tablosu"
-ar = "%PRODUCTNAME Tabelle"
-he = "%PRODUCTNAME Tabelle"
-ca = "%PRODUCTNAME Tabelle"
--th = "%PRODUCTNAME Tabelle"
--hi-IN = "%PRODUCTNAME Tabelle"
+ca = "Fulla de c| lcul d'%PRODUCTNAME"
+ th = "%PRODUCTNAME ตารางคำนวณ"
+-hi-IN = "%PRODUCTNAME Tabelle"
et = "%PRODUCTNAME-i arvutustabel"
sl = "Preglednica programa %PRODUCTNAME"
ns = "Pampiri ya go anega ya %PRODUCTNAME"
af = "%PRODUCTNAME-sigblad"
-zu = "Ikhasi lokubala %PRODUCTNAME 6.0"
+zu = "Ikhasi lokubala %PRODUCTNAME"
-
+ nb = "%PRODUCTNAME Spreadsheet"
+ cy = "%PRODUCTNAME Spreadsheet"
+ tn = "%PRODUCTNAME Spreadsheet"
+@@ -377,31 +339,25 @@ gl = "%PRODUCTNAME Spreadsheet"
[calc-template]
en = "%PRODUCTNAME Spreadsheet Template"
de = "%PRODUCTNAME Tabellenvorlage"
-pt = "%PRODUCTNAME Tabellenvorlage"
--ru = "%PRODUCTNAME Tabellenvorlage"
+ ru = "Шаблон электронной таблицы %PRODUCTNAME"
-el = "%PRODUCTNAME Tabellenvorlage"
nl = "%PRODUCTNAME Werkbladsjabloon"
fr = "Modèle de classeur %PRODUCTNAME"
@@ -317,20 +329,20 @@ Index: sysui/desktop/share/documents.ulf
ko = "%PRODUCTNAME 스프레드시트 서식 파일"
zh-CN = "%PRODUCTNAME 工作表样式"
zh-TW = "%PRODUCTNAME 工作表樣式"
--tr = "%PRODUCTNAME Tabellenvorlage"
+ tr = "%PRODUCTNAME Hesap Tablosu Şablonu"
-ar = "%PRODUCTNAME Tabellenvorlage"
-he = "%PRODUCTNAME Tabellenvorlage"
-ca = "%PRODUCTNAME Tabellenvorlage"
--th = "%PRODUCTNAME Tabellenvorlage"
--hi-IN = "%PRODUCTNAME Tabellenvorlage"
+ca = "Plantilla de fulla de c| lcul d'%PRODUCTNAME"
+ th = "%PRODUCTNAME แม่แบบตารางคำนวณ"
+-hi-IN = "%PRODUCTNAME Tabellenvorlage"
et = "%PRODUCTNAME-i arvutustabeli mall"
sl = "Predloga preglednice programa %PRODUCTNAME"
ns = "%PRODUCTNAME Template ya Pampiri ya go Anega"
Index: sysui/desktop/share/launcher_comment.ulf
===================================================================
---- sysui/desktop/share/launcher_comment.ulf.orig 2004-07-30 21:43:44.479613424 +0200
-+++ sysui/desktop/share/launcher_comment.ulf 2004-07-30 22:29:34.378565240 +0200
+--- sysui/desktop/share/launcher_comment.ulf.orig 2004-09-13 22:50:54.000000000 +0200
++++ sysui/desktop/share/launcher_comment.ulf 2004-09-14 15:46:59.390405776 +0200
@@ -1,12 +1,11 @@
[writer]
en = "%PRODUCTNAME Text Document"
@@ -346,28 +358,24 @@ Index: sysui/desktop/share/launcher_comment.ulf
hu = "%PRODUCTNAME-szövegesdokumentum"
it = "%PRODUCTNAME Documento di testo"
cs = "Textový dokument %PRODUCTNAME"
-@@ -21,26 +20,22 @@ zh-CN = "%PRODUCTNAME 文本文档"
+@@ -21,10 +20,8 @@ zh-CN = "%PRODUCTNAME 文本文档"
zh-TW = "%PRODUCTNAME 文字文件"
tr = "PRODUCTNAME Metin belgesi"
ar = "%PRODUCTNAME مستند نص"
-he = "%PRODUCTNAME Textdokument"
-ca = "%PRODUCTNAME Document de text"
--th = "%PRODUCTNAME Textdokument"
--hi-IN = "%PRODUCTNAME Textdokument"
+ca = "Document de text d'%PRODUCTNAME"
+ th = "%PRODUCTNAME เอกสารข้อความ"
+-hi-IN = "%PRODUCTNAME Textdokument"
et = "%PRODUCTNAME-i tekstidokument"
sl = "Dokument z besedilom programa %PRODUCTNAME"
cy = "Dogfen Testun %PRODUCTNAME"
- ns = "%PRODUCTNAME Tokumente ya Sengwalwa"
- af = "%PRODUCTNAME-teksdokument"
--zu = "Ushicilelo Lombhalo lwe-%PRODUCTNAME 5.0"
-+zu = "Ushicilelo Lombhalo lwe-%PRODUCTNAME"
-
+@@ -42,12 +39,11 @@ gl = "%PRODUCTNAME Text Document"
[web]
en = "%PRODUCTNAME HTML Document"
de = "%PRODUCTNAME HTML Dokument"
-pt = "%PRODUCTNAME HTML Dokument"
- ru = "%PRODUCTNAME HTML-документ"
+ ru = "Документ HTML %PRODUCTNAME"
nl = "%PRODUCTNAME HTML-document"
fr = "%PRODUCTNAME Document HTML"
-es = "Documento HTML %PRODUCTNAME "
@@ -377,26 +385,25 @@ Index: sysui/desktop/share/launcher_comment.ulf
hu = "%PRODUCTNAME HTML-dokumentum"
it = "%PRODUCTNAME Documento HTML"
cs = "HTML dokument %PRODUCTNAME"
-@@ -53,12 +48,7 @@ ja = "%PRODUCTNAME HTML 形式ドキュ
- ko = "%PRODUCTNAME HTML 문서"
+@@ -61,11 +57,8 @@ ko = "%PRODUCTNAME HTML 문서"
zh-CN = "%PRODUCTNAME HTML 文档"
zh-TW = "%PRODUCTNAME HTML 文件"
--tr = "%PRODUCTNAME HTML Dokument"
+ tr = "%PRODUCTNAME HTML Belgesi"
-ar = "%PRODUCTNAME HTML Dokument"
-he = "%PRODUCTNAME HTML Dokument"
-ca = "%PRODUCTNAME HTML Dokument"
--th = "%PRODUCTNAME HTML Dokument"
--hi-IN = "%PRODUCTNAME HTML Dokument"
+ca = "Document HTML d'%PRODUCTNAME"
+ th = "%PRODUCTNAME เอกสาร HTML"
+-hi-IN = "%PRODUCTNAME HTML Dokument"
et = "%PRODUCTNAME-i HTML-dokument"
- sl = "HTML dokument programa %PRODUCTNAME"
+ sl = "Dokument HTML programa %PRODUCTNAME"
ns = "Tokumente ya HTML ya %PRODUCTNAME"
-@@ -68,12 +58,11 @@ zu = "Ushicilelo lwe-%PRODUCTNAME HTML"
+@@ -81,12 +74,11 @@ gl = "%PRODUCTNAME HTML Document"
[impress]
en = "%PRODUCTNAME Presentation"
de = "%PRODUCTNAME Präsentation"
-pt = "%PRODUCTNAME Präsentation"
- ru = "%PRODUCTNAME Презентация"
+ ru = "Презентация %PRODUCTNAME"
nl = "%PRODUCTNAME Presentatie"
fr = "%PRODUCTNAME Présentation"
-es = "Presentación %PRODUCTNAME "
@@ -406,21 +413,31 @@ Index: sysui/desktop/share/launcher_comment.ulf
hu = "%PRODUCTNAME-bemutató"
it = "%PRODUCTNAME Presentazione"
cs = "Prezentace %PRODUCTNAME"
-@@ -85,12 +74,7 @@ ja = "%PRODUCTNAME プレゼンテーシ
- ko = "%PRODUCTNAME 프레젠테이션"
+@@ -99,16 +91,13 @@ ko = "%PRODUCTNAME 프레젠테이션"
zh-CN = "%PRODUCTNAME 演示文稿"
zh-TW = "%PRODUCTNAME 簡報"
--tr = "%PRODUCTNAME Pr?sentation"
+ tr = "%PRODUCTNAME Sunu"
-ar = "%PRODUCTNAME Pr?sentation"
-he = "%PRODUCTNAME Präsentation"
-ca = "%PRODUCTNAME Pr„sentation"
--th = "%PRODUCTNAME Präsentation"
--hi-IN = "%PRODUCTNAME Präsentation"
+ca = "Presentació d'%PRODUCTNAME"
+ th = "%PRODUCTNAME การนำเสนอ"
+-hi-IN = "%PRODUCTNAME Präsentation"
et = "%PRODUCTNAME-i esitlus"
sl = "Predstavitev programa %PRODUCTNAME"
ns = "Tlhagišo ya %PRODUCTNAME"
-@@ -105,7 +89,7 @@ ru = "%PRODUCTNAME Рисунок"
+ af = "%PRODUCTNAME-voorlegging"
+-zu = "Ukunikezwa kolwazi kwe-%PRODUCTNAME 5.0"
++zu = "Ukunikezwa kolwazi kwe-%PRODUCTNAME"
+ da = "%PRODUCTNAME-præsentation"
+ nb = "%PRODUCTNAME Presentation"
+ nn = "%PRODUCTNAME Presentation"
+@@ -120,12 +109,11 @@ gl = "%PRODUCTNAME Presentation"
+ [draw]
+ en = "%PRODUCTNAME Drawing"
+ de = "%PRODUCTNAME Zeichnung"
+-pt = "%PRODUCTNAME Zeichnung"
+ ru = "Рисунок %PRODUCTNAME"
nl = "%PRODUCTNAME Tekening"
fr = "%PRODUCTNAME Dessin"
es = "Dibujo %PRODUCTNAME"
@@ -429,21 +446,30 @@ Index: sysui/desktop/share/launcher_comment.ulf
hu = "%PRODUCTNAME-rajz"
it = "%PRODUCTNAME Disegno"
cs = "Kresba %PRODUCTNAME"
-@@ -121,7 +105,7 @@ zh-TW = "%PRODUCTNAME 繪圖"
+@@ -140,15 +128,13 @@ zh-CN = "%PRODUCTNAME 绘图"
+ zh-TW = "%PRODUCTNAME 繪圖"
tr = "%PRODUCTNAME Çizim"
ar = "%PRODUCTNAME رسم"
- he = "%PRODUCTNAME Zeichnung"
+-he = "%PRODUCTNAME Zeichnung"
-ca = "%PRODUCTNAME Dibuix"
+ca = "Dibuix d'%PRODUCTNAME"
- th = "%PRODUCTNAME Zeichnung"
- hi-IN = "%PRODUCTNAME Zeichnung"
+ th = "%PRODUCTNAME รูปวาด"
+-hi-IN = "%PRODUCTNAME Zeichnung"
et = "%PRODUCTNAME-i joonistus"
-@@ -133,12 +117,11 @@ zu = "Ukudweba nge-%PRODUCTNAME 5.0"
+ sl = "Risba programa %PRODUCTNAME"
+ ns = "Go thala ga %PRODUCTNAME"
+ af = "%PRODUCTNAME-voorlegging"
+-zu = "Ukudweba nge-%PRODUCTNAME 5.0"
++zu = "Ukudweba nge-%PRODUCTNAME"
+ nb = "%PRODUCTNAME Drawing"
+ nn = "%PRODUCTNAME Drawing"
+ eu = "%PRODUCTNAME Zeichnung"
+@@ -159,12 +145,11 @@ gl = "%PRODUCTNAME Drawing"
[calc]
en = "%PRODUCTNAME Spreadsheet"
de = "%PRODUCTNAME Tabelle"
-pt = "%PRODUCTNAME Tabelle"
- ru = "%PRODUCTNAME Электронная таблица"
+ ru = "Электронная таблица %PRODUCTNAME"
nl = "%PRODUCTNAME Tabel"
fr = "%PRODUCTNAME Classeur"
es = "Hoja de cálculo %PRODUCTNAME"
@@ -452,25 +478,31 @@ Index: sysui/desktop/share/launcher_comment.ulf
hu = "PRODUCTNAME-munkafüzet"
it = "%PRODUCTNAME Tabella"
cs = "Sešit %PRODUCTNAME"
-@@ -152,11 +135,7 @@ ko = "%PRODUCTNAME 스프레드시트"
+@@ -178,16 +163,13 @@ ko = "%PRODUCTNAME 스프레드시트"
zh-CN = "%PRODUCTNAME 工作表"
zh-TW = "%PRODUCTNAME 工作表"
- tr = "%PRODUCTNAME Tablo"
+ tr = "%PRODUCTNAME Hesap Tablosu"
-ar = "%PRODUCTNAME Tabelle"
-he = "%PRODUCTNAME Tabelle"
-ca = "%PRODUCTNAME Tabelle"
--th = "%PRODUCTNAME Tabelle"
--hi-IN = "%PRODUCTNAME Tabelle"
+ca = "Fulla de c| lcul d'%PRODUCTNAME"
+ th = "%PRODUCTNAME ตารางคำนวณ"
+-hi-IN = "%PRODUCTNAME Tabelle"
et = "%PRODUCTNAME-i arvutustabel"
sl = "Preglednica programa %PRODUCTNAME"
ns = "Pampiri ya go anega ya %PRODUCTNAME"
-@@ -166,12 +145,11 @@ zu = "Ikhasi lokubala %PRODUCTNAME 6.0"
+ af = "%PRODUCTNAME-sigblad"
+-zu = "Ikhasi lokubala %PRODUCTNAME 6.0"
++zu = "Ikhasi lokubala %PRODUCTNAME"
+ nb = "%PRODUCTNAME Spreadsheet"
+ nn = "%PRODUCTNAME Spreadsheet"
+ eu = "%PRODUCTNAME Tabelle"
+@@ -198,12 +180,11 @@ gl = "%PRODUCTNAME Spreadsheet"
[math]
en = "%PRODUCTNAME Formula"
de = "%PRODUCTNAME Formel"
-pt = "%PRODUCTNAME Formel"
- ru = "%PRODUCTNAME Формула"
+ ru = "Формула %PRODUCTNAME"
nl = "%PRODUCTNAME Formule"
fr = "%PRODUCTNAME Formule"
es = "Fórmula %PRODUCTNAME "
@@ -479,28 +511,35 @@ Index: sysui/desktop/share/launcher_comment.ulf
hu = "%PRODUCTNAME-képlet"
it = "%PRODUCTNAME Formula"
cs = "Vzorec %PRODUCTNAME"
-@@ -186,10 +164,7 @@ zh-CN = "%PRODUCTNAME 公式"
+@@ -218,15 +199,13 @@ zh-CN = "%PRODUCTNAME 公式"
zh-TW = "%PRODUCTNAME 公式"
tr = "%PRODUCTNAME Formül"
ar = "%PRODUCTNAME صيغة"
-he = "%PRODUCTNAME Formel"
-ca = "%PRODUCTNAME Formel"
--th = "%PRODUCTNAME Formel"
--hi-IN = "%PRODUCTNAME Formel"
+ca = "Fòrmula d'%PRODUCTNAME"
+ th = "%PRODUCTNAME สมการ"
+-hi-IN = "%PRODUCTNAME Formel"
et = "%PRODUCTNAME-i valem"
sl = "Formula programa %PRODUCTNAME"
ns = "Fomula ya %PRODUCTNAME"
+ af = "%PRODUCTNAME-formule"
+-zu = "Indlela yokwenza ye-%PRODUCTNAME 5.0"
++zu = "Indlela yokwenza ye-%PRODUCTNAME"
+ nb = "%PRODUCTNAME Formula"
+ nn = "%PRODUCTNAME Formula"
+ eu = "%PRODUCTNAME Formel"
Index: sysui/desktop/share/launcher_name.ulf
===================================================================
---- sysui/desktop/share/launcher_name.ulf.orig 2004-07-30 21:43:44.697580288 +0200
-+++ sysui/desktop/share/launcher_name.ulf 2004-07-30 22:29:21.309552032 +0200
-@@ -1,12 +1,11 @@
+--- sysui/desktop/share/launcher_name.ulf.orig 2004-09-13 22:50:54.000000000 +0200
++++ sysui/desktop/share/launcher_name.ulf 2004-09-14 15:46:59.395405016 +0200
+@@ -1,13 +1,11 @@
[printeradmin]
en = "%PRODUCTNAME Printer Administration"
de = "%PRODUCTNAME Drucker Verwaltung"
-pt = "%PRODUCTNAME Drucker Verwaltung"
ru = "%PRODUCTNAME Управление принтером"
+-el = "%PRODUCTNAME Drucker Verwaltung"
nl = "%PRODUCTNAME printerbeheer"
fr = "%PRODUCTNAME Gestion des imprimantes"
-es = "Administración de la impresora de %PRODUCTNAME "
@@ -510,25 +549,25 @@ Index: sysui/desktop/share/launcher_name.ulf
hu = "%PRODUCTNAME Nyomtatókezelés"
it = "%PRODUCTNAME Gestione stampanti"
cs = "Administrace tiskáren %PRODUCTNAME"
-@@ -20,11 +19,7 @@ ko = "%PRODUCTNAME 프린터 관리"
- zh-CN = "%PRODUCTNAME 打印机管理"
+@@ -22,10 +20,8 @@ zh-CN = "%PRODUCTNAME 打印机管理"
zh-TW = "%PRODUCTNAME 印表機管理"
- tr = "%PRODUCTNAME Printer Administration"
--ar = "%PRODUCTNAME Drucker Verwaltung"
+ tr = "%PRODUCTNAME Yazıcı Yönetimi"
+ ar = "مسئول طابعة %PRODUCTNAME"
-he = "%PRODUCTNAME Drucker Verwaltung"
-ca = "%PRODUCTNAME Drucker Verwaltung"
--th = "%PRODUCTNAME Drucker Verwaltung"
--hi-IN = "%PRODUCTNAME Drucker Verwaltung"
+ca = "Administració d'impressó d'%PRODUCTNAME"
+ th = "%PRODUCTNAME ดูแลเครื่องพิมพ์"
+-hi-IN = "%PRODUCTNAME Drucker Verwaltung"
et = "%PRODUCTNAME-i printerite haldamine"
sl = "%PRODUCTNAME nastavitve tiskalnika"
cy = "Gweinyddiad Argraffu %PRODUCTNAME"
-@@ -35,12 +30,11 @@ zu = "%PRODUCTNAME Ukuphathwa komshicile
+@@ -43,13 +39,12 @@ gl = "%PRODUCTNAME Printer Administratio
[template]
en = "%PRODUCTNAME From Template"
de = "%PRODUCTNAME Aus Vorlage"
-pt = "%PRODUCTNAME Aus Vorlage"
- ru = "%PRODUCTNAME Из шаблона"
+ ru = "%PRODUCTNAME из шаблона..."
+ el = "%PRODUCTNAME Από πρότυπο"
nl = "%PRODUCTNAME Uit sjabloon"
fr = "À partir d'un modèle %PRODUCTNAME"
es = "A partir de una plantilla de %PRODUCTNAME"
@@ -537,17 +576,16 @@ Index: sysui/desktop/share/launcher_name.ulf
hu = "%PRODUCTNAME sablonból"
it = "%PRODUCTNAME Da modello"
cs = "Ze šablony %PRODUCTNAME"
-@@ -53,12 +47,7 @@ ja = "%PRODUCTNAME テンプレートか
- ko = "%PRODUCTNAME 서식 파일로부터"
+@@ -63,11 +58,8 @@ ko = "%PRODUCTNAME 서식 파일로부
zh-CN = "%PRODUCTNAME 采用样式"
zh-TW = "%PRODUCTNAME 採用樣式"
--tr = "%PRODUCTNAME Aus Vorlage"
+ tr = "%PRODUCTNAME Şablondan"
-ar = "%PRODUCTNAME Aus Vorlage"
-he = "%PRODUCTNAME Aus Vorlage"
-ca = "%PRODUCTNAME Aus Vorlage"
--th = "%PRODUCTNAME Aus Vorlage"
--hi-IN = "%PRODUCTNAME Aus Vorlage"
+ca = "Des d'una plantilla d'%PRODUCTNAME"
+ th = "%PRODUCTNAME จากแม่แบบ"
+-hi-IN = "%PRODUCTNAME Aus Vorlage"
et = "%PRODUCTNAME mallist"
sl = "%PRODUCTNAME iz predloge"
ns = "%PRODUCTNAME go tšwa go Template"
diff --git a/patches/OOO_1_1/vfs-uno-register.diff b/patches/OOO_1_1/vfs-uno-register.diff
index 66788d2c3..82e38d230 100644
--- a/patches/OOO_1_1/vfs-uno-register.diff
+++ b/patches/OOO_1_1/vfs-uno-register.diff
@@ -148,7 +148,7 @@ diff -u -p -u -r1.4 Configuration.xcu
+ <value>com.sun.star.ucb.GnomeVFSContentProvider</value>
+ </prop>
+ <prop oor:name="URLTemplate">
-+ <value>.*</value>
++ <value>://</value>
+ </prop>
+ <prop oor:name="Arguments">
+ <value/>
diff --git a/patches/OOO_1_1/word-count.diff b/patches/OOO_1_1/word-count.diff
index 4f3040435..953e0ca18 100644
--- a/patches/OOO_1_1/word-count.diff
+++ b/patches/OOO_1_1/word-count.diff
@@ -57,7 +57,7 @@ retrieving revision 1.109
diff -u -p -u -r1.109 swslots.src
--- sw/sdi/swslots.src 17 Jul 2003 11:48:28 -0000 1.109
+++ sw/sdi/swslots.src 31 Jul 2003 17:01:27 -0000
-@@ -3685,6 +3685,55 @@ SfxSlotInfo FN_HYPHENATE_OPT_DLG
+@@ -3685,6 +3685,56 @@ SfxSlotInfo FN_HYPHENATE_OPT_DLG
SlotName[ hindi ] = "हाइफनेशन";
SlotName[ slovak ] = "Delenie slov";
};
@@ -95,6 +95,7 @@ diff -u -p -u -r1.109 swslots.src
+ SlotName[ thai ] = "Word count";
+ SlotName[ hebrew ] = "Word count";
+ SlotName[ estonian ] = "Word count";
++ SlotName[ lithuanian ] = "Dokumento statistika";
+/* --: "Word count" translations
+ az: "Kəlmə Miqdarı"
+ bs: "Zbir riječi"
@@ -138,93 +139,69 @@ Index: sw/source/ui/inc/swmn.hrc
RCS file: /cvs/sw/sw/source/ui/inc/swmn.hrc,v
retrieving revision 1.133
diff --context=15 -c -r1.133 swmn.hrc
-*** sw/source/ui/inc/swmn.hrc.orig 2004-09-22 09:41:21.000000000 -0400
---- sw/source/ui/inc/swmn.hrc 2004-09-23 09:09:01.214282641 -0400
-***************
-*** 9189,9218 ****
---- 9189,9270 ----
- Text[ extern ] = "~Hyphenation...";
- Text[ thai ] = "ใ~ช้ยัติภังค์...";
- Text[ czech ] = "Dělení slov...";
- Text[ hebrew ] = "שבירת מלים...";
- Text[ hindi ] = "~हाइफनेशन...";
- Text[ slovak ] = "~Delenie slov...";
- Text[ hungarian ] = "~Elválasztás...";
- Text[ slovenian ] = "~Deljenje besed...";
- Text[ estonian ] = "~Poolitus...";
- Text[ welsh ] = "~Cyplysnodi...";
- Text[ northernsotho ] = "~Morathofatso...";
- Text[ afrikaans ] = "~Woordafbreking...";
- Text[ zulu ] = "~Ukwahlukaniswa kwamagama...";
- Text[ norwegian_nynorsk ] = "Orddeli~ng ...";
- };
-+ MenuItem
-+ {
-+ Identifier = FN_WORD_COUNT_DLG ;
-+ HelpID = FN_WORD_COUNT_DLG ;
-+ Text = "Wrter zhlen..." ;
-+ Text [ arabic ] = "...";
-+ Text [ english ] = "Word count...";
-+ Text [ english_us ] = "Word count...";
-+ Text [ catalan ] = "Comptador de paraules...";
-+ Text [ czech ] = "Počet slov...";
-+ Text [ danish ] = "Ordoptælling...";
-+ Text [ greek ] = " ";
-+ Text [ spanish ] = "Contar palabras...";
-+ Text [ estonian ] = "Sõnade arv...";
-+ Text [ finnish ] = "Laske sanat...";
-+ Text [ french ] = "Statistiques...";
-+ Text [ hindi ] = "शब्द गिनें...";
-+ Text [ italian ] = "Statistiche...";
-+ Text [ hungarian ] = "Szavak száma...";
-+ Text [ japanese ] = "ワードカウント...";
-+ Text [ korean ] = "통계...";
-+ Text [ norwegian ] = "Ordtelling...";
-+ Text [ dutch ] = "Woorden tellen...";
-+ Text [ polish ] = "Liczba sw...";
-+ Text [ portuguese ] = "Contagem palavras...";
-+ Text [ portuguese_brazilian ] = "Contagem palavras...";
-+ Text [ russian ] = " ";
-+ Text [ slovak ] = "Počet slov...";
-+ Text [ swedish ] = "Ordräkning...";
-+ Text [ turkish ] = "statistik...";
-+ Text [ chinese_simplified ] = "统计...";
-+ Text [ chinese_traditional ] = "統計...";
-+ Text [ slovenian ] = "Število besed";
-+ Text [ thai ] = "Word count...";
-+ Text [ hebrew ] = "Word count...";
-+ Text [ estonian ] = "Word count...";
-+ /* --: "Word count" translations
-+ az: "Kəlmə Miqdarı"
-+ bs: "Zbir riječi"
-+ cy: "Cyfrif geiriau"
-+ eu: "Hitz kopurua"
-+ mk: "Броење на зборови"
-+ mt: "Għadd ta’ kliem"
-+ ro: "Numără cuvintele"
-+ sl: "Število besed"
-+ sq: "Llogariti fjalët"
-+ ta: "சொல் எண்ணி"
-+ uk: "Кількість слів"
-+ vi: "Đếm từ"
-+ wa: "Contaedje des mots"
-+ */
-+ };
- #endif
- SEPARATOR ;
- MenuItem
- {
- Identifier = SID_AUTO_CORRECT_DLG;
- HelpID = SID_AUTO_CORRECT_DLG;
- Text = "~AutoKorrektur/AutoFormat..." ;
- Text [ English ] = "~AutoCorrect/AutoFormat..." ;
- Text [ portuguese ] = "~AutoCorreco/AutoFormato..." ;
- Text [ english_us ] = "~AutoCorrect/AutoFormat..." ;
- Text [ portuguese_brazilian ] = "~AutoCorreo/AutoFormatao..." ;
- Text [ swedish ] = "~AutoKorrigering/AutoFormat..." ;
- Text [ danish ] = "~AutoKorrektur/AutoFormat..." ;
- Text [ italian ] = "Correzione/Formattazione a~utomatica..." ;
- Text [ spanish ] = "~Correccin/Formateado automtico..." ;
+--- sw/source/ui/inc/swmn.hrc.orig 2004-09-22 09:41:21.000000000 -0400
++++ sw/source/ui/inc/swmn.hrc 2004-09-23 09:09:01.214282641 -0400
+@@ -9189,6 +9189,59 @@
++ MenuItem
++ {
++ Identifier = FN_WORD_COUNT_DLG ;
++ HelpID = FN_WORD_COUNT_DLG ;
++ Text = "Wrter zhlen..." ;
++ Text [ arabic ] = "...";
++ Text [ english ] = "Word count...";
++ Text [ english_us ] = "Word count...";
++ Text [ catalan ] = "Comptador de paraules...";
++ Text [ czech ] = "Počet slov...";
++ Text [ danish ] = "Ordoptælling...";
++ Text [ greek ] = " ";
++ Text [ spanish ] = "Contar palabras...";
++ Text [ estonian ] = "Sõnade arv...";
++ Text [ finnish ] = "Laske sanat...";
++ Text [ french ] = "Statistiques...";
++ Text [ hindi ] = "शब्द गिनें...";
++ Text [ italian ] = "Statistiche...";
++ Text [ hungarian ] = "Szavak száma...";
++ Text [ japanese ] = "ワードカウント...";
++ Text [ korean ] = "통계...";
++ Text [ norwegian ] = "Ordtelling...";
++ Text [ dutch ] = "Woorden tellen...";
++ Text [ polish ] = "Liczba sw...";
++ Text [ portuguese ] = "Contagem palavras...";
++ Text [ portuguese_brazilian ] = "Contagem palavras...";
++ Text [ russian ] = " ";
++ Text [ slovak ] = "Počet slov...";
++ Text [ swedish ] = "Ordräkning...";
++ Text [ turkish ] = "statistik...";
++ Text [ chinese_simplified ] = "统计...";
++ Text [ chinese_traditional ] = "統計...";
++ Text [ slovenian ] = "Število besed";
++ Text [ thai ] = "Word count...";
++ Text [ hebrew ] = "Word count...";
++ Text [ estonian ] = "Word count...";
++ Text [ lithuanian ] = "Dokumento ~statistika...";
++/* --: "Word count" translations
++ az: "Kəlmə Miqdarı"
++ bs: "Zbir riječi"
++ cy: "Cyfrif geiriau"
++ eu: "Hitz kopurua"
++ mk: "Броење на зборови"
++ mt: "Għadd ta’ kliem"
++ ro: "Numără cuvintele"
++ sl: "Število besed"
++ sq: "Llogariti fjalët"
++ ta: "சொல் எண்ணி"
++ uk: "Кількість слів"
++ vi: "Đếm từ"
++ wa: "Contaedje des mots"
++*/
++ };
+ #endif
+ SEPARATOR ;
+ MenuItem
+ {
+- Identifier = SID_AUTO_CORRECT_DLG;
++ Identifier = SID_AUTO_CORRECT_DLG; /* foo */
+ HelpID = SID_AUTO_CORRECT_DLG;
Index: sw/source/ui/uiview/viewling.cxx
===================================================================
RCS file: /cvs/sw/sw/source/ui/uiview/viewling.cxx,v
diff --git a/patches/OOO_1_1/writer-default-as-optimal-page-wrap.diff b/patches/OOO_1_1/writer-default-as-optimal-page-wrap.diff
new file mode 100644
index 000000000..6516c179c
--- /dev/null
+++ b/patches/OOO_1_1/writer-default-as-optimal-page-wrap.diff
@@ -0,0 +1,16 @@
+Index: source/core/doc/poolfmt.cxx
+===================================================================
+RCS file: /cvs/sw/sw/source/core/doc/poolfmt.cxx,v
+retrieving revision 1.25.108.1
+diff -u -r1.25.108.1 poolfmt.cxx
+--- sw/source/core/doc/poolfmt.cxx 9 Jan 2004 14:31:26 -0000 1.25.108.1
++++ sw/source/core/doc/poolfmt.cxx 24 Oct 2004 14:25:15 -0000
+@@ -1516,7 +1516,7 @@
+ aSet.Put( SwFmtAnchor( FLY_AT_CNTNT ));
+ aSet.Put( SwFmtHoriOrient( 0, HORI_CENTER, FRAME ));
+ aSet.Put( SwFmtVertOrient( 0, VERT_TOP, FRAME ));
+- aSet.Put( SwFmtSurround( SURROUND_NONE ));
++ aSet.Put( SwFmtSurround( SURROUND_IDEAL ));
+ }
+ break;
+ case RES_POOLFRM_FORMEL:
diff --git a/patches/order b/patches/order
index 28a3555e4..aa9bc29e9 100644
--- a/patches/order
+++ b/patches/order
@@ -1,2 +1,3 @@
OOO_1_1_1 1.1
-OOO_1_1_2 1.1 buildable
+OOO_1_1_2 1.1
+OOO_1_1_3 1.1 buildable
diff --git a/patches/vclplug/crash-ppd-parse.diff b/patches/vclplug/crash-ppd-parse.diff
index 8c41014b0..6d0edd6cc 100644
--- a/patches/vclplug/crash-ppd-parse.diff
+++ b/patches/vclplug/crash-ppd-parse.diff
@@ -1,22 +1,28 @@
---- psprint.good/source/printer/cupsmgr.cxx 2004-09-27 04:24:33.000000000 +0100
-+++ psprint/source/printer/cupsmgr.cxx 2004-09-29 17:19:32.578417056 +0100
-@@ -495,11 +495,14 @@
-
- rInfo.m_pParser = pNewParser;
- rInfo.m_aContext.setParser( pNewParser );
-- for( int i = 0; i < pPPD->num_groups; i++ )
-- updatePrinterContextInfo( pPPD->groups + i, rInfo );
--
-- // clean up the mess
-- m_pCUPSWrapper->ppdClose( pPPD );
-+ if (pPPD)
-+ {
-+ for( int i = 0; i < pPPD->num_groups; i++ )
-+ updatePrinterContextInfo( pPPD->groups + i, rInfo );
-+
-+ // clean up the mess
-+ m_pCUPSWrapper->ppdClose( pPPD );
-+ }
-
- // remove temporary PPD file
- unlink( pPPDFile );
+diff -urd psprint/source/printer/cupsmgr.cxx psprint-fixppdcrash/source/printer/cupsmgr.cxx
+--- psprint/source/printer/cupsmgr.cxx 2004-11-09 16:37:51.000000000 +0000
++++ psprint-fixppdcrash/source/printer/cupsmgr.cxx 2004-11-24 21:42:59.000000000 +0000
+@@ -601,14 +601,20 @@
+ // remember the default context for later use
+ PPDContext& rContext = m_aDefaultContexts[ aPrinter ];
+ rContext.setParser( pNewParser );
+- for( int i = 0; i < pPPD->num_groups; i++ )
+- updatePrinterContextInfo( pPPD->groups + i, rContext );
++ if(pPPD)
++ {
++ for( int i = 0; i < pPPD->num_groups; i++ )
++ updatePrinterContextInfo( pPPD->groups + i, rContext );
++ }
+
+ rInfo.m_pParser = pNewParser;
+ rInfo.m_aContext = rContext;
+
+- // clean up the mess
+- m_pCUPSWrapper->ppdClose( pPPD );
++ if(pPPD)
++ {
++ // clean up the mess
++ m_pCUPSWrapper->ppdClose( pPPD );
++ }
+ }
+ #if OSL_DEBUG_LEVEL > 1
+ else
diff --git a/patches/vclplug/font-substitution-fixups.diff b/patches/vclplug/font-substitution-fixups.diff
new file mode 100644
index 000000000..456993809
--- /dev/null
+++ b/patches/vclplug/font-substitution-fixups.diff
@@ -0,0 +1,505 @@
+--- psprint/inc/psprint/fontmanager.hxx.lang 2005-01-05 11:52:20.000000000 -0500
++++ psprint/inc/psprint/fontmanager.hxx 2005-01-05 11:54:36.973031125 -0500
+@@ -75,6 +75,9 @@
+ #ifndef _PSPRINT_HELPER_HXX_
+ #include <psprint/helper.hxx>
+ #endif
++#ifndef _LANG_HXX
++#include <tools/lang.hxx>
++#endif
+
+ #ifndef _COM_SUN_STAR_LANG_LOCALE_HPP_
+ #include <com/sun/star/lang/Locale.hpp>
+@@ -193,6 +196,7 @@
+ weight::type m_eWeight;
+ pitch::type m_ePitch;
+ rtl_TextEncoding m_aEncoding;
++ std::vector< LanguageType > m_aLangs;
+
+ FastPrintFontInfo() :
+ m_nID( 0 ),
+@@ -299,6 +303,7 @@
+ pitch::type m_ePitch;
+ rtl_TextEncoding m_aEncoding;
+ bool m_bFontEncodingOnly; // set if font should be only accessed by builtin encoding
++ std::vector< LanguageType > m_aLangs;
+ CharacterMetric m_aGlobalMetricX;
+ CharacterMetric m_aGlobalMetricY;
+ PrintFontMetrics* m_pMetrics;
+@@ -459,6 +464,10 @@
+ */
+ void deinitFontconfig();
+
++ // pLangSet should be of type FcLangSet* but since not everyone uses
++ // Fontconfig, we have to make it void* here
++ void fillFontSupportedLanguages (PrintFont *pFont, void *pLangSetIn);
++
+ static bool parseXLFD( const rtl::OString& rXLFD, XLFDEntry& rEntry );
+ void parseXLFD_appendAliases( const std::list< rtl::OString >& rXLFDs, std::list< XLFDEntry >& rEntries ) const;
+ void initFontsAlias();
+--- psprint/source/fontmanager/fontconfig.cxx.lang 2005-01-05 11:38:33.000000000 -0500
++++ psprint/source/fontmanager/fontconfig.cxx 2005-01-05 12:02:32.228042143 -0500
+@@ -74,6 +74,8 @@
+ typedef int FcBool;
+ typedef int FcMatchKind;
+ typedef char FcChar8;
++typedef void FcCharSet;
++typedef void FcLangSet;
+ #endif
+
+ #include <cstdio>
+@@ -97,6 +99,9 @@
+ #ifndef _RTL_USTRBUF_HXX
+ #include <rtl/ustrbuf.hxx>
+ #endif
++#ifndef _LANG_HXX
++#include <tools/lang.hxx>
++#endif
+
+ using namespace psp;
+ using namespace osl;
+@@ -125,6 +130,11 @@
+ FcBool (*m_pFcConfigSubstitute)(FcConfig*,FcPattern*,FcMatchKind);
+ FcBool (*m_pFcPatternAddInteger)(FcPattern*,const char*,int);
+ FcBool (*m_pFcPatternAddString)(FcPattern*,const char*,const FcChar8*);
++ FcResult (*m_pFcPatternGetCharSet)(const FcPattern*,const char*,int,FcCharSet**);
++ void (*m_pFcCharSetDestroy)(FcCharSet *fcs);
++ FcResult (*m_pFcPatternGetLangSet)(const FcPattern*,const char*,int,FcLangSet**);
++ FcLangResult (*m_pFcLangSetHasLang)(const FcLangSet *ls, const FcChar8 *lang);
++ void (*m_pFcLangSetDestroy)(FcLangSet *ls);
+
+ void* loadSymbol( const char* );
+
+@@ -193,6 +203,21 @@
+ { return m_pFcPatternAddInteger( pPattern, pObject, nValue ); }
+ FcBool FcPatternAddString( FcPattern* pPattern, const char* pObject, const FcChar8* pString )
+ { return m_pFcPatternAddString( pPattern, pObject, pString ); }
++
++ FcResult FcPatternGetCharSet( const FcPattern* pPattern, const char* object, int n, FcCharSet** s )
++ { return m_pFcPatternGetCharSet( pPattern, object, n, s ); }
++
++ void FcCharSetDestroy( FcCharSet *fcs )
++ { m_pFcCharSetDestroy( fcs ); }
++
++ FcResult FcPatternGetLangSet( const FcPattern* pPattern, const char* object, int n, FcLangSet** s )
++ { return m_pFcPatternGetLangSet( pPattern, object, n, s ); }
++
++ FcLangResult FcLangSetHasLang( const FcLangSet *ls, const FcChar8 *lang )
++ { return m_pFcLangSetHasLang( ls, lang ); }
++
++ void FcLangSetDestroy( FcLangSet *ls )
++ { m_pFcLangSetDestroy( ls ); }
+ };
+
+ void* FontCfgWrapper::loadSymbol( const char* pSymbol )
+@@ -263,6 +288,16 @@
+ loadSymbol( "FcPatternAddInteger" );
+ m_pFcPatternAddString = (FcBool(*)(FcPattern*,const char*,const FcChar8*))
+ loadSymbol( "FcPatternAddString" );
++ m_pFcPatternGetCharSet = (FcResult(*)(const FcPattern*,const char*,int,FcCharSet**))
++ loadSymbol( "FcPatternGetCharSet" );
++ m_pFcCharSetDestroy = (void(*)(FcCharSet *))
++ loadSymbol( "FcCharSetDestroy" );
++ m_pFcPatternGetLangSet = (FcResult(*)(const FcPattern*,const char*,int,FcLangSet**))
++ loadSymbol( "FcPatternGetLangSet" );
++ m_pFcLangSetHasLang = (FcLangResult(*)(const FcLangSet *ls, const FcChar8 *lang))
++ loadSymbol( "FcLangSetHasLang" );
++ m_pFcLangSetDestroy = (void(*)(FcLangSet *))
++ loadSymbol( "FcLangSetDestroy" );
+
+ if( ! (
+ m_pFcInitLoadConfigAndFonts &&
+@@ -282,7 +317,14 @@
+ m_pFcFontMatch &&
+ m_pFcConfigSubstitute &&
+ m_pFcPatternAddInteger &&
+- m_pFcPatternAddString
++ m_pFcPatternAddString &&
++ m_pFcPatternGetBool &&
++ m_pFcPatternGetCharSet &&
++ m_pFcPatternGetCharSet &&
++ m_pFcCharSetDestroy &&
++ m_pFcPatternGetLangSet &&
++ m_pFcLangSetHasLang &&
++ m_pFcLangSetDestroy
+ ) )
+ {
+ osl_unloadModule( m_pLib );
+@@ -324,6 +366,310 @@
+ }
+ }
+
++#ifdef ENABLE_FONTCONFIG
++
++// Copied from tools/intnl/isolang.cxx, this saves us
++// from having to iterate over the entire list of LANGUAGE_*
++// and call ConvertLanguageToIsoByteString(), which itself just
++// searches some tables. Its faster this way, and perhaps we can
++// get the isolang API to do some form of iteration in the future.
++struct IsoLangEntry
++{
++ LanguageType meLang;
++ sal_Char maLangStr[3];
++ sal_Char maCountry[3];
++};
++
++// -----------------------------------------------------------------------
++
++// Entries for languages are lower case, for countries upper case,
++// as recommended by rfc1766.
++// ConvertIsoNamesToLanguage is case insensitive
++
++// Sortorder: Most used first
++// The default entry for every language string has to be first.
++
++static IsoLangEntry aIsoLangEntries[] =
++{
++ // Lang (MS-LCID-Codes) ISO639-1 ISO3166
++ { LANGUAGE_ENGLISH, "en", "" },
++ { LANGUAGE_ENGLISH_US, "en", "US" },
++ { LANGUAGE_ENGLISH_UK, "en", "GB" },
++ { LANGUAGE_ENGLISH_AUS, "en", "AU" },
++ { LANGUAGE_ENGLISH_CAN, "en", "CA" },
++ { LANGUAGE_FRENCH, "fr", "FR" },
++ { LANGUAGE_GERMAN, "de", "DE" },
++ { LANGUAGE_ITALIAN, "it", "IT" },
++ { LANGUAGE_DUTCH, "nl", "NL" },
++ { LANGUAGE_SPANISH, "es", "ES" },
++ { LANGUAGE_SPANISH_MODERN, "es", "ES" },
++ { LANGUAGE_PORTUGUESE, "pt", "PT" },
++ { LANGUAGE_PORTUGUESE_BRAZILIAN, "pt", "BR" },
++ { LANGUAGE_DANISH, "da", "DK" },
++ { LANGUAGE_GREEK, "el", "GR" },
++ { LANGUAGE_CHINESE, "zh", "" },
++ { LANGUAGE_CHINESE_TRADITIONAL, "zh", "TW" },
++ { LANGUAGE_CHINESE_SIMPLIFIED, "zh", "CN" },
++ { LANGUAGE_CHINESE_HONGKONG, "zh", "HK" },
++ { LANGUAGE_CHINESE_SINGAPORE, "zh", "SG" },
++ { LANGUAGE_CHINESE_MACAU, "zh", "MO" },
++ { LANGUAGE_JAPANESE, "ja", "JP" },
++ { LANGUAGE_KOREAN, "ko", "KR" },
++ { LANGUAGE_KOREAN_JOHAB, "ko", "KR" },
++ { LANGUAGE_KOREAN, "ko", "KP" }, // North Korea
++ { LANGUAGE_SWEDISH, "sv", "SE" },
++ { LANGUAGE_SWEDISH_FINLAND, "sv", "FI" },
++ { LANGUAGE_FINNISH, "fi", "FI" },
++ { LANGUAGE_RUSSIAN, "ru", "RU" },
++ { LANGUAGE_ENGLISH_NZ, "en", "NZ" },
++ { LANGUAGE_ENGLISH_EIRE, "en", "IE" },
++ { LANGUAGE_ENGLISH_SAFRICA, "en", "ZA" },
++ { LANGUAGE_DUTCH_BELGIAN, "nl", "BE" },
++ { LANGUAGE_FRENCH_BELGIAN, "fr", "BE" },
++ { LANGUAGE_FRENCH_CANADIAN, "fr", "CA" },
++ { LANGUAGE_FRENCH_SWISS, "fr", "CH" },
++ { LANGUAGE_GERMAN_SWISS, "de", "CH" },
++ { LANGUAGE_GERMAN_AUSTRIAN, "de", "AT" },
++ { LANGUAGE_ITALIAN_SWISS, "it", "CH" },
++ { LANGUAGE_ARABIC, "ar", "" },
++ { LANGUAGE_ARABIC_SAUDI_ARABIA, "ar", "SA" },
++ { LANGUAGE_ARABIC_EGYPT, "ar", "EG" },
++ { LANGUAGE_ARABIC_UAE, "ar", "AE" },
++ { LANGUAGE_AFRIKAANS, "af", "ZA" },
++ { LANGUAGE_ALBANIAN, "sq", "AL" },
++ { LANGUAGE_ARABIC_IRAQ, "ar", "IQ" },
++ { LANGUAGE_ARABIC_LIBYA, "ar", "LY" },
++ { LANGUAGE_ARABIC_ALGERIA, "ar", "DZ" },
++ { LANGUAGE_ARABIC_MOROCCO, "ar", "MA" },
++ { LANGUAGE_ARABIC_TUNISIA, "ar", "TN" },
++ { LANGUAGE_ARABIC_OMAN, "ar", "OM" },
++ { LANGUAGE_ARABIC_YEMEN, "ar", "YE" },
++ { LANGUAGE_ARABIC_SYRIA, "ar", "SY" },
++ { LANGUAGE_ARABIC_JORDAN, "ar", "JO" },
++ { LANGUAGE_ARABIC_LEBANON, "ar", "LB" },
++ { LANGUAGE_ARABIC_KUWAIT, "ar", "KW" },
++ { LANGUAGE_ARABIC_BAHRAIN, "ar", "BH" },
++ { LANGUAGE_ARABIC_QATAR, "ar", "QA" },
++ { LANGUAGE_BASQUE, "eu", "" },
++ { LANGUAGE_BULGARIAN, "bg", "BG" },
++ { LANGUAGE_CROATIAN, "hr", "HR" },
++ { LANGUAGE_CZECH, "cs", "CZ" },
++ { LANGUAGE_CZECH, "cz", "" },
++ { LANGUAGE_ENGLISH_JAMAICA, "en", "JM" },
++ { LANGUAGE_ENGLISH_CARRIBEAN, "en", "BS" }, // not 100%, because AG is Bahamas
++ { LANGUAGE_ENGLISH_BELIZE, "en", "BZ" },
++ { LANGUAGE_ENGLISH_TRINIDAD, "en", "TT" },
++ { LANGUAGE_ENGLISH_ZIMBABWE, "en", "ZW" },
++ { LANGUAGE_ENGLISH_PHILIPPINES, "en", "PH" },
++ { LANGUAGE_ESTONIAN, "et", "EE" },
++ { LANGUAGE_FAEROESE, "fo", "FO" },
++ { LANGUAGE_FARSI, "fa", "" },
++ { LANGUAGE_FRENCH_LUXEMBOURG, "fr", "LU" },
++ { LANGUAGE_FRENCH_MONACO, "fr", "MC" },
++ { LANGUAGE_GERMAN_LUXEMBOURG, "de", "LU" },
++ { LANGUAGE_GERMAN_LIECHTENSTEIN, "de", "LI" },
++ { LANGUAGE_HEBREW, "he", "IL" }, // new: old was "iw"
++ { LANGUAGE_HEBREW, "iw", "IL" }, // old: new is "he"
++ { LANGUAGE_HUNGARIAN, "hu", "HU" },
++ { LANGUAGE_ICELANDIC, "is", "IS" },
++ { LANGUAGE_INDONESIAN, "id", "ID" }, // new: old was "in"
++ { LANGUAGE_INDONESIAN, "in", "ID" }, // old: new is "id"
++ { LANGUAGE_NORWEGIAN, "no", "NO" },
++ { LANGUAGE_NORWEGIAN_BOKMAL, "nb", "NO" },
++ { LANGUAGE_NORWEGIAN_NYNORSK, "nn", "NO" },
++ { LANGUAGE_POLISH, "pl", "PL" },
++ { LANGUAGE_RHAETO_ROMAN, "rm", "" },
++ { LANGUAGE_ROMANIAN, "ro", "RO" },
++ { LANGUAGE_ROMANIAN_MOLDOVA, "ro", "MD" },
++ { LANGUAGE_SLOVAK, "sk", "SK" },
++ { LANGUAGE_SLOVENIAN, "sl", "SI" },
++ { LANGUAGE_SPANISH_MEXICAN, "es", "MX" },
++ { LANGUAGE_SPANISH_GUATEMALA, "es", "GT" },
++ { LANGUAGE_SPANISH_COSTARICA, "es", "CR" },
++ { LANGUAGE_SPANISH_PANAMA, "es", "PA" },
++ { LANGUAGE_SPANISH_DOMINICAN_REPUBLIC, "es", "DO" },
++ { LANGUAGE_SPANISH_VENEZUELA, "es", "VE" },
++ { LANGUAGE_SPANISH_COLOMBIA, "es", "CO" },
++ { LANGUAGE_SPANISH_PERU, "es", "PE" },
++ { LANGUAGE_SPANISH_ARGENTINA, "es", "AR" },
++ { LANGUAGE_SPANISH_ECUADOR, "es", "EC" },
++ { LANGUAGE_SPANISH_CHILE, "es", "CL" },
++ { LANGUAGE_SPANISH_URUGUAY, "es", "UY" },
++ { LANGUAGE_SPANISH_PARAGUAY, "es", "PY" },
++ { LANGUAGE_SPANISH_BOLIVIA, "es", "BO" },
++ { LANGUAGE_SPANISH_EL_SALVADOR, "es", "SV" },
++ { LANGUAGE_SPANISH_HONDURAS, "es", "HN" },
++ { LANGUAGE_SPANISH_NICARAGUA, "es", "NI" },
++ { LANGUAGE_SPANISH_PUERTO_RICO, "es", "PR" },
++ { LANGUAGE_TURKISH, "tr", "TR" },
++ { LANGUAGE_UKRAINIAN, "uk", "UA" },
++ { LANGUAGE_VIETNAMESE, "vi", "VN" },
++ { LANGUAGE_LATVIAN, "lv", "LV" },
++ { LANGUAGE_MACEDONIAN, "mk", "MK" },
++ { LANGUAGE_MALAY, "ms", "" },
++ { LANGUAGE_MALAY_MALAYSIA, "ms", "MY" },
++ { LANGUAGE_MALAY_BRUNEI_DARUSSALAM, "ms", "BN" },
++ { LANGUAGE_THAI, "th", "TH" },
++ { LANGUAGE_LITHUANIAN, "lt", "LT" },
++ { LANGUAGE_LITHUANIAN_CLASSIC, "lt", "LT" },
++ { LANGUAGE_CROATIAN, "hr", "HR" }, // Croatian in Croatia
++ { LANGUAGE_SERBIAN_LATIN, "sh", "YU" }, // Serbo-Croatian in Yugoslavia (default)
++ { LANGUAGE_SERBIAN_LATIN, "sh", "BA" }, // Serbo-Croatian in Bosnia And Herzegovina
++ { LANGUAGE_SERBIAN_CYRILLIC, "sr", "YU" },
++ { LANGUAGE_SERBIAN, "sr", "" }, // SERBIAN is only LID, MS-LCID not defined (was dupe of CROATIAN)
++ { LANGUAGE_ARMENIAN, "hy", "AM" },
++ { LANGUAGE_AZERI, "az", "" },
++ { LANGUAGE_BENGALI, "bn", "BD" },
++ { LANGUAGE_KAZAK, "kk", "KZ" },
++ { LANGUAGE_URDU, "ur", "IN" },
++ { LANGUAGE_HINDI, "hi", "IN" },
++ { LANGUAGE_GUJARATI, "gu", "IN" },
++ { LANGUAGE_KANNADA, "kn", "IN" },
++ { LANGUAGE_ASSAMESE, "as", "IN" },
++ { LANGUAGE_KASHMIRI, "ks", "" },
++ { LANGUAGE_KASHMIRI_INDIA, "ks", "IN" },
++ { LANGUAGE_MALAYALAM, "ml", "IN" },
++ { LANGUAGE_MARATHI, "mr", "IN" },
++ { LANGUAGE_NEPALI, "ne", "NP" },
++ { LANGUAGE_NEPALI_INDIA, "ne", "IN" },
++ { LANGUAGE_ORIYA, "or", "IN" },
++ { LANGUAGE_PUNJABI, "pa", "IN" },
++ { LANGUAGE_SANSKRIT, "sa", "IN" },
++ { LANGUAGE_SINDHI, "sd", "IN" },
++ { LANGUAGE_TAMIL, "ta", "IN" },
++ { LANGUAGE_TELUGU, "te", "IN" },
++ { LANGUAGE_BELARUSIAN, "be", "BY" },
++ { LANGUAGE_CATALAN, "ca", "ES" }, // Spain (default)
++ { LANGUAGE_CATALAN, "ca", "AD" }, // Andorra
++ { LANGUAGE_FRENCH_CAMEROON, "fr", "CM" },
++ { LANGUAGE_FRENCH_COTE_D_IVOIRE, "fr", "CI" },
++ { LANGUAGE_FRENCH_MALI, "fr", "ML" },
++ { LANGUAGE_FRENCH_SENEGAL, "fr", "SN" },
++ { LANGUAGE_FRENCH_ZAIRE, "fr", "CD" }, // Democratic Republic Of Congo
++ { LANGUAGE_FRISIAN_NETHERLANDS, "fy", "NL" },
++ { LANGUAGE_GAELIC_IRELAND, "ga", "IE" },
++ { LANGUAGE_GAELIC_SCOTLAND, "gd", "GB" },
++ { LANGUAGE_GALICIAN, "gl", "ES" },
++ { LANGUAGE_GEORGIAN, "ka", "GE" },
++ { LANGUAGE_KHMER, "km", "KH" },
++ { LANGUAGE_KIRGHIZ, "ky", "KG" },
++ { LANGUAGE_LAO, "lo", "LA" },
++ { LANGUAGE_MALTESE, "mt", "MT" },
++ { LANGUAGE_MONGOLIAN, "mn", "MN" },
++ { LANGUAGE_RUSSIAN_MOLDOVA, "mo", "MD" },
++ { LANGUAGE_SESOTHO, "st", "LS" }, // Lesotho (default)
++ { LANGUAGE_SESOTHO, "st", "ZA" }, // South Africa
++ { LANGUAGE_SWAHILI, "sw", "KE" },
++ { LANGUAGE_TAJIK, "tg", "TJ" },
++ { LANGUAGE_TIBETAN, "bo", "CN" }, // CN politically correct?
++ { LANGUAGE_TSONGA, "ts", "ZA" },
++ { LANGUAGE_TSWANA, "tn", "BW" }, // Botswana (default)
++ { LANGUAGE_TSWANA, "tn", "ZA" }, // South Africa
++ { LANGUAGE_TURKMEN, "tk", "TM" },
++ { LANGUAGE_WELSH, "cy", "GB" },
++ { LANGUAGE_NORTHERNSOTHO, "ns", "ZA" },
++ { LANGUAGE_XHOSA, "xh", "ZA" },
++ { LANGUAGE_ZULU, "zu", "ZA" },
++// { LANGUAGE_ARABIC_SUDAN, "ar", "SD" }, // unknown MS-LCID
++// { LANGUAGE_FRENCH_REUNION, "fr", "" }, // unknown ISO country code
++// { LANGUAGE_FRENCH_WEST_INDIES, "fr", "" }, // unknown ISO country code
++// { LANGUAGE_KONKANI, "kok", "" }, // only ISO639-2 language code
++// { LANGUAGE_MANIPURI, "mni", "" }, // only ISO639-2 language code
++// { LANGUAGE_SAMI_LAPPISH, "", "" }, // unknown ISO code (could be "se_SE", but there is more than one Sami and more than one country)
++// { LANGUAGE_SORBIAN, "wen", "" }, // only ISO639-2 language code and is not used anymore from MS
++// { LANGUAGE_VENDA, "ven", "ZA" }, // only ISO639-2 language code
++// { LANGUAGE_BURMESE "my", "" }, // undetermined ISO country code (could be Burma, Thailand, Yunna, Vietnam)
++ { LANGUAGE_USER_KINYARWANDA, "rw", "RW" },
++ { LANGUAGE_USER_MAORI, "mi", "NZ" },
++ { LANGUAGE_USER_LATIN, "la", "" },
++ { LANGUAGE_USER_ESPERANTO, "eo", "" },
++ { LANGUAGE_DONTKNOW, "", "" } // marks end of table
++};
++#endif
++
++void PrintFontManager::fillFontSupportedLanguages (PrintFont *pFont, void *pLangSetIn)
++{
++#ifdef ENABLE_FONTCONFIG
++ // There really doesn't seem to be a better way to do this than looping over
++ // the entire set of languages that OOo supports, and asking Fontconfig whether
++ // the particular language set contains that language. There's no iterator
++ // for FcLangSet structures that we can use, so what we're doing here is bound
++ // to be inefficient. An API to covert an FcLangSet into an FcStrSet to fix this
++ // problem has been submitted for fontconfig 2.3 and should appear soon.
++
++ FcLangSet *pLangSet = (FcLangSet *)pLangSetIn;
++ IsoLangEntry *pLang = &aIsoLangEntries[0];
++ FontCfgWrapper& rWrapper = FontCfgWrapper::get();
++ std::vector<char*> found_locales;
++
++ if (!pFont || !pLang)
++ return;
++
++#if OSL_DEBUG_LEVEL > 1
++ int i = 0;
++ fprintf (stderr, " Languages supported:");
++#endif
++ while (pLang->meLang != LANGUAGE_DONTKNOW)
++ {
++ char locale[10];
++ bool success = true;
++
++ memset (locale, 0, 10);
++ strncpy (locale, pLang->maLangStr, 3);
++ if (strnlen (pLang->maCountry, 3))
++ {
++ strcat (locale, "-");
++ strncat (locale, pLang->maCountry, 3);
++ }
++
++ if (rWrapper.FcLangSetHasLang (pLangSet, (const FcChar8*)locale) != FcLangEqual)
++ {
++ // Back down to just the language name like "en" or "da"
++ memset (locale, 0, 10);
++ strncpy (locale, pLang->maLangStr, 3);
++ if (rWrapper.FcLangSetHasLang (pLangSet, (const FcChar8*)locale) != FcLangEqual)
++ success = false;
++ }
++
++ if (success)
++ {
++ std::vector<char*>::iterator it = found_locales.begin();
++ std::vector<char*>::iterator end = found_locales.end();
++
++ while ((it != end) && strcmp (*it, locale))
++ it++;
++
++ if (it == end)
++ {
++ char *s = strdup (locale);
++ found_locales.push_back (s);
++
++ pFont->m_aLangs.push_back (pLang->meLang);
++ #if OSL_DEBUG_LEVEL > 1
++ fprintf (stderr, " %s", locale);
++ i++;
++ #endif
++ }
++ }
++
++ pLang++;
++ }
++#if OSL_DEBUG_LEVEL > 1
++ if (!i)
++ fprintf (stderr, " none");
++ fprintf (stderr, "\n");
++#endif
++
++ // Clear out the found locales list
++ while (!found_locales.empty())
++ {
++ free (found_locales.back());
++ found_locales.pop_back();
++ }
++#endif
++}
++
++
+ /*
+ * PrintFontManager::initFontconfig
+ */
+@@ -345,6 +691,7 @@
+ FC_FILE,
+ FC_OUTLINE,
+ FC_INDEX,
++ FC_LANG,
+ NULL );
+ FcPattern* pPattern = rWrapper.FcPatternCreate();
+ FcFontSet* pFSet = rWrapper.FcFontList( pConfig, pPattern, pOSet );
+@@ -364,7 +711,9 @@
+ int spacing = 0;
+ int nCollectionEntry = -1;
+ FcBool outline = false;
+-
++ FcCharSet *charset = NULL;
++ FcLangSet *langset = NULL;
++
+ FcResult eFileRes = rWrapper.FcPatternGetString( pFSet->fonts[i], FC_FILE, 0, &file );
+ FcResult eFamilyRes = rWrapper.FcPatternGetString( pFSet->fonts[i], FC_FAMILY, 0, &family );
+ FcResult eStyleRes = rWrapper.FcPatternGetString( pFSet->fonts[i], FC_STYLE, 0, &style );
+@@ -373,9 +722,19 @@
+ FcResult eSpacRes = rWrapper.FcPatternGetInteger( pFSet->fonts[i], FC_SPACING, 0, &spacing );
+ FcResult eOutRes = rWrapper.FcPatternGetBool( pFSet->fonts[i], FC_OUTLINE, 0, &outline );
+ FcResult eIndexRes = rWrapper.FcPatternGetInteger( pFSet->fonts[i], FC_INDEX, 0, &nCollectionEntry );
+-
+- if( eFileRes != FcResultMatch || eFamilyRes != FcResultMatch || eOutRes != FcResultMatch )
++ FcResult eCharSet = rWrapper.FcPatternGetCharSet( pFSet->fonts[i], FC_CHARSET, 0, &charset );
++ FcResult eLangRes = rWrapper.FcPatternGetLangSet( pFSet->fonts[i], FC_LANG, 0, &langset);
++
++ if( eFileRes != FcResultMatch || eFamilyRes != FcResultMatch || eOutRes != FcResultMatch || eLangRes != FcResultMatch )
++ {
++#if 0
++ if (charset)
++ aWrapper.FcCharSetDestroy (charset);
++ if (langset)
++ aWrapper.FcLangSetDestroy (langset);
++#endif
+ continue;
++ }
+
+ #if OSL_DEBUG_LEVEL > 1
+ fprintf( stderr, "found font \"%s\" in file %s\n"
+@@ -504,6 +863,25 @@
+ else if( slant == FC_SLANT_OBLIQUE )
+ pUpdate->m_eItalic = italic::Oblique;
+ }
++ if( (eCharSet == FcResultMatch) && charset)
++ {
++ /* Ok, so we have to call Type1 fonts Unicode, because most
++ * (for example, Luxi Sans) have their encoding set to "FontSpecific"
++ * in their .afm file, which makes OOo decide to call the fonts "symbol"
++ * fonts. That messes up stuff a _lot_. Therefore, call all Type1 fonts
++ * unicode fonts unless they have "ymbol" or "ingbats" in their name.
++ */
++ if ( !strncmp (((const char *)file+strlen((const char *)file)-4), ".pf", 3)
++ && !(strstr((const char *)family, "ymbol") || strstr((const char *)family, "ingbat")) )
++ pUpdate->m_aEncoding = RTL_TEXTENCODING_UNICODE;
++ }
++
++ fillFontSupportedLanguages (pUpdate, langset);
++
++#if 0
++ aWrapper.FcCharSetDestroy (charset);
++ aWrapper.FcLangSetDestroy (langset);
++#endif
+
+ // update font cache
+ m_pFontCache->updateFontCacheEntry( pUpdate, false );
diff --git a/patches/vclplug/psprint-m46-to-m53.diff b/patches/vclplug/psprint-m46-to-m53.diff
deleted file mode 100644
index 3c474399f..000000000
--- a/patches/vclplug/psprint-m46-to-m53.diff
+++ /dev/null
@@ -1,1618 +0,0 @@
-Index: inc/cupsmgr.hxx
-===================================================================
-RCS file: /cvs/gsl/psprint/inc/cupsmgr.hxx,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -w -u -r1.2 -r1.3
---- psprint/inc/cupsmgr.hxx 17 Mar 2004 10:47:45 -0000 1.2
-+++ psprint/inc/cupsmgr.hxx 23 Jul 2004 10:07:09 -0000 1.3
-@@ -64,6 +64,8 @@
-
- #include <psprint/printerinfomanager.hxx>
- #include <osl/module.h>
-+#include <osl/thread.h>
-+#include <osl/mutex.hxx>
-
- namespace psp
- {
-@@ -83,7 +85,7 @@
- std::hash_map< FILE*, rtl::OString, FPtrHash > m_aSpoolFiles;
- int m_nDests;
- void* m_pDests;
-- bool m_bFirstDest;
-+ bool m_bNewDests;
- std::hash_map< rtl::OUString, int, rtl::OUStringHash > m_aCUPSDestMap;
-
- rtl::OString m_aUser;
-@@ -92,10 +94,16 @@
- // the password, so this cannot be helped
- rtl::OString m_aPassword;
-
-- CUPSManager( CUPSWrapper*, int nDests = 0, void* pDests = NULL );
-+ osl::Mutex m_aCUPSMutex;
-+ oslThread m_aDestThread;
-+
-+ CUPSManager( CUPSWrapper* );
- virtual ~CUPSManager();
-
- virtual void initialize();
-+
-+ void runDests();
-+ static void runDestThread(void* pMgr);
- public:
-
- static CUPSManager* tryLoadCUPS();
-Index: inc/psprint/fontcache.hxx
-===================================================================
-RCS file: /cvs/gsl/psprint/inc/psprint/fontcache.hxx,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -w -u -r1.3 -r1.4
---- psprint/inc/psprint/fontcache.hxx 2 Feb 2004 18:52:33 -0000 1.3
-+++ psprint/inc/psprint/fontcache.hxx 5 Jul 2004 09:21:57 -0000 1.4
-@@ -108,6 +108,7 @@
- void clearCache();
-
- void copyPrintFont( const PrintFontManager::PrintFont* pFrom, PrintFontManager::PrintFont* pTo ) const;
-+ bool equalsPrintFont( const PrintFontManager::PrintFont* pLeft, PrintFontManager::PrintFont* pRight ) const;
- PrintFontManager::PrintFont* clonePrintFont( const PrintFontManager::PrintFont* pFont ) const;
-
- void createCacheDir( int nDirID );
-Index: inc/psprint/fontmanager.hxx
-===================================================================
-RCS file: /cvs/gsl/psprint/inc/psprint/fontmanager.hxx,v
-retrieving revision 1.18
-retrieving revision 1.19
-diff -w -u -r1.18 -r1.19
---- psprint/inc/psprint/fontmanager.hxx 17 Jun 2004 13:50:47 -0000 1.18
-+++ psprint/inc/psprint/fontmanager.hxx 5 Jul 2004 09:22:12 -0000 1.19
-@@ -191,6 +191,17 @@
- weight::type m_eWeight;
- pitch::type m_ePitch;
- rtl_TextEncoding m_aEncoding;
-+
-+ FastPrintFontInfo() :
-+ m_nID( 0 ),
-+ m_eType( fonttype::Unknown ),
-+ m_eFamilyStyle( family::Unknown ),
-+ m_eItalic( italic::Unknown ),
-+ m_eWidth( width::Unknown ),
-+ m_eWeight( weight::Unknown ),
-+ m_ePitch( pitch::Unknown ),
-+ m_aEncoding( RTL_TEXTENCODING_DONTKNOW )
-+ {}
- };
-
- struct PrintFontInfo : public FastPrintFontInfo
-@@ -199,6 +210,14 @@
- int m_nDescend;
- int m_nLeading;
- int m_nWidth;
-+
-+ PrintFontInfo() :
-+ FastPrintFontInfo(),
-+ m_nAscend( 0 ),
-+ m_nDescend( 0 ),
-+ m_nLeading( 0 ),
-+ m_nWidth( 0 )
-+ {}
- };
-
- // the values are per thousand of the font size
-@@ -208,6 +227,10 @@
- short int width, height;
-
- CharacterMetric() : width( 0 ), height( 0 ) {}
-+ bool operator==( const CharacterMetric& rOther ) const
-+ { return rOther.width == width && rOther.height == height; }
-+ bool operator!=( const CharacterMetric& rOther ) const
-+ { return rOther.width != width || rOther.height != height; }
- };
-
- struct KernPair
-@@ -421,11 +444,18 @@
-
- void getServerDirectories(); // get font server directories on e.g. redhat
-
-- // try to initialize from libfontconfig
-- // returns true if at least one font was added by libfontconfig,
-- // else returns false (e.g. no libfontconfig found
-- // called from initialize()
-+ /* try to initialize fonts from libfontconfig
-+
-+ called from <code>initialize()</code>
-+
-+ @returns
-+ true if at least one font was added by libfontconfig
-+ false else (e.g. no libfontconfig found)
-+ */
- bool initFontconfig();
-+ /* deinitialize fontconfig
-+ */
-+ void deinitFontconfig();
-
- static bool parseXLFD( const rtl::OString& rXLFD, XLFDEntry& rEntry );
- void parseXLFD_appendAliases( const std::list< rtl::OString >& rXLFDs, std::list< XLFDEntry >& rEntries ) const;
-@@ -657,6 +687,36 @@
-
- // returns false if there were not any
- bool getAlternativeFamilyNames( fontID nFont, std::list< rtl::OUString >& rNames ) const;
-+
-+ /* system dependendent font matching
-+
-+ <p>
-+ <code>matchFont</code> matches a pattern of font characteristics
-+ and returns the closest match if possibe. If a match was found
-+ the <code>FastPrintFontInfo</code> passed in as parameter
-+ will be update to the found matching font.
-+ </p>
-+ <p>
-+ implementation note: currently the function is only implemented
-+ for fontconfig.
-+ </p>
-+
-+ @param rInfo
-+ out of the FastPrintFontInfo structure the following
-+ fields will be used for the match:
-+ <ul>
-+ <li>family name</li>
-+ <li>italic</li>
-+ <li>width</li>
-+ <li>weight</li>
-+ <li>pitch</li>
-+ </ul>
-+
-+ @returns
-+ true if a match was found
-+ false else
-+ */
-+ bool matchFont( FastPrintFontInfo& rInfo );
- };
-
- } // namespace
-Index: inc/psprint/ppdparser.hxx
-===================================================================
-RCS file: /cvs/gsl/psprint/inc/psprint/ppdparser.hxx,v
-retrieving revision 1.5
-retrieving revision 1.6
-diff -w -u -r1.5 -r1.6
---- psprint/inc/psprint/ppdparser.hxx 17 Mar 2004 10:48:09 -0000 1.5
-+++ psprint/inc/psprint/ppdparser.hxx 23 Jul 2004 10:07:44 -0000 1.6
-@@ -223,7 +223,7 @@
- static void initPPDFiles();
- static String getPPDFile( const String& rFile );
- public:
-- static const PPDParser* getParser( String aFile );
-+ static const PPDParser* getParser( const String& rFile );
- static String getPPDPrinterName( const String& rFile );
- static void freeAll();
-
-Index: inc/psprint/printerinfomanager.hxx
-===================================================================
-RCS file: /cvs/gsl/psprint/inc/psprint/printerinfomanager.hxx,v
-retrieving revision 1.6
-retrieving revision 1.7
-diff -w -u -r1.6 -r1.7
---- psprint/inc/psprint/printerinfomanager.hxx 17 Mar 2004 10:48:31 -0000 1.6
-+++ psprint/inc/psprint/printerinfomanager.hxx 23 Jul 2004 09:58:25 -0000 1.7
-@@ -143,6 +143,11 @@
- m_aFontSubstitutes;
- std::hash_map< fontID, fontID >
- m_aFontSubstitutions;
-+
-+ PrinterInfo() :
-+ JobData(),
-+ m_bPerformFontSubstitution( false )
-+ {}
- };
-
- class PrinterInfoManager
-Index: source/fontmanager/fontcache.cxx
-===================================================================
-RCS file: /cvs/gsl/psprint/source/fontmanager/fontcache.cxx,v
-retrieving revision 1.10
-retrieving revision 1.11
-diff -w -u -r1.10 -r1.11
---- psprint/source/fontmanager/fontcache.cxx 17 Mar 2004 10:48:54 -0000 1.10
-+++ psprint/source/fontmanager/fontcache.cxx 5 Jul 2004 09:22:24 -0000 1.11
-@@ -549,6 +549,73 @@
- }
-
- /*
-+ * FontCache::equalsPrintFont
-+ */
-+bool FontCache::equalsPrintFont( const PrintFontManager::PrintFont* pLeft, PrintFontManager::PrintFont* pRight ) const
-+{
-+ if( pLeft->m_eType != pRight->m_eType )
-+ return false;
-+ switch( pLeft->m_eType )
-+ {
-+ case fonttype::TrueType:
-+ {
-+ const PrintFontManager::TrueTypeFontFile* pLT = static_cast<const PrintFontManager::TrueTypeFontFile*>(pLeft);
-+ const PrintFontManager::TrueTypeFontFile* pRT = static_cast<const PrintFontManager::TrueTypeFontFile*>(pRight);
-+ if( pRT->m_nDirectory != pLT->m_nDirectory ||
-+ pRT->m_aFontFile != pLT->m_aFontFile ||
-+ pRT->m_nCollectionEntry != pLT->m_nCollectionEntry ||
-+ pRT->m_nTypeFlags != pLT->m_nTypeFlags )
-+ return false;
-+ }
-+ break;
-+ case fonttype::Type1:
-+ {
-+ const PrintFontManager::Type1FontFile* pLT = static_cast<const PrintFontManager::Type1FontFile*>(pLeft);
-+ const PrintFontManager::Type1FontFile* pRT = static_cast<const PrintFontManager::Type1FontFile*>(pRight);
-+ if( pRT->m_nDirectory != pLT->m_nDirectory ||
-+ pRT->m_aFontFile != pLT->m_aFontFile ||
-+ pRT->m_aMetricFile != pLT->m_aMetricFile )
-+ return false;
-+ }
-+ break;
-+ case fonttype::Builtin:
-+ {
-+ const PrintFontManager::BuiltinFont* pLT = static_cast<const PrintFontManager::BuiltinFont*>(pLeft);
-+ const PrintFontManager::BuiltinFont* pRT = static_cast<const PrintFontManager::BuiltinFont*>(pRight);
-+ if( pRT->m_nDirectory != pLT->m_nDirectory ||
-+ pRT->m_aMetricFile != pLT->m_aMetricFile )
-+ return false;
-+ }
-+ break;
-+ default: break;
-+ }
-+ if( pRight->m_nFamilyName != pLeft->m_nFamilyName ||
-+ pRight->m_nPSName != pLeft->m_nPSName ||
-+ pRight->m_eItalic != pLeft->m_eItalic ||
-+ pRight->m_eWeight != pLeft->m_eWeight ||
-+ pRight->m_eWidth != pLeft->m_eWidth ||
-+ pRight->m_ePitch != pLeft->m_ePitch ||
-+ pRight->m_aEncoding != pLeft->m_aEncoding ||
-+ pRight->m_aGlobalMetricX != pLeft->m_aGlobalMetricX ||
-+ pRight->m_aGlobalMetricY != pLeft->m_aGlobalMetricY ||
-+ pRight->m_nAscend != pLeft->m_nAscend ||
-+ pRight->m_nDescend != pLeft->m_nDescend ||
-+ pRight->m_nLeading != pLeft->m_nLeading ||
-+ pRight->m_nXMin != pLeft->m_nXMin ||
-+ pRight->m_nYMin != pLeft->m_nYMin ||
-+ pRight->m_nXMax != pLeft->m_nXMax ||
-+ pRight->m_nYMax != pLeft->m_nYMax ||
-+ pRight->m_bHaveVerticalSubstitutedGlyphs != pLeft->m_bHaveVerticalSubstitutedGlyphs )
-+ return false;
-+ std::list< int >::const_iterator lit, rit;
-+ for( lit = pLeft->m_aAliases.begin(), rit = pRight->m_aAliases.begin();
-+ lit != pLeft->m_aAliases.end() && rit != pRight->m_aAliases.end() && (*lit) == (*rit);
-+ ++lit, ++rit )
-+ ;
-+ return lit == pLeft->m_aAliases.end() && rit == pRight->m_aAliases.end();
-+}
-+
-+/*
- * FontCache::clonePrintFont
- */
- PrintFontManager::PrintFont* FontCache::clonePrintFont( const PrintFontManager::PrintFont* pOldFont ) const
-@@ -650,7 +717,13 @@
- createCacheDir( nDirID );
-
- if( pCacheFont )
-+ {
-+ if( ! equalsPrintFont( pFont, pCacheFont ) )
-+ {
- copyPrintFont( pFont, pCacheFont );
-+ m_bDoFlush = true;
-+ }
-+ }
- else
- {
- pCacheFont = clonePrintFont( pFont );
-@@ -662,8 +735,8 @@
- struct stat aStat;
- if( ! stat( aPath.GetBuffer(), &aStat ) )
- m_aCache[nDirID].m_aEntries[aFile].m_nTimestamp = (sal_Int64)aStat.st_mtime;
-- }
- m_bDoFlush = true;
-+ }
- if( bFlush )
- flush();
- }
-Index: source/fontmanager/fontconfig.cxx
-===================================================================
-RCS file: /cvs/gsl/psprint/source/fontmanager/fontconfig.cxx,v
-retrieving revision 1.4
-retrieving revision 1.6
-diff -w -u -r1.4 -r1.6
---- psprint/source/fontmanager/fontconfig.cxx 1 Jun 2004 09:35:26 -0000 1.4
-+++ psprint/source/fontmanager/fontconfig.cxx 23 Jul 2004 10:08:07 -0000 1.6
-@@ -61,6 +61,10 @@
-
- #ifdef ENABLE_FONTCONFIG
- #include <fontconfig/fontconfig.h>
-+// be compatible with fontconfig 2.2.0 release
-+#ifndef FC_WEIGHT_BOOK
-+#define FC_WEIGHT_BOOK 75
-+#endif
- #else
- typedef void FcConfig;
- typedef void FcObjectSet;
-@@ -68,8 +72,8 @@
- typedef void FcFontSet;
- typedef int FcResult;
- typedef int FcBool;
-+typedef int FcMatchKind;
- typedef char FcChar8;
--
- #endif
-
- #include <cstdio>
-@@ -98,6 +102,7 @@
- class FontCfgWrapper
- {
- void* m_pLib;
-+ FcConfig* m_pDefConfig;
-
- FcConfig* (*m_pFcInitLoadConfigAndFonts)();
- FcObjectSet* (*m_pFcObjectSetVaBuild)(const char*,va_list);
-@@ -105,20 +110,34 @@
- FcPattern* (*m_pFcPatternCreate)();
- void (*m_pFcPatternDestroy)(FcPattern*);
- FcFontSet* (*m_pFcFontList)(FcConfig*,FcPattern*,FcObjectSet*);
-+ FcFontSet* (*m_pFcFontSetCreate)();
- void (*m_pFcFontSetDestroy)(FcFontSet*);
-+ FcBool (*m_pFcFontSetAdd)(FcFontSet*,FcPattern*);
- FcResult (*m_pFcPatternGetString)(const FcPattern*,const char*,int,FcChar8**);
- FcResult (*m_pFcPatternGetInteger)(const FcPattern*,const char*,int,int*);
- FcResult (*m_pFcPatternGetDouble)(const FcPattern*,const char*,int,double*);
- FcResult (*m_pFcPatternGetBool)(const FcPattern*,const char*,int,FcBool*);
-+ void (*m_pFcDefaultSubstitute)(FcPattern *);
-+ FcPattern* (*m_pFcFontMatch)(FcConfig*,FcPattern*,FcResult*);
-+ FcBool (*m_pFcConfigSubstitute)(FcConfig*,FcPattern*,FcMatchKind);
-+ FcBool (*m_pFcPatternAddInteger)(FcPattern*,const char*,int);
-+ FcBool (*m_pFcPatternAddString)(FcPattern*,const char*,const FcChar8*);
-
- void* loadSymbol( const char* );
--public:
-+
- FontCfgWrapper();
- ~FontCfgWrapper();
-
-+public:
-+ static FontCfgWrapper& get();
-+ static void release();
-+
- bool isValid() const
- { return m_pLib != NULL;}
-
-+ FcConfig* getDefConfig() { return m_pDefConfig; }
-+
-+
- FcConfig* FcInitLoadConfigAndFonts()
- { return m_pFcInitLoadConfigAndFonts(); }
-
-@@ -143,8 +162,12 @@
- FcFontSet* FcFontList( FcConfig* pConfig, FcPattern* pPattern, FcObjectSet* pSet )
- { return m_pFcFontList( pConfig, pPattern, pSet ); }
-
-+ FcFontSet* FcFontSetCreate()
-+ { return m_pFcFontSetCreate(); }
- void FcFontSetDestroy( FcFontSet* pSet )
- { m_pFcFontSetDestroy( pSet );}
-+ FcBool FcFontSetAdd( FcFontSet* pSet, FcPattern* pPattern )
-+ { return m_pFcFontSetAdd( pSet, pPattern ); }
-
- FcResult FcPatternGetString( const FcPattern* pPattern, const char* object, int n, FcChar8** s )
- { return m_pFcPatternGetString( pPattern, object, n, s ); }
-@@ -157,6 +180,16 @@
-
- FcResult FcPatternGetBool( const FcPattern* pPattern, const char* object, int n, FcBool* s )
- { return m_pFcPatternGetBool( pPattern, object, n, s ); }
-+ void FcDefaultSubstitute( FcPattern* pPattern )
-+ { m_pFcDefaultSubstitute( pPattern ); }
-+ FcPattern* FcFontMatch( FcConfig* pConfig, FcPattern* pPattern, FcResult* pResult )
-+ { return m_pFcFontMatch( pConfig, pPattern, pResult ); }
-+ FcBool FcConfigSubstitute( FcConfig* pConfig, FcPattern* pPattern, FcMatchKind eKind )
-+ { return m_pFcConfigSubstitute( pConfig, pPattern, eKind ); }
-+ FcBool FcPatternAddInteger( FcPattern* pPattern, const char* pObject, int nValue )
-+ { return m_pFcPatternAddInteger( pPattern, pObject, nValue ); }
-+ FcBool FcPatternAddString( FcPattern* pPattern, const char* pObject, const FcChar8* pString )
-+ { return m_pFcPatternAddString( pPattern, pObject, pString ); }
- };
-
- void* FontCfgWrapper::loadSymbol( const char* pSymbol )
-@@ -170,7 +203,8 @@
- }
-
- FontCfgWrapper::FontCfgWrapper()
-- : m_pLib( NULL )
-+ : m_pLib( NULL ),
-+ m_pDefConfig( NULL )
- {
- #ifdef ENABLE_FONTCONFIG
- OUString aLib( RTL_CONSTASCII_USTRINGPARAM( "libfontconfig.so.1" ) );
-@@ -202,8 +236,12 @@
- loadSymbol( "FcPatternDestroy" );
- m_pFcFontList = (FcFontSet*(*)(FcConfig*,FcPattern*,FcObjectSet*))
- loadSymbol( "FcFontList" );
-+ m_pFcFontSetCreate = (FcFontSet*(*)())
-+ loadSymbol( "FcFontSetCreate" );
- m_pFcFontSetDestroy = (void(*)(FcFontSet*))
- loadSymbol( "FcFontSetDestroy" );
-+ m_pFcFontSetAdd = (FcBool(*)(FcFontSet*,FcPattern*))
-+ loadSymbol( "FcFontSetAdd" );
- m_pFcPatternGetString = (FcResult(*)(const FcPattern*,const char*,int,FcChar8**))
- loadSymbol( "FcPatternGetString" );
- m_pFcPatternGetInteger = (FcResult(*)(const FcPattern*,const char*,int,int*))
-@@ -212,6 +250,16 @@
- loadSymbol( "FcPatternGetDouble" );
- m_pFcPatternGetBool = (FcResult(*)(const FcPattern*,const char*,int,FcBool*))
- loadSymbol( "FcPatternGetBool" );
-+ m_pFcDefaultSubstitute = (void(*)(FcPattern *))
-+ loadSymbol( "FcDefaultSubstitute" );
-+ m_pFcFontMatch = (FcPattern*(*)(FcConfig*,FcPattern*,FcResult*))
-+ loadSymbol( "FcFontMatch" );
-+ m_pFcConfigSubstitute = (FcBool(*)(FcConfig*,FcPattern*,FcMatchKind))
-+ loadSymbol( "FcConfigSubstitute" );
-+ m_pFcPatternAddInteger = (FcBool(*)(FcPattern*,const char*,int))
-+ loadSymbol( "FcPatternAddInteger" );
-+ m_pFcPatternAddString = (FcBool(*)(FcPattern*,const char*,const FcChar8*))
-+ loadSymbol( "FcPatternAddString" );
-
- if( ! (
- m_pFcInitLoadConfigAndFonts &&
-@@ -220,11 +268,18 @@
- m_pFcPatternCreate &&
- m_pFcPatternDestroy &&
- m_pFcFontList &&
-+ m_pFcFontSetCreate &&
- m_pFcFontSetDestroy &&
-+ m_pFcFontSetAdd &&
- m_pFcPatternGetString &&
- m_pFcPatternGetInteger &&
- m_pFcPatternGetDouble &&
-- m_pFcPatternGetBool
-+ m_pFcPatternGetBool &&
-+ m_pFcDefaultSubstitute &&
-+ m_pFcFontMatch &&
-+ m_pFcConfigSubstitute &&
-+ m_pFcPatternAddInteger &&
-+ m_pFcPatternAddString
- ) )
- {
- osl_unloadModule( m_pLib );
-@@ -233,6 +288,13 @@
- fprintf( stderr, "not all needed symbols were found in libfontconfig\n" );
- #endif
- }
-+
-+ m_pDefConfig = FcInitLoadConfigAndFonts();
-+ if( ! m_pDefConfig )
-+ {
-+ osl_unloadModule( m_pLib );
-+ m_pLib = NULL;
-+ }
- }
-
- FontCfgWrapper::~FontCfgWrapper()
-@@ -241,6 +303,24 @@
- osl_unloadModule( m_pLib );
- }
-
-+static FontCfgWrapper* pOneInstance = NULL;
-+
-+FontCfgWrapper& FontCfgWrapper::get()
-+{
-+ if( ! pOneInstance )
-+ pOneInstance = new FontCfgWrapper();
-+ return *pOneInstance;
-+}
-+
-+void FontCfgWrapper::release()
-+{
-+ if( pOneInstance )
-+ {
-+ delete pOneInstance;
-+ pOneInstance = NULL;
-+ }
-+}
-+
- /*
- * PrintFontManager::initFontconfig
- */
-@@ -249,24 +329,22 @@
- int nFonts = 0;
-
- #ifdef ENABLE_FONTCONFIG
-- FontCfgWrapper aWrapper;
-- if( ! aWrapper.isValid() )
-+ FontCfgWrapper& rWrapper = FontCfgWrapper::get();
-+ if( ! rWrapper.isValid() )
- return false;
-
-- FcConfig* pConfig = aWrapper.FcInitLoadConfigAndFonts();
-- if( ! pConfig )
-- return false;
--
-- FcObjectSet* pOSet = aWrapper.FcObjectSetBuild( FC_FAMILY,
-+ FcConfig* pConfig = rWrapper.getDefConfig();
-+ FcObjectSet* pOSet = rWrapper.FcObjectSetBuild( FC_FAMILY,
- FC_STYLE,
- FC_SLANT,
- FC_WEIGHT,
- FC_SPACING,
- FC_FILE,
- FC_OUTLINE,
-+ FC_INDEX,
- NULL );
-- FcPattern* pPattern = aWrapper.FcPatternCreate();
-- FcFontSet* pFSet = aWrapper.FcFontList( pConfig, pPattern, pOSet );
-+ FcPattern* pPattern = rWrapper.FcPatternCreate();
-+ FcFontSet* pFSet = rWrapper.FcFontList( pConfig, pPattern, pOSet );
-
- if( pFSet )
- {
-@@ -281,16 +359,17 @@
- int slant = 0;
- int weight = 0;
- int spacing = 0;
-+ int nCollectionEntry = -1;
- FcBool outline = false;
-
-- FcResult eFileRes = aWrapper.FcPatternGetString( pFSet->fonts[i], FC_FILE, 0, &file );
-- FcResult eFamilyRes = aWrapper.FcPatternGetString( pFSet->fonts[i], FC_FAMILY, 0, &family );
-- FcResult eStyleRes = aWrapper.FcPatternGetString( pFSet->fonts[i], FC_STYLE, 0, &style );
-- FcResult eSlantRes = aWrapper.FcPatternGetInteger( pFSet->fonts[i], FC_SLANT, 0, &slant );
-- FcResult eWeightRes = aWrapper.FcPatternGetInteger( pFSet->fonts[i], FC_WEIGHT, 0, &weight );
-- FcResult eSpacRes = aWrapper.FcPatternGetInteger( pFSet->fonts[i], FC_SPACING, 0, &spacing );
-- FcResult eOutRes = aWrapper.FcPatternGetBool( pFSet->fonts[i], FC_OUTLINE, 0, &outline );
--
-+ FcResult eFileRes = rWrapper.FcPatternGetString( pFSet->fonts[i], FC_FILE, 0, &file );
-+ FcResult eFamilyRes = rWrapper.FcPatternGetString( pFSet->fonts[i], FC_FAMILY, 0, &family );
-+ FcResult eStyleRes = rWrapper.FcPatternGetString( pFSet->fonts[i], FC_STYLE, 0, &style );
-+ FcResult eSlantRes = rWrapper.FcPatternGetInteger( pFSet->fonts[i], FC_SLANT, 0, &slant );
-+ FcResult eWeightRes = rWrapper.FcPatternGetInteger( pFSet->fonts[i], FC_WEIGHT, 0, &weight );
-+ FcResult eSpacRes = rWrapper.FcPatternGetInteger( pFSet->fonts[i], FC_SPACING, 0, &spacing );
-+ FcResult eOutRes = rWrapper.FcPatternGetBool( pFSet->fonts[i], FC_OUTLINE, 0, &outline );
-+ FcResult eIndexRes = rWrapper.FcPatternGetInteger( pFSet->fonts[i], FC_INDEX, 0, &nCollectionEntry );
-
- if( eFileRes != FcResultMatch || eFamilyRes != FcResultMatch || eOutRes != FcResultMatch )
- continue;
-@@ -327,81 +406,132 @@
- // not described by fontconfig (e.g. alias names, PSName)
- std::list< OString > aDummy;
- analyzeFontFile( nDirID, aBase, true, aDummy, aFonts );
-- }
- #if OSL_DEBUG_LEVEL > 1
-- if( aFonts.size() > 1 )
-- fprintf( stderr, "Warning: file contains more than one font, updating all to fontconfig data\n" );
-- else if( aFonts.empty() )
-+ if( aFonts.empty() )
- fprintf( stderr, "Warning: file is unusable to psprint\n" );
- #endif
-+ }
-+ if( aFonts.empty() )
-+ continue;
-+
- int nFamilyName = m_pAtoms->getAtom( ATOM_FAMILYNAME, OStringToOUString( OString( (sal_Char*)family ), osl_getThreadTextEncoding() ), sal_True );
-+ PrintFont* pUpdate = aFonts.front();
-+ if( ++aFonts.begin() != aFonts.end() ) // more than one font
-+ {
-+ // a collection entry, get the correct index
-+ if( eIndexRes == FcResultMatch && nCollectionEntry != -1 )
-+ {
-+ for( std::list< PrintFont* >::iterator it = aFonts.begin(); it != aFonts.end(); ++it )
-+ {
-+ if( (*it)->m_eType == fonttype::TrueType &&
-+ static_cast<TrueTypeFontFile*>(*it)->m_nCollectionEntry == nCollectionEntry )
-+ {
-+ pUpdate = *it;
-+ break;
-+ }
-+ }
-+ // update collection entry
-+ // additional entries will be created in the cache
-+ // if this is a new index (that is if the loop above
-+ // ran to the end of the list)
-+ if( pUpdate->m_eType == fonttype::TrueType ) // sanity check, this should always be the case here
-+ static_cast<TrueTypeFontFile*>(pUpdate)->m_nCollectionEntry = nCollectionEntry;
-+ }
-+ else
-+ {
-+#if OSL_DEBUG_LEVEL > 1
-+ fprintf( stderr, "multiple fonts for file, but no index in fontconfig pattern ! (index res = %d collection entry = %d\nfile will not be used\n", eIndexRes, nCollectionEntry );
-+#endif
-+ // we have found more than one font in this file
-+ // but fontconfig will not tell us which index is meant
-+ // -> something is in disorder, do not use this font
-+ pUpdate = NULL;
-+ }
-+ }
-
-- for( std::list< PrintFont* >::iterator it = aFonts.begin();
-- it != aFonts.end(); ++it )
-+ if( pUpdate )
- {
- // set family name
-- if( (*it)->m_nFamilyName != nFamilyName )
-+ if( pUpdate->m_nFamilyName != nFamilyName )
- {
-- (*it)->m_aAliases.remove( (*it)->m_nFamilyName );
-- (*it)->m_aAliases.push_back( (*it)->m_nFamilyName );
-- (*it)->m_aAliases.remove( nFamilyName );
-- (*it)->m_nFamilyName = nFamilyName;
-+ pUpdate->m_aAliases.remove( pUpdate->m_nFamilyName );
-+ pUpdate->m_aAliases.push_back( pUpdate->m_nFamilyName );
-+ pUpdate->m_aAliases.remove( nFamilyName );
-+ pUpdate->m_nFamilyName = nFamilyName;
- }
- if( eWeightRes == FcResultMatch )
- {
- // set weight
-- if( weight == FC_WEIGHT_LIGHT )
-- (*it)->m_eWeight = weight::Light;
-- else if( weight == FC_WEIGHT_MEDIUM )
-- (*it)->m_eWeight = weight::Medium;
-- else if( weight == FC_WEIGHT_DEMIBOLD )
-- (*it)->m_eWeight = weight::SemiBold;
-- else if( weight == FC_WEIGHT_BOLD )
-- (*it)->m_eWeight = weight::Bold;
-- else if( weight == FC_WEIGHT_BLACK )
-- (*it)->m_eWeight = weight::Black;
-+ if( weight <= FC_WEIGHT_THIN )
-+ pUpdate->m_eWeight = weight::Thin;
-+ else if( weight <= FC_WEIGHT_ULTRALIGHT )
-+ pUpdate->m_eWeight = weight::UltraLight;
-+ else if( weight <= FC_WEIGHT_LIGHT )
-+ pUpdate->m_eWeight = weight::Light;
-+ else if( weight <= FC_WEIGHT_BOOK )
-+ pUpdate->m_eWeight = weight::SemiLight;
-+ else if( weight <= FC_WEIGHT_NORMAL )
-+ pUpdate->m_eWeight = weight::Normal;
-+ else if( weight <= FC_WEIGHT_MEDIUM )
-+ pUpdate->m_eWeight = weight::Medium;
-+ else if( weight <= FC_WEIGHT_SEMIBOLD )
-+ pUpdate->m_eWeight = weight::SemiBold;
-+ else if( weight <= FC_WEIGHT_BOLD )
-+ pUpdate->m_eWeight = weight::Bold;
-+ else if( weight <= FC_WEIGHT_ULTRABOLD )
-+ pUpdate->m_eWeight = weight::UltraBold;
-+ else
-+ pUpdate->m_eWeight = weight::Black;
- }
- if( eSpacRes == FcResultMatch )
- {
- // set pitch
- if( spacing == FC_PROPORTIONAL )
-- (*it)->m_ePitch = pitch::Variable;
-+ pUpdate->m_ePitch = pitch::Variable;
- else if( spacing == FC_MONO || spacing == FC_CHARCELL )
-- (*it)->m_ePitch = pitch::Fixed;
-+ pUpdate->m_ePitch = pitch::Fixed;
- }
- if( eSlantRes == FcResultMatch )
- {
- // set italic
- if( slant == FC_SLANT_ROMAN )
-- (*it)->m_eItalic = italic::Upright;
-+ pUpdate->m_eItalic = italic::Upright;
- else if( slant == FC_SLANT_ITALIC )
-- (*it)->m_eItalic = italic::Italic;
-+ pUpdate->m_eItalic = italic::Italic;
- else if( slant == FC_SLANT_OBLIQUE )
-- (*it)->m_eItalic = italic::Oblique;
-+ pUpdate->m_eItalic = italic::Oblique;
- }
-
- // update font cache
-- m_pFontCache->updateFontCacheEntry( *it, false );
-+ m_pFontCache->updateFontCacheEntry( pUpdate, false );
- // sort into known fonts
- fontID aFont = m_nNextFontID++;
-- m_aFonts[ aFont ] = *it;
-+ m_aFonts[ aFont ] = pUpdate;
- m_aFontFileToFontID[ aBase ].insert( aFont );
- nFonts++;
- #if OSL_DEBUG_LEVEL > 1
- fprintf( stderr, "inserted font %s as fontID %d\n", family, aFont );
- #endif
- }
-+ // clean up the fonts we did not put into the list
-+ for( std::list< PrintFont* >::iterator it = aFonts.begin(); it != aFonts.end(); ++it )
-+ {
-+ if( *it != pUpdate )
-+ {
-+ m_pFontCache->updateFontCacheEntry( *it, false ); // prepare a cache entry for a collection item
-+ delete *it;
-+ }
-+ }
- }
- }
--
-
- // cleanup
- if( pPattern )
-- aWrapper.FcPatternDestroy( pPattern );
-+ rWrapper.FcPatternDestroy( pPattern );
- if( pFSet )
-- aWrapper.FcFontSetDestroy( pFSet );
-+ rWrapper.FcFontSetDestroy( pFSet );
- if( pOSet )
-- aWrapper.FcObjectSetDestroy( pOSet );
-+ rWrapper.FcObjectSetDestroy( pOSet );
-
- // how does one get rid of the config ?
- #if OSL_DEBUG_LEVEL > 1
-@@ -409,4 +539,125 @@
- #endif
- #endif // ENABLE_FONTCONFIG
- return nFonts != 0;
-+}
-+
-+void PrintFontManager::deinitFontconfig()
-+{
-+ FontCfgWrapper::release();
-+}
-+
-+bool PrintFontManager::matchFont( FastPrintFontInfo& rInfo )
-+{
-+#ifdef ENABLE_FONTCONFIG
-+ FontCfgWrapper& rWrapper = FontCfgWrapper::get();
-+ if( ! rWrapper.isValid() )
-+ return false;
-+
-+ FcConfig* pConfig = rWrapper.getDefConfig();
-+ FcPattern* pPattern = rWrapper.FcPatternCreate();
-+
-+ // populate pattern with font characteristics
-+ OString aFamily = OUStringToOString( rInfo.m_aFamilyName, RTL_TEXTENCODING_UTF8 );
-+ if( aFamily.getLength() )
-+ rWrapper.FcPatternAddString( pPattern, FC_FAMILY, (FcChar8*)aFamily.getStr() );
-+ if( rInfo.m_eItalic != italic::Unknown )
-+ {
-+ int nSlant = FC_SLANT_ROMAN;
-+ switch( rInfo.m_eItalic )
-+ {
-+ case italic::Italic: nSlant = FC_SLANT_ITALIC;break;
-+ case italic::Oblique: nSlant = FC_SLANT_OBLIQUE;break;
-+ default:
-+ break;
-+ }
-+ rWrapper.FcPatternAddInteger( pPattern, FC_SLANT, nSlant );
-+ }
-+ if( rInfo.m_eWeight != weight::Unknown )
-+ {
-+ int nWeight = FC_WEIGHT_NORMAL;
-+ switch( rInfo.m_eWeight )
-+ {
-+ case weight::Thin: nWeight = FC_WEIGHT_THIN;break;
-+ case weight::UltraLight: nWeight = FC_WEIGHT_ULTRALIGHT;break;
-+ case weight::Light: nWeight = FC_WEIGHT_LIGHT;break;
-+ case weight::SemiLight: nWeight = FC_WEIGHT_BOOK;break;
-+ case weight::Normal: nWeight = FC_WEIGHT_NORMAL;break;
-+ case weight::Medium: nWeight = FC_WEIGHT_MEDIUM;break;
-+ case weight::SemiBold: nWeight = FC_WEIGHT_SEMIBOLD;break;
-+ case weight::Bold: nWeight = FC_WEIGHT_BOLD;break;
-+ case weight::UltraBold: nWeight = FC_WEIGHT_ULTRABOLD;break;
-+ case weight::Black: nWeight = FC_WEIGHT_BLACK;break;
-+ default:
-+ break;
-+ }
-+ rWrapper.FcPatternAddInteger( pPattern, FC_WEIGHT, nWeight );
-+ }
-+ if( rInfo.m_eWidth != width::Unknown )
-+ {
-+ int nWidth = FC_WIDTH_NORMAL;
-+ switch( rInfo.m_eWidth )
-+ {
-+ case width::UltraCondensed: nWidth = FC_WIDTH_ULTRACONDENSED;break;
-+ case width::ExtraCondensed: nWidth = FC_WIDTH_EXTRACONDENSED;break;
-+ case width::Condensed: nWidth = FC_WIDTH_CONDENSED;break;
-+ case width::SemiCondensed: nWidth = FC_WIDTH_SEMICONDENSED;break;
-+ case width::Normal: nWidth = FC_WIDTH_NORMAL;break;
-+ case width::SemiExpanded: nWidth = FC_WIDTH_SEMIEXPANDED;break;
-+ case width::Expanded: nWidth = FC_WIDTH_EXPANDED;break;
-+ case width::ExtraExpanded: nWidth = FC_WIDTH_EXTRAEXPANDED;break;
-+ case width::UltraExpanded: nWidth = FC_WIDTH_ULTRACONDENSED;break;
-+ default:
-+ break;
-+ }
-+ rWrapper.FcPatternAddInteger( pPattern, FC_WIDTH, nWidth );
-+ }
-+ if( rInfo.m_ePitch != pitch::Unknown )
-+ {
-+ int nSpacing = FC_PROPORTIONAL;
-+ switch( rInfo.m_ePitch )
-+ {
-+ case pitch::Fixed: nSpacing = FC_MONO;break;
-+ case pitch::Variable: nSpacing = FC_PROPORTIONAL;break;
-+ default:
-+ break;
-+ }
-+ rWrapper.FcPatternAddInteger( pPattern, FC_SPACING, nSpacing );
-+ }
-+
-+ rWrapper.FcConfigSubstitute( pConfig, pPattern, FcMatchPattern );
-+ rWrapper.FcDefaultSubstitute( pPattern );
-+ FcResult eResult = FcResultNoMatch;
-+ FcPattern* pResult = rWrapper.FcFontMatch( pConfig, pPattern, &eResult );
-+ bool bSuccess = false;
-+ if( pResult )
-+ {
-+ FcFontSet* pSet = rWrapper.FcFontSetCreate();
-+ rWrapper.FcFontSetAdd( pSet, pResult );
-+ if( pSet->nfont > 0 )
-+ {
-+ //extract the closest match
-+ FcChar8* file = NULL;
-+ FcResult eFileRes = rWrapper.FcPatternGetString( pSet->fonts[0], FC_FILE, 0, &file );
-+ if( eFileRes == FcResultMatch )
-+ {
-+ OString aDir, aBase, aOrgPath( (sal_Char*)file );
-+ splitPath( aOrgPath, aDir, aBase );
-+ int nDirID = getDirectoryAtom( aDir, true );
-+ fontID aFont = findFontFileID( nDirID, aBase );
-+ if( aFont > 0 )
-+ bSuccess = getFontFastInfo( aFont, rInfo );
-+ }
-+ }
-+ // info: destroying the pSet destroys pResult implicitly
-+ // since pResult was "added" to pSet
-+ rWrapper.FcFontSetDestroy( pSet );
-+ }
-+
-+ // cleanup
-+ rWrapper.FcPatternDestroy( pPattern );
-+
-+ return bSuccess;
-+#else
-+ return false;
-+#endif
- }
-Index: source/fontmanager/fontmanager.cxx
-===================================================================
-RCS file: /cvs/gsl/psprint/source/fontmanager/fontmanager.cxx,v
-retrieving revision 1.50
-retrieving revision 1.51
-diff -w -u -r1.50 -r1.51
---- psprint/source/fontmanager/fontmanager.cxx 17 Jun 2004 13:51:09 -0000 1.50
-+++ psprint/source/fontmanager/fontmanager.cxx 5 Jul 2004 09:22:51 -0000 1.51
-@@ -581,10 +581,10 @@
- case 2:
- {
- const sal_uInt8* pSubTable = pTable;
-- sal_uInt16 nRowWidth = getUInt16BE( pTable );
-+ /*sal_uInt16 nRowWidth =*/ getUInt16BE( pTable );
- sal_uInt16 nOfLeft = getUInt16BE( pTable );
- sal_uInt16 nOfRight = getUInt16BE( pTable );
-- sal_uInt16 nOfArray = getUInt16BE( pTable );
-+ /*sal_uInt16 nOfArray =*/ getUInt16BE( pTable );
- const sal_uInt8* pTmp = pSubTable + nOfLeft;
- sal_uInt16 nFirstLeft = getUInt16BE( pTmp );
- sal_uInt16 nLastLeft = getUInt16BE( pTmp ) + nFirstLeft - 1;
-@@ -592,7 +592,7 @@
- sal_uInt16 nFirstRight = getUInt16BE( pTmp );
- sal_uInt16 nLastRight = getUInt16BE( pTmp ) + nFirstRight -1;
-
-- int nPairs = (int)(nLastLeft-nFirstLeft+1)*(int)(nLastRight-nFirstRight+1);
-+ // int nPairs = (int)(nLastLeft-nFirstLeft+1)*(int)(nLastRight-nFirstRight+1);
- for( aPair.first = nFirstLeft; aPair.first < nLastLeft; aPair.first++ )
- {
- for( aPair.second = 0; aPair.second < nLastRight; aPair.second++ )
-@@ -634,18 +634,18 @@
-
- // Loop through each of the 'kern' subtables
- KernPair aPair;
-- for( i = 0; i < pImplTTFont->nkern; i++ )
-+ for( i = 0; (unsigned int)i < pImplTTFont->nkern; i++ )
- {
- const sal_uInt8* pTable = pImplTTFont->kerntables[i];
-
-- sal_uInt32 nLength = getUInt32BE( pTable );
-+ /*sal_uInt32 nLength =*/ getUInt32BE( pTable );
- sal_uInt16 nCoverage = getUInt16BE( pTable );
-- sal_uInt16 nTupleIndex = getUInt16BE( pTable );
-+ /*sal_uInt16 nTupleIndex =*/ getUInt16BE( pTable );
-
- // Get kerning type
-- sal_Bool bKernVertical = nCoverage & 0x8000;
-- sal_Bool bKernCrossStream = nCoverage & 0x4000;
-- sal_Bool bKernVariation = nCoverage & 0x2000;
-+ // sal_Bool bKernVertical = nCoverage & 0x8000;
-+ // sal_Bool bKernCrossStream = nCoverage & 0x4000;
-+ // sal_Bool bKernVariation = nCoverage & 0x2000;
-
- // Kerning sub-table format, 0 through 3
- sal_uInt8 nSubTableFormat = nCoverage & 0x00FF;
-@@ -1154,6 +1154,7 @@
-
- PrintFontManager::~PrintFontManager()
- {
-+ deinitFontconfig();
- for( ::std::hash_map< fontID, PrintFont* >::const_iterator it = m_aFonts.begin(); it != m_aFonts.end(); ++it )
- delete (*it).second;
- delete m_pAtoms;
-@@ -1238,7 +1239,7 @@
- // first look for an adjacent file
- static const char* pSuffix[] = { ".afm", ".AFM" };
-
-- for( int i = 0; i < sizeof(pSuffix)/sizeof(pSuffix[0]); i++ )
-+ for( unsigned int i = 0; i < sizeof(pSuffix)/sizeof(pSuffix[0]); i++ )
- {
- ByteString aName( rFontFile );
- aName.Erase( aName.Len()-4 );
-@@ -1549,6 +1550,8 @@
- break;
- case fonttype::TrueType:
- static_cast<TrueTypeFontFile*>(pFont)->m_aXLFD = rXLFDs.front();
-+ break;
-+ default:
- break;
- }
- }
-Index: source/helper/ppdparser.cxx
-===================================================================
-RCS file: /cvs/gsl/psprint/source/helper/ppdparser.cxx,v
-retrieving revision 1.14
-retrieving revision 1.16
-diff -w -u -r1.14 -r1.16
---- psprint/source/helper/ppdparser.cxx 18 May 2004 10:45:57 -0000 1.14
-+++ psprint/source/helper/ppdparser.cxx 30 Jul 2004 15:14:16 -0000 1.16
-@@ -68,7 +68,7 @@
- namespace psp { class PPDKey; }
-
- namespace _STL {
--struct hash< const psp::PPDKey* >
-+template<> struct hash< const psp::PPDKey* >
- {
- size_t operator()( const psp::PPDKey * pKey) const
- { return (size_t)pKey; }
-@@ -268,16 +268,19 @@
- return aName;
- }
-
--const PPDParser* PPDParser::getParser( String aFile )
-+const PPDParser* PPDParser::getParser( const String& rFile )
- {
- static ::osl::Mutex aMutex;
- ::osl::Guard< ::osl::Mutex > aGuard( aMutex );
-
-- if( aFile.CompareToAscii( "CUPS:", 5 ) != COMPARE_EQUAL )
-- aFile = getPPDFile( aFile );
-+ String aFile = rFile;
-+ if( rFile.CompareToAscii( "CUPS:", 5 ) != COMPARE_EQUAL )
-+ aFile = getPPDFile( rFile );
- if( ! aFile.Len() )
- {
-- fprintf( stderr, "Could not get printer PPD file!\n" );
-+#if OSL_DEBUG_LEVEL > 1
-+ fprintf( stderr, "Could not get printer PPD file \"%s\" !\n", OUStringToOString( rFile, osl_getThreadTextEncoding() ).getStr() );
-+#endif
- return NULL;
- }
-
-@@ -294,12 +297,16 @@
- if( rMgr.getType() == PrinterInfoManager::CUPS )
- {
- pNewParser = const_cast<PPDParser*>(static_cast<CUPSManager&>(rMgr).createCUPSParser( aFile ));
-- if( pNewParser )
-- pNewParser->m_aFile = aFile;
- }
- }
- if( pNewParser )
-- aAllParsers.push_back( pNewParser );
-+ {
-+ // this may actually be the SGENPRT parser,
-+ // so ensure uniquness here
-+ aAllParsers.remove( pNewParser );
-+ // insert new parser to list
-+ aAllParsers.push_front( pNewParser );
-+ }
- return pNewParser;
- }
-
-
-
-Index: source/printer/printerinfomanager.cxx
-===================================================================
-RCS file: /cvs/gsl/psprint/source/printer/printerinfomanager.cxx,v
-retrieving revision 1.23
-retrieving revision 1.25
-diff -w -u -r1.23 -r1.25
---- psprint/source/printer/printerinfomanager.cxx 17 Mar 2004 10:51:45 -0000 1.23
-+++ psprint/source/printer/printerinfomanager.cxx 23 Jul 2004 10:09:11 -0000 1.25
-@@ -133,6 +133,9 @@
-
- if( pManager )
- pManager->initialize();
-+#if OSL_DEBUG_LEVEL > 1
-+ fprintf( stderr, "PrinterInfoManager::get create Manager of type %d\n", pManager->getType() );
-+#endif
- }
-
- return *pManager;
-@@ -1161,7 +1164,7 @@
- if( nSubstitute != -1 )
- {
- rInfo.m_aFontSubstitutions[ it->m_nID ] = nSubstitute;
--#if OSL_DEBUG_LEVEL > 1
-+#if OSL_DEBUG_LEVEL > 2
- FastPrintFontInfo aInfo;
- rFontManager.getFontFastInfo( nSubstitute, aInfo );
- fprintf( stderr,
-@@ -1220,7 +1223,8 @@
- {
- const PrinterInfo& rPrinterInfo = getPrinterInfo (rPrintername);
- const rtl::OUString& rCommand = rPrinterInfo.m_aCommand;
-- const rtl::OString aShellCommand = OUStringToOString (rCommand, RTL_TEXTENCODING_ISO_8859_1);
-+ rtl::OString aShellCommand = OUStringToOString (rCommand, RTL_TEXTENCODING_ISO_8859_1);
-+ aShellCommand += rtl::OString( " 2>/dev/null" );
-
- return popen (aShellCommand.getStr(), "w");
- }
-@@ -1282,7 +1286,7 @@
- const char* pPrintCommand;
- const char* pForeToken;
- const char* pAftToken;
-- int nForeTokenCount;
-+ unsigned int nForeTokenCount;
- };
-
- static const struct SystemCommandParameters aParms[] =
-@@ -1312,7 +1316,7 @@
- {
- char pBuffer[1024];
- ByteString aPrtQueueCmd, aForeToken, aAftToken, aString;
-- int nForeTokenCount = 0, i;
-+ unsigned int nForeTokenCount = 0, i;
- FILE *pPipe;
- bool bSuccess = false;
- std::list< ByteString > aLines;
-@@ -1355,6 +1359,7 @@
- else
- #endif
- {
-+ aPrtQueueCmd += ByteString( " 2>/dev/null" );
- if( pPipe = popen( aPrtQueueCmd.GetBuffer(), "r" ) )
- {
- while( fgets( pBuffer, 1024, pPipe ) )
-@@ -1403,7 +1408,7 @@
- ByteString aOutLine( aLines.front() );
- aLines.pop_front();
-
-- for( int i = 0; i < nForeTokenCount && nPos != STRING_NOTFOUND; i++ )
-+ for( i = 0; i < nForeTokenCount && nPos != STRING_NOTFOUND; i++ )
- {
- nPos = aOutLine.Search( aForeToken, nPos );
- if( nPos != STRING_NOTFOUND && aOutLine.Len() >= nPos+aForeToken.Len() )
-@@ -1496,6 +1501,7 @@
- return( applePrintSysType );
- }
-
-+#if 0
- /*
- * macxp_GetSystemPrintFormat()
- *
-@@ -1509,7 +1515,7 @@
- * therefore the environment variable OOO_PRINT_PS_DIRECTLY, if set,
- * forces OOo to NOT undergo the PS -> PDF translation by default.
- */
--/*sal_Int32 macxp_GetSystemPrintFormat( void )
-+sal_Int32 macxp_GetSystemPrintFormat( void )
- {
- int printFormat;
- int err;
-@@ -1520,15 +1526,15 @@
-
- /* Check for presence of OSAScript executable, which is
- * believed to be MacOS X only (ie not present on Darwin).
-- *
-+ */
- err = stat( "/usr/bin/osascript", &status );
- if ( err == 0 )
- {
-- /* Check to see if the user wants to print PS anyway *
-+ /* Check to see if the user wants to print PS anyway */
- pPDFOverride = getenv( "OOO_PRINT_PS_DIRECTLY" );
- if ( pPDFOverride == NULL )
- {
-- /* Now we have to check for ps2pdf to make sure we can do the conversion *
-+ /* Now we have to check for ps2pdf to make sure we can do the conversion */
- err = stat( kApplePS2PDFLocation, &status );
- if ( err == 0 )
- {
-@@ -1541,6 +1547,7 @@
- }
-
- return( printFormat );
--}*/
-+}
-+#endif
- #endif
-
---- ../OOO_1_1_3_fix2/psprint/source/printer/cupsmgr.cxx 2004-08-30 16:46:55.000000000 +0100
-+++ psprint/source/printer/cupsmgr.cxx 2004-09-07 11:18:11.200669640 +0100
-@@ -1,10 +1,10 @@
- /*************************************************************************
- *
-- *
-+ * $RCSfile$
- *
-- *
-+ * $Revision$
- *
-- *
-+ * last change: $Author$ $Date$
- *
- * The Contents of this file are made available subject to the terms of
- * either of the following licenses
-@@ -70,6 +70,7 @@
-
- #include <osl/thread.h>
- #include <osl/diagnose.h>
-+#include <osl/conditn.hxx>
- #include <rtl/ustrbuf.hxx>
- #include <cupsmgr.hxx>
-
-@@ -78,20 +79,21 @@
- class CUPSWrapper
- {
- oslModule m_pLib;
-+ osl::Mutex m_aGetPPDMutex;
-
- int (*m_pcupsPrintFile)(const char*, const char*, const char*, int, cups_option_t*);
- int (*m_pcupsGetDests)(cups_dest_t**);
- void (*m_pcupsSetDests)(int,cups_dest_t*);
- void (*m_pcupsFreeDests)(int,cups_dest_t*);
-- const char* (*m_pcupsGetPPD)(const char*);
-+ const char* (*m_pcupsGetPPD)(const char*);
- int (*m_pcupsMarkOptions)(ppd_file_t*,int,cups_option_t*);
- int (*m_pcupsAddOption)(const char*,const char*,int,cups_option_t**);
- void (*m_pcupsFreeOptions)(int,cups_option_t*);
- ppd_file_t* (*m_pppdOpenFile)(const char* pFile);
- void (*m_pppdClose)(ppd_file_t*);
-- const char* (*m_pcupsServer)();
-+ const char* (*m_pcupsServer)();
- void (*m_pcupsSetPasswordCB)(const char*(cb)(const char*));
-- const char* (*m_pcupsUser)();
-+ const char* (*m_pcupsUser)();
- void (*m_pcupsSetUser)(const char*);
-
- void* loadSymbol( const char* );
-@@ -117,8 +119,7 @@
- cups_option_t* pOptions )
- { return m_pcupsPrintFile( pPrinter, pFileName, pTitle, nOptions, pOptions ); }
-
-- const char* cupsGetPPD( const char* pPrinter )
-- { return m_pcupsGetPPD( pPrinter ); }
-+ const char* cupsGetPPD( const char* pPrinter );
-
- int cupsMarkOptions(ppd_file_t* pPPD, int nOptions, cups_option_t* pOptions )
- { return m_pcupsMarkOptions(pPPD, nOptions, pOptions); }
-@@ -251,6 +252,70 @@
- return m_pLib != NULL;
- }
-
-+static struct GetPPDAttribs
-+{
-+ const char* (*pFunction)(const char*);
-+ osl::Condition m_aCondition;
-+ const char* m_pParameter;
-+ const char* m_pResult;
-+ oslThread m_aThread;
-+} *pAttribs = NULL;
-+
-+extern "C" {
-+ static void getPPDWorker(void*)
-+ {
-+ pAttribs->m_pResult = pAttribs->pFunction( pAttribs->m_pParameter );
-+ if( pAttribs->m_aCondition.check() )
-+ {
-+ // timed out, unlink file
-+ if( pAttribs->m_pResult )
-+ unlink( pAttribs->m_pResult );
-+ delete pAttribs;
-+ pAttribs = NULL;
-+ }
-+ else
-+ pAttribs->m_aCondition.set();
-+ }
-+}
-+
-+const char* CUPSWrapper::cupsGetPPD( const char* pPrinter )
-+{
-+ const char* pResult = NULL;
-+
-+ // if one thread hangs in cupsGetPPD already, don't start another
-+ if( ! pAttribs )
-+ {
-+ pAttribs = new GetPPDAttribs();
-+ pAttribs->pFunction = m_pcupsGetPPD;
-+ pAttribs->m_aCondition.reset();
-+ pAttribs->m_pParameter = pPrinter;
-+ pAttribs->m_pResult = NULL;
-+ pAttribs->m_aThread = osl_createThread( getPPDWorker, NULL );
-+
-+ TimeValue aValue;
-+ aValue.Seconds = 5;
-+ aValue.Nanosec = 0;
-+ if( pAttribs->m_aCondition.wait( &aValue ) == Condition::result_ok )
-+ {
-+ osl_destroyThread( pAttribs->m_aThread );
-+ pResult = pAttribs->m_pResult;
-+ delete pAttribs;
-+ pAttribs = NULL;
-+ }
-+ else
-+ {
-+#if OSL_DEBUG_LEVEL > 1
-+ fprintf( stderr, "cupsGetPPD %s timed out\n", pPrinter );
-+#endif
-+ // should the thread awake again notify it to clean up itself
-+ pAttribs->m_aCondition.set();
-+ osl_destroyThread( pAttribs->m_aThread );
-+ }
-+ }
-+
-+ return pResult;
-+}
-+
- static const char* setPasswordCallback( const char* pIn )
- {
- const char* pRet = NULL;
-@@ -276,66 +341,91 @@
- // try to load CUPS
- CUPSWrapper* pWrapper = new CUPSWrapper();
- if( pWrapper->isValid() )
-- {
-- // check if there are any dests; if not
-- // CUPS is unconfigured (at least) and
-- // should not be used
-- cups_dest_t* pDests = NULL;
-- int nDests = pWrapper->cupsGetDests( &pDests );
-- if( nDests && pDests )
-- pManager = new CUPSManager( pWrapper, nDests, pDests );
--#if OSL_DEBUG_LEVEL > 1
-- else
-- fprintf( stderr, "CUPS loaded but no dests -> CUPS disabled\n" );
--#endif
-- }
-- // something failed, don't use CUPS
-- if( ! pManager )
-+ pManager = new CUPSManager( pWrapper );
-+ else
- delete pWrapper;
- }
- #endif
- return pManager;
- }
-
--CUPSManager::CUPSManager( CUPSWrapper* pWrapper, int nDests, void* pDests ) :
-+CUPSManager::CUPSManager( CUPSWrapper* pWrapper ) :
- PrinterInfoManager( CUPS ),
- m_pCUPSWrapper( pWrapper ),
-- m_nDests( nDests ),
-- m_pDests( pDests )
-+ m_nDests( 0 ),
-+ m_pDests( NULL ),
-+ m_bNewDests( false )
- {
-- m_bFirstDest = (nDests && pDests);
-+ m_aDestThread = osl_createThread( runDestThread, this );
- }
-
- CUPSManager::~CUPSManager()
- {
-+ if( m_aDestThread )
-+ {
-+ // if the thread is still running here, then
-+ // cupsGetDests is hung; terminate the thread instead of joining
-+ osl_terminateThread( m_aDestThread );
-+ osl_destroyThread( m_aDestThread );
-+ }
-+
- if( m_nDests && m_pDests )
- m_pCUPSWrapper->cupsFreeDests( m_nDests, (cups_dest_t*)m_pDests );
- delete m_pCUPSWrapper;
- }
-
-+void CUPSManager::runDestThread( void* pThis )
-+{
-+ ((CUPSManager*)pThis)->runDests();
-+}
-+
-+void CUPSManager::runDests()
-+{
-+#if OSL_DEBUG_LEVEL > 1
-+ fprintf( stderr, "starting cupsGetDests\n" );
-+#endif
-+ osl::MutexGuard aGuard( m_aCUPSMutex );
-+
-+ m_nDests = m_pCUPSWrapper->cupsGetDests( (cups_dest_t**)&m_pDests );
-+ m_bNewDests = true;
-+#if OSL_DEBUG_LEVEL > 1
-+ fprintf( stderr, "finished cupsGetDests\n" );
-+#endif
-+}
-+
- void CUPSManager::initialize()
- {
-+ // get normal printers, clear printer list
-+ PrinterInfoManager::initialize();
-+
- #ifdef ENABLE_CUPS
-- // there may have been a previous run
-- if( m_nDests && m_pDests && !m_bFirstDest )
-- m_pCUPSWrapper->cupsFreeDests( m_nDests, (cups_dest_t*)m_pDests );
-- m_aPrinters.clear();
-+ // check whether thread has completed
-+ // if not behave like old printing system
-+ osl::MutexGuard aGuard( m_aCUPSMutex );
-+
-+ if( ! (m_nDests && m_pDests ) )
-+ return;
-+
-+ // dest thread has run, clean up
-+ if( m_aDestThread )
-+ {
-+ osl_joinWithThread( m_aDestThread );
-+ osl_destroyThread( m_aDestThread );
-+ m_aDestThread = NULL;
-+ }
-+
-+ // clear old stuff
- m_aCUPSDestMap.clear();
-
-- // get normal printers
-- PrinterInfoManager::initialize();
-+#if 0
-+ // update dests
-+ m_pCUPSWrapper->cupsFreeDests( m_nDests, (cups_dest_t*)m_pDests );
-+ m_nDests = m_pCUPSWrapper->cupsGetDests( (cups_dest_t**)&m_pDests );
-+#endif
-+ m_bNewDests = false;
-
- rtl_TextEncoding aEncoding = osl_getThreadTextEncoding();
-- int nPrinter = 0;
--
-- // get CUPS dests if this is not the first run after the constructor
-- // in which case m_pDests was already intialized
-- if( m_bFirstDest && m_nDests && m_pDests )
-- nPrinter = m_nDests;
-- else
-- m_nDests = nPrinter = m_pCUPSWrapper->cupsGetDests( (cups_dest_t**)&m_pDests );
--
-- m_bFirstDest = false;
-+ int nPrinter = m_nDests;
-
- // add CUPS printers, should there be a printer
- // with the same name as a CUPS printer, overwrite it
-@@ -464,53 +554,60 @@
- aPrinter = rPrinter;
-
- #ifdef ENABLE_CUPS
-- std::hash_map< OUString, int, OUStringHash >::iterator dest_it =
-- m_aCUPSDestMap.find( aPrinter );
-- if( dest_it != m_aCUPSDestMap.end() )
-+ if( m_aCUPSMutex.tryToAcquire() && m_nDests && m_pDests )
- {
-- cups_dest_t* pDest = ((cups_dest_t*)m_pDests) + dest_it->second;
-- const char* pPPDFile = m_pCUPSWrapper->cupsGetPPD( pDest->name );
-+ std::hash_map< OUString, int, OUStringHash >::iterator dest_it =
-+ m_aCUPSDestMap.find( aPrinter );
-+ if( dest_it != m_aCUPSDestMap.end() )
-+ {
-+ cups_dest_t* pDest = ((cups_dest_t*)m_pDests) + dest_it->second;
-+ const char* pPPDFile = m_pCUPSWrapper->cupsGetPPD( pDest->name );
- #if OSL_DEBUG_LEVEL > 1
-- fprintf( stderr, "PPD for %s is %s\n", OUStringToOString( aPrinter, osl_getThreadTextEncoding() ).getStr(), pPPDFile );
-+ fprintf( stderr, "PPD for %s is %s\n", OUStringToOString( aPrinter, osl_getThreadTextEncoding() ).getStr(), pPPDFile );
- #endif
-- if( pPPDFile )
-- {
-- rtl_TextEncoding aEncoding = osl_getThreadTextEncoding();
-- OUString aFileName( OStringToOUString( pPPDFile, aEncoding ) );
-- // create the new parser
-- pNewParser = new PPDParser( aFileName );
--
-- // update the printer info with context information
-- ppd_file_t* pPPD = m_pCUPSWrapper->ppdOpenFile( pPPDFile );
-- /*int nConflicts =*/ m_pCUPSWrapper->cupsMarkOptions( pPPD, pDest->num_options, pDest->options );
--#if OSL_DEBUG_LEVEL > 1
-- fprintf( stderr, "processing the following options for printer %s (instance %s):\n",
-- pDest->name, pDest->instance );
-- for( int k = 0; k < pDest->num_options; k++ )
-- fprintf( stderr, " \"%s\" = \"%s\"\n",
-- pDest->options[k].name,
-- pDest->options[k].value );
--#endif
-- PrinterInfo& rInfo = m_aPrinters[ aPrinter ].m_aInfo;
--
-- rInfo.m_pParser = pNewParser;
-- rInfo.m_aContext.setParser( pNewParser );
-- for( int i = 0; i < pPPD->num_groups; i++ )
-- updatePrinterContextInfo( pPPD->groups + i, rInfo );
-+ if( pPPDFile )
-+ {
-+ rtl_TextEncoding aEncoding = osl_getThreadTextEncoding();
-+ OUString aFileName( OStringToOUString( pPPDFile, aEncoding ) );
-+ // create the new parser
-+ PPDParser* pCUPSParser = new PPDParser( aFileName );
-+ pCUPSParser->m_aFile = rPrinter;
-+ pNewParser = pCUPSParser;
-+
-+ // update the printer info with context information
-+ ppd_file_t* pPPD = m_pCUPSWrapper->ppdOpenFile( pPPDFile );
-+ /*int nConflicts =*/ m_pCUPSWrapper->cupsMarkOptions( pPPD, pDest->num_options, pDest->options );
-+#if OSL_DEBUG_LEVEL > 1
-+ fprintf( stderr, "processing the following options for printer %s (instance %s):\n",
-+ pDest->name, pDest->instance );
-+ for( int k = 0; k < pDest->num_options; k++ )
-+ fprintf( stderr, " \"%s\" = \"%s\"\n",
-+ pDest->options[k].name,
-+ pDest->options[k].value );
-+#endif
-+ PrinterInfo& rInfo = m_aPrinters[ aPrinter ].m_aInfo;
-+
-+ rInfo.m_pParser = pNewParser;
-+ rInfo.m_aContext.setParser( pNewParser );
-+ for( int i = 0; i < pPPD->num_groups; i++ )
-+ updatePrinterContextInfo( pPPD->groups + i, rInfo );
-
-- // clean up the mess
-- m_pCUPSWrapper->ppdClose( pPPD );
-+ // clean up the mess
-+ m_pCUPSWrapper->ppdClose( pPPD );
-
-- // remove temporary PPD file
-- unlink( pPPDFile );
-- }
-+ // remove temporary PPD file
-+ unlink( pPPDFile );
-+ }
- #if OSL_DEBUG_LEVEL > 1
-- else
-- fprintf( stderr, "no dest found for printer %s\n", OUStringToOString( aPrinter, osl_getThreadTextEncoding() ).getStr() );
-+ else
-+ fprintf( stderr, "no dest found for printer %s\n", OUStringToOString( aPrinter, osl_getThreadTextEncoding() ).getStr() );
- #endif
-+ }
-+ m_aCUPSMutex.release();
- }
-- if( ! pNewParser )
- #endif // ENABLE_CUPS
-+
-+ if( ! pNewParser )
- {
- // get the default PPD
- pNewParser = PPDParser::getParser( String( RTL_CONSTASCII_USTRINGPARAM( "SGENPRT" ) ) );
-@@ -583,6 +680,8 @@
- fclose( pFile );
- rtl_TextEncoding aEnc = osl_getThreadTextEncoding();
-
-+ osl::MutexGuard aGuard( m_aCUPSMutex );
-+
- std::hash_map< OUString, int, OUStringHash >::iterator dest_it =
- m_aCUPSDestMap.find( rPrintername );
- if( dest_it != m_aCUPSDestMap.end() )
-@@ -625,7 +724,18 @@
-
- bool CUPSManager::checkPrintersChanged()
- {
-- return PrinterInfoManager::checkPrintersChanged();
-+ bool bChanged = false;
-+ if( m_aCUPSMutex.tryToAcquire() )
-+ {
-+ bChanged = m_bNewDests;
-+ m_aCUPSMutex.release();
-+ initialize();
-+ }
-+
-+ if( ! bChanged )
-+ bChanged = PrinterInfoManager::checkPrintersChanged();
-+
-+ return bChanged;
- }
-
- bool CUPSManager::addPrinter( const OUString& rName, const OUString& rDriver )
-@@ -648,23 +758,23 @@
-
- bool CUPSManager::setDefaultPrinter( const OUString& rName )
- {
-+ bool bSuccess = false;
- #ifdef ENABLE_CUPS
- std::hash_map< OUString, int, OUStringHash >::iterator nit =
- m_aCUPSDestMap.find( rName );
-- if( nit == m_aCUPSDestMap.end() )
-- return false;
--
-- cups_dest_t* pDests = (cups_dest_t*)m_pDests;
-- for( int i = 0; i < m_nDests; i++ )
-- pDests[i].is_default = 0;
-- pDests[ nit->second ].is_default = 1;
-- m_pCUPSWrapper->cupsSetDests( m_nDests, (cups_dest_t*)m_pDests );
-- m_aDefaultPrinter = rName;
--
-- return true;
--#else
-- return false;
-+ if( nit != m_aCUPSDestMap.end() && m_aCUPSMutex.tryToAcquire() )
-+ {
-+ cups_dest_t* pDests = (cups_dest_t*)m_pDests;
-+ for( int i = 0; i < m_nDests; i++ )
-+ pDests[i].is_default = 0;
-+ pDests[ nit->second ].is_default = 1;
-+ m_pCUPSWrapper->cupsSetDests( m_nDests, (cups_dest_t*)m_pDests );
-+ m_aDefaultPrinter = rName;
-+ m_aCUPSMutex.release();
-+ bSuccess = true;
-+ }
- #endif
-+ return bSuccess;
- }
-
- bool CUPSManager::writePrinterConfig()
-@@ -684,32 +794,39 @@
- if( ! prt->second.m_bModified )
- continue;
-
-- bDestModified = true;
-- cups_dest_t* pDest = ((cups_dest_t*)m_pDests) + nit->second;
-- PrinterInfo& rInfo = prt->second.m_aInfo;
--
-- // create new option list
-- int nNewOptions = 0;
-- cups_option_t* pNewOptions = NULL;
-- int nValues = rInfo.m_aContext.countValuesModified();
-- for( int i = 0; i < nValues; i++ )
-+ if( m_aCUPSMutex.tryToAcquire() )
- {
-- const PPDKey* pKey = rInfo.m_aContext.getModifiedKey( i );
-- const PPDValue* pValue = rInfo.m_aContext.getValue( pKey );
-- if( pKey && pValue ) // sanity check
-+ bDestModified = true;
-+ cups_dest_t* pDest = ((cups_dest_t*)m_pDests) + nit->second;
-+ PrinterInfo& rInfo = prt->second.m_aInfo;
-+
-+ // create new option list
-+ int nNewOptions = 0;
-+ cups_option_t* pNewOptions = NULL;
-+ int nValues = rInfo.m_aContext.countValuesModified();
-+ for( int i = 0; i < nValues; i++ )
- {
-- OString aName = OUStringToOString( pKey->getKey(), aEncoding );
-- OString aValue = OUStringToOString( pValue->m_aOption, aEncoding );
-- nNewOptions = m_pCUPSWrapper->cupsAddOption( aName.getStr(), aValue.getStr(), nNewOptions, &pNewOptions );
-+ const PPDKey* pKey = rInfo.m_aContext.getModifiedKey( i );
-+ const PPDValue* pValue = rInfo.m_aContext.getValue( pKey );
-+ if( pKey && pValue ) // sanity check
-+ {
-+ OString aName = OUStringToOString( pKey->getKey(), aEncoding );
-+ OString aValue = OUStringToOString( pValue->m_aOption, aEncoding );
-+ nNewOptions = m_pCUPSWrapper->cupsAddOption( aName.getStr(), aValue.getStr(), nNewOptions, &pNewOptions );
-+ }
- }
-+ // set PPD options on CUPS dest
-+ m_pCUPSWrapper->cupsFreeOptions( pDest->num_options, pDest->options );
-+ pDest->num_options = nNewOptions;
-+ pDest->options = pNewOptions;
-+ m_aCUPSMutex.release();
- }
-- // set PPD options on CUPS dest
-- m_pCUPSWrapper->cupsFreeOptions( pDest->num_options, pDest->options );
-- pDest->num_options = nNewOptions;
-- pDest->options = pNewOptions;
- }
-- if( bDestModified )
-+ if( bDestModified && m_aCUPSMutex.tryToAcquire() )
-+ {
- m_pCUPSWrapper->cupsSetDests( m_nDests, (cups_dest_t*)m_pDests );
-+ m_aCUPSMutex.release();
-+ }
- #endif // ENABLE_CUPS
-
- return PrinterInfoManager::writePrinterConfig();
-@@ -731,6 +848,8 @@
- (bool(*)(const OString&,OString&,OString&))osl_getSymbol( pLib, aSym.pData );
- if( getpw )
- {
-+ osl::MutexGuard aGuard( m_aCUPSMutex );
-+
- OString aUser = m_pCUPSWrapper->cupsUser();
- OString aServer = m_pCUPSWrapper->cupsServer();
- OString aPassword;
diff --git a/patches/vclplug/vcl-source-gdi-utf8-msfonts-fixup.diff b/patches/vclplug/vcl-source-gdi-utf8-msfonts-fixup.diff
new file mode 100644
index 000000000..3ee20c67f
--- /dev/null
+++ b/patches/vclplug/vcl-source-gdi-utf8-msfonts-fixup.diff
@@ -0,0 +1,214 @@
+--- vcl/source/gdi/outdev3.cxx.utf8-msfonts 2004-11-02 13:05:07.952153488 -0500
++++ vcl/source/gdi/outdev3.cxx 2004-11-02 13:18:26.199801400 -0500
+@@ -404,10 +404,10 @@
+
+ // =======================================================================
+
+-struct ImplLocaliziedFontName
++struct ImplLocalizedFontName
+ {
+ const char* mpEnglishName;
+- const sal_Unicode* mpLocaliziedNames;
++ const sal_Unicode* mpLocalizedNames;
+ };
+
+ static sal_Unicode const aBatang[] = { 0xBC14, 0xD0D5, 0, 0 };
+@@ -441,13 +441,19 @@
+ static sal_Unicode const aHei[] = { 0x6865, 0, 0 };
+ static sal_Unicode const aKai[] = { 0x6B61, 0, 0 };
+ static sal_Unicode const aMing[] = { 0x6D69, 0x6E67, 0, 0 };
+-static sal_Unicode const aMSGothic[] = { 0xFF2D, 0xFF33, ' ', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0, 0 };
+-static sal_Unicode const aMSPGothic[] = { 0xFF2D, 0xFF33, ' ', 0xFF30, 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0, 0 };
+-static sal_Unicode const aMSMincho[] = { 0xFF2D, 0xFF33, ' ', 0x660E, 0x671D, 0, 0 };
+-static sal_Unicode const aMSPMincho[] = { 0xFF2D, 0xFF33, ' ', 0xFF30, 0x660E, 0x671D, 0, 0 };
+-static sal_Unicode const aHGMinchoL[] = { 'h', 'g', 0x660E, 0x671D, 'l', 0, 0 };
+-static sal_Unicode const aHGGothicB[] = { 'h', 'g', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 'b', 0, 0 };
+-static sal_Unicode const aHGHeiseiMin[] = { 'h', 'g', 0x5E73, 0x6210, 0x660E, 0x671D, 0x4F53, 0, 'h', 'g', 0x5E73, 0x6210, 0x660E, 0x671D, 0x4F53, 'w', '3', 'x', '1', '2', 0, 0 };
++static sal_Unicode const aMSGothic[] = { 'm','s', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0, 0 };
++static sal_Unicode const aMSPGothic[] = { 'm','s','p', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 0, 0 };
++static sal_Unicode const aMSMincho[] = { 'm', 's', 0x660E, 0x671D, 0 };
++static sal_Unicode const aMSPMincho[] = { 'm','s','p', 0x660E, 0x671D, 0 };
++static sal_Unicode const aHGMinchoL[] = { 'h','g', 0x660E, 0x671D, 'l', 0, 0 };
++static sal_Unicode const aHGGothicB[] = { 'h','g', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 'b', 0 };
++static sal_Unicode const aHGPMinchoL[] = { 'h','g','p', 0x660E, 0x671D, 'l', 0 };
++static sal_Unicode const aHGPGothicB[] = { 'h','g','p', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 'b', 0 };
++static sal_Unicode const aHGMinchoLSun[] = { 'h','g', 0x660E, 0x671D, 'l', 's', 'u', 'n', 0 };
++static sal_Unicode const aHGPMinchoLSun[] = { 'h','g','p', 0x660E, 0x671D, 'l', 's', 'u', 'n', 0 };
++static sal_Unicode const aHGGothicBSun[] = { 'h','g', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 'b', 's', 'u', 'n', 0 };
++static sal_Unicode const aHGPGothicBSun[] = { 'h','g','p', 0x30B4, 0x30B7, 0x30C3, 0x30AF, 'b', 's', 'u', 'n', 0 };
++static sal_Unicode const aHGHeiseiMin[] = { 'h','g', 0x5E73, 0x6210, 0x660E, 0x671D, 0x4F53, 0, 'h', 'g', 0x5E73, 0x6210, 0x660E, 0x671D, 0x4F53, 'w', '3', 'x', '1', '2', 0, 0 };
+ static sal_Unicode const aSunDotum[] = { 0xC36C, 0xB3CB, 0xC6C0, 0, 0 };
+ static sal_Unicode const aSunGulim[] = { 0xC36C, 0xAD74, 0xB9BC, 0, 0 };
+ static sal_Unicode const aSunBatang[] = { 0xC36C, 0xBC14, 0xD0D5, 0, 0 };
+@@ -479,8 +485,6 @@
+ static sal_Unicode const aMagicR[] = { 0xD734, 0xBA3C, 0xB9E4, 0xC9C1, 0xCCB4, 0, 0 };
+ static sal_Unicode const aSunCrystal[] = { 0xC36C, 0xD06C, 0xB9AC, 0xC2A4, 0xD0C8, 0, 0 };
+ static sal_Unicode const aSunSaemmul[] = { 0xC36C, 0xC0D8, 0xBB3C, 0, 0 };
+-static sal_Unicode const aHYShortSamulMedium[] = { 'h', 'y', 0xC595, 0xC740, 0xC0D8, 0xBB3C, 'm', 0, 0 };
+-static sal_Unicode const aHYShortSamul[] = { 'h', 'y', 0xC595, 0xC740, 0xC0D8, 0xBB3C, 0, 0 };
+ static sal_Unicode const aHaansoftBatang[] = { 0xD55C, 0xCEF4, 0xBC14, 0xD0D5, 0, 0 };
+ static sal_Unicode const aHaansoftDotum[] = { 0xD55C, 0xCEF4, 0xB3CB, 0xC6C0, 0, 0 };
+ static sal_Unicode const aHyhaeseo[] = { 0xD55C, 0xC591, 0xD574, 0xC11C, 0, 0 };
+@@ -489,11 +493,49 @@
+ static sal_Unicode const aMDArt[] = { 'm', 'd', 0xC544, 0xD2B8, 0xCCB4, 0, 0 };
+ static sal_Unicode const aMDAlong[] = { 'm', 'd', 0xC544, 0xB871, 0xCCB4, 0, 0 };
+ static sal_Unicode const aMDEasop[] = { 'm', 'd', 0xC774, 0xC19D, 0xCCB4, 0, 0 };
+-static sal_Unicode const HYShortSamulMedium[] = { 'h', 'y', 0xC595, 0xC740, 0xC0D8, 0xBB3C, 'm', 0, 0 };
+-static sal_Unicode const HYShortSamul[] = { 'h', 'y', 0xC595, 0xC740, 0xC0D8, 0xBB3C, 0, 0 };
++static sal_Unicode const aHYShortSamulMedium[] = { 'h', 'y', 0xC595, 0xC740, 0xC0D8, 0xBB3C, 'm', 0 };
++static sal_Unicode const aHYShortSamul[] = { 'h', 'y', 0xC595, 0xC740, 0xC0D8, 0xBB3C, 0 };
++static sal_Unicode const aHGGothicE[] = { 'h','g', 0xFF7A, 0xFF9E, 0xFF7C, 0xFF6F, 0xFF78, 'e', 0 };
++static sal_Unicode const aHGPGothicE[] = { 'h','g','p', 0xFF7A, 0xFF9E, 0xFF7C, 0xFF6F, 0xFF78, 'e', 0 };
++static sal_Unicode const aHGSGothicE[] = { 'h','g','s', 0xFF7A, 0xFF9E, 0xFF7C, 0xFF6F, 0xFF78, 'e', 0 };
++static sal_Unicode const aHGGothicM[] = { 'h','g', 0xFF7A, 0xFF9E, 0xFF7C, 0xFF6F, 0xFF78, 'm', 0 };
++static sal_Unicode const aHGPGothicM[] = { 'h','g','p', 0xFF7A, 0xFF9E, 0xFF7C, 0xFF6F, 0xFF78, 'm', 0 };
++static sal_Unicode const aHGSGothicM[] = { 'h','g','s', 0xFF7A, 0xFF9E, 0xFF7C, 0xFF6F, 0xFF78, 'm', 0 };
++static sal_Unicode const aHGGyoshotai[] = { 'h','g', 0x884C, 0x66F8, 0x4F53, 0 };
++static sal_Unicode const aHGPGyoshotai[] = { 'h','g','p', 0x884C, 0x66F8, 0x4F53, 0 };
++static sal_Unicode const aHGSGyoshotai[] = { 'h','g','s', 0x884C, 0x66F8, 0x4F53, 0 };
++static sal_Unicode const aHGKyokashotai[] = { 'h','g', 0x6559, 0x79D1, 0x66F8, 0x4F53, 0 };
++static sal_Unicode const aHGPKyokashotai[] = { 'h','g','p', 0x6559, 0x79D1, 0x66F8, 0x4F53, 0 };
++static sal_Unicode const aHGSKyokashotai[] = { 'h','g','s', 0x6559, 0x79D1, 0x66F8, 0x4F53, 0 };
++static sal_Unicode const aHGMinchoB[] = { 'h','g', 0x660E, 0x671D, 'b', 0 };
++static sal_Unicode const aHGPMinchoB[] = { 'h','g','p', 0x660E, 0x671D, 'b', 0 };
++static sal_Unicode const aHGSMinchoB[] = { 'h','g','s', 0x660E, 0x671D, 'b', 0 };
++static sal_Unicode const aHGMinchoE[] = { 'h','g', 0x660E, 0x671D, 'e', 0 };
++static sal_Unicode const aHGPMinchoE[] = { 'h','g','p', 0x660E, 0x671D, 'e', 0 };
++static sal_Unicode const aHGSMinchoE[] = { 'h','g','s', 0x660E, 0x671D, 'e', 0 };
++static sal_Unicode const aHGSoeiKakupoptai[] = { 'h','g', 0x5275,0x82F1,0x89D2,0xFF8E,
++ 0xFF9F,0xFF6F,0xFF8C,0xFF9F,0x4F53,0};
++static sal_Unicode const aHGPSoeiKakupoptai[] = { 'h','g', 'p', 0x5275,0x82F1,0x89D2,0xFF8E,
++ 0xFF9F,0xFF6F,0xFF8C,0xFF9F,0x4F53,0};
++static sal_Unicode const aHGSSoeiKakupoptai[] = { 'h','g', 's', 0x5275,0x82F1,0x89D2,0xFF8E,
++ 0xFF9F,0xFF6F,0xFF8C,0xFF9F,0x4F53,0};
++static sal_Unicode const aHGSoeiPresenceEB[] = { 'h','g', 0x5275,0x82F1,0xFF8C,0xFF9F,
++ 0xFF9A,0xFF7E,0xFF9E,0xFF9D,0xFF7D, 'e','b',0};
++static sal_Unicode const aHGPSoeiPresenceEB[] = { 'h','g','p', 0x5275,0x82F1,0xFF8C,0xFF9F,
++ 0xFF9A,0xFF7E,0xFF9E,0xFF9D,0xFF7D, 'e','b',0};
++static sal_Unicode const aHGSSoeiPresenceEB[] = { 'h','g','s', 0x5275,0x82F1,0xFF8C,0xFF9F,
++ 0xFF9A,0xFF7E,0xFF9E,0xFF9D,0xFF7D, 'e','b',0};
++static sal_Unicode const aHGSoeiKakugothicUB[] = { 'h','g', 0x5275,0x82F1,0x89D2,0xFF7A,
++ 0xFF9E,0xFF7C,0xFF6F,0xFF78,'u','b',0};
++static sal_Unicode const aHGPSoeiKakugothicUB[] = { 'h','g','p', 0x5275,0x82F1,0x89D2,0xFF7A,
++ 0xFF9E,0xFF7C,0xFF6F,0xFF78,'u','b',0};
++static sal_Unicode const aHGSSoeiKakugothicUB[] = { 'h','g','s', 0x5275,0x82F1,0x89D2,0xFF7A,
++ 0xFF9E,0xFF7C,0xFF6F,0xFF78,'u','b',0};
++static sal_Unicode const aHGSeikaishotaiPRO[] = { 'h','g', 0x6B63,0x6977,0x66F8,0x4F53, '-','p','r','o',0};
++static sal_Unicode const aHGMaruGothicMPRO[] = { 'h','g', 0x4E38,0xFF7A,0xFF9E,0xFF7C,0xFF6F,0xFF78, '-','p','r','o',0};
+
+
+-static ImplLocaliziedFontName const aImplLocaliziedNamesList[] =
++static ImplLocalizedFontName aImplLocalizedNamesList[] =
+ {
+ { "batang", aBatang },
+ { "batangche", aBatangChe },
+@@ -530,6 +572,12 @@
+ { "mspmincho", aMSPMincho },
+ { "hgminchol", aHGMinchoL },
+ { "hggothicb", aHGGothicB },
++{ "hgpminchol", aHGPMinchoL },
++{ "hgpgothicb", aHGPGothicB },
++{ "hgmincholsun", aHGMinchoLSun },
++{ "hggothicbsun", aHGGothicBSun },
++{ "hgpmincholsun", aHGPMinchoLSun },
++{ "hgpgothicbsun", aHGPGothicBSun },
+ { "hgheiseimin", aHGHeiseiMin },
+ { "sundotum", aSunDotum },
+ { "sungulim", aSunGulim },
+@@ -572,8 +620,35 @@
+ { "mdart", aMDArt },
+ { "mdalong", aMDAlong },
+ { "mdeasop", aMDEasop },
+-{ "hyshortsamulmedium", HYShortSamulMedium },
+-{ "hyshortsamul", HYShortSamul },
++{ "hggothice", aHGGothicE },
++{ "hgpgothice", aHGPGothicE },
++{ "hgpothice", aHGSGothicE },
++{ "hggothicm", aHGGothicM },
++{ "hgpgothicm", aHGPGothicM },
++{ "hgpgothicm", aHGSGothicM },
++{ "hggyoshotai", aHGGyoshotai },
++{ "hgpgyoshotai", aHGPGyoshotai },
++{ "hgsgyoshotai", aHGSGyoshotai },
++{ "hgkyokashotai", aHGKyokashotai },
++{ "hgpkyokashotai", aHGPKyokashotai },
++{ "hgskyokashotai", aHGSKyokashotai },
++{ "hgminchob", aHGMinchoB },
++{ "hgpminchob", aHGPMinchoB },
++{ "hgsminchob", aHGSMinchoB },
++{ "hgminchoe", aHGMinchoE },
++{ "hgpminchoe", aHGPMinchoE },
++{ "hgsminchoe", aHGSMinchoE },
++{ "hgsoeikakupoptai", aHGSoeiKakupoptai },
++{ "hgpsoeikakupopta", aHGPSoeiKakupoptai },
++{ "hgssoeikakupopta", aHGSSoeiKakupoptai },
++{ "hgsoeipresenceeb", aHGSoeiPresenceEB },
++{ "hgpsoeipresenceeb", aHGPSoeiPresenceEB },
++{ "hgssoeipresenceeb", aHGSSoeiPresenceEB },
++{ "hgsoeikakugothicub", aHGSoeiKakugothicUB },
++{ "hgpsoeikakugothicub", aHGPSoeiKakugothicUB },
++{ "hgssoeikakugothicub", aHGSSoeiKakugothicUB },
++{ "hgseikaishotaipro", aHGSeikaishotaiPRO },
++{ "hgmarugothicmpro", aHGMaruGothicMPRO },
+ { NULL, NULL },
+ };
+
+@@ -665,24 +740,16 @@
+ i++;
+ }
+
+- // Translate localizied name to English ASCII name
+- const ImplLocaliziedFontName* pTranslateNames = aImplLocaliziedNamesList;
++ // Translate localized name to English ASCII name
++ // TODO: replace the O(n) search!
++ const ImplLocalizedFontName* pTranslateNames = aImplLocalizedNamesList;
+ while ( bTranslate && pTranslateNames->mpEnglishName )
+ {
+- const sal_Unicode* pLocaliziedName = pTranslateNames->mpLocaliziedNames;
+- while ( *pLocaliziedName )
++ const sal_Unicode* pLocalizedName = pTranslateNames->mpLocalizedNames;
++ if ( rName.Equals( pLocalizedName ) )
+ {
+- if ( rName.Equals( pLocaliziedName ) )
+- {
+- rName.AssignAscii( pTranslateNames->mpEnglishName );
+- bTranslate = FALSE;
+- break;
+- }
+-
+- // Run to the end of the Token (\0\0 is the end mark)
+- while ( *pLocaliziedName )
+- pLocaliziedName++;
+- pLocaliziedName++;
++ rName.AssignAscii( pTranslateNames->mpEnglishName );
++ break;
+ }
+
+ pTranslateNames++;
+@@ -1216,7 +1283,7 @@
+ }
+ fprintf( stderr, " OutputDevice::GetDefaultFont() Type=\"%s\" lang=%d flags=%d FontName=\"%s\"\n",
+ s, eLang, nFlags,
+- OUStringToOString( aFont.GetName(), osl_getThreadTextEncoding() ).getStr()
++ OUStringToOString( aFont.GetName(), RTL_TEXTENCODING_UTF8 ).getStr()
+ );
+ #endif
+
+@@ -4927,7 +4994,7 @@
+
+ #if OSL_DEBUG_LEVEL > 2
+ fprintf( stderr, " OutputDevice::SetFont() FontName=\"%s\"\n",
+- OUStringToOString( aFont.GetName(), osl_getThreadTextEncoding() ).getStr() );
++ OUStringToOString( aFont.GetName(), RTL_TEXTENCODING_UTF8 ).getStr() );
+ #endif
+
+ if ( !maFont.IsSameInstance( aFont ) )
+@@ -5327,7 +5394,7 @@
+
+ #if OSL_DEBUG_LEVEL > 2
+ fprintf( stderr, " OutputDevice::DrawText(\"%s\")\n",
+- OUStringToOString( rStr, osl_getThreadTextEncoding() ).getStr() );
++ OUStringToOString( rStr, RTL_TEXTENCODING_UTF8 ).getStr() );
+ #endif
+
+ if ( mpMetaFile )
diff --git a/patches/vclplug/vcl-source-gdi.diff b/patches/vclplug/vcl-source-gdi.diff
index 6d059d99c..39cff42c1 100644
--- a/patches/vclplug/vcl-source-gdi.diff
+++ b/patches/vclplug/vcl-source-gdi.diff
@@ -536,15 +536,7 @@ diff -u -p -u -r1.2.292.1 -r1.5
switch( eFilter )
{
-@@ -620,7 +618,7 @@ BOOL Bitmap::ImplEmbossGrey( const BmpFi
- aGrey.SetIndex( 0 );
- else
- {
-- const double fGrey = nDotL / sqrt( nNx * nNx + nNy * nNy + nZ2 );
-+ const double fGrey = nDotL / sqrt( (double)(nNx * nNx + nNy * nNy + nZ2) );
- aGrey.SetIndex( (BYTE) VOS_BOUND( fGrey, 0, 255 ) );
- }
-
+
Index: vcl/source/gdi/color.cxx
===================================================================
RCS file: /cvs/gsl/vcl/source/gdi/color.cxx,v
@@ -1454,18 +1446,6 @@ diff -u -p -u -r1.13 -r1.14
}
}
}
-@@ -1317,11 +1308,7 @@ String StarSymbolToMSMultiFontImpl::Conv
- String StarSymbolToMSMultiFontImpl::ConvertString(String &rString,
- xub_StrLen& rIndex)
- {
--#if 1
- typedef ::std::multimap<sal_Unicode, SymbolEntry>::iterator MI;
--#else
-- typedef ::std::multimap<sal_Unicode, SymbolEntry>::const_iterator MI;
--#endif
- typedef ::std::pair<MI, MI> Result;
-
- String sRet;
Index: vcl/source/gdi/gdimtf.cxx
===================================================================
RCS file: /cvs/gsl/vcl/source/gdi/gdimtf.cxx,v
diff --git a/patches/vclplug/vcl-source-glyphs.diff b/patches/vclplug/vcl-source-glyphs.diff
index b401f7d15..5121c80f1 100644
--- a/patches/vclplug/vcl-source-glyphs.diff
+++ b/patches/vclplug/vcl-source-glyphs.diff
@@ -2,10 +2,11 @@ Index: vcl/source/glyphs/gcach_ftyp.cxx
===================================================================
RCS file: /cvs/gsl/vcl/source/glyphs/gcach_ftyp.cxx,v
retrieving revision 1.98.20.2
-diff -u -p -u -r1.98.20.2 gcach_ftyp.cxx
---- vcl/source/glyphs/gcach_ftyp.cxx 28 Jan 2004 15:22:42 -0000 1.98.20.2
-+++ vcl/source/glyphs/gcach_ftyp.cxx 5 Jul 2004 14:01:28 -0000
-@@ -58,13 +59,10 @@
+Index: vcl/source/glyphs/gcach_ftyp.cxx
+===================================================================
+--- vcl/source/glyphs/gcach_ftyp.cxx.orig 2004-09-12 14:46:23.000000000 +0200
++++ vcl/source/glyphs/gcach_ftyp.cxx 2004-09-14 13:53:47.306959408 +0200
+@@ -58,13 +58,10 @@
*
************************************************************************/
@@ -20,7 +21,7 @@ diff -u -p -u -r1.98.20.2 gcach_ftyp.cxx
#include <gcach_ftyp.hxx>
-@@ -72,17 +70,25 @@
+@@ -72,17 +69,25 @@
#include <outfont.hxx>
#include <bitmap.hxx>
#include <bmpacc.hxx>
@@ -53,19 +54,9 @@ diff -u -p -u -r1.98.20.2 gcach_ftyp.cxx
#ifndef FREETYPE_PATCH
// VERSION_MINOR in freetype.h is too coarse
-@@ -251,15 +258,22 @@ void FtFontFile::Unmap()
- // =======================================================================
-
- FtFontInfo::FtFontInfo( const ImplFontData& rFontData,
-- const ::rtl::OString& rNativeFileName, int nFaceNum, int nFontId, int nSynthetic )
--: mpFontFile( FtFontFile::FindFontFile( rNativeFileName ) ),
-+ const ::rtl::OString& rNativeFileName,
-+ int nFaceNum, int nFontId, int nSynthetic,
-+ const unicodeKernMap* pKern
-+ )
-+:
+@@ -258,8 +263,8 @@ FtFontInfo::FtFontInfo( const ImplFontDa
+ : mpFontFile( FtFontFile::FindFontFile( rNativeFileName ) ),
maFontData( rFontData ),
-+ mpFontFile( FtFontFile::FindFontFile( rNativeFileName ) ),
mnFaceNum( nFaceNum ),
- mnFontId( nFontId ),
mnSynthetic( nSynthetic ),
@@ -73,57 +64,7 @@ diff -u -p -u -r1.98.20.2 gcach_ftyp.cxx
maFaceFT( NULL ),
mnRefCount( 0 )
{
-+ if( pKern )
-+ maUnicodeKernPairs = *pKern;
-+
- maFontData.mpSysData = (void*)nFontId;
- maFontData.mpNext = NULL;
-
-@@ -336,6 +350,43 @@ void FtFontInfo::ReleaseFaceFT( FT_FaceR
- }
- }
-
-+void FtFontInfo::CacheGlyphIndex( sal_Unicode cChar, int nGI ) const
-+{
-+ maGlyphMap[ cChar ] = nGI;
-+
-+ if( maUnicodeKernPairs.size() != maGlyphKernPairs.size() )
-+ {
-+ // move kerning to glyph kerning map
-+ unicodeKernMap::const_iterator left_it =
-+ maUnicodeKernPairs.find( cChar );
-+ std::map< sal_Unicode, int >::const_iterator right_it;
-+ for( left_it = maUnicodeKernPairs.begin(); left_it != maUnicodeKernPairs.end(); ++left_it )
-+ {
-+ if( left_it->first == cChar )
-+ {
-+ for( right_it = left_it->second.begin(); right_it != left_it->second.end(); ++right_it )
-+ {
-+ int nRightGlyph = GetGlyphIndex( right_it->first );
-+ if( nRightGlyph != -1 )
-+ maGlyphKernPairs[ nGI ][ nRightGlyph ] = right_it->second;
-+ }
-+ }
-+ else
-+ {
-+ int nLeftGlyph = GetGlyphIndex( left_it->first );
-+ if( nLeftGlyph != -1 )
-+ {
-+ for( right_it = left_it->second.begin(); right_it != left_it->second.end(); ++right_it )
-+ {
-+ if( right_it->first == cChar )
-+ maGlyphKernPairs[ nLeftGlyph ][ nGI ] = right_it->second;
-+ }
-+ }
-+ }
-+ }
-+ }
-+}
-+
- // -----------------------------------------------------------------------
-
- static unsigned GetUInt( const unsigned char* p ) { return((p[0]<<24)+(p[1]<<16)+(p[2]<<8)+p[3]);}
-@@ -382,11 +433,10 @@ const unsigned char* FtFontInfo::GetTabl
+@@ -425,11 +467,10 @@ const unsigned char* FtFontInfo::GetTabl
// =======================================================================
FreetypeManager::FreetypeManager()
@@ -137,28 +78,7 @@ diff -u -p -u -r1.98.20.2 gcach_ftyp.cxx
#ifdef RTLD_DEFAULT // true if a good dlfcn.h header was included
// Get version of freetype library to enable workarounds.
// Freetype <= 2.0.9 does not have FT_Library_Version().
-@@ -449,7 +499,10 @@ void* FreetypeManager::GetFontHandle( in
- // -----------------------------------------------------------------------
-
- void FreetypeManager::AddFontFile( const rtl::OString& rNormalizedName,
-- int nFaceNum, int nFontId, const ImplFontData* pData )
-+ int nFaceNum, int nFontId,
-+ const ImplFontData* pData,
-+ const unicodeKernMap* pKern
-+ )
- {
- if( !rNormalizedName.getLength() )
- return;
-@@ -457,7 +510,7 @@ void FreetypeManager::AddFontFile( const
- if( maFontList.find( nFontId ) != maFontList.end() )
- return;
-
-- FtFontInfo* pFI = new FtFontInfo( *pData, rNormalizedName, nFaceNum, nFontId, 0 );
-+ FtFontInfo* pFI = new FtFontInfo( *pData, rNormalizedName, nFaceNum, nFontId, 0, pKern );
- maFontList[ nFontId ] = pFI;
- if( mnMaxFontId < nFontId )
- mnMaxFontId = nFontId;
-@@ -482,8 +535,8 @@ long FreetypeManager::AddFontDir( const
+@@ -527,8 +568,8 @@ long FreetypeManager::AddFontDir( const
rcOSL = aDirItem.getFileStatus( aFileStatus );
::rtl::OUString aUSytemPath;
@@ -169,7 +89,7 @@ diff -u -p -u -r1.98.20.2 gcach_ftyp.cxx
::rtl::OString aCFileName = rtl::OUStringToOString( aUSytemPath, theEncoding );
const char* pszFontFileName = aCFileName.getStr();
-@@ -556,8 +609,21 @@ long FreetypeManager::FetchFontList( Imp
+@@ -601,8 +642,21 @@ long FreetypeManager::FetchFontList( Imp
for( FontList::const_iterator it(maFontList.begin()); it != maFontList.end(); ++it, ++nCount )
{
const FtFontInfo& rFFI = *it->second;
@@ -193,27 +113,7 @@ diff -u -p -u -r1.98.20.2 gcach_ftyp.cxx
}
return nCount;
-@@ -581,7 +647,7 @@ FreetypeServerFont* FreetypeManager::Cre
- if( it != maFontList.end() )
- {
- FtFontInfo* pFI = it->second;
-- FreetypeServerFont* pFont = new FreetypeServerFont( rFSD, pFI );
-+ FreetypeServerFont* pFont = new FreetypeServerFont( rFSD, pFI, pFI->GetGlyphKernMap(), pFI->GetUnicodeKernMap() );
- return pFont;
- }
-
-@@ -592,8 +658,8 @@ FreetypeServerFont* FreetypeManager::Cre
- // FreetypeServerFont
- // =======================================================================
-
--FreetypeServerFont::FreetypeServerFont( const ImplFontSelectData& rFSD, FtFontInfo* pFI )
--: ServerFont( rFSD ),
-+FreetypeServerFont::FreetypeServerFont( const ImplFontSelectData& rFSD, FtFontInfo* pFI, const glyphKernMap* pKern, const unicodeKernMap* pUniKern )
-+: ServerFont( rFSD, pKern, pUniKern ),
- mpFontInfo( pFI ),
- maFaceFT( NULL ),
- maSizeFT( NULL ),
-@@ -856,23 +944,23 @@ int FreetypeServerFont::ApplyGlyphTransf
+@@ -903,23 +957,23 @@ int FreetypeServerFont::ApplyGlyphTransf
case GF_ROTL: // left
nAngle += 900;
bStretched = (mfStretch != 1.0);
@@ -248,7 +148,7 @@ diff -u -p -u -r1.98.20.2 gcach_ftyp.cxx
break;
}
-@@ -1049,9 +1137,9 @@ void FreetypeServerFont::InitGlyphData(
+@@ -1096,9 +1150,9 @@ void FreetypeServerFont::InitGlyphData(
if( nGlyphFlags & GF_ROTMASK ) { // for bVertical rotated glyphs
const FT_Size_Metrics& rMetrics = maFaceFT->size->metrics;
#if (FTVERSION < 2000)
@@ -260,7 +160,7 @@ diff -u -p -u -r1.98.20.2 gcach_ftyp.cxx
#endif
}
rGD.SetCharWidth( (nCharWidth + 32) >> 6 );
-@@ -1314,34 +1402,6 @@ ULONG FreetypeServerFont::GetFontCodeRan
+@@ -1361,34 +1415,6 @@ ULONG FreetypeServerFont::GetFontCodeRan
{
int nRangeCount = 0;
@@ -295,7 +195,7 @@ diff -u -p -u -r1.98.20.2 gcach_ftyp.cxx
const unsigned char* pCmap = NULL;
ULONG nLength = 0;
if( FT_IS_SFNT( maFaceFT ) )
-@@ -1409,8 +1469,6 @@ ULONG FreetypeServerFont::GetFontCodeRan
+@@ -1456,8 +1482,6 @@ ULONG FreetypeServerFont::GetFontCodeRan
*(pCodes++) = cCode;
}
}
@@ -304,34 +204,10 @@ diff -u -p -u -r1.98.20.2 gcach_ftyp.cxx
return nRangeCount;
}
// -----------------------------------------------------------------------
-@@ -1420,7 +1478,10 @@ ULONG FreetypeServerFont::GetFontCodeRan
- int FreetypeServerFont::GetGlyphKernValue( int nGlyphLeft, int nGlyphRight ) const
- {
- if( maSizeFT )
-+
- pFTActivateSize( maSizeFT );
-+ if( !FT_HAS_KERNING( maFaceFT ) || !FT_IS_SFNT( maFaceFT ) )
-+ return ServerFont::GetGlyphKernValue( nGlyphLeft, nGlyphRight );
-
- FT_Vector aKernVal;
- FT_Error rcFT = FT_Get_Kerning( maFaceFT, nGlyphLeft, nGlyphRight,
-@@ -1438,7 +1499,7 @@ ULONG FreetypeServerFont::GetKernPairs(
-
- *ppKernPairs = NULL;
- if( !FT_HAS_KERNING( maFaceFT ) || !FT_IS_SFNT( maFaceFT ) )
-- return 0;
-+ return ServerFont::GetKernPairs( ppKernPairs );
-
- // first figure out which glyph pairs are involved in kerning
- ULONG nKernLength = 0;
Index: vcl/source/glyphs/gcach_ftyp.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/source/glyphs/gcach_ftyp.hxx,v
-retrieving revision 1.24
-retrieving revision 1.27
-diff -u -p -u -r1.24 -r1.27
---- vcl/source/glyphs/gcach_ftyp.hxx 4 Jul 2003 12:51:33 -0000 1.24
-+++ vcl/source/glyphs/gcach_ftyp.hxx 18 May 2004 10:55:11 -0000 1.27
+--- vcl/source/glyphs/gcach_ftyp.hxx.orig 2004-09-12 14:46:23.000000000 +0200
++++ vcl/source/glyphs/gcach_ftyp.hxx 2004-09-14 13:53:47.307959256 +0200
@@ -65,11 +65,15 @@
#include <glyphcache.hxx>
#include <rtl/textcvt.h>
@@ -352,7 +228,7 @@ diff -u -p -u -r1.24 -r1.27
// -----------------------------------------------------------------------
-@@ -87,7 +85,6 @@ public:
+@@ -87,7 +91,6 @@ public:
const unsigned char* GetBuffer() const { return mpFileMap; }
int GetFileSize() const { return mnFileSize; }
const ::rtl::OString* GetFileName() const { return &maNativeFileName; }
@@ -360,72 +236,7 @@ diff -u -p -u -r1.24 -r1.27
private:
FtFontFile( const ::rtl::OString& rNativeFileName );
-@@ -104,7 +101,9 @@ class FtFontInfo
- {
- public:
- FtFontInfo( const ImplFontData&, const ::rtl::OString&,
-- int nFaceNum, int nFontId, int nSynthetic );
-+ int nFaceNum, int nFontId, int nSynthetic,
-+ const unicodeKernMap* pUnicodeKern = NULL
-+ );
-
- const unsigned char* GetTable( const char*, ULONG* pLength=0 ) const;
-
-@@ -121,6 +120,11 @@ public:
-
- int GetGlyphIndex( sal_Unicode cChar ) const;
- void CacheGlyphIndex( sal_Unicode cChar, int nGI ) const;
-+ const glyphKernMap* GetGlyphKernMap() const
-+ { return (maUnicodeKernPairs.size() || maGlyphKernPairs.size()) ? &maGlyphKernPairs : NULL; }
-+ const unicodeKernMap* GetUnicodeKernMap() const
-+ { return maUnicodeKernPairs.size() ? &maUnicodeKernPairs : NULL; }
-+
-
- private:
- ImplFontData maFontData;
-@@ -135,6 +139,9 @@ private:
- // cache unicode->glyphid mapping because looking it up is expensive
- typedef ::std::hash_map<sal_Unicode,int> FIGlyphMap;
- mutable FIGlyphMap maGlyphMap;
-+
-+ mutable glyphKernMap maGlyphKernPairs;
-+ unicodeKernMap maUnicodeKernPairs;
- };
-
- // these two inlines are very important for performance
-@@ -147,11 +154,6 @@ inline int FtFontInfo::GetGlyphIndex( sa
- return -1;
- }
-
--inline void FtFontInfo::CacheGlyphIndex( sal_Unicode cChar, int nGI ) const
--{
-- maGlyphMap[ cChar ] = nGI;
--}
--
- // -----------------------------------------------------------------------
-
- class FreetypeManager
-@@ -162,7 +164,9 @@ public:
-
- long AddFontDir( const String& rUrlName );
- void AddFontFile( const rtl::OString& rNormalizedName,
-- int nFaceNum, int nFontId, const ImplFontData* );
-+ int nFaceNum, int nFontId, const ImplFontData*,
-+ const unicodeKernMap* pKern = NULL
-+ );
- long FetchFontList( ImplDevFontList* ) const;
- void ClearFontList();
-
-@@ -182,7 +186,7 @@ private:
- class FreetypeServerFont : public ServerFont
- {
- public:
-- FreetypeServerFont( const ImplFontSelectData&, FtFontInfo* );
-+ FreetypeServerFont( const ImplFontSelectData&, FtFontInfo*, const glyphKernMap*, const unicodeKernMap* );
- virtual ~FreetypeServerFont();
-
- virtual const ::rtl::OString* GetFontFileName() const { return mpFontInfo->GetFontFileName(); }
-@@ -206,9 +210,10 @@ public:
+@@ -211,9 +222,10 @@ public:
const unsigned char* GetTable( const char* pName, ULONG* pLength )
{ return mpFontInfo->GetTable( pName, pLength ); }
int GetEmUnits() const;
@@ -439,13 +250,9 @@ diff -u -p -u -r1.24 -r1.27
virtual void InitGlyphData( int nGlyphIndex, GlyphData& ) const;
Index: vcl/source/glyphs/gcach_layout.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/source/glyphs/gcach_layout.cxx,v
-retrieving revision 1.23.20.1
-retrieving revision 1.29
-diff -u -p -u -r1.23.20.1 -r1.29
---- vcl/source/glyphs/gcach_layout.cxx 9 Jan 2004 18:13:49 -0000 1.23.20.1
-+++ vcl/source/glyphs/gcach_layout.cxx 25 Jun 2004 17:09:25 -0000 1.29
-@@ -59,30 +59,29 @@
+--- vcl/source/glyphs/gcach_layout.cxx.orig 2004-09-12 14:26:10.000000000 +0200
++++ vcl/source/glyphs/gcach_layout.cxx 2004-09-14 13:53:47.310958800 +0200
+@@ -59,28 +59,27 @@
************************************************************************/
#define ENABLE_ICU_LAYOUT
@@ -483,9 +290,7 @@ diff -u -p -u -r1.23.20.1 -r1.29
#endif
#if OSL_DEBUG_LEVEL > 1
- #include <cstdio>
- #endif
-@@ -446,6 +446,13 @@
+@@ -450,6 +449,13 @@ IcuLayoutEngine::IcuLayoutEngine( Freety
meScriptCode( USCRIPT_INVALID_CODE )
{}
@@ -501,12 +306,8 @@ diff -u -p -u -r1.23.20.1 -r1.29
IcuLayoutEngine::~IcuLayoutEngine()
Index: vcl/source/glyphs/gcach_rbmp.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/source/glyphs/gcach_rbmp.cxx,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -p -u -r1.3 -r1.4
---- vcl/source/glyphs/gcach_rbmp.cxx 13 Dec 2001 14:54:19 -0000 1.3
-+++ vcl/source/glyphs/gcach_rbmp.cxx 6 Jan 2004 13:58:48 -0000 1.4
+--- vcl/source/glyphs/gcach_rbmp.cxx.orig 2004-09-12 14:26:10.000000000 +0200
++++ vcl/source/glyphs/gcach_rbmp.cxx 2004-09-14 13:53:47.311958648 +0200
@@ -64,7 +64,7 @@
//------------------------------------------------------------------------
@@ -518,12 +319,8 @@ diff -u -p -u -r1.3 -r1.4
//------------------------------------------------------------------------
Index: vcl/source/glyphs/gcach_vdev.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/source/glyphs/gcach_vdev.cxx,v
-retrieving revision 1.11
-retrieving revision 1.15
-diff -u -p -u -r1.11 -r1.15
---- vcl/source/glyphs/gcach_vdev.cxx 5 Aug 2002 07:19:22 -0000 1.11
-+++ vcl/source/glyphs/gcach_vdev.cxx 17 Jun 2004 12:21:43 -0000 1.15
+--- vcl/source/glyphs/gcach_vdev.cxx.orig 2004-09-12 14:26:10.000000000 +0200
++++ vcl/source/glyphs/gcach_vdev.cxx 2004-09-14 13:53:47.312958496 +0200
@@ -75,10 +75,6 @@
long VirtDevServerFont::FetchFontList( ImplDevFontList* pToAdd )
@@ -544,7 +341,7 @@ diff -u -p -u -r1.11 -r1.15
return nCount;
}
-@@ -202,13 +197,16 @@ void VirtDevServerFont::InitGlyphData( i
+@@ -202,13 +196,16 @@ void VirtDevServerFont::InitGlyphData( i
vdev.SetFont( aFont );
// get glyph metrics
@@ -564,7 +361,7 @@ diff -u -p -u -r1.11 -r1.15
rGD.SetSize( aRect.GetSize() );
}
-@@ -223,7 +221,7 @@ bool VirtDevServerFont::GetAntialiasAdvi
+@@ -223,7 +220,7 @@ bool VirtDevServerFont::GetAntialiasAdvi
bool VirtDevServerFont::GetGlyphBitmap1( int nGlyphIndex, RawBitmap& ) const
{
@@ -573,7 +370,7 @@ diff -u -p -u -r1.11 -r1.15
// draw bitmap
vdev.SetOutputSizePixel( aSize, TRUE );
vdev.DrawText( Point(0,0)-rGD.GetMetric().GetOffset(), nGlyphIndex );
-@@ -233,9 +231,8 @@ bool VirtDevServerFont::GetGlyphBitmap1(
+@@ -233,9 +230,8 @@ bool VirtDevServerFont::GetGlyphBitmap1(
const Bitmap& rBitmap = vdev.GetBitmap( Point(0,0), aSize );
rGD.SetBitmap( new Bitmap( rBitmap ) );
return true;
@@ -584,7 +381,7 @@ diff -u -p -u -r1.11 -r1.15
}
// -----------------------------------------------------------------------
-@@ -295,9 +292,8 @@ ULONG VirtDevServerFont::GetKernPairs( I
+@@ -295,9 +291,8 @@ ULONG VirtDevServerFont::GetKernPairs( I
bool VirtDevServerFont::GetGlyphOutline( int nGlyphIndex, PolyPolygon& rPolyPoly ) const
{
@@ -595,7 +392,7 @@ diff -u -p -u -r1.11 -r1.15
Font aFont;
aFont.SetName ( GetFontSelData().maName );
aFont.SetStyleName ( GetFontSelData().maStyleName );
-@@ -311,7 +307,7 @@ bool VirtDevServerFont::GetGlyphOutline(
+@@ -311,7 +306,7 @@ bool VirtDevServerFont::GetGlyphOutline(
const bool bOptimize = true;
return vdev.GetGlyphOutline( nGlyphIndex, rPolyPoly, bOptimize );
@@ -606,12 +403,8 @@ diff -u -p -u -r1.11 -r1.15
// =======================================================================
Index: vcl/source/glyphs/gcach_vdev.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/source/glyphs/gcach_vdev.hxx,v
-retrieving revision 1.5
-retrieving revision 1.7
-diff -u -p -u -r1.5 -r1.7
---- vcl/source/glyphs/gcach_vdev.hxx 15 Feb 2002 15:58:57 -0000 1.5
-+++ vcl/source/glyphs/gcach_vdev.hxx 4 Feb 2004 15:59:34 -0000 1.7
+--- vcl/source/glyphs/gcach_vdev.hxx.orig 2004-09-12 14:26:10.000000000 +0200
++++ vcl/source/glyphs/gcach_vdev.hxx 2004-09-14 13:53:47.312958496 +0200
@@ -72,7 +72,7 @@ public:
virtual bool GetGlyphOutline( int nGlyphIndex, PolyPolygon& ) const;
@@ -623,12 +416,8 @@ diff -u -p -u -r1.5 -r1.7
Index: vcl/source/glyphs/glyphcache.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/source/glyphs/glyphcache.cxx,v
-retrieving revision 1.22.40.2
-retrieving revision 1.26
-diff -u -p -u -r1.22.40.2 -r1.26
---- vcl/source/glyphs/glyphcache.cxx 26 Jan 2004 17:23:59 -0000 1.22.40.2
-+++ vcl/source/glyphs/glyphcache.cxx 18 May 2004 10:55:25 -0000 1.26
+--- vcl/source/glyphs/glyphcache.cxx.orig 2004-09-12 14:46:23.000000000 +0200
++++ vcl/source/glyphs/glyphcache.cxx 2004-09-14 13:53:47.313958344 +0200
@@ -88,8 +88,8 @@ GlyphCache::GlyphCache( ULONG nMaxSize )
mnBytesUsed(sizeof(GlyphCache)),
mnLruIndex(0),
@@ -649,22 +438,7 @@ diff -u -p -u -r1.22.40.2 -r1.26
if( pFontData != it->first.mpFontData )
continue;
-@@ -219,10 +219,12 @@ void GlyphCache::AddFontPath( const Stri
- // -----------------------------------------------------------------------
-
- void GlyphCache::AddFontFile( const rtl::OString& rNormalizedName, int nFaceNum,
-- int nFontId, const ImplFontData* pFontData )
-+ int nFontId, const ImplFontData* pFontData,
-+ const unicodeKernMap* pKern
-+ )
- {
- if( mpFtManager )
-- mpFtManager->AddFontFile( rNormalizedName, nFaceNum, nFontId, pFontData );
-+ mpFtManager->AddFontFile( rNormalizedName, nFaceNum, nFontId, pFontData, pKern );
- }
-
- // -----------------------------------------------------------------------
-@@ -337,7 +339,7 @@ void GlyphCache::GarbageCollect()
+@@ -338,7 +338,7 @@ void GlyphCache::GarbageCollect()
FontList::iterator it_next = maFontList.begin(), it;
while( it_next != maFontList.end() )
{
@@ -673,13 +447,7 @@ diff -u -p -u -r1.22.40.2 -r1.26
ServerFont* pSF = it->second;
if( (pSF != NULL)
&& (pSF->GetRefCount() <= 0)
-@@ -401,15 +403,17 @@ inline void GlyphCache::RemovingGlyph( S
- // ServerFont
- // =======================================================================
-
--ServerFont::ServerFont( const ImplFontSelectData& rFSD )
-+ServerFont::ServerFont( const ImplFontSelectData& rFSD, const glyphKernMap* pKern, const unicodeKernMap* pUniKern )
- : maFontSelData(rFSD),
+@@ -407,8 +407,8 @@ ServerFont::ServerFont( const ImplFontSe
mnExtInfo(0),
mnRefCount(1),
mnBytesUsed( sizeof(ServerFont) ),
@@ -687,80 +455,9 @@ diff -u -p -u -r1.22.40.2 -r1.26
mpPrevGCFont( NULL ),
+ mpNextGCFont( NULL ),
nCos( 0x10000),
-- nSin( 0)
-+ nSin( 0),
-+ mpKernPairs( pKern ),
-+ mpUnicodeKernPairs( pUniKern )
- {
- if( rFSD.mnOrientation != 0 )
- {
-@@ -440,6 +444,65 @@ long ServerFont::Release() const
-
- // -----------------------------------------------------------------------
-
-+int ServerFont::GetGlyphKernValue( int left, int right ) const
-+{
-+ int kern = 0;
-+ if( mpKernPairs )
-+ {
-+ std::map< int, std::map< int, int > >::const_iterator left_it =
-+ mpKernPairs->find( left );
-+ if( left_it != mpKernPairs->end() )
-+ {
-+ std::map< int, int >::const_iterator right_it = left_it->second.find( right );
-+ if( right_it != left_it->second.end() )
-+ kern = right_it->second;
-+ }
-+ }
-+ return kern*(maFontSelData.mnWidth ? maFontSelData.mnWidth : maFontSelData.mnHeight)/1000;
-+}
-+
-+// -----------------------------------------------------------------------
-+
-+ULONG ServerFont::GetKernPairs( struct ImplKernPairData** ppKernPairs ) const
-+{
-+ int nKernEntry = 0;
-+ unicodeKernMap::const_iterator left_it;
-+ std::map< sal_Unicode, int >::const_iterator right_it;
-+ if( mpUnicodeKernPairs )
-+ {
-+ // count the kern entries
-+ for( left_it = mpUnicodeKernPairs->begin(); left_it != mpUnicodeKernPairs->end(); ++left_it )
-+ {
-+ nKernEntry += left_it->second.size();
-+ }
-+ }
-+
-+ // allocate kern pair table
-+ if( nKernEntry )
-+ {
-+ *ppKernPairs = new ImplKernPairData[ nKernEntry ];
-+
-+ // fill in kern pairs
-+ nKernEntry = 0;
-+ for( left_it = mpUnicodeKernPairs->begin(); left_it != mpUnicodeKernPairs->end(); ++left_it )
-+ {
-+ for( right_it = left_it->second.begin(); right_it != left_it->second.end(); ++right_it )
-+ {
-+ (*ppKernPairs)[ nKernEntry ].mnChar1 = (USHORT)left_it->first;
-+ (*ppKernPairs)[ nKernEntry ].mnChar2 = (USHORT)right_it->first;
-+ (*ppKernPairs)[ nKernEntry ].mnKern = right_it->second*(maFontSelData.mnWidth ? maFontSelData.mnWidth : maFontSelData.mnHeight)/1000;
-+ nKernEntry++;
-+ }
-+ }
-+ }
-+ else
-+ *ppKernPairs = NULL;
-+
-+ return (ULONG)nKernEntry;
-+}
-+
-+// -----------------------------------------------------------------------
-+
- GlyphData& ServerFont::GetGlyphData( int nGlyphIndex )
- {
- // usually the GlyphData is cached
-@@ -465,7 +528,7 @@ void ServerFont::GarbageCollect( long nM
+ nSin( 0),
+ mpKernPairs( pKern ),
+@@ -527,7 +586,7 @@ void ServerFont::GarbageCollect( long nM
GlyphList::iterator it_next = maGlyphList.begin(), it;
while( it_next != maGlyphList.end() )
{
@@ -771,13 +468,9 @@ diff -u -p -u -r1.22.40.2 -r1.26
{
Index: vcl/source/glyphs/makefile.mk
===================================================================
-RCS file: /cvs/gsl/vcl/source/glyphs/makefile.mk,v
-retrieving revision 1.5
-retrieving revision 1.6
-diff -u -p -u -r1.5 -r1.6
---- vcl/source/glyphs/makefile.mk 15 Feb 2002 15:52:27 -0000 1.5
-+++ vcl/source/glyphs/makefile.mk 6 Jan 2004 14:00:38 -0000 1.6
-@@ -76,11 +76,9 @@ TARGET=glyphs
+--- vcl/source/glyphs/makefile.mk.orig 2004-09-12 14:26:10.000000000 +0200
++++ vcl/source/glyphs/makefile.mk 2004-09-14 13:53:47.314958192 +0200
+@@ -77,11 +77,9 @@ CFLAGS += $(FREETYPE_CFLAGS)
SLOFILES=\
$(SLO)$/glyphcache.obj \
$(SLO)$/gcach_rbmp.obj \
diff --git a/patches/vclplug/vcl-unx-source-gdi.diff b/patches/vclplug/vcl-unx-source-gdi.diff
index 29d649121..7989f4d08 100644
--- a/patches/vclplug/vcl-unx-source-gdi.diff
+++ b/patches/vclplug/vcl-unx-source-gdi.diff
@@ -3,9 +3,10 @@ Index: vcl/unx/source/gdi/cdeint.cxx
RCS file: /cvs/gsl/vcl/unx/source/gdi/cdeint.cxx,v
retrieving revision 1.8
retrieving revision 1.9
-diff -u -p -u -r1.8 -r1.9
---- vcl/unx/source/gdi/cdeint.cxx 24 Jun 2002 15:53:02 -0000 1.8
-+++ vcl/unx/source/gdi/cdeint.cxx 18 Nov 2003 14:44:27 -0000 1.9
+Index: vcl/unx/source/gdi/cdeint.cxx
+===================================================================
+--- vcl/unx/source/gdi/cdeint.cxx.orig 2004-09-12 14:26:04.000000000 +0200
++++ vcl/unx/source/gdi/cdeint.cxx 2004-09-14 14:09:32.367288400 +0200
@@ -64,14 +64,12 @@
#include <salunx.h>
#include <saldisp.hxx>
@@ -24,12 +25,8 @@ diff -u -p -u -r1.8 -r1.9
mnRefCount++;
Index: vcl/unx/source/gdi/dtint.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/unx/source/gdi/dtint.cxx,v
-retrieving revision 1.16.82.1
-retrieving revision 1.22
-diff -u -p -u -r1.16.82.1 -r1.22
---- vcl/unx/source/gdi/dtint.cxx 15 Jan 2004 12:52:24 -0000 1.16.82.1
-+++ vcl/unx/source/gdi/dtint.cxx 10 May 2004 15:58:19 -0000 1.22
+--- vcl/unx/source/gdi/dtint.cxx.orig 2004-09-12 14:26:04.000000000 +0200
++++ vcl/unx/source/gdi/dtint.cxx 2004-09-14 14:09:32.371287792 +0200
@@ -72,10 +72,8 @@
#include <cdeint.hxx>
#endif
@@ -143,7 +140,7 @@ diff -u -p -u -r1.16.82.1 -r1.22
void DtIntegrator::GetSystemLook( AllSettings& rSettings )
{
--}
+ }
-
-Color DtIntegrator::parseColor( const ByteString& rLine )
-{
@@ -563,15 +560,11 @@ diff -u -p -u -r1.16.82.1 -r1.22
- rSettings.SetMouseSettings( aMouseSettings );
- rSettings.SetStyleSettings( aStyleSettings );
- }
- }
+-}
Index: vcl/unx/source/gdi/gcach_xpeer.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/unx/source/gdi/gcach_xpeer.cxx,v
-retrieving revision 1.32.18.1
-retrieving revision 1.37
-diff -u -p -u -r1.32.18.1 -r1.37
---- vcl/unx/source/gdi/gcach_xpeer.cxx 9 Jan 2004 18:14:01 -0000 1.32.18.1
-+++ vcl/unx/source/gdi/gcach_xpeer.cxx 4 Feb 2004 11:05:23 -0000 1.37
+--- vcl/unx/source/gdi/gcach_xpeer.cxx.orig 2004-09-12 14:26:04.000000000 +0200
++++ vcl/unx/source/gdi/gcach_xpeer.cxx 2004-09-14 14:09:32.372287640 +0200
@@ -61,6 +61,7 @@
#include <rtl/ustring.hxx>
@@ -643,12 +636,8 @@ diff -u -p -u -r1.32.18.1 -r1.37
rGlyphData.SetOffset( +maRawBitmap.mnXOffset, +maRawBitmap.mnYOffset );
Index: vcl/unx/source/gdi/kdeint.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/unx/source/gdi/kdeint.cxx,v
-retrieving revision 1.10
-retrieving revision 1.12
-diff -u -p -u -r1.10 -r1.12
---- vcl/unx/source/gdi/kdeint.cxx 16 Jul 2003 17:46:57 -0000 1.10
-+++ vcl/unx/source/gdi/kdeint.cxx 6 Jan 2004 14:37:00 -0000 1.12
+--- vcl/unx/source/gdi/kdeint.cxx.orig 2004-09-12 14:26:04.000000000 +0200
++++ vcl/unx/source/gdi/kdeint.cxx 2004-09-14 14:09:32.373287488 +0200
@@ -60,18 +60,18 @@
************************************************************************/
@@ -691,12 +680,8 @@ diff -u -p -u -r1.10 -r1.12
if( pTryFiles[i][0] == '~' )
Index: vcl/unx/source/gdi/makefile.mk
===================================================================
-RCS file: /cvs/gsl/vcl/unx/source/gdi/makefile.mk,v
-retrieving revision 1.9
-retrieving revision 1.13
-diff -u -p -u -r1.9 -r1.13
---- vcl/unx/source/gdi/makefile.mk 27 Aug 2002 14:52:35 -0000 1.9
-+++ vcl/unx/source/gdi/makefile.mk 10 May 2004 15:58:32 -0000 1.13
+--- vcl/unx/source/gdi/makefile.mk.orig 2004-09-12 14:26:04.000000000 +0200
++++ vcl/unx/source/gdi/makefile.mk 2004-09-14 14:09:32.374287336 +0200
@@ -80,24 +80,29 @@ dummy:
.ELSE # "$(GUIBASE)"!="unx"
@@ -733,21 +718,19 @@ diff -u -p -u -r1.9 -r1.13
.IF "$(USE_XPRINT)" == "TRUE"
CFLAGS+=-D_USE_PRINT_EXTENSION_=1
-@@ -113,8 +118,6 @@ ENVCFLAGS+=-DUSE_CDE
-
- .IF "$(USE_BUILTIN_RASTERIZER)" != ""
+@@ -115,8 +120,6 @@ ENVCFLAGS+=-DUSE_CDE
SLOFILES+= $(SLO)$/gcach_xpeer.obj
--.ENDIF
--
.ENDIF
+-.ENDIF
+-
.ENDIF # "$(GUIBASE)"!="unx"
+
+ # --- Targets ------------------------------------------------------
Index: vcl/unx/source/gdi/pspgraphics.cxx
===================================================================
-RCS file: vcl/unx/source/gdi/pspgraphics.cxx
-diff -N vcl/unx/source/gdi/pspgraphics.cxx
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/unx/source/gdi/pspgraphics.cxx 17 Jun 2004 12:28:07 -0000 1.4
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ vcl/unx/source/gdi/pspgraphics.cxx 2004-09-14 14:09:32.377286880 +0200
@@ -0,0 +1,1355 @@
+/*************************************************************************
+ *
@@ -2106,12 +2089,8 @@ diff -N vcl/unx/source/gdi/pspgraphics.cxx
+}
Index: vcl/unx/source/gdi/salbmp.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/unx/source/gdi/salbmp.cxx,v
-retrieving revision 1.8.274.1
-retrieving revision 1.14
-diff -u -p -u -r1.8.274.1 -r1.14
---- vcl/unx/source/gdi/salbmp.cxx 15 Jan 2004 12:52:46 -0000 1.8.274.1
-+++ vcl/unx/source/gdi/salbmp.cxx 22 Jun 2004 17:42:38 -0000 1.14
+--- vcl/unx/source/gdi/salbmp.cxx.orig 2004-09-12 14:26:04.000000000 +0200
++++ vcl/unx/source/gdi/salbmp.cxx 2004-09-14 14:09:32.382286120 +0200
@@ -59,20 +59,18 @@
*
************************************************************************/
@@ -2638,12 +2617,8 @@ diff -u -p -u -r1.8.274.1 -r1.14
{
Index: vcl/unx/source/gdi/salgdi.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/unx/source/gdi/salgdi.cxx,v
-retrieving revision 1.24.120.2
-retrieving revision 1.33
-diff -u -p -u -r1.24.120.2 -r1.33
---- vcl/unx/source/gdi/salgdi.cxx 15 Jan 2004 12:53:28 -0000 1.24.120.2
-+++ vcl/unx/source/gdi/salgdi.cxx 22 Jun 2004 17:42:18 -0000 1.33
+--- vcl/unx/source/gdi/salgdi.cxx.orig 2004-09-12 14:26:04.000000000 +0200
++++ vcl/unx/source/gdi/salgdi.cxx 2004-09-14 14:09:32.386285512 +0200
@@ -59,14 +59,22 @@
*
************************************************************************/
@@ -3951,12 +3926,8 @@ diff -u -p -u -r1.24.120.2 -r1.33
-
Index: vcl/unx/source/gdi/salgdi2.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/unx/source/gdi/salgdi2.cxx,v
-retrieving revision 1.18.68.1
-retrieving revision 1.25
-diff -u -p -u -r1.18.68.1 -r1.25
---- vcl/unx/source/gdi/salgdi2.cxx 15 Jan 2004 12:53:52 -0000 1.18.68.1
-+++ vcl/unx/source/gdi/salgdi2.cxx 22 Jun 2004 17:42:46 -0000 1.25
+--- vcl/unx/source/gdi/salgdi2.cxx.orig 2004-09-12 14:26:04.000000000 +0200
++++ vcl/unx/source/gdi/salgdi2.cxx 2004-09-14 14:09:32.406282472 +0200
@@ -59,9 +59,6 @@
*
************************************************************************/
@@ -5315,12 +5286,8 @@ diff -u -p -u -r1.18.68.1 -r1.25
Index: vcl/unx/source/gdi/salgdi3.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/unx/source/gdi/salgdi3.cxx,v
-retrieving revision 1.105.46.5
-retrieving revision 1.119
-diff -u -p -u -r1.105.46.5 -r1.119
---- vcl/unx/source/gdi/salgdi3.cxx 13 Feb 2004 14:03:54 -0000 1.105.46.5
-+++ vcl/unx/source/gdi/salgdi3.cxx 17 Jun 2004 12:29:09 -0000 1.119
+--- vcl/unx/source/gdi/salgdi3.cxx.orig 2004-09-12 14:46:23.000000000 +0200
++++ vcl/unx/source/gdi/salgdi3.cxx 2004-09-14 14:11:55.218571704 +0200
@@ -59,10 +59,6 @@
*
************************************************************************/
@@ -5664,7 +5631,7 @@ diff -u -p -u -r1.105.46.5 -r1.119
for( int nStart = 0; rSalLayout.GetNextGlyphs( 1, &nGlyph, aPos, nStart ); )
{
Pixmap aStipple = aX11GlyphPeer.GetPixmap( rFont, nGlyph );
-@@ -1124,186 +1015,27 @@ void SalGraphicsData::DrawServerSimpleFo
+@@ -1124,200 +1015,27 @@ void SalGraphicsData::DrawServerSimpleFo
//--------------------------------------------------------------------------
@@ -5733,10 +5700,24 @@ diff -u -p -u -r1.105.46.5 -r1.119
- // apply pair kerning to prev glyph if requested
- if( SAL_LAYOUT_KERNING_PAIRS & rArgs.mnFlags )
- {
-- // TODO: get kerning value from printer
-- int nKern = 0; //GetGlyphKernValue( nOldGlyphId, nGlyphIndex );
-- nGlyphWidth += nKern;
-- aPrevItem.mnNewWidth = nGlyphWidth;
+- if( nOldGlyphId > 0 )
+- {
+- const std::list< psp::KernPair >& rKernPairs = mrPrinterGfx.getKernPairs(mbVertical);
+- for( std::list< psp::KernPair >::const_iterator it = rKernPairs.begin();
+- it != rKernPairs.end(); ++it )
+- {
+- if( it->first == nOldGlyphId && it->second == nGlyphIndex )
+- {
+- int nTextScale = mrPrinterGfx.GetFontWidth();
+- if( ! nTextScale )
+- nTextScale = mrPrinterGfx.GetFontHeight();
+- int nKern = (mbVertical ? it->kern_y : it->kern_x) * nTextScale;
+- nGlyphWidth += nKern;
+- aPrevItem.mnNewWidth = nGlyphWidth;
+- break;
+- }
+- }
+- }
- }
-
- // finish previous glyph
@@ -5866,7 +5847,7 @@ diff -u -p -u -r1.105.46.5 -r1.119
else
{
// draw complex text
-@@ -1326,35 +1058,7 @@ void SalGraphicsData::DispatchServerFont
+@@ -1340,35 +1058,7 @@ void SalGraphicsData::DispatchServerFont
//--------------------------------------------------------------------------
@@ -5903,7 +5884,7 @@ diff -u -p -u -r1.105.46.5 -r1.119
const Point& rPoint, const sal_Unicode* pStr, int nLength )
{
Display* pDisplay = GetXDisplay();
-@@ -1383,8 +1087,9 @@ void SalGraphicsData::DrawStringUCS2MB(
+@@ -1397,8 +1087,9 @@ void SalGraphicsData::DrawStringUCS2MB(
{
XTextItem16 *pTextItem = (XTextItem16*)alloca( nLength * sizeof(XTextItem16) );
XChar2b *pMBChar = (XChar2b*)pStr;
@@ -5914,7 +5895,7 @@ diff -u -p -u -r1.105.46.5 -r1.119
{
rtl_TextEncoding nEnc;
XFontStruct* pFontStruct = rFont.GetFontStruct( pStr[nChar], &nEnc );
-@@ -1406,15 +1111,13 @@ void SalGraphicsData::DrawStringUCS2MB(
+@@ -1420,15 +1111,13 @@ void SalGraphicsData::DrawStringUCS2MB(
//--------------------------------------------------------------------------
@@ -5931,7 +5912,7 @@ diff -u -p -u -r1.105.46.5 -r1.119
if( mXFont[0] )
nPairs = mXFont[0]->GetFontCodeRanges( pCodePairs );
return nPairs;
-@@ -1449,204 +1152,32 @@ CheckNoNegativeCoordinateWorkaround()
+@@ -1463,204 +1152,32 @@ CheckNoNegativeCoordinateWorkaround()
//
// ----------------------------------------------------------------------------
@@ -5990,29 +5971,29 @@ diff -u -p -u -r1.105.46.5 -r1.119
{
-#ifndef _USE_PRINT_EXTENSION_
- if (maGraphicsData.m_pPrinterGfx != NULL)
-- {
++ if( nTextColor_ != nSalColor )
+ {
- psp::PrinterColor aColor (SALCOLOR_RED (nSalColor),
- SALCOLOR_GREEN (nSalColor),
- SALCOLOR_BLUE (nSalColor));
- maGraphicsData.m_pPrinterGfx->SetTextColor (aColor);
-- }
++ nTextColor_ = nSalColor;
++ nTextPixel_ = GetPixel( nSalColor );
++ bFontGC_ = FALSE;
+ }
- else
- {
-#endif
-
- if( _GetTextColor() != nSalColor )
-+ if( nTextColor_ != nSalColor )
- {
+- {
- _GetTextColor() = nSalColor;
- _GetTextPixel() = _GetPixel( nSalColor );
- _IsFontGC() = FALSE;
- }
-
-#ifndef _USE_PRINT_EXTENSION_
-+ nTextColor_ = nSalColor;
-+ nTextPixel_ = GetPixel( nSalColor );
-+ bFontGC_ = FALSE;
- }
+- }
-#endif
}
@@ -6149,7 +6130,7 @@ diff -u -p -u -r1.105.46.5 -r1.119
{
// inform font manager
rtl::OUString aUSystemPath;
-@@ -1662,7 +1193,7 @@ ImplFontData* SalGraphics::AddTempDevFon
+@@ -1676,7 +1193,7 @@ ImplFontData* SalGraphics::AddTempDevFon
psp::FastPrintFontInfo aInfo;
rMgr.getFontFastInfo( nFontId, aInfo );
ImplFontData* pFontData = new ImplFontData;
@@ -6158,7 +6139,7 @@ diff -u -p -u -r1.105.46.5 -r1.119
pFontData->maName = rFontName;
pFontData->mnQuality += 5800;
-@@ -1676,148 +1207,83 @@ ImplFontData* SalGraphics::AddTempDevFon
+@@ -1690,164 +1207,82 @@ ImplFontData* SalGraphics::AddTempDevFon
// ----------------------------------------------------------------------------
@@ -6167,35 +6148,7 @@ diff -u -p -u -r1.105.46.5 -r1.119
{
-#ifndef _USE_PRINT_EXTENSION_
- if (maGraphicsData.m_pJobData != NULL)
-+ XlfdStorage* pFonts = GetDisplay()->GetXlfdList();
-+
-+ for ( int nIdx = 0; nIdx < pFonts->GetCount(); nIdx++ )
-+ {
-+ ImplFontData *pFontData = new ImplFontData;
-+ pFonts->Get(nIdx)->ToImplFontData( pFontData );
-+ if( pFontData->maName.CompareIgnoreCaseToAscii( "itc ", 4 ) == COMPARE_EQUAL )
-+ pFontData->maName = pFontData->maName.Copy( 4 );
-+ pFontData->mbSubsettable = FALSE;
-+ pFontData->mbEmbeddable = FALSE;
-+ pList->Add( pFontData );
-+ }
-+
-+ aX11GlyphPeer.SetDisplay( GetXDisplay(),
-+ GetDisplay()->GetVisual()->GetVisual() );
-+#ifdef MACOSX
-+ GlyphCache::EnsureInstance( aX11GlyphPeer, true );
-+#else
-+ GlyphCache::EnsureInstance( aX11GlyphPeer, false );
-+#endif
-+ GlyphCache& rGC = GlyphCache::GetInstance();
-+
-+ const psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
-+ ::std::list< psp::fontID > aList;
-+ ::std::list< psp::fontID >::iterator it;
-+ rMgr.getFontList( aList );
-+ unicodeKernMap aKernTab;
-+ for( it = aList.begin(); it != aList.end(); ++it )
- {
+- {
- const char* pLangBoost = NULL;
- const LanguageType aLang = Application::GetSettings().GetUILanguage();
- switch( aLang )
@@ -6225,39 +6178,17 @@ diff -u -p -u -r1.105.46.5 -r1.119
-
- ::std::list< psp::fontID >::iterator it;
- for (it = aList.begin(); it != aList.end(); ++it)
-+ psp::FastPrintFontInfo aInfo;
-+ if( rMgr.getFontFastInfo( *it, aInfo ) )
- {
+- {
- psp::FastPrintFontInfo aInfo;
- if (rMgr.getFontFastInfo (*it, aInfo))
-+ if( aInfo.m_eType == psp::fonttype::Builtin )
-+ continue;
-+ ImplFontData aFontData;
-+ PspGraphics::SetImplFontData( aInfo, aFontData );
-+ // prefer builtin_rasterizer fonts
-+ aFontData.mnQuality += 4096;
-+ // prefer truetype fonts
-+ if( aInfo.m_eType == psp::fonttype::TrueType )
-+ aFontData.mnQuality += 1000;
-+ int nFaceNum = rMgr.getFontFaceNumber( aInfo.m_nID );
-+ if( aFontData.maName.CompareIgnoreCaseToAscii( "itc ", 4 ) == COMPARE_EQUAL )
-+ aFontData.maName = aFontData.maName.Copy( 4 );
-+ if( nFaceNum < 0 )
-+ nFaceNum = 0;
-+
-+
-+ const unicodeKernMap* pKernTab = NULL;
-+ if( aInfo.m_eType == psp::fonttype::Type1 )
- {
+- {
- ImplFontData *pFontData = new ImplFontData;
- SetImplFontData( aInfo, *pFontData );
- pFontData->mpSysData = (void*)*it;
- if( pFontData->maName.CompareIgnoreCaseToAscii( "itc ", 4 ) == COMPARE_EQUAL )
- pFontData->maName = pFontData->maName.Copy( 4 );
- if( aInfo.m_eType == psp::fonttype::TrueType )
-+ const std::list< psp::KernPair >& rKernPairs = rMgr.getKernPairs( *it );
-+ if( rKernPairs.size() )
- {
+- {
- // prefer truetype fonts
- pFontData->mnQuality += 10;
- // asian type 1 fonts are not known
@@ -6270,29 +6201,35 @@ diff -u -p -u -r1.105.46.5 -r1.119
- if( pLangBoost && aFileName.Copy( nPos+1, 3 ).EqualsIgnoreCaseAscii( pLangBoost ) )
- pFontData->mnQuality += 10;
- }
-+ aKernTab.clear();
-+ for( std::list< psp::KernPair >::const_iterator it = rKernPairs.begin();
-+ it != rKernPairs.end(); ++it )
-+ aKernTab[ it->first ][ it->second ] = it->kern_x;
-+ pKernTab = & aKernTab;
- }
+- }
- pList->Add( pFontData );
- }
-+
-+ // handling of alias names is done by GlyphCache::FetchFontList
-+ rGC.AddFontFile( rMgr.getFontFileSysPath( aInfo.m_nID ), nFaceNum,
-+ aInfo.m_nID, &aFontData, pKernTab );
- }
- }
+- }
+- }
+- }
- else
-#endif
- {
- XlfdStorage* pFonts = _GetDisplay()->GetXlfdList();
-
+-
- for ( int nIdx = 0; nIdx < pFonts->GetCount(); nIdx++ )
- {
- ImplFontData *pFontData = new ImplFontData;
--#ifdef MACOSX
++ XlfdStorage* pFonts = GetDisplay()->GetXlfdList();
++
++ for ( int nIdx = 0; nIdx < pFonts->GetCount(); nIdx++ )
++ {
++ ImplFontData *pFontData = new ImplFontData;
++ pFonts->Get(nIdx)->ToImplFontData( pFontData );
++ if( pFontData->maName.CompareIgnoreCaseToAscii( "itc ", 4 ) == COMPARE_EQUAL )
++ pFontData->maName = pFontData->maName.Copy( 4 );
++ pFontData->mbSubsettable = FALSE;
++ pFontData->mbEmbeddable = FALSE;
++ pList->Add( pFontData );
++ }
++
++ aX11GlyphPeer.SetDisplay( GetXDisplay(),
++ GetDisplay()->GetVisual()->GetVisual() );
+ #ifdef MACOSX
- // don't use bitmap X fonts on OS X
- if ( pFonts->Get(nIdx)->GetFontType() != TYPE_RASTER )
-#endif
@@ -6311,17 +6248,31 @@ diff -u -p -u -r1.105.46.5 -r1.119
- maGraphicsData.GetDisplay()->GetVisual()->GetVisual() );
-#ifdef MACOSX
- GlyphCache::EnsureInstance( aX11GlyphPeer, true );
--#else
++ GlyphCache::EnsureInstance( aX11GlyphPeer, true );
+ #else
- GlyphCache::EnsureInstance( aX11GlyphPeer, false );
--#endif
++ GlyphCache::EnsureInstance( aX11GlyphPeer, false );
+ #endif
- GlyphCache& rGC = GlyphCache::GetInstance();
-
- const psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
- ::std::list< psp::fontID > aList;
- ::std::list< psp::fontID >::iterator it;
- rMgr.getFontList( aList );
+- unicodeKernMap aKernTab;
- for( it = aList.begin(); it != aList.end(); ++it )
-- {
++ GlyphCache& rGC = GlyphCache::GetInstance();
++
++ const psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
++ ::std::list< psp::fontID > aList;
++ ::std::list< psp::fontID >::iterator it;
++ rMgr.getFontList( aList );
++ unicodeKernMap aKernTab;
++ for( it = aList.begin(); it != aList.end(); ++it )
++ {
++ psp::FastPrintFontInfo aInfo;
++ if( rMgr.getFontFastInfo( *it, aInfo ) )
+ {
- psp::FastPrintFontInfo aInfo;
- if( rMgr.getFontFastInfo( *it, aInfo ) )
- {
@@ -6339,14 +6290,58 @@ diff -u -p -u -r1.105.46.5 -r1.119
- aFontData.maName = aFontData.maName.Copy( 4 );
- if( nFaceNum < 0 )
- nFaceNum = 0;
++ if( aInfo.m_eType == psp::fonttype::Builtin )
++ continue;
++ ImplFontData aFontData;
++ PspGraphics::SetImplFontData( aInfo, aFontData );
++ // prefer builtin_rasterizer fonts
++ aFontData.mnQuality += 4096;
++ // prefer truetype fonts
++ if( aInfo.m_eType == psp::fonttype::TrueType )
++ aFontData.mnQuality += 1000;
++ int nFaceNum = rMgr.getFontFaceNumber( aInfo.m_nID );
++ if( aFontData.maName.CompareIgnoreCaseToAscii( "itc ", 4 ) == COMPARE_EQUAL )
++ aFontData.maName = aFontData.maName.Copy( 4 );
++ if( nFaceNum < 0 )
++ nFaceNum = 0;
++
+
+- const unicodeKernMap* pKernTab = NULL;
+- if( aInfo.m_eType == psp::fonttype::Type1 )
++ const unicodeKernMap* pKernTab = NULL;
++ if( aInfo.m_eType == psp::fonttype::Type1 )
++ {
++ const std::list< psp::KernPair >& rKernPairs = rMgr.getKernPairs( *it );
++ if( rKernPairs.size() )
+ {
+- const std::list< psp::KernPair >& rKernPairs = rMgr.getKernPairs( *it );
+- if( rKernPairs.size() )
+- {
+- aKernTab.clear();
+- for( std::list< psp::KernPair >::const_iterator it = rKernPairs.begin();
+- it != rKernPairs.end(); ++it )
+- aKernTab[ it->first ][ it->second ] = it->kern_x;
+- pKernTab = & aKernTab;
+- }
++ aKernTab.clear();
++ for( std::list< psp::KernPair >::const_iterator it = rKernPairs.begin();
++ it != rKernPairs.end(); ++it )
++ aKernTab[ it->first ][ it->second ] = it->kern_x;
++ pKernTab = & aKernTab;
+ }
+-
- rGC.AddFontFile( rMgr.getFontFileSysPath( aInfo.m_nID ), nFaceNum,
-- aInfo.m_nID, &aFontData );
-- }
-- }
+- aInfo.m_nID, &aFontData, pKernTab );
+ }
++
++ // handling of alias names is done by GlyphCache::FetchFontList
++ rGC.AddFontFile( rMgr.getFontFileSysPath( aInfo.m_nID ), nFaceNum,
++ aInfo.m_nID, &aFontData, pKernTab );
+ }
-
- rGC.FetchFontList( pList );
-#endif // USE_BUILTIN_RASTERIZER
-- }
+ }
+ rGC.FetchFontList( pList );
}
@@ -6369,7 +6364,7 @@ diff -u -p -u -r1.105.46.5 -r1.119
}
// ----------------------------------------------------------------------------
-@@ -1831,136 +1297,53 @@ sal_DivideNeg( long n1, long n2 )
+@@ -1861,136 +1296,53 @@ sal_DivideNeg( long n1, long n2 )
// ----------------------------------------------------------------------------
void
@@ -6517,7 +6512,7 @@ diff -u -p -u -r1.105.46.5 -r1.119
if( !pSF )
return FALSE;
-@@ -1972,13 +1355,13 @@ BOOL SalGraphics::GetGlyphBoundRect( lon
+@@ -2002,13 +1354,13 @@ BOOL SalGraphics::GetGlyphBoundRect( lon
// ---------------------------------------------------------------------------
@@ -6533,7 +6528,7 @@ diff -u -p -u -r1.105.46.5 -r1.119
if( !pSF )
return FALSE;
-@@ -1991,29 +1374,13 @@ BOOL SalGraphics::GetGlyphOutline( long
+@@ -2021,29 +1373,13 @@ BOOL SalGraphics::GetGlyphOutline( long
//--------------------------------------------------------------------------
@@ -6565,7 +6560,7 @@ diff -u -p -u -r1.105.46.5 -r1.119
else if( mXFont[ nFallbackLevel ] )
pLayout = new X11FontLayout( *mXFont[ nFallbackLevel ] );
else
-@@ -2024,18 +1391,10 @@ SalLayout* SalGraphicsData::GetTextLayou
+@@ -2054,18 +1390,10 @@ SalLayout* SalGraphicsData::GetTextLayou
//--------------------------------------------------------------------------
@@ -6586,7 +6581,7 @@ diff -u -p -u -r1.105.46.5 -r1.119
sal_uInt8* pEncoding,
sal_Int32* pWidths,
int nGlyphs,
-@@ -2049,41 +1408,7 @@ BOOL SalGraphics::CreateFontSubset(
+@@ -2079,41 +1407,7 @@ BOOL SalGraphics::CreateFontSubset(
// which this method was created). The correct way would
// be to have the GlyphCache search for the ImplFontData pFont
psp::fontID aFont = (psp::fontID)pFont->mpSysData;
@@ -6629,7 +6624,7 @@ diff -u -p -u -r1.105.46.5 -r1.119
#else
return FALSE;
#endif
-@@ -2091,7 +1416,7 @@ BOOL SalGraphics::CreateFontSubset(
+@@ -2121,7 +1415,7 @@ BOOL SalGraphics::CreateFontSubset(
//--------------------------------------------------------------------------
@@ -6638,7 +6633,7 @@ diff -u -p -u -r1.105.46.5 -r1.119
{
#ifndef _USE_PRINT_EXTENSION_
// in this context the sysdata member of pFont should
-@@ -2100,61 +1425,7 @@ const void* SalGraphics::GetEmbedFontDat
+@@ -2130,61 +1424,7 @@ const void* SalGraphics::GetEmbedFontDat
// which this method was created). The correct way would
// be to have the GlyphCache search for the ImplFontData pFont
psp::fontID aFont = (psp::fontID)pFont->mpSysData;
@@ -6701,7 +6696,7 @@ diff -u -p -u -r1.105.46.5 -r1.119
#else
return NULL;
#endif
-@@ -2162,14 +1433,16 @@ const void* SalGraphics::GetEmbedFontDat
+@@ -2192,14 +1432,16 @@ const void* SalGraphics::GetEmbedFontDat
//--------------------------------------------------------------------------
@@ -6721,7 +6716,7 @@ diff -u -p -u -r1.105.46.5 -r1.119
{
#ifndef _USE_PRINT_EXTENSION_
// in this context the sysdata member of pFont should
-@@ -2178,17 +1451,7 @@ const std::map< sal_Unicode, sal_Int32 >
+@@ -2208,17 +1450,7 @@ const std::map< sal_Unicode, sal_Int32 >
// which this method was created). The correct way would
// be to have the GlyphCache search for the ImplFontData pFont
psp::fontID aFont = (psp::fontID)pFont->mpSysData;
@@ -6742,10 +6737,8 @@ diff -u -p -u -r1.105.46.5 -r1.119
#endif
Index: vcl/unx/source/gdi/salnativewidgets-kde.cxx
===================================================================
-RCS file: vcl/unx/source/gdi/salnativewidgets-kde.cxx
-diff -N vcl/unx/source/gdi/salnativewidgets-kde.cxx
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/unx/source/gdi/salnativewidgets-kde.cxx 10 May 2004 15:59:25 -0000 1.2
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ vcl/unx/source/gdi/salnativewidgets-kde.cxx 2004-09-14 14:09:32.421280192 +0200
@@ -0,0 +1,1633 @@
+/*************************************************************************
+ *
@@ -8382,12 +8375,8 @@ diff -N vcl/unx/source/gdi/salnativewidgets-kde.cxx
+/* vim: set tabstop=8 shiftwidth=4: */
Index: vcl/unx/source/gdi/salogl.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/unx/source/gdi/salogl.cxx,v
-retrieving revision 1.7
-retrieving revision 1.11
-diff -u -p -u -r1.7 -r1.11
---- vcl/unx/source/gdi/salogl.cxx 15 Apr 2003 16:10:05 -0000 1.7
-+++ vcl/unx/source/gdi/salogl.cxx 10 May 2004 15:59:38 -0000 1.11
+--- vcl/unx/source/gdi/salogl.cxx.orig 2004-09-12 14:26:04.000000000 +0200
++++ vcl/unx/source/gdi/salogl.cxx 2004-09-14 14:09:32.422280040 +0200
@@ -59,8 +59,6 @@
*
************************************************************************/
@@ -8679,12 +8668,8 @@ diff -u -p -u -r1.7 -r1.11
int nVisuals )
Index: vcl/unx/source/gdi/salprnpsp.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/unx/source/gdi/salprnpsp.cxx,v
-retrieving revision 1.27.40.2
-retrieving revision 1.33
-diff -u -p -u -r1.27.40.2 -r1.33
---- vcl/unx/source/gdi/salprnpsp.cxx 28 Jan 2004 15:25:52 -0000 1.27.40.2
-+++ vcl/unx/source/gdi/salprnpsp.cxx 10 May 2004 15:59:51 -0000 1.33
+--- vcl/unx/source/gdi/salprnpsp.cxx.orig 2004-09-12 14:26:04.000000000 +0200
++++ vcl/unx/source/gdi/salprnpsp.cxx 2004-09-14 14:09:32.426279432 +0200
@@ -79,14 +79,14 @@
#ifndef _SV_JOBSET_H
#include <jobset.h>
@@ -9256,12 +9241,8 @@ diff -u -p -u -r1.27.40.2 -r1.33
Index: vcl/unx/source/gdi/salvd.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/unx/source/gdi/salvd.cxx,v
-retrieving revision 1.4
-retrieving revision 1.8
-diff -u -p -u -r1.4 -r1.8
---- vcl/unx/source/gdi/salvd.cxx 27 Mar 2003 17:58:52 -0000 1.4
-+++ vcl/unx/source/gdi/salvd.cxx 10 May 2004 16:00:04 -0000 1.8
+--- vcl/unx/source/gdi/salvd.cxx.orig 2004-09-12 14:26:04.000000000 +0200
++++ vcl/unx/source/gdi/salvd.cxx 2004-09-14 14:09:32.427279280 +0200
@@ -59,9 +59,6 @@
*
************************************************************************/
@@ -9484,12 +9465,8 @@ diff -u -p -u -r1.4 -r1.8
}
Index: vcl/unx/source/gdi/xfont.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/unx/source/gdi/xfont.cxx,v
-retrieving revision 1.29.82.2
-retrieving revision 1.36
-diff -u -p -u -r1.29.82.2 -r1.36
---- vcl/unx/source/gdi/xfont.cxx 26 Jan 2004 17:26:20 -0000 1.29.82.2
-+++ vcl/unx/source/gdi/xfont.cxx 17 Jun 2004 12:29:36 -0000 1.36
+--- vcl/unx/source/gdi/xfont.cxx.orig 2004-09-12 14:26:04.000000000 +0200
++++ vcl/unx/source/gdi/xfont.cxx 2004-09-14 14:09:32.428279128 +0200
@@ -76,8 +76,11 @@
#ifndef _SV_OUTFONT_HXX
#include <outfont.hxx>
@@ -9514,7 +9491,7 @@ diff -u -p -u -r1.29.82.2 -r1.36
mpRangeCodes(NULL),
mnRangeCount(-1)
{
-@@ -434,7 +438,7 @@ ExtendedFontStruct::GetDefaultWidth()
+@@ -437,7 +440,7 @@ ExtendedFontStruct::GetDefaultWidth()
// is compatible with iso8859-X at least in the range to 0x7f
sal_Size
ExtendedFontStruct::GetCharWidth8( sal_Unicode nFrom, sal_Unicode nTo,
@@ -9523,7 +9500,7 @@ diff -u -p -u -r1.29.82.2 -r1.36
{
if ( !(nFrom <= nTo) )
return 0;
-@@ -477,7 +481,7 @@ ExtendedFontStruct::GetCharWidth8( sal_U
+@@ -480,7 +483,7 @@ ExtendedFontStruct::GetCharWidth8( sal_U
// Handle utf16 encoded fonts, which do not require conversion
sal_Size
ExtendedFontStruct::GetCharWidthUTF16( sal_Unicode nFrom, sal_Unicode nTo,
@@ -9532,7 +9509,7 @@ diff -u -p -u -r1.29.82.2 -r1.36
{
if ( !(nFrom <= nTo) )
return 0;
-@@ -523,7 +527,7 @@ ExtendedFontStruct::GetCharWidthUTF16( s
+@@ -526,7 +529,7 @@ ExtendedFontStruct::GetCharWidthUTF16( s
// font in fontstruct, 8 and 16 bit fonts are handled the same way
sal_Size
ExtendedFontStruct::GetCharWidth16( sal_Unicode nFrom, sal_Unicode nTo,
@@ -9541,7 +9518,7 @@ diff -u -p -u -r1.29.82.2 -r1.36
{
if ( nFrom > nTo )
return 0;
-@@ -608,8 +612,8 @@ ExtendedFontStruct::GetCharWidth16( sal_
+@@ -611,8 +614,8 @@ ExtendedFontStruct::GetCharWidth16( sal_
}
sal_Size
@@ -9552,7 +9529,7 @@ diff -u -p -u -r1.29.82.2 -r1.36
{
sal_Size nConverted = 0;
-@@ -707,7 +711,9 @@ bool X11FontLayout::LayoutText( ImplLayo
+@@ -710,7 +713,9 @@ bool X11FontLayout::LayoutText( ImplLayo
{
Point aNewPos( 0, 0 );
bool bRightToLeft;
@@ -9563,7 +9540,7 @@ diff -u -p -u -r1.29.82.2 -r1.36
{
sal_Unicode cChar = rArgs.mpStr[ nCharPos ];
if( bRightToLeft )
-@@ -722,7 +728,7 @@ bool X11FontLayout::LayoutText( ImplLayo
+@@ -725,7 +730,7 @@ bool X11FontLayout::LayoutText( ImplLayo
nGlyphIndex = 0; // drop NotDef fallback glyphs
}
@@ -9572,7 +9549,7 @@ diff -u -p -u -r1.29.82.2 -r1.36
mrFont.GetCharWidth( cChar, &nPhysGlyphWidth, &nLogGlyphWidth );
int nGlyphFlags = (nPhysGlyphWidth > 0) ? 0 : GlyphItem::IS_IN_CLUSTER;
if( bRightToLeft )
-@@ -753,7 +759,7 @@ void X11FontLayout::DrawText( SalGraphic
+@@ -756,7 +761,7 @@ void X11FontLayout::DrawText( SalGraphic
int nMaxGlyphs = GetOrientation() ? 1 : MAXGLYPHS;
Point aPos;
@@ -9581,7 +9558,7 @@ diff -u -p -u -r1.29.82.2 -r1.36
sal_Unicode pStr[ MAXGLYPHS ];
for( int nStart=0;;)
{
-@@ -764,7 +770,7 @@ void X11FontLayout::DrawText( SalGraphic
+@@ -767,7 +772,7 @@ void X11FontLayout::DrawText( SalGraphic
for( int i = 0; i < nGlyphCount; ++i )
pStr[ i ] = aGlyphAry[ i ] & GF_IDXMASK;
@@ -9592,12 +9569,8 @@ diff -u -p -u -r1.29.82.2 -r1.36
Index: vcl/unx/source/gdi/xlfd_attr.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/unx/source/gdi/xlfd_attr.cxx,v
-retrieving revision 1.14
-retrieving revision 1.15
-diff -u -p -u -r1.14 -r1.15
---- vcl/unx/source/gdi/xlfd_attr.cxx 12 Jun 2003 08:19:39 -0000 1.14
-+++ vcl/unx/source/gdi/xlfd_attr.cxx 6 Jan 2004 14:41:47 -0000 1.15
+--- vcl/unx/source/gdi/xlfd_attr.cxx.orig 2004-09-12 14:26:04.000000000 +0200
++++ vcl/unx/source/gdi/xlfd_attr.cxx 2004-09-14 14:09:32.433278368 +0200
@@ -120,10 +120,12 @@ Attribute::Compare( const char *p, int n
const rtl::OString&
Attribute::GetKey ()
@@ -9614,12 +9587,8 @@ diff -u -p -u -r1.14 -r1.15
Index: vcl/unx/source/gdi/xlfd_extd.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/unx/source/gdi/xlfd_extd.cxx,v
-retrieving revision 1.16.46.2
-retrieving revision 1.21
-diff -u -p -u -r1.16.46.2 -r1.21
---- vcl/unx/source/gdi/xlfd_extd.cxx 26 Jan 2004 17:26:45 -0000 1.16.46.2
-+++ vcl/unx/source/gdi/xlfd_extd.cxx 30 Mar 2004 13:43:43 -0000 1.21
+--- vcl/unx/source/gdi/xlfd_extd.cxx.orig 2004-09-12 14:26:04.000000000 +0200
++++ vcl/unx/source/gdi/xlfd_extd.cxx 2004-09-14 14:09:32.435278064 +0200
@@ -652,7 +652,7 @@ ScalableBitmapXlfd::ToString( ByteString
rString += '-';
rString += ByteString::CreateFromInt32( rInfo.mnResolutionY );
@@ -9733,12 +9702,8 @@ diff -u -p -u -r1.16.46.2 -r1.21
AppendAttribute( mpFactory->RetrieveCharset(rInfo.mnCharset), rString );
Index: vcl/unx/source/gdi/xlfd_extd.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/unx/source/gdi/xlfd_extd.hxx,v
-retrieving revision 1.9.120.2
-retrieving revision 1.12
-diff -u -p -u -r1.9.120.2 -r1.12
---- vcl/unx/source/gdi/xlfd_extd.hxx 26 Jan 2004 17:27:37 -0000 1.9.120.2
-+++ vcl/unx/source/gdi/xlfd_extd.hxx 17 Mar 2004 10:07:56 -0000 1.12
+--- vcl/unx/source/gdi/xlfd_extd.hxx.orig 2004-09-12 14:26:04.000000000 +0200
++++ vcl/unx/source/gdi/xlfd_extd.hxx 2004-09-14 14:09:32.435278064 +0200
@@ -93,8 +93,8 @@ class XlfdStorage;
class ExtendedXlfd {
@@ -9752,12 +9717,8 @@ diff -u -p -u -r1.9.120.2 -r1.12
ExtendedXlfd();
Index: vcl/unx/source/gdi/xlfd_smpl.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/unx/source/gdi/xlfd_smpl.cxx,v
-retrieving revision 1.5
-retrieving revision 1.7
-diff -u -p -u -r1.5 -r1.7
---- vcl/unx/source/gdi/xlfd_smpl.cxx 15 Apr 2003 16:11:23 -0000 1.5
-+++ vcl/unx/source/gdi/xlfd_smpl.cxx 18 May 2004 13:49:24 -0000 1.7
+--- vcl/unx/source/gdi/xlfd_smpl.cxx.orig 2004-09-12 14:26:04.000000000 +0200
++++ vcl/unx/source/gdi/xlfd_smpl.cxx 2004-09-14 14:09:32.436277912 +0200
@@ -282,12 +282,12 @@ Xlfd::ToString( ByteString &rString ) co
AppendAttribute( mpFactory->RetrieveSetwidth(mnSetwidth), rString );
AppendAttribute( mpFactory->RetrieveAddstyle(mnAddstyle), rString );
@@ -9779,12 +9740,8 @@ diff -u -p -u -r1.5 -r1.7
Index: vcl/unx/source/gdi/xprintext.cxx
===================================================================
-RCS file: /cvs/gsl/vcl/unx/source/gdi/xprintext.cxx,v
-retrieving revision 1.6
-retrieving revision 1.8
-diff -u -p -u -r1.6 -r1.8
---- vcl/unx/source/gdi/xprintext.cxx 15 Apr 2003 16:11:42 -0000 1.6
-+++ vcl/unx/source/gdi/xprintext.cxx 30 Mar 2004 13:43:56 -0000 1.8
+--- vcl/unx/source/gdi/xprintext.cxx.orig 2004-09-12 14:26:04.000000000 +0200
++++ vcl/unx/source/gdi/xprintext.cxx 2004-09-14 14:09:32.437277760 +0200
@@ -59,8 +59,6 @@
*
************************************************************************/