diff options
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 @@ * ************************************************************************/ |