summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rwxr-xr-xbin/build-ooo4
-rwxr-xr-xbin/package-ooo27
-rw-r--r--configure.in4
-rwxr-xr-xdownload.in1
-rw-r--r--patches/OOO_1_1/build-split-resources.diff118
-rw-r--r--patches/OOO_1_1/disable-hindi-kannada.diff13
-rw-r--r--patches/OOO_1_1/email-attachment.diff38
-rw-r--r--patches/OOO_1_1/gui-toolbox-large-icons.diff31
-rw-r--r--patches/OOO_1_1/i18n-calc-encoding.diff69
-rw-r--r--patches/OOO_1_1/l10n-YTL.diff26
-rw-r--r--patches/OOO_1_1/qpro-build.diff123
-rw-r--r--patches/OOO_1_1/qpro-detect.diff127
-rw-r--r--patches/OOO_1_1/sc-autofilter-empty-nonempty.diff42
-rw-r--r--patches/OOO_1_1/sc-cell-selection-i3875.diff141
-rw-r--r--patches/OOO_1_1/sc-filter-hide-filteredrows.diff15
-rw-r--r--patches/OOO_1_1/sc-no-delete-filteredrows.diff88
-rw-r--r--patches/OOO_1_1/sc-paste-limitedsize.diff25
-rw-r--r--patches/OOO_1_1/sc-standard-filter-options.diff354
-rw-r--r--patches/OOO_1_1/sd-export-html-translations.diff34
-rw-r--r--patches/OOO_1_1/sw-escape-print-preview.diff15
-rw-r--r--patches/OOO_1_1/sysui-mimetypes.diff50
-rw-r--r--patches/OOO_1_1/sysui-translations.diff266
-rwxr-xr-xpatches/OOO_1_1/win32-gw-send-mail.diff2
-rw-r--r--patches/OOO_1_1/word-count.diff149
-rw-r--r--patches/OOO_1_1_2/gui-toolbox-large-icons.diff86
-rw-r--r--patches/OOO_1_1_2/iiimf-multilingual-extension-2-enable.diff57
-rw-r--r--patches/OOO_1_1_2/sd-export-html-translations.diff92
-rw-r--r--patches/OOO_1_1_2/vcl-inc.diff8737
-rw-r--r--patches/OOO_1_1_2/vcl-source-glyphs.diff792
-rw-r--r--patches/OOO_1_1_2/vcl-unx-source-gdi.diff9805
-rw-r--r--patches/OOO_1_1_2/word-count.diff285
-rw-r--r--patches/vclplug/vcl-inc.diff1183
-rw-r--r--patches/vclplug/vcl-source-gdi.diff22
-rw-r--r--patches/vclplug/vcl-source-glyphs.diff395
-rw-r--r--patches/vclplug/vcl-unx-source-gdi.diff421
-rw-r--r--patches/vclplug/vcl-util.diff2
36 files changed, 21934 insertions, 1705 deletions
diff --git a/bin/build-ooo b/bin/build-ooo
index 9e46c4e31..65e377a57 100755
--- a/bin/build-ooo
+++ b/bin/build-ooo
@@ -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/package-ooo b/bin/package-ooo
index 42bdb544a..d2e3ab983 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
diff --git a/configure.in b/configure.in
index 043a1c0ad..ff23391ed 100644
--- a/configure.in
+++ b/configure.in
@@ -249,10 +249,6 @@ if test "z$with_tag" = "z"; then
fi
APPLY_DIR="$TOOLSDIR/patches/$with_tag"
-# Exceptions for some tags...
-if test "z$with_tag" = "zOOO_1_1_3_fix2" ; then
- APPLY_DIR="$TOOLSDIR/patches/OOO_1_1_3"
-fi
if test -f $APPLY_DIR/apply; then
AC_MSG_RESULT( found $with_tag, using $APPLY_DIR/apply )
diff --git a/download.in b/download.in
index e757ce96c..27fd6b2bf 100755
--- a/download.in
+++ b/download.in
@@ -23,6 +23,7 @@ sub usage {
'OOO_1_1_0.tar.bz2' => 'http://ooo.ximian.com/packages/OOO_1_1_0',
'OOO_1_1_1.tar.bz2' => 'http://ooo.ximian.com/packages/OOO_1_1_1',
'OOO_1_1_2.tar.bz2' => 'http://ooo.ximian.com/packages/OOO_1_1_2',
+ 'OOO_1_1_3.tar.bz2' => 'http://ooo.ximian.com/packages/OOO_1_1_3',
'OOO_1_1_3_fix2.tar.bz2' => 'http://ooo.ximian.com/packages/OOO_1_1_3',
'libwpd-snap-20040823.tar.gz' => 'http://ooo.ximian.com/packages',
'ooo-scaled-icons.tar.gz' => 'http://ooo.ximian.com/packages',
diff --git a/patches/OOO_1_1/build-split-resources.diff b/patches/OOO_1_1/build-split-resources.diff
new file mode 100644
index 000000000..c301d1da6
--- /dev/null
+++ b/patches/OOO_1_1/build-split-resources.diff
@@ -0,0 +1,118 @@
+Index: inc/sc.hrc
+===================================================================
+RCS file: /cvs/sc/sc/inc/sc.hrc,v
+retrieving revision 1.35
+retrieving revision 1.35.288.2
+diff -u -r1.35 -r1.35.288.2
+--- sc/inc/sc.hrc 3 Dec 2002 15:26:06 -0000 1.35
++++ sc/inc/sc.hrc 17 Sep 2004 14:25:38 -0000 1.35.288.2
+@@ -1141,8 +1141,12 @@
+ #define RID_TBXCTL_INSOBJ (SC_RESOURCE_START+40)
+ #define RID_BMP_REFBTN1 (SC_RESOURCE_START+41)
+ #define RID_BMP_REFBTN2 (SC_RESOURCE_START+42)
+-#define RID_SC_FUNCTION_DESCRIPTIONS1 (SC_RESOURCE_START+43)
+-#define RID_SC_FUNCTION_DESCRIPTIONS2 (SC_RESOURCE_START+44)
++// #i34210# split function resources due to 64k limit, don't reuse old values
++// to have obviously empty function lists in case some localisation used the
++// old values for any reason. Don't even reuse the exact name because of the
++// translation database IDs.
++//#define RID_SC_FUNCTION_DESCRIPTIONS1 (SC_RESOURCE_START+43)
++//#define RID_SC_FUNCTION_DESCRIPTIONS2 (SC_RESOURCE_START+44)
+ #define RID_POPUP_CONTROL (SC_RESOURCE_START+45)
+ #define RID_POPUP_PAGEBREAK (SC_RESOURCE_START+46)
+ #define RID_OBJECTBAR_DRAWFORM (SC_RESOURCE_START+47)
+@@ -1158,6 +1162,10 @@
+ #define RID_IMAGELIST_H_NAVCONT (SC_RESOURCE_START+57)
+ #define RID_OUTLINEBITMAPS_H (SC_RESOURCE_START+58)
+ #define RID_OBJECTMENU_EDIT (SC_RESOURCE_START+59)
++#define RID_SC_FUNCTION_DESCRIPTIONS_1 (SC_RESOURCE_START+60)
++#define RID_SC_FUNCTION_DESCRIPTIONS_2 (SC_RESOURCE_START+61)
++#define RID_SC_FUNCTION_DESCRIPTIONS_3 (SC_RESOURCE_START+62)
++#define RID_SC_FUNCTION_DESCRIPTIONS_4 (SC_RESOURCE_START+63)
+
+ #define STR_START (SC_RESOURCE_START+100)
+ #define STR_ROWHEIGHT (STR_START)
+Index: source/core/data/global.cxx
+===================================================================
+RCS file: /cvs/sc/sc/source/core/data/global.cxx,v
+retrieving revision 1.31
+retrieving revision 1.31.166.2
+diff -u -r1.31 -r1.31.166.2
+--- sc/source/core/data/global.cxx 17 Apr 2003 09:54:45 -0000 1.31
++++ sc/source/core/data/global.cxx 17 Sep 2004 14:25:38 -0000 1.31.166.2
+@@ -1475,10 +1475,12 @@
+ USHORT i,j;
+ USHORT nDescBlock[] =
+ {
+- RID_SC_FUNCTION_DESCRIPTIONS1,
+- RID_SC_FUNCTION_DESCRIPTIONS2
++ RID_SC_FUNCTION_DESCRIPTIONS_1,
++ RID_SC_FUNCTION_DESCRIPTIONS_2,
++ RID_SC_FUNCTION_DESCRIPTIONS_3,
++ RID_SC_FUNCTION_DESCRIPTIONS_4
+ };
+- const USHORT nBlocks = sizeof(nDescBlock) / sizeof(USHORT);
++ const USHORT nBlocks = sizeof(nDescBlock) / sizeof(nDescBlock[0]);
+
+ aFunctionList.Clear();
+
+Index: source/ui/src/scfuncs.src
+===================================================================
+RCS file: /cvs/sc/sc/source/ui/src/scfuncs.src,v
+retrieving revision 1.76.22.8
+retrieving revision 1.76.22.8.4.2
+diff -u -r1.76.22.8 -r1.76.22.8.4.2
+--- sc/source/ui/src/scfuncs.src 10 Sep 2004 14:45:52 -0000 1.76.22.8
++++ sc/source/ui/src/scfuncs.src 17 Sep 2004 14:25:39 -0000 1.76.22.8.4.2
+@@ -93,10 +93,16 @@
+ // RID_SC_FUNCTION_DESCRIPTIONS1
+ // RID_SC_FUNCTION_DESCRIPTIONS2
+
++ // #i34210# again splitted resources due to 64k limit
++ // RID_SC_FUNCTION_DESCRIPTIONS_1
++ // RID_SC_FUNCTION_DESCRIPTIONS_2
++ // RID_SC_FUNCTION_DESCRIPTIONS_3
++ // RID_SC_FUNCTION_DESCRIPTIONS_4
++
+ #include "scfuncs.hrc" // ID_FUNCTION_GRP_XXX, HID_FUNC_XXX
+ #include "compiler.hrc" // SC_OPCODE_XXX
+
+-Resource RID_SC_FUNCTION_DESCRIPTIONS1
++Resource RID_SC_FUNCTION_DESCRIPTIONS_1
+ {
+ // -=*# Resource for function DBANZAHL #*=-
+ Resource SC_OPCODE_DB_COUNT
+@@ -15963,6 +15969,11 @@
+ Text[ galician ] = "Valor 1; Valor 2;... son de 1 a 30 argumentos que representan os pagamentos e ingresos.";
+ };
+ };
++};
++
++
++Resource RID_SC_FUNCTION_DESCRIPTIONS_2
++{
+ // -=*# Resource for function IKV #*=-
+ Resource SC_OPCODE_IKV
+ {
+@@ -32174,7 +32185,8 @@
+ };
+ };
+
+-Resource RID_SC_FUNCTION_DESCRIPTIONS2
++
++Resource RID_SC_FUNCTION_DESCRIPTIONS_3
+ {
+ // -=*# Resource for function DBANZAHL2 #*=-
+ // -=*# Resource for function HÄUFIGKEIT #*=-
+@@ -49230,6 +49242,11 @@
+ Text[ galician ] = "é o número de graos de liberdade.";
+ };
+ };
++};
++
++
++Resource RID_SC_FUNCTION_DESCRIPTIONS_4
++{
+ // -=*# Resource for function STANDARDISIERUNG #*=-
+ Resource SC_OPCODE_STANDARD
+ {
diff --git a/patches/OOO_1_1/disable-hindi-kannada.diff b/patches/OOO_1_1/disable-hindi-kannada.diff
new file mode 100644
index 000000000..11fdc8a29
--- /dev/null
+++ b/patches/OOO_1_1/disable-hindi-kannada.diff
@@ -0,0 +1,13 @@
+--- config_office/set_soenv.in-old 2004-10-09 22:36:28.000000000 +0200
++++ config_office/set_soenv.in 2004-10-09 22:36:59.000000000 +0200
+@@ -49,8 +49,8 @@
+ #-------------------------------------------------
+ #
+ # Platform independent constant values.
+-my @LANGUAGES = ("AFRIK", "ARAB", "BASQUE", "CAT", "CHINSIM", "CHINTRAD", "CZECH", "DAN", "DTCH", "ENUS", "ESTONIAN", "FINN", "FREN", "GAL", "GREEK", "HEBREW", "HINDI", "HUNG", "ITAL",
+-"JAPN", "KANNADA", "KOREAN", "LITHUANIAN", "NORBOK", "NORNYN", "NSOTHO", "POL", "PORT", "PORTBR", "RUSS", "SLOVAK", "SLOVENIAN", "SPAN", "SWED", "THAI", "TSWANA", "TURK", "WELSH", "ZULU" );
++my @LANGUAGES = ("AFRIK", "ARAB", "BASQUE", "CAT", "CHINSIM", "CHINTRAD", "CZECH", "DAN", "DTCH", "ENUS", "ESTONIAN", "FINN", "FREN", "GAL", "GREEK", "HEBREW", "HUNG", "ITAL",
++"JAPN", "KOREAN", "LITHUANIAN", "NORBOK", "NORNYN", "NSOTHO", "POL", "PORT", "PORTBR", "RUSS", "SLOVAK", "SLOVENIAN", "SPAN", "SWED", "THAI", "TSWANA", "TURK", "WELSH", "ZULU" );
+ my @DICTIONARIES = ("DADK", "DEDE", "ENGB", "ENUS", "ITIT", "RURU" );
+ my ( $CALL_CDECL, $COMMON_OUTDIR, $NO_SRS_PATCH, $PRODUCT, $PROFULLSWITCH, $BIG_GOODIES, $BMP_WRITES_FLAG,
+ $common_build, $MK_UNROLL, $NO_REC_RES, $PROEXT, $SO3, $SOLAR_JAVA,
diff --git a/patches/OOO_1_1/email-attachment.diff b/patches/OOO_1_1/email-attachment.diff
new file mode 100644
index 000000000..6b51cb9ba
--- /dev/null
+++ b/patches/OOO_1_1/email-attachment.diff
@@ -0,0 +1,38 @@
+--- unotools/source/ucbhelper/tempfile.cxx 2004-10-12 10:47:47.000000000 +0530
++++ unotools/source/ucbhelper/tempfile.cxx 2004-10-19 16:20:49.663737320 +0530
+@@ -324,7 +324,8 @@
+ for ( sal_Int32 i=0;; i++ )
+ {
+ String aTmp( aName );
+- aTmp += String::CreateFromInt32( i );
++ if (i)
++ aTmp += String::CreateFromInt32( i );
+ if ( pExtension )
+ aTmp += *pExtension;
+ else
+--- sfx2/source/dialog/mailmodel.cxx 2004-10-19 16:52:56.703782704 +0530
++++ sfx2/source/dialog/mailmodel.cxx 2004-10-11 20:48:22.000000000 +0530
+@@ -341,12 +341,12 @@
+ pExt = new String( String::CreateFromAscii( "." ) + aFileObj.getExtension() );
+ aFileObj.removeExtension();
+ aLeadingStr = aFileObj.getName( INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_WITH_CHARSET );
+- aLeadingStr += String::CreateFromAscii( "_" );
++ // aLeadingStr += String::CreateFromAscii( "_" );
+ }
+ else
+ {
+ aLeadingStr = aFileObj.getName( INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_WITH_CHARSET );
+- aLeadingStr += String::CreateFromAscii( "_" );
++ // aLeadingStr += String::CreateFromAscii( "_" );
+ }
+ }
+
+@@ -441,7 +441,7 @@
+ pExt = new String( aPDFExtension );
+ aFileObj.removeExtension();
+ aLeadingStr = aFileObj.getName( INetURLObject::LAST_SEGMENT, true, INetURLObject::DECODE_WITH_CHARSET );
+- aLeadingStr += String::CreateFromAscii( "_" );
++ // aLeadingStr += String::CreateFromAscii( "_" );
+ }
+ else
+ {
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 ~cálculo"
- 55 = "~Planilha"
- 48 = "~Arkusz kalkulacyjny"
--03 = "Folha de ~cálculo"
-+03 = "Folha de ~cálculo"
- 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 = "~Presentación"
55 = "A~presentação"
48 = "~Prezentacja"
@@ -48,7 +37,7 @@ diff -u -r1.57.24.5 profile_impress.lng
82 = "프레젠테ì´ì…˜(~P)"
33 = "~Présentation"
96 = "ÚÑÖ Ê~ÞÏíãí"
-@@ -714,7 +714,7 @@
+@@ -809,7 +809,7 @@
34 = "~Presentación..."
55 = "A~presentação..."
48 = "~Prezentacja..."
@@ -56,15 +45,12 @@ diff -u -r1.57.24.5 profile_impress.lng
+03 = "A~presentação..."
82 = "프레젠테ì´ì…˜(~P)..."
33 = "~Présentation..."
- 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 = "~Fórmula"
55 = "~Fórmula"
48 = "F~ormu³a"
@@ -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 = "Cartões de ~Visita"
48 = "~Wizytówki"
@@ -88,8 +71,8 @@ diff -u -r1.58.24.8 profile.lng
+03 = "Cartões de ~visita"
82 = "명함(~U)"
33 = "Cartes de ~visite"
- 96 = "B~usiness Cards"
-@@ -1302,7 +1302,7 @@
+ 96 = "ß~ÑÊ ÇáÚãá"
+@@ -1477,7 +1477,7 @@
34 = "Página ~Web..."
55 = "Página da ~Web..."
48 = "Strona ~WWW..."
@@ -97,8 +80,8 @@ diff -u -r1.58.24.8 profile.lng
+03 = "Página ~Web..."
82 = "웹 페ì´ì§€(~W)..."
33 = "Page ~Web..."
- 96 = "~Web Page..."
-@@ -1339,7 +1339,7 @@
+ 96 = "~ÕÝÍÉ æíÈ..."
+@@ -1519,7 +1519,7 @@
34 = "Formulario..."
55 = "~Formulário..."
48 = "Fo~rmularz..."
@@ -106,8 +89,8 @@ diff -u -r1.58.24.8 profile.lng
+03 = "F~ormulário..."
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/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/qpro-build.diff b/patches/OOO_1_1/qpro-build.diff
new file mode 100644
index 000000000..625393339
--- /dev/null
+++ b/patches/OOO_1_1/qpro-build.diff
@@ -0,0 +1,123 @@
+--- 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,92 @@
++#*************************************************************************
++#
++# $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
++
++SLOFILES = \
++ $(SLO)$/qpro.obj
++
++# --- Tagets -------------------------------------------------------
++
++.INCLUDE : target.mk
++
diff --git a/patches/OOO_1_1/qpro-detect.diff b/patches/OOO_1_1/qpro-detect.diff
new file mode 100644
index 000000000..8301d043d
--- /dev/null
+++ b/patches/OOO_1_1/qpro-detect.diff
@@ -0,0 +1,127 @@
+--- sc/source/ui/docshell/docsh.cxx 2004-07-21 19:20:09.000000000 +0100
++++ sc/source/ui/docshell/docsh.cxx 2004-10-22 15:12:53.630321776 +0100
+@@ -185,6 +185,7 @@
+ static const sal_Char __FAR_DATA pFilterXML[] = "StarOffice XML (Calc)";
+ static const sal_Char __FAR_DATA pFilterAscii[] = "Text - txt - csv (StarCalc)";
+ static const sal_Char __FAR_DATA pFilterLotus[] = "Lotus";
++static const sal_Char __FAR_DATA pFilterQPro[] = "QPro";
+ static const sal_Char __FAR_DATA pFilterExcel4[] = "MS Excel 4.0";
+ static const sal_Char __FAR_DATA pFilterEx4Temp[] = "MS Excel 4.0 Vorlage/Template";
+ static const sal_Char __FAR_DATA pFilterExcel5[] = "MS Excel 5.0/95";
+@@ -977,6 +978,22 @@
+ // #93255# update of row height done inside of Excel filter to speed up chart import
+ // bSetRowHeights = TRUE; // #75357# optimal row heights must be updated
+ }
++ else if (aFltName.EqualsAscii(pFilterQPro))
++ {
++ ScColumn::bDoubleAlloc = TRUE;
++ FltError eError = ScImportQuattroPro( rMedium, &aDocument );
++ ScColumn::bDoubleAlloc = FALSE;
++ if (eError != eERR_OK)
++ {
++ if (!GetError())
++ SetError( eError );
++
++ if( ( eError & ERRCODE_WARNING_MASK ) == ERRCODE_WARNING_MASK )
++ bRet = TRUE;
++ }
++ else
++ bRet = TRUE;
++ }
+ else if (aFltName.EqualsAscii(pFilterAscii))
+ {
+ SfxItemSet* pSet = rMedium.GetItemSet();
+
+--- sc/source/ui/app/sclib.cxx 2004-08-30 16:47:25.000000000 +0100
++++ sc/source/ui/app/sclib.cxx 2004-10-22 15:25:49.082435136 +0100
+@@ -103,6 +103,7 @@
+ static const sal_Char __FAR_DATA pFilterXML[] = "StarOffice XML (Calc)";
+ static const sal_Char __FAR_DATA pFilterAscii[] = "Text - txt - csv (StarCalc)";
+ static const sal_Char __FAR_DATA pFilterLotus[] = "Lotus";
++static const sal_Char __FAR_DATA pFilterQPro[] = "QPro";
+ static const sal_Char __FAR_DATA pFilterExcel4[] = "MS Excel 4.0";
+ static const sal_Char __FAR_DATA pFilterEx4Temp[] = "MS Excel 4.0 Vorlage/Template";
+ static const sal_Char __FAR_DATA pFilterExcel5[] = "MS Excel 5.0/95";
+@@ -557,6 +558,13 @@
+ 0x0000, 0x0000,
+ M_ENDE };
+
++ const UINT16 pQPro[] =
++ { 0x0000, 0x0000, 0x0002, 0x0000,
++ M_ALT(4), 0x0001, 0x0002, // WB1, WB2
++ 0x0006, 0x0007, // QPro 6/7 (?)
++ 0x0010,
++ M_ENDE };
++
+ const UINT16 pDIF1[] = // DIF mit CR-LF
+ {
+ 'T', 'A', 'B', 'L', 'E',
+@@ -604,6 +612,7 @@
+ pDIF1,
+ pDIF2,
+ pSylk,
++ pQPro,
+ pLotus97,
+ pLotus2
+ };
+@@ -620,4 +629,5 @@
+ pFilterDif,
+ pFilterDif,
+ pFilterSylk,
++ pFilterQPro,
+ pFilterLotus,
+ pFilterLotus
+ };
+
+ const UINT16 nByteMask = 0xFF;
+
+--- officecfg/registry/data/org/openoffice/Office/TypeDetection.xcu
++++ officecfg/registry/data/org/openoffice/Office/TypeDetection.xcu
+@@ -227,6 +227,14 @@
+ <value>1,,,,wk1;wks;123,0,</value>
+ </prop>
+ </node>
++ <node oor:name="calc_QPro" oor:op="replace">
++ <prop oor:name="UIName">
++ <value xml:lang="en-US">Quattro Pro</value>
++ </prop>
++ <prop oor:name="Data">
++ <value>1,,,,wb1;wb2,0,</value>
++ </prop>
++ </node>
+ <node oor:name="calc_MS_Excel_40" oor:op="replace">
+ <prop oor:name="UIName">
+ <value xml:lang="en-US">Microsoft Excel 4.0</value>
+@@ -4622,6 +4630,17 @@
+ <value>0,calc_Lotus,com.sun.star.sheet.SpreadsheetDocument,,268435649,,0,,com.sun.star.comp.Calc.FilterOptionsDialog</value>
+ </prop>
+ </node>
++ <node oor:name="QPro" oor:op="replace">
++ <prop oor:name="UIName">
++ <value xml:lang="en-US">Quattro Pro</value>
++ </prop>
++ <prop oor:name="Data">
++ <value>0,calc_QPro,com.sun.star.sheet.SpreadsheetDocument,,268435649,,0,,</value>
++ </prop>
++ <prop oor:name="Installed" oor:type="xs:boolean">
++ <value>true</value>
++ </prop>
++ </node>
+ <node oor:name="MS Excel 4.0" oor:op="replace">
+ <prop oor:name="Installed">
+ <value>false</value>
+
+--- sc/inc/filter.hxx 2004-07-21 19:19:36.000000000 +0100
++++ sc/inc/filter.hxx 2004-10-19 15:17:47.907974240 +0100
+@@ -122,6 +122,8 @@
+
+ FltError ScImportLotus123( SfxMedium&, ScDocument*, CharSet eSrc = RTL_TEXTENCODING_DONTKNOW );
+
++FltError ScImportQuattroPro( SfxMedium&, ScDocument* );
++
+ FltError ScImportExcel( SvStream&, ScDocument* );
+
+ FltError ScImportExcel( SfxMedium&, ScDocument* );
+
+
+
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-cell-selection-i3875.diff b/patches/OOO_1_1/sc-cell-selection-i3875.diff
new file mode 100644
index 000000000..1c67ee2d9
--- /dev/null
+++ b/patches/OOO_1_1/sc-cell-selection-i3875.diff
@@ -0,0 +1,141 @@
+--- sc/source/ui/inc/viewdata.hxx 2004-10-19 11:08:50.000000000 +0530
++++ sc/source/ui/inc/viewdata.hxx 2004-10-19 11:31:25.222005216 +0530
+@@ -54,7 +54,7 @@
+ *
+ * All Rights Reserved.
+ *
+- * Contributor(s): _______________________________________
++ * Contributor(s): Kohei Yoshida__________________________
+ *
+ *
+ ************************************************************************/
+@@ -218,6 +218,8 @@
+ BYTE nFillMode; // Modus
+ BOOL bPagebreak; // Seitenumbruch-Vorschaumodus
+
++ BOOL bSelCtrlMouseClick;
++
+ DECL_LINK (EmptyEditHdl, EditStatus*);
+ DECL_LINK (EditEngineHdl, EditStatus*);
+
+@@ -307,6 +309,8 @@
+
+ void SetZoom( const Fraction& rNewX, const Fraction& rNewY );
+
++ void EnableSelCtrlMouseClick( BOOL bTmp ) { bSelCtrlMouseClick = bTmp; }
++
+ const Fraction& GetZoomX() const { return bPagebreak ? aPageZoomX : aZoomX; }
+ const Fraction& GetZoomY() const { return bPagebreak ? aPageZoomY : aZoomY; }
+
+@@ -464,6 +468,8 @@
+ const Size& GetScenButSize() const { return aScenButSize; }
+ void SetScenButSize(const Size& rNew) { aScenButSize = rNew; }
+
++ BOOL IsSelCtrlMouseClickEnabled() { return bSelCtrlMouseClick; }
++
+ static inline long ToPixel( USHORT nTwips, double nFactor );
+ };
+
+--- sc/source/ui/view/select.cxx 2004-10-19 11:08:52.000000000 +0530
++++ sc/source/ui/view/select.cxx 2004-10-19 11:31:25.252000656 +0530
+@@ -54,7 +54,7 @@
+ *
+ * All Rights Reserved.
+ *
+- * Contributor(s): _______________________________________
++ * Contributor(s): Kohei Yoshida__________________________
+ *
+ *
+ ************************************************************************/
+@@ -598,6 +598,28 @@
+ aAnchorPos.Put( nPosX, nPosY, nTab );
+ bStarted = TRUE;
+ }
++ // #i3875# *Hack* When a new cell is Ctrl-clicked with no pre-selected cells,
++ // it highlights that new cell as well as the old cell where the cursor is
++ // positioned prior to the click. A selection mode via Shift-F8 should also
++ // follow the same behavior.
++ else if ( pViewData->IsSelCtrlMouseClickEnabled() )
++ {
++ USHORT nOldX = pViewData->GetCurX();
++ USHORT nOldY = pViewData->GetCurY();
++
++ pView->InitBlockMode( nOldX, nOldY, nTab, TRUE );
++ pView->MarkCursor( (USHORT) nOldX, (USHORT) nOldY, nTab );
++
++ if ( nOldX != nPosX || nOldY != nPosY )
++ {
++ pView->DoneBlockMode( TRUE );
++ pView->InitBlockMode( nPosX, nPosY, nTab, TRUE );
++ pView->MarkCursor( (USHORT) nPosX, (USHORT) nPosY, nTab );
++ aAnchorPos.Put( nPosX, nPosY, nTab );
++ }
++
++ bStarted = TRUE;
++ }
+ }
+
+ pView->SetCursor( (USHORT) nPosX, (USHORT) nPosY );
+--- sc/source/ui/view/tabview3.cxx 2004-10-19 11:08:52.000000000 +0530
++++ sc/source/ui/view/tabview3.cxx 2004-10-19 11:31:25.273997312 +0530
+@@ -54,7 +54,7 @@
+ *
+ * All Rights Reserved.
+ *
+- * Contributor(s): _______________________________________
++ * Contributor(s): Kohei Yoshida__________________________
+ *
+ *
+ ************************************************************************/
+@@ -917,12 +917,20 @@
+ BOOL ScTabView::SelMouseButtonDown( const MouseEvent& rMEvt )
+ {
+ BOOL bRet = FALSE;
++
++ // #i3875# *Hack*
++ BOOL bMod1Locked = aViewData.GetViewShell()->GetLockedModifiers() & KEY_MOD1 ? TRUE : FALSE;
++ aViewData.EnableSelCtrlMouseClick( rMEvt.IsMod1() || bMod1Locked );
++
+ if ( pSelEngine )
+ {
+ bMoveIsShift = rMEvt.IsShift();
+ bRet = pSelEngine->SelMouseButtonDown( rMEvt );
+ bMoveIsShift = FALSE;
+ }
++
++ aViewData.EnableSelCtrlMouseClick( FALSE ); // #i3875# *Hack*
++
+ return bRet;
+ }
+
+--- sc/source/ui/view/viewdata.cxx 2004-10-19 11:08:52.000000000 +0530
++++ sc/source/ui/view/viewdata.cxx 2004-10-19 11:31:25.300993208 +0530
+@@ -54,7 +54,7 @@
+ *
+ * All Rights Reserved.
+ *
+- * Contributor(s): _______________________________________
++ * Contributor(s): Kohei Yoshida__________________________
+ *
+ *
+ ************************************************************************/
+@@ -327,7 +327,8 @@
+ bDelMarkValid( FALSE ),
+ bActive ( TRUE ), //! wie initialisieren?
+ bPagebreak ( FALSE ),
+- pSpellingView ( NULL )
++ pSpellingView ( NULL ),
++ bSelCtrlMouseClick( FALSE )
+ {
+ SetGridMode ( TRUE );
+ SetSyntaxMode ( FALSE );
+@@ -389,7 +390,8 @@
+ bDelMarkValid( FALSE ),
+ bActive ( TRUE ), //! wie initialisieren?
+ bPagebreak ( rViewData.bPagebreak ),
+- pSpellingView ( rViewData.pSpellingView )
++ pSpellingView ( rViewData.pSpellingView ),
++ bSelCtrlMouseClick( rViewData.bSelCtrlMouseClick )
+ {
+ SetGridMode ( rViewData.IsGridMode() );
+ SetSyntaxMode ( rViewData.IsSyntaxMode() );
diff --git a/patches/OOO_1_1/sc-filter-hide-filteredrows.diff b/patches/OOO_1_1/sc-filter-hide-filteredrows.diff
new file mode 100644
index 000000000..8afdfc01c
--- /dev/null
+++ b/patches/OOO_1_1/sc-filter-hide-filteredrows.diff
@@ -0,0 +1,15 @@
+--- /home/sragavan/cvs/bk/ooo-build/build/OOO_1_1_2/sc/source/core/data/table2.cxx 2003-04-08 21:50:02.000000000 +0530
++++ sc/source/core/data/table2.cxx 2004-10-13 15:01:58.814235896 +0530
+@@ -2251,8 +2251,10 @@
+ }
+
+ if (bShow)
+- for (i=nStartRow; i<=nEndRow; i++)
+- pRowFlags[i] &= ~(CR_HIDDEN | CR_FILTERED);
++ for (i=nStartRow; i<=nEndRow; i++){
++ if (! pRowFlags[i] & CR_FILTERED)
++ pRowFlags[i] &= ~(CR_HIDDEN);
++ }
+ else
+ for (i=nStartRow; i<=nEndRow; i++)
+ pRowFlags[i] |= CR_HIDDEN;
diff --git a/patches/OOO_1_1/sc-no-delete-filteredrows.diff b/patches/OOO_1_1/sc-no-delete-filteredrows.diff
new file mode 100644
index 000000000..1883c41fb
--- /dev/null
+++ b/patches/OOO_1_1/sc-no-delete-filteredrows.diff
@@ -0,0 +1,88 @@
+--- /home/sragavan/cvs/bk/ooo-build/build/OOO_1_1_2/sc/source/core/data/column.cxx 2003-04-15 22:55:52.000000000 +0530
++++ sc/source/core/data/column.cxx 2004-10-13 13:32:36.888372528 +0530
+@@ -1322,6 +1322,9 @@
+ for (i = 0; i < nCount; i++)
+ if ((pItems[i].nRow >= nRow1) && (pItems[i].nRow <= nRow2))
+ {
++
++ if ( pDocument->RowFiltered( pItems[i].nRow , nTab))
++ continue;
+ if (!nBlockCount)
+ nStartIndex = i;
+ nEndIndex = i;
+@@ -1342,7 +1345,11 @@
+ {
+ rColumn.Resize( rColumn.GetCellCount() + nBlockCount );
+ for (i = nStartIndex; i <= nEndIndex; i++)
++ {
++ if ( pDocument->RowFiltered( pItems[i].nRow , nTab))
++ continue;
+ rColumn.Append(pItems[i].nRow, pItems[i].pCell->Clone(rColumn.pDocument));
++ }
+ }
+ }
+
+--- /home/sragavan/cvs/bk/ooo-build/build/OOO_1_1_2/sc/source/core/data/column3.cxx 2003-03-26 23:33:52.000000000 +0530
++++ sc/source/core/data/column3.cxx 2004-10-13 11:16:15.567122408 +0530
+@@ -398,6 +398,17 @@
+ BOOL bSimple = ((nDelFlag & IDF_CONTENTS) == IDF_CONTENTS);
+ USHORT i;
+
++ /*
++ *If we are deleting a range that has filtered column, let it not be simple
++ */
++
++ if (bSimple)
++ {
++ for (i = nStartIndex; i <= nEndIndex && bSimple; i++)
++ if ( pDocument->RowFiltered(pItems[i].nRow, nTab))
++ bSimple = FALSE;
++ }
++
+ // Notiz-Zeichenobjekte
+ if (nDelFlag & IDF_NOTE)
+ {
+@@ -452,6 +463,16 @@
+ BOOL bDelete = FALSE;
+ ScBaseCell* pOldCell = pItems[j].pCell;
+ CellType eCellType = pOldCell->GetCellType();
++
++ /*
++ * If the rows are filtered continue instead deleting.
++ */
++ if ( pDocument->RowFiltered( pItems[j].nRow, nTab))
++ {
++ ++j;
++ continue;
++ }
++
+ switch ( eCellType )
+ {
+ case CELLTYPE_VALUE:
+--- /home/sragavan/cvs/bk/ooo-build/build/OOO_1_1_2/sc/inc/document.hxx 2004-09-14 09:12:10.000000000 +0530
++++ sc/inc/document.hxx 2004-10-12 11:44:52.000000000 +0530
+@@ -508,6 +508,8 @@
+ long GetWeightedCount() const; // Formeln und Edit staerker gewichtet
+ ULONG GetCodeCount() const; // RPN-Code in Formeln
+ DECL_LINK( GetUserDefinedColor, USHORT * );
++ BOOL RowFiltered( USHORT nRow, USHORT nTab ) const; // FillInfo
++ BOOL ColFiltered( USHORT nCol, USHORT nTab ) const; // FillInfo
+ // Numberformatter
+
+ public:
+@@ -1698,6 +1700,15 @@
+ return ( pTab[nTab]->pRowFlags[nRow] & CR_HIDDEN ) != 0;
+ }
+
++inline BOOL ScDocument::ColFiltered( USHORT nCol, USHORT nTab ) const
++{
++ return ( pTab[nTab]->pColFlags[nCol] & CR_FILTERED) != 0;
++}
++
++inline BOOL ScDocument::RowFiltered( USHORT nRow, USHORT nTab ) const
++{
++ return ( pTab[nTab]->pRowFlags[nRow] & CR_FILTERED) != 0;
++}
+
+
+ #endif
diff --git a/patches/OOO_1_1/sc-paste-limitedsize.diff b/patches/OOO_1_1/sc-paste-limitedsize.diff
new file mode 100644
index 000000000..57484236d
--- /dev/null
+++ b/patches/OOO_1_1/sc-paste-limitedsize.diff
@@ -0,0 +1,25 @@
+--- /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-13 14:23:56.248238672 +0530
+@@ -721,15 +721,14 @@
+ }
+ }
+
+- if (nBlockAddX > nDestSizeX)
+- nMarkAddX = nBlockAddX - nDestSizeX; // fuer Merge-Test
+- else
+- nEndCol = nStartCol + nDestSizeX;
++ /*
++ * Therz no use in copying lesser data multiple times in a bigger marked area
++ * So Im just reducing the size of the marked area.
++ */
++ nEndCol = nStartCol + nDestSizeX;
+
+- if (nBlockAddY > nDestSizeY)
+- nMarkAddY = nBlockAddY - nDestSizeY; // fuer Merge-Test
+- else
+- nEndRow = nStartRow + nDestSizeY;
++ nEndRow = nStartRow + nDestSizeY;
++
+ }
+ 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..ec6dccf6c
--- /dev/null
+++ b/patches/OOO_1_1/sc-standard-filter-options.diff
@@ -0,0 +1,354 @@
+--- /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 ] = "~Regulært 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 ] = "Zaœlepka";
+--- /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"
+@@ -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/sd-export-html-translations.diff b/patches/OOO_1_1/sd-export-html-translations.diff
index 788cd7d9f..b88bb504a 100644
--- a/patches/OOO_1_1/sd-export-html-translations.diff
+++ b/patches/OOO_1_1/sd-export-html-translations.diff
@@ -1,12 +1,9 @@
-Index: source/filter/html/pubdlg.src
+Index: sd/source/filter/html/pubdlg.src
===================================================================
-RCS file: /cvs/graphics/sd/source/filter/html/pubdlg.src,v
-retrieving revision 1.13.14.4
-diff -u -r1.13.14.4 pubdlg.src
---- sd/source/filter/html/pubdlg.src 27 Apr 2004 16:42:59 -0000 1.13.14.4
-+++ sd/source/filter/html/pubdlg.src 9 Jun 2004 04:36:11 -0000
-@@ -1357,47 +1357,47 @@
- Text[ norwegian_nynorsk ] = "Lagra bilete som";
+--- sd/source/filter/html/pubdlg.src.orig 2004-09-09 20:18:37.000000000 +0200
++++ sd/source/filter/html/pubdlg.src 2004-09-12 14:19:41.194859600 +0200
+@@ -1487,52 +1487,52 @@ ModalDialog DLG_PUBLISHING
+ Text[ galician ] = "Save graphics as";
};
- RadioButton PAGE3_GIF
@@ -14,7 +11,7 @@ diff -u -r1.13.14.4 pubdlg.src
{
Pos = MAP_APPFONT( 12, 49 );
Size = MAP_APPFONT( 116, 10 );
- Text = "~GIF";
+- Text = "~GIF";
- Text [ ENGLISH ] = "~GIF";
- Text[ italian ] = "~GIF";
- Text[ portuguese_brazilian ] = "~GIF";
@@ -32,8 +29,8 @@ diff -u -r1.13.14.4 pubdlg.src
- Text[ greek ] = "~GIF - Graphics Interchange Format";
- Text[ korean ] = "~GIF";
- Text[ chinese_traditional ] = "~GIF";
-- Text[ arabic ] = "GIF - Graphics Interchange-Format";
-- Text[ turkish ] = "~GIF";
+- Text[ arabic ] = "~GIF";
+- Text[ turkish ] = "GIF";
- Text[ catalan ] = "~GIF";
- Text[ finnish ] = "~GIF";
- Text[ thai ] = "~GIF - Graphics Interchange Format";
@@ -51,6 +48,12 @@ diff -u -r1.13.14.4 pubdlg.src
- Text[ afrikaans ] = "~GIF";
- Text[ zulu ] = "~GIF";
- Text[ norwegian_nynorsk ] = "~GIF";
+- Text[ tswana ] = "~GIF";
+- Text[ basque ] = "~GIF";
+- Text[ lithuanian ] = "~GIF";
+- Text[ kannada ] = "GIF";
+- Text[ galician ] = "~GIF";
++ Text = "~PNG";
+ Text [ ENGLISH ] = "~PNG";
+ Text[ italian ] = "~PNG";
+ Text[ portuguese_brazilian ] = "~PNG";
@@ -68,8 +71,8 @@ diff -u -r1.13.14.4 pubdlg.src
+ Text[ greek ] = "~PNG";
+ Text[ korean ] = "~PNG";
+ Text[ chinese_traditional ] = "~PNG";
-+ Text[ arabic ] = "PNG";
-+ Text[ turkish ] = "~PNG";
++ Text[ arabic ] = "~PNG";
++ Text[ turkish ] = "PNG";
+ Text[ catalan ] = "~PNG";
+ Text[ finnish ] = "~PNG";
+ Text[ thai ] = "~PNG";
@@ -87,6 +90,11 @@ diff -u -r1.13.14.4 pubdlg.src
+ Text[ afrikaans ] = "~PNG";
+ Text[ zulu ] = "~PNG";
+ Text[ norwegian_nynorsk ] = "~PNG";
++ Text[ tswana ] = "~PNG";
++ Text[ basque ] = "~PNG";
++ Text[ lithuanian ] = "~PNG";
++ Text[ kannada ] = "PNG";
++ Text[ galician ] = "~PNG";
};
RadioButton PAGE3_JPG
diff --git a/patches/OOO_1_1/sw-escape-print-preview.diff b/patches/OOO_1_1/sw-escape-print-preview.diff
new file mode 100644
index 000000000..40c659ee3
--- /dev/null
+++ b/patches/OOO_1_1/sw-escape-print-preview.diff
@@ -0,0 +1,15 @@
+Index: sw/source/ui/uiview/pview.cxx
+===================================================================
+RCS file: /cvs/sw/sw/source/ui/uiview/pview.cxx,v
+retrieving revision 1.43.156.1
+diff -u -r1.43.156.1 pview.cxx
+--- sw/source/ui/uiview/pview.cxx 9 Jan 2004 14:34:20 -0000 1.43.156.1
++++ sw/source/ui/uiview/pview.cxx 14 Oct 2004 09:54:39 -0000
+@@ -1125,6 +1125,7 @@
+ switch(nKey)
+ {
+ case KEY_ADD : nSlot = SID_ZOOM_OUT; break;
++ case KEY_ESCAPE : nSlot = FN_CLOSE_PAGEPREVIEW; break;
+ case KEY_SUBTRACT : nSlot = SID_ZOOM_IN; break;
+ }
+ if(nSlot)
diff --git a/patches/OOO_1_1/sysui-mimetypes.diff b/patches/OOO_1_1/sysui-mimetypes.diff
new file mode 100644
index 000000000..3e0058c41
--- /dev/null
+++ b/patches/OOO_1_1/sysui-mimetypes.diff
@@ -0,0 +1,50 @@
+? delzip
+? legacy/delzip
+Index: calc.desktop
+===================================================================
+RCS file: /cvs/gsl/sysui/desktop/gnome/calc.desktop,v
+retrieving revision 1.2.30.2
+diff -u -u -r1.2.30.2 calc.desktop
+--- sysui/desktop/gnome/calc.desktop 9 Jan 2004 19:02:26 -0000 1.2.30.2
++++ sysui/desktop/gnome/calc.desktop 14 Oct 2004 07:22:58 -0000
+@@ -8,3 +8,4 @@
+ Type=Application
+ Name=<productname> Calc
+ Comment=<productname> Spreadsheet
++MimeType=application/vnd.sun.xml.calc;application/vnd.sun.xml.calc.template;application/vnd.sun.xml.math;application/vnd.ms-excel;application/vnd.stardivision.calc;application/vnd.stardivision.chart;application/vnd.stardivision.math;application/vnd.lotus-1-2-3;text/x-comma-separated-values
+Index: draw.desktop
+===================================================================
+RCS file: /cvs/gsl/sysui/desktop/gnome/draw.desktop,v
+retrieving revision 1.2.30.2
+diff -u -u -r1.2.30.2 draw.desktop
+--- sysui/desktop/gnome/draw.desktop 9 Jan 2004 19:02:27 -0000 1.2.30.2
++++ sysui/desktop/gnome/draw.desktop 14 Oct 2004 07:22:58 -0000
+@@ -8,3 +8,4 @@
+ Type=Application
+ Name=<productname> Draw
+ Comment=<productname> Drawing
++MimeType=application/vnd.sun.xml.draw;application/vnd.sun.xml.draw.template;application/vnd.stardivision.draw
+Index: impress.desktop
+===================================================================
+RCS file: /cvs/gsl/sysui/desktop/gnome/impress.desktop,v
+retrieving revision 1.2.30.3
+diff -u -u -r1.2.30.3 impress.desktop
+--- sysui/desktop/gnome/impress.desktop 27 Aug 2004 10:27:44 -0000 1.2.30.3
++++ sysui/desktop/gnome/impress.desktop 14 Oct 2004 07:22:58 -0000
+@@ -8,3 +8,4 @@
+ Exec=<progpath_utf8>/program/simpress %U
+ Name=<productname> Impress
+ Comment=<productname> Presentation
++MimeType=application/vnd.sun.xml.impress;application/vnd.sun.xml.impress.template;application/vnd.ms-powerpoint;application/vnd.stardivision.impress
+Index: writer.desktop
+===================================================================
+RCS file: /cvs/gsl/sysui/desktop/gnome/writer.desktop,v
+retrieving revision 1.2.30.2
+diff -u -u -r1.2.30.2 writer.desktop
+--- sysui/desktop/gnome/writer.desktop 9 Jan 2004 19:02:29 -0000 1.2.30.2
++++ sysui/desktop/gnome/writer.desktop 14 Oct 2004 07:22:58 -0000
+@@ -8,3 +8,4 @@
+ Type=Application
+ Name=<productname> Writer
+ Comment=<productname> Text Document
++MimeType=application/vnd.sun.xml.writer;application/vnd.sun.xml.writer.global;application/vnd.sun.xml.writer.template;application/vnd.ms-word;application/x-mswrite;application/vnd.stardivision.writer;application/vnd.wordperfect;application/wordperfect;application/rtf;text/plain
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/win32-gw-send-mail.diff b/patches/OOO_1_1/win32-gw-send-mail.diff
index d3e8c71ee..ae9322ac9 100755
--- a/patches/OOO_1_1/win32-gw-send-mail.diff
+++ b/patches/OOO_1_1/win32-gw-send-mail.diff
@@ -10,7 +10,7 @@
- aSysPath.getLength( ),
- osl_getThreadTextEncoding( ) ) );
-
-+ OString aFullPath = OUStringToOString( aSysPath,
++ OString aFullPath = ::rtl::OUStringToOString( aSysPath,
+ osl_getThreadTextEncoding() );
+ sal_Int32 nLastSlash = aFullPath.lastIndexOf('\\');
+ OString aFileName = aFullPath.copy( nLastSlash + 1 );
diff --git a/patches/OOO_1_1/word-count.diff b/patches/OOO_1_1/word-count.diff
index 4f3040435..c8b5c83c2 100644
--- a/patches/OOO_1_1/word-count.diff
+++ b/patches/OOO_1_1/word-count.diff
@@ -138,93 +138,68 @@ 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 = "Wörter zählen..." ;
-+ 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 s³ów...";
-+ 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 ] = "~AutoCorrecção/AutoFormato..." ;
- Text [ english_us ] = "~AutoCorrect/AutoFormat..." ;
- Text [ portuguese_brazilian ] = "~AutoCorreção/AutoFormatação..." ;
- Text [ swedish ] = "~AutoKorrigering/AutoFormat..." ;
- Text [ danish ] = "~AutoKorrektur/AutoFormat..." ;
- Text [ italian ] = "Correzione/Formattazione a~utomatica..." ;
- Text [ spanish ] = "~Corrección/Formateado automático..." ;
+--- 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,58 @@
++ MenuItem
++ {
++ Identifier = FN_WORD_COUNT_DLG ;
++ HelpID = FN_WORD_COUNT_DLG ;
++ Text = "Wörter zählen..." ;
++ 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 s³ów...";
++ 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;
++ 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_2/gui-toolbox-large-icons.diff b/patches/OOO_1_1_2/gui-toolbox-large-icons.diff
new file mode 100644
index 000000000..3e8c9eed7
--- /dev/null
+++ b/patches/OOO_1_1_2/gui-toolbox-large-icons.diff
@@ -0,0 +1,86 @@
+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 @@
+ </enumeration>
+ <enumeration oor:value="1">
+ <info>
+- <desc xml:lang="en-US">32x32 pixel icons</desc>
+- <desc xml:lang="el">32x32 pixel icons</desc>
+- <desc xml:lang="nl">32x32 pixel iconen</desc>
+- <desc xml:lang="fr">32x32 pixel icons</desc>
+- <desc xml:lang="fi">32x32 pixel icons</desc>
+- <desc xml:lang="cs">32x32 pixel icons</desc>
+- <desc xml:lang="da">32x32 pixel icons</desc>
+- <desc xml:lang="zh-CN">32x32 åƒç´ å›¾æ ‡</desc>
+- <desc xml:lang="zh-TW">32x32 pixel icons</desc>
+- <desc xml:lang="ar">32x32 pixel icons</desc>
+- <desc xml:lang="he">32x32 pixel icons</desc>
+- <desc xml:lang="ca">32x32 pixel icons</desc>
+- <desc xml:lang="hi-IN">32x32 pixel icons</desc>
+- <desc xml:lang="pt">32x32 pixel icons</desc>
+- <desc xml:lang="ru">32x32 pixel icons</desc>
+- <desc xml:lang="es">32x32 pixel icons</desc>
+- <desc xml:lang="it">32x32 pixel icons</desc>
+- <desc xml:lang="sk">32x32 pixel icons</desc>
+- <desc xml:lang="sv">32x32 pixel icons</desc>
+- <desc xml:lang="pl">32x32 pixel icons</desc>
+- <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="th">32x32 pixel icons</desc>
+- <desc xml:lang="x-comment">32x32 pixel icons</desc>
+- <desc xml:lang="hu">32x32 pixel icons</desc>
+- <desc xml:lang="sl">32x32 pixel icons</desc>
+- <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="en-US">24x24 pixel icons</desc>
++ <desc xml:lang="el">24x24 pixel icons</desc>
++ <desc xml:lang="nl">24x24 pixel iconen</desc>
++ <desc xml:lang="fr">24x24 pixel icons</desc>
++ <desc xml:lang="fi">24x24 pixel icons</desc>
++ <desc xml:lang="cs">24x24 pixel icons</desc>
++ <desc xml:lang="da">24x24 pixel icons</desc>
++ <desc xml:lang="zh-CN">24x24 åƒç´ å›¾æ ‡</desc>
++ <desc xml:lang="zh-TW">24x24 pixel icons</desc>
++ <desc xml:lang="ar">24x24 pixel icons</desc>
++ <desc xml:lang="he">24x24 pixel icons</desc>
++ <desc xml:lang="ca">24x24 pixel icons</desc>
++ <desc xml:lang="hi-IN">24x24 pixel icons</desc>
++ <desc xml:lang="pt">24x24 pixel icons</desc>
++ <desc xml:lang="ru">24x24 pixel icons</desc>
++ <desc xml:lang="es">24x24 pixel icons</desc>
++ <desc xml:lang="it">24x24 pixel icons</desc>
++ <desc xml:lang="sk">24x24 pixel icons</desc>
++ <desc xml:lang="sv">24x24 pixel icons</desc>
++ <desc xml:lang="pl">24x24 pixel icons</desc>
++ <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="th">24x24 pixel icons</desc>
++ <desc xml:lang="x-comment">24x24 pixel icons</desc>
++ <desc xml:lang="hu">24x24 pixel icons</desc>
++ <desc xml:lang="sl">24x24 pixel icons</desc>
++ <desc xml:lang="ns">24x24 pixel icons</desc>
++ <desc xml:lang="af">24x24 pixel icons</desc>
++ <desc xml:lang="zu">24x24 pixel icons</desc>
++ </info>
++ </enumeration>
++ <enumeration oor:value="2">
++ <info>
++ <desc xml:lang="en-US">automatic icon sizing</desc>
+ </info>
+ </enumeration>
+ </constraints>
+- <value>0</value>
++ <value>1</value>
+ </prop>
+ <prop oor:name="ToolboxStyle" oor:type="xs:short">
+ <!-- UIHints: Tools Options General View -->
diff --git a/patches/OOO_1_1_2/iiimf-multilingual-extension-2-enable.diff b/patches/OOO_1_1_2/iiimf-multilingual-extension-2-enable.diff
new file mode 100644
index 000000000..54aa303c5
--- /dev/null
+++ b/patches/OOO_1_1_2/iiimf-multilingual-extension-2-enable.diff
@@ -0,0 +1,57 @@
+--- vcl/unx/inc/XIM.h 18 Sep 2000 17:05:40 -0000 1.1.1.1
++++ vcl/unx/inc/XIM.h 24 Feb 2004 02:38:04 -0000
+@@ -155,6 +155,8 @@
+ /* XIM attributes for multilingual IM extension */
+ #define XNMultiLingualInput "multiLingualInput"
+ #define XNQueryUnicodeCharacterSubset "unicodeCharacterSubset"
++#define XNQueryExtensionVersion "queryExtensionersion"
++#define XIIIMP_MULTILINGUAL_EXTENSION_VERSION 2
+
+ /* XIC attributes for multilingual IM extension */
+
+--- vcl/unx/source/app/i18n_ic.cxx 2 Jul 2003 13:40:36 -0000 1.26
++++ vcl/unx/source/app/i18n_ic.cxx 24 Feb 2004 02:38:04 -0000
+@@ -200,11 +200,9 @@
+ ),
+ mpFocusFrame( NULL )
+ {
+-#ifdef SOLARIS
+ static const char* pIIIMPEnable = getenv( "SAL_DISABLE_OWN_IM_STATUS" );
+ if( pIIIMPEnable && *pIIIMPEnable )
+ mnSupportedStatusStyle &= ~XIMStatusCallbacks;
+-#endif
+
+ maClientData.aText.pUnicodeBuffer = NULL;
+ maClientData.aText.pCharStyle = NULL;
+--- vcl/unx/source/app/i18n_im.cxx 28 Jan 2004 15:23:17 -0000 1.23.110.2
++++ vcl/unx/source/app/i18n_im.cxx 24 Feb 2004 02:38:04 -0000
+@@ -438,11 +438,16 @@
+ // get ml-input flag from input-method
+ if ( maMethod == (XIM)NULL )
+ mbMultiLingual = False;
+-#if !defined(LINUX)
+ else
+- if ( XGetIMValues(maMethod,
+- XNMultiLingualInput, &mbMultiLingual, NULL ) != NULL )
++ {
++ int xiiimp_version = 1;
++ if ( XGetIMValues(maMethod,
++ XNQueryExtensionVersion, &xiiimp_version, NULL) != NULL || xiiimp_version < XIIIMP_MULTILINGUAL_EXTENSION_VERSION)
+ mbMultiLingual = False;
++ if ( XGetIMValues(maMethod,
++ XNMultiLingualInput, &mbMultiLingual, NULL ) != NULL )
++ mbMultiLingual = False;
++ }
+ if( mbMultiLingual )
+ {
+ XIMUnicodeCharacterSubsets* subsets;
+@@ -470,9 +475,6 @@
+ fprintf( stderr, "query subsets failed\n" );
+ #endif
+ }
+-#else
+- mbMultiLingual = False;
+-#endif
+ }
+ else
+ {
diff --git a/patches/OOO_1_1_2/sd-export-html-translations.diff b/patches/OOO_1_1_2/sd-export-html-translations.diff
new file mode 100644
index 000000000..788cd7d9f
--- /dev/null
+++ b/patches/OOO_1_1_2/sd-export-html-translations.diff
@@ -0,0 +1,92 @@
+Index: source/filter/html/pubdlg.src
+===================================================================
+RCS file: /cvs/graphics/sd/source/filter/html/pubdlg.src,v
+retrieving revision 1.13.14.4
+diff -u -r1.13.14.4 pubdlg.src
+--- sd/source/filter/html/pubdlg.src 27 Apr 2004 16:42:59 -0000 1.13.14.4
++++ sd/source/filter/html/pubdlg.src 9 Jun 2004 04:36:11 -0000
+@@ -1357,47 +1357,47 @@
+ Text[ norwegian_nynorsk ] = "Lagra bilete som";
+ };
+
+- RadioButton PAGE3_GIF
++ RadioButton PAGE3_PNG
+ {
+ Pos = MAP_APPFONT( 12, 49 );
+ Size = MAP_APPFONT( 116, 10 );
+ Text = "~GIF";
+- Text [ ENGLISH ] = "~GIF";
+- Text[ italian ] = "~GIF";
+- Text[ portuguese_brazilian ] = "~GIF";
+- Text[ portuguese ] = "~GIF - Graphics Interchange Format";
+- Text[ danish ] = "~GIF";
+- Text[ french ] = "GIF";
+- Text[ swedish ] = "~GIF";
+- Text[ dutch ] = "~GIF - Graphics Interchange-Format";
+- Text[ spanish ] = "~GIF ";
+- Text[ english_us ] = "~GIF";
+- Text[ chinese_simplified ] = "~GIF";
+- Text[ russian ] = "~GIF - Graphics Interchange Format";
+- Text[ polish ] = "GIF - Graphics Interchange Format";
+- Text[ japanese ] = "~GIF";
+- Text[ greek ] = "~GIF - Graphics Interchange Format";
+- Text[ korean ] = "~GIF";
+- Text[ chinese_traditional ] = "~GIF";
+- Text[ arabic ] = "GIF - Graphics Interchange-Format";
+- Text[ turkish ] = "~GIF";
+- Text[ catalan ] = "~GIF";
+- Text[ finnish ] = "~GIF";
+- Text[ thai ] = "~GIF - Graphics Interchange Format";
+- Text[ czech ] = "GIF";
+- Text[ hebrew ] = "~GIF";
+- Text[ hindi ] = "~GIF";
+- Text[ slovak ] = "~GIF";
+- Text[ hungarian ] = "~GIF";
+- Text[ slovenian ] = "~GIF";
+- Text[ estonian ] = "~GIF";
+- Text[ language_user1 ] = "~GIF";
+- Text[ norwegian ] = "~GIF";
+- Text[ welsh ] = "~GIF";
+- Text[ northernsotho ] = "~GIF";
+- Text[ afrikaans ] = "~GIF";
+- Text[ zulu ] = "~GIF";
+- Text[ norwegian_nynorsk ] = "~GIF";
++ Text [ ENGLISH ] = "~PNG";
++ Text[ italian ] = "~PNG";
++ Text[ portuguese_brazilian ] = "~PNG";
++ Text[ portuguese ] = "~PNG";
++ Text[ danish ] = "~PNG";
++ Text[ french ] = "PNG";
++ Text[ swedish ] = "~PNG";
++ Text[ dutch ] = "~PNG";
++ Text[ spanish ] = "~PNG ";
++ Text[ english_us ] = "~PNG";
++ Text[ chinese_simplified ] = "~PNG";
++ Text[ russian ] = "~PNG";
++ Text[ polish ] = "PNG";
++ Text[ japanese ] = "~PNG";
++ Text[ greek ] = "~PNG";
++ Text[ korean ] = "~PNG";
++ Text[ chinese_traditional ] = "~PNG";
++ Text[ arabic ] = "PNG";
++ Text[ turkish ] = "~PNG";
++ Text[ catalan ] = "~PNG";
++ Text[ finnish ] = "~PNG";
++ Text[ thai ] = "~PNG";
++ Text[ czech ] = "PNG";
++ Text[ hebrew ] = "~PNG";
++ Text[ hindi ] = "~PNG";
++ Text[ slovak ] = "~PNG";
++ Text[ hungarian ] = "~PNG";
++ Text[ slovenian ] = "~PNG";
++ Text[ estonian ] = "~PNG";
++ Text[ language_user1 ] = "~PNG";
++ Text[ norwegian ] = "~PNG";
++ Text[ welsh ] = "~PNG";
++ Text[ northernsotho ] = "~PNG";
++ Text[ afrikaans ] = "~PNG";
++ Text[ zulu ] = "~PNG";
++ Text[ norwegian_nynorsk ] = "~PNG";
+ };
+
+ RadioButton PAGE3_JPG
diff --git a/patches/OOO_1_1_2/vcl-inc.diff b/patches/OOO_1_1_2/vcl-inc.diff
new file mode 100644
index 000000000..9abbee81a
--- /dev/null
+++ b/patches/OOO_1_1_2/vcl-inc.diff
@@ -0,0 +1,8737 @@
+Index: vcl/inc/abstdlg.hxx
+===================================================================
+RCS file: vcl/inc/abstdlg.hxx
+diff -N vcl/inc/abstdlg.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/abstdlg.hxx 3 Feb 2004 17:13:21 -0000 1.3
+@@ -0,0 +1,101 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * 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): _______________________________________
++ *
++ *
++ ************************************************************************/
++#ifndef _VCL_ABSTDLG_HXX
++#define _VCL_ABSTDLG_HXX
++
++// include ---------------------------------------------------------------
++
++#include <tools/solar.h>
++#include <tools/string.hxx>
++
++class Window;
++class ResId;
++
++class VclAbstractDialog
++{
++public:
++ virtual USHORT Execute() = 0;
++ //virtual void Show( BOOL bVisible = TRUE, USHORT nFlags = 0 ) = 0;
++ virtual ~VclAbstractDialog();
++};
++
++class VclAbstractTerminatedDialog : public VclAbstractDialog
++{
++public:
++ virtual void EndDialog(long nResult =0) = 0;
++};
++
++class VclAbstractRefreshableDialog : public VclAbstractDialog
++{
++public:
++ virtual void Update() = 0;
++ virtual void Sync() = 0;
++};
++
++class VclAbstractDialogFactory
++{
++public:
++ static VclAbstractDialogFactory* Create();
++ virtual VclAbstractDialog* CreateVclDialog( Window* pParent, const ResId& rResId ) = 0;
++};
++
++#endif
++
+Index: vcl/inc/accel.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/accel.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/accel.hxx 7 Dec 2000 13:37:15 -0000 1.2
++++ vcl/inc/accel.hxx 6 Jan 2004 12:50:31 -0000 1.3
+@@ -65,11 +65,11 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_RESID_HXX
+-#include <resid.hxx>
++#ifndef _TOOLS_RESID_HXX
++#include <tools/resid.hxx>
+ #endif
+-#ifndef _SV_RC_HXX
+-#include <rc.hxx>
++#ifndef _TOOLS_RC_HXX
++#include <tools/rc.hxx>
+ #endif
+ #ifndef _SV_KEYCOD_HXX
+ #include <keycod.hxx>
+@@ -84,6 +84,8 @@ class ImplAccelEntry;
+
+ class Accelerator : public Resource
+ {
++ friend class ImplAccelManager;
++
+ private:
+ ImplAccelData* mpData;
+ XubString maHelpStr;
+@@ -99,15 +101,12 @@ private:
+ BOOL* mpDel;
+
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_ACCEL_CXX
+ void ImplInit();
+ void ImplCopyData( ImplAccelData& rAccelData );
+ void ImplDeleteData();
+ void ImplInsertAccel( USHORT nItemId, const KeyCode& rKeyCode,
+ BOOL bEnable, Accelerator* pAutoAccel );
+-#endif
+
+- friend class ImplAccelManager;
+ ImplAccelEntry* ImplGetAccelData( const KeyCode& rKeyCode ) const;
+ #endif
+
+@@ -118,7 +117,7 @@ public:
+ Accelerator();
+ Accelerator( const Accelerator& rAccel );
+ Accelerator( const ResId& rResId );
+- ~Accelerator();
++ virtual ~Accelerator();
+
+ virtual void Activate();
+ virtual void Deactivate();
+Index: vcl/inc/alpha.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/alpha.hxx,v
+retrieving revision 1.3
+retrieving revision 1.6
+diff -u -p -u -r1.3 -r1.6
+--- vcl/inc/alpha.hxx 12 Sep 2002 09:30:19 -0000 1.3
++++ vcl/inc/alpha.hxx 21 May 2004 16:20:16 -0000 1.6
+@@ -70,15 +70,15 @@
+ // - AlphaMask -
+ // -------------
+
++class ImageList;
++
+ class AlphaMask : private Bitmap
+ {
+ friend class BitmapEx;
+ friend class OutputDevice;
++ friend SvStream& operator<<( SvStream&, const ImageList& );
+
+ private:
+-
+- long nDummy1;
+- long nDummy2;
+
+ const Bitmap& ImplGetBitmap() const;
+ void ImplSetBitmap( const Bitmap& rBitmap );
+Index: vcl/inc/apptypes.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/apptypes.hxx,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -p -u -r1.3 -r1.4
+--- vcl/inc/apptypes.hxx 11 Jul 2001 08:32:52 -0000 1.3
++++ vcl/inc/apptypes.hxx 6 Jan 2004 12:51:37 -0000 1.4
+@@ -62,12 +62,12 @@
+ #ifndef _VCL_APPTYPES_HXX
+ #define _VCL_APPTYPES_HXX
+
+-#ifndef _RTTI_HXX
+-#include <tools/rtti.hxx>
+-#endif
+-
+ #ifndef _SV_SV_H
+ #include <sv.h>
++#endif
++
++#ifndef _RTTI_HXX
++#include <tools/rtti.hxx>
+ #endif
+
+ // ---------------------
+Index: vcl/inc/bitmap.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/bitmap.hxx,v
+retrieving revision 1.8
+retrieving revision 1.13
+diff -u -p -u -r1.8 -r1.13
+--- vcl/inc/bitmap.hxx 24 Apr 2003 14:56:11 -0000 1.8
++++ vcl/inc/bitmap.hxx 10 Jun 2004 17:36:43 -0000 1.13
+@@ -68,8 +68,8 @@
+ #ifndef _SV_MAPMOD_HXX
+ #include <mapmod.hxx>
+ #endif
+-#ifndef _SV_RC_HXX
+-#include <rc.hxx>
++#ifndef _TOOLS_RC_HXX
++#include <tools/rc.hxx>
+ #endif
+ #ifndef _SV_REGION_HXX
+ #include <region.hxx>
+@@ -106,8 +106,8 @@
+
+ // -----------------------------------------------------------------------------
+
+-#define BMP_COL_TRANS Color( 252, 3, 251 )
+-
++#define BMP_COL_TRANS Color( 252, 3, 251 )
++#define BMP_COLOR_MONOCHROME_THRESHOLD 128
+
+ // ---------
+ // - Enums -
+@@ -188,7 +188,9 @@ enum BmpFilter
+ enum BmpColorMode
+ {
+ BMP_COLOR_NORMAL = 0,
+- BMP_COLOR_HIGHCONTRAST = 1
++ BMP_COLOR_HIGHCONTRAST = 1,
++ BMP_COLOR_MONOCHROME_BLACK = 2,
++ BMP_COLOR_MONOCHROME_WHITE = 3
+ };
+
+ // --------------------
+@@ -330,27 +332,6 @@ public:
+ BOOL ImplMosaic( const BmpFilterParam* pFilterParam, const Link* pProgress );
+ BOOL ImplPopArt( const BmpFilterParam* pFilterParam, const Link* pProgress );
+
+-#ifdef REMOTE_APPSERVER
+-
+- void ImplDrawRemote( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz ) const;
+- void ImplDrawRemoteEx( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz,
+- const Bitmap& rMask ) const;
+- void ImplDrawRemoteAlpha( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz,
+- const AlphaMask& rAlpha ) const;
+- void ImplDrawRemoteMask( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz,
+- const Color& rColor ) const;
+- void ImplGetRemoteBmp( OutputDevice* pOut, const Point& rPt,
+- const Size& rSz );
+-
+-#endif // REMOTE_APPSERVER
+ #endif // PRIVATE
+
+ public:
+Index: vcl/inc/bitmapex.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/bitmapex.hxx,v
+retrieving revision 1.5
+retrieving revision 1.9
+diff -u -p -u -r1.5 -r1.9
+--- vcl/inc/bitmapex.hxx 22 Oct 2002 17:07:54 -0000 1.5
++++ vcl/inc/bitmapex.hxx 21 May 2004 16:20:50 -0000 1.9
+@@ -68,8 +68,8 @@
+ #ifndef _SV_ALPHA_HXX
+ #include <alpha.hxx>
+ #endif
+-#ifndef _SV_COLOR_HXX
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
+ #endif
+
+ // -------------------
+@@ -100,23 +100,10 @@ private:
+ Size aBitmapSize;
+ Color aTransparentColor;
+ TransparentType eTransparent;
+- USHORT nDummy;
+ BOOL bAlpha;
+- BYTE cDummy;
+
+ public:
+
+-#ifdef REMOTE_APPSERVER
+-
+- void ImplDrawRemote( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz ) const;
+- void ImplDrawRemoteAlpha( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz ) const;
+-
+-#endif // REMOTE
+-
+ #if _SOLAR__PRIVATE
+
+ ImpBitmap* ImplGetBitmapImpBitmap() const { return aBitmap.ImplGetImpBitmap(); }
+Index: vcl/inc/brdwin.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/brdwin.hxx,v
+retrieving revision 1.2
+retrieving revision 1.4
+diff -u -p -u -r1.2 -r1.4
+--- vcl/inc/brdwin.hxx 16 Feb 2001 11:09:45 -0000 1.2
++++ vcl/inc/brdwin.hxx 17 Jun 2004 12:01:23 -0000 1.4
+@@ -156,14 +156,12 @@ private:
+ BOOL mbHelpBtn;
+ BOOL mbDisplayActive;
+
+-#ifdef _SV_BRDWIN_CXX
+ void ImplInit( Window* pParent,
+ WinBits nStyle, USHORT nTypeStyle,
+ SystemParentData* pParentData );
+ void ImplInit( Window* pParent,
+ WinBits nStyle, USHORT nTypeStyle,
+ const ::com::sun::star::uno::Any& );
+-#endif
+
+ public:
+ ImplBorderWindow( Window* pParent,
+@@ -213,8 +211,8 @@ public:
+ void SetMinOutputSize( long nWidth, long nHeight )
+ { mnMinWidth = nWidth; mnMinHeight = nHeight; }
+
+- void GetBorder( long& rLeftBorder, long& rTopBorder,
+- long& rRightBorder, long& rBottomBorder ) const;
++ void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
++ sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
+ long CalcTitleWidth() const;
+ };
+
+@@ -242,10 +240,10 @@ struct ImplBorderFrameData
+ long mnTrackY;
+ long mnTrackWidth;
+ long mnTrackHeight;
+- long mnLeftBorder;
+- long mnTopBorder;
+- long mnRightBorder;
+- long mnBottomBorder;
++ sal_Int32 mnLeftBorder;
++ sal_Int32 mnTopBorder;
++ sal_Int32 mnRightBorder;
++ sal_Int32 mnBottomBorder;
+ long mnNoTitleTop;
+ long mnBorderSize;
+ long mnTitleHeight;
+@@ -279,8 +277,8 @@ public:
+ virtual USHORT RequestHelp( const Point& rPos, Rectangle& rHelpRect );
+
+ virtual void Init( OutputDevice* pDev, long nWidth, long nHeight ) = 0;
+- virtual void GetBorder( long& rLeftBorder, long& rTopBorder,
+- long& rRightBorder, long& rBottomBorder ) const = 0;
++ virtual void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
++ sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const = 0;
+ virtual long CalcTitleWidth() const = 0;
+ virtual void DrawWindow( USHORT nDrawFlags, OutputDevice* pOutDev = NULL, const Point* pOffset = NULL ) = 0;
+
+@@ -305,8 +303,8 @@ public:
+ ImplNoBorderWindowView( ImplBorderWindow* pBorderWindow );
+
+ virtual void Init( OutputDevice* pDev, long nWidth, long nHeight );
+- virtual void GetBorder( long& rLeftBorder, long& rTopBorder,
+- long& rRightBorder, long& rBottomBorder ) const;
++ virtual void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
++ sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
+ virtual long CalcTitleWidth() const;
+ virtual void DrawWindow( USHORT nDrawFlags, OutputDevice* pOutDev, const Point* pOffset );
+ };
+@@ -324,17 +322,17 @@ class ImplSmallBorderWindowView : public
+ OutputDevice* mpOutDev;
+ long mnWidth;
+ long mnHeight;
+- long mnLeftBorder;
+- long mnTopBorder;
+- long mnRightBorder;
+- long mnBottomBorder;
++ sal_Int32 mnLeftBorder;
++ sal_Int32 mnTopBorder;
++ sal_Int32 mnRightBorder;
++ sal_Int32 mnBottomBorder;
+
+ public:
+ ImplSmallBorderWindowView( ImplBorderWindow* pBorderWindow );
+
+ virtual void Init( OutputDevice* pOutDev, long nWidth, long nHeight );
+- virtual void GetBorder( long& rLeftBorder, long& rTopBorder,
+- long& rRightBorder, long& rBottomBorder ) const;
++ virtual void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
++ sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
+ virtual long CalcTitleWidth() const;
+ virtual void DrawWindow( USHORT nDrawFlags, OutputDevice* pOutDev, const Point* pOffset );
+ };
+@@ -363,8 +361,8 @@ public:
+ virtual USHORT RequestHelp( const Point& rPos, Rectangle& rHelpRect );
+
+ virtual void Init( OutputDevice* pDev, long nWidth, long nHeight );
+- virtual void GetBorder( long& rLeftBorder, long& rTopBorder,
+- long& rRightBorder, long& rBottomBorder ) const;
++ virtual void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
++ sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
+ virtual long CalcTitleWidth() const;
+ virtual void DrawWindow( USHORT nDrawFlags, OutputDevice* pOutDev, const Point* pOffset );
+ };
+Index: vcl/inc/btndlg.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/btndlg.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/btndlg.hxx 7 Dec 2000 13:37:15 -0000 1.2
++++ vcl/inc/btndlg.hxx 6 Jan 2004 12:53:29 -0000 1.3
+@@ -101,20 +101,15 @@ private:
+ BOOL mbFormat;
+ Link maClickHdl;
+
+-#if _SOLAR__PRIVATE
+-#ifdef _SV_BTNDLG_CXX
+ void ImplInitData();
+ PushButton* ImplCreatePushButton( USHORT nBtnFlags );
+ ImplBtnDlgItem* ImplGetItem( USHORT nId ) const;
+ DECL_LINK( ImplClickHdl, PushButton* pBtn );
+ void ImplPosControls();
+-#endif
+-protected:
+- long ImplGetButtonSize();
+-#endif
+
+ protected:
+ ButtonDialog( WindowType nType );
++ long ImplGetButtonSize();
+
+ public:
+ ButtonDialog( Window* pParent, WinBits nStyle = WB_STDDIALOG );
+Index: vcl/inc/button.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/button.hxx,v
+retrieving revision 1.8
+retrieving revision 1.11
+diff -u -p -u -r1.8 -r1.11
+--- vcl/inc/button.hxx 17 Apr 2003 17:55:12 -0000 1.8
++++ vcl/inc/button.hxx 10 May 2004 15:40:59 -0000 1.11
+@@ -78,6 +78,10 @@
+ #include <bitmap.hxx>
+ #endif
+
++#ifndef _SV_NATIVEWIDGETS_HXX
++#include <salnativewidgets.hxx>
++#endif
++
+ class UserDrawEvent;
+
+ // ----------
+@@ -124,7 +128,6 @@ protected:
+ Image maImageHC;
+ BitmapEx* mpBitmapEx;
+ BitmapEx* mpBitmapExHC;
+- void* mpDummy;
+ SymbolType meSymbol;
+ ImageAlign meImageAlign;
+ TriState meState;
+@@ -133,12 +136,9 @@ protected:
+ USHORT mnButtonState;
+ BOOL mbPressed;
+ BOOL mbInUserDraw;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+ Link maToggleHdl;
+
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_BUTTON_CXX
+ void ImplInitData();
+ WinBits ImplInitStyle( const Window* pPrevWindow, WinBits nStyle );
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+@@ -148,7 +148,6 @@ protected:
+ USHORT ImplGetTextStyle() const;
+ BOOL IsSymbol() const { return ( (meSymbol != SYMBOL_NOSYMBOL) && (meSymbol != SYMBOL_IMAGE) ); }
+ BOOL IsImage() const { return !!maImage; }
+-#endif
+
+ protected:
+ void ImplInit( Window* pParent, WinBits nStyle );
+@@ -180,6 +179,7 @@ public:
+ virtual void LoseFocus();
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
++ virtual long PreNotify( NotifyEvent& rNEvt );
+ virtual void UserDraw( const UserDrawEvent& rUDEvt );
+
+ virtual void Toggle();
+@@ -253,10 +246,8 @@ inline BOOL PushButton::IsChecked() cons
+
+ class OKButton : public PushButton
+ {
+-#ifdef _SV_BUTTON_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+-#endif
+
+ public:
+ OKButton( Window* pParent, WinBits nStyle = WB_DEFBUTTON );
+@@ -271,10 +262,8 @@ public:
+
+ class CancelButton : public PushButton
+ {
+-#ifdef _SV_BUTTON_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+-#endif
+
+ public:
+ CancelButton( Window* pParent, WinBits nStyle = 0 );
+@@ -289,10 +278,8 @@ public:
+
+ class HelpButton : public PushButton
+ {
+-#ifdef _SV_BUTTON_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+-#endif
+
+ public:
+ HelpButton( Window* pParent, WinBits nStyle = 0 );
+@@ -318,12 +305,9 @@ private:
+ BOOL mbSaveValue;
+ BOOL mbRadioCheck;
+ BOOL mbStateChanged;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+ Link maToggleHdl;
+
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_BUTTON_CXX
+ void ImplInitData();
+ WinBits ImplInitStyle( const Window* pPrevWindow, WinBits nStyle );
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+@@ -336,7 +320,6 @@ private:
+ bool bLayout = false );
+ void ImplDrawRadioButton( bool bLayout = false );
+ void ImplUncheckAllOther();
+-#endif
+
+ protected:
+ void ImplInit( Window* pParent, WinBits nStyle );
+@@ -376,6 +359,7 @@ public:
+ virtual void LoseFocus();
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
++ virtual long PreNotify( NotifyEvent& rNEvt );
+
+ virtual void Toggle();
+
+@@ -428,7 +412,6 @@ private:
+ Link maToggleHdl;
+
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_BUTTON_CXX
+ void ImplInitData();
+ WinBits ImplInitStyle( const Window* pPrevWindow, WinBits nStyle );
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+@@ -439,7 +422,6 @@ private:
+ Rectangle& rStateRect,
+ Rectangle& rMouseRect, Rectangle& rFocusRect, bool bLayout );
+ void ImplDrawCheckBox( bool bLayout = false );
+-#endif
+
+ protected:
+ void ImplInit( Window* pParent, WinBits nStyle );
+@@ -465,6 +447,7 @@ public:
+ virtual void LoseFocus();
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
++ virtual long PreNotify( NotifyEvent& rNEvt );
+
+ virtual void Toggle();
+
+Index: vcl/inc/cmdevt.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/cmdevt.hxx,v
+retrieving revision 1.10.250.1
+retrieving revision 1.12
+diff -u -p -u -r1.10.250.1 -r1.12
+--- vcl/inc/cmdevt.hxx 9 Jan 2004 18:13:38 -0000 1.10.250.1
++++ vcl/inc/cmdevt.hxx 6 Jan 2004 12:54:08 -0000 1.12
+@@ -101,7 +101,6 @@ private:
+ xub_StrLen mnOldTextLen;
+ USHORT mnCursorFlags;
+ BOOL mbOnlyCursor;
+- BOOL mbDummy;
+
+ public:
+ CommandExtTextInputData();
+Index: vcl/inc/combobox.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/combobox.hxx,v
+retrieving revision 1.12
+retrieving revision 1.14
+diff -u -p -u -r1.12 -r1.14
+--- vcl/inc/combobox.hxx 11 Apr 2003 17:24:42 -0000 1.12
++++ vcl/inc/combobox.hxx 18 May 2004 10:47:56 -0000 1.14
+@@ -192,6 +192,7 @@ public:
+ BOOL IsUserDrawEnabled() const;
+
+ void DrawEntry( const UserDrawEvent& rEvt, BOOL bDrawImage, BOOL bDrawText, BOOL bDrawTextAtImagePos = FALSE );
++ void SetBorderStyle( USHORT nBorderStyle );
+
+ void SetSeparatorPos( USHORT n );
+ void SetSeparatorPos();
+Index: vcl/inc/controllayout.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/controllayout.hxx,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -p -u -r1.3 -r1.4
+--- vcl/inc/controllayout.hxx 16 May 2002 11:52:49 -0000 1.3
++++ vcl/inc/controllayout.hxx 18 May 2004 10:48:10 -0000 1.4
+@@ -103,6 +103,20 @@ struct ControlLayoutData
+ // returns the interval [start,end] of line nLine
+ // returns [-1,-1] for an invalid line
+ Pair GetLineStartEnd( long nLine ) const;
++ /** ToRelativeLineIndex changes a layout data index to a count relative to its line.
++
++ <p>This is equivalent to getting the line start/end pairs with
++ <member>GetLineStartEnd</member> until the index lies within [start,end] of a line
++ </p>
++
++ @param nIndex
++ the absolute index inside the display text to be changed to a relative index
++
++ @returns
++ the relative index inside the displayed line or -1 if the absolute index does
++ not match any line
++ */
++ long ToRelativeLineIndex( long nIndex ) const;
+ };
+
+ } // namespace vcl
+Index: vcl/inc/ctrl.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/ctrl.hxx,v
+retrieving revision 1.5
+retrieving revision 1.8
+diff -u -p -u -r1.5 -r1.8
+--- vcl/inc/ctrl.hxx 16 May 2002 11:52:49 -0000 1.5
++++ vcl/inc/ctrl.hxx 18 May 2004 10:48:23 -0000 1.8
+@@ -73,6 +73,10 @@
+ #include <window.hxx>
+ #endif
+
++#ifndef _SV_NATIVEWIDGETS_HXX
++#include <salnativewidgets.hxx>
++#endif
++
+ // forward
+ namespace vcl { struct ControlLayoutData; }
+
+@@ -83,27 +87,26 @@ namespace vcl { struct ControlLayoutData
+ class Control : public Window
+ {
+ protected:
+- mutable vcl::ControlLayoutData* mpLayoutData;
++ mutable vcl::ControlLayoutData* mpLayoutData;
+ private:
+- long mnDummy1;
+- BOOL mbHasFocus;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+- BOOL mbDummy3;
+- Link maGetFocusHdl;
+- Link maLoseFocusHdl;
++ BOOL mbHasFocus;
++ Link maGetFocusHdl;
++ Link maLoseFocusHdl;
+
+-#ifdef _SV_CTRL_CXX
+ void ImplInitData();
+-public:
+- void ImplSubControlLayoutChanged() const;
+-#endif
++
+ protected:
+ Control( WindowType nType );
+- virtual void FillLayoutData() const;
++ virtual void FillLayoutData() const;
+
+ // helper method for composite controls
+ void AppendLayoutData( const Control& rSubControl ) const;
++
++#if _SOLAR__PRIVATE
++public:
++ void ImplClearLayoutData() const;
++#endif
++
+ public:
+ Control( Window* pParent, WinBits nWinStyle = 0 );
+ Control( Window* pParent, const ResId& rResId );
+@@ -129,6 +132,20 @@ public:
+ // returns the interval [start,end] of line nLine
+ // returns [-1,-1] for an invalid line
+ Pair GetLineStartEnd( long nLine ) const;
++ /** ToRelativeLineIndex changes a layout data index to a count relative to its line.
++
++ <p>This is equivalent to getting the line start/end pairs with
++ <member>GetLineStartEnd</member> until the index lies within [start,end] of a line
++ </p>
++
++ @param nIndex
++ the absolute index inside the display text to be changed to a relative index
++
++ @returns
++ the relative index inside the displayed line or -1 if the absolute index does
++ not match any line
++ */
++ long ToRelativeLineIndex( long nIndex ) const;
+
+
+ void SetGetFocusHdl( const Link& rLink ) { maGetFocusHdl = rLink; }
+Index: vcl/inc/cursor.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/cursor.hxx,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -p -u -r1.3 -r1.4
+--- vcl/inc/cursor.hxx 27 Mar 2003 17:57:20 -0000 1.3
++++ vcl/inc/cursor.hxx 6 Jan 2004 12:55:28 -0000 1.4
+@@ -66,6 +66,10 @@
+ #include <tools/gen.hxx>
+ #endif
+
++#ifndef _LINK_HXX
++#include <tools/link.hxx>
++#endif
++
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+@@ -103,11 +107,9 @@ private:
+
+ #if _SOLAR__PRIVATE
+ public:
+-#ifdef _SV_CURSOR_CXX
+ void ImplDraw();
+ void ImplRestore();
+ DECL_LINK( ImplTimerHdl, AutoTimer* );
+-#endif
+ void ImplShow( BOOL bDrawDirect = TRUE );
+ void ImplHide();
+ void ImplNew();
+Index: vcl/inc/cvtsvm.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/cvtsvm.hxx,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -p -u -r1.3 -r1.4
+--- vcl/inc/cvtsvm.hxx 7 Dec 2000 13:37:15 -0000 1.3
++++ vcl/inc/cvtsvm.hxx 6 Jan 2004 12:55:49 -0000 1.4
+@@ -129,7 +129,6 @@ class SVMConverter
+ {
+ private:
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_CVTSVM_CXX
+ void ImplConvertFromSVM1( SvStream& rIStm, GDIMetaFile& rMtf );
+ void ImplConvertToSVM1( SvStream& rOStm, GDIMetaFile& rMtf );
+ ULONG ImplWriteActions( SvStream& rOStm, GDIMetaFile& rMtf,
+@@ -137,7 +136,6 @@ private:
+ Color& rLineCol, Stack& rLineColStack,
+ rtl_TextEncoding& rActualCharSet );
+ #endif
+-#endif // __PRIVATE
+
+ public:
+ SVMConverter( SvStream& rIStm, GDIMetaFile& rMtf, ULONG nConvertMode );
+Index: vcl/inc/decoview.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/decoview.hxx,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -p -u -r1.3 -r1.4
+--- vcl/inc/decoview.hxx 27 Mar 2003 17:57:20 -0000 1.3
++++ vcl/inc/decoview.hxx 10 May 2004 15:41:25 -0000 1.4
+@@ -88,6 +88,7 @@ class OutputDevice;
+ #define FRAME_DRAW_DOUBLEIN ((USHORT)0x0004)
+ #define FRAME_DRAW_DOUBLEOUT ((USHORT)0x0005)
+ #define FRAME_DRAW_MENU ((USHORT)0x0010)
++#define FRAME_DRAW_WINDOWBORDER ((USHORT)0x0020)
+ #define FRAME_DRAW_MONO ((USHORT)0x1000)
+ #define FRAME_DRAW_NODRAW ((USHORT)0x8000)
+ #define FRAME_DRAW_STYLE ((USHORT)0x000F)
+Index: vcl/inc/dialog.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/dialog.hxx,v
+retrieving revision 1.7.252.1
+retrieving revision 1.10
+diff -u -p -u -r1.7.252.1 -r1.10
+--- vcl/inc/dialog.hxx 31 Oct 2003 15:43:22 -0000 1.7.252.1
++++ vcl/inc/dialog.hxx 17 Jun 2004 12:02:16 -0000 1.10
+@@ -81,20 +81,16 @@ class Dialog : public SystemWindow
+ {
+ private:
+ Window* mpDialogParent;
+- long mnDummy;
+ Dialog* mpPrevExecuteDlg;
+ long* mpResult;
+- long mnDummy1;
+ long mnMousePositioned;
+ BOOL mbInExecute;
+ BOOL mbOldSaveBack;
+ BOOL mbInClose;
+ BOOL mbModalMode;
+
+-#ifdef _SV_DIALOG_CXX
+ void ImplInitData();
+ void ImplInitSettings();
+-#endif
+
+ #if _SOLAR__PRIVATE
+ protected:
+@@ -126,8 +122,8 @@ public:
+ void EndDialog( long nResult = 0 );
+ static void EndAllDialogs( Window* pParent=NULL );
+
+- void GetDrawWindowBorder( long& rLeftBorder, long& rTopBorder,
+- long& rRightBorder, long& rBottomBorder ) const;
++ void GetDrawWindowBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
++ sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
+
+ void SetModalInputMode( BOOL bModal );
+ void SetModalInputMode( BOOL bModal, BOOL bSubModalDialogs );
+Index: vcl/inc/dockwin.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/dockwin.hxx,v
+retrieving revision 1.4
+retrieving revision 1.6
+diff -u -p -u -r1.4 -r1.6
+--- vcl/inc/dockwin.hxx 24 Apr 2002 15:41:07 -0000 1.4
++++ vcl/inc/dockwin.hxx 17 Jun 2004 12:02:29 -0000 1.6
+@@ -89,10 +89,10 @@ private:
+ long mnTrackY;
+ long mnTrackWidth;
+ long mnTrackHeight;
+- long mnDockLeft;
+- long mnDockTop;
+- long mnDockRight;
+- long mnDockBottom;
++ sal_Int32 mnDockLeft;
++ sal_Int32 mnDockTop;
++ sal_Int32 mnDockRight;
++ sal_Int32 mnDockBottom;
+ WinBits mnFloatBits;
+ BOOL mbDockCanceled:1,
+ mbDockPrevented:1,
+@@ -106,15 +106,10 @@ private:
+ mbPined:1,
+ mbRollUp:1,
+ mbDockBtn:1,
+- mbHideBtn:1,
+- mbDummy1:1,
+- mbDummy2:1,
+- mbDummy3:1;
++ mbHideBtn:1;
+
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_DOCKWIN_CXX
+ void ImplInitData();
+-#endif
+
+ protected:
+ void ImplInit( Window* pParent, WinBits nStyle );
+Index: vcl/inc/edit.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/edit.hxx,v
+retrieving revision 1.11
+retrieving revision 1.13
+diff -u -p -u -r1.11 -r1.13
+--- vcl/inc/edit.hxx 27 Mar 2003 17:57:20 -0000 1.11
++++ vcl/inc/edit.hxx 10 May 2004 15:41:45 -0000 1.13
+@@ -139,7 +139,6 @@ private:
+ Link maAutocompleteHdl;
+
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_EDIT_CXX
+ DECL_LINK( ImplUpdateDataHdl, Timer* );
+
+ void ImplInitData();
+@@ -164,7 +163,6 @@ private:
+ void ImplPaste( ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::clipboard::XClipboard >& rxClipboard );
+ long ImplGetExtraOffset() const;
+ #endif
+-#endif
+
+ protected:
+ #if _SOLAR__PRIVATE
+@@ -174,6 +172,7 @@ protected:
+ void ImplLoadRes( const ResId& rResId );
+ void ImplSetSelection( const Selection& rSelection, BOOL bPaint = TRUE );
+ #endif
++ int ImplGetNativeControlType();
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::dnd::XDragSourceListener > mxDnDListener;
+
+Index: vcl/inc/field.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/field.hxx,v
+retrieving revision 1.9
+retrieving revision 1.12
+diff -u -p -u -r1.9 -r1.12
+--- vcl/inc/field.hxx 5 Nov 2001 13:00:00 -0000 1.9
++++ vcl/inc/field.hxx 2 Apr 2004 10:35:02 -0000 1.12
+@@ -105,17 +105,10 @@ private:
+ BOOL mbEmptyFieldValue;
+ BOOL mbEmptyFieldValueEnabled;
+ BOOL mbDefaultLocale;
+- ULONG mnDummy1;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+- BOOL mbDummy3;
+- BOOL mbDummy4;
+
+ protected:
+-#if defined( _SV_FIELD_CXX ) || defined( _SV_FIELD2_CXX ) || defined( VCL_LONGCURR_CXX )
+ void ImplSetText( const XubString& rText, Selection* pNewSel = NULL );
+ BOOL ImplGetEmptyFieldValue() const { return mbEmptyFieldValue; }
+-#endif
+
+ void SetFieldText( const XubString& rText, BOOL bKeepSelection );
+ void SetEmptyFieldValueData( BOOL bValue ) { mbEmptyFieldValue = bValue; }
+@@ -125,7 +118,7 @@ protected:
+
+ public:
+ FormatterBase( Edit* pField = NULL );
+- ~FormatterBase();
++ virtual ~FormatterBase();
+
+ const LocaleDataWrapper& GetLocaleDataWrapper() const;
+
+@@ -174,21 +163,16 @@ private:
+ XubString maFieldString;
+ XubString maLiteralMask;
+ USHORT mnFormatFlags;
+- USHORT mnDummy1;
+ BOOL mbSameMask;
+ BOOL mbInPattKeyInput;
+- BOOL mbDummy1;
+- BYTE mbDummy2;
+
+ protected:
+ PatternFormatter();
+
+-#ifdef _SV_FIELD2_CXX
+ void ImplLoadRes( const ResId& rResId );
+ void ImplSetMask( const ByteString& rEditMask, const XubString& rLiteralMask );
+ BOOL ImplIsSameMask() const { return mbSameMask; }
+ BOOL& ImplGetInPattKeyInput() { return mbInPattKeyInput; }
+-#endif
+
+ public:
+ ~PatternFormatter();
+@@ -217,9 +201,7 @@ public:
+ class NumericFormatter : public FormatterBase
+ {
+ private:
+-#ifdef _SV_FIELD_CXX
+ void ImplInit();
+-#endif
+
+ protected:
+ long mnFieldValue;
+@@ -233,8 +215,6 @@ protected:
+ USHORT mnDumym2;
+ BOOL mbThousandSep;
+ BOOL mbShowTrailingZeros;
+- BYTE mbDummy2;
+- BYTE mbDummy3;
+
+ // Eigentlich nur am entsprechenden Feld einstellbar (fuer Interaktion),
+ // wird aber in allen Verschiedenen Ableitungen benoetigt
+@@ -255,12 +235,10 @@ protected:
+ void FieldFirst();
+ void FieldLast();
+
+-#ifdef _SV_FIELD_CXX
+ void ImplLoadRes( const ResId& rResId );
+ BOOL ImplNumericReformat( const XubString& rStr, double& rValue, XubString& rOutStr );
+ void ImplNewFieldValue( long nNewValue );
+ void ImplSetUserValue( long nNewValue, Selection* pNewSelection = NULL );
+-#endif
+
+ public:
+ ~NumericFormatter();
+@@ -308,9 +286,7 @@ public:
+ class MetricFormatter : public NumericFormatter
+ {
+ private:
+-#ifdef _SV_FIELD_CXX
+ void ImplInit();
+-#endif
+
+ protected:
+ XubString maCustomUnitText;
+@@ -324,10 +300,8 @@ protected:
+
+ virtual XubString CreateFieldText( long nValue ) const;
+
+-#ifdef _SV_FIELD_CXX
+ void ImplLoadRes( const ResId& rResId );
+ BOOL ImplMetricReformat( const XubString& rStr, double& rValue, XubString& rOutStr );
+-#endif
+
+ public:
+ ~MetricFormatter();
+@@ -368,23 +342,13 @@ class CurrencyFormatter : public Numeric
+ {
+ private:
+ String maCurrencySymbol;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+- BYTE mbDummy3;
+- BYTE mbDummy4;
+
+-#ifdef _SV_FIELD_CXX
+ void ImplInit();
+-#endif
+
+ protected:
+ CurrencyFormatter();
+-
+ virtual XubString CreateFieldText( long nValue ) const;
+-
+-#ifdef _SV_FIELD_CXX
+ BOOL ImplCurrencyReformat( const XubString& rStr, XubString& rOutStr );
+-#endif
+
+ public:
+ ~CurrencyFormatter();
+@@ -417,19 +381,13 @@ private:
+ BOOL mbShowDateCentury;
+ USHORT mnDateFormat;
+ ULONG mnExtDateFormat;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+- BYTE mbDummy3;
+- BYTE mbDummy4;
++ BOOL mbEnforceValidValue;
+
+-#ifdef _SV_FIELD2_CXX
+ void ImplInit();
+-#endif
+
+ protected:
+ DateFormatter();
+
+-#ifdef _SV_FIELD2_CXX
+ void ImplLoadRes( const ResId& rResId );
+ const Date& ImplGetFieldDate() const { return maFieldDate; }
+ BOOL ImplDateReformat( const XubString& rStr, XubString& rOutStr,
+@@ -440,7 +398,8 @@ protected:
+ const AllSettings& rSettings ) const;
+ void ImplNewFieldValue( const Date& rDate );
+ CalendarWrapper& GetCalendarWrapper() const;
+-#endif
++
++ BOOL ImplAllowMalformedInput() const;
+
+ public:
+ ~DateFormatter();
+@@ -450,11 +409,6 @@ public:
+
+ virtual void SetLocale( const ::com::sun::star::lang::Locale& rLocale );
+
+-#if SUPD < 651
+- // MT 11/01: Seems that nobody uses them, I only want to use the ExtDateFormat now ( ## )
+- void SetDateFormat( DateFormat eFormat );
+- DateFormat GetDateFormat() const;
+-#endif
+
+ void SetExtDateFormat( ExtDateFieldFormat eFormat );
+ ExtDateFieldFormat GetExtDateFormat( BOOL bResolveSystemFormat = FALSE ) const;
+@@ -489,6 +443,23 @@ public:
+
+ static void ExpandCentury( Date& rDate );
+ static void ExpandCentury( Date& rDate, USHORT nTwoDigitYearStart );
++
++ static Date GetInvalidDate() { return Date( 0, 0, 0 ); }
++
++ /** enables or disables the enforcement of valid values
++
++ If this is set to <TRUE/> (which is the default), then GetDate will always return a valid
++ date, no matter whether the current text can really be interpreted as date. (Note: this
++ is the compatible bahavior).
++
++ If this is set to <FALSE/>, the GetDate will return GetInvalidDate, in case the current text
++ cannot be interpreted as date.
++
++ In addition, if this is set to <FALSE/>, the text in the field will <em>not</em> be corrected
++ when the control loses the focus - instead, the invalid input will be preserved.
++ */
++ void EnforceValidValue( BOOL _bEnforce ) { mbEnforceValidValue = _bEnforce; }
++ inline BOOL IsEnforceValidValue( ) const { return mbEnforceValidValue; }
+ };
+
+
+@@ -507,27 +478,20 @@ private:
+ USHORT mnTimeFormat;
+ BOOL mbDuration;
+ BOOL mbEmptyTime;
+- ULONG mnDummy1;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+- BYTE mbDummy3;
+- BYTE mbDummy4;
++ BOOL mbEnforceValidValue;
+
+-#ifdef _SV_FIELD2_CXX
+ void ImplInit();
+-#endif
+
+ protected:
+ Time maFieldTime;
+
+ TimeFormatter();
+
+-#ifdef _SV_FIELD2_CXX
+ void ImplLoadRes( const ResId& rResId );
+ BOOL ImplTimeReformat( const XubString& rStr, XubString& rOutStr );
+ void ImplNewFieldValue( const Time& rTime );
+ void ImplSetUserTime( const Time& rNewTime, Selection* pNewSelection = NULL );
+-#endif
++ BOOL ImplAllowMalformedInput() const;
+
+ public:
+ ~TimeFormatter();
+@@ -557,6 +521,23 @@ public:
+ void SetEmptyTime() { FormatterBase::SetEmptyFieldValue(); }
+ BOOL IsEmptyTime() const { return FormatterBase::IsEmptyFieldValue(); }
+ Time GetCorrectedTime() const { return maCorrectedTime; }
++
++ static Time GetInvalidTime() { return Time( 99, 99, 99 ); }
++
++ /** enables or disables the enforcement of valid values
++
++ If this is set to <TRUE/> (which is the default), then GetTime will always return a valid
++ time, no matter whether the current text can really be interpreted as time. (Note: this
++ is the compatible bahavior).
++
++ If this is set to <FALSE/>, the GetTime will return GetInvalidTime, in case the current text
++ cannot be interpreted as time.
++
++ In addition, if this is set to <FALSE/>, the text in the field will <em>not</em> be corrected
++ when the control loses the focus - instead, the invalid input will be preserved.
++ */
++ void EnforceValidValue( BOOL _bEnforce ) { mbEnforceValidValue = _bEnforce; }
++ inline BOOL IsEnforceValidValue( ) const { return mbEnforceValidValue; }
+ };
+
+
+@@ -583,10 +564,8 @@ public:
+
+ class NumericField : public SpinField, public NumericFormatter
+ {
+-#ifdef _SV_FIELD_CXX
+ protected:
+ void ImplLoadRes( const ResId& rResId );
+-#endif
+
+ public:
+ NumericField( Window* pParent, WinBits nWinStyle );
+@@ -612,10 +591,8 @@ public:
+
+ class MetricField : public SpinField, public MetricFormatter
+ {
+-#ifdef _SV_FIELD_CXX
+ protected:
+ void ImplLoadRes( const ResId& rResId );
+-#endif
+
+ public:
+ MetricField( Window* pParent, WinBits nWinStyle );
+@@ -663,10 +640,8 @@ public:
+
+ class CurrencyField : public SpinField, public CurrencyFormatter
+ {
+-#ifdef _SV_FIELD_CXX
+ protected:
+ void ImplLoadRes( const ResId& rResId );
+-#endif
+
+ public:
+ CurrencyField( Window* pParent, WinBits nWinStyle );
+@@ -696,11 +671,9 @@ private:
+ Date maFirst;
+ Date maLast;
+
+-#ifdef _SV_FIELD2_CXX
+ protected:
+ void ImplDateSpinArea( BOOL bUp );
+ void ImplLoadRes( const ResId& rResId );
+-#endif
+
+ public:
+ DateField( Window* pParent, WinBits nWinStyle );
+@@ -739,11 +707,9 @@ private:
+ Time maFirst;
+ Time maLast;
+
+-#ifdef _SV_FIELD2_CXX
+ protected:
+ void ImplTimeSpinArea( BOOL bUp );
+ void ImplLoadRes( const ResId& rResId );
+-#endif
+
+ public:
+ TimeField( Window* pParent, WinBits nWinStyle );
+Index: vcl/inc/fixbrd.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/fixbrd.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/fixbrd.hxx 7 Dec 2000 13:37:15 -0000 1.2
++++ vcl/inc/fixbrd.hxx 6 Jan 2004 12:57:59 -0000 1.3
+@@ -91,18 +91,13 @@ class FixedBorder : public Control
+ private:
+ USHORT mnType;
+ BOOL mbTransparent;
+- BOOL mbDummy1;
+
+-#if _SOLAR__PRIVATE
+-#ifdef _SV_FIXBRD_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ WinBits ImplInitStyle( WinBits nStyle );
+ void ImplInitSettings();
+ void ImplDraw( OutputDevice* pDev, ULONG nDrawFlags,
+ const Point& rPos, const Size& rSize );
+-#endif
+-#endif
+
+ public:
+ FixedBorder( Window* pParent, WinBits nStyle = 0 );
+Index: vcl/inc/fixed.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/fixed.hxx,v
+retrieving revision 1.5
+retrieving revision 1.6
+diff -u -p -u -r1.5 -r1.6
+--- vcl/inc/fixed.hxx 29 Apr 2002 17:46:17 -0000 1.5
++++ vcl/inc/fixed.hxx 6 Jan 2004 12:58:20 -0000 1.6
+@@ -84,14 +84,12 @@ class UserDrawEvent;
+ class FixedText : public Control
+ {
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_FIXED_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ WinBits ImplInitStyle( WinBits nStyle );
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+ void ImplDraw( OutputDevice* pDev, ULONG nDrawFlags,
+ const Point& rPos, const Size& rSize, bool bFillLayout = false ) const;
+-#endif
+ public:
+ static USHORT ImplGetTextStyle( WinBits nWinBits );
+ #endif
+@@ -116,17 +114,15 @@ public:
+
+ class FixedLine : public Control
+ {
+-#if _SOLAR__PRIVATE
+-#ifdef _SV_FIXED_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ WinBits ImplInitStyle( WinBits nStyle );
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+ void ImplDraw( bool bLayout = false );
+-#endif
+-#endif
++
+ protected:
+- virtual void FillLayoutData() const;
++ virtual void FillLayoutData() const;
++
+ public:
+ FixedLine( Window* pParent, WinBits nStyle = WB_HORZ );
+ FixedLine( Window* pParent, const ResId& rResId );
+@@ -148,19 +144,14 @@ private:
+ Bitmap maBitmap;
+ Bitmap maBitmapHC;
+
+-#if _SOLAR__PRIVATE
+-#ifdef _SV_FIXED_CXX
+-private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ WinBits ImplInitStyle( WinBits nStyle );
+ void ImplInitSettings();
+ void ImplDraw( OutputDevice* pDev, ULONG nDrawFlags,
+ const Point& rPos, const Size& rSize );
+-#endif
+
+ protected:
+ void ImplLoadRes( const ResId& rResId );
+-#endif
+
+ public:
+ FixedBitmap( Window* pParent, WinBits nStyle = 0 );
+@@ -190,19 +181,15 @@ private:
+ Image maImageHC;
+ BOOL mbInUserDraw;
+
+-#if _SOLAR__PRIVATE
+-#ifdef _SV_FIXED_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ WinBits ImplInitStyle( WinBits nStyle );
+ void ImplInitSettings();
+ void ImplDraw( OutputDevice* pDev, ULONG nDrawFlags,
+ const Point& rPos, const Size& rSize );
+-#endif
+
+ protected:
+ void ImplLoadRes( const ResId& rResId );
+-#endif
+
+ public:
+ FixedImage( Window* pParent, WinBits nStyle = 0 );
+Index: vcl/inc/floatwin.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/floatwin.hxx,v
+retrieving revision 1.5
+retrieving revision 1.6
+diff -u -p -u -r1.5 -r1.6
+--- vcl/inc/floatwin.hxx 31 Oct 2001 19:28:50 -0000 1.5
++++ vcl/inc/floatwin.hxx 6 Jan 2004 12:58:54 -0000 1.6
+@@ -114,7 +114,6 @@ private:
+ FloatingWindow* mpNextFloat;
+ Window* mpFirstPopupModeWin;
+ ToolBox* mpBox;
+- void* mpDummy;
+ Rectangle maFloatRect;
+ ULONG mnPostId;
+ ULONG mnPopupModeFlags;
+@@ -131,10 +130,8 @@ private:
+ Link maPopupModeEndHdl;
+
+ #if _SOLAR__PRIVATE
+-#ifdef _SV_FLOATWIN_CXX
+ void ImplCallPopupModeEnd();
+ DECL_LINK( ImplEndPopupModeHdl, void* );
+-#endif
+
+ protected:
+ void ImplInit( Window* pParent, WinBits nStyle );
+Index: vcl/inc/fntstyle.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/fntstyle.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/fntstyle.hxx 23 Mar 2001 11:44:51 -0000 1.2
++++ vcl/inc/fntstyle.hxx 6 Jan 2004 12:59:13 -0000 1.3
+@@ -62,6 +62,7 @@
+ #ifndef _VCL_FNTSTYLE_HXX
+ #define _VCL_FNTSTYLE_HXX
+
++#include <tools/solar.h>
+ #include <sal/types.h>
+
+ // --------------
+Index: vcl/inc/font.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/font.hxx,v
+retrieving revision 1.6
+retrieving revision 1.8
+diff -u -p -u -r1.6 -r1.8
+--- vcl/inc/font.hxx 1 Aug 2001 12:32:45 -0000 1.6
++++ vcl/inc/font.hxx 6 Jan 2004 12:59:38 -0000 1.8
+@@ -71,8 +71,8 @@
+ #ifndef _TOOLS_LANG_HXX
+ #include <tools/lang.hxx>
+ #endif
+-#ifndef _SV_COLOR_HXX
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
+ #endif
+ #ifndef _VCL_VCLENUM_HXX
+ #include <vclenum.hxx>
+@@ -81,12 +81,6 @@
+ #include <fntstyle.hxx>
+ #endif
+
+-#ifdef SMART_UNO_GENERATION
+-class Font_Type;
+-class Font_Size;
+-class Font_Attribs;
+-#endif
+-
+ class SvStream;
+ #define FontAlign TextAlign
+
+@@ -226,16 +220,4 @@ public:
+
+ friend SvStream& operator>>( SvStream& rIStm, Font& rFont );
+ friend SvStream& operator<<( SvStream& rOStm, const Font& rFont );
+-
+-#ifdef SMART_UNO_GENERATION
+- void getType( Font_Type& ) const;
+- void setType( const Font_Type& );
+-
+- void getSize( Font_Size& ) const;
+- void setSize( const Font_Size& );
+-
+- void getAttribs( Font_Attribs& ) const;
+- void setAttribs( const Font_Attribs& );
+-#endif
+-
+ };
+
+Index: vcl/inc/fontcfg.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/fontcfg.hxx,v
+retrieving revision 1.3
+retrieving revision 1.5
+diff -u -p -u -r1.3 -r1.5
+--- vcl/inc/fontcfg.hxx 29 May 2002 13:37:05 -0000 1.3
++++ vcl/inc/fontcfg.hxx 25 Jun 2004 15:24:19 -0000 1.5
+@@ -66,43 +66,70 @@
+ #ifndef _UTL_CONFIGITEM_HXX_
+ #include <unotools/configitem.hxx>
+ #endif
+-#ifndef _LANG_HXX
+-#include <tools/lang.hxx>
+-#endif
+ #ifndef _STRING_HXX
+ #include <tools/string.hxx>
+ #endif
+ #ifndef _VCL_ENUM_HXX
+ #include <vclenum.hxx>
+ #endif
++#ifndef _COM_SUN_STAR_LANG_LOCALE_HPP_
++#include <com/sun/star/lang/Locale.hpp>
++#endif
+
+-#include <map>
+ #include <hash_map>
+ #include <vector>
+
++namespace com {
++namespace sun {
++namespace star {
++namespace lang {
++
++// equality operator needed for hash_map;
++// (-> why does this need to be in the namespace of Locale ? g++ fails to compile else)
++inline bool operator==( const com::sun::star::lang::Locale& rLeft, const com::sun::star::lang::Locale& rRight )
++{
++ return
++ rLeft.Language.equals( rRight.Language ) &&
++ rLeft.Country.equals( rRight.Country ) &&
++ rLeft.Variant.equals( rRight.Variant )
++ ;
++}
++}}}}
++
+ namespace vcl
+ {
+
++struct LocaleHash
++{
++ size_t operator()( const com::sun::star::lang::Locale& rLocale ) const
++ {
++ return
++ (size_t)rLocale.Language.hashCode() ^
++ (size_t)rLocale.Country.hashCode() ^
++ (size_t)rLocale.Variant.hashCode();
++ }
++};
++
+ class DefaultFontConfigItem : public ::utl::ConfigItem
+ {
+
+- ::std::map< int, ::std::map< int, ::rtl::OUString > > m_aDefaults;
++ std::hash_map< com::sun::star::lang::Locale , std::hash_map< int, rtl::OUString >, vcl::LocaleHash > m_aDefaults;
+
+- virtual void Notify( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& rPropertyNames );
++ virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& rPropertyNames );
+ virtual void Commit();
+
+ void getValues();
+- static int getKeyType( const ::rtl::OUString& rKey );
++ static int getKeyType( const rtl::OUString& rKey );
+ DefaultFontConfigItem();
+ public:
+ virtual ~DefaultFontConfigItem();
+
+ static DefaultFontConfigItem* get();
+
+- const ::rtl::OUString& getDefaultFont( int nLanguage, int nType ) const;
+- const ::rtl::OUString& getUserInterfaceFont( int nLanguage = LANGUAGE_SYSTEM ) const;
++ const rtl::OUString& getDefaultFont( const com::sun::star::lang::Locale& rLocale, int nType ) const;
++ const rtl::OUString& getUserInterfaceFont( const com::sun::star::lang::Locale& rLocale ) const;
+
+- void setDefaultFont( int nLanguage, int nType, const ::rtl::OUString& rName );
++ void setDefaultFont( const com::sun::star::lang::Locale& rLocale, int nType, const rtl::OUString& rName );
+ };
+
+
+@@ -170,13 +197,13 @@ public:
+ struct FontNameAttr
+ {
+ String Name;
+- ::std::vector< String > Substitutions;
+- ::std::vector< String > MSSubstitutions;
+- ::std::vector< String > PSSubstitutions;
+- ::std::vector< String > HTMLSubstitutions;
+- FontWeight Weight;
++ std::vector< String > Substitutions;
++ std::vector< String > MSSubstitutions;
++ std::vector< String > PSSubstitutions;
++ std::vector< String > HTMLSubstitutions;
++ FontWeight Weight;
+ FontWidth Width;
+- unsigned long Type; // bitfield of IMPL_FONT_ATTR_*
++ unsigned long Type; // bitfield of IMPL_FONT_ATTR_*
+ };
+ private:
+
+@@ -184,9 +211,9 @@ private:
+ // searches on the substitutes are done with Name as key, where
+ // a minimal match is sufficient (that is e.g. "Thorndale" will match
+ // "Thorndale BlaBlub"). Also names must be lower case.
+- ::std::map< int, ::std::vector< FontNameAttr > > m_aSubstitutions;
++ std::hash_map< com::sun::star::lang::Locale, std::vector< FontNameAttr >, vcl::LocaleHash > m_aSubstitutions;
+
+- virtual void Notify( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& rPropertyNames );
++ virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& rPropertyNames );
+ virtual void Commit();
+
+ void getValues();
+@@ -196,17 +223,23 @@ public:
+
+ static FontSubstConfigItem* get();
+
+- const FontNameAttr* getSubstInfo( const String& rFontName, int nLanguage = LANGUAGE_ENGLISH ) const;
++ const FontNameAttr* getSubstInfo(
++ const String& rFontName,
++ const com::sun::star::lang::Locale& rLocale =
++ com::sun::star::lang::Locale( rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "en" ) ),
++ rtl::OUString(),
++ rtl::OUString() )
++ ) const;
+ static void getMapName( const String& rOrgName, String& rShortName, String& rFamilyName, FontWeight& rWeight, FontWidth& rWidth, unsigned long& rType );
+ };
+
+ class SettingsConfigItem : public ::utl::ConfigItem
+ {
+
+- ::std::hash_map< ::rtl::OUString, ::std::hash_map< ::rtl::OUString, ::rtl::OUString, ::rtl::OUStringHash >, ::rtl::OUStringHash >
++ std::hash_map< rtl::OUString, std::hash_map< rtl::OUString, rtl::OUString, rtl::OUStringHash >, rtl::OUStringHash >
+ m_aSettings;
+
+- virtual void Notify( const ::com::sun::star::uno::Sequence< ::rtl::OUString >& rPropertyNames );
++ virtual void Notify( const com::sun::star::uno::Sequence< rtl::OUString >& rPropertyNames );
+ virtual void Commit();
+
+ void getValues();
+@@ -216,8 +249,8 @@ public:
+
+ static SettingsConfigItem* get();
+
+- const ::rtl::OUString& getValue( const ::rtl::OUString& rGroup, const ::rtl::OUString& rKey ) const;
+- void setValue( const ::rtl::OUString& rGroup, const ::rtl::OUString& rKey, const ::rtl::OUString& rValue );
++ const rtl::OUString& getValue( const rtl::OUString& rGroup, const rtl::OUString& rKey ) const;
++ void setValue( const rtl::OUString& rGroup, const rtl::OUString& rKey, const rtl::OUString& rValue );
+ };
+
+
+Index: vcl/inc/gdimtf.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/gdimtf.hxx,v
+retrieving revision 1.5
+retrieving revision 1.6
+diff -u -p -u -r1.5 -r1.6
+--- vcl/inc/gdimtf.hxx 18 Nov 2002 13:42:14 -0000 1.5
++++ vcl/inc/gdimtf.hxx 6 Jan 2004 13:00:30 -0000 1.6
+@@ -98,6 +98,7 @@ class Gradient;
+ #ifndef METAFILE_END
+ #define METAFILE_END GDI_METAFILE_END
+ #endif
++
+ #ifndef METAFILE_LABEL_NOTFOUND
+ #define METAFILE_LABEL_NOTFOUND GDI_METAFILE_LABEL_NOTFOUND
+ #endif
+@@ -136,11 +137,7 @@ typedef BitmapEx (*BmpExchangeFnc)( cons
+ // - GDIMetaFile -
+ // ---------------
+
+-#ifndef MAC
+ class GDIMetaFile : protected List
+-#else
+-class GDIMetaFile : public List
+-#endif
+ {
+ private:
+
+@@ -191,8 +188,8 @@ protected:
+
+ public:
+ GDIMetaFile();
+- GDIMetaFile( const GDIMetaFile& rMtf );
+- ~GDIMetaFile();
++ GDIMetaFile( const GDIMetaFile& rMtf );
++ virtual ~GDIMetaFile();
+
+ GDIMetaFile& operator=( const GDIMetaFile& rMtf );
+ BOOL operator==( const GDIMetaFile& rMtf ) const;
+Index: vcl/inc/glyphcache.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/glyphcache.hxx,v
+retrieving revision 1.19
+retrieving revision 1.22
+diff -u -p -u -r1.19 -r1.22
+--- vcl/inc/glyphcache.hxx 2 Jul 2003 13:38:54 -0000 1.19
++++ vcl/inc/glyphcache.hxx 18 May 2004 10:48:36 -0000 1.22
+@@ -72,6 +72,7 @@ class ServerFontLayout;
+
+ #include <tools/gen.hxx>
+ #include <hash_map>
++#include <map>
+ #include <hash_set>
+
+ struct ImplFontSelectData;
+@@ -90,14 +91,20 @@ bool operator==( const ImplFontSelectDat
+
+ // =======================================================================
+
++namespace std {
+ template<>
+-struct std::hash<ImplFontSelectData>
++struct hash<ImplFontSelectData>
+ {
+ size_t operator()( const ImplFontSelectData& ) const;
+ };
+
++}
++
+ //--------
+
++typedef std::map< sal_Unicode, std::map< sal_Unicode, int > > unicodeKernMap;
++typedef std::map< int, std::map< int, int > > glyphKernMap;
++
+ class GlyphCache
+ {
+ public:
+@@ -110,7 +117,11 @@ public:
+ void ClearFontPath();
+ void AddFontPath( const String& rFontPath );
+ void AddFontFile( const rtl::OString& rNormalizedName,
+- int nFaceNum, int nFontId, const ImplFontData* );
++ int nFaceNum,
++ int nFontId,
++ const ImplFontData*,
++ const unicodeKernMap* pUniKernPairs = NULL
++ );
+ long FetchFontList( ImplDevFontList* ) const;
+
+ ServerFont* CacheFont( const ImplFontSelectData& );
+@@ -118,7 +129,7 @@ public:
+ void RemoveFont( const ImplFontData* );
+
+ private:
+-friend ServerFont;
++ friend class ServerFont;
+ // used by ServerFont class only
+ void AddedGlyph( ServerFont& rServerFont, GlyphData& rGlyphData );
+ void RemovingGlyph( ServerFont& rSF, GlyphData& rGD, int nGlyphIndex );
+@@ -156,7 +167,7 @@ public:
+ long GetCharWidth() const { return mnAdvanceWidth; }
+
+ protected:
+-friend class GlyphData;
++ friend class GlyphData;
+ void SetOffset( int nX, int nY ) { maOffset = Point( nX, nY); }
+ void SetDelta( int nX, int nY ) { maDelta = Point( nX, nY); }
+ void SetSize( const Size& s ) { maSize = s; }
+@@ -218,8 +229,8 @@ public:
+ const ImplFontSelectData& GetFontSelData() const { return maFontSelData; }
+
+ virtual void FetchFontMetric( ImplFontMetricData&, long& rFactor ) const = 0;
+- virtual ULONG GetKernPairs( struct ImplKernPairData** ) const = 0;
+- virtual int GetGlyphKernValue( int, int ) const = 0;
++ virtual ULONG GetKernPairs( struct ImplKernPairData** ) const;
++ virtual int GetGlyphKernValue( int, int ) const;
+ virtual ULONG GetFontCodeRanges( sal_uInt32* pCodes ) const { return 0; }
+ Point TransformPoint( const Point& ) const;
+
+@@ -238,9 +249,9 @@ public:
+ void* GetExtPointer() { return mpExtData; }
+
+ protected:
+-friend GlyphCache;
+-friend ServerFontLayout;
+- ServerFont( const ImplFontSelectData& );
++ friend class GlyphCache;
++ friend class ServerFontLayout;
++ ServerFont( const ImplFontSelectData&, const glyphKernMap* pGlyphKern = NULL, const unicodeKernMap* pUniKern = NULL );
+ virtual ~ServerFont();
+
+ void AddRef() const { ++mnRefCount; }
+@@ -273,6 +284,12 @@ private:
+ protected:
+ long nCos;
+ long nSin;
++
++ // maps left glyph id to map of right glyphid
++ // the inner map maps right glyphid to kern value
++ const glyphKernMap* mpKernPairs;
++ const unicodeKernMap* mpUnicodeKernPairs;
++
+ };
+
+ // =======================================================================
+Index: vcl/inc/gradient.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/gradient.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.3
+diff -u -p -u -r1.1.1.1 -r1.3
+--- vcl/inc/gradient.hxx 19 Sep 2000 10:23:04 -0000 1.1.1.1
++++ vcl/inc/gradient.hxx 6 Jan 2004 13:01:22 -0000 1.3
+@@ -62,7 +62,10 @@
+ #ifndef _SV_GRADIENT_HXX
+ #define _SV_GRADIENT_HXX
+
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
++#endif
++
+ #include <vclenum.hxx>
+
+ // ------------------
+@@ -160,29 +163,6 @@ public:
+
+ friend SvStream& operator>>( SvStream& rIStm, Gradient& rGradient );
+ friend SvStream& operator<<( SvStream& rOStm, const Gradient& rGradient );
+-
+-#ifdef SMART_UNO_GENERATION
+- GradientStyle getStyle() const { return GetStyle(); }
+- void setStyle( GradientStyle e ) { SetStyle( e ); }
+- long getStartColor() const { return GetStartColor().GetColor(); }
+- void setStartColor( long n ) { SetStartColor( Color( n ) ); }
+- long getEndColor() const { return GetEndColor().GetColor(); }
+- void setEndColor( long n ) { SetEndColor( Color( n ) ); }
+- USHORT getAngle() const { return GetAngle(); }
+- void setAngle( USHORT n ) { SetAngle( n ); }
+- USHORT getBorder() const { return GetBorder(); }
+- void setBorder( USHORT n ) { SetBorder( n ); }
+- USHORT getXOffset() const { return GetOfsX(); }
+- void setXOffset( USHORT n ) { SetOfsX( n ); }
+- USHORT getYOffset() const { return GetOfsY(); }
+- void setYOffset( USHORT n ) { SetOfsY( n ); }
+- USHORT getStartIntensity() const { return GetStartIntensity(); }
+- void setStartIntensity( USHORT n ) { SetStartIntensity( n ); }
+- USHORT getEndIntensity() const { return GetEndIntensity(); }
+- void setEndIntensity( USHORT n ) { SetEndIntensity( n ); }
+- USHORT getStepCount() const { return GetSteps(); }
+- void setStepCount( USHORT n ) { SetSteps( n ); }
+-#endif
+ };
+
+ #endif // _SV_GRADIENT_HXX
+Index: vcl/inc/graph.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/graph.hxx,v
+retrieving revision 1.6
+retrieving revision 1.7
+diff -u -p -u -r1.6 -r1.7
+--- vcl/inc/graph.hxx 27 Mar 2003 17:57:21 -0000 1.6
++++ vcl/inc/graph.hxx 20 Apr 2004 13:53:29 -0000 1.7
+@@ -143,6 +143,8 @@ public:
+ Bitmap GetBitmap( const Size* pSizePixel ) const;
+ BitmapEx GetBitmapEx() const;
+ BitmapEx GetBitmapEx( const Size* pSizePixel ) const;
++ Bitmap GetUnlimitedBitmap( const Size* pSizePixel ) const;
++ BitmapEx GetUnlimitedBitmapEx( const Size* pSizePixel ) const;
+ Animation GetAnimation() const;
+ const GDIMetaFile& GetGDIMetaFile() const;
+
+Index: vcl/inc/group.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/group.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/group.hxx 8 May 2002 16:01:29 -0000 1.2
++++ vcl/inc/group.hxx 6 Jan 2004 13:01:39 -0000 1.3
+@@ -75,16 +75,15 @@
+
+ class GroupBox : public Control
+ {
+-#ifdef _SV_GROUP_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ WinBits ImplInitStyle( WinBits nStyle );
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+ void ImplDraw( OutputDevice* pDev, ULONG nDrawFlags,
+ const Point& rPos, const Size& rSize, bool bLayout = false );
+-#endif
+
+- virtual void FillLayoutData() const;
++ virtual void FillLayoutData() const;
++
+ public:
+ GroupBox( Window* pParent, WinBits nStyle = 0 );
+ GroupBox( Window* pParent, const ResId& rResId );
+Index: vcl/inc/hatch.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/hatch.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.3
+diff -u -p -u -r1.1.1.1 -r1.3
+--- vcl/inc/hatch.hxx 19 Sep 2000 10:23:04 -0000 1.1.1.1
++++ vcl/inc/hatch.hxx 6 Jan 2004 13:01:57 -0000 1.3
+@@ -62,7 +62,10 @@
+ #ifndef _SV_HATCH_HXX
+ #define _SV_HATCH_HXX
+
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
++#endif
++
+ #include <vclenum.hxx>
+
+ // --------------
+@@ -77,7 +80,6 @@ struct ImplHatch
+ Color maColor;
+ HatchStyle meStyle;
+ long mnDistance;
+- long mnDummy;
+ USHORT mnAngle;
+
+ ImplHatch();
+@@ -124,22 +126,6 @@ public:
+
+ friend SvStream& operator>>( SvStream& rIStm, Hatch& rHatch );
+ friend SvStream& operator<<( SvStream& rOStm, const Hatch& rHatch );
+-
+-#ifdef SMART_UNO_GENERATION
+-
+- HatchStyle getStyle() const { return GetStyle(); }
+- void setStyle( HatchStyle eStyle ) { SetStyle( eStyle ); }
+-
+- long getColor() const { return GetColor().GetColor(); }
+- void setColor( long nColor ) { SetColor( Color( nColor ) ); }
+-
+- long getDistance() const { return GetDistance(); }
+- void setDistance( ULONG nDistance ) { SetDistance( nDistance ); }
+-
+- USHORT getAngle() const { return GetAngle(); }
+- void setAngle( USHORT n ) { SetAngle( n ); }
+-
+-#endif
+ };
+
+ #endif // _SV_HATCH_HXX
+Index: vcl/inc/help.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/help.hxx,v
+retrieving revision 1.3.284.1
+retrieving revision 1.5
+diff -u -p -u -r1.3.284.1 -r1.5
+--- vcl/inc/help.hxx 9 Jan 2004 18:13:39 -0000 1.3.284.1
++++ vcl/inc/help.hxx 6 Jan 2004 13:02:14 -0000 1.5
+@@ -103,6 +103,7 @@ private:
+
+ public:
+ Help();
++ virtual ~Help();
+
+ void SetHelpFile( const String& rFileName ) { maHelpFile = rFileName; }
+ const String& GetHelpFile() const { return maHelpFile; }
+Index: vcl/inc/ilstbox.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/ilstbox.hxx,v
+retrieving revision 1.20
+retrieving revision 1.23
+diff -u -p -u -r1.20 -r1.23
+--- vcl/inc/ilstbox.hxx 24 Apr 2003 16:29:18 -0000 1.20
++++ vcl/inc/ilstbox.hxx 18 May 2004 10:48:51 -0000 1.23
+@@ -244,7 +244,7 @@ private:
+ USHORT mnBorder; // Abstand Rahmen - Text
+ USHORT mnTextHeight; // Texthoehe
+
+- USHORT mnSelectModifier; // Modifiers
++ USHORT mnSelectModifier; // Modifiers
+
+ BOOL mbHasFocusRect;
+
+@@ -261,8 +261,8 @@ private:
+ mbGrabFocus: 1, // Focus bei MBDown grabben
+ mbUserDrawEnabled: 1, // UserDraw possible
+ mbInUserDraw: 1, // In UserDraw
+- mbReadOnly: 1; // ReadOnly
+-
++ mbReadOnly: 1, // ReadOnly
++ mbMirroring: 1; // pb: #106948# explicit mirroring for calc
+
+ Link maScrollHdl;
+ Link maSelectHdl;
+@@ -273,7 +273,7 @@ private:
+
+ protected:
+ DECL_LINK( SearchStringTimeout, Timer* );
+-
++
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseMove( const MouseEvent& rMEvt );
+@@ -293,7 +293,7 @@ protected:
+ void ImplShowFocusRect();
+ void ImplHideFocusRect();
+
+-
++
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+
+@@ -316,6 +316,7 @@ public:
+
+ void SelectEntry( USHORT nPos, BOOL bSelect );
+ void DeselectAll();
++ USHORT GetEntryPosForPoint( const Point& rPoint ) const;
+
+ BOOL ProcessKeyInput( const KeyEvent& rKEvt );
+
+@@ -342,13 +343,13 @@ public:
+
+ void EnableUserDraw( BOOL bUserDraw ) { mbUserDrawEnabled = bUserDraw; }
+ BOOL IsUserDrawEnabled() const { return mbUserDrawEnabled; }
+-
++
+ void EnableMultiSelection( BOOL bMulti, BOOL bStackMode ) { mbMulti = bMulti; mbStackMode = bStackMode; }
+ BOOL IsMultiSelectionEnabled() const { return mbMulti; }
+-
++
+ void SetMultiSelectionSimpleMode( BOOL bSimple ) { mbSimpleMode = bSimple; }
+ BOOL IsMultiSelectionSimpleMode() const { return mbSimpleMode; }
+-
++
+ void EnableMouseMoveSelect( BOOL bMouseMoveSelect ) { mbMouseMoveSelect = bMouseMoveSelect; }
+ BOOL IsMouseMoveSelectEnabled() const { return mbMouseMoveSelect; }
+ BOOL IsMouseMoveSelect() const { return mbMouseMoveSelect||mbStackMode; }
+@@ -372,7 +373,7 @@ public:
+ const Link& GetUserDrawHdl() const { return maUserDrawHdl; }
+ void SetMRUChangedHdl( const Link& rLink ) { maMRUChangedHdl = rLink; }
+ const Link& GetMRUChangedHdl() const { return maMRUChangedHdl; }
+-
++
+ BOOL IsSelectionChanged() const { return mbSelectionChanged; }
+ USHORT GetSelectModifier() const { return mnSelectModifier; }
+
+@@ -381,8 +382,11 @@ public:
+ void SetReadOnly( BOOL bReadOnly ) { mbReadOnly = bReadOnly; }
+ BOOL IsReadOnly() const { return mbReadOnly; }
+
+-
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
++
++ // pb: #106948# explicit mirroring for calc
++ inline void EnableMirroring() { mbMirroring = TRUE; }
++ inline BOOL IsMirroring() const { return mbMirroring; }
+ };
+
+ // ---------------
+@@ -422,7 +426,7 @@ public:
+
+ const ImplEntryList* GetEntryList() const { return maLBWindow.GetEntryList(); }
+ ImplListBoxWindow* GetMainWindow() { return &maLBWindow; }
+-
++
+ virtual void Resize();
+ virtual const Wallpaper& GetDisplayBackground() const;
+ virtual Window* GetPreferredKeyInputWindow();
+@@ -441,7 +445,7 @@ public:
+
+ BOOL ProcessKeyInput( const KeyEvent& rKEvt ) { return maLBWindow.ProcessKeyInput( rKEvt ); }
+ BOOL HandleWheelAsCursorTravel( const CommandEvent& rCEvt );
+-
++
+ void SetSeparatorPos( USHORT n ) { maLBWindow.SetSeparatorPos( n ); }
+ USHORT GetSeparatorPos() const { return maLBWindow.GetSeparatorPos(); }
+
+@@ -459,7 +463,7 @@ public:
+
+ void EnableMultiSelection( BOOL bMulti, BOOL bStackMode ) { maLBWindow.EnableMultiSelection( bMulti, bStackMode ); }
+ BOOL IsMultiSelectionEnabled() const { return maLBWindow.IsMultiSelectionEnabled(); }
+-
++
+ void SetMultiSelectionSimpleMode( BOOL bSimple ) { maLBWindow.SetMultiSelectionSimpleMode( bSimple ); }
+ BOOL IsMultiSelectionSimpleMode() const { return maLBWindow.IsMultiSelectionSimpleMode(); }
+
+@@ -481,7 +485,7 @@ public:
+ const Link& GetDoubleClickHdl() const { return maLBWindow.GetDoubleClickHdl(); }
+ void SetUserDrawHdl( const Link& rLink ) { maLBWindow.SetUserDrawHdl( rLink ); }
+ const Link& GetUserDrawHdl() const { return maLBWindow.GetUserDrawHdl(); }
+-
++
+ void SetSelectionChangedHdl( const Link& rLnk ) { maLBWindow.GetEntryList()->SetSelectionChangedHdl( rLnk ); }
+ void SetCallSelectionChangedHdl( BOOL bCall ) { maLBWindow.GetEntryList()->SetCallSelectionChangedHdl( bCall ); }
+ BOOL IsSelectionChanged() const { return maLBWindow.IsSelectionChanged(); }
+@@ -493,6 +497,9 @@ public:
+ USHORT GetMaxMRUCount() const { return maLBWindow.GetEntryList()->GetMaxMRUCount(); }
+ USHORT GetDisplayLineCount() const
+ { return maLBWindow.GetDisplayLineCount(); }
++
++ // pb: #106948# explicit mirroring for calc
++ inline void EnableMirroring() { maLBWindow.EnableMirroring(); }
+ };
+
+ // -----------------------------
+@@ -535,6 +542,8 @@ public:
+ USHORT GetDropDownLineCount() const { return mnDDLineCount; }
+
+ USHORT GetPopupModeStartSaveSelection() const { return mnPopupModeStartSaveSelection; }
++
++ virtual void Resize();
+ };
+
+ // -----------
+@@ -544,15 +553,15 @@ public:
+ class ImplWin : public Control
+ {
+ private:
+-
++
+ USHORT mnItemPos; // wegen UserDraw muss ich wissen, welches Item ich darstelle.
+ XubString maString;
+ Image maImage;
+ Image maImageHC;
+-
++
+ Rectangle maFocusRect;
+ Size maUserItemSize;
+-
++
+ Link maMBDownHdl;
+ Link maUserDrawHdl;
+
+@@ -573,10 +582,11 @@ public:
+ virtual void Resize();
+ virtual void GetFocus();
+ virtual void LoseFocus();
++ virtual long PreNotify( NotifyEvent& rNEvt );
+
+ USHORT GetItemPos() const { return mnItemPos; }
+ void SetItemPos( USHORT n ) { mnItemPos = n; }
+-
++
+ const XubString& GetString() const { return maString; }
+ void SetString( const XubString& rStr ) { maString = rStr; }
+
+@@ -590,16 +600,16 @@ public:
+ virtual void MBDown();
+ void SetMBDownHdl( const Link& rLink ) { maMBDownHdl = rLink; }
+ const Link& GetMBDownHdl() const { return maMBDownHdl; }
+-
++
+ void SetUserDrawHdl( const Link& rLink ) { maUserDrawHdl = rLink; }
+ const Link& GetUserDrawHdl() const { return maUserDrawHdl; }
+-
++
+ void SetUserItemSize( const Size& rSz ) { maUserItemSize = rSz; }
+ const Size& GetUserItemSize() const { return maUserItemSize; }
+
+ void EnableUserDraw( BOOL bUserDraw ) { mbUserDrawEnabled = bUserDraw; }
+ BOOL IsUserDrawEnabled() const { return mbUserDrawEnabled; }
+-
++
+ void DrawEntry( BOOL bDrawImage, BOOL bDrawText, BOOL bDrawTextAtImagePos = FALSE, bool bLayout = false );
+ };
+
+Index: vcl/inc/imgcons.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/imgcons.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/imgcons.hxx 19 Sep 2000 10:23:04 -0000 1.1.1.1
++++ vcl/inc/imgcons.hxx 6 Jan 2004 13:03:07 -0000 1.2
+@@ -85,7 +85,6 @@ private:
+ Bitmap maBitmap;
+ Bitmap maMask;
+ Rectangle maChangedRect;
+- Rectangle maDummyRect;
+ Size maSize;
+ ImplColorMapper* mpMapper;
+ Color* mpPal;
+@@ -94,10 +93,6 @@ private:
+ ULONG mnFormat;
+ ULONG mnStatus;
+ BOOL mbTrans;
+- long mnDummy1;
+- long mnDummy2;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+
+ protected:
+
+Index: vcl/inc/imgctrl.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/imgctrl.hxx,v
+retrieving revision 1.4
+retrieving revision 1.5
+diff -u -p -u -r1.4 -r1.5
+--- vcl/inc/imgctrl.hxx 15 Aug 2002 14:49:14 -0000 1.4
++++ vcl/inc/imgctrl.hxx 6 Jan 2004 13:03:24 -0000 1.5
+@@ -74,7 +74,7 @@ class ImageControl : public FixedImage
+ private:
+ BitmapEx maBmp;
+ BitmapEx maBmpHC;
+- ULONG mnDummy1_mbScaleImage; // Change member in next full update!
++ BOOL mbScaleImage;
+
+ public:
+ ImageControl( Window* pParent, WinBits nStyle = 0 );
+Index: vcl/inc/impbmp.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/impbmp.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/impbmp.hxx 7 Dec 2000 13:37:15 -0000 1.2
++++ vcl/inc/impbmp.hxx 1 Dec 2003 12:53:44 -0000 1.3
+@@ -92,11 +92,7 @@ private:
+ ULONG mnRefCount;
+ ULONG mnChecksum;
+ RMBitmap* mpRMBitmap;
+-#ifndef REMOTE_APPSERVER
+ SalBitmap* mpSalBitmap;
+-#else
+- ImplServerBitmap* mpSalBitmap;
+-#endif
+
+ public:
+
+@@ -107,41 +103,8 @@ public:
+
+ public:
+
+-#ifndef REMOTE_APPSERVER
+ void ImplSetSalBitmap( SalBitmap* pSalBitmap );
+ SalBitmap* ImplGetSalBitmap() const { return mpSalBitmap; }
+-#else
+- void ImplSetSalBitmap( ImplServerBitmap* pSalBitmap );
+- ImplServerBitmap* ImplGetSalBitmap() const { return mpSalBitmap; }
+-
+- RMBitmap* ImplGetRemoteBmp();
+-
+- void ImplCreateRemoteBmp( const Bitmap& rBitmap );
+- void ImplCreateRemoteBmp( const Bitmap& rBitmap,
+- OutputDevice* pOut,
+- const Point& rPt, const Size& rSz );
+-
+- void ImplReleaseRemoteBmp();
+-
+- void ImplDrawRemoteBmp( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz );
+- void ImplDrawRemoteBmpEx( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz,
+- const Bitmap& rMask );
+- void ImplDrawRemoteBmpAlpha( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz,
+- const AlphaMask& rAlpha );
+- void ImplDrawRemoteBmpMask( OutputDevice* pOut,
+- const Point& rSrcPt, const Size& rSrcSz,
+- const Point& rDestPt, const Size& rDestSz,
+- const Color& rColor );
+-
+- BOOL ImplIsGetPrepared() const;
+- void ImplResolveGet();
+-#endif
+
+ public:
+
+Index: vcl/inc/impgraph.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/impgraph.hxx,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -p -u -r1.3 -r1.4
+--- vcl/inc/impgraph.hxx 24 Aug 2001 14:07:49 -0000 1.3
++++ vcl/inc/impgraph.hxx 20 Apr 2004 13:53:44 -0000 1.4
+@@ -144,8 +144,8 @@ private:
+ BOOL ImplIsAlpha() const;
+ BOOL ImplIsAnimated() const;
+
+- Bitmap ImplGetBitmap( const Size* pSizePixel ) const;
+- BitmapEx ImplGetBitmapEx( const Size* pSizePixel ) const;
++ Bitmap ImplGetBitmap( const Size* pSizePixel, BOOL bUnlimited ) const;
++ BitmapEx ImplGetBitmapEx( const Size* pSizePixel, BOOL bUnlimited ) const;
+ Animation ImplGetAnimation() const;
+ const GDIMetaFile& ImplGetGDIMetaFile() const;
+
+Index: vcl/inc/jobset.h
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/jobset.h,v
+retrieving revision 1.5
+retrieving revision 1.6
+diff -u -p -u -r1.5 -r1.6
+--- vcl/inc/jobset.h 6 Mar 2002 11:13:54 -0000 1.5
++++ vcl/inc/jobset.h 6 Jan 2004 13:03:42 -0000 1.6
+@@ -72,7 +72,7 @@
+ #ifndef _SV_PRNTYPES_HXX
+ #include <prntypes.hxx>
+ #endif
+-#ifndef __SGI_STL_HASH_MAP
++#ifndef _STLP_HASH_MAP
+ #include <hash_map>
+ #endif
+ #ifndef _RTL_USTRING_
+Index: vcl/inc/jobset.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/jobset.hxx,v
+retrieving revision 1.4
+retrieving revision 1.5
+diff -u -p -u -r1.4 -r1.5
+--- vcl/inc/jobset.hxx 19 Dec 2001 14:43:31 -0000 1.4
++++ vcl/inc/jobset.hxx 1 Dec 2003 12:54:41 -0000 1.5
+@@ -75,10 +75,6 @@
+ class SvStream;
+ struct ImplJobSetup;
+
+-#ifdef REMOTE_APPSERVER
+-namespace com { namespace sun { namespace star { namespace portal { namespace client { struct RmJobSetup; } } } } }
+-#endif
+-
+ // ------------
+ // - JobSetup -
+ // ------------
+@@ -115,10 +111,6 @@ public:
+
+
+ JobSetup& operator=( const JobSetup& rJob );
+-#ifdef REMOTE_APPSERVER
+- JobSetup& operator=( const ::com::sun::star::portal::client::RmJobSetup& );
+- void SetRmJobSetup( ::com::sun::star::portal::client::RmJobSetup& ) const;
+-#endif
+
+ BOOL operator==( const JobSetup& rJobSetup ) const;
+ BOOL operator!=( const JobSetup& rJobSetup ) const
+Index: vcl/inc/keycod.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/keycod.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/keycod.hxx 27 Feb 2002 12:11:26 -0000 1.2
++++ vcl/inc/keycod.hxx 6 Jan 2004 13:03:58 -0000 1.3
+@@ -69,8 +69,8 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_RESID_HXX
+-#include <resid.hxx>
++#ifndef _TOOLS_RESID_HXX
++#include <tools/resid.hxx>
+ #endif
+ #ifndef _SV_KEYCODES_HXX
+ #include <keycodes.hxx>
+Index: vcl/inc/keycodes.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/keycodes.hxx,v
+retrieving revision 1.2.250.1
+retrieving revision 1.5
+diff -u -p -u -r1.2.250.1 -r1.5
+--- vcl/inc/keycodes.hxx 9 Jan 2004 18:13:39 -0000 1.2.250.1
++++ vcl/inc/keycodes.hxx 17 Mar 2004 10:04:17 -0000 1.5
+@@ -70,7 +70,7 @@
+ // - KeyCode-Types -
+ // -----------------
+
+-// By changes you must also change: tools/vclrsc.hxx
++// By changes you must also change: rsc/vclrsc.hxx
+
+ // Key-Gruppen
+ #define KEYGROUP_NUM ((USHORT)0x0100)
+@@ -186,6 +186,7 @@
+ #define KEY_MENU ((USHORT)(KEYGROUP_MISC+26))
+ #define KEY_HELP ((USHORT)(KEYGROUP_MISC+27))
+ #define KEY_HANGUL_HANJA ((USHORT)(KEYGROUP_MISC+28))
++#define KEY_DECIMAL ((USHORT)(KEYGROUP_MISC+29))
+
+ #define KEY_CODE ((USHORT)0x0FFF)
+
+Index: vcl/inc/lineinfo.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/lineinfo.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/lineinfo.hxx 19 Sep 2000 10:23:05 -0000 1.1.1.1
++++ vcl/inc/lineinfo.hxx 4 Sep 2003 07:41:49 -0000 1.2
+@@ -140,31 +140,6 @@ public:
+
+ friend SvStream& operator>>( SvStream& rIStm, LineInfo& rLineInfo );
+ friend SvStream& operator<<( SvStream& rOStm, const LineInfo& rLineInfo );
+-
+-#ifdef SMART_UNO_GENERATION
+-
+- LineStyle getStyle() const { return GetStyle(); }
+- void setStyle( LineStyle eStyle ) { SetStyle( eStyle ); }
+-
+- long getWidth() const { return GetWidth(); }
+- void setWidth( ULONG nDistance ) { SetWidth( nWidth ); }
+-
+- USORT getDashCount const { return GetDashCount(); }
+- void setDashCount( USHORT nDashCount ) { SetDashCount( nDashCount ); }
+-
+- long getDashLen() const { return GetDashLen(); }
+- void setDashLen( long nDashLen ) { SetDashLen( nDashLen ); }
+-
+- USHORT getDotCount() const { return GetDotCount(); }
+- void setDotCount( USHORT nDotCount ) { SetDotCount( nDotCount ); }
+-
+- long getDotLen() const { GetDotLen(); }
+- void setDotLen( long nDotLen ) { SetDotLen( nDotLen ); }
+-
+- long getDistance() const { return GetDistance(); }
+- void setDistance( long nDistance ) { SetDistance( nDistance ); }
+-
+-#endif
+ };
+
+ #endif // _SV_LINEINFO_HXX
+Index: vcl/inc/longcurr.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/longcurr.hxx,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -p -u -r1.3 -r1.4
+--- vcl/inc/longcurr.hxx 29 Jun 2001 10:17:29 -0000 1.3
++++ vcl/inc/longcurr.hxx 6 Jan 2004 13:04:51 -0000 1.4
+@@ -77,12 +77,9 @@ class LocaleDataWrapper;
+
+ class LongCurrencyFormatter : public FormatterBase
+ {
+-#if _SOLAR__PRIVATE
+-#ifdef VCL_LONGCURR_CXX
+- friend BOOL ImplLongCurrencyReformat( const XubString&, BigInt, BigInt, USHORT, const LocaleDataWrapper&, XubString&, LongCurrencyFormatter& );
++private:
++ friend BOOL ImplLongCurrencyReformat( const XubString&, BigInt, BigInt, USHORT, const LocaleDataWrapper&, XubString&, LongCurrencyFormatter& );
+ void ImpInit();
+-#endif
+-#endif
+
+ protected:
+ BigInt mnFieldValue;
+@@ -95,9 +92,6 @@ protected:
+ USHORT mnDecimalDigits;
+ BOOL mbThousandSep;
+
+- ULONG mnDummy;
+- BOOL mbDummy;
+-
+ LongCurrencyFormatter();
+ void ImplLoadRes( const ResId& rResId );
+
+@@ -141,9 +135,7 @@ public:
+ class LongCurrencyField : public SpinField, public LongCurrencyFormatter
+ {
+ #if _SOLAR__PRIVATE
+-#ifdef VCL_LONGCURR_CXX
+ friend void ImplNewLongCurrencyFieldValue( LongCurrencyField*, BigInt );
+-#endif
+ #endif
+
+ private:
+Index: vcl/inc/lstbox.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/lstbox.hxx,v
+retrieving revision 1.12
+retrieving revision 1.14
+diff -u -p -u -r1.12 -r1.14
+--- vcl/inc/lstbox.hxx 1 Nov 2002 09:00:27 -0000 1.12
++++ vcl/inc/lstbox.hxx 18 May 2004 10:49:04 -0000 1.14
+@@ -232,6 +232,9 @@ public:
+ USHORT GetMaxMRUCount() const;
+
+ USHORT GetDisplayLineCount() const;
++
++ void EnableMirroring();
++
+ };
+
+
+
+Index: vcl/inc/mapmod.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/mapmod.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/mapmod.hxx 19 Sep 2000 10:23:05 -0000 1.1.1.1
++++ vcl/inc/mapmod.hxx 7 Jan 2004 09:06:47 -0000 1.2
+@@ -72,8 +72,8 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_RESID_HXX
+-#include <resid.hxx>
++#ifndef _TOOLS_RESID_HXX
++#include <tools/resid.hxx>
+ #endif
+ #ifndef _VCL_MAPUNIT_HXX
+ #include <mapunit.hxx>
+@@ -101,11 +101,9 @@ private:
+ friend SvStream& operator>>( SvStream& rIStm, ImplMapMode& rMapMode );
+ friend SvStream& operator<<( SvStream& rOStm, const ImplMapMode& rMapMode );
+
+-#ifdef _SV_MAPMOD_CXX
+ public:
+ ImplMapMode();
+ ImplMapMode( const ImplMapMode& rImpMapMode );
+-#endif
+ };
+
+ // -----------
+@@ -119,9 +117,7 @@ class MapMode
+ private:
+ ImplMapMode* mpImplMapMode;
+
+-#ifdef _SV_MAPMOD_CXX
+ void ImplMakeUnique();
+-#endif
+
+ public:
+ MapMode();
+Index: vcl/inc/menu.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/menu.hxx,v
+retrieving revision 1.26.112.1
+retrieving revision 1.30
+diff -u -p -u -r1.26.112.1 -r1.30
+--- vcl/inc/menu.hxx 13 Nov 2003 16:48:20 -0000 1.26.112.1
++++ vcl/inc/menu.hxx 25 Feb 2004 17:29:29 -0000 1.30
+@@ -66,20 +66,20 @@
+ #include <sv.h>
+ #endif
+
+-#ifndef _SV_RC_HXX
+-#include <rc.hxx>
++#ifndef _TOOLS_RC_HXX
++#include <tools/rc.hxx>
+ #endif
+
+-#ifndef _SV_RESID_HXX
+-#include <resid.hxx>
++#ifndef _TOOLS_RESID_HXX
++#include <tools/resid.hxx>
+ #endif
+
+ #ifndef _SV_BITMAPEX_HXX
+ #include <bitmapex.hxx>
+ #endif
+
+-#ifndef _SV_COLOR_HXX
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
+ #endif
+
+ #ifndef _VCL_VCLEVENT_HXX
+@@ -103,7 +103,9 @@ class KeyEvent;
+ class AppBarWindow;
+ class MenuFloatingWindow;
+ class Window;
+ class AccessObjectRef;
++class SalMenu;
++struct SystemMenuData;
+
+ namespace com {
+ namespace sun {
+@@ -126,11 +127,11 @@ namespace vcl { struct MenuLayoutData; }
+ #define POPUPMENU_EXECUTE_LEFT ((USHORT)0x0004)
+ #define POPUPMENU_EXECUTE_RIGHT ((USHORT)0x0008)
+
+-// By changes you must also change: tools/vclrsc.hxx
++// By changes you must also change: rsc/vclrsc.hxx
+ enum MenuItemType { MENUITEM_DONTKNOW, MENUITEM_STRING, MENUITEM_IMAGE,
+ MENUITEM_STRINGIMAGE, MENUITEM_SEPARATOR };
+
+-// By changes you must also change: tools/vclrsc.hxx
++// By changes you must also change: rsc/vclrsc.hxx
+ typedef USHORT MenuItemBits;
+ #define MIB_CHECKABLE ((MenuItemBits)0x0001)
+ #define MIB_RADIOCHECK ((MenuItemBits)0x0002)
+@@ -151,12 +152,10 @@ struct MenuLogo
+ BitmapEx aBitmap;
+ Color aStartColor;
+ Color aEndColor;
+- ULONG nDummy;
+ };
+
+ class Menu : public Resource
+ {
+- friend class AccessObject;
+ friend class MenuBar;
+ friend class MenuBarWindow;
+ friend class MenuFloatingWindow;
+@@ -164,6 +163,7 @@ class Menu : public Resource
+ friend class SystemWindow;
+
+ private:
++ void* pMenuData_NotUsedYet;
+ MenuItemList* pItemList; // Liste mit den MenuItems
+ MenuLogo* pLogo;
+ Menu* pStartedFrom;
+@@ -180,7 +180,7 @@ private:
+ XubString aTitleText; // PopupMenu-Text
+
+ ULONG nEventId;
+- ULONG nDummy;
++ USHORT mnHighlightedItemPos; // for native menues: keeps track of the highlighted item
+ USHORT nMenuFlags;
+ USHORT nDefaultItem; // Id vom Default-Item
+ USHORT nSelectedId;
+@@ -197,16 +197,14 @@ private:
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > mxAccessible;
+ mutable vcl::MenuLayoutData* mpLayoutData;
+- void* mpDummy;
+- long mnDummy;
+- BOOL mbDummy;
++ SalMenu* mpSalMenu;
+
+ protected:
+-#ifdef _SV_MENU_CXX
+ void ImplInit();
+ void ImplLoadRes( const ResId& rResId );
+ Menu* ImplGetStartMenu();
+ Menu* ImplFindSelectMenu();
++ Menu* ImplFindMenu( USHORT nId );
+ Size ImplCalcSize( Window* pWin );
+ BOOL ImplIsVisible( USHORT nPos ) const;
+ USHORT ImplGetVisibleItemCount() const;
+@@ -220,11 +218,16 @@ protected:
+ DECL_LINK( ImplCallSelect, Menu* );
+
+ void ImplFillLayoutData() const;
++ SalMenu* ImplGetSalMenu() { return mpSalMenu; }
++ void ImplSetSalMenu( SalMenu *pMenu );
++
++#if _SOLAR__PRIVATE
+ public:
+ void ImplKillLayoutData() const;
+ #endif
+
+ Menu();
++ Menu( BOOL bMenuBar );
+ Window* ImplGetWindow() const { return pWindow; }
+
+ public:
+@@ -315,7 +318,10 @@ public:
+ void SetTipHelpText( USHORT nItemId, const XubString& rString );
+ const XubString& GetTipHelpText( USHORT nItemId ) const;
+
+- void SetHelpId( USHORT nItemId, ULONG nHelpId );
++ void SetHelpCommand( USHORT nItemId, const XubString& rString );
++ const XubString& GetHelpCommand( USHORT nItemId ) const;
++
++ void SetHelpId( USHORT nItemId, ULONG nHelpId );
+ ULONG GetHelpId( USHORT nItemId ) const;
+
+ void SetActivateHdl( const Link& rLink ) { aActivateHdl = rLink; }
+@@ -342,6 +348,9 @@ public:
+ // Fuer Menu-'Funktionen'
+ MenuItemList* GetItemList() const { return pItemList; }
+
++ // returns the system's menu handle if native menues are supported
++ // pData must point to a SystemMenuData structure
++ BOOL GetSystemMenuData( SystemMenuData* pData ) const;
+
+ // accessibility helpers
+
+@@ -393,14 +400,13 @@ public:
+
+ class MenuBar : public Menu
+ {
+- void* pDummy;
+ Link maCloserHdl;
+ Link maFloatHdl;
+ Link maHideHdl;
+ BOOL mbCloserVisible;
+ BOOL mbFloatBtnVisible;
+ BOOL mbHideBtnVisible;
+- BOOL mbDummy1;
++ BOOL mbDisplayable;
+
+ #if _SOLAR__PRIVATE
+ friend class Application;
+@@ -431,6 +437,10 @@ public:
+ void ShowButtons( BOOL bClose, BOOL bFloat, BOOL bHide );
+
+ void SelectEntry( USHORT nId );
++ BOOL HandleMenuActivateEvent( Menu *pMenu ) const;
++ BOOL HandleMenuDeActivateEvent( Menu *pMenu ) const;
++ BOOL HandleMenuHighlightEvent( Menu *pMenu, USHORT nEventId ) const;
++ BOOL HandleMenuCommandEvent( Menu *pMenu, USHORT nEventId ) const;
+
+ void SetCloserHdl( const Link& rLink ) { maCloserHdl = rLink; }
+ const Link& GetCloserHdl() const { return maCloserHdl; }
+@@ -438,6 +448,14 @@ public:
+ const Link& GetFloatButtonClickHdl() const { return maFloatHdl; }
+ void SetHideButtonClickHdl( const Link& rLink ) { maHideHdl = rLink; }
+ const Link& GetHideButtonClickHdl() const { return maHideHdl; }
++
++ // - by default a menubar is displayable
++ // - if a menubar is not displayable, its MenuBarWindow will never be shown
++ // and it will be hidden if it was visible before
++ // - note: if a menubar is diplayable, this does not necessarily mean that it is currently visible
++ void SetDisplayable( BOOL bDisplayable );
++ BOOL IsDisplayable() const { return mbDisplayable; }
++
+ };
+
+ inline MenuBar& MenuBar::operator =( const MenuBar& rMenu )
+Index: vcl/inc/menubtn.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/menubtn.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/menubtn.hxx 19 Sep 2000 10:23:05 -0000 1.1.1.1
++++ vcl/inc/menubtn.hxx 7 Jan 2004 09:07:50 -0000 1.2
+@@ -86,7 +86,6 @@ class MenuButton : public PushButton
+ {
+ private:
+ Rectangle maFocusRect;
+- void* mpDummy;
+ Timer* mpMenuTimer;
+ PopupMenu* mpOwnMenu;
+ PopupMenu* mpMenu;
+@@ -95,11 +94,9 @@ private:
+ Link maActivateHdl;
+ Link maSelectHdl;
+
+-#ifdef _SV_MENUBTN_CXX
+ void ImplInitData();
+ void ImplExecuteMenu();
+ DECL_LINK( ImplMenuTimeoutHdl, Timer* );
+-#endif
+
+ protected:
+ void ImplInit( Window* pParent, WinBits nStyle );
+Index: vcl/inc/metaact.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/metaact.hxx,v
+retrieving revision 1.4.252.1
+retrieving revision 1.7
+diff -u -p -u -r1.4.252.1 -r1.7
+--- vcl/inc/metaact.hxx 9 Jan 2004 18:13:40 -0000 1.4.252.1
++++ vcl/inc/metaact.hxx 17 Jun 2004 12:05:02 -0000 1.7
+@@ -74,8 +74,8 @@
+ #ifndef _SV_FONT_HXX
+ #include <font.hxx>
+ #endif
+-#ifndef _SV_POLY_HXX
+-#include <poly.hxx>
++#ifndef _TL_POLY_HXX
++#include <tools/poly.hxx>
+ #endif
+ #ifndef _SV_BITMAP_HXX
+ #include <bitmap.hxx>
+@@ -575,7 +575,7 @@ private:
+
+ Point maStartPt;
+ XubString maStr;
+- long* mpDXAry;
++ sal_Int32* mpDXAry;
+ USHORT mnIndex;
+ USHORT mnLen;
+
+@@ -586,7 +586,7 @@ public:
+ MetaTextArrayAction( const MetaTextArrayAction& rAction );
+ MetaTextArrayAction( const Point& rStartPt,
+ const XubString& rStr,
+- const long* pDXAry,
++ const sal_Int32* pDXAry,
+ USHORT nIndex,
+ USHORT nLen );
+ virtual ~MetaTextArrayAction();
+@@ -605,7 +605,7 @@ public:
+ const XubString& GetText() const { return maStr; }
+ USHORT GetIndex() const { return mnIndex; }
+ USHORT GetLen() const { return mnLen; }
+- long* GetDXArray() const { return mpDXAry; }
++ sal_Int32* GetDXArray() const { return mpDXAry; }
+ };
+
+ // -------------------------
+Index: vcl/inc/msgbox.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/msgbox.hxx,v
+retrieving revision 1.5
+retrieving revision 1.6
+diff -u -p -u -r1.5 -r1.6
+--- vcl/inc/msgbox.hxx 24 Oct 2002 10:56:12 -0000 1.5
++++ vcl/inc/msgbox.hxx 7 Jan 2004 09:08:49 -0000 1.6
+@@ -118,12 +118,9 @@ protected:
+ XubString maCheckBoxText;
+ BOOL mbCheck;
+
+-#ifdef _SV_MSGBOX_CXX
+-private:
+ void ImplInitData();
+ void ImplInitButtons();
+ void ImplPosControls();
+-#endif
+
+ protected:
+ void ImplLoadRes( const ResId& rResId );
+@@ -159,10 +156,8 @@ public:
+
+ class InfoBox : public MessBox
+ {
+-#ifdef _SV_MSGBOX_CXX
+ private:
+ void ImplInitData();
+-#endif
+
+ public:
+ InfoBox( Window* pParent, const XubString& rMessage );
+@@ -177,10 +172,8 @@ public:
+
+ class WarningBox : public MessBox
+ {
+-#ifdef _SV_MSGBOX_CXX
+ private:
+ void ImplInitData();
+-#endif
+
+ public:
+ WarningBox( Window* pParent, WinBits nStyle,
+@@ -198,10 +191,8 @@ public:
+
+ class ErrorBox : public MessBox
+ {
+-#ifdef _SV_MSGBOX_CXX
+ private:
+ void ImplInitData();
+-#endif
+
+ public:
+ ErrorBox( Window* pParent, WinBits nStyle,
+@@ -217,10 +208,8 @@ public:
+
+ class QueryBox : public MessBox
+ {
+-#ifdef _SV_MSGBOX_CXX
+ private:
+ void ImplInitData();
+-#endif
+
+ public:
+ QueryBox( Window* pParent, WinBits nStyle,
+Index: vcl/inc/opengl.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/opengl.hxx,v
+retrieving revision 1.3
+retrieving revision 1.5
+diff -u -p -u -r1.3 -r1.5
+--- vcl/inc/opengl.hxx 15 Mar 2002 17:10:25 -0000 1.3
++++ vcl/inc/opengl.hxx 7 Jan 2004 09:09:11 -0000 1.5
+@@ -80,22 +80,13 @@ class RmOpenGL;
+ class OpenGL
+ {
+ static BOOL mbNoOGL;
+-private:
+
++private:
+ OutputDevice* mpOutDev;
+-#ifndef REMOTE_APPSERVER
+ SalOpenGL* mpOGL;
+-#else
+- RmOpenGL* mpOGL;
+-#endif
+
+-#if _SOLAR__PRIVATE
+-#ifdef _SV_OPENGL_CXX
+-private:
+ void ImplInit();
+ BOOL ImplInitFncPointers();
+-#endif
+-#endif // __PRIVATE
+
+ public:
+ OpenGL( OutputDevice* pOutDev );
+Index: vcl/inc/outdata.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/outdata.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.3
+diff -u -p -u -r1.1.1.1 -r1.3
+--- vcl/inc/outdata.hxx 19 Sep 2000 10:23:05 -0000 1.1.1.1
++++ vcl/inc/outdata.hxx 7 Jan 2004 09:09:31 -0000 1.3
+@@ -66,8 +66,8 @@
+ #include <sv.h>
+ #endif
+
+-#ifndef _SV_COLOR_HXX
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
+ #endif
+
+ #ifndef _SV_SALGTYPE_HXX
+@@ -78,12 +78,10 @@
+ // - Hilfemethoden -
+ // -----------------
+
+-#ifndef REMOTE_APPSERVER
+ inline SalColor ImplColorToSal( Color aColor )
+ {
+ return MAKE_SALCOLOR( aColor.GetRed(), aColor.GetGreen(), aColor.GetBlue() );
+ }
+-#endif
+
+ inline int ImplIsColorTransparent( Color aColor )
+ {
+Index: vcl/inc/outdev.h
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/outdev.h,v
+retrieving revision 1.13
+retrieving revision 1.14
+diff -u -p -u -r1.13 -r1.14
+--- vcl/inc/outdev.h 27 Mar 2003 17:57:25 -0000 1.13
++++ vcl/inc/outdev.h 7 Jan 2004 09:09:50 -0000 1.14
+@@ -263,7 +263,6 @@ private:
+ ImplFontEntry* mpFirstEntry;
+ USHORT mnRef0Count;
+ BOOL mbPrinter;
+- BOOL mbDummy;
+
+ public:
+ ImplFontCache( BOOL bPrinter );
+Index: vcl/inc/outdev.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/outdev.hxx,v
+retrieving revision 1.40
+retrieving revision 1.51
+diff -u -p -u -r1.40 -r1.51
+--- vcl/inc/outdev.hxx 6 Jun 2003 10:29:59 -0000 1.40
++++ vcl/inc/outdev.hxx 17 Jun 2004 12:05:32 -0000 1.51
+@@ -71,11 +71,11 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_RC_HXX
+-#include <rc.hxx>
++#ifndef _TOOLS_RC_HXX
++#include <tools/rc.hxx>
+ #endif
+-#ifndef _SV_COLOR_HXX
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
+ #endif
+ #ifndef _SV_FONT_HXX
+ #include <font.hxx>
+@@ -92,8 +92,8 @@
+ #ifndef _SV_SETTINGS_HXX
+ #include <settings.hxx>
+ #endif
+-#ifndef _SV_POLY_HXX
+-#include <poly.hxx>
++#ifndef _TL_POLY_HXX
++#include <tools/poly.hxx>
+ #endif
+
+ #include <vector>
+@@ -108,7 +108,6 @@ class ImplGetDevFontList;
+ class ImplGetDevSizeList;
+ class ImplMultiTextLineInfo;
+ class SalGraphics;
+-class ImplServerGraphics;
+ class Gradient;
+ class Hatch;
+ class Bitmap;
+@@ -139,7 +138,10 @@ namespace awt {
+ typedef std::vector< Rectangle > MetricVector;
+
+ namespace vcl { class PDFWriterImpl; }
+
++#define OUTDEV_BUFFER_SIZE 128
++
++
+ // ---------------------
+ // - OutputDevice-Data -
+ // ---------------------
+@@ -196,7 +194,9 @@ struct KerningPair
+ #define PUSH_TEXTALIGN ((USHORT)0x0100)
+ #define PUSH_REFPOINT ((USHORT)0x0200)
+ #define PUSH_TEXTLINECOLOR ((USHORT)0x0400)
+-#define PUSH_ALLTEXT (PUSH_TEXTCOLOR | PUSH_TEXTFILLCOLOR | PUSH_TEXTLINECOLOR | PUSH_TEXTALIGN)
++#define PUSH_TEXTLAYOUTMODE ((USHORT)0x0800)
++#define PUSH_TEXTLANGUAGE ((USHORT)0x1000)
++#define PUSH_ALLTEXT (PUSH_TEXTCOLOR | PUSH_TEXTFILLCOLOR | PUSH_TEXTLINECOLOR | PUSH_TEXTALIGN | PUSH_TEXTLAYOUTMODE | PUSH_TEXTLANGUAGE)
+ #define PUSH_ALLFONT (PUSH_ALLTEXT | PUSH_FONT)
+ #define PUSH_ALL ((USHORT)0xFFFF)
+
+@@ -224,10 +224,11 @@ struct KerningPair
+ #define IMAGE_DRAW_DISABLE ((USHORT)0x0001)
+ #define IMAGE_DRAW_HIGHLIGHT ((USHORT)0x0002)
+ #define IMAGE_DRAW_DEACTIVE ((USHORT)0x0004)
+-#define IMAGE_DRAW_COLORTRANSFORM ((USHORT)0x0008)
++#define IMAGE_DRAW_COLORTRANSFORM ((USHORT)0x0008)
+ #define IMAGE_DRAW_SEMITRANSPARENT ((USHORT)0x0010)
++#define IMAGE_DRAW_MONOCHROME_BLACK ((USHORT)0x0020)
++#define IMAGE_DRAW_MONOCHROME_WHITE ((USHORT)0x0040)
+ #define IMAGE_DRAW_3DLOOK 0
+-
+ #define IMAGE_DRAW_BTNLOOK 0
+
+ // WaveLine
+@@ -327,20 +328,24 @@ enum OutDevViewType { OUTDEV_VIEWTYPE_DO
+
+ class OutputDevice : public Resource
+ {
+- friend class Window;
+- friend class VirtualDevice;
+- friend class Printer;
+- friend class ImplQPrinter;
+- friend class OpenGL;
+- friend class ::vcl::PDFWriterImpl;
+- friend class SalGraphicsLayout;
++ friend class Application;
++ friend class Bitmap;
++ friend class ImplImageBmp;
++ friend class ImplQPrinter;
++ friend class OpenGL;
++ friend class Printer;
++ friend class RMBitmap;
++ friend class RMBitmapEx;
++ friend class SalGraphicsLayout;
++ friend class System;
++ friend class VirtualDevice;
++ friend class Window;
++ friend class WorkWindow;
++ friend class vcl::PDFWriterImpl;
++ friend const char* ImplDbgCheckOutputDevice( const void* pObj );
+
+ private:
+-#ifndef REMOTE_APPSERVER
+ mutable SalGraphics* mpGraphics;
+-#else
+- mutable ImplServerGraphics* mpGraphics;
+-#endif
+ mutable OutputDevice* mpPrevGraphics;
+ mutable OutputDevice* mpNextGraphics;
+ GDIMetaFile* mpMetaFile;
+@@ -354,7 +359,10 @@ private:
+ List* mpUnoGraphicsList;
+ OutDev3D* mp3DContext;
+ vcl::PDFWriterImpl* mpPDFWriter;
+- void* mpDummy1;
++
++ // TEMP TEMP TEMP
++ VirtualDevice* mpAlphaVDev;
++
+ /// Additional output pixel offset, applied in LogicToPixel (used by SetPixelOffset/GetPixelOffset)
+ long mnOutOffOrigX;
+ /// Additional output offset in _logical_ coordinates, applied in PixelToLogic (used by SetPixelOffset/GetPixelOffset)
+@@ -369,8 +377,8 @@ private:
+ long mnOutOffY;
+ long mnOutWidth;
+ long mnOutHeight;
+- long mnDPIX;
+- long mnDPIY;
++ sal_Int32 mnDPIX;
++ sal_Int32 mnDPIY;
+ /// Output offset for text alignment in pixel
+ long mnTextOffX;
+ /// Output offset for text alignment in pixel
+@@ -379,7 +387,6 @@ private:
+ long mnEmphasisDescent;
+ ULONG mnDrawMode;
+ ULONG mnTextLayoutMode;
+- long mnDummy1;
+ ImplMapRes maMapRes;
+ ImplThresholdRes maThresRes;
+ OutDevType meOutDevType;
+@@ -389,7 +396,6 @@ private:
+ Color maFillColor;
+ Font maFont;
+ Color maTextColor;
+- Color maTextFillColorDummy; // For compatibility to SV we work with the font fill color
+ Color maTextLineColor;
+ TextAlign meTextAlign;
+ RasterOp meRasterOp;
+@@ -399,8 +405,6 @@ private:
+ Point maRefPoint;
+ USHORT mnAntialiasing;
+ LanguageType meTextLanguage;
+- USHORT mnDummy3;
+- USHORT mnDummy4;
+ mutable BOOL mbMap:1,
+ mbMapIsDefault:1,
+ mbClipRegion:1,
+@@ -421,12 +425,121 @@ private:
+ mbTextLines:1,
+ mbTextSpecial:1,
+ mbRefPoint:1,
+- mbEnableRTL:1,
+- mbDummy2:1,
+- mbDummy3:1;
++ mbEnableRTL:1;
+
+ #if _SOLAR__PRIVATE
+-#include <outdev.imp>
++public:
++ sal_Int32 ImplGetDPIX() const { return mnDPIX; }
++ sal_Int32 ImplGetDPIY() const { return mnDPIY; }
++ int ImplGetGraphics() const;
++ void ImplReleaseGraphics( BOOL bRelease = TRUE );
++ BOOL ImplHasMirroredGraphics();
++ void ImplReMirror( Point &rPoint ) const;
++ void ImplReMirror( Rectangle &rRect ) const;
++ void ImplReMirror( Region &rRegion ) const;
++ void ImplInitOutDevData();
++ void ImplDeInitOutDevData();
++ void ImplInitLineColor();
++ void ImplInitFillColor();
++ int ImplNewFont();
++ void ImplInitFont();
++ void ImplInitTextColor();
++ void ImplInitKerningPairs( ImplKernPairData* pKernPairs = 0, long nKernPairs = 0 );
++ void ImplInitClipRegion();
++ static BOOL ImplSelectClipRegion( SalGraphics* pGraphics, const Region& rRegion, OutputDevice *pOutDev );
++ void ImplSetClipRegion( const Region* pRegion );
++
++ SalLayout* ImplLayout( const String& rOrigStr, xub_StrLen nIndex,
++ xub_StrLen nLen, const Point& rLogicPos = Point(0,0),
++ long nLogicWidth=0, const sal_Int32* pLogicDXArray=NULL ) const;
++ long ImplGetTextWidth( const SalLayout& ) const;
++ void ImplDrawTextBackground( const SalLayout& );
++ void ImplDrawTextLines( SalLayout&, FontStrikeout eStrikeout, FontUnderline eUnderline, BOOL bWordLine, BOOL bUnderlineAbove );
++ bool ImplDrawRotateText( SalLayout& );
++ void ImplDrawTextDirect( SalLayout&, BOOL bTextLines );
++ void ImplDrawSpecialText( SalLayout& );
++ void ImplDrawText( SalLayout& );
++ Rectangle ImplGetTextBoundRect( const SalLayout& );
++ void ImplDrawEmphasisMarks( SalLayout& );
++
++ void ImplDrawTextRect( long nBaseX, long nBaseY, long nX, long nY, long nWidth, long nHeight );
++
++ void ImplInitTextLineSize();
++ void ImplInitAboveTextLineSize();
++ void ImplDrawWaveLine( long nBaseX, long nBaseY, long nStartX, long nStartY, long nWidth, long nHeight, long nLineWidth, short nOrientation, const Color& rColor );
++ void ImplDrawTextLine( long nBaseX, long nX, long nY, long nWidth, FontStrikeout eStrikeout, FontUnderline eUnderline, BOOL bUnderlineAbove );
++ void ImplDrawMnemonicLine( long nX, long nY, long nWidth );
++ void ImplGetEmphasisMark( PolyPolygon& rPolyPoly, BOOL& rPolyLine, Rectangle& rRect1, Rectangle& rRect2, long& rYOff, long& rWidth, FontEmphasisMark eEmphasis, long nHeight, short nOrient );
++ void ImplDrawEmphasisMark( long nBaseX, long nX, long nY, const PolyPolygon& rPolyPoly, BOOL bPolyLine, const Rectangle& rRect1, const Rectangle& rRect2 );
++ long ImplGetTextLines( ImplMultiTextLineInfo& rLineInfo, long nWidth, const XubString& rStr, USHORT nStyle ) const;
++ void ImplInitFontList() const;
++ void ImplUpdateFontData( BOOL bNewFontLists );
++ static void ImplUpdateAllFontData( BOOL bNewFontLists );
++ long ImplLogicXToDevicePixel( long nX ) const;
++ long ImplLogicYToDevicePixel( long nY ) const;
++ long ImplLogicWidthToDevicePixel( long nWidth ) const;
++ long ImplLogicHeightToDevicePixel( long nHeight ) const;
++ long ImplDevicePixelToLogicWidth( long nWidth ) const;
++ long ImplDevicePixelToLogicHeight( long nHeight ) const;
++ Point ImplLogicToDevicePixel( const Point& rLogicPt ) const;
++ Size ImplLogicToDevicePixel( const Size& rLogicSize ) const;
++ Rectangle ImplLogicToDevicePixel( const Rectangle& rLogicRect ) const;
++ Polygon ImplLogicToDevicePixel( const Polygon& rLogicPoly ) const;
++ PolyPolygon ImplLogicToDevicePixel( const PolyPolygon& rLogicPolyPoly ) const;
++ LineInfo ImplLogicToDevicePixel( const LineInfo& rLineInfo ) const;
++ Rectangle ImplDevicePixelToLogic( const Rectangle& rLogicRect ) const;
++ Region ImplPixelToDevicePixel( const Region& rRegion ) const;
++ void ImplDrawPolygon( const Polygon& rPoly, const PolyPolygon* pClipPolyPoly = NULL );
++ void ImplDrawPolyPolygon( const PolyPolygon& rPolyPoly, const PolyPolygon* pClipPolyPoly = NULL );
++ void ImplDrawPolyPolygon( USHORT nPoly, const PolyPolygon& rPolyPoly );
++ void ImplDrawLinearGradient( const Rectangle& rRect, const Gradient& rGradient, BOOL bMtf, const PolyPolygon* pClipPolyPoly );
++ void ImplDrawComplexGradient( const Rectangle& rRect, const Gradient& rGradient, BOOL bMtf, const PolyPolygon* pClipPolyPoly );
++
++ void ImplDrawHatch( const PolyPolygon& rPolyPoly, const Hatch& rHatch, BOOL bMtf );
++ void ImplCalcHatchValues( const Rectangle& rRect, long nDist, USHORT nAngle10, Point& rPt1, Point& rPt2, Size& rInc, Point& rEndPt1 );
++ void ImplDrawHatchLine( const Line& rLine, const PolyPolygon& rPolyPoly, Point* pPtBuffer, BOOL bMtf );
++
++ void ImplDrawWallpaper( long nX, long nY, long nWidth, long nHeight, const Wallpaper& rWallpaper );
++ void ImplDrawColorWallpaper( long nX, long nY, long nWidth, long nHeight, const Wallpaper& rWallpaper );
++ void ImplDrawBitmapWallpaper( long nX, long nY, long nWidth, long nHeight, const Wallpaper& rWallpaper );
++ void ImplDrawGradientWallpaper( long nX, long nY, long nWidth, long nHeight, const Wallpaper& rWallpaper );
++ void ImplDraw2ColorFrame( const Rectangle& rRect, const Color& rLeftTopColor, const Color& rRightBottomColor );
++
++ void ImplDrawOutDevDirect( const OutputDevice* pSrcDev, void* pPosAry );
++ void ImplDrawBitmap( const Point& rDestPt, const Size& rDestSize,
++ const Point& rSrcPtPixel, const Size& rSrcSizePixel,
++ const Bitmap& rBitmap, const ULONG nAction );
++ void ImplDrawBitmapEx( const Point& rDestPt, const Size& rDestSize,
++ const Point& rSrcPtPixel, const Size& rSrcSizePixel,
++ const BitmapEx& rBitmapEx, const ULONG nAction );
++ void ImplDrawMask( const Point& rDestPt, const Size& rDestSize,
++ const Point& rSrcPtPixel, const Size& rSrcSizePixel,
++ const Bitmap& rBitmap, const Color& rMaskColor,
++ const ULONG nAction );
++ void ImplDrawAlpha( const Bitmap& rBmp, const AlphaMask& rAlpha,
++ const Point& rDestPt, const Size& rDestSize,
++ const Point& rSrcPtPixel, const Size& rSrcSizePixel );
++ void ImplPrintTransparent( const Bitmap& rBmp, const Bitmap& rMask,
++ const Point& rDestPt, const Size& rDestSize,
++ const Point& rSrcPtPixel, const Size& rSrcSizePixel );
++ void ImplPrintMask( const Bitmap& rMask, const Color& rMaskColor,
++ const Point& rDestPt, const Size& rDestSize,
++ const Point& rSrcPtPixel, const Size& rSrcSizePixel );
++ void ImplDrawFrameDev( const Point& rPt, const Point& rDevPt, const Size& rDevSize,
++ const OutputDevice& rOutDev, const Region& rRegion );
++ void ImplGetFrameDev( const Point& rPt, const Point& rDevPt, const Size& rDevSize,
++ OutputDevice& rOutDev );
++ void ImplGetFrameBitmap( const Point& rPt, const Size& rSize,
++ Bitmap& rBitmap ) const;
++
++ BOOL ImplIsRecordLayout() const;
++
++ void ImplAddDevFontSubstitute( const XubString& rFontName,
++ const XubString& rReplaceFontName,
++ USHORT nFlags = 0 );
++
++ static FontEmphasisMark ImplGetEmphasisMarkStyle( const Font& rFont );
++ static BOOL ImplIsUnderlineAbove( const Font& );
+ #endif
+
+ protected:
+@@ -459,15 +572,15 @@ public:
+ xub_StrLen nLen = STRING_LEN ) const;
+ long GetTextHeight() const;
+ void DrawTextArray( const Point& rStartPt, const XubString& rStr,
+- const long* pDXAry = NULL,
++ const sal_Int32* pDXAry = NULL,
+ xub_StrLen nIndex = 0,
+ xub_StrLen nLen = STRING_LEN );
+- long GetTextArray( const XubString& rStr, long* pDXAry = NULL,
++ long GetTextArray( const XubString& rStr, sal_Int32* pDXAry = NULL,
+ xub_StrLen nIndex = 0,
+ xub_StrLen nLen = STRING_LEN ) const;
+- bool GetCaretPositions( const XubString&, long* pCaretXArray,
++ bool GetCaretPositions( const XubString&, sal_Int32* pCaretXArray,
+ xub_StrLen nIndex, xub_StrLen nLen,
+- long* pDXAry = NULL, long nWidth = 0,
++ sal_Int32* pDXAry = NULL, long nWidth = 0,
+ BOOL bCellBreaking = TRUE ) const;
+ void DrawStretchText( const Point& rStartPt, ULONG nWidth,
+ const XubString& rStr,
+@@ -505,10 +618,10 @@ public:
+ xub_StrLen nLen = STRING_LEN ) const;
+ BOOL GetTextOutline( PolyPolygon&,
+ const String& rStr, xub_StrLen nBase = 0, xub_StrLen nIndex = 0,
+- xub_StrLen nLen = STRING_LEN, BOOL bOptimize = TRUE, const ULONG nWidth = 0, const long* pDXArray = NULL ) const;
++ xub_StrLen nLen = STRING_LEN, BOOL bOptimize = TRUE, const ULONG nWidth = 0, const sal_Int32* pDXArray = NULL ) const;
+ BOOL GetTextOutlines( PolyPolyVector&,
+ const String& rStr, xub_StrLen nBase = 0, xub_StrLen nIndex = 0,
+- xub_StrLen nLen = STRING_LEN, BOOL bOptimize = TRUE, const ULONG nWidth = 0, const long* pDXArray = NULL ) const;
++ xub_StrLen nLen = STRING_LEN, BOOL bOptimize = TRUE, const ULONG nWidth = 0, const sal_Int32* pDXArray = NULL ) const;
+ BOOL GetGlyphBoundRects( const Point& rOrigin, const String& rStr, int nIndex,
+ int nLen, int nBase, MetricVector& rVector );
+
+@@ -517,10 +630,52 @@ public:
+ void DrawLine( const Point& rStartPt, const Point& rEndPt );
+ void DrawLine( const Point& rStartPt, const Point& rEndPt,
+ const LineInfo& rLineInfo );
++
++ /** Render the given polygon as a line stroke
++
++ The given polygon is stroked with the current LineColor, start
++ and end point are not automatically connected
++
++ @see DrawPolygon
++ @see DrawPolyPolygon
++ */
+ void DrawPolyLine( const Polygon& rPoly );
++
++ /** Render the given polygon as a line stroke
++
++ The given polygon is stroked with the current LineColor, start
++ and end point are not automatically connected. The line is
++ rendered according to the specified LineInfo, e.g. supplying a
++ dash pattern, or a line thickness.
++
++ @see DrawPolygon
++ @see DrawPolyPolygon
++ */
+ void DrawPolyLine( const Polygon& rPoly,
+ const LineInfo& rLineInfo );
++
++ /** Render the given polygon
++
++ The given polygon is stroked with the current LineColor, and
++ filled with the current FillColor. If one of these colors are
++ transparent, the corresponding stroke or fill stays
++ invisible. Start and end point of the polygon are
++ automatically connected.
++
++ @see DrawPolyLine
++ */
+ void DrawPolygon( const Polygon& rPoly );
++
++ /** Render the given poly-polygon
++
++ The given poly-polygon is stroked with the current LineColor,
++ and filled with the current FillColor. If one of these colors
++ are transparent, the corresponding stroke or fill stays
++ invisible. Start and end points of the contained polygons are
++ automatically connected.
++
++ @see DrawPolyLine
++ */
+ void DrawPolyPolygon( const PolyPolygon& rPolyPoly );
+ void DrawRect( const Rectangle& rRect );
+ void DrawRect( const Rectangle& rRect,
+@@ -606,17 +755,21 @@ public:
+
+ Bitmap GetBitmap( const Point& rSrcPt, const Size& rSize ) const;
+
+- void EnableMapMode( BOOL bEnable = TRUE ) { mbMap = (bEnable != 0); }
++ /** Query extended bitmap (with alpha channel, if available).
++ */
++ BitmapEx GetBitmapEx( const Point& rSrcPt, const Size& rSize ) const;
++
++ void EnableMapMode( BOOL bEnable = TRUE );
+ BOOL IsMapModeEnabled() const { return mbMap; }
+
+ // Enabling/disabling RTL only makes sense for OutputDevices that use a mirroring SalGraphisLayout
+ void EnableRTL( BOOL bEnable = TRUE);
+ BOOL IsRTLEnabled() const { return mbEnableRTL; }
+
+- void SetConnectMetaFile( GDIMetaFile* pMtf ) { mpMetaFile = pMtf; }
++ void SetConnectMetaFile( GDIMetaFile* pMtf );
+ GDIMetaFile* GetConnectMetaFile() const { return mpMetaFile; }
+
+- void EnableOutput( BOOL bEnable = TRUE ) { mbOutput = (bEnable != 0); }
++ void EnableOutput( BOOL bEnable = TRUE );
+ BOOL IsOutputEnabled() const { return mbOutput; }
+ BOOL IsDeviceOutput() const { return mbDevOutput; }
+ BOOL IsDeviceOutputNecessary() const { return (mbOutput && mbDevOutput); }
+@@ -676,7 +829,7 @@ public:
+ void SetFont( const Font& rNewFont );
+ const Font& GetFont() const { return maFont; }
+ void SetTextColor( const Color& rColor );
+- const Color& GetTextColor() const { return maFont.GetColor(); }
++ const Color& GetTextColor() const { return maTextColor; }
+ void SetTextFillColor();
+ void SetTextFillColor( const Color& rColor );
+
+@@ -689,6 +842,6 @@ public:
+ void SetTextAlign( TextAlign eAlign );
+ TextAlign GetTextAlign() const { return maFont.GetAlign(); }
+
+- void SetSettings( const AllSettings& rSettings ) { maSettings = rSettings; }
++ void SetSettings( const AllSettings& rSettings );
+ const AllSettings& GetSettings() const { return maSettings; }
+
+@@ -811,6 +953,11 @@ public:
+
+ Size GetOutputSizePixel() const
+ { return Size( mnOutWidth, mnOutHeight ); }
++ long GetOutputWidthPixel() const { return mnOutWidth; }
++ long GetOutputHeightPixel() const { return mnOutHeight; }
++ long GetOutOffXPixel() const { return mnOutOffX; }
++ long GetOutOffYPixel() const { return mnOutOffY; }
++
+ Size GetOutputSize() const
+ { return PixelToLogic( GetOutputSizePixel() ); }
+
+@@ -831,9 +978,22 @@ public:
+ USHORT GetBitCount() const;
++
++ /** Query the existence and depth of the alpha channel
++
++ @return 0, if no alpha channel available, and the bit depth of
++ the alpha channel otherwise.
++ */
++ USHORT GetAlphaBitCount() const;
+ ULONG GetColorCount() const;
+
+ void Push( USHORT nFlags = PUSH_ALL );
+ void Pop();
+
++ /** Query availability of alpha channel
++
++ @return TRUE, if this device has an alpha channel.
++ */
++ BOOL HasAlpha();
++
+ void DrawEPS( const Point& rPt, const Size& rSz,
+ const GfxLink& rGfxLink, GDIMetaFile* pSubst = NULL );
+
+
+Index: vcl/inc/pdfwriter.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/pdfwriter.hxx,v
+retrieving revision 1.6
+retrieving revision 1.8
+diff -u -p -u -r1.6 -r1.8
+--- vcl/inc/pdfwriter.hxx 28 May 2003 12:29:54 -0000 1.6
++++ vcl/inc/pdfwriter.hxx 17 Jun 2004 12:05:47 -0000 1.8
+@@ -73,7 +73,7 @@
+ #ifndef _STRING_HXX
+ #include <tools/string.hxx>
+ #endif
+-#ifndef _COLOR_HXX
++#ifndef _TOOLS_COLOR_HXX
+ #include <tools/color.hxx>
+ #endif
+
+@@ -191,7 +191,7 @@ public:
+ FontUnderline eUnderline,
+ BOOL bUnderlineAbove = FALSE );
+ void DrawTextArray( const Point& rStartPt, const XubString& rStr,
+- const long* pDXAry = NULL,
++ const sal_Int32* pDXAry = NULL,
+ xub_StrLen nIndex = 0,
+ xub_StrLen nLen = STRING_LEN );
+ void DrawStretchText( const Point& rStartPt, ULONG nWidth,
+Index: vcl/inc/pngread.hxx
+===================================================================
+RCS file: vcl/inc/pngread.hxx
+diff -N vcl/inc/pngread.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/pngread.hxx 28 Jun 2004 16:05:43 -0000 1.3
+@@ -0,0 +1,101 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * 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): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_PNGREAD_HXX
++#define _SV_PNGREAD_HXX
++
++#ifndef _SV_BITMAPEX_HXX
++#include <bitmapex.hxx>
++#endif
++#include <vector>
++
++// -------------
++// - PNGReader -
++// -------------
++
++namespace vcl
++{
++ class PNGReaderImpl;
++
++ class PNGReader
++ {
++ PNGReaderImpl* mpImpl;
++
++ public:
++
++ /* the PNG chunks are read within the c'tor, so the stream will
++ be positioned at the end of the PNG */
++ PNGReader( SvStream& rStm );
++ ~PNGReader();
++
++ BitmapEx Read();
++
++ // retrieve every chunk that resides inside the PNG
++ struct ChunkData
++ {
++ sal_uInt32 nType;
++ std::vector< sal_uInt8 > aData;
++ };
++ const std::vector< ChunkData >& GetChunks() const;
++ };
++}
++
++#endif // _SV_PNGREAD_HXX
+Index: vcl/inc/pngwrite.hxx
+===================================================================
+RCS file: vcl/inc/pngwrite.hxx
+diff -N vcl/inc/pngwrite.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/pngwrite.hxx 28 Jun 2004 16:05:57 -0000 1.3
+@@ -0,0 +1,106 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * 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): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_PNGWRITE_HXX
++#define _SV_PNGWRITE_HXX
++
++#ifndef _COM_SUN_STAR_UNO_SEQUENCE_HXX_
++#include <com/sun/star/uno/Sequence.hxx>
++#endif
++#ifndef _COM_SUN_STAR_BEANS_PROPERTYVALUE_HPP_
++#include <com/sun/star/beans/PropertyValue.hpp>
++#endif
++#ifndef _SV_BITMAPEX_HXX
++#include <bitmapex.hxx>
++#endif
++#include <vector>
++
++// -------------
++// - PNGWriter -
++// -------------
++
++namespace vcl
++{
++ class PNGWriterImpl;
++
++ class PNGWriter
++ {
++ PNGWriterImpl* mpImpl;
++
++ public:
++
++ PNGWriter( const BitmapEx& BmpEx,
++ const ::com::sun::star::uno::Sequence< ::com::sun::star::beans::PropertyValue >* pFilterData = NULL );
++ ~PNGWriter();
++
++ sal_Bool Write( SvStream& rStm );
++
++ // additional method to be able to modify all chunk before they are stored
++ struct ChunkData
++ {
++ sal_uInt32 nType;
++ std::vector< sal_uInt8 > aData;
++ };
++ std::vector< ChunkData >& GetChunks();
++ };
++}
++
++#endif // _SV_PNGWRITE_HXX
+Index: vcl/inc/print.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/print.hxx,v
+retrieving revision 1.17
+retrieving revision 1.19
+diff -u -p -u -r1.17 -r1.19
+--- vcl/inc/print.hxx 27 Mar 2003 17:57:29 -0000 1.17
++++ vcl/inc/print.hxx 7 Jan 2004 09:11:49 -0000 1.19
+@@ -85,12 +85,9 @@
+ #include <tools/stream.hxx>
+ #endif
+
+-#if defined REMOTE_APPSERVER
+-#include <vector>
+-#endif
+-
+ struct SalPrinterInfoQueue;
+ class SalInfoPrinter;
++struct SalPrinterQueueInfo;
+ class SalPrinter;
+ class VirtualDevice;
+ class Window;
+@@ -101,10 +98,6 @@ namespace com { namespace sun { namespac
+ class Any;
+ } } } }
+
+-#ifdef REMOTE_APPSERVER
+-namespace com { namespace sun { namespace star { namespace portal { namespace client { struct RmJobSetup; } } } } }
+-#endif
+-
+ // -----------------
+ // - Printer-Types -
+ // -----------------
+@@ -268,29 +261,17 @@ class Printer : public OutputDevice
+ friend class ImplQPrinter;
+
+ private:
+-#ifndef REMOTE_APPSERVER
++ void* mpPrinterData_NotUsedYet;
+ SalInfoPrinter* mpInfoPrinter;
+ SalPrinter* mpPrinter;
+ Printer* mpJobPrinter;
+ SalGraphics* mpJobGraphics;
+-#else
+- RmPrinter* mpInfoPrinter;
+- RmPrinter* mpPrinter;
+- void* mpJobPrinter;
+- void* mpJobGraphics;
+-#endif
+ Printer* mpPrev;
+ Printer* mpNext;
+ VirtualDevice* mpDisplayDev;
+ ImplQPrinter* mpQPrinter;
+ GDIMetaFile* mpQMtf;
+ PrinterOptions* mpPrinterOptions;
+-#ifndef REMOTE_APPSERVER
+- void* mpDummy2;
+-#else
+- ::std::vector< PrinterPage* >* mpRemotePages;
+-#endif
+- void* mpDummy3;
+ XubString maPrinterName;
+ XubString maDriver;
+ XubString maPrintFile;
+@@ -313,18 +294,11 @@ private:
+ BOOL mbIsQueuePrinter;
+ BOOL mbUserSetupCompleted;
+ BOOL mbUserSetupResult;
+- BOOL mbDummy3;
+ Link maErrorHdl;
+ Link maStartPrintHdl;
+ Link maEndPrintHdl;
+ Link maPrintPageHdl;
+
+-#ifdef REMOTE_APPSERVER
+- DECL_LINK( UserSetupCompleted, ::com::sun::star::uno::Any* );
+-#endif
+-
+-#if _SOLAR__PRIVATE
+-#ifdef _SV_PRINT_CXX
+ void ImplInitData();
+ void ImplInit( SalPrinterQueueInfo* pInfo );
+ void ImplInitDisplay( const Window* pWindow );
+@@ -333,19 +307,11 @@ private:
+ void ImplUpdatePageData();
+ void ImplUpdateFontList();
+ void ImplFindPaperFormatForUserSize( JobSetup& );
+-#endif // _SV_PRINT_CXX
+-#ifndef REMOTE_APPSERVER
+-
+ DECL_LINK( ImplDestroyPrinterAsync, void* );
++#if _SOLAR__PRIVATE
+ public:
+-
+ void ImplEndPrint();
+-#else
+-public:
+- void PrintRemotePage( ULONG nPage );
+- void GetRemotePageSetup( ULONG nPage, ::com::sun::star::portal::client::RmJobSetup& rSetup );
+-#endif // REMOTE_APPSERVER
+-#endif // __PRIVATE
++#endif
+
+ #ifdef _SPOOLPRINTER_EXT
+ public:
+Index: vcl/inc/regband.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/regband.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/regband.hxx 19 Sep 2000 10:23:06 -0000 1.1.1.1
++++ vcl/inc/regband.hxx 7 Jan 2004 09:13:14 -0000 1.2
+@@ -65,8 +65,8 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_POLY_HXX
+-#include <poly.hxx>
++#ifndef _TL_POLY_HXX
++#include <tools/poly.hxx>
+ #endif
+
+ /* =======================================================================
+Index: vcl/inc/region.h
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/region.h,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/region.h 19 Sep 2000 10:23:06 -0000 1.1.1.1
++++ vcl/inc/region.h 7 Jan 2004 09:13:32 -0000 1.2
+@@ -68,8 +68,8 @@
+ #ifndef _SV_REGBAND_HXX
+ #include <regband.hxx>
+ #endif
+-#ifndef _SV_POLY_HXX
+-#include <poly.hxx>
++#ifndef _TL_POLY_HXX
++#include <tools/poly.hxx>
+ #endif
+
+ #ifndef _SV_REGION_HXX
+Index: vcl/inc/region.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/region.hxx,v
+retrieving revision 1.3
+retrieving revision 1.5
+diff -u -p -u -r1.3 -r1.5
+--- vcl/inc/region.hxx 18 Jun 2001 12:53:13 -0000 1.3
++++ vcl/inc/region.hxx 7 Jan 2004 09:13:51 -0000 1.5
+@@ -91,11 +91,30 @@ typedef long RegionHandle;
+
+ class Region
+ {
++ friend class OutputDevice;
++ friend class Window;
++ friend class Bitmap;
++
+ private:
+- ImplRegion* mpImplRegion;
++ ImplRegion* mpImplRegion;
++
++ void ImplCopyData();
++ void ImplCreateRectRegion( const Rectangle& rRect );
++ void ImplCreatePolyPolyRegion( const PolyPolygon& rPolyPoly );
++ void ImplPolyPolyRegionToBandRegionFunc();
++ inline void ImplPolyPolyRegionToBandRegion();
++ const ImplRegion* ImplGetImplRegion() const { return mpImplRegion; }
++ ImplRegion* ImplGetImplRegion() { return mpImplRegion; }
++ BOOL ImplGetFirstRect( ImplRegionInfo& rImplRegionInfo,
++ long& nX, long& nY, long& nWidth, long& nHeight ) const;
++ BOOL ImplGetNextRect( ImplRegionInfo& rImplRegionInfo,
++ long& nX, long& nY, long& nWidth, long& nHeight ) const;
++ void ImplBeginAddRect( );
++ BOOL ImplAddRect( const Rectangle& rRect );
++ void ImplEndAddRect( );
+
+-#if _SOLAR__PRIVATE
+-#include <region.imp>
++#ifdef DBG_UTIL
++ friend const char* ImplDbgTestRegion( const void* pObj );
+ #endif
+
+ public:
+@@ -150,9 +169,6 @@ public:
+
+ friend SvStream& operator>>( SvStream& rIStm, Region& rRegion );
+ friend SvStream& operator<<( SvStream& rOStm, const Region& rRegion );
+-
+- // usage of this function is only intended for the remote client
+- RegionOverlapType GetOverlapType( const Rectangle& rRect ) const;
+ };
+
+ #endif // _SV_REGION_HXX
+Index: vcl/inc/salbmp.hxx
+===================================================================
+RCS file: vcl/inc/salbmp.hxx
+diff -N vcl/inc/salbmp.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/salbmp.hxx 18 Nov 2003 14:28:29 -0000 1.2
+@@ -0,0 +1,96 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * 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): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_SALBMP_HXX
++#define _SV_SALBMP_HXX
++
++#ifndef _TL_GEN_HXX
++#include <tools/gen.hxx>
++#endif
++
++struct BitmapBuffer;
++class SalGraphics;
++class BitmapPalette;
++
++class SalBitmap
++{
++public:
++ SalBitmap() {}
++ virtual ~SalBitmap();
++
++ virtual bool Create( const Size& rSize,
++ USHORT nBitCount,
++ const BitmapPalette& rPal ) = 0;
++ virtual bool Create( const SalBitmap& rSalBmp ) = 0;
++ virtual bool Create( const SalBitmap& rSalBmp,
++ SalGraphics* pGraphics ) = 0;
++ virtual bool Create( const SalBitmap& rSalBmp,
++ USHORT nNewBitCount ) = 0;
++ virtual void Destroy() = 0;
++ virtual Size GetSize() const = 0;
++ virtual USHORT GetBitCount() const = 0;
++
++ virtual BitmapBuffer* AcquireBuffer( bool bReadOnly ) = 0;
++ virtual void ReleaseBuffer( BitmapBuffer* pBuffer, bool bReadOnly ) = 0;
++
++};
++
++#endif
+Index: vcl/inc/salctrlhandle.hxx
+===================================================================
+RCS file: vcl/inc/salctrlhandle.hxx
+diff -N vcl/inc/salctrlhandle.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/salctrlhandle.hxx 10 May 2004 15:42:11 -0000 1.2
+@@ -0,0 +1,82 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * 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): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_SALCTRLHANDLE_HXX
++#define _SV_SALCTRLHANDLE_HXX
++
++/* SalControlHandle:
++ *
++ * Container for platform-specific handles and data
++ * about controls. Lives as long as the VCL control
++ * lives.
++ */
++
++class SalControlHandle
++{
++ public:
++ SalControlHandle() {}
++ virtual ~SalControlHandle();
++
++ // TODO: derive Sal implementation
++ //SalControlHandleData maData;
++};
++
++#endif
+Index: vcl/inc/salframe.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/salframe.hxx,v
+retrieving revision 1.16
+retrieving revision 1.19
+diff -u -p -u -r1.16 -r1.19
+--- vcl/inc/salframe.hxx 24 Apr 2003 15:16:48 -0000 1.16
++++ vcl/inc/salframe.hxx 10 May 2004 15:42:24 -0000 1.19
+@@ -80,9 +80,6 @@
+ #ifndef _SV_SALWTYPE_HXX
+ #include <salwtype.hxx>
+ #endif
+-#ifndef _SV_SALFRAME_H
+-#include <salframe.h>
+-#endif
+ #ifndef _SV_SALGEOM_HXX
+ #include <salgeom.hxx>
+ #endif
+@@ -91,11 +88,20 @@
+ #include <tools/gen.hxx>
+ #endif
+
++#ifndef _SV_REGION_HXX
++#include <region.hxx>
++#endif
++
++#ifndef _RTL_USTRING_HXX_
++#include <rtl/ustring.hxx>
++#endif
++
+ #ifdef __cplusplus
+
+ class AllSettings;
+ class SalGraphics;
+ class SalBitmap;
++class SalMenu;
+
+ #else
+
+@@ -160,112 +166,119 @@ struct SystemEnvData;
+
+ #ifdef __cplusplus
+
++using namespace rtl;
++
+ // ------------
+ // - SalFrame -
+ // ------------
+
++struct SystemParentData;
++
+ class SalFrame
+ {
+- friend class SalInstance;
+-
++ void* m_pInst;
++ SALFRAMEPROC m_pProc;
+ public: // public for Sal Implementation
+- SalFrame();
+- ~SalFrame();
++ SalFrame() : m_pInst( NULL ), m_pProc( NULL ) {}
++ virtual ~SalFrame();
+
+ public: // public for Sal Implementation
+- SalFrameData maFrameData;
+ SalFrameGeometry maGeometry;
+- static BOOL mbInReparent;
+-
+-#ifdef _INCL_SAL_SALFRAME_IMP
+-#include <salframe.imp>
+-#endif
+
+ public:
+ // SalGraphics or NULL, but two Graphics for all SalFrames
+ // must be returned
+- SalGraphics* GetGraphics();
+- void ReleaseGraphics( SalGraphics* pGraphics );
++ virtual SalGraphics* GetGraphics() = 0;
++ virtual void ReleaseGraphics( SalGraphics* pGraphics ) = 0;
+
+ // Event must be destroyed, when Frame is destroyed
+ // When Event is called, SalInstance::Yield() must be returned
+- BOOL PostEvent( void* pData );
++ virtual BOOL PostEvent( void* pData ) = 0;
+
+- void SetTitle( const XubString& rTitle );
+- void SetIcon( USHORT nIcon );
+-
+- // Befor the window is visible, a resize event
+- // must be sent with the correct size
+- void Show( BOOL bVisible, BOOL bNoActivate = FALSE );
+- void Enable( BOOL bEnable );
+- // Set ClientSize and Center the Window to the desktop
+- // and send/post a resize message
+- void SetMinClientSize( long nWidth, long nHeight );
+- void SetPosSize( long nX, long nY, long nWidth, long nHeight, USHORT nFlags );
+- void GetClientSize( long& rWidth, long& rHeight );
+- void GetWorkArea( Rectangle& rRect );
+- SalFrame* GetParent() const;
++ virtual void SetTitle( const XubString& rTitle ) = 0;
++ virtual void SetIcon( USHORT nIcon ) = 0;
++ virtual void SetMenu( SalMenu *pSalMenu ) = 0;
++ virtual void DrawMenuBar() = 0;
++
++ // Before the window is visible, a resize event
++ // must be sent with the correct size
++ virtual void Show( BOOL bVisible, BOOL bNoActivate = FALSE ) = 0;
++ virtual void Enable( BOOL bEnable ) = 0;
++ // Set ClientSize and Center the Window to the desktop
++ // and send/post a resize message
++ virtual void SetMinClientSize( long nWidth, long nHeight ) = 0;
++ virtual void SetPosSize( long nX, long nY, long nWidth, long nHeight, USHORT nFlags ) = 0;
++ virtual void GetClientSize( long& rWidth, long& rHeight ) = 0;
++ virtual void GetWorkArea( Rectangle& rRect ) = 0;
++ virtual SalFrame* GetParent() const = 0;
+ // Note: x will be mirrored at parent if UI mirroring is active
+- SalFrameGeometry GetGeometry();
+- const SalFrameGeometry& GetUnmirroredGeometry() const { return maGeometry; }
+- void SetWindowState( const SalFrameState* pState );
+- BOOL GetWindowState( SalFrameState* pState );
+- void ShowFullScreen( BOOL bFullScreen );
+- // Enable/Disable ScreenSaver, SystemAgents, ...
+- void StartPresentation( BOOL bStart );
+- // Show Window over all other Windows
+- void SetAlwaysOnTop( BOOL bOnTop );
+-
+- // Window to top and grab focus
+- void ToTop( USHORT nFlags );
+-
+- // this function can call with the same
+- // pointer style
+- void SetPointer( PointerStyle ePointerStyle );
+- void CaptureMouse( BOOL bMouse );
+- void SetPointerPos( long nX, long nY );
+-
+- // Alle noch anstehenden Ausgaben sofort
+- // durchfuehren
+- void Flush();
+- // Dummy-Syncronen Aufruf zum Client/Display
+- // machen, damit man sicher sein kann, das
+- // Ausgaben nicht den Client/das Display
+- // ueberrennen
+- void Sync();
+-
+- void SetInputContext( SalInputContext* pContext );
+- void EndExtTextInput( USHORT nFlags );
+-
+- XubString GetKeyName( USHORT nKeyCode );
+- XubString GetSymbolKeyName( const XubString& rFontName, USHORT nKeyCode );
+-
+- // returns the input language used for the last key stroke
+- // may be LANGUAGE_DONTKNOW if not supported by the OS
+- LanguageType GetInputLanguage();
+-
+- SalBitmap* SnapShot();
++ SalFrameGeometry GetGeometry();
++ const SalFrameGeometry& GetUnmirroredGeometry() const { return maGeometry; }
++ virtual void SetWindowState( const SalFrameState* pState ) = 0;
++ virtual BOOL GetWindowState( SalFrameState* pState ) = 0;
++ virtual void ShowFullScreen( BOOL bFullScreen ) = 0;
++ // Enable/Disable ScreenSaver, SystemAgents, ...
++ virtual void StartPresentation( BOOL bStart ) = 0;
++ // Show Window over all other Windows
++ virtual void SetAlwaysOnTop( BOOL bOnTop ) = 0;
++
++ // Window to top and grab focus
++ virtual void ToTop( USHORT nFlags ) = 0;
++
++ // this function can call with the same
++ // pointer style
++ virtual void SetPointer( PointerStyle ePointerStyle ) = 0;
++ virtual void CaptureMouse( BOOL bMouse ) = 0;
++ virtual void SetPointerPos( long nX, long nY ) = 0;
++
++ // flush output buffer
++ virtual void Flush() = 0;
++ // flush output buffer, wait till outstanding operations are done
++ virtual void Sync() = 0;
++
++ virtual void SetInputContext( SalInputContext* pContext ) = 0;
++ virtual void EndExtTextInput( USHORT nFlags ) = 0;
++
++ virtual String GetKeyName( USHORT nKeyCode ) = 0;
++ virtual String GetSymbolKeyName( const XubString& rFontName, USHORT nKeyCode ) = 0;
++
++ // returns the input language used for the last key stroke
++ // may be LANGUAGE_DONTKNOW if not supported by the OS
++ virtual LanguageType GetInputLanguage() = 0;
+
+- void UpdateSettings( AllSettings& rSettings );
++ virtual SalBitmap* SnapShot() = 0;
+
+- void Beep( SoundType eSoundType );
++ virtual void UpdateSettings( AllSettings& rSettings ) = 0;
+
+- // Liefert die SystemDaten zurueck
+- const SystemEnvData* GetSystemData() const;
++ virtual void Beep( SoundType eSoundType ) = 0;
++
++ // returns system data (most prominent: window handle)
++ virtual const SystemEnvData* GetSystemData() const = 0;
+
+- // Callbacks (indepen in \sv\source\app\svframe.cxx)
+- // for default message handling return 0
+- void SetCallback( void* pInst, SALFRAMEPROC pProc );
+
+ // get current modifier and button mask
+- ULONG GetCurrentModButtons();
++ virtual ULONG GetCurrentModButtons() = 0;
+
+ // set new parent window
+- void SetParent( SalFrame* pNewParent );
++ virtual void SetParent( SalFrame* pNewParent ) = 0;
+ // reparent window to act as a plugin; implementation
+ // may choose to use a new system window inetrnally
+ // return false to indicate failure
+- bool SetPluginParent( SystemParentData* pNewParent );
++ virtual bool SetPluginParent( SystemParentData* pNewParent ) = 0;
++
++ // Callbacks (indepent part in vcl/source/window/winproc.cxx)
++ // for default message handling return 0
++ void SetCallback( void* pInst, SALFRAMEPROC pProc )
++ { m_pInst = pInst; m_pProc = pProc; }
++
++ // returns the instance set
++ void* GetInstance() const { return m_pInst; }
++
++ // Call the callback set; this sometimes necessary for implementation classes
++ // that should not now more than necessary about the SalFrame implementation
++ // (e.g. input methods, printer update handlers).
++ long CallCallback( USHORT nEvent, const void* pEvent ) const
++ { return m_pProc ? m_pProc( m_pInst, const_cast<SalFrame*>(this), nEvent, pEvent ) : 0; }
+ };
+
+
+Index: vcl/inc/salgdi.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/salgdi.hxx,v
+retrieving revision 1.20.116.1
+retrieving revision 1.24
+diff -u -p -u -r1.20.116.1 -r1.24
+--- vcl/inc/salgdi.hxx 9 Jan 2004 18:13:40 -0000 1.20.116.1
++++ vcl/inc/salgdi.hxx 17 Jun 2004 12:07:14 -0000 1.24
+@@ -72,15 +72,21 @@
+ #ifndef _SV_SALGTYPE_HXX
+ #include <salgtype.hxx>
+ #endif
+-#ifndef _SV_SALGDI_H
+-#include <salgdi.h>
+-#endif
+ #ifndef _VOS_THREAD_HXX
+ #include <vos/thread.hxx>
+ #endif
+ #ifndef _SV_OUTDEV_HXX
+ #include <outdev.hxx>
+ #endif
++#ifndef _RTL_USTRING_HXX_
++#include <rtl/ustring.hxx>
++#endif
++#ifndef _SV_NATIVEWIDGETS_HXX
++#include <salnativewidgets.hxx>
++#endif
++#ifndef _SV_SALCTRLHANDLE_HXX
++#include <salctrlhandle.hxx>
++#endif
+
+ #include <map>
+
+@@ -97,6 +103,7 @@ class ImplLayoutArgs;
+ class Rectangle;
+ struct FontSubsetInfo;
+ class OutputDevice;
++class ServerFontLayout;
+
+ // ---------------------
+ // - SalGraphics-Codes -
+@@ -114,72 +121,131 @@ class OutputDevice;
+ // - SalGraphics -
+ // ---------------
+
+-// note: if you add any new methods to class SalGraphics that work with coordinates
+-// make sure they are virtual and add them to class SalGraphicsLayout where you have
+-// to perform coordinate mirroring if required, (see existing methods as sample)
++// note: if you add any new methods to class SalGraphics using coordinates
++// make sure they have a corresponding protected pure virtual method
++// which has to be implemented by the platform dependent part.
++// Add a method that performs coordinate mirroring if required, (see
++// existing methods as sample) and then calls the equivalent pure method.
++
++// note: all positions are in pixel and relative to
++// the top/left-position of the virtual output area
++
+
+ class SalGraphics
+ {
+- friend class SalFrame;
+- friend class SalVirtualDevice;
+- friend class SalPrinter;
+-
+-public: // public for Sal Implementation
+- SalGraphics();
+- virtual ~SalGraphics();
+-
+-public: // public for Sal Implementation
+- SalGraphicsData maGraphicsData;
+-
+- // to be overridden by derived class
+- virtual int GetLayout() { return 0; } // base class supports left-to-right only
+- virtual void SetLayout( int ) {};
++ int m_nLayout; // 0: mirroring off, 1: mirror x-axis
++public:
++ SalGraphics();
++ virtual ~SalGraphics();
+
+-#ifdef _INCL_SAL_SALGDI_IMP
+-#include <salgdi.imp>
+-#endif
++protected:
++ virtual BOOL unionClipRegion( long nX, long nY, long nWidth, long nHeight ) = 0;
++ // draw --> LineColor and FillColor and RasterOp and ClipRegion
++ virtual void drawPixel( long nX, long nY ) = 0;
++ virtual void drawPixel( long nX, long nY, SalColor nSalColor ) = 0;
++ virtual void drawLine( long nX1, long nY1, long nX2, long nY2 ) = 0;
++ virtual void drawRect( long nX, long nY, long nWidth, long nHeight ) = 0;
++ virtual void drawPolyLine( ULONG nPoints, const SalPoint* pPtAry ) = 0;
++ virtual void drawPolygon( ULONG nPoints, const SalPoint* pPtAry ) = 0;
++ virtual void drawPolyPolygon( ULONG nPoly, const ULONG* pPoints, PCONSTSALPOINT* pPtAry ) = 0;
++ virtual sal_Bool drawPolyLineBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry ) = 0;
++ virtual sal_Bool drawPolygonBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry ) = 0;
++ virtual sal_Bool drawPolyPolygonBezier( ULONG nPoly, const ULONG* pPoints, const SalPoint* const* pPtAry, const BYTE* const* pFlgAry ) = 0;
+
++ // CopyArea --> No RasterOp, but ClipRegion
++ virtual void copyArea( long nDestX, long nDestY, long nSrcX, long nSrcY, long nSrcWidth,
++ long nSrcHeight, USHORT nFlags ) = 0;
++
++ // CopyBits and DrawBitmap --> RasterOp and ClipRegion
++ // CopyBits() --> pSrcGraphics == NULL, then CopyBits on same Graphics
++ virtual void copyBits( const SalTwoRect* pPosAry, SalGraphics* pSrcGraphics ) = 0;
++ virtual void drawBitmap( const SalTwoRect* pPosAry, const SalBitmap& rSalBitmap ) = 0;
++ virtual void drawBitmap( const SalTwoRect* pPosAry,
++ const SalBitmap& rSalBitmap,
++ SalColor nTransparentColor ) = 0;
++ virtual void drawBitmap( const SalTwoRect* pPosAry,
++ const SalBitmap& rSalBitmap,
++ const SalBitmap& rTransparentBitmap ) = 0;
++ virtual void drawMask( const SalTwoRect* pPosAry,
++ const SalBitmap& rSalBitmap,
++ SalColor nMaskColor ) = 0;
++
++ virtual SalBitmap* getBitmap( long nX, long nY, long nWidth, long nHeight ) = 0;
++ virtual SalColor getPixel( long nX, long nY ) = 0;
++
++ // invert --> ClipRegion (only Windows or VirDevs)
++ virtual void invert( long nX, long nY, long nWidth, long nHeight, SalInvert nFlags) = 0;
++ virtual void invert( ULONG nPoints, const SalPoint* pPtAry, SalInvert nFlags ) = 0;
++
++ virtual BOOL drawEPS( long nX, long nY, long nWidth, long nHeight, void* pPtr, ULONG nSize ) = 0;
++
++ // native widget rendering methods that require mirroring
++ virtual BOOL hitTestNativeControl( ControlType nType, ControlPart nPart, const Region& rControlRegion,
++ const Point& aPos, SalControlHandle& rControlHandle, BOOL& rIsInside );
++ virtual BOOL drawNativeControl( ControlType nType, ControlPart nPart, const Region& rControlRegion,
++ ControlState nState, const ImplControlValue& aValue, SalControlHandle& rControlHandle,
++ rtl::OUString aCaption );
++ virtual BOOL drawNativeControlText( ControlType nType, ControlPart nPart, const Region& rControlRegion,
++ ControlState nState, const ImplControlValue& aValue,
++ SalControlHandle& rControlHandle, rtl::OUString aCaption );
++ virtual BOOL getNativeControlRegion( ControlType nType, ControlPart nPart, const Region& rControlRegion, ControlState nState,
++ const ImplControlValue& aValue, SalControlHandle& rControlHandle, rtl::OUString aCaption,
++ Region &rNativeBoundingRegion, Region &rNativeContentRegion );
+ public:
++ // public SalGraphics methods, the interface to the independent vcl part
+
+- // this functions must be quick, because this data is query for all
+- // GetGraphics()-Instances
+- void GetResolution( long& rDPIX, long& rDPIY );
+- void GetScreenFontResolution( long& rDPIX, long& rDPIY );
+- USHORT GetBitCount();
+- long GetGraphicsWidth();
+-
+- void ResetClipRegion();
+- void BeginSetClipRegion( ULONG nCount );
+- virtual BOOL UnionClipRegion( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
+- void EndSetClipRegion();
+-
+- void SetLineColor();
+- void SetLineColor( SalColor nSalColor );
+- void SetFillColor();
+-
+- void SetFillColor( SalColor nSalColor );
+-
+- void SetXORMode( BOOL bSet );
+-
+- void SetROPLineColor( SalROPColor nROPColor );
+- void SetROPFillColor( SalROPColor nROPColor );
+-
+- // all positions are in pixel and relative to
+- // the top/left-position of the output area
+- void SetTextColor( SalColor nSalColor );
+- USHORT SetFont( ImplFontSelectData*, int nFallbackLevel );
+- void GetFontMetric( ImplFontMetricData* );
+- // return only PairCount when (pKernPairs == NULL)
+- ULONG GetKernPairs( ULONG nPairs, ImplKernPairData* pKernPairs );
+- ULONG GetFontCodeRanges( sal_uInt32* pCodePairs ) const;
++ // get device resolution
++ virtual void GetResolution( sal_Int32& rDPIX, sal_Int32& rDPIY ) = 0;
++ // get resolution for fonts (an implementations specific adjustment,
++ // ideally would be the same as the Resolution)
++ virtual void GetScreenFontResolution( sal_Int32& rDPIX, sal_Int32& rDPIY ) = 0;
++ // get the depth of the device
++ virtual USHORT GetBitCount() = 0;
++ // get the width of the device
++ virtual long GetGraphicsWidth() = 0;
++
++ // set the clip region to empty
++ virtual void ResetClipRegion() = 0;
++ // begin setting the clip region, add rectangles to the
++ // region with the UnionClipRegion call
++ virtual void BeginSetClipRegion( ULONG nCount ) = 0;
++ // all rectangles were added and the clip region should be set now
++ virtual void EndSetClipRegion() = 0;
++
++ // set the line color to transparent (= don't draw lines)
++ virtual void SetLineColor() = 0;
++ // set the line color to a specific color
++ virtual void SetLineColor( SalColor nSalColor ) = 0;
++ // set the fill color to transparent (= don't fill)
++ virtual void SetFillColor() = 0;
++ // set the fill color to a specific color, shapes will be
++ // filled accordingly
++ virtual void SetFillColor( SalColor nSalColor ) = 0;
++ // enable/disable XOR drawing
++ virtual void SetXORMode( BOOL bSet ) = 0;
++ // set line color for raster operations
++ virtual void SetROPLineColor( SalROPColor nROPColor ) = 0;
++ // set fill color for raster operations
++ virtual void SetROPFillColor( SalROPColor nROPColor ) = 0;
++ // set the text color to a specific color
++ virtual void SetTextColor( SalColor nSalColor ) = 0;
++ // set the font
++ virtual USHORT SetFont( ImplFontSelectData*, int nFallbackLevel ) = 0;
++ // get the current font's etrics
++ virtual void GetFontMetric( ImplFontMetricData* ) = 0;
++ // get kernign pairs of the current font
++ // return only PairCount if (pKernPairs == NULL)
++ virtual ULONG GetKernPairs( ULONG nPairs, ImplKernPairData* pKernPairs ) = 0;
++ // get the repertoire of the current font; the code pairs returned
++ // contain unicode ranges. if pCodePairs is NULL return only the
++ // number of pairs which would be filled
++ virtual ULONG GetFontCodeRanges( sal_uInt32* pCodePairs ) const = 0;
+ // graphics must fill supplied font list
+- void GetDevFontList( ImplDevFontList* );
++ virtual void GetDevFontList( ImplDevFontList* ) = 0;
+ // graphics should call ImplAddDevFontSubstitute on supplied
+ // OutputDevice for all its device specific preferred font substitutions
+- void GetDevFontSubstList( OutputDevice* );
+- ImplFontData* AddTempDevFont( const String& rFileURL, const String& rFontName );
+- static void RemovingFont( ImplFontData* );
+-
++ virtual void GetDevFontSubstList( OutputDevice* ) = 0;
++ virtual ImplFontData* AddTempDevFont( const String& rFileURL, const String& rFontName ) = 0;
+ // CreateFontSubset: a method to get a subset of glyhps of a font
+ // inside a new valid font file
+ // returns TRUE if creation of subset was successfull
+@@ -192,14 +258,14 @@ public:
+ // rInfo: additional outgoing information
+ // implementation note: encoding 0 with glyph id 0 should be added implicitly
+ // as "undefined character"
+- BOOL CreateFontSubset( const rtl::OUString& rToFile,
++ virtual BOOL CreateFontSubset( const rtl::OUString& rToFile,
+ ImplFontData* pFont,
+- long* pGlyphIDs,
++ sal_Int32* pGlyphIDs,
+ sal_uInt8* pEncoding,
+ sal_Int32* pWidths,
+ int nGlyphs,
+ FontSubsetInfo& rInfo // out parameter
+- );
++ ) = 0;
+
+ // GetFontEncodingVector: a method to get the encoding map Unicode
+ // to font encoded character; this is only used for type1 fonts and
+@@ -208,7 +274,7 @@ public:
+ // glyphs with only a name) exist it is set to the corresponding
+ // map for non encoded glyphs; the encoding vector contains -1
+ // as encoding for these cases
+- const std::map< sal_Unicode, sal_Int32 >* GetFontEncodingVector( ImplFontData* pFont, const std::map< sal_Unicode, rtl::OString >** ppNonEncoded );
++ virtual const std::map< sal_Unicode, sal_Int32 >* GetFontEncodingVector( ImplFontData* pFont, const std::map< sal_Unicode, rtl::OString >** ppNonEncoded ) = 0;
+
+ // GetEmbedFontData: gets the font data for a font marked
+ // embeddable by GetDevFontList or NULL in case of error
+@@ -219,130 +285,146 @@ public:
+ // pWidths MUST support at least 256 members;
+ // rInfo: additional outgoing information
+ // pDataLen: out parameter, contains the byte length of the returned buffer
+- const void* GetEmbedFontData( ImplFontData* pFont,
+- const sal_Unicode* pUnicodes,
+- sal_Int32* pWidths,
+- FontSubsetInfo& rInfo,
+- long* pDataLen );
++ virtual const void* GetEmbedFontData( ImplFontData* pFont,
++ const sal_Unicode* pUnicodes,
++ sal_Int32* pWidths,
++ FontSubsetInfo& rInfo,
++ long* pDataLen ) = 0;
+ // frees the font data again
+- void FreeEmbedFontData( const void* pData, long nDataLen );
++ virtual void FreeEmbedFontData( const void* pData, long nDataLen ) = 0;
+
+- virtual BOOL GetGlyphBoundRect( long nIndex, Rectangle&, const OutputDevice *pOutDev );
+- virtual BOOL GetGlyphOutline( long nIndex, PolyPolygon&, const OutputDevice *pOutDev );
++ virtual BOOL GetGlyphBoundRect( long nIndex, Rectangle& ) = 0;
++ virtual BOOL GetGlyphOutline( long nIndex, PolyPolygon& ) = 0;
+
+- virtual SalLayout* GetTextLayout( ImplLayoutArgs&, int nFallbackLevel );
++ virtual SalLayout* GetTextLayout( ImplLayoutArgs&, int nFallbackLevel ) = 0;
++ virtual void DrawServerFontLayout( const ServerFontLayout& ) = 0;
+
+- // draw --> LineColor and FillColor and RasterOp and ClipRegion
+- virtual void DrawPixel( long nX, long nY, const OutputDevice *pOutDev );
+- virtual void DrawPixel( long nX, long nY, SalColor nSalColor, const OutputDevice *pOutDev );
+- virtual void DrawLine( long nX1, long nY1, long nX2, long nY2, const OutputDevice *pOutDev );
+- virtual void DrawRect( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
+- virtual void DrawPolyLine( ULONG nPoints, const SalPoint* pPtAry, const OutputDevice *pOutDev );
+- virtual void DrawPolygon( ULONG nPoints, const SalPoint* pPtAry, const OutputDevice *pOutDev );
+- virtual void DrawPolyPolygon( ULONG nPoly, const ULONG* pPoints,
+- PCONSTSALPOINT* pPtAry, const OutputDevice *pOutDev );
+- virtual sal_Bool DrawPolyLineBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry, const OutputDevice *pOutDev );
+- virtual sal_Bool DrawPolygonBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry, const OutputDevice *pOutDev );
+- virtual sal_Bool DrawPolyPolygonBezier( ULONG nPoly, const ULONG* pPoints,
+- const SalPoint* const* pPtAry, const BYTE* const* pFlgAry, const OutputDevice *pOutDev );
++ // mirroring specifica
++ int GetLayout() { return m_nLayout; }
++ void SetLayout( int aLayout ) { m_nLayout = aLayout;}
+
++ void mirror( long& nX, const OutputDevice *pOutDev );
++ void mirror( long& nX, long& nWidth, const OutputDevice *pOutDev );
++ BOOL mirror( sal_uInt32 nPoints, const SalPoint *pPtAry, SalPoint *pPtAry2, const OutputDevice *pOutDev );
++ void mirror( Region& rRgn, const OutputDevice *pOutDev );
++
++ // non virtual methods; these do eventual coordinate mirroring and
++ // then delegate to protected virtual methods
++ BOOL UnionClipRegion( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
++ // draw --> LineColor and FillColor and RasterOp and ClipRegion
++ void DrawPixel( long nX, long nY, const OutputDevice *pOutDev );
++ void DrawPixel( long nX, long nY, SalColor nSalColor, const OutputDevice *pOutDev );
++ void DrawLine( long nX1, long nY1, long nX2, long nY2, const OutputDevice *pOutDev );
++ void DrawRect( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
++ void DrawPolyLine( ULONG nPoints, const SalPoint* pPtAry, const OutputDevice *pOutDev );
++ void DrawPolygon( ULONG nPoints, const SalPoint* pPtAry, const OutputDevice *pOutDev );
++ void DrawPolyPolygon( ULONG nPoly,
++ const ULONG* pPoints,
++ PCONSTSALPOINT* pPtAry,
++ const OutputDevice *pOutDev );
++ sal_Bool DrawPolyLineBezier( ULONG nPoints,
++ const SalPoint* pPtAry,
++ const BYTE* pFlgAry,
++ const OutputDevice *pOutDev );
++ sal_Bool DrawPolygonBezier( ULONG nPoints,
++ const SalPoint* pPtAry,
++ const BYTE* pFlgAry,
++ const OutputDevice *pOutDev );
++ sal_Bool DrawPolyPolygonBezier( ULONG nPoly,
++ const ULONG* pPoints,
++ const SalPoint* const* pPtAry,
++ const BYTE* const* pFlgAry,
++ const OutputDevice *pOutDev );
++
+ // CopyArea --> No RasterOp, but ClipRegion
+- virtual void CopyArea( long nDestX, long nDestY,
+- long nSrcX, long nSrcY,
+- long nSrcWidth, long nSrcHeight,
+- USHORT nFlags, const OutputDevice *pOutDev );
++ void CopyArea( long nDestX,
++ long nDestY,
++ long nSrcX,
++ long nSrcY,
++ long nSrcWidth,
++ long nSrcHeight,
++ USHORT nFlags,
++ const OutputDevice *pOutDev );
+
+ // CopyBits and DrawBitmap --> RasterOp and ClipRegion
+ // CopyBits() --> pSrcGraphics == NULL, then CopyBits on same Graphics
+- virtual void CopyBits( const SalTwoRect* pPosAry,
+- SalGraphics* pSrcGraphics, const OutputDevice *pOutDev, const OutputDevice *pSrcOutDev );
+- virtual void DrawBitmap( const SalTwoRect* pPosAry,
+- const SalBitmap& rSalBitmap, const OutputDevice *pOutDev );
+- virtual void DrawBitmap( const SalTwoRect* pPosAry,
++ void CopyBits( const SalTwoRect* pPosAry,
++ SalGraphics* pSrcGraphics,
++ const OutputDevice *pOutDev,
++ const OutputDevice *pSrcOutDev );
++ void DrawBitmap( const SalTwoRect* pPosAry,
+ const SalBitmap& rSalBitmap,
+- SalColor nTransparentColor, const OutputDevice *pOutDev );
+- virtual void DrawBitmap( const SalTwoRect* pPosAry,
++ const OutputDevice *pOutDev );
++ void DrawBitmap( const SalTwoRect* pPosAry,
+ const SalBitmap& rSalBitmap,
+- const SalBitmap& rTransparentBitmap, const OutputDevice *pOutDev );
++ SalColor nTransparentColor,
++ const OutputDevice *pOutDev );
++ void DrawBitmap( const SalTwoRect* pPosAry,
++ const SalBitmap& rSalBitmap,
++ const SalBitmap& rTransparentBitmap,
++ const OutputDevice *pOutDev );
+
+- virtual void DrawMask( const SalTwoRect* pPosAry,
++ void DrawMask( const SalTwoRect* pPosAry,
+ const SalBitmap& rSalBitmap,
+- SalColor nMaskColor, const OutputDevice *pOutDev );
++ SalColor nMaskColor,
++ const OutputDevice *pOutDev );
+
+- virtual SalBitmap* GetBitmap( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
+- virtual SalColor GetPixel( long nX, long nY, const OutputDevice *pOutDev );
++ SalBitmap* GetBitmap( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
++ SalColor GetPixel( long nX, long nY, const OutputDevice *pOutDev );
+
+ // invert --> ClipRegion (only Windows)
+- virtual void Invert( long nX, long nY, long nWidth, long nHeight, SalInvert nFlags, const OutputDevice *pOutDev );
+- virtual void Invert( ULONG nPoints, const SalPoint* pPtAry, SalInvert nFlags, const OutputDevice *pOutDev );
+-
+- virtual BOOL DrawEPS( long nX, long nY, long nWidth, long nHeight, void* pPtr, ULONG nSize, const OutputDevice *pOutDev );
+-};
+-
+-
+-// ---------------------
+-// - SalGraphicsLayout -
+-// ---------------------
+-
+-// extend SalGraphics for RTL
+-
+-class SalGraphicsLayout : public SalGraphics
+-{
+- friend class SalFrame;
+- friend class SalVirtualDevice;
+- friend class SalPrinter;
+-
+-private:
+- int mnLayout;
+-
+-public:
+- SalGraphicsLayout();
+- ~SalGraphicsLayout();
+-
+- int GetLayout() { return mnLayout; }
+- void SetLayout( int aLayout) { mnLayout = aLayout;}
+-
+- void mirror( long& nX, const OutputDevice *pOutDev );
+- void mirror( long& nX, long& nWidth, const OutputDevice *pOutDev );
+- BOOL mirror( sal_uInt32 nPoints, const SalPoint *pPtAry, SalPoint *pPtAry2, const OutputDevice *pOutDev );
+-
+- // overwrite those SalGraphics methods that require mirroring
+- // note: text methods will not be mirrored here, this is handled in outdev3.cxx
+- BOOL UnionClipRegion( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
+- void DrawPixel( long nX, long nY, const OutputDevice *pOutDev );
+- void DrawPixel( long nX, long nY, SalColor nSalColor, const OutputDevice *pOutDev );
+- void DrawLine( long nX1, long nY1, long nX2, long nY2, const OutputDevice *pOutDev );
+- void DrawRect( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
+- void DrawPolyLine( ULONG nPoints, const SalPoint* pPtAry, const OutputDevice *pOutDev );
+- void DrawPolygon( ULONG nPoints, const SalPoint* pPtAry, const OutputDevice *pOutDev );
+- void DrawPolyPolygon( ULONG nPoly, const ULONG* pPoints,
+- PCONSTSALPOINT* pPtAry, const OutputDevice *pOutDev );
+- sal_Bool DrawPolyLineBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry, const OutputDevice *pOutDev );
+- sal_Bool DrawPolygonBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry, const OutputDevice *pOutDev );
+- sal_Bool DrawPolyPolygonBezier( ULONG nPoly, const ULONG* pPoints,
+- const SalPoint* const* pPtAry, const BYTE* const* pFlgAry, const OutputDevice *pOutDev );
+- void CopyArea( long nDestX, long nDestY,
+- long nSrcX, long nSrcY,
+- long nSrcWidth, long nSrcHeight,
+- USHORT nFlags, const OutputDevice *pOutDev );
+- void CopyBits( const SalTwoRect* pPosAry,
+- SalGraphics* pSrcGraphics, const OutputDevice *pOutDev, const OutputDevice *pSrcOutDev );
+- void DrawBitmap( const SalTwoRect* pPosAry,
+- const SalBitmap& rSalBitmap, const OutputDevice *pOutDev );
+- void DrawBitmap( const SalTwoRect* pPosAry,
+- const SalBitmap& rSalBitmap,
+- SalColor nTransparentColor, const OutputDevice *pOutDev );
+- void DrawBitmap( const SalTwoRect* pPosAry,
+- const SalBitmap& rSalBitmap,
+- const SalBitmap& rTransparentBitmap, const OutputDevice *pOutDev );
+- void DrawMask( const SalTwoRect* pPosAry,
+- const SalBitmap& rSalBitmap,
+- SalColor nMaskColor, const OutputDevice *pOutDev );
+- SalBitmap* GetBitmap( long nX, long nY, long nWidth, long nHeight, const OutputDevice *pOutDev );
+- SalColor GetPixel( long nX, long nY, const OutputDevice *pOutDev );
+- void Invert( long nX, long nY, long nWidth, long nHeight, SalInvert nFlags, const OutputDevice *pOutDev );
+- void Invert( ULONG nPoints, const SalPoint* pPtAry, SalInvert nFlags, const OutputDevice *pOutDev );
+- BOOL DrawEPS( long nX, long nY, long nWidth, long nHeight, void* pPtr, ULONG nSize, const OutputDevice *pOutDev );
++ void Invert( long nX, long nY, long nWidth, long nHeight, SalInvert nFlags, const OutputDevice *pOutDev );
++ void Invert( ULONG nPoints, const SalPoint* pPtAry, SalInvert nFlags, const OutputDevice *pOutDev );
++
++ BOOL DrawEPS( long nX, long nY, long nWidth, long nHeight, void* pPtr, ULONG nSize, const OutputDevice *pOutDev );
++
++ //-------------------------------------
++ // Native Widget Rendering functions
++ //-------------------------------------
++
++ // Query the platform layer for control support
++ virtual BOOL IsNativeControlSupported( ControlType nType, ControlPart nPart );
++
++ // Query the native control to determine if it was acted upon
++ BOOL HitTestNativeControl( ControlType nType,
++ ControlPart nPart,
++ const Region& rControlRegion,
++ const Point& aPos,
++ SalControlHandle& rControlHandle,
++ BOOL& rIsInside,
++ const OutputDevice *pOutDev );
++
++ // Request rendering of a particular control and/or part
++ BOOL DrawNativeControl( ControlType nType,
++ ControlPart nPart,
++ const Region& rControlRegion,
++ ControlState nState,
++ const ImplControlValue& aValue,
++ SalControlHandle& rControlHandle,
++ rtl::OUString aCaption,
++ const OutputDevice *pOutDev );
++
++ // Request rendering of a caption string for a control
++ BOOL DrawNativeControlText( ControlType nType,
++ ControlPart nPart,
++ const Region& rControlRegion,
++ ControlState nState,
++ const ImplControlValue& aValue,
++ SalControlHandle& rControlHandle,
++ rtl::OUString aCaption,
++ const OutputDevice *pOutDev );
++
++ // Query the native control's actual drawing region (including adornment)
++ BOOL GetNativeControlRegion( ControlType nType,
++ ControlPart nPart,
++ const Region& rControlRegion,
++ ControlState nState,
++ const ImplControlValue& aValue,
++ SalControlHandle& rControlHandle,
++ rtl::OUString aCaption,
++ Region &rNativeBoundingRegion,
++ Region &rNativeContentRegion,
++ const OutputDevice *pOutDev );
+ };
+
+ #endif // _SV_SALGDI_HXX
+Index: vcl/inc/salimestatus.hxx
+===================================================================
+RCS file: vcl/inc/salimestatus.hxx
+diff -N vcl/inc/salimestatus.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/salimestatus.hxx 18 Nov 2003 14:29:06 -0000 1.2
+@@ -0,0 +1,77 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * 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): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_SALIMESTATUS_HXX
++#define _SV_SALIMESTATUS_HXX
++
++class SalI18NImeStatus
++{
++public:
++ SalI18NImeStatus() {}
++ virtual ~SalI18NImeStatus();
++
++ // asks whether there is a status window available
++ // to toggle into menubar
++ virtual bool canToggle() = 0;
++ virtual void toggle() = 0;
++};
++
++#endif
+Index: vcl/inc/salinst.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/salinst.hxx,v
+retrieving revision 1.6.280.1
+retrieving revision 1.10
+diff -u -p -u -r1.6.280.1 -r1.10
+--- vcl/inc/salinst.hxx 2 Mar 2004 10:00:22 -0000 1.6.280.1
++++ vcl/inc/salinst.hxx 18 May 2004 10:49:17 -0000 1.10
+@@ -67,15 +67,11 @@
+ #ifndef _STRING_HXX
+ #include <tools/string.hxx>
+ #endif
+-
+ #endif // __cplusplus
+
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_SALINST_H
+-#include <salinst.h>
+-#endif
+
+ #ifdef __cplusplus
+
+@@ -86,10 +82,19 @@ struct ImplJobSetup;
+ class SalGraphics;
+ class SalFrame;
+ class SalObject;
++class SalSound;
++class SalOpenGL;
++class SalMenu;
++class SalMenuItem;
+ class SalVirtualDevice;
+ class SalInfoPrinter;
+ class SalPrinter;
++class SalTimer;
+ class ImplPrnQueueList;
++class SalI18NImeStatus;
++class SalSystem;
++class SalBitmap;
++struct SalItemParams;
+ class SalSession;
+
+ namespace vos { class IMutex; }
+@@ -100,67 +105,88 @@ namespace vos { class IMutex; }
+
+ class SalInstance
+ {
+- friend SalInstance* CreateSalInstance();
+- friend void DestroySalInstance( SalInstance* );
+-
++public:
++ typedef bool(*Callback)(void*,void*,int);
+ private:
+- SalInstance();
+- ~SalInstance();
+-
+-public: // public for Sal Implementation
+- SalInstanceData maInstData;
+-
+-#ifdef _INCL_SAL_SALINST_IMP
+-#include <salinst.imp>
+-#endif
+-
++ void* m_pEventInst;
++ void* m_pErrorInst;
++ Callback m_pEventCallback;
++ Callback m_pErrorCallback;
++
+ public:
+- // Frame
+- // DisplayName for Unix ???
+- SalFrame* CreateChildFrame( SystemParentData* pParent, ULONG nStyle );
+- SalFrame* CreateFrame( SalFrame* pParent, ULONG nStyle );
+- void DestroyFrame( SalFrame* pFrame );
+-
+- // Object (System Child Window)
+- SalObject* CreateObject( SalFrame* pParent );
+- void DestroyObject( SalObject* pObject );
+-
+- // VirtualDevice
+- // nDX and nDY in Pixeln
+- // nBitCount: 0 == Default / 1 == Mono
+- SalVirtualDevice* CreateVirtualDevice( SalGraphics* pGraphics,
+- long nDX, long nDY,
+- USHORT nBitCount );
+- void DestroyVirtualDevice( SalVirtualDevice* pDevice );
+-
+- // Printer
+- // pSetupData->mpDriverData can be 0
+- // pSetupData must be updatet with the current
+- // JobSetup
+- SalInfoPrinter* CreateInfoPrinter( SalPrinterQueueInfo* pQueueInfo,
+- ImplJobSetup* pSetupData );
+- void DestroyInfoPrinter( SalInfoPrinter* pPrinter );
+- SalPrinter* CreatePrinter( SalInfoPrinter* pInfoPrinter );
+- void DestroyPrinter( SalPrinter* pPrinter );
+-
+- void GetPrinterQueueInfo( ImplPrnQueueList* pList );
+- void GetPrinterQueueState( SalPrinterQueueInfo* pInfo );
+- void DeletePrinterQueueInfo( SalPrinterQueueInfo* pInfo );
+- XubString GetDefaultPrinter();
++ SalInstance() :
++ m_pEventInst( NULL ),
++ m_pErrorInst( NULL ),
++ m_pEventCallback( NULL ),
++ m_pErrorCallback( NULL )
++ {}
++ virtual ~SalInstance();
++
++ // Frame
++ // DisplayName for Unix ???
++ virtual SalFrame* CreateChildFrame( SystemParentData* pParent, ULONG nStyle ) = 0;
++ virtual SalFrame* CreateFrame( SalFrame* pParent, ULONG nStyle ) = 0;
++ virtual void DestroyFrame( SalFrame* pFrame ) = 0;
++
++ // Object (System Child Window)
++ virtual SalObject* CreateObject( SalFrame* pParent ) = 0;
++ virtual void DestroyObject( SalObject* pObject ) = 0;
++
++ // VirtualDevice
++ // nDX and nDY in Pixel
++ // nBitCount: 0 == Default(=as window) / 1 == Mono
++ virtual SalVirtualDevice* CreateVirtualDevice( SalGraphics* pGraphics,
++ long nDX, long nDY,
++ USHORT nBitCount ) = 0;
++ virtual void DestroyVirtualDevice( SalVirtualDevice* pDevice ) = 0;
++
++ // Printer
++ // pSetupData->mpDriverData can be 0
++ // pSetupData must be updatet with the current
++ // JobSetup
++ virtual SalInfoPrinter* CreateInfoPrinter( SalPrinterQueueInfo* pQueueInfo,
++ ImplJobSetup* pSetupData ) = 0;
++ virtual void DestroyInfoPrinter( SalInfoPrinter* pPrinter ) = 0;
++ virtual SalPrinter* CreatePrinter( SalInfoPrinter* pInfoPrinter ) = 0;
++ virtual void DestroyPrinter( SalPrinter* pPrinter ) = 0;
++
++ virtual void GetPrinterQueueInfo( ImplPrnQueueList* pList ) = 0;
++ virtual void GetPrinterQueueState( SalPrinterQueueInfo* pInfo ) = 0;
++ virtual void DeletePrinterQueueInfo( SalPrinterQueueInfo* pInfo ) = 0;
++ virtual String GetDefaultPrinter() = 0;
++
++ // SalSound
++ virtual SalSound* CreateSalSound() = 0;
++ // SalTimer
++ virtual SalTimer* CreateSalTimer() = 0;
++ // SalOpenGL
++ virtual SalOpenGL* CreateSalOpenGL( SalGraphics* pGraphics ) = 0;
++ // SalI18NImeStatus
++ virtual SalI18NImeStatus* CreateI18NImeStatus() = 0;
++ // SalSystem
++ virtual SalSystem* CreateSalSystem() = 0;
++ // SalBitmap
++ virtual SalBitmap* CreateSalBitmap() = 0;
++
++ // YieldMutex
++ virtual vos::IMutex* GetYieldMutex() = 0;
++ virtual ULONG ReleaseYieldMutex() = 0;
++ virtual void AcquireYieldMutex( ULONG nCount ) = 0;
++
++ // wait next event and dispatch
++ // must returned by UserEvent (SalFrame::PostEvent)
++ // and timer
++ virtual void Yield( BOOL bWait ) = 0;
++ virtual bool AnyInput( USHORT nType ) = 0;
++
++ // Menues
++ virtual SalMenu* CreateMenu( BOOL bMenuBar ) = 0;
++ virtual void DestroyMenu( SalMenu* pMenu) = 0;
++ virtual SalMenuItem* CreateMenuItem( const SalItemParams* pItemData ) = 0;
++ virtual void DestroyMenuItem( SalMenuItem* pItem ) = 0;
+
+ // may return NULL to disable session management
+- SalSession* CreateSalSession();
+-
+- // YieldMutex
+- vos::IMutex* GetYieldMutex();
+- ULONG ReleaseYieldMutex();
+- void AcquireYieldMutex( ULONG nCount );
+-
+- // wait next event and dispatch
+- // must returned by UserEvent (SalFrame::PostEvent)
+- // and timer
+- void Yield( BOOL bWait );
+- static BOOL AnyInput( USHORT nType );
++ virtual SalSession* CreateSalSession() = 0;
+
+ // methods for XDisplayConnection
+
+@@ -168,11 +194,21 @@ public:
+ // void* pInst: pInstance form the SetCallback call
+ // void* pEvent: address of the system specific event structure
+ // int nBytes: length of the system specific event structure
+- void SetEventCallback( void* pInstance, bool(*pCallback)(void*,void*,int));
+- void SetErrorEventCallback( void* pInstance, bool(*pCallback)(void*,void*,int));
++ void SetEventCallback( void* pInstance, Callback pCallback )
++ { m_pEventInst = pInstance; m_pEventCallback = pCallback; }
++ Callback GetEventCallback() const
++ { return m_pEventCallback; }
++ bool CallEventCallback( void* pEvent, int nBytes )
++ { return m_pEventCallback ? m_pEventCallback( m_pEventInst, pEvent, nBytes ) : false; }
++ void SetErrorEventCallback( void* pInstance, Callback pCallback )
++ { m_pErrorInst = pInstance; m_pErrorCallback = pCallback; }
++ Callback GetErrorEventCallback() const
++ { return m_pErrorCallback; }
++ bool CallErrorCallback( void* pEvent, int nBytes )
++ { return m_pErrorCallback ? m_pErrorCallback( m_pErrorInst, pEvent, nBytes ) : false; }
+
+ enum ConnectionIdentifierType { AsciiCString, Blob };
+- void* GetConnectionIdentifier( ConnectionIdentifierType& rReturnedType, int& rReturnedBytes );
++ virtual void* GetConnectionIdentifier( ConnectionIdentifierType& rReturnedType, int& rReturnedBytes ) = 0;
+ };
+
+ // called from SVMain
+@@ -185,6 +221,8 @@ void DestroySalInstance( SalInstance* pI
+
+ void SalAbort( const XubString& rErrorText );
+
++const ::rtl::OUString& SalGetDesktopEnvironment();
++
+ #endif // __cplusplus
+
+ // -----------
+@@ -193,7 +231,6 @@ void SalAbort( const XubString& rErrorTe
+
+ void InitSalData(); // called from Application-Ctor
+ void DeInitSalData(); // called from Application-Dtor
+-void SetFilterCallback( void* pCallback, void* pInst );
+
+ void InitSalMain();
+ void DeInitSalMain();
+Index: vcl/inc/sallayout.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/sallayout.hxx,v
+retrieving revision 1.31.68.1
+retrieving revision 1.36
+diff -u -p -u -r1.31.68.1 -r1.36
+--- vcl/inc/sallayout.hxx 9 Jan 2004 18:13:41 -0000 1.31.68.1
++++ vcl/inc/sallayout.hxx 17 Jun 2004 12:07:38 -0000 1.36
+@@ -63,10 +63,10 @@
+ #define _SV_SALLAYOUT_HXX
+
+ #ifndef _SV_GEN_HXX
+-#include <gen.hxx>
+-#endif // _SV_GEN_HXX
+-#ifndef _SV_POLY_HXX
+-#include <poly.hxx>
++#include <tools/gen.hxx>
++#endif
++#ifndef _TL_POLY_HXX
++#include <tools/poly.hxx>
+ #endif
+
+ #ifndef _TOOLS_LANG_HXX
+@@ -76,11 +76,6 @@ typedef unsigned short LanguageType;
+ #include <vector>
+ #include <list>
+
+-#ifdef REMOTE_APPSERVER
+-// TODO: better solution: derive ImpServerGraphics from SalGraphics
+-#define SalGraphics ImplServerGraphics
+-#endif
+-
+ class SalGraphics;
+ struct ImplFontData;
+
+@@ -113,7 +108,7 @@ private:
+ std::vector<int> maRuns;
+
+ public:
+- ImplLayoutRuns() { mnRunIndex = 0; }
++ ImplLayoutRuns() { mnRunIndex = 0; maRuns.reserve(8); }
+
+ void Clear() { maRuns.clear(); }
+ bool AddPos( int nCharPos, bool bRTL );
+@@ -140,7 +135,7 @@ public:
+ const xub_Unicode* mpStr;
+
+ // positioning related inputs
+- const long* mpDXArray; // in pixel units
++ const sal_Int32* mpDXArray; // in pixel units
+ long mnLayoutWidth; // in pixel units
+ int mnOrientation; // in 0-3600 system
+
+@@ -153,7 +148,7 @@ public:
+ int nMinCharPos, int nEndCharPos, int nFlags );
+
+ void SetLayoutWidth( long nWidth ) { mnLayoutWidth = nWidth; }
+- void SetDXArray( const long* pDXArray ) { mpDXArray = pDXArray; }
++ void SetDXArray( const sal_Int32* pDXArray ) { mpDXArray = pDXArray; }
+ void SetOrientation( int nOrientation ) { mnOrientation = nOrientation; }
+
+ void ResetPos()
+@@ -220,13 +215,13 @@ public:
+
+ // methods using string indexing
+ virtual int GetTextBreak( long nMaxWidth, long nCharExtra=0, int nFactor=1 ) const = 0;
+- virtual long FillDXArray( long* pDXArray ) const = 0;
++ virtual long FillDXArray( sal_Int32* pDXArray ) const = 0;
+ virtual long GetTextWidth() const { return FillDXArray( NULL ); }
+- virtual void GetCaretPositions( int nArraySize, long* pCaretXArray ) const = 0;
++ virtual void GetCaretPositions( int nArraySize, sal_Int32* pCaretXArray ) const = 0;
+
+ // methods using glyph indexing
+- virtual int GetNextGlyphs( int nLen, long* pGlyphIdxAry, Point& rPos, int&,
+- long* pGlyphAdvAry = NULL, int* pCharPosAry = NULL ) const = 0;
++ virtual int GetNextGlyphs( int nLen, sal_Int32* pGlyphIdxAry, Point& rPos, int&,
++ sal_Int32* pGlyphAdvAry = NULL, int* pCharPosAry = NULL ) const = 0;
+ virtual bool GetOutline( SalGraphics&, PolyPolyVector& ) const;
+ virtual bool GetBoundRect( SalGraphics&, Rectangle& ) const;
+
+@@ -280,10 +275,10 @@ class MultiSalLayout : public SalLayout
+ public:
+ virtual void DrawText( SalGraphics& ) const;
+ virtual int GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const;
+- virtual long FillDXArray( long* pDXArray ) const;
+- virtual void GetCaretPositions( int nArraySize, long* pCaretXArray ) const;
+- virtual int GetNextGlyphs( int nLen, long* pGlyphIdxAry, Point& rPos,
+- int&, long* pGlyphAdvAry, int* pCharPosAry ) const;
++ virtual long FillDXArray( sal_Int32* pDXArray ) const;
++ virtual void GetCaretPositions( int nArraySize, sal_Int32* pCaretXArray ) const;
++ virtual int GetNextGlyphs( int nLen, sal_Int32* pGlyphIdxAry, Point& rPos,
++ int&, sal_Int32* pGlyphAdvAry, int* pCharPosAry ) const;
+ virtual bool GetOutline( SalGraphics&, PolyPolyVector& ) const;
+ virtual bool GetBoundRect( SalGraphics&, Rectangle& ) const;
+
+@@ -364,13 +359,13 @@ public:
+
+ // used by upper layers
+ virtual long GetTextWidth() const;
+- virtual long FillDXArray( long* pDXArray ) const;
++ virtual long FillDXArray( sal_Int32* pDXArray ) const;
+ virtual int GetTextBreak( long nMaxWidth, long nCharExtra, int nFactor ) const;
+- virtual void GetCaretPositions( int nArraySize, long* pCaretXArray ) const;
++ virtual void GetCaretPositions( int nArraySize, sal_Int32* pCaretXArray ) const;
+
+ // used by display layers
+- virtual int GetNextGlyphs( int nLen, long* pGlyphIdxAry, Point& rPos, int&,
+- long* pGlyphAdvAry = NULL, int* pCharPosAry = NULL ) const;
++ virtual int GetNextGlyphs( int nLen, sal_Int32* pGlyphIdxAry, Point& rPos, int&,
++ sal_Int32* pGlyphAdvAry = NULL, int* pCharPosAry = NULL ) const;
+
+ protected:
+ GenericSalLayout();
+@@ -381,7 +376,7 @@ protected:
+ virtual void DropGlyph( int nStart );
+ virtual void Simplify( bool bIsBase );
+
+- bool GetCharWidths( long* pCharWidths ) const;
++ bool GetCharWidths( sal_Int32* pCharWidths ) const;
+
+ private:
+ GlyphItem* mpGlyphItems; // TODO: change to GlyphList
+Index: vcl/inc/salmenu.hxx
+===================================================================
+RCS file: vcl/inc/salmenu.hxx
+diff -N vcl/inc/salmenu.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/salmenu.hxx 7 Jan 2004 09:17:01 -0000 1.4
+@@ -0,0 +1,122 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * 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): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_SALMENU_HXX
++#define _SV_SALMENU_HXX
++
++#ifndef _SV_SV_H
++#include <sv.h>
++#endif
++#ifndef _SV_MENU_HXX
++#include <menu.hxx>
++#endif
++#ifndef _SV_KEYCODE_HXX
++#include <keycod.hxx>
++#endif
++#ifndef _SV_IMAGE_HXX
++#include <image.hxx>
++#endif
++
++struct SystemMenuData;
++class SalFrame;
++
++struct SalItemParams
++{
++ USHORT nId; // item Id
++ MenuItemType eType; // MenuItem-Type
++ MenuItemBits nBits; // MenuItem-Bits
++ Menu* pMenu; // Pointer to Menu
++ XubString aText; // Menu-Text
++ Image aImage; // Image
++};
++
++
++class SalMenuItem
++{
++public:
++ SalMenuItem() {}
++ virtual ~SalMenuItem();
++};
++
++class SalMenu
++{
++public:
++ SalMenu() {}
++ virtual ~SalMenu();
++
++ virtual BOOL VisibleMenuBar() = 0; // must return TRUE to actually DISPLAY native menu bars
++ // otherwise only menu messages are processed (eg, OLE on Windows)
++
++ virtual void InsertItem( SalMenuItem* pSalMenuItem, unsigned nPos ) = 0;
++ virtual void RemoveItem( unsigned nPos ) = 0;
++ virtual void SetSubMenu( SalMenuItem* pSalMenuItem, SalMenu* pSubMenu, unsigned nPos ) = 0;
++ virtual void SetFrame( const SalFrame* pFrame ) = 0;
++ virtual void CheckItem( unsigned nPos, BOOL bCheck ) = 0;
++ virtual void EnableItem( unsigned nPos, BOOL bEnable ) = 0;
++ virtual void SetItemText( unsigned nPos, SalMenuItem* pSalMenuItem, const XubString& rText )= 0;
++ virtual void SetItemImage( unsigned nPos, SalMenuItem* pSalMenuItem, const Image& rImage ) = 0;
++ virtual void SetAccelerator( unsigned nPos, SalMenuItem* pSalMenuItem, const KeyCode& rKeyCode, const XubString& rKeyName ) = 0;
++ virtual void GetSystemMenuData( SystemMenuData* pData ) = 0;
++};
++
++
++#endif // _SV_SALMENU_HXX
++
+Index: vcl/inc/salnativewidgets.hxx
+===================================================================
+RCS file: vcl/inc/salnativewidgets.hxx
+diff -N vcl/inc/salnativewidgets.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/salnativewidgets.hxx 10 May 2004 15:42:51 -0000 1.2
+@@ -0,0 +1,367 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * 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): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_NATIVEWIDGETS_HXX
++#define _SV_NATIVEWIDGETS_HXX
++
++#ifndef _RTL_USTRING_HXX_
++#include <rtl/ustring.hxx>
++#endif
++
++/* Control Types:
++ *
++ * Specify the overall, whole control
++ * type (as opposed to parts of the
++ * control if it were composite).
++ */
++
++typedef sal_uInt32 ControlType;
++
++// Normal PushButton/Command Button
++#define CTRL_PUSHBUTTON 1
++
++// Normal single radio button
++#define CTRL_RADIOBUTTON 2
++
++// Normal single checkbox
++#define CTRL_CHECKBOX 10
++
++// Combobox, i.e. a ListBox
++// that allows data entry by user
++#define CTRL_COMBOBOX 20
++
++// Control that allows text entry
++#define CTRL_EDITBOX 30
++
++// Control that allows text entry, but without the usual border
++// Has to be handled separately, because this one cannot handle
++// HAS_BACKGROUND_TEXTURE, which is drawn in the edit box'es
++// border window.
++#define CTRL_EDITBOX_NOBORDER 31
++
++// Control that pops up a menu,
++// but does NOT allow data entry
++#define CTRL_LISTBOX 35
++
++// An edit field together with two little
++// buttons on the side (aka spin field)
++#define CTRL_SPINBOX 40
++
++// Two standalone spin buttons
++// without an edit field
++#define CTRL_SPINBUTTONS 45
++
++// A single tab
++#define CTRL_TAB_ITEM 50
++
++// The border around a tab area,
++// but without the tabs themselves.
++// May have a gap at the top for
++// the active tab
++#define CTRL_TAB_PANE 55
++
++// Background of a Tab Pane
++#define CTRL_TAB_BODY 56
++
++// Normal scrollbar, including
++// all parts like slider, buttons
++#define CTRL_SCROLLBAR 60
++
++// Border around a group of related
++// items, perhaps also displaying
++// a label of identification
++#define CTRL_GROUPBOX 70
++
++// A separator line
++#define CTRL_FIXEDLINE 80
++
++// A rectangular border, like a
++// Tab Pane, but without the
++// possible gap for a tab
++#define CTRL_FIXEDBORDER 90
++
++
++
++/* Control Parts:
++ *
++ * Uniquely identify a part of a control,
++ * for example the slider of a scroll bar.
++ */
++
++typedef sal_uInt32 ControlPart;
++
++#define PART_ENTIRE_CONTROL 1
++#define PART_WINDOW 5 // the static listbox window containing the list
++#define PART_BUTTON 100
++#define PART_BUTTON_UP 101
++#define PART_BUTTON_DOWN 102 // Also for ComboBoxes/ListBoxes
++#define PART_BUTTON_LEFT 103
++#define PART_BUTTON_RIGHT 104
++#define PART_ALL_BUTTONS 105
++#define PART_TRACK_HORZ_LEFT 200
++#define PART_TRACK_VERT_UPPER 201
++#define PART_TRACK_HORZ_RIGHT 202
++#define PART_TRACK_VERT_LOWER 203
++#define PART_THUMB_HORZ 210
++#define PART_THUMB_VERT 211
++
++/** The edit field part of a control, e.g. of the combo box.
++
++ Currently used just for combo boxes and just for GetNativeControlRegion().
++ It is valid only if GetNativeControlRegion() supports PART_BUTTON_DOWN as
++ well.
++*/
++#define PART_SUB_EDIT 300
++
++// For controls that require the entire background
++// to be drawn first, and then other pieces over top.
++// (GTK+ scrollbars for example). Control region passed
++// in to draw this part is expected to be the entire
++// area of the control.
++// A control may respond to one or both.
++#define PART_DRAW_BACKGROUND_HORZ 1000
++#define PART_DRAW_BACKGROUND_VERT 1001
++
++// GTK+ also draws tabs right->left since there is a
++// hardcoded 2 pixel overlap between adjacent tabs
++#define PART_TABS_DRAW_RTL 3000
++
++// For themes that do not want to have the focus
++// rectangle part drawn by VCL but take care of the
++// whole inner control part by themselves
++// eg, listboxes or comboboxes or spinbuttons
++#define HAS_BACKGROUND_TEXTURE 4000
++
++// For scrollbars that have 3 buttons (most KDE themes)
++#define HAS_THREE_BUTTONS 5000
++
++/* Control State:
++ *
++ * Specify how a particular part of the control
++ * is to be drawn. Constants are bitwise OR-ed
++ * together to compose a final drawing state.
++ * A _disabled_ state is assumed by the drawing
++ * functions until an ENABLED or HIDDEN is passed
++ * in the ControlState.
++ */
++
++typedef sal_uInt32 ControlState;
++
++#define CTRL_STATE_ENABLED 0x0001
++#define CTRL_STATE_FOCUSED 0x0002
++#define CTRL_STATE_PRESSED 0x0004
++#define CTRL_STATE_ROLLOVER 0x0008
++#define CTRL_STATE_HIDDEN 0x0010
++#define CTRL_STATE_DEFAULT 0x0020
++#define CTRL_STATE_SELECTED 0x0040
++#define CTRL_CACHING_ALLOWED 0x8000 // set when the control is completely visible (i.e. not clipped)
++
++/* ButtonValue:
++ *
++ * Identifies the tri-state value options
++ * that buttons allow
++ */
++
++enum ButtonValue {
++ BUTTONVALUE_DONTKNOW,
++ BUTTONVALUE_ON,
++ BUTTONVALUE_OFF,
++ BUTTONVALUE_MIXED
++};
++
++
++#ifdef __cplusplus
++
++
++/* ScrollbarValue:
++ *
++ * Value container for scrollbars.
++ */
++class ScrollbarValue
++{
++ public:
++ long mnMin;
++ long mnMax;
++ long mnCur;
++ long mnVisibleSize;
++ Rectangle maThumbRect;
++ Rectangle maButton1Rect;
++ Rectangle maButton2Rect;
++ ControlState mnButton1State;
++ ControlState mnButton2State;
++ ControlState mnThumbState;
++ ControlState mnPage1State;
++ ControlState mnPage2State;
++
++ inline ScrollbarValue()
++ {
++ mnMin = 0; mnMax = 0; mnCur = 0; mnVisibleSize = 0;
++ mnButton1State = 0; mnButton2State = 0;
++ mnThumbState = 0; mnPage1State = 0; mnPage2State = 0;
++ };
++ inline ~ScrollbarValue() {};
++};
++
++/* TabitemValue:
++ *
++ * Value container for tabitems.
++ */
++
++/* TABITEM constants are OR-ed together */
++#define TABITEM_NOTALIGNED 0x000 // the tabitem is an inner item
++#define TABITEM_LEFTALIGNED 0x001 // the tabitem is aligned with the left border of the TabControl
++#define TABITEM_RIGHTALIGNED 0x002 // the tabitem is aligned with the right border of the TabControl
++#define TABITEM_FIRST_IN_GROUP 0x004 // the tabitem is the first in group of tabitems
++#define TABITEM_LAST_IN_GROUP 0x008 // the tabitem is the last in group of tabitems
++
++class TabitemValue
++{
++ public:
++ unsigned int mnAlignment;
++
++ inline TabitemValue()
++ {
++ mnAlignment = 0;
++ };
++ inline ~TabitemValue() {};
++
++ BOOL isLeftAligned() { return (mnAlignment & TABITEM_LEFTALIGNED) != 0; }
++ BOOL isRightAligned() { return (mnAlignment & TABITEM_RIGHTALIGNED) != 0; }
++ BOOL isBothAligned() { return isLeftAligned() && isRightAligned(); }
++ BOOL isNotAligned() { return (mnAlignment & (TABITEM_LEFTALIGNED | TABITEM_RIGHTALIGNED)) == 0; }
++ BOOL isFirst() { return (mnAlignment & TABITEM_FIRST_IN_GROUP) != 0; }
++ BOOL isLast() { return (mnAlignment & TABITEM_LAST_IN_GROUP) != 0; }
++};
++
++
++/* SpinbuttonValue:
++ *
++ * Value container for spinbuttons to paint both buttons at once.
++ * Note: the other parameters of DrawNativeControl will have no meaning
++ * all parameters for spinbuttons are carried here
++ */
++class SpinbuttonValue
++{
++ public:
++ Rectangle maUpperRect;
++ Rectangle maLowerRect;
++ ControlState mnUpperState;
++ ControlState mnLowerState;
++ int mnUpperPart;
++ int mnLowerPart;
++
++ inline SpinbuttonValue()
++ {
++ mnUpperState = mnLowerState = 0;
++ };
++ inline ~SpinbuttonValue() {};
++};
++
++/* ImplControlValue:
++ *
++ * Generic value container for all control parts.
++ */
++
++class ImplControlValue
++{
++ friend class SalFrame;
++
++ private:
++ ButtonValue mTristate; // Tristate value: on, off, mixed
++ rtl::OUString mString; // string value
++ long mNumber; // numeric value
++ void * mOptionalVal; // optional control-specific value
++
++ public:
++ inline ImplControlValue( ButtonValue nTristate, rtl::OUString sString, long nNumeric, void * aOptVal ) \
++ { mTristate = nTristate; mString = sString; mNumber = nNumeric; mOptionalVal = aOptVal; };
++ inline ImplControlValue( ButtonValue nTristate, rtl::OUString sString, long nNumeric ) \
++ { mTristate = nTristate; mString = sString; mNumber = nNumeric; mOptionalVal = NULL; };
++ inline ImplControlValue( ButtonValue nTristate ) { mTristate = nTristate; mOptionalVal = NULL; };
++ inline ImplControlValue( rtl::OUString sString ) { mString = sString; mOptionalVal = NULL; };
++ inline ImplControlValue( long nNumeric ) { mNumber = nNumeric; mOptionalVal = NULL; };
++ inline ImplControlValue( void * aOptVal ) { mOptionalVal = aOptVal; };
++ inline ImplControlValue() { mTristate = BUTTONVALUE_DONTKNOW; mNumber = 0; mOptionalVal = NULL; };
++ inline ~ImplControlValue() { mOptionalVal = NULL; };
++
++ inline ButtonValue getTristateVal( void ) const { return mTristate; }
++ inline void setTristateVal( ButtonValue nTristate ) { mTristate = nTristate; }
++
++ inline const rtl::OUString& getStringVal( void ) const { return mString; }
++ inline void setStringVal( rtl::OUString sString ) { mString = sString; }
++
++ inline long getNumericVal( void ) const { return mNumber; }
++ inline void setNumericVal( long nNumeric ) { mNumber = nNumeric; }
++
++ inline void * getOptionalVal( void ) const { return mOptionalVal; }
++ inline void setOptionalVal( void * aOptVal ) { mOptionalVal = aOptVal; }
++};
++
++#endif /* __cplusplus */
++
++#endif
++
++
++
++
++
++
++
+Index: vcl/inc/salobj.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/salobj.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/salobj.hxx 19 Sep 2000 10:23:06 -0000 1.1.1.1
++++ vcl/inc/salobj.hxx 18 Nov 2003 14:29:32 -0000 1.2
+@@ -71,9 +71,6 @@
+ #ifndef _SV_SALWTYPE_HXX
+ #include <salwtype.hxx>
+ #endif
+-#ifndef _SV_SALOBJ_H
+-#include <salobj.h>
+-#endif
+
+ struct SystemEnvData;
+
+@@ -91,37 +88,32 @@ struct SystemEnvData;
+
+ class SalObject
+ {
+-public: // public for Sal Implementation
+- SalObject();
+- ~SalObject();
+-
+-public: // public for Sal Implementation
+- SalObjectData maObjectData;
+-
+-#ifdef _INCL_SAL_SALOBJ_IMP
+-#include <salobj.imp>
+-#endif
+-
++ void* m_pInst;
++ SALOBJECTPROC m_pCallback;
+ public:
+- void ResetClipRegion();
+- USHORT GetClipRegionType();
+- void BeginSetClipRegion( ULONG nRects );
+- void UnionClipRegion( long nX, long nY, long nWidth, long nHeight );
+- void EndSetClipRegion();
+-
+- void SetPosSize( long nX, long nY, long nWidth, long nHeight );
+- void Show( BOOL bVisible );
+- void Enable( BOOL nEnable );
+- void GrabFocus();
+-
+- void SetBackground();
+- void SetBackground( SalColor nSalColor );
+-
+- const SystemEnvData* GetSystemData() const;
+-
+- // Callbacks (indepen in \vcl\source\window\winproc.cxx)
+- // for default message handling return 0
+- void SetCallback( void* pInst, SALOBJECTPROC pProc );
++ SalObject() : m_pInst( NULL ), m_pCallback( NULL ) {}
++ virtual ~SalObject();
++
++ virtual void ResetClipRegion() = 0;
++ virtual USHORT GetClipRegionType() = 0;
++ virtual void BeginSetClipRegion( ULONG nRects ) = 0;
++ virtual void UnionClipRegion( long nX, long nY, long nWidth, long nHeight ) = 0;
++ virtual void EndSetClipRegion() = 0;
++
++ virtual void SetPosSize( long nX, long nY, long nWidth, long nHeight ) = 0;
++ virtual void Show( BOOL bVisible ) = 0;
++ virtual void Enable( BOOL nEnable ) = 0;
++ virtual void GrabFocus() = 0;
++
++ virtual void SetBackground() = 0;
++ virtual void SetBackground( SalColor nSalColor ) = 0;
++
++ virtual const SystemEnvData* GetSystemData() const = 0;
++
++ void SetCallback( void* pInst, SALOBJECTPROC pProc )
++ { m_pInst = pInst; m_pCallback = pProc; }
++ long CallCallback( USHORT nEvent, const void* pEvent )
++ { return m_pCallback ? m_pCallback( m_pInst, this, nEvent, pEvent ) : 0; }
+ };
+
+ #endif // _SV_SALOBJ_HXX
+Index: vcl/inc/salogl.hxx
+===================================================================
+RCS file: vcl/inc/salogl.hxx
+diff -N vcl/inc/salogl.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/salogl.hxx 18 Nov 2003 14:29:40 -0000 1.2
+@@ -0,0 +1,109 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * 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): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_SALOGL_HXX
++#define _SV_SALOGL_HXX
++
++#define _OPENGL_EXT
++
++#ifndef _GEN_HXX
++#include <tools/gen.hxx>
++#endif
++
++#define _SVUNX_H
++
++#ifndef _SV_SV_H
++#include <sv.h>
++#endif
++#ifndef _SV_SALOTYPE_HXX
++#include <salotype.hxx>
++#endif
++
++// -----------------
++// - State defines -
++// -----------------
++
++#define OGL_STATE_UNLOADED (0x00000000)
++#define OGL_STATE_INVALID (0x00000001)
++#define OGL_STATE_VALID (0x00000002)
++
++// -------------
++// - SalOpenGL -
++// -------------
++
++class SalGraphics;
++
++class SalOpenGL
++{
++public:
++
++ SalOpenGL() {}
++ virtual ~SalOpenGL();
++
++ virtual bool IsValid() = 0;
++ virtual void* GetOGLFnc( const char * ) = 0;
++ virtual void OGLEntry( SalGraphics* pGraphics ) = 0;
++ virtual void OGLExit( SalGraphics* pGraphics ) = 0;
++ virtual void StartScene( SalGraphics* pGraphics ) = 0;
++ virtual void StopScene() = 0;
++};
++
++#endif
+Index: vcl/inc/salprn.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/salprn.hxx,v
+retrieving revision 1.4
+retrieving revision 1.5
+diff -u -p -u -r1.4 -r1.5
+--- vcl/inc/salprn.hxx 20 Nov 2002 12:03:33 -0000 1.4
++++ vcl/inc/salprn.hxx 18 Nov 2003 14:29:49 -0000 1.5
+@@ -69,9 +69,6 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_SALPRN_H
+-#include <salprn.h>
+-#endif
+ #ifndef _SV_PRNTYPES_HXX
+ #include <prntypes.hxx>
+ #endif
+@@ -107,49 +104,39 @@ struct SalPrinterQueueInfo
+
+ class SalInfoPrinter
+ {
+- friend class SalInstance;
+-
+ public:
+ std::vector< vcl::PaperInfo > m_aPaperFormats; // all printer supported formats
+ bool m_bPapersInit; // set to true after InitPaperFormats
++
++ SalInfoPrinter() {}
++ virtual ~SalInfoPrinter();
+
+- SalInfoPrinter();
+- ~SalInfoPrinter();
+-
+-public: // public for Sal Implementation
+- SalInfoPrinterData maPrinterData;
+-
+-#ifdef _INCL_SAL_SALIPRN_IMP
+-#include <saliprn.imp>
+-#endif
+-
+-public:
+ // SalGraphics or NULL, but two Graphics for all SalFrames
+ // must be returned
+- SalGraphics* GetGraphics();
+- void ReleaseGraphics( SalGraphics* pGraphics );
++ virtual SalGraphics* GetGraphics() = 0;
++ virtual void ReleaseGraphics( SalGraphics* pGraphics ) = 0;
+
+- BOOL Setup( SalFrame* pFrame, ImplJobSetup* pSetupData );
+- // This function set the driver data and
+- // set the new indepen data in pSetupData
+- BOOL SetPrinterData( ImplJobSetup* pSetupData );
+- // This function merged the indepen driver data
+- // and set the new indepen data in pSetupData
+- // Only the data must changed, where the bit
+- // in nFlags is set
+- BOOL SetData( ULONG nFlags, ImplJobSetup* pSetupData );
+-
+- void GetPageInfo( const ImplJobSetup* pSetupData,
+- long& rOutWidth, long& rOutHeight,
+- long& rPageOffX, long& rPageOffY,
+- long& rPageWidth, long& rPageHeight );
+- ULONG GetCapabilities( const ImplJobSetup* pSetupData, USHORT nType );
+- ULONG GetPaperBinCount( const ImplJobSetup* pSetupData );
+- XubString GetPaperBinName( const ImplJobSetup* pSetupData, ULONG nPaperBin );
++ virtual BOOL Setup( SalFrame* pFrame, ImplJobSetup* pSetupData ) = 0;
++ // This function set the driver data and
++ // set the new indepen data in pSetupData
++ virtual BOOL SetPrinterData( ImplJobSetup* pSetupData ) = 0;
++ // This function merged the indepen driver data
++ // and set the new indepen data in pSetupData
++ // Only the data must changed, where the bit
++ // in nFlags is set
++ virtual BOOL SetData( ULONG nFlags, ImplJobSetup* pSetupData ) = 0;
++
++ virtual void GetPageInfo( const ImplJobSetup* pSetupData,
++ long& rOutWidth, long& rOutHeight,
++ long& rPageOffX, long& rPageOffY,
++ long& rPageWidth, long& rPageHeight ) = 0;
++ virtual ULONG GetCapabilities( const ImplJobSetup* pSetupData, USHORT nType ) = 0;
++ virtual ULONG GetPaperBinCount( const ImplJobSetup* pSetupData ) = 0;
++ virtual String GetPaperBinName( const ImplJobSetup* pSetupData, ULONG nPaperBin ) = 0;
+ // fills m_aPaperFormats and sets m_bPapersInit to true
+- void InitPaperFormats( const ImplJobSetup* pSetupData );
++ virtual void InitPaperFormats( const ImplJobSetup* pSetupData ) = 0;
+ // returns angle that a landscape page will be turned counterclockwise wrt to portrait
+- int GetLandscapeAngle( const ImplJobSetup* pSetupData );
++ virtual int GetLandscapeAngle( const ImplJobSetup* pSetupData ) = 0;
+ };
+
+
+@@ -159,30 +146,20 @@ public:
+
+ class SalPrinter
+ {
+- friend class SalInstance;
+-
+-private:
+- SalPrinter();
+- ~SalPrinter();
+-
+ public: // public for Sal Implementation
+- SalPrinterData maPrinterData;
++ SalPrinter() {}
++ virtual ~SalPrinter();
+
+-#ifdef _INCL_SAL_SALPRN_IMP
+-#include <salprn.imp>
+-#endif
+-
+-public:
+- BOOL StartJob( const XubString* pFileName,
+- const XubString& rJobName,
+- const XubString& rAppName,
+- ULONG nCopies, BOOL bCollate,
+- ImplJobSetup* pSetupData );
+- BOOL EndJob();
+- BOOL AbortJob();
+- SalGraphics* StartPage( ImplJobSetup* pSetupData, BOOL bNewJobData );
+- BOOL EndPage();
+- ULONG GetErrorCode();
++ virtual BOOL StartJob( const XubString* pFileName,
++ const XubString& rJobName,
++ const XubString& rAppName,
++ ULONG nCopies, BOOL bCollate,
++ ImplJobSetup* pSetupData ) = 0;
++ virtual BOOL EndJob() = 0;
++ virtual BOOL AbortJob() = 0;
++ virtual SalGraphics* StartPage( ImplJobSetup* pSetupData, BOOL bNewJobData ) = 0;
++ virtual BOOL EndPage() = 0;
++ virtual ULONG GetErrorCode() = 0;
+ };
+
+ #endif // _SV_SALPRN_HXX
+
+Index: vcl/inc/salsound.hxx
+===================================================================
+RCS file: vcl/inc/salsound.hxx
+diff -N vcl/inc/salsound.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/salsound.hxx 18 Nov 2003 14:29:57 -0000 1.2
+@@ -0,0 +1,119 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * 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): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_SALSOUND_HXX
++#define _SV_SALSOUND_HXX
++
++#ifndef _GEN_HXX
++#include <tools/gen.hxx>
++#endif
++#ifndef _SV_SV_H
++#include <sv.h>
++#endif
++#ifndef _STRING_HXX
++#include <tools/string.hxx>
++#endif
++#ifndef _SV_SALSTYPE_HXX
++#include <salstype.hxx>
++#endif
++
++class SalSound
++{
++ // for notification
++ void* m_pInst;
++ SALSOUNDPROC m_aPROC;
++public:
++ SalSound() : m_pInst( NULL ), m_aPROC( NULL ) {}
++ virtual ~SalSound();
++
++ // checks whether sound system is ready for input and hence
++ // SalSound can be initialized
++ virtual bool IsValid() = 0;
++ // initialize with sound file name, returns success and // FIXME: rSoundLen ?
++ virtual bool Init( const String& rSoundName,
++ ULONG& rSoundLen ) = 0;
++ // play the sound, start at nStartTime (ms), play for nPlayTime (ms),
++ // loop = true/false
++ virtual void Play( ULONG nStartTime, ULONG nPlayTime, bool bLoop ) = 0;
++ // stop playing
++ virtual void Stop() = 0;
++ // pause playing
++ virtual void Pause() = 0;
++ // continue a paused play
++ virtual void Continue() = 0;
++ // is looping ?
++ virtual bool IsLoopMode() const = 0;
++ // is playing ?
++ virtual bool IsPlaying() const = 0;
++ // is paused ?
++ virtual bool IsPaused() const = 0;
++
++ // register a callback to be called when state changes
++ void SetNotifyProc( void* pInst, SALSOUNDPROC pProc )
++ { m_pInst = pInst; m_aPROC = pProc; }
++ void CallNotifyProc( SoundNotification eNotification, ULONG nError )
++ {
++ if( m_aPROC )
++ m_aPROC( m_pInst, eNotification, nError );
++ }
++};
++
++#endif
+Index: vcl/inc/salsys.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/salsys.hxx,v
+retrieving revision 1.7
+retrieving revision 1.9
+diff -u -p -u -r1.7 -r1.9
+--- vcl/inc/salsys.hxx 20 Nov 2002 15:45:04 -0000 1.7
++++ vcl/inc/salsys.hxx 7 Jan 2004 09:17:24 -0000 1.9
+@@ -65,44 +65,9 @@
+ #ifndef _STRING_HXX
+ #include <tools/string.hxx>
+ #endif
+-#ifndef _LIST_HXX
+-#include <tools/list.hxx>
+-#endif
+-
+-#ifndef _SV_SV_H
+-#include <sv.h>
+-#endif
+-
+-#ifndef _SV_SYSTEM_HXX
+-#include <system.hxx>
+-#endif
+-
+-#include <list>
+-
+-// -------------------
+-// - SalSystem-Types -
+-// -------------------
+-
+-// Must be the same values like in VCLSystemInfo
+-#define SALSYSTEM_GETSYSTEMINFO_STACK ((ULONG)0x00000001)
+-#define SALSYSTEM_GETSYSTEMINFO_MODULES ((ULONG)0x00000002)
+-#define SALSYSTEM_GETSYSTEMINFO_SYSTEMVERSION ((ULONG)0x00000004)
+-#define SALSYSTEM_GETSYSTEMINFO_CPUTYPE ((ULONG)0x00000008)
+-#define SALSYSTEM_GETSYSTEMINFO_MEMORYINFO ((ULONG)0x00000010)
+-#define SALSYSTEM_GETSYSTEMINFO_LOCALVOLUMES ((ULONG)0x00000020)
+-#define SALSYSTEM_GETSYSTEMINFO_SYSTEMDIRS ((ULONG)0x00000040)
+-#define SALSYSTEM_GETSYSTEMINFO_MOUSEINFO ((ULONG)0x00000080)
+-#define SALSYSTEM_GETSYSTEMINFO_GRAPHICSSYSTEM ((ULONG)0x00000100)
+-
+-// -------------
+-// - SalSystem -
+-// -------------
+
+-String GetSalSummarySystemInfos( ULONG nFlags );
+
+-bool GetSalSystemDisplayInfo( System::DisplayInfo& rInfo );
+-
+-/* Button combinations for ImplShowNativeMessageBox
++/* Button combinations for ShowNativeMessageBox
+ */
+ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK = 0;
+ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_OK_CANCEL = 1;
+@@ -111,7 +76,7 @@ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTN
+ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_YES_NO = 4;
+ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTNCOMBI_RETRY_CANCEL = 5;
+
+-/* Button identifier for ImplShowNativeMessageBox
++/* Button identifier for ShowNativeMessageBox
+ */
+ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTN_OK = 1;
+ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTN_CANCEL = 2;
+@@ -121,29 +86,57 @@ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTN
+ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTN_YES = 6;
+ const int SALSYSTEM_SHOWNATIVEMSGBOX_BTN_NO = 7;
+
+-/* Shows a native message box with the specified title, message and button
+- combination.
++
++
++// -------------
++// - SalSystem -
++// -------------
++
++struct DisplayInfo
++{
++ int nWidth, nHeight, nDepth;
++};
++
++
++class SalSystem
++{
++public:
++ SalSystem() {}
++ virtual ~SalSystem();
++
++ // get info about the display
++ virtual bool GetSalSystemDisplayInfo( DisplayInfo& rInfo ) = 0;
++
++
++ /* Shows a native message box with the specified title, message and button
++ combination.
+
+- @param rTitle
+- The title to be shown by the dialog box.
++ @param rTitle
++ The title to be shown by the dialog box.
+
+- @param rMessage
+- The message to be shown by the dialog box.
++ @param rMessage
++ The message to be shown by the dialog box.
+
+- @param nButtonCombination
+- Specify which button combination the message box should display.
+- See button combinations above.
++ @param nButtonCombination
++ Specify which button combination the message box should display.
++ See button combinations above.
+
+- @param nDefaultButton
+- Specifies which button has the focus initially.
+- See button identifiers above.
+- The effect of specifying a button that doesn't belong
+- to the specified button combination is undefined.
++ @param nDefaultButton
++ Specifies which button has the focus initially.
++ See button identifiers above.
++ The effect of specifying a button that doesn't belong
++ to the specified button combination is undefined.
+
+- @returns the identifier of the button that was pressed by the user.
+- See button identifier above. If the function fails the
+- return value is 0.
+-*/
+-int ImplShowNativeMessageBox(const String& rTitle, const String& rMessage, int nButtonCombination, int nDefaultButton);
++ @returns the identifier of the button that was pressed by the user.
++ See button identifier above. If the function fails the
++ return value is 0.
++ */
++ virtual int ShowNativeMessageBox( const String& rTitle,
++ const String& rMessage,
++ int nButtonCombination,
++ int nDefaultButton) = 0;
++};
++
++SalSystem* ImplGetSalSystem();
+
+ #endif // _SV_SALSYS_HXX
+Index: vcl/inc/saltimer.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/saltimer.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/saltimer.hxx 19 Sep 2000 10:23:06 -0000 1.1.1.1
++++ vcl/inc/saltimer.hxx 18 Nov 2003 14:30:19 -0000 1.2
+@@ -73,15 +73,34 @@
+ // - SalTimer -
+ // ------------
+
++/*
++ * note: there will be only a single instance of SalTimer
++ * SalTimer originally had only static methods, but
++ * this needed to be virtualized for the sal plugin migration
++ */
++
+ class SalTimer
+ {
++ SALTIMERPROC m_pProc;
+ public:
+- // AutoRepeat and Restart
+- static void Start( ULONG nMS );
+- static void Stop();
++ SalTimer() : m_pProc( NULL ) {}
++ virtual ~SalTimer();
++
++ // AutoRepeat and Restart
++ virtual void Start( ULONG nMS ) = 0;
++ virtual void Stop() = 0;
+
+ // Callbacks (indepen in \sv\source\app\timer.cxx)
+- static void SetCallback( SALTIMERPROC pProc );
++ void SetCallback( SALTIMERPROC pProc )
++ {
++ m_pProc = pProc;
++ }
++
++ void CallCallback()
++ {
++ if( m_pProc )
++ m_pProc();
++ }
+ };
+
+ #endif // _SV_SALTIMER_HXX
+Index: vcl/inc/salvd.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/salvd.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/salvd.hxx 19 Sep 2000 10:23:06 -0000 1.1.1.1
++++ vcl/inc/salvd.hxx 18 Nov 2003 14:30:29 -0000 1.2
+@@ -65,9 +65,6 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_SALVD_H
+-#include <salvd.h>
+-#endif
+
+ class SalGraphics;
+
+@@ -77,27 +74,17 @@ class SalGraphics;
+
+ class SalVirtualDevice
+ {
+- friend class SalInstance;
+-
+-private:
+- SalVirtualDevice();
+- ~SalVirtualDevice();
+-
+ public: // public for Sal Implementation
+- SalVirDevData maVirDevData;
+-
+-#ifdef _INCL_SAL_SALVD_IMP
+-#include <salvd.imp>
+-#endif
++ SalVirtualDevice() {}
++ virtual ~SalVirtualDevice();
+
+-public:
+ // SalGraphics or NULL, but two Graphics for all SalVirtualDevices
+ // must be returned
+- SalGraphics* GetGraphics();
+- void ReleaseGraphics( SalGraphics* pGraphics );
++ virtual SalGraphics* GetGraphics() = 0;
++ virtual void ReleaseGraphics( SalGraphics* pGraphics ) = 0;
+
+ // Set new size, without saving the old contents
+- BOOL SetSize( long nNewDX, long nNewDY );
++ virtual BOOL SetSize( long nNewDX, long nNewDY ) = 0;
+ };
+
+ #endif // _SV_SALVD_HXX
+Index: vcl/inc/salwtype.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/salwtype.hxx,v
+retrieving revision 1.11
+retrieving revision 1.12
+diff -u -p -u -r1.11 -r1.12
+--- vcl/inc/salwtype.hxx 27 Mar 2003 17:57:31 -0000 1.11
++++ vcl/inc/salwtype.hxx 18 Nov 2003 14:56:54 -0000 1.12
+@@ -147,7 +147,11 @@ struct ImplFontSelectData;
+ #define SALEVENT_CLOSEPOPUPS ((USHORT)30)
+ #define SALEVENT_EXTERNALKEYINPUT ((USHORT)31)
+ #define SALEVENT_EXTERNALKEYUP ((USHORT)32)
+-#define SALEVENT_COUNT ((USHORT)32)
++#define SALEVENT_MENUCOMMAND ((USHORT)33)
++#define SALEVENT_MENUHIGHLIGHT ((USHORT)34)
++#define SALEVENT_MENUACTIVATE ((USHORT)35)
++#define SALEVENT_MENUDEACTIVATE ((USHORT)36)
++#define SALEVENT_COUNT ((USHORT)36)
+
+ // MOUSELEAVE must send, when the pointer leave the client area and
+ // the mouse is not captured
+@@ -169,6 +173,13 @@ struct SalKeyEvent
+ USHORT mnCode; // SV-KeyCode (KEY_xxx | KEY_SHIFT | KEY_MOD1 | KEY_MOD2)
+ USHORT mnCharCode; // SV-CharCode
+ USHORT mnRepeat; // Repeat-Count (KeyInputs-1)
++};
++
++// MENUEVENT
++struct SalMenuEvent
++{
++ USHORT mnId; // Menu item ID
++ void* mpMenu; // pointer to VCL menu (class Menu)
+ };
+
+ // KEYMODCHANGE
+Index: vcl/inc/scrbar.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/scrbar.hxx,v
+retrieving revision 1.5
+retrieving revision 1.10
+diff -u -p -u -r1.5 -r1.10
+--- vcl/inc/scrbar.hxx 25 Jul 2001 11:39:21 -0000 1.5
++++ vcl/inc/scrbar.hxx 10 May 2004 15:43:03 -0000 1.10
+@@ -69,6 +69,8 @@
+ #include <ctrl.hxx>
+ #endif
+
++class AutoTimer;
++
+ // -------------------
+ // - ScrollBar-Types -
+ // -------------------
+@@ -79,6 +81,7 @@ enum ScrollType { SCROLL_DONTKNOW, SCROL
+ // -------------
+ // - ScrollBar -
+ // -------------
++struct ImplScrollBarData;
+
+ class ScrollBar : public Control
+ {
+@@ -88,7 +91,7 @@ private:
+ Rectangle maPage1Rect;
+ Rectangle maPage2Rect;
+ Rectangle maThumbRect;
+- void* mpDummy;
++ ImplScrollBarData* mpData;
+ long mnStartPos;
+ long mnMouseOff;
+ long mnThumbPixRange;
+@@ -107,14 +110,26 @@ private:
+ ScrollType meDDScrollType;
+ BOOL mbCalcSize;
+ BOOL mbFullDrag;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+ Link maScrollHdl;
+ Link maEndScrollHdl;
++ Rectangle* ImplFindPartRect( const Point& rPt );
+
+-#ifdef _SV_SCRBAR_CXX
+-#include <scrbar.imp>
+-#endif
++ void ImplInit( Window* pParent, WinBits nStyle );
++ void ImplInitStyle( WinBits nStyle );
++ void ImplLoadRes( const ResId& rResId );
++ BOOL ImplUpdateThumbRect( const Rectangle& rOldRect );
++ void ImplUpdateRects( BOOL bUpdate = TRUE );
++ long ImplCalcThumbPos( long nPixPos );
++ long ImplCalcThumbPosPix( long nPos );
++ void ImplCalc( BOOL bUpdate = TRUE );
++ void ImplDraw( USHORT nDrawFlags, OutputDevice* pOutDev );
++ long ImplScroll( long nNewPos, BOOL bCallEndScroll );
++ long ImplDoAction( BOOL bCallEndScroll );
++ void ImplDoMouseAction( const Point& rPos, BOOL bCallAction = TRUE );
++ void ImplInvert();
++ BOOL ImplDrawNative( USHORT nDrawFlags );
++ DECL_LINK( ImplTimerHdl, Timer* );
++ DECL_LINK( ImplAutoTimerHdl, AutoTimer* );
+
+ public:
+ ScrollBar( Window* pParent, WinBits nStyle = WB_VERT );
+@@ -125,9 +140,13 @@ public:
+ virtual void Tracking( const TrackingEvent& rTEvt );
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void Paint( const Rectangle& rRect );
++ virtual void Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, ULONG nFlags );
+ virtual void Resize();
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
++ virtual long PreNotify( NotifyEvent& rNEvt );
++ virtual void GetFocus();
++ virtual void LoseFocus();
+
+ virtual void Scroll();
+ virtual void EndScroll();
+@@ -169,11 +188,9 @@ public:
+
+ class ScrollBarBox : public Window
+ {
+-#ifdef _SV_SCRBAR_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ void ImplInitSettings();
+-#endif
+
+ public:
+ ScrollBarBox( Window* pParent, WinBits nStyle = 0 );
+Index: vcl/inc/settings.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/settings.hxx,v
+retrieving revision 1.19
+retrieving revision 1.23
+diff -u -p -u -r1.19 -r1.23
+--- vcl/inc/settings.hxx 17 Apr 2003 15:16:59 -0000 1.19
++++ vcl/inc/settings.hxx 10 Jun 2004 17:17:43 -0000 1.23
+@@ -69,8 +69,8 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_COLOR_HXX
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
+ #endif
+ #ifndef _SV_FONT_HXX
+ #include <font.hxx>
+@@ -99,10 +99,8 @@ class ImplMachineData
+ {
+ friend class MachineSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+ ImplMachineData();
+ ImplMachineData( const ImplMachineData& rData );
+-#endif
+
+ private:
+ USHORT mnRefCount;
+@@ -161,10 +159,8 @@ class ImplMouseData
+ {
+ friend class MouseSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+ ImplMouseData();
+ ImplMouseData( const ImplMouseData& rData );
+-#endif
+
+ private:
+ USHORT mnRefCount;
+@@ -187,10 +183,6 @@ private:
+ ULONG mnActionDelay;
+ ULONG mnMenuDelay;
+ ULONG mnFollow;
+- ULONG mnDummy1;
+- ULONG mnDummy2;
+- ULONG mnDummy3;
+- ULONG mnDummy4;
+ USHORT mnMiddleButtonAction;
+ USHORT mnAlign1;
+ };
+@@ -324,10 +316,8 @@ class ImplKeyboardData
+ {
+ friend class KeyboardSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+ ImplKeyboardData();
+ ImplKeyboardData( const ImplKeyboardData& rData );
+-#endif
+
+ private:
+ USHORT mnRefCount;
+@@ -378,74 +368,56 @@ class ImplStyleData
+ {
+ friend class StyleSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+ ImplStyleData();
+ ImplStyleData( const ImplStyleData& rData );
+ void SetStandardStyles();
+- void SetStandardWinStyles();
+- void SetStandardOS2Styles();
+- void SetStandardMacStyles();
+- void SetStandardUnixStyles();
+-#endif
+
+ private:
+ USHORT mnRefCount;
+- Color maFaceColor;
+- Color maCheckedColor;
+- Color maLightColor;
+- Color maLightBorderColor;
+- Color maShadowColor;
+- Color maDarkShadowColor;
+- Color maButtonTextColor;
+- Color maRadioCheckTextColor;
+- Color maLabelTextColor;
+- Color maInfoTextColor;
+- Color maWindowColor;
+- Color maWindowTextColor;
+- Color maDialogColor;
+- Color maDialogTextColor;
+- Color maWorkspaceColor;
+- Color maFieldColor;
+- Color maFieldTextColor;
++
++ void* mpStyleData_NotUsedYet;
++
++ Color maActiveBorderColor;
+ Color maActiveColor;
+ Color maActiveColor2;
+ Color maActiveTextColor;
+- Color maActiveBorderColor;
++ Color maButtonTextColor;
++ Color maCheckedColor;
++ Color maDarkShadowColor;
++ Color maDeactiveBorderColor;
+ Color maDeactiveColor;
+ Color maDeactiveColor2;
+ Color maDeactiveTextColor;
+- Color maDeactiveBorderColor;
++ Color maDialogColor;
++ Color maDialogTextColor;
++ Color maDisableColor;
++ Color maFaceColor;
++ Color maFieldColor;
++ Color maFieldTextColor;
++ Color maFontColor;
++ Color maGroupTextColor;
++ Color maHelpColor;
+ Color maHelpTextColor;
+- Color maMenuColor;
+ Color maHighlightColor;
++ Color maHighlightLinkColor;
+ Color maHighlightTextColor;
++ Color maInfoTextColor;
++ Color maLabelTextColor;
++ Color maLightBorderColor;
++ Color maLightColor;
++ Color maLinkColor;
++ Color maMenuBarColor;
++ Color maMenuBorderColor;
++ Color maMenuColor;
+ Color maMenuHighlightColor;
+ Color maMenuHighlightTextColor;
+- Color maDisableColor;
+- Color maHelpColor;
+- Color maGroupTextColor;
+ Color maMenuTextColor;
+- Color maLinkColor;
++ Color maRadioCheckTextColor;
++ Color maShadowColor;
+ Color maVisitedLinkColor;
+- Color maHighlightLinkColor;
+- Color maFontColor;
+- Color maDummyColor2;
+- Color maDummyColor3;
+- Color maDummyColor4;
+- Color maDummyColor5;
+- Color maDummyColor6;
+- Color maDummyColor7;
+- Color maDummyColor8;
+- Color maDummyColor9;
+- Color maDummyColor10;
+- Color maDummyColor11;
+- Color maDummyColor12;
+- Color maDummyColor13;
+- Color maDummyColor14;
+- Color maDummyColor15;
+- Color maDummyColor16;
+- Color maMenuBorderColor;
+- Color maMenuBarColor;
++ Color maWindowColor;
++ Color maWindowTextColor;
++ Color maWorkspaceColor;
+ Font maAppFont;
+ Font maHelpFont;
+ Font maTitleFont;
+@@ -459,8 +431,6 @@ private:
+ Font maFieldFont;
+ Font maIconFont;
+ Font maGroupFont;
+- Font maDummyFont1;
+- Font maDummyFont2;
+ long mnBorderSize;
+ long mnTitleHeight;
+ long mnFloatTitleHeight;
+@@ -473,11 +443,6 @@ private:
+ long mnIconHorzSpace;
+ long mnIconVertSpace;
+ long mnAntialiasedMin;
+- long mnDummySize2;
+- long mnDummySize3;
+- long mnDummySize4;
+- long mnDummySize5;
+- long mnDummySize6;
+ ULONG mnCursorBlinkTime;
+ ULONG mnDragFullOptions;
+ ULONG mnAnimationOptions;
+@@ -485,8 +450,6 @@ private:
+ ULONG mnLogoDisplayTime;
+ ULONG mnDisplayOptions;
+ ULONG mnToolbarIconSize;
+- ULONG mnDummyOption3;
+- ULONG mnDummyOption4;
+ ULONG mnUseFlatMenues;
+ ULONG mnOptions;
+ USHORT mnScreenZoom;
+@@ -499,6 +462,7 @@ private:
+ USHORT mnUseSystemUIFonts;
+ USHORT mnAutoMnemonic;
+ USHORT mnUseImagesInMenus;
++ ULONG mnUseFlatBorders;
+ };
+
+ // -----------------
+@@ -750,10 +714,15 @@ public:
+ { CopyData(); mpData->mnHighContrast = bHighContrast; }
+ BOOL GetHighContrastMode() const
+ { return (BOOL) mpData->mnHighContrast; }
++ BOOL IsHighContrastBlackAndWhite() const;
+ void SetUseSystemUIFonts( BOOL bUseSystemUIFonts )
+ { CopyData(); mpData->mnUseSystemUIFonts = bUseSystemUIFonts; }
+ BOOL GetUseSystemUIFonts() const
+ { return (BOOL) mpData->mnUseSystemUIFonts; }
++ void SetUseFlatBorders( BOOL bUseFlatBorders )
++ { CopyData(); mpData->mnUseFlatBorders = bUseFlatBorders; }
++ BOOL GetUseFlatBorders() const
++ { return (BOOL) mpData->mnUseFlatBorders; }
+ void SetUseFlatMenues( BOOL bUseFlatMenues )
+ { CopyData(); mpData->mnUseFlatMenues = bUseFlatMenues; }
+ BOOL GetUseFlatMenues() const
+@@ -962,17 +931,14 @@ class ImplMiscData
+ {
+ friend class MiscSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+ ImplMiscData();
+ ImplMiscData( const ImplMiscData& rData );
+-#endif
+
+ private:
+ USHORT mnRefCount;
+ USHORT mnTwoDigitYearStart;
+ USHORT mnEnableATT;
+- USHORT mnDummy1;
+- USHORT mnDummy2;
++ BOOL mbEnableLocalizedDecimalSep;
+ };
+
+ // ----------------
+@@ -997,6 +963,8 @@ public:
+ { return mpData->mnTwoDigitYearStart; }
+ void SetEnableATToolSupport( BOOL bEnable );
+ BOOL GetEnableATToolSupport() const;
++ void SetEnableLocalizedDecimalSep( BOOL bEnable );
++ BOOL GetEnableLocalizedDecimalSep() const;
+ const MiscSettings& operator =( const MiscSettings& rSet );
+
+ BOOL operator ==( const MiscSettings& rSet ) const;
+@@ -1012,10 +980,8 @@ class ImplSoundData
+ {
+ friend class SoundSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+ ImplSoundData();
+ ImplSoundData( const ImplSoundData& rData );
+-#endif
+
+ private:
+ USHORT mnRefCount;
+@@ -1063,10 +1029,8 @@ class ImplNotificationData
+ {
+ friend class NotificationSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+ ImplNotificationData();
+ ImplNotificationData( const ImplNotificationData& rData );
+-#endif
+
+ private:
+ USHORT mnRefCount;
+@@ -1109,10 +1073,8 @@ class ImplHelpData
+ {
+ friend class HelpSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+ ImplHelpData();
+ ImplHelpData( const ImplHelpData& rData );
+-#endif
+
+ private:
+ USHORT mnRefCount;
+@@ -1171,13 +1133,11 @@ public:
+
+ class ImplAllSettingsData
+ {
+- friend class AllSettings;
++ friend class AllSettings;
+
+-#ifdef _SV_SETTINGS_CXX
+- ImplAllSettingsData();
+- ImplAllSettingsData( const ImplAllSettingsData& rData );
+- ~ImplAllSettingsData();
+-#endif
++ ImplAllSettingsData();
++ ImplAllSettingsData( const ImplAllSettingsData& rData );
++ ~ImplAllSettingsData();
+
+ private:
+ USHORT mnRefCount;
+@@ -1202,9 +1162,6 @@ private:
+ CollatorWrapper* mpUICollatorWrapper;
+ vcl::I18nHelper* mpI18nHelper;
+ vcl::I18nHelper* mpUII18nHelper;
+-
+- void* mpDummy1;
+- void* mpDummy2;
+ };
+
+ // ---------------
+Index: vcl/inc/slider.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/slider.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/slider.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
++++ vcl/inc/slider.hxx 7 Jan 2004 09:18:32 -0000 1.2
+@@ -106,7 +106,6 @@ private:
+ Link maSlideHdl;
+ Link maEndSlideHdl;
+
+-#ifdef _SV_SLIDER_CXX
+ void ImplInit( Window* pParent, WinBits nStyle );
+ void ImplInitStyle( WinBits nStyle );
+ void ImplLoadRes( const ResId& rResId );
+@@ -123,7 +122,6 @@ private:
+ void ImplDoMouseAction( const Point& rPos, BOOL bCallAction = TRUE );
+ long ImplDoSlide( long nNewPos );
+ long ImplDoSlideAction( ScrollType eScrollType );
+-#endif
+
+ public:
+ Slider( Window* pParent, WinBits nStyle = WB_HORZ );
+Index: vcl/inc/sound.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/sound.hxx,v
+retrieving revision 1.3
+retrieving revision 1.5
+diff -u -p -u -r1.3 -r1.5
+--- vcl/inc/sound.hxx 13 Jun 2001 10:52:47 -0000 1.3
++++ vcl/inc/sound.hxx 7 Jan 2004 09:19:13 -0000 1.5
+@@ -92,15 +92,10 @@ class Sound
+ {
+ private:
+
+-#ifndef REMOTE_APPSERVER
+ SalSound* mpSound;
+-#else
+- RMSound* mpSound;
+-#endif
+-
+ XubString maSoundName;
+ Window* mpWindow;
+- BYTE* mpSoundData;
++ BYTE* mpSoundData_NOTUSED;
+ ULONG mnDataLen;
+ ULONG mnSoundLen;
+ ULONG mnStartTime;
+@@ -124,7 +119,7 @@ public:
+
+ public:
+ Sound( Window* pWindow = NULL );
+- ~Sound();
++ virtual ~Sound();
+
+ virtual void Notify();
+
+@@ -132,8 +127,6 @@ public:
+ Window* GetWindow() const { return mpWindow; }
+ BOOL SetSoundName( const XubString& rSoundName );
+ const XubString& GetSoundName() const { return maSoundName; }
+- BOOL SetSoundData( const BYTE* pSoundData, ULONG nDataLen );
+- BYTE* GetSoundData() const { return mpSoundData; }
+ ULONG GetSoundLen() const { return mnSoundLen; }
+
+ void Play();
+Index: vcl/inc/spin.h
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/spin.h,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/spin.h 19 Sep 2000 10:23:07 -0000 1.1.1.1
++++ vcl/inc/spin.h 11 Dec 2003 11:51:45 -0000 1.2
+@@ -82,6 +82,6 @@ void ImplDrawSpinButton( OutputDevice* p
+ BOOL bUpperIn, BOOL bLowerIn,
+ BOOL bUpperEnabled = TRUE,
+ BOOL bLowerEnabled = TRUE,
+- BOOL bHorz = FALSE );
++ BOOL bHorz = FALSE, BOOL bMirrorHorz = FALSE );
+
+ #endif // _SV_SPIN_H
+Index: vcl/inc/spin.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/spin.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.4
+diff -u -p -u -r1.1.1.1 -r1.4
+--- vcl/inc/spin.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
++++ vcl/inc/spin.hxx 10 May 2004 15:43:29 -0000 1.4
+@@ -82,19 +82,24 @@ private:
+ AutoTimer maRepeatTimer;
+ Rectangle maUpperRect;
+ Rectangle maLowerRect;
+- BOOL mbRepeat : 1;
+- BOOL mbUpperIn : 1;
+- BOOL mbLowerIn : 1;
+- BOOL mbInitialUp : 1;
+- BOOL mbInitialDown : 1;
+- BOOL mbHorz : 1;
++ Rectangle maFocusRect;
++ BOOL mbRepeat : 1;
++ BOOL mbUpperIn : 1;
++ BOOL mbLowerIn : 1;
++ BOOL mbInitialUp : 1;
++ BOOL mbInitialDown : 1;
++ BOOL mbHorz : 1;
++ BOOL mbUpperIsFocused : 1;
+ Link maUpHdlLink;
+ Link maDownHdlLink;
++ long mnMinRange;
++ long mnMaxRange;
++ long mnValue;
++ long mnValueStep;
++ Rectangle* ImplFindPartRect( const Point& rPt );
+
+-#ifdef _SV_SPIN_CXX
+ void ImplInit( Window* pParent, WinBits nStyle );
+ DECL_LINK( ImplTimeout, Timer* );
+-#endif
+
+ public:
+ SpinButton( Window* pParent, WinBits nStyle = 0 );
+@@ -106,16 +111,45 @@ public:
+
+ virtual void Resize();
+ virtual void Paint( const Rectangle& rRect );
++ virtual void Draw( OutputDevice* pDev, const Point& rPos, const Size& rSize, ULONG nFlags );
+ virtual void MouseButtonDown( const MouseEvent& rMEvt );
+ virtual void MouseButtonUp( const MouseEvent& rMEvt );
+ virtual void MouseMove( const MouseEvent& rMEvt );
+ virtual void KeyInput( const KeyEvent& rKEvt );
+ virtual void StateChanged( StateChangedType nStateChange );
++ virtual void GetFocus();
++ virtual void LoseFocus();
++
++ void SetRangeMin( long nNewRange );
++ long GetRangeMin() const { return mnMinRange; }
++ void SetRangeMax( long nNewRange );
++ long GetRangeMax() const { return mnMaxRange; }
++ void SetRange( const Range& rRange );
++ Range GetRange() const { return Range( GetRangeMin(), GetRangeMax() ); }
++ void SetValue( long nValue );
++ long GetValue() const { return mnValue; }
++ void SetValueStep( long nNewStep ) { mnValueStep = nNewStep; }
++ long GetValueStep() const { return mnValueStep; }
++ virtual long PreNotify( NotifyEvent& rNEvt );
+
+ void SetUpHdl( const Link& rLink ) { maUpHdlLink = rLink; }
+ const Link& GetUpHdl() const { return maUpHdlLink; }
+ void SetDownHdl( const Link& rLink ) { maDownHdlLink = rLink; }
+ const Link& GetDownHdl() const { return maDownHdlLink; }
++
++private:
++ // moves the focus to the upper or lower rect. Return TRUE if the focus rect actually changed.
++ BOOL ImplMoveFocus( BOOL _bUpper );
++ void ImplCalcFocusRect( BOOL _bUpper );
++
++ inline BOOL ImplIsUpperEnabled( ) const
++ {
++ return mnValue + mnValueStep <= mnMaxRange;
++ }
++ inline BOOL ImplIsLowerEnabled( ) const
++ {
++ return mnValue >= mnMinRange + mnValueStep;
++ }
+ };
+
+ #endif // _SV_SPIN_HXX
+Index: vcl/inc/spinfld.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/spinfld.hxx,v
+retrieving revision 1.3
+retrieving revision 1.6
+diff -u -p -u -r1.3 -r1.6
+--- vcl/inc/spinfld.hxx 3 May 2002 13:04:10 -0000 1.3
++++ vcl/inc/spinfld.hxx 10 May 2004 15:43:41 -0000 1.6
+@@ -97,16 +97,12 @@ protected:
+ mbLowerIn:1,
+ mbInDropDown:1;
+
+-#if _SOLAR__PRIVATE
+ void ImplInit( Window* pParent, WinBits nStyle );
+
+-#ifdef _SV_SPINFLD_CXX
+ private:
+ DECL_LINK( ImplTimeout, Timer* );
+ void ImplInitData();
+ void ImplCalcButtonAreas( OutputDevice* pDev, const Size& rOutSz, Rectangle& rDDArea, Rectangle& rSpinUpArea, Rectangle& rSpinDownArea );
+-#endif
+-#endif
+
+ protected:
+ SpinField( WindowType nTyp );
+@@ -117,6 +113,7 @@ protected:
+ void EndDropDown();
+
+ virtual void FillLayoutData() const;
++ Rectangle * ImplFindPartRect( const Point& rPt );
+ public:
+ SpinField( Window* pParent, WinBits nWinStyle = 0 );
+ SpinField( Window* pParent, const ResId& rResId );
+@@ -137,6 +134,7 @@ public:
+ virtual void Resize();
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
++ virtual long PreNotify( NotifyEvent& rNEvt );
+
+ void SetUpHdl( const Link& rLink ) { maUpHdlLink = rLink; }
+ const Link& GetUpHdl() const { return maUpHdlLink; }
+Index: vcl/inc/split.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/split.hxx,v
+retrieving revision 1.7
+retrieving revision 1.8
+diff -u -p -u -r1.7 -r1.8
+--- vcl/inc/split.hxx 14 Aug 2002 14:06:39 -0000 1.7
++++ vcl/inc/split.hxx 7 Jan 2004 09:20:22 -0000 1.8
+@@ -92,7 +92,6 @@ private:
+ Link maStartSplitHdl;
+ Link maSplitHdl;
+
+-#ifdef _SV_SPLIT_CXX
+ void ImplInitData();
+ void ImplDrawSplitter();
+ void ImplSplitMousePos( Point& rPos );
+@@ -101,7 +100,6 @@ private:
+ BOOL ImplSplitterActive();
+ Splitter* ImplFindSibling();
+ void ImplRestoreSplitter();
+-#endif
+
+ protected:
+ void ImplInit( Window* pParent, WinBits nWinStyle );
+Index: vcl/inc/splitwin.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/splitwin.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/splitwin.hxx 27 Mar 2003 17:57:33 -0000 1.2
++++ vcl/inc/splitwin.hxx 7 Jan 2004 09:20:41 -0000 1.3
+@@ -141,10 +141,7 @@ private:
+ mbFadeInPressed:1,
+ mbFadeOutPressed:1,
+ mbFadeNoButtonMode:1,
+- mbNoAlign:1,
+- mbDummy2:1,
+- mbDummy3:1,
+- mbDummy4:1;
++ mbNoAlign:1;
+ Link maStartSplitHdl;
+ Link maSplitHdl;
+ Link maSplitResizeHdl;
+@@ -152,7 +149,6 @@ private:
+ Link maFadeInHdl;
+ Link maFadeOutHdl;
+
+-#ifdef _SV_SPLITWIN_CXX
+ void ImplInit( Window* pParent, WinBits nStyle );
+ void ImplInitSettings();
+ void ImplCalcLayout();
+@@ -169,7 +165,6 @@ private:
+ void ImplDrawFadeIn( BOOL bInPaint );
+ void ImplDrawFadeOut( BOOL bInPaint );
+ void ImplNewAlign();
+-#endif
+
+ public:
+ SplitWindow( Window* pParent, WinBits nStyle = 0 );
+Index: vcl/inc/status.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/status.hxx,v
+retrieving revision 1.3
+retrieving revision 1.4
+diff -u -p -u -r1.3 -r1.4
+--- vcl/inc/status.hxx 27 Mar 2003 17:57:33 -0000 1.3
++++ vcl/inc/status.hxx 7 Jan 2004 09:20:58 -0000 1.4
+@@ -128,23 +128,17 @@ private:
+ long mnCalcHeight;
+ long mnTextY;
+ long mnItemY;
+- long mnDummyLong;
+ USHORT mnCurItemId;
+ USHORT mnPercent;
+ USHORT mnPercentCount;
+- USHORT mnDummy1;
+ BOOL mbVisibleItems;
+ BOOL mbFormat;
+ BOOL mbProgressMode;
+ BOOL mbInUserDraw;
+ BOOL mbBottomBorder;
+- BOOL mbDummy1;
+- BOOL mbDummy2;
+- BOOL mbDummy3;
+ Link maClickHdl;
+ Link maDoubleClickHdl;
+
+-#ifdef _SV_STATUS_CXX
+ void ImplInit( Window* pParent, WinBits nStyle );
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+ void ImplFormat();
+@@ -155,7 +149,6 @@ private:
+ USHORT nOldPerc, USHORT nNewPerc );
+ void ImplCalcProgressRect();
+ Rectangle ImplGetItemRectPos( USHORT nPos ) const;
+-#endif
+
+ public:
+ StatusBar( Window* pParent,
+Index: vcl/inc/svapp.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/svapp.hxx,v
+retrieving revision 1.27
+retrieving revision 1.30
+diff -u -p -u -r1.27 -r1.30
+--- vcl/inc/svapp.hxx 10 Jun 2003 14:29:14 -0000 1.27
++++ vcl/inc/svapp.hxx 10 May 2004 12:57:43 -0000 1.30
+@@ -74,9 +74,6 @@
+ #ifndef _UNQID_HXX
+ #include <tools/unqid.hxx>
+ #endif
+-#ifndef _RTTI_HXX
+-#include <tools/rtti.hxx>
+-#endif
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+@@ -100,13 +97,8 @@ class Window;
+ class Reflection;
+ class KeyCode;
+ class NotifyEvent;
+ class KeyEvent;
+
+-#ifndef NOOLDSV
+-class Font;
+-class ApplicationAddress;
+-class ApplicationEvent;
+-#endif
+ namespace vos { class IMutex; }
+
+ #ifndef _COM_SUN_STAR_UNO_REFERENCE_H_
+@@ -327,7 +291,7 @@ class Application
+ {
+ public:
+ Application();
+- ~Application();
++ virtual ~Application();
+
+ virtual void Main() = 0;
+
+@@ -406,8 +370,9 @@ public:
+
+ #ifndef NO_GETAPPWINDOW
+ static WorkWindow* GetAppWindow();
+ #endif
+- static Window* GetFocusWindow();
++
++ static Window* GetFocusWindow();
+ static OutputDevice* GetDefaultDevice();
+
+ static Window* GetFirstTopLevelWindow();
+@@ -562,6 +482,11 @@ public:
+ Can be called without the Solar mutex locked.
+ */
+ static bool GetShowImeStatusWindowDefault();
++
++ /** Returns a string representing the desktop environment
++ the process is currently running in.
++ */
++ static const ::rtl::OUString& GetDesktopEnvironment();
+ };
+
+ Application* GetpApp();
+Index: vcl/inc/svdata.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/svdata.hxx,v
+retrieving revision 1.38.88.2
+retrieving revision 1.45
+diff -u -p -u -r1.38.88.2 -r1.45
+--- vcl/inc/svdata.hxx 2 Mar 2004 10:00:45 -0000 1.38.88.2
++++ vcl/inc/svdata.hxx 25 Jun 2004 17:08:32 -0000 1.45
+@@ -147,80 +147,13 @@ class ImplVDevCache;
+ class UnoWrapperBase;
+ class GraphicConverter;
+ class ImplWheelWindow;
++class SalTimer;
++class SalI18NImeStatus;
+
+ namespace vos { class OMutex; }
+ namespace vos { class OCondition; }
+ namespace vcl { class DisplayConnection; class DefaultFontConfigItem; class FontSubstConfigItem; class SettingsConfigItem;}
+
+-// ----------
+-// - Remote -
+-// ----------
+-
+-#ifdef REMOTE_APPSERVER
+-class VclOTimer;
+-class RmEventQueue;
+-class UNODispatchThread;
+-
+-// see unotools/atom.hxx
+-namespace utl {
+- class AtomClient;
+-}
+-
+-// needed for server side drag and drop
+-namespace com { namespace sun { namespace star { namespace datatransfer { namespace dnd {
+- class XDragSource;
+-} } } } }
+-
+-#include <tools/table.hxx>
+-#include <vos/mutex.hxx>
+-#include <vos/thread.hxx>
+-#include <vos/semaphor.hxx>
+-#include "rvp.hxx"
+-
+-#define CHECK_FOR_RVPSYNC_NORMAL() ImplGetSVData()->mpRVPNormalSync->CheckForRVPSync( NULL );
+-#define CHECK_FOR_RVPSYNC_SOUND() ImplGetSVData()->mpRVPSoundSync->CheckForRVPSync( NULL );
+-
+-void rvpExceptionHandler();
+-
+-DECLARE_TABLE( KeyNames, String* );
+-
+-class ImplRemoteYieldMutex : public vos::OMutex
+-{
+- ULONG mnCount;
+- vos::OThread::TThreadIdentifier mnThreadId;
+- vos::OThread::TThreadIdentifier mnMainThreadId;
+-
+-public:
+- ImplRemoteYieldMutex();
+-
+- virtual void SAL_CALL acquire();
+- virtual void SAL_CALL release();
+- virtual sal_Bool SAL_CALL tryToAcquire();
+-
+- ULONG GetAcquireCount() const { return mnCount; }
+- vos::OThread::TThreadIdentifier GetThreadId() const { return mnThreadId; }
+- vos::OThread::TThreadIdentifier GetMainThreadId() const { return mnMainThreadId; }
+-
+-};
+-
+-// sync uno rvp call packages
+-class RVPSync
+-{
+- vos::OThread::TThreadIdentifier mnLastThreadId;
+- oslInterlockedCount mnRVPCount;
+- REF( NMSP_CLIENT::XRmSync ) mxRVPSync;
+- vos::OMutex maMutex;
+- sal_uInt32 mnForceSyncCount;
+- sal_uInt32 mnSyncCount;
+-
+-public:
+- RVPSync( const REF( NMSP_CLIENT::XRmSync )& xRVPSync );
+-
+- void CheckForRVPSync( const char* );
+-};
+-
+-#endif
+-
+ // -----------------
+ // - ImplSVAppData -
+ // -----------------
+@@ -234,9 +167,6 @@ struct ImplSVAppData
+ ImeStatusWindowMode_SHOW
+ };
+
+-#ifdef REMOTE_APPSERVER
+- ImplRemoteYieldMutex* mpSolarMutex; // Solar-Mutex
+-#endif
+ ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > mxMSF;
+ String* mpMSFTempFileName;
+ AllSettings* mpSettings; // Application settings
+@@ -337,7 +266,6 @@ struct ImplSVWinData
+ USHORT mnAutoScrollFlags; // auto scroll flags
+ BOOL mbNoDeactivate; // TRUE: keine Deactivate durchfuehren
+ BOOL mbNoSaveFocus; // TRUE: menues must not save/restore focus
+- BOOL mbDummy1;
+ };
+
+
+@@ -387,17 +315,6 @@ struct ImplSVHelpData
+ };
+
+
+-// --------------------
+-// - ImplSVSystemData -
+-// --------------------
+-
+-struct ImplSVSystemData
+-{
+-#ifndef REMOTE_APPSERVER
+- SalSystem* mpDefSystem; // Default-System-Instance
+-#endif
+-};
+-
+ // --------------
+ // - ImplSVData -
+ // --------------
+@@ -412,6 +329,9 @@ struct ImplSVData
+ ULONG mnThreadCount; // is VCL MultiThread enabled
+ ImplConfigData* mpFirstConfigData; // Zeiger auf ersten Config-Block
+ ImplTimerData* mpFirstTimerData; // list of all running timers
++ SalTimer* mpSalTimer; // interface to sal event loop/timers
++ SalI18NImeStatus* mpImeStatus; // interface to ime status window
++ SalSystem* mpSalSystem; // SalSystem interface
+ ResMgr* mpResMgr; // SV-Resource-Manager
+ ULONG mnTimerPeriod; // current timer period
+ ULONG mnTimerUpdate; // TimerCallbackProcs on stack
+@@ -422,35 +342,12 @@ struct ImplSVData
+ ImplSVWinData maWinData; // indepen data for Windows classes
+ ImplSVCtrlData maCtrlData; // indepen data for Control classes
+ ImplSVHelpData maHelpData; // indepen data for Help classes
+- ImplSVSystemData maSystemData; // indepen data for class System
+ UnoWrapperBase* mpUnoWrapper;
+ Window* mpIntroWindow; // the splash screen
+
+ vos::OThread::TThreadIdentifier mnMainThreadId;
+ ::vcl::DisplayConnection* mpDisplayConnection;
+
+-#ifdef REMOTE_APPSERVER
+- VclOTimer* mpOTimer; // VOS-Timer
+- RmEventQueue* mpRmEventQueue; // Remote-EventQueue
+- REF( NMSP_CLIENT::XRmStatus ) mxStatus; // Remote-Status
+- REF( NMSP_LANG::XMultiServiceFactory ) mxClientFactory; // XFactory zum erzeugen der UNO-Objekte statt ueber UNO_createObject
+- REF( NMSP_CLIENT::XMultiInstanceFactory ) mxMultiFactory; // XFactory zum erzeugen der UNO-Objekte statt ueber UNO_createObject
+- RVPSync* mpRVPNormalSync; // sync interfaces for rvp normal-calls
+- RVPSync* mpRVPSoundSync; // sync interfaces for rvp sound-calls
+- long mnRemoteVersion; // remote version of client
+- ::utl::AtomClient* mpAtoms; // Atoms for client connection
+- ::vos::OMutex* mpWindowObjectMutex;
+- ::vos::OCondition* mpStartUpCond;
+- void* mhRemoteEnv; // not needed anymore
+- String* mpConnectionName;
+- KeyNames* mpKeyNames;
+- REF( NMSP_CLIENT::XRmPrinterEnvironment ) mxRmPrinterEnvironment;
+- NMSP_CLIENT::PrinterEnvironment* mpPrinterEnvironment;
+-// UNO_Server mhRemotePrinter; // UNO-PrinterServer
+-// XRmPrinterEnvironment* mpRmPrinterEnv; // UNO-Printer-Environment
+- ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::dnd::XDragSource > mxServerDragSource;
+- Rectangle maWorkArea; // the remote screen size in pixels
+-#endif
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxAccessBridge;
+ com::sun::star::uno::Reference< com::sun::star::frame::XSessionManagerClient > xSMClient;
+ ::vcl::SettingsConfigItem* mpSettingsConfigItem;
+@@ -465,10 +362,8 @@ ResMgr* ImplGetResMgr();
+ void ImplWindowAutoMnemonic( Window* pWindow );
+ void ImplTimerCallbackProc();
+
+-#ifndef REMOTE_APPSERVER
+ void ImplUpdateSystemProcessWindow();
+ Window* ImplFindWindow( const SalFrame* pFrame, Point& rSalFramePos );
+-#endif
+
+ // SVAPP.CXX
+ BOOL ImplCallHotKey( const KeyCode& rKeyCode );
+Index: vcl/inc/sysdata.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/sysdata.hxx,v
+retrieving revision 1.2
+retrieving revision 1.4
+diff -u -p -u -r1.2 -r1.4
+--- vcl/inc/sysdata.hxx 9 Feb 2001 14:51:45 -0000 1.2
++++ vcl/inc/sysdata.hxx 7 Jan 2004 09:22:49 -0000 1.4
+@@ -69,11 +69,8 @@
+ struct SystemEnvData
+ {
+ unsigned long nSize; // size in bytes of this structure
+-#ifndef SYSDATA_ONLY_BASETYPE
+-#if defined( WIN ) || defined( WNT )
++#if defined( WNT )
+ HWND hWnd; // the window hwnd
+-#elif defined( OS2 )
+- HWND hWnd; // the client hwnd
+ #elif defined( UNX )
+ void* pDisplay; // the relevant display connection
+ long aWindow; // the window of the object
+@@ -86,7 +83,6 @@ struct SystemEnvData
+ long aShellWindow; // the window of the frame's shell
+ void* pShellWidget; // the frame's shell widget
+ #endif
+-#endif
+ };
+
+ #define SystemChildData SystemEnvData
+@@ -98,14 +94,24 @@ struct SystemEnvData
+ struct SystemParentData
+ {
+ unsigned long nSize; // size in bytes of this structure
+-#ifndef SYSDATA_ONLY_BASETYPE
+-#if defined( WIN ) || defined( WNT )
++#if defined( WNT )
+ HWND hWnd; // the window hwnd
+-#elif defined( OS2 )
+- HWND hWnd; // the client hwnd
+ #elif defined( UNX )
+ long aWindow; // the window of the object
+ #endif
++};
++
++// --------------------
++// - SystemMenuData -
++// --------------------
++
++struct SystemMenuData
++{
++ unsigned long nSize; // size in bytes of this structure
++#if defined( WNT )
++ HMENU hMenu; // the menu handle of the menu bar
++#elif defined( UNX )
++ long aMenu; // ???
+ #endif
+ };
+
+Index: vcl/inc/syswin.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/syswin.hxx,v
+retrieving revision 1.12
+retrieving revision 1.13
+diff -u -p -u -r1.12 -r1.13
+--- vcl/inc/syswin.hxx 27 Mar 2003 17:57:34 -0000 1.12
++++ vcl/inc/syswin.hxx 7 Jan 2004 09:23:35 -0000 1.13
+@@ -219,12 +219,9 @@ private:
+ BOOL mbDockBtn;
+ BOOL mbHideBtn;
+ BOOL mbSysChild;
+- BOOL mbDummy2;
+- BOOL mbDummy3;
+ USHORT mnMenuBarMode;
+ USHORT mnIcon;
+ TaskPaneList* mpTaskPaneList;
+- void* mpDummy;
+
+ protected:
+ SystemWindow( WindowType nType );
+Index: vcl/inc/tabctrl.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/tabctrl.hxx,v
+retrieving revision 1.4
+retrieving revision 1.7
+diff -u -p -u -r1.4 -r1.7
+--- vcl/inc/tabctrl.hxx 4 Jun 2003 11:21:18 -0000 1.4
++++ vcl/inc/tabctrl.hxx 10 May 2004 15:43:53 -0000 1.7
+@@ -110,8 +110,6 @@ private:
+ Link maActivateHdl;
+ Link maDeactivateHdl;
+
+-#ifdef _SV_TABCTRL_CXX
+-private:
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+ ImplTabItem* ImplGetItem( USHORT nId ) const;
+ void ImplScrollBtnsColor();
+@@ -124,16 +122,17 @@ private:
+ void ImplActivateTabPage( BOOL bNext );
+ void ImplSetFirstPagePos( USHORT nPagePos );
+ void ImplShowFocus();
+- void ImplDrawItem( ImplTabItem* pItem, const Rectangle& rCurRect, bool bLayout = false );
++ void ImplDrawItem( ImplTabItem* pItem, const Rectangle& rCurRect, bool bLayout = false, bool bFirstInGroup = false, bool bLastInGroup = false, bool bIsCurrentItem = false );
+ void ImplPaint( const Rectangle& rRect, bool bLayout = false );
+ void ImplFreeLayoutData();
+ DECL_LINK( ImplScrollBtnHdl, PushButton* pBtn );
+-#endif
++
+ protected:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ void ImplLoadRes( const ResId& rResId );
+
+ virtual void FillLayoutData() const;
++ Rectangle* ImplFindPartRect( const Point& rPt );
+
+ public:
+ TabControl( Window* pParent,
+@@ -152,6 +151,7 @@ public:
+ virtual long Notify( NotifyEvent& rNEvt );
+ virtual void StateChanged( StateChangedType nType );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
++ virtual long PreNotify( NotifyEvent& rNEvt );
+
+ virtual void ActivatePage();
+ virtual long DeactivatePage();
+Index: vcl/inc/tabdlg.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/tabdlg.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/tabdlg.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
++++ vcl/inc/tabdlg.hxx 7 Jan 2004 09:24:21 -0000 1.2
+@@ -83,10 +83,8 @@ private:
+ WindowAlign meViewAlign;
+ BOOL mbPosControls;
+
+-#ifdef _SV_TABDLG_CXX
+ void ImplInitData();
+ void ImplPosControls();
+-#endif
+
+ public:
+ TabDialog( Window* pParent,
+Index: vcl/inc/tabpage.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/tabpage.hxx,v
+retrieving revision 1.3
+retrieving revision 1.5
+diff -u -p -u -r1.3 -r1.5
+--- vcl/inc/tabpage.hxx 24 Apr 2003 16:30:10 -0000 1.3
++++ vcl/inc/tabpage.hxx 20 Feb 2004 08:49:19 -0000 1.5
+@@ -75,15 +75,15 @@
+
+ class TabPage : public Window
+ {
+-#ifdef _SV_TABPAGE_CXX
+ private:
+ void ImplInit( Window* pParent, WinBits nStyle );
+ void ImplInitSettings();
+-#endif
+
+ public:
+ TabPage( Window* pParent, WinBits nStyle = 0 );
+ TabPage( Window* pParent, const ResId& rResId );
++
++ virtual void Paint( const Rectangle& rRect );
+
+ virtual void StateChanged( StateChangedType nStateChange );
+ virtual void DataChanged( const DataChangedEvent& rDCEvt );
+Index: vcl/inc/threadex.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/threadex.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/threadex.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
++++ vcl/inc/threadex.hxx 7 Jan 2004 09:24:56 -0000 1.2
+@@ -74,7 +74,7 @@ namespace vcl
+ static void SAL_CALL worker( void* );
+ public:
+ ThreadExecutor();
+- ~ThreadExecutor();
++ virtual ~ThreadExecutor();
+
+ virtual long doIt() = 0;
+ long execute();
+@@ -88,7 +88,7 @@ namespace vcl
+ DECL_LINK( worker, void* );
+ public:
+ SolarThreadExecutor();
+- ~SolarThreadExecutor();
++ virtual ~SolarThreadExecutor();
+
+ virtual long doIt() = 0;
+ long execute();
+Index: vcl/inc/timer.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/timer.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/timer.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
++++ vcl/inc/timer.hxx 7 Jan 2004 09:25:18 -0000 1.2
+@@ -89,7 +89,7 @@ protected:
+ public:
+ Timer();
+ Timer( const Timer& rTimer );
+- ~Timer();
++ virtual ~Timer();
+
+ virtual void Timeout();
+
+Index: vcl/inc/toolbox.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/toolbox.hxx,v
+retrieving revision 1.24
+retrieving revision 1.26
+diff -u -p -u -r1.24 -r1.26
+--- vcl/inc/toolbox.hxx 17 Apr 2003 15:17:11 -0000 1.24
++++ vcl/inc/toolbox.hxx 20 Jan 2004 11:55:53 -0000 1.26
+@@ -202,7 +201,6 @@ private:
+ Rectangle maPaintRect;
+ FloatingWindow* mpFloatWin;
+ USHORT mnKeyModifier;
+- USHORT mnDummy2;
+ long mnDX;
+ long mnDY;
+ long mnItemWidth;
+@@ -250,10 +248,9 @@ private:
+ mbDragging:1,
+ mbHideStatusText:1,
+ mbMenuStrings:1,
+- mbDummy1_Shift:1,
+- mbDummy2_KeyEvt:1,
+- mbDummy3_ChangingHighlight:1,
+- mbDummy4:1;
++ mbIsShift:1,
++ mbIsKeyEvent:1,
++ mbChangingHighlight:1;
+ WindowAlign meAlign;
+ WindowAlign meDockAlign;
+ ButtonType meButtonType;
+@@ -267,8 +264,6 @@ private:
+ Link maSelectHdl;
+ Link maNextToolBoxHdl;
+
+-#if _SOLAR__PRIVATE
+-#ifdef _SV_TOOLBOX_CXX
+ void ImplInit( Window* pParent, WinBits nStyle );
+ void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
+ void ImplLoadRes( const ResId& rResId );
+@@ -298,12 +293,16 @@ private:
+ void ImplUpdateInputEnable();
+ void ImplFillLayoutData() const;
+ DECL_LINK( ImplUpdateHdl, void* );
+-#endif
++
++#if _SOLAR__PRIVATE
+ public:
+ void ImplFloatControl( BOOL bStart, FloatingWindow* pWindow = NULL );
+ void ImplDisableFlatButtons();
+ #endif
+
++protected:
++ void SetCurItemId(USHORT nSet) { mnCurItemId = nSet; }
++
+ public:
+ ToolBox( Window* pParent, WinBits nStyle = 0 );
+ ToolBox( Window* pParent, const ResId& rResId );
+@@ -510,9 +509,9 @@ public:
+ void GetAccessObject( AccessObjectRef& rAcc ) const;
+
+ // allow Click Handler to detect special key
+- BOOL IsShift() const { return mbDummy1_Shift; }
++ BOOL IsShift() const { return mbIsShift; }
+ // allow Click Handler to distinguish between mouse and key input
+- BOOL IsKeyEvent() const { return mbDummy2_KeyEvt; }
++ BOOL IsKeyEvent() const { return mbIsKeyEvent; }
+
+ // accessibility helpers
+
+Index: vcl/inc/unobrok.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/unobrok.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/unobrok.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
++++ vcl/inc/unobrok.hxx 1 Dec 2003 13:02:17 -0000 1.2
+@@ -62,62 +62,8 @@
+ #ifndef _UNOBROK_HXX
+ #define _UNOBROK_HXX
+
+-#include "rvp.hxx"
+-
+ #include <svdata.hxx>
+ #include <vos/thread.hxx>
+-
+-// #include <com/sun/star/connection/XAcceptor.hpp>
+-
+-// class UnoBrokerThread : public ::vos::OThread
+-// {
+-// public:
+-
+-// UnoBrokerThread(
+-// const ::com::sun::star::uno::Reference<
+-// ::com::sun::star::lang::XMultiServiceFactory > &rSMgr,
+-// const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > &rInitialObject );
+-
+-// ~UnoBrokerThread();
+-// protected:
+-
+-// virtual void SAL_CALL run();
+-// virtual void SAL_CALL onTerminated();
+-
+-// private:
+-
+-// ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_rSMgr;
+-// ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > m_rInitialObject;
+-// };
+-
+-
+-// /*****************
+-// * This thread is used, when application is started as appserver
+-// * Note : No security is checked, every user may connect to the application !
+-// *****************/
+-// class vcl_AcceptorThread : public ::vos::OThread
+-// {
+-// public:
+-
+-// vcl_AcceptorThread(
+-// const ::com::sun::star::uno::Reference<
+-// ::com::sun::star::lang::XMultiServiceFactory > &rSMgr,
+-// const ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > &rInitialObject,
+-// const ::rtl::OUString &sAcceptorParameter);
+-
+-// protected:
+-
+-// virtual void SAL_CALL run();
+-// virtual void SAL_CALL onTerminated();
+-
+-// virtual void SAL_CALL terminate();
+-// private:
+-
+-// ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > m_rSMgr;
+-// ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > m_rInitialObject;
+-// ::com::sun::star::uno::Reference< ::com::sun::star::connection::XAcceptor > m_rAcceptor;
+-// ::rtl::OUString m_sAcceptorDescription;
+-// };
+
+ namespace vcl_accept
+ {
+Index: vcl/inc/unohelp2.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/unohelp2.hxx,v
+retrieving revision 1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1 -r1.2
+--- vcl/inc/unohelp2.hxx 18 Mar 2002 17:34:51 -0000 1.1
++++ vcl/inc/unohelp2.hxx 7 Jan 2004 09:25:54 -0000 1.2
+@@ -74,6 +74,9 @@
+ #include <tools/string.hxx>
+ #endif
+
++#ifndef _OSL_MUTEX_HXX_
++#include <osl/mutex.hxx>
++#endif
+
+ namespace vcl { namespace unohelper {
+
+@@ -98,6 +101,14 @@ namespace vcl { namespace unohelper {
+ ::com::sun::star::uno::Any SAL_CALL getTransferData( const ::com::sun::star::datatransfer::DataFlavor& aFlavor ) throw(::com::sun::star::datatransfer::UnsupportedFlavorException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
+ ::com::sun::star::uno::Sequence< ::com::sun::star::datatransfer::DataFlavor > SAL_CALL getTransferDataFlavors( ) throw(::com::sun::star::uno::RuntimeException);
+ sal_Bool SAL_CALL isDataFlavorSupported( const ::com::sun::star::datatransfer::DataFlavor& aFlavor ) throw(::com::sun::star::uno::RuntimeException);
++ };
++
++ struct MutexHelper
++ {
++ private:
++ ::osl::Mutex maMutex;
++ public:
++ ::osl::Mutex& GetMutex() { return maMutex; }
+ };
+
+ }} // namespace vcl::unohelper
+Index: vcl/inc/vclevent.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/vclevent.hxx,v
+retrieving revision 1.30
+retrieving revision 1.31
+diff -u -p -u -r1.30 -r1.31
+--- vcl/inc/vclevent.hxx 12 Jun 2003 07:50:37 -0000 1.30
++++ vcl/inc/vclevent.hxx 19 May 2004 13:50:40 -0000 1.31
+@@ -178,6 +178,7 @@ class Menu;
+ #define VCLEVENT_TOOLBOX_ITEMENABLED 1168 // pData = itempos
+ #define VCLEVENT_TOOLBOX_ITEMDISABLED 1169 // pData = itempos
+ #define VCLEVENT_TABPAGE_PAGETEXTCHANGED 1170 // pData = pageid
++#define VCLEVENT_ROADMAP_ITEMSELECTED 1171
+
+ // VclMenuEvent
+ #define VCLEVENT_MENU_ACTIVATE 1200
+@@ -203,8 +204,8 @@ class VclSimpleEvent
+ {
+ private:
+ ULONG nId;
+-
+-public:
++
++public:
+ VclSimpleEvent( ULONG n ) { nId = n; }
+ TYPEINFO();
+
+@@ -216,11 +217,11 @@ class VclWindowEvent : public VclSimpleE
+ private:
+ Window* pWindow;
+ void* pData;
+-
+-public:
++
++public:
+ VclWindowEvent( Window* pWin, ULONG n, void* pDat = NULL ) : VclSimpleEvent(n) { pWindow = pWin; pData = pDat; }
+ TYPEINFO();
+-
++
+ Window* GetWindow() const { return pWindow; }
+ void* GetData() const { return pData; }
+ };
+@@ -230,11 +231,11 @@ class VclMouseEvent : public VclWindowEv
+ {
+ private:
+ MouseEvent aEvent;
+-
+-public:
++
++public:
+ VclMouseEvent( Window* pWin, ULONG n, const MouseEvent& rEvent ) : VclWindowEvent( pWin, n ), aEvent(rEvent) { ; }
+ TYPEINFO();
+-
++
+ const MouseEvent& GetEvent() const { return aEvent; }
+ };
+ */
+@@ -244,11 +245,11 @@ class VclMenuEvent : public VclSimpleEve
+ private:
+ Menu* pMenu;
+ USHORT mnPos;
+-
+-public:
++
++public:
+ VclMenuEvent( Menu* pM, ULONG n, USHORT nPos ) : VclSimpleEvent(n) { pMenu = pM; mnPos = nPos; }
+ TYPEINFO();
+-
++
+ Menu* GetMenu() const { return pMenu; }
+ USHORT GetItemPos() const { return mnPos; }
+ };
+@@ -261,7 +262,7 @@ public:
+
+ // stops notifying when any handler has processed the event
+ // and returns TRUE in that case
+- // a handler must return TRUE to signal that it has processed the event
++ // a handler must return TRUE to signal that it has processed the event
+ BOOL Process( VclSimpleEvent* pEvent ) const;
+ };
+
+Index: vcl/inc/virdev.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/virdev.hxx,v
+retrieving revision 1.3
+retrieving revision 1.7
+diff -u -p -u -r1.3 -r1.7
+--- vcl/inc/virdev.hxx 1 Apr 2003 09:43:53 -0000 1.3
++++ vcl/inc/virdev.hxx 7 Jan 2004 09:26:54 -0000 1.7
+@@ -78,40 +78,52 @@ class RmVirtualDevice;
+
+ class VirtualDevice : public OutputDevice
+ {
+-private:
++ friend class Application;
++ friend class OutputDevice;
+
+-#ifndef REMOTE_APPSERVER
++private:
+ SalVirtualDevice* mpVirDev;
+-#else
+- RmVirtualDevice* mpVirDev;
+-#endif
+ VirtualDevice* mpPrev;
+ VirtualDevice* mpNext;
+ USHORT mnBitCount;
+ BOOL mbScreenComp;
+- BOOL mbDummyAlign;
++ sal_Int8 mnAlphaDepth;
++ BYTE meRefDevMode;
+
+-#if _SOLAR__PRIVATE
+- friend class Application;
+- friend class OutputDevice;
+-#ifdef _SV_VIRDEV_CXX
+ void ImplInitVirDev( const OutputDevice* pOutDev, long nDX, long nDY, USHORT nBitCount );
+-#endif
+-#ifdef REMOTE_APPSERVER
+- RmVirtualDevice* ImplGetRemoteVirDev() const { return mpVirDev; }
+-#endif
+-#endif
++ BOOL ImplSetOutputSizePixel( const Size& rNewSize, BOOL bErase );
+
+ public:
+ VirtualDevice( USHORT nBitCount = 0 );
+ VirtualDevice( const OutputDevice& rCompDev,
+ USHORT nBitCount = 0 );
++ /** Create a virtual device with alpha channel
++
++ @param rCompDev
++ The generated vdev will be compatible to this device. By
++ default, Application::GetDefaultDevice() is used here.
++
++ @param nBitCount
++ Bit depth of the generated virtual device. Use 0 here, to
++ indicate: take default screen depth. Currently, only 0 and 1
++ are allowed here, with 1 denoting binary mask.
++
++ @param nAlphaBitCount
++ Bit depth of the generated virtual device. Use 0 here, to
++ indicate: take default screen depth. Currently, only 0 and 1
++ are allowed here, with 1 denoting binary mask.
++ */
++ VirtualDevice( const OutputDevice& rCompDev,
++ USHORT nBitCount, USHORT nAlphaBitCount );
+ virtual ~VirtualDevice();
+
+- void SetReferenceDevice();
+ BOOL SetOutputSizePixel( const Size& rNewSize, BOOL bErase = TRUE );
+ BOOL SetOutputSize( const Size& rNewSize, BOOL bErase = TRUE )
+ { return SetOutputSizePixel( LogicToPixel( rNewSize ), bErase ); }
++
++ // reference device modes for different compatibility levels
++ enum RefDevMode { REFDEV_NONE=0, REFDEV_MODE06, REFDEV_MODE48, REFDEV_MODE96 };
++ void SetReferenceDevice( RefDevMode eMode = VirtualDevice::REFDEV_MODE06 );
+ };
+
+ #endif // _SV_VIRDEV_HXX
+Index: vcl/inc/wall.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/wall.hxx,v
+retrieving revision 1.1.1.1
+retrieving revision 1.2
+diff -u -p -u -r1.1.1.1 -r1.2
+--- vcl/inc/wall.hxx 19 Sep 2000 10:23:08 -0000 1.1.1.1
++++ vcl/inc/wall.hxx 7 Jan 2004 09:27:34 -0000 1.2
+@@ -65,13 +65,14 @@
+ #ifndef _SV_SV_H
+ #include <sv.h>
+ #endif
+-#ifndef _SV_COLOR_HXX
+-#include <color.hxx>
++#ifndef _TOOLS_COLOR_HXX
++#include <tools/color.hxx>
+ #endif
+
+ class Rectangle;
+ class Gradient;
+ class BitmapEx;
++class ImplWallpaper;
+
+ // -------------------
+ // - Wallpaper-Types -
+@@ -113,40 +114,6 @@ enum WallpaperStyle
+
+ #endif
+
+-// -----------------
+-// - ImplWallpaper -
+-// -----------------
+-
+-class SvStream;
+-
+-class ImplWallpaper
+-{
+- friend class Wallpaper;
+-
+-private:
+- Color maColor;
+- BitmapEx* mpBitmap;
+- Gradient* mpGradient;
+- Rectangle* mpRect;
+- WallpaperStyle meStyle;
+- USHORT mnRefCount;
+- BitmapEx* mpCache;
+-
+- friend SvStream& operator>>( SvStream& rIStm, ImplWallpaper& rImplWallpaper );
+- friend SvStream& operator<<( SvStream& rOStm, const ImplWallpaper& rImplWallpaper );
+-
+-#ifdef _SV_WALL_CXX
+-public:
+- ImplWallpaper();
+- ImplWallpaper( const ImplWallpaper& rImplWallpaper );
+- ~ImplWallpaper();
+-
+- void ImplSetCachedBitmap( BitmapEx& rBmp );
+- const BitmapEx* ImplGetCachedBitmap() { return mpCache; }
+- void ImplReleaseCachedBitmap();
+-#endif
+-};
+-
+ // -------------
+ // - Wallpaper -
+ // -------------
+@@ -156,8 +123,9 @@ class Wallpaper
+ private:
+ ImplWallpaper* mpImplWallpaper;
+
+-#ifdef _SV_WALL_CXX
+ void ImplMakeUnique( BOOL bReleaseCache = TRUE );
++
++#if _SOLAR__PRIVATE
+ public:
+ ImplWallpaper* ImplGetImpWallpaper() const { return mpImplWallpaper; }
+ #endif
+@@ -171,25 +139,25 @@ public:
+ ~Wallpaper();
+
+ void SetColor( const Color& rColor );
+- const Color& GetColor() const { return mpImplWallpaper->maColor; }
++ const Color& GetColor() const;
+
+ void SetStyle( WallpaperStyle eStyle );
+- WallpaperStyle GetStyle() const { return mpImplWallpaper->meStyle; }
++ WallpaperStyle GetStyle() const;
+
+ void SetBitmap( const BitmapEx& rBitmap );
+ void SetBitmap();
+ BitmapEx GetBitmap() const;
+- BOOL IsBitmap() const { return (mpImplWallpaper->mpBitmap != 0); }
++ BOOL IsBitmap() const;
+
+ void SetGradient( const Gradient& rGradient );
+ void SetGradient();
+ Gradient GetGradient() const;
+- BOOL IsGradient() const { return (mpImplWallpaper->mpGradient != 0); }
++ BOOL IsGradient() const;
+
+ void SetRect( const Rectangle& rRect );
+ void SetRect();
+ Rectangle GetRect() const;
+- BOOL IsRect() const { return (mpImplWallpaper->mpRect != 0); }
++ BOOL IsRect() const;
+
+ BOOL IsFixed() const;
+ BOOL IsScrollable() const;
+Index: vcl/inc/wall2.hxx
+===================================================================
+RCS file: vcl/inc/wall2.hxx
+diff -N vcl/inc/wall2.hxx
+--- /dev/null 1 Jan 1970 00:00:00 -0000
++++ vcl/inc/wall2.hxx 7 Jan 2004 09:27:49 -0000 1.2
+@@ -0,0 +1,96 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * 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): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#ifndef _SV_WALL2_HXX
++#define _SV_WALL2_HXX
++
++#ifndef _SV_WALL_HXX
++#include <wall.hxx>
++#endif
++
++class ImplWallpaper
++{
++ friend class Wallpaper;
++
++private:
++ Color maColor;
++ BitmapEx* mpBitmap;
++ Gradient* mpGradient;
++ Rectangle* mpRect;
++ WallpaperStyle meStyle;
++ USHORT mnRefCount;
++ BitmapEx* mpCache;
++
++ friend SvStream& operator>>( SvStream& rIStm, ImplWallpaper& rImplWallpaper );
++ friend SvStream& operator<<( SvStream& rOStm, const ImplWallpaper& rImplWallpaper );
++
++public:
++ ImplWallpaper();
++ ImplWallpaper( const ImplWallpaper& rImplWallpaper );
++ ~ImplWallpaper();
++
++ void ImplSetCachedBitmap( BitmapEx& rBmp );
++ const BitmapEx* ImplGetCachedBitmap() { return mpCache; }
++ void ImplReleaseCachedBitmap();
++};
++
++
++#endif // _SV_WALL2_HXX
+Index: vcl/inc/windata.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/windata.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/windata.hxx 27 Jun 2001 08:23:42 -0000 1.2
++++ vcl/inc/windata.hxx 1 Dec 2003 13:02:52 -0000 1.3
+@@ -72,15 +72,7 @@ class SalFrame;
+ // - Prototypes -
+ // --------------
+
+-#ifndef REMOTE_APPSERVER
+- long ImplWindowFrameProc( void* pInst, SalFrame* pFrame,
+- USHORT nEvent, const void* pEvent );
+-#else
+- class ExtRmEvent;
+- class Window;
+- void ImplRemoteWindowFrameProc( ExtRmEvent* pEvent );
+- void ImplUpdateCursorRect( Window *pWindow );
+-#endif
++long ImplWindowFrameProc( void* pInst, SalFrame* pFrame, USHORT nEvent, const void* pEvent );
+
+ // -----------
+ // - HitTest -
+Index: vcl/inc/window.h
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/window.h,v
+retrieving revision 1.11.136.1
+retrieving revision 1.15
+diff -u -p -u -r1.11.136.1 -r1.15
+--- vcl/inc/window.h 9 Jan 2004 18:13:41 -0000 1.11.136.1
++++ vcl/inc/window.h 17 Jun 2004 12:10:38 -0000 1.15
+@@ -86,6 +86,7 @@ class VirtualDevice;
+ struct SalPaintEvent;
+ class ImplDevFontList;
+ class ImplFontCache;
++class SalControlHandle;
+
+ namespace com {
+ namespace sun {
+@@ -113,6 +114,10 @@ struct ImplWinData
+ Rectangle* mpFocusRect;
+ Rectangle* mpTrackRect;
+ USHORT mnTrackFlags;
++ USHORT mnIsTopWindow;
++ BOOL mbMouseOver; // tracks mouse over for native widget paint effect
++ SalControlHandle* mpSalControlHandle; // native data for NWF
++ BOOL mbEnableNativeWidget; // toggle native widget rendering
+ };
+
+ // -------------------
+@@ -145,16 +150,18 @@ struct ImplFrameData
+ Window* mpFirstBackWin; // Erstes Overlap-Window mit Hintergrund-Sicherung
+ ImplDevFontList* mpFontList; // Font-List for this frame
+ ImplFontCache* mpFontCache; // Font-Cache for this frame
+- long mnDPIX; // Original Screen Resolution
+- long mnDPIY; // Original Screen Resolution
+- long mnFontDPIX; // Original Font Resolution
+- long mnFontDPIY; // Original Font Resolution
++ sal_Int32 mnDPIX; // Original Screen Resolution
++ sal_Int32 mnDPIY; // Original Screen Resolution
++ sal_Int32 mnFontDPIX; // Original Font Resolution
++ sal_Int32 mnFontDPIY; // Original Font Resolution
+ ImplMapRes maMapUnitRes; // for LogicUnitToPixel
+ ULONG mnAllSaveBackSize; // Groesse aller Bitmaps fuer Hintergrund-Sicherung
+ ULONG mnFocusId; // FocusId for PostUserLink
+ ULONG mnMouseMoveId; // MoveId for PostUserLink
+ long mnLastMouseX; // last x mouse position
+ long mnLastMouseY; // last y mouse position
++ long mnBeforeLastMouseX; // last but one x mouse position
++ long mnBeforeLastMouseY; // last but one y mouse position
+ long mnFirstMouseX; // first x mouse position by mousebuttondown
+ long mnFirstMouseY; // first y mouse position by mousebuttondown
+ long mnLastMouseWinX; // last x mouse position, rel. to pMouseMoveWin
+Index: vcl/inc/window.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/window.hxx,v
+retrieving revision 1.47.112.1
+retrieving revision 1.55
+diff -u -p -u -r1.47.112.1 -r1.55
+--- vcl/inc/window.hxx 26 Jan 2004 17:20:36 -0000 1.47.112.1
++++ vcl/inc/window.hxx 17 Jun 2004 12:10:54 -0000 1.55
+@@ -68,8 +68,8 @@
+ #ifndef _SV_OUTDEV_HXX
+ #include <outdev.hxx>
+ #endif
+-#ifndef _SV_RESID_HXX
+-#include <resid.hxx>
++#ifndef _TOOLS_RESID_HXX
++#include <tools/resid.hxx>
+ #endif
+ #ifndef _SV_POINTR_HXX
+ #include <pointr.hxx>
+@@ -91,12 +91,20 @@
+ #include <event.hxx>
+ #endif
+
+-#ifndef _COM_SUN_STAR_UNO_REFERENCE_HXX_
+-#include <com/sun/star/uno/Reference.hxx>
++#ifndef _SV_REGION_HXX
++#include <region.hxx>
++#endif
++
++#ifndef _SV_NATIVEWIDGETS_HXX
++#include <salnativewidgets.hxx>
++#endif
++
++#ifndef _RTL_USTRING_HXX_
++#include <rtl/ustring.hxx>
+ #endif
+
+-#ifdef REMOTE_APPSERVER
+-#include "rvp.hxx"
++#ifndef _COM_SUN_STAR_UNO_REFERENCE_HXX_
++#include <com/sun/star/uno/Reference.hxx>
+ #endif
+
+ class VirtualDevice;
+@@ -144,6 +151,7 @@ namespace sun {
+ namespace star {
+ namespace awt {
+ class XWindowPeer;
++ class XWindow;
+ }
+ namespace uno {
+ class Any;
+@@ -335,26 +351,55 @@ typedef USHORT StateChangedType;
+ #define EXTTEXTINPUT_END_COMPLETE ((USHORT)0x0001)
+ #define EXTTEXTINPUT_END_CANCEL ((USHORT)0x0002)
+
++#if _SOLAR__PRIVATE
++#define IMPL_MINSIZE_BUTTON_WIDTH 70
++#define IMPL_MINSIZE_BUTTON_HEIGHT 22
++#define IMPL_EXTRA_BUTTON_WIDTH 18
++#define IMPL_EXTRA_BUTTON_HEIGHT 10
++#define IMPL_SEP_BUTTON_X 5
++#define IMPL_SEP_BUTTON_Y 5
++#define IMPL_MINSIZE_MSGBOX_WIDTH 150
++#define IMPL_MINSIZE_MSGBOX_HEIGHT 80
++#define IMPL_DIALOG_OFFSET 5
++#define IMPL_DIALOG_BAR_OFFSET 3
++#define IMPL_MSGBOX_OFFSET_EXTRA_X 0
++#define IMPL_MSGBOX_OFFSET_EXTRA_Y 2
++#define IMPL_SEP_MSGBOX_IMAGE 8
++#define IMPL_SEP_BUTTON_IMAGE 4
++
++#define DLGWINDOW_PREV 0
++#define DLGWINDOW_NEXT 1
++#define DLGWINDOW_FIRST 2
++#endif
++
+ // ----------
+ // - Window -
+ // ----------
+
+ class Window : public OutputDevice
+ {
++ friend class Cursor;
++ friend class OutputDevice;
++ friend class Application;
++ friend class SystemWindow;
++ friend class WorkWindow;
++ friend class Dialog;
++ friend class MessBox;
++ friend class DockingWindow;
++ friend class FloatingWindow;
++ friend class GroupBox;
++ friend class PushButton;
++ friend class RadioButton;
++ friend class SystemChildWindow;
++ friend class ImplBorderWindow;
++
+ private:
+ ImplWinData* mpWinData;
+ ImplOverlapData* mpOverlapData;
+ ImplFrameData* mpFrameData;
+-#ifndef REMOTE_APPSERVER
+ SalFrame* mpFrame;
+ SalObject* mpSysObj;
+ void* mpRmEvents;
+-#else
+- friend class ExtRmEvent;
+- RmFrameWindow* mpFrame;
+- void* mpSysObj;
+- ExtRmEvent* mpRmEvents;
+-#endif
+ Window* mpFrameWindow;
+ Window* mpOverlapWindow;
+ Window* mpBorderWindow;
+@@ -385,14 +433,13 @@ private:
+ Font* mpControlFont;
+ Color maControlForeground;
+ Color maControlBackground;
+- long mnLeftBorder;
+- long mnTopBorder;
+- long mnRightBorder;
+- long mnBottomBorder;
++ sal_Int32 mnLeftBorder;
++ sal_Int32 mnTopBorder;
++ sal_Int32 mnRightBorder;
++ sal_Int32 mnBottomBorder;
+ long mnX;
+ long mnY;
+ long mnAbsScreenX;
+- long mnDummy2;
+ Point maPos;
+ ULONG mnHelpId;
+ ULONG mnUniqId;
+@@ -413,8 +460,6 @@ private:
+ WinBits mnExtendedStyle;
+ WinBits mnPrevExtendedStyle;
+ WindowType mnType;
+- LanguageType meDummy1;
+- CharSet meDummy2;
+ USHORT mnWaitCount;
+ USHORT mnPaintFlags;
+ USHORT mnGetFocusFlags;
+@@ -422,8 +467,6 @@ private:
+ USHORT mnActivateMode;
+ USHORT mnDlgCtrlFlags;
+ USHORT mnLockCount;
+- USHORT mnDummy3;
+- USHORT mnIsTopWindow;
+ BOOL mbFrame:1,
+ mbBorderWin:1,
+ mbOverlapWin:1,
+@@ -490,9 +533,176 @@ private:
+ mbDrawSelectionBackground:1;
+
+ ::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxDNDListenerContainer;
++ void ImplInitData( WindowType nType );
++
+
+ #if _SOLAR__PRIVATE
+-#include <window.imp>
++
++#ifdef DBG_UTIL
++ friend const char* ImplDbgCheckWindow( const void* pObj );
++#endif
++
++public:
++ void ImplInit( Window* pParent, WinBits nStyle, SystemParentData* pSystemParentData );
++ void ImplInit( Window* pParent, WinBits nStyle, const ::com::sun::star::uno::Any& aSystemWorkWindowToken );
++ WinBits ImplInitRes( const ResId& rResId );
++ void ImplLoadRes( const ResId& rResId );
++ void ImplWindowRes( const ResId& rResId );
++ void ImplSetFrameParent( const Window* pParent );
++ void ImplInsertWindow( Window* pParent );
++ void ImplRemoveWindow( BOOL bRemoveFrameData );
++ Window* ImplGetWindow() { if ( mpClientWindow ) return mpClientWindow; else return this; }
++ ImplFrameData* ImplGetFrameData() { return mpFrameData; }
++ SalFrame* ImplGetFrame() const { return mpFrame; }
++ ImplWinData* ImplGetWinData() const;
++ SalGraphics* ImplGetFrameGraphics() const;
++ void ImplCallFocusChangeActivate( Window* pNewOverlapWindow, Window* pOldOverlapWindow );
++ Window* ImplFindWindow( const Point& rFramePos );
++ USHORT ImplHitTest( const Point& rFramePos );
++ Window* ImplGetParent() const { return mpParent; }
++ Window* ImplGetClientWindow() const { return mpClientWindow; }
++ Window* ImplGetBorderWindow() const { return mpBorderWindow; }
++ Window* ImplGetFirstOverlapWindow() { if ( mbOverlapWin ) return this; else return mpOverlapWindow; }
++ const Window* ImplGetFirstOverlapWindow() const { if ( mbOverlapWin ) return this; else return mpOverlapWindow; }
++ Window* ImplGetFrameWindow() const { return mpFrameWindow; }
++ BOOL ImplIsRealParentPath( const Window* pWindow ) const;
++ BOOL ImplIsChild( const Window* pWindow, BOOL bSystemWindow = FALSE ) const;
++ BOOL ImplIsWindowOrChild( const Window* pWindow, BOOL bSystemWindow = FALSE ) const;
++ Window* ImplGetSameParent( const Window* pWindow ) const;
++ BOOL ImplIsDockingWindow() const { return mbDockWin; }
++ BOOL ImplIsFloatingWindow() const { return mbFloatWin; }
++ BOOL ImplIsToolbox() const { return mbToolBox; }
++ BOOL ImplIsSplitter() const { return mbSplitter; }
++ BOOL ImplIsPushButton() const { return mbPushButton; }
++ BOOL ImplIsOverlapWindow() const { return mbOverlapWin; }
++ void ImplSetActive( BOOL bActive ) { mbActive = bActive; }
++ BOOL ImplIsMouseTransparent() const { return mbMouseTransparent; }
++ void ImplSetMouseTransparent( BOOL bTransparent ) { mbMouseTransparent = bTransparent; }
++ int ImplTestMousePointerSet();
++ PointerStyle ImplGetMousePointer() const;
++ void ImplResetReallyVisible();
++ void ImplSetReallyVisible();
++ void ImplCallInitShow();
++ void ImplAddDel( ImplDelData* pDel );
++ void ImplRemoveDel( ImplDelData* pDel );
++ void ImplInitResolutionSettings();
++ void ImplPointToLogic( Font& rFont ) const;
++ void ImplLogicToPoint( Font& rFont ) const;
++ Point ImplOutputToFrame( const Point& rPos )
++ { return Point( rPos.X()+mnOutOffX, rPos.Y()+mnOutOffY ); }
++ Point ImplFrameToOutput( const Point& rPos )
++ { return Point( rPos.X()-mnOutOffX, rPos.Y()-mnOutOffY ); }
++ void ImplOutputToFrame( Rectangle& rRect )
++ { rRect.Left()+=mnOutOffX; rRect.Top()+=mnOutOffY;
++ rRect.Right()+=mnOutOffX; rRect.Bottom()+=mnOutOffY; }
++ void ImplFrameToOutput( Rectangle& rRect )
++ { rRect.Left()-=mnOutOffX; rRect.Top()-=mnOutOffY;
++ rRect.Right()-=mnOutOffX; rRect.Bottom()-=mnOutOffY; }
++ BOOL ImplSysObjClip( const Region* pOldRegion );
++ void ImplUpdateSysObjChildsClip();
++ void ImplUpdateSysObjOverlapsClip();
++ void ImplUpdateSysObjClip();
++ BOOL ImplSetClipFlagChilds( BOOL bSysObjOnlySmaller = FALSE );
++ BOOL ImplSetClipFlagOverlapWindows( BOOL bSysObjOnlySmaller = FALSE );
++ BOOL ImplSetClipFlag( BOOL bSysObjOnlySmaller = FALSE );
++ void ImplIntersectWindowClipRegion( Region& rRegion );
++ void ImplIntersectWindowRegion( Region& rRegion );
++ void ImplExcludeWindowRegion( Region& rRegion );
++ void ImplExcludeOverlapWindows( Region& rRegion );
++ void ImplExcludeOverlapWindows2( Region& rRegion );
++ void ImplClipBoundaries( Region& rRegion, BOOL bThis, BOOL bOverlaps );
++ BOOL ImplClipChilds( Region& rRegion );
++ void ImplClipAllChilds( Region& rRegion );
++ void ImplClipSiblings( Region& rRegion );
++ void ImplInitWinClipRegion();
++ void ImplInitWinChildClipRegion();
++ Region* ImplGetWinChildClipRegion();
++ void ImplIntersectAndUnionOverlapWindows( const Region& rInterRegion, Region& rRegion );
++ void ImplIntersectAndUnionOverlapWindows2( const Region& rInterRegion, Region& rRegion );
++ void ImplCalcOverlapRegionOverlaps( const Region& rInterRegion, Region& rRegion );
++ void ImplCalcOverlapRegion( const Rectangle& rSourceRect, Region& rRegion,
++ BOOL bChilds, BOOL bParent, BOOL bSiblings );
++ void ImplCallPaint( const Region* pRegion, USHORT nPaintFlags );
++ void ImplCallOverlapPaint();
++ void ImplPostPaint();
++ void ImplInvalidateFrameRegion( const Region* pRegion, USHORT nFlags );
++ void ImplInvalidateOverlapFrameRegion( const Region& rRegion );
++ void ImplInvalidateParentFrameRegion( Region& rRegion );
++ void ImplInvalidate( const Region* rRegion, USHORT nFlags );
++ void ImplValidateFrameRegion( const Region* rRegion, USHORT nFlags );
++ void ImplValidate( const Region* rRegion, USHORT nFlags );
++ void ImplMoveInvalidateRegion( const Rectangle& rRect, long nHorzScroll, long nVertScroll, BOOL bChilds );
++ void ImplMoveAllInvalidateRegions( const Rectangle& rRect, long nHorzScroll, long nVertScroll, BOOL bChilds );
++ void ImplScroll( const Rectangle& rRect, long nHorzScroll, long nVertScroll, USHORT nFlags );
++ void ImplUpdateAll( BOOL bOverlapWindows = TRUE );
++ void ImplUpdateWindowPtr( Window* pWindow );
++ void ImplUpdateWindowPtr();
++ void ImplUpdateOverlapWindowPtr( BOOL bNewFrame );
++ BOOL ImplUpdatePos();
++ void ImplUpdateSysObjPos();
++ void ImplUpdateGlobalSettings( AllSettings& rSettings, BOOL bCallHdl = TRUE );
++ void ImplAlignChilds();
++ void ImplPosSizeWindow( long nX, long nY, long nWidth, long nHeight, USHORT nFlags );
++ void ImplToBottomChild();
++ void ImplCalcToTop( ImplCalcToTopData* pPrevData );
++ void ImplCalcChildOverlapToTop( ImplCalcToTopData* pPrevData );
++ void ImplToTop( USHORT nFlags );
++ void ImplStartToTop( USHORT nFlags );
++ void ImplFocusToTop( USHORT nFlags, BOOL bReallyVisible );
++ void ImplShowAllOverlaps();
++ void ImplHideAllOverlaps();
++ void ImplNotifyKeyMouseCommandEventListeners( NotifyEvent& rNEvt );
++ void ImplCallMouseMove( USHORT nMouseCode, BOOL bModChanged = FALSE );
++ void ImplGenerateMouseMove();
++ void ImplGrabFocus( USHORT nFlags );
++ void ImplInvertFocus( const Rectangle& rRect );
++ void ImplControlFocus( USHORT nFlags = 0 );
++ Window* ImplGetDlgWindow( USHORT n, USHORT nType, USHORT nStart = 0, USHORT nEnd = 0xFFFF, USHORT* pIndex = NULL );
++ BOOL ImplDlgCtrl( const KeyEvent& rKEvt, BOOL bKeyInput );
++ BOOL ImplHasDlgCtrl();
++ void ImplDlgCtrlNextWindow();
++ void ImplDlgCtrlFocusChanged( Window* pWindow, BOOL bGetFocus );
++ Window* ImplFindDlgCtrlWindow( Window* pWindow );
++ long ImplLogicUnitToPixelX( long nX, MapUnit eUnit );
++ long ImplLogicUnitToPixelY( long nY, MapUnit eUnit );
++ BOOL ImplIsWindowInFront( const Window* pTestWindow ) const;
++ void ImplSaveOverlapBackground();
++ BOOL ImplRestoreOverlapBackground( Region& rInvRegion );
++ void ImplDeleteOverlapBackground();
++ void ImplInvalidateAllOverlapBackgrounds();
++ static void ImplNewInputContext();
++ void ImplCallActivateListeners(Window*);
++ void ImplCallDeactivateListeners(Window*);
++ DECL_LINK( ImplHandlePaintHdl, void* );
++ DECL_LINK( ImplGenerateMouseMoveHdl, void* );
++ DECL_LINK( ImplTrackTimerHdl, Timer* );
++ DECL_LINK( ImplAsyncFocusHdl, void* );
++ DECL_LINK( ImplAsyncStateChangedHdl, void* );
++
++ static void ImplCalcSymbolRect( Rectangle& rRect );
++ void ImplHandleScroll( ScrollBar* pHScrl, long nX, ScrollBar* pVScrl, long nY );
++ BOOL ImplGetCurrentBackgroundColor( Color& rCol );
++ BOOL ImplIsAccessibleCandidate() const;
++ BOOL ImplIsAccessibleNativeFrame() const;
++ USHORT ImplGetAccessibleCandidateChildWindowCount( USHORT nFirstWindowType ) const;
++ Window* ImplGetAccessibleCandidateChild( USHORT nChild, USHORT& rChildCount, USHORT nFirstWindowType, BOOL bTopLevel = TRUE ) const;
++ BOOL ImplRegisterAccessibleNativeFrame();
++ void ImplRevokeAccessibleNativeFrame();
++ void ImplCallResize();
++ void ImplCallMove();
++ Rectangle ImplOutputToUnmirroredAbsoluteScreenPixel( const Rectangle& rRect ) const;
++ void ImplMirrorFramePos( Point &pt ) const;
++ long ImplGetUnmirroredOutOffX();
++ void ImplIncModalCount();
++ void ImplDecModalCount();
++
++ Rectangle ImplGetWindowExtentsRelative( Window *pRelativeWindow, BOOL bClientOnly );
++ void ImplNotifyIconifiedState( BOOL bIconified );
++ bool ImplStopDnd();
++ void ImplStartDnd();
++
++ static void ImplInitAppFontData( Window* pWindow );
++ void ImplInitSalControlHandle();
+ #endif
+
+ protected:
+@@ -573,8 +783,8 @@ public:
+
+ void SetBorderStyle( USHORT nBorderStyle );
+ USHORT GetBorderStyle() const;
+- void GetBorder( long& rLeftBorder, long& rTopBorder,
+- long& rRightBorder, long& rBottomBorder ) const;
++ void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
++ sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
+ Size CalcWindowSize( const Size& rOutSz ) const;
+ Size CalcOutputSize( const Size& rWinSz ) const;
+ long CalcTitleWidth() const;
+@@ -594,6 +804,8 @@ public:
+ void SetDialogControlFlags( USHORT nFlags ) { mnDlgCtrlFlags = nFlags; }
+ USHORT GetDialogControlFlags() const { return mnDlgCtrlFlags; }
+
++ BOOL IsMouseOver();
++
+ ULONG GetCurrentModButtons();
+
+ void SetInputContext( const InputContext& rInputContext );
+@@ -616,7 +828,7 @@ public:
+ void SetZoomedPointFont( const Font& rFont );
+ long GetDrawPixel( OutputDevice* pDev, long nPixels ) const;
+ Font GetDrawPixelFont( OutputDevice* pDev ) const;
+- void GetFontResolution( long& nDPIX, long& nDPIY ) const;
++ void GetFontResolution( sal_Int32& nDPIX, sal_Int32& nDPIY ) const;
+
+ void SetControlFont();
+ void SetControlFont( const Font& rFont );
+@@ -641,6 +853,10 @@ public:
+ Region GetWindowClipRegionPixel( USHORT nFlags = 0 ) const;
+ Region GetPaintRegion() const;
+ BOOL IsInPaint() const { return mbInPaint; }
++ // while IsInPaint returns true ExpandPaintClipRegion adds the
++ // submitted region to the paint clip region so you can
++ // paint additional parts of your window if necessary
++ void ExpandPaintClipRegion( const Region& rRegion );
+
+ void SetParent( Window* pNewParent );
+ Window* GetParent() const { return mpRealParent; }
+@@ -687,8 +903,12 @@ public:
+ BOOL IsDefaultPos() const { return mbDefPos; }
+ BOOL IsDefaultSize() const { return mbDefSize; }
+
++ // those conversion routines might deliver different results during UI mirroring
+ Point OutputToScreenPixel( const Point& rPos ) const;
+ Point ScreenToOutputPixel( const Point& rPos ) const;
++ // the normalized screen methods work independent from UI mirroring
++ Point OutputToNormalizedScreenPixel( const Point& rPos ) const;
++ Point NormalizedScreenToOutputPixel( const Point& rPos ) const;
+ Point OutputToAbsoluteScreenPixel( const Point& rPos ) const;
+ Point AbsoluteScreenToOutputPixel( const Point& rPos ) const;
+ Rectangle GetDesktopRectPixel() const;
+@@ -753,6 +964,7 @@ public:
+ BOOL IsChildPointerOverwrite() const { return mbChildPtrOverwrite; }
+ void SetPointerPosPixel( const Point& rPos );
+ Point GetPointerPosPixel();
++ Point GetLastPointerPosPixel();
+ void ShowPointer( BOOL bVisible );
+ BOOL IsPointerVisible() const { return !mbNoPtrVisible; }
+ void EnterWait();
+@@ -852,11 +1060,11 @@ public:
+ ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > GetAccessible( BOOL bCreate = TRUE );
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
+ void SetAccessible( ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > );
+-
++
+ Window* GetAccessibleParentWindow() const;
+ USHORT GetAccessibleChildWindowCount();
+ Window* GetAccessibleChildWindow( USHORT n );
+-
++
+ void SetAccessibleRole( USHORT nRole );
+ USHORT GetAccessibleRole() const;
+
+@@ -900,6 +1114,52 @@ public:
+ // Clipboard/Selection interfaces
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::clipboard::XClipboard > GetClipboard();
+ virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::clipboard::XClipboard > GetSelection();
++
++ //-------------------------------------
++ // Native Widget Rendering functions
++ //-------------------------------------
++
++ // form controls must never use native widgets, this can be toggled here
++ void EnableNativeWidget( BOOL bEnable = TRUE );
++ BOOL IsNativeWidgetEnabled() const;
++
++ // These all just call through to the private mpFrame functions of the same name.
++
++ // Query the platform layer for control support
++ BOOL IsNativeControlSupported( ControlType nType, ControlPart nPart );
++
++ // Query the native control to determine if it was acted upon
++ BOOL HitTestNativeControl( ControlType nType,
++ ControlPart nPart,
++ const Region& rControlRegion,
++ const Point& aPos,
++ BOOL& rIsInside );
++
++ // Request rendering of a particular control and/or part
++ BOOL DrawNativeControl( ControlType nType,
++ ControlPart nPart,
++ const Region& rControlRegion,
++ ControlState nState,
++ const ImplControlValue& aValue,
++ rtl::OUString aCaption );
++
++ // Request rendering of a caption string for a control
++ BOOL DrawNativeControlText( ControlType nType,
++ ControlPart nPart,
++ const Region& rControlRegion,
++ ControlState nState,
++ const ImplControlValue& aValue,
++ rtl::OUString aCaption );
++
++ // Query the native control's actual drawing region (including adornment)
++ BOOL GetNativeControlRegion( ControlType nType,
++ ControlPart nPart,
++ const Region& rControlRegion,
++ ControlState nState,
++ const ImplControlValue& aValue,
++ rtl::OUString aCaption,
++ Region &rNativeBoundingRegion,
++ Region &rNativeContentRegion );
+ };
+
+ inline void Window::SetPosPixel( const Point& rNewPos )
+Index: vcl/inc/wintypes.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/wintypes.hxx,v
+retrieving revision 1.14
+retrieving revision 1.17
+diff -u -p -u -r1.14 -r1.17
+--- vcl/inc/wintypes.hxx 11 Apr 2003 17:27:04 -0000 1.14
++++ vcl/inc/wintypes.hxx 10 May 2004 15:44:37 -0000 1.17
+@@ -154,14 +154,15 @@ typedef USHORT WindowType;
+ #define WINDOW_TREELISTBOX (WINDOW_FIRST + 0x4d)
+ #define WINDOW_HELPTEXTWINDOW (WINDOW_FIRST + 0x4e)
+ #define WINDOW_INTROWINDOW (WINDOW_FIRST + 0x4f)
+-#define WINDOW_LAST (WINDOW_INTROWINDOW)
++#define WINDOW_LISTBOXWINDOW (WINDOW_FIRST + 0x50)
++#define WINDOW_LAST (WINDOW_LISTBOXWINDOW)
+
+
+ // ---------------
+ // - Window-Bits -
+ // ---------------
+
+-// By changes you must also change: tools/vclrsc.hxx
++// By changes you must also change: rsc/vclrsc.hxx
+ typedef sal_Int64 WinBits;
+
+ // Window-Bits fuer Window
+Index: vcl/inc/wrkwin.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/wrkwin.hxx,v
+retrieving revision 1.7
+retrieving revision 1.9
+diff -u -p -u -r1.7 -r1.9
+--- vcl/inc/wrkwin.hxx 11 Apr 2003 17:27:14 -0000 1.7
++++ vcl/inc/wrkwin.hxx 17 Jun 2004 11:43:45 -0000 1.9
+@@ -96,20 +92,10 @@ private:
+ BOOL mbPresentationMode:1,
+ mbPresentationVisible:1,
+ mbPresentationFull:1,
+- mbFullScreenMode:1,
+- mbDummy0:1,
+- mbDummy1:1,
+- mbDummy2:1,
+- mbDummy3:1,
+- mbDummy4:1,
+- mbDummy5:1,
+- mbDummy6:1,
+- mbDummy7:1;
++ mbFullScreenMode:1;
+
+-#ifdef _SV_WRKWIN_CXX
+ void ImplInitData();
+ void ImplInit( Window* pParent, WinBits nStyle, const ::com::sun::star::uno::Any& aSystemWorkWindowToken );
+-#endif
+
+ protected:
+ WorkWindow( WindowType nType );
+@@ -124,6 +110,8 @@ public:
+ WorkWindow( SystemParentData* pParent ); // Not in the REMOTE-Version
+ ~WorkWindow();
+
++ virtual BOOL Close();
++
+ void ShowFullScreenMode( BOOL bFullScreenMode = TRUE );
+ void EndFullScreenMode() { ShowFullScreenMode( FALSE ); }
+ BOOL IsFullScreenMode() const { return mbFullScreenMode; }
+@@ -136,16 +124,14 @@ public:
+
+ BOOL SetPluginParent( SystemParentData* pParent );
+
+-#ifndef NOOLDSV
+ void Minimize();
+- void Maximize();
+ void Restore();
+
+- BOOL IsMaximized() const;
+
+ void SetOptOutputSizePixel( const Size& ) {}
+ Size GetOptOutputSizePixel() const { return Size(); }
+-#endif
++ void Maximize( BOOL bMaximize = TRUE );
++ BOOL IsMaximized();
+ };
+
+ #endif // _SV_WRKWIN_HXX
+Index: vcl/inc/xconnection.hxx
+===================================================================
+RCS file: /cvs/gsl/vcl/inc/xconnection.hxx,v
+retrieving revision 1.2
+retrieving revision 1.3
+diff -u -p -u -r1.2 -r1.3
+--- vcl/inc/xconnection.hxx 11 Sep 2001 15:52:21 -0000 1.2
++++ vcl/inc/xconnection.hxx 6 Jan 2004 13:08:25 -0000 1.3
+@@ -78,7 +78,7 @@
+ #include <com/sun/star/uno/Reference.hxx>
+ #endif
+
+-#ifndef __SGI_STL_LIST
++#ifndef _STLP_LIST
+ #include <list>
+ #endif
+
diff --git a/patches/OOO_1_1_2/vcl-source-glyphs.diff b/patches/OOO_1_1_2/vcl-source-glyphs.diff
new file mode 100644
index 000000000..b401f7d15
--- /dev/null
+++ b/patches/OOO_1_1_2/vcl-source-glyphs.diff
@@ -0,0 +1,792 @@
+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 @@
+ *
+ ************************************************************************/
+
+-#if defined(WIN32)
+-#ifndef _SV_SVSYS_HXX
+-
++#ifdef WNT
+ #include <svsys.h>
+ #undef CreateFont
+ #endif
+-#endif
+
+ #include <gcach_ftyp.hxx>
+
+@@ -72,17 +70,25 @@
+ #include <outfont.hxx>
+ #include <bitmap.hxx>
+ #include <bmpacc.hxx>
+-#include <poly.hxx>
++
++#ifndef _TL_POLY_HXX
++#include <tools/poly.hxx>
++#endif
+
+ #include <osl/file.hxx>
+ #include <osl/thread.hxx>
+
+-#include "freetype/freetype.h"
+-#include "freetype/ftglyph.h"
+-#include "freetype/ftoutln.h"
+-#include "freetype/tttables.h"
+-#include "freetype/tttags.h"
+-#include "freetype/ttnameid.h"
++#ifndef INCLUDED_RTL_INSTANCE_HXX
++#include <rtl/instance.hxx>
++#endif
++
++#include "ft2build.h"
++#include FT_FREETYPE_H
++#include FT_GLYPH_H
++#include FT_OUTLINE_H
++#include FT_TRUETYPE_TABLES_H
++#include FT_TRUETYPE_TAGS_H
++#include FT_TRUETYPE_IDS_H
+
+ #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
++ )
++:
+ maFontData( rFontData ),
++ mpFontFile( FtFontFile::FindFontFile( rNativeFileName ) ),
+ mnFaceNum( nFaceNum ),
+- mnFontId( nFontId ),
+ mnSynthetic( nSynthetic ),
++ mnFontId( nFontId ),
+ 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
+ // =======================================================================
+
+ FreetypeManager::FreetypeManager()
+-: mnNextFontId( 0x1000 ),
+- mnMaxFontId( 0 )
++: mnMaxFontId( 0 ), mnNextFontId( 0x1000 )
+ {
+ FT_Error rcFT = FT_Init_FreeType( &aLibFT );
+-
++
+ #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
+ rcOSL = aDirItem.getFileStatus( aFileStatus );
+
+ ::rtl::OUString aUSytemPath;
+- OSL_VERIFY( osl_File_E_None
+- == ::osl::FileBase::getSystemPathFromFileURL( aFileStatus.getFileURL(), aUSytemPath ));
++ OSL_VERIFY( osl::FileBase::E_None
++ == osl::FileBase::getSystemPathFromFileURL( aFileStatus.getFileURL(), aUSytemPath ));
+ ::rtl::OString aCFileName = rtl::OUStringToOString( aUSytemPath, theEncoding );
+ const char* pszFontFileName = aCFileName.getStr();
+
+@@ -556,8 +609,21 @@ long FreetypeManager::FetchFontList( Imp
+ for( FontList::const_iterator it(maFontList.begin()); it != maFontList.end(); ++it, ++nCount )
+ {
+ const FtFontInfo& rFFI = *it->second;
+- ImplFontData* pFontData = new ImplFontData( rFFI.GetFontData() );
+- pToAdd->Add( pFontData );
++ rtl::OUString aFamilyName = rFFI.GetFontData().maName;
++ sal_Int32 nIndex = 0;
++ rtl::OUString aAliasNames = rFFI.GetFontData().maMapNames;
++
++ do
++ {
++ ImplFontData* pFontData = new ImplFontData( rFFI.GetFontData() );
++ pFontData->maName = aFamilyName;
++ pFontData->maMapNames.Erase();
++ pToAdd->Add( pFontData );
++ if( nIndex >= 0 )
++ aFamilyName = aAliasNames.getToken( 0, ';', nIndex );
++ else
++ aFamilyName = rtl::OUString();
++ } while( aFamilyName.getLength() );
+ }
+
+ 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
+ case GF_ROTL: // left
+ nAngle += 900;
+ bStretched = (mfStretch != 1.0);
+- aVector.x = +rMetrics.descender * mfStretch;
++ aVector.x = (long)((double)+rMetrics.descender * mfStretch);
+ aVector.y = -rMetrics.ascender;
+- aMatrix.xx = -nSin / mfStretch;
+- aMatrix.yy = -nSin * mfStretch;
+- aMatrix.xy = -nCos * mfStretch;
+- aMatrix.yx = +nCos / mfStretch;
++ aMatrix.xx = (long)((double)-nSin / mfStretch);
++ aMatrix.yy = (long)((double)-nSin * mfStretch);
++ aMatrix.xy = (long)((double)-nCos * mfStretch);
++ aMatrix.yx = (long)((double)+nCos / mfStretch);
+ break;
+ case GF_ROTR: // right
+ nAngle -= 900;
+ bStretched = (mfStretch != 1.0);
+ aVector.x = -maFaceFT->glyph->metrics.horiAdvance;
+- aVector.x += (rMetrics.descender * nSin/65536.0);
+- aVector.y = -(rMetrics.descender * mfStretch * nCos/65536.0);
+- aMatrix.xx = +nSin / mfStretch;
+- aMatrix.yy = +nSin * mfStretch;
+- aMatrix.xy = +nCos * mfStretch;
+- aMatrix.yx = -nCos / mfStretch;
++ aVector.x += (long)((double)rMetrics.descender * nSin/65536.0);
++ aVector.y = -(long)((double)rMetrics.descender * mfStretch * nCos/65536.0);
++ aMatrix.xx = (long)((double)+nSin / mfStretch);
++ aMatrix.yy = (long)((double)+nSin * mfStretch);
++ aMatrix.xy = (long)((double)+nCos * mfStretch);
++ aMatrix.yx = (long)((double)-nCos / mfStretch);
+ break;
+ }
+
+@@ -1049,9 +1137,9 @@ void FreetypeServerFont::InitGlyphData(
+ if( nGlyphFlags & GF_ROTMASK ) { // for bVertical rotated glyphs
+ const FT_Size_Metrics& rMetrics = maFaceFT->size->metrics;
+ #if (FTVERSION < 2000)
+- nCharWidth = (rMetrics.height - rMetrics.descender) * mfStretch;
++ nCharWidth = (long)((double)(rMetrics.height - rMetrics.descender) * mfStretch);
+ #else
+- nCharWidth = (rMetrics.height + rMetrics.descender) * mfStretch;
++ nCharWidth = (long)((double)(rMetrics.height + rMetrics.descender) * mfStretch);
+ #endif
+ }
+ rGD.SetCharWidth( (nCharWidth + 32) >> 6 );
+@@ -1314,34 +1402,6 @@ ULONG FreetypeServerFont::GetFontCodeRan
+ {
+ int nRangeCount = 0;
+
+-#if 0 && (FTVERSION >= 2102)
+- // TODO: enable new version when it is fast enough for big fonts
+- // TODO: implement Get_Next_Missing_Char() and use this
+- FT_UInt nGlyphIndex = 0;
+- sal_uInt32 aChar = FT_Get_First_Char( maFaceFT, &nGlyphIndex );
+- if( nGlyphIndex )
+- nRangeCount = 1;
+- if( pCodes )
+- *(pCodes++) = aChar; // start of first range
+- for(;;)
+- {
+- sal_uInt32 bChar = FT_Get_Next_Char( maFaceFT, aChar, &nGlyphIndex );
+- if( !nGlyphIndex )
+- break;
+- if( bChar != aChar+1 )
+- {
+- ++nRangeCount;
+- if( pCodes )
+- {
+- *(pCodes++) = aChar+1; // end of old range
+- *(pCodes++) = bChar; // start of new range
+- }
+- }
+- aChar = bChar;
+- }
+- if( pCodes && nRangeCount )
+- *(pCodes++) = aChar+1; // end of last range
+-#else
+ const unsigned char* pCmap = NULL;
+ ULONG nLength = 0;
+ if( FT_IS_SFNT( maFaceFT ) )
+@@ -1409,8 +1469,6 @@ ULONG FreetypeServerFont::GetFontCodeRan
+ *(pCodes++) = cCode;
+ }
+ }
+-#endif
+-
+ 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
+@@ -65,11 +65,15 @@
+ #include <glyphcache.hxx>
+ #include <rtl/textcvt.h>
+
+-typedef int FT_Int;
+-struct FT_GlyphRec_;
++#include "ft2build.h"
++#include FT_FREETYPE_H
++#include FT_GLYPH_H
++#include FT_OUTLINE_H
++#include FT_TRUETYPE_TABLES_H
++#include FT_TRUETYPE_TAGS_H
++#include FT_TRUETYPE_IDS_H
+ class FreetypeServerFont;
+-struct FT_FaceRec_;
+-struct FT_SizeRec_;
++struct FT_GlyphRec_;
+
+ // -----------------------------------------------------------------------
+
+@@ -87,7 +85,6 @@ public:
+ const unsigned char* GetBuffer() const { return mpFileMap; }
+ int GetFileSize() const { return mnFileSize; }
+ const ::rtl::OString* GetFileName() const { return &maNativeFileName; }
+-
+ 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:
+ const unsigned char* GetTable( const char* pName, ULONG* pLength )
+ { return mpFontInfo->GetTable( pName, pLength ); }
+ int GetEmUnits() const;
++ const FT_Size_Metrics& GetMetricsFT() const { return maSizeFT->metrics; }
+
+ protected:
+-friend GlyphCache;
++ friend class GlyphCache;
+
+ int ApplyGlyphTransform( int nGlyphFlags, FT_GlyphRec_* ) const;
+ 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 @@
+ ************************************************************************/
+
+ #define ENABLE_ICU_LAYOUT
+-#if OSL_DEBUG_LEVEL > 1
+-//#define VERBOSE_DEBUG
+-#endif
+-
+-#if !defined(_SV_SALUNX_HXX) && !defined(WIN32)
+-#include <salunx.h>
+-#endif
+
+ #ifndef _SV_GCACHFTYP_HXX
+-#include <freetype/freetype.h>
+ #include <gcach_ftyp.hxx>
+ #endif
+
+ #ifndef _SV_SALLAYOUT_HXX
+ #include <sallayout.hxx>
+ #endif
++#ifndef _SV_SALGDI_HXX
++#include <salgdi.hxx>
++#endif
+
+ #ifdef WIN32
+ #include <malloc.h>
+ #define alloca _alloca
+-#elif !defined(FREEBSD) && !defined(NETBSD) && !defined(MACOSX)
+-#include <alloca.h>
++#elif defined(SOLARIS) || defined(IRIX)
++ #include <alloca.h>
++#else
++#ifndef MACOSX
++ #include <malloc.h>
++#endif
+ #endif
+
+ #if OSL_DEBUG_LEVEL > 1
+ #include <cstdio>
+ #endif
+@@ -446,6 +446,13 @@
+ meScriptCode( USCRIPT_INVALID_CODE )
+ {}
+
++void ServerFontLayout::DrawText( SalGraphics& rSalGraphics ) const
++{
++ rSalGraphics.DrawServerFontLayout( *this );
++}
++
++//--------------------------------------------------------------------------
++
+ // -----------------------------------------------------------------------
+
+ 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
+@@ -64,7 +64,7 @@
+ //------------------------------------------------------------------------
+
+ RawBitmap::RawBitmap()
+-: mnAllocated(0), mpBits(0)
++: mpBits(0), mnAllocated(0)
+ {}
+
+ //------------------------------------------------------------------------
+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
+@@ -75,10 +75,6 @@
+
+ long VirtDevServerFont::FetchFontList( ImplDevFontList* pToAdd )
+ {
+-#if 0
+- // TODO: add fonts on server but not on client to the list
+- long nCount = 0;
+-#else
+ // TODO: get fonts on server but not on client,
+ // problem is that currently there is no serverside virtual device...
+ VirtualDevice vdev( 1 );
+@@ -112,8 +108,6 @@ long VirtDevServerFont::FetchFontList( I
+
+ pToAdd->Add( new ImplFontData( rData ) ); // TODO: avoid copy if possible
+ }
+-#endif
+-
+ return nCount;
+ }
+
+@@ -202,13 +197,16 @@ void VirtDevServerFont::InitGlyphData( i
+ vdev.SetFont( aFont );
+
+ // get glyph metrics
+- long nCharWidth = 10;
++ sal_Int32 nCharWidth = 10;
+ // TODO: vdev.GetCharWidth( nGlyphIndex, nGlyphIndex, &nCharWidth );
+ rGD.SetCharWidth( nCharWidth );
+
+- const Rectangle aRect = vdev.GetTextRect( aRect, nGlyphIndex );
++ const Rectangle aRect = vdev.GetTextRect(
++ aRect, String(static_cast< sal_Unicode >(nGlyphIndex)) );
+ rGD.SetOffset( aRect.Top(), aRect.Left() );
+- rGD.SetDelta( vdev.GetTextWidth( nGlyphIndex ), 0 );
++ rGD.SetDelta(
++ vdev.GetTextWidth( String(static_cast< sal_Unicode >(nGlyphIndex)) ),
++ 0 );
+ rGD.SetSize( aRect.GetSize() );
+ }
+
+@@ -223,7 +221,7 @@ bool VirtDevServerFont::GetAntialiasAdvi
+
+ bool VirtDevServerFont::GetGlyphBitmap1( int nGlyphIndex, RawBitmap& ) const
+ {
+-#if 0
++ /*
+ // draw bitmap
+ vdev.SetOutputSizePixel( aSize, TRUE );
+ vdev.DrawText( Point(0,0)-rGD.GetMetric().GetOffset(), nGlyphIndex );
+@@ -233,9 +231,8 @@ bool VirtDevServerFont::GetGlyphBitmap1(
+ const Bitmap& rBitmap = vdev.GetBitmap( Point(0,0), aSize );
+ rGD.SetBitmap( new Bitmap( rBitmap ) );
+ return true;
+-#else
++ */
+ return false;
+-#endif
+ }
+
+ // -----------------------------------------------------------------------
+@@ -295,9 +292,8 @@ ULONG VirtDevServerFont::GetKernPairs( I
+
+ bool VirtDevServerFont::GetGlyphOutline( int nGlyphIndex, PolyPolygon& rPolyPoly ) const
+ {
+-#if 1
+ return false;
+-#else
++ /*
+ Font aFont;
+ aFont.SetName ( GetFontSelData().maName );
+ aFont.SetStyleName ( GetFontSelData().maStyleName );
+@@ -311,7 +307,7 @@ bool VirtDevServerFont::GetGlyphOutline(
+
+ const bool bOptimize = true;
+ return vdev.GetGlyphOutline( nGlyphIndex, rPolyPoly, bOptimize );
+-#endif
++ */
+ }
+
+ // =======================================================================
+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
+@@ -72,7 +72,7 @@ public:
+ virtual bool GetGlyphOutline( int nGlyphIndex, PolyPolygon& ) const;
+
+ protected:
+-friend GlyphCache;
++ friend class GlyphCache;
+ static long FetchFontList( ImplDevFontList* );
+ static void ClearFontList();
+
+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
+@@ -88,8 +88,8 @@ GlyphCache::GlyphCache( ULONG nMaxSize )
+ mnBytesUsed(sizeof(GlyphCache)),
+ mnLruIndex(0),
+ mnGlyphCount(0),
+- mpFtManager(NULL),
+- mpCurrentGCFont(NULL)
++ mpCurrentGCFont(NULL),
++ mpFtManager(NULL)
+ {
+ mpFtManager = new FreetypeManager;
+ }
+@@ -167,7 +167,7 @@ void GlyphCache::RemoveFont( const ImplF
+ FontList::iterator it_next = maFontList.begin(), it;
+ while( it_next != maFontList.end() )
+ {
+- it = it_next++;
++ it = it_next++;
+ 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()
+ FontList::iterator it_next = maFontList.begin(), it;
+ while( it_next != maFontList.end() )
+ {
+- it = it_next++;
++ it = it_next++;
+ 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),
+ mnExtInfo(0),
+ mnRefCount(1),
+ mnBytesUsed( sizeof(ServerFont) ),
+- mpNextGCFont( NULL ),
+ 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
+ GlyphList::iterator it_next = maGlyphList.begin(), it;
+ while( it_next != maGlyphList.end() )
+ {
+- it = it_next++;
++ it = it_next++;
+ GlyphData& rGD = it->second;
+ if( (nMinLruIndex - rGD.GetLruValue()) > 0 )
+ {
+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
+ SLOFILES=\
+ $(SLO)$/glyphcache.obj \
+ $(SLO)$/gcach_rbmp.obj \
++ $(SLO)$/gcach_layout.obj \
+ $(SLO)$/gcach_vdev.obj \
+ $(SLO)$/gcach_ftyp.obj
+-.IF "$(ENABLE_CTL)" != ""
+-SLOFILES+=$(SLO)$/gcach_layout.obj
+-.ENDIF
+ .ENDIF
+
+ # --- Targets ------------------------------------------------------
diff --git a/patches/OOO_1_1_2/vcl-unx-source-gdi.diff b/patches/OOO_1_1_2/vcl-unx-source-gdi.diff
new file mode 100644
index 000000000..29d649121
--- /dev/null
+++ b/patches/OOO_1_1_2/vcl-unx-source-gdi.diff
@@ -0,0 +1,9805 @@
+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
+@@ -64,14 +64,12 @@
+ #include <salunx.h>
+ #include <saldisp.hxx>
+ #include <cdeint.hxx>
+-#include <salframe.hxx>
+ #include <settings.hxx>
+
+ #include <tools/stream.hxx>
+ #include <tools/debug.hxx>
+
+-CDEIntegrator::CDEIntegrator( SalFrame* pFrame ) :
+- DtIntegrator( pFrame )
++CDEIntegrator::CDEIntegrator()
+ {
+ meType = DtCDE;
+ 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
+@@ -72,10 +72,8 @@
+ #include <cdeint.hxx>
+ #endif
+ #include <kdeint.hxx>
+-#include <gnomeint.hxx>
+ #include <saldisp.hxx>
+ #include <saldata.hxx>
+-#include <salframe.hxx>
+ #include <wmadaptor.hxx>
+
+ #include <svapp.hxx>
+@@ -103,16 +101,12 @@ BOOL bSymbolLoadFailed = FALSE;
+ DtIntegratorList DtIntegrator::aIntegratorList;
+ String DtIntegrator::aHomeDir;
+
+-DtIntegrator::DtIntegrator( SalFrame* pFrame ) :
+- mpSalFrame( pFrame ),
++DtIntegrator::DtIntegrator() :
+ meType( DtGeneric ),
+ mnRefCount( 0 ),
+ mnSystemLookCommandProcess( -1 )
+ {
+- if( pFrame )
+- mpSalDisplay = pFrame->maFrameData.GetDisplay();
+- else
+- mpSalDisplay = GetSalData()->GetDefDisp();
++ mpSalDisplay = GetSalData()->GetDisplay();
+ mpDisplay = mpSalDisplay->GetDisplay();
+ aIntegratorList.Insert( this, LIST_APPEND );
+ static const char* pHome = getenv( "HOME" );
+@@ -123,16 +117,12 @@ DtIntegrator::~DtIntegrator()
+ {
+ }
+
+-DtIntegrator* DtIntegrator::CreateDtIntegrator( SalFrame* pFrame )
++DtIntegrator* DtIntegrator::CreateDtIntegrator()
+ {
+- // hack for sclient
+- if( ! pFrame && aIntegratorList.Count() )
+- return aIntegratorList.GetObject( 0 );
+-
+- SalDisplay* pSalDisplay = pFrame ? pFrame->maFrameData.GetDisplay() : GetSalData()->GetDefDisp();
++ SalDisplay* pSalDisplay = GetSalData()->GetDisplay();
+ Display* pDisplay = pSalDisplay->GetDisplay();
+
+- for( int i = 0; i < aIntegratorList.Count(); i++ )
++ for( unsigned int i = 0; i < aIntegratorList.Count(); i++ )
+ {
+ DtIntegrator* pIntegrator = aIntegratorList.GetObject( i );
+ if( pIntegrator->mpDisplay == pDisplay )
+@@ -150,14 +140,12 @@ DtIntegrator* DtIntegrator::CreateDtInte
+ OString aOver( pOverride );
+ #if USE_CDE
+ if( aOver.equalsIgnoreAsciiCase( "cde" ) )
+- return new CDEIntegrator( pFrame );
++ return new CDEIntegrator();
+ #endif
+ if( aOver.equalsIgnoreAsciiCase( "kde" ) )
+- return new KDEIntegrator( pFrame );
+- if( aOver.equalsIgnoreAsciiCase( "gnome" ) )
+- return new GNOMEIntegrator( pFrame );
++ return new KDEIntegrator();
+ if( aOver.equalsIgnoreAsciiCase( "none" ) )
+- return new DtIntegrator( pFrame );
++ return new DtIntegrator();
+ }
+
+ Atom nDtAtom = None;
+@@ -168,461 +156,20 @@ DtIntegrator* DtIntegrator::CreateDtInte
+ // check dt type
+ // CDE
+ nDtAtom = XInternAtom( pDisplay, "_DT_WM_READY", True );
+- if( nDtAtom && ( pLibrary = dlopen( "libDtSvc.so", DLOPEN_MODE ) ) )
++ if( nDtAtom && ( pLibrary = dlopen( "/usr/dt/lib/libDtSvc.so", DLOPEN_MODE ) ) )
+ {
+ dlclose( pLibrary );
+- return new CDEIntegrator( pFrame );
++ return new CDEIntegrator();
+ }
+ #endif
+
+ if( pSalDisplay->getWMAdaptor()->getWindowManagerName().EqualsAscii( "KWin" ) )
+- return new KDEIntegrator( pFrame );
+-
+- // actually this is not that good an indicator for a GNOME running
+- // but there currently does not seem to be a better one
+- nDtAtom = XInternAtom( pDisplay, "GNOME_SM_PROXY", True );
+- Atom nDtAtom2 = XInternAtom( pDisplay, "NAUTILUS_DESKTOP_WINDOW_ID", True );
+- if( nDtAtom || nDtAtom2 )
+- {
+- int nProperties = 0;
+- Atom* pProperties = XListProperties( pDisplay, pSalDisplay->GetRootWindow(), &nProperties );
+- if( pProperties && nProperties )
+- {
+- for( int i = 0; i < nProperties; i++ )
+- if( pProperties[ i ] == nDtAtom ||
+- pProperties[ i ] == nDtAtom2 )
+- {
+- XFree( pProperties );
+- return new GNOMEIntegrator( pFrame );
+- }
+- XFree( pProperties );
+- }
+- }
++ return new KDEIntegrator();
+
+ // default: generic implementation
+- return new DtIntegrator( pFrame );
++ return new DtIntegrator();
+ }
+
+ void DtIntegrator::GetSystemLook( AllSettings& rSettings )
+ {
+-}
+-
+-Color DtIntegrator::parseColor( const ByteString& rLine )
+-{
+- Color aColor;
+-
+- xub_StrLen nPos1 = rLine.Search( '(' );
+- xub_StrLen nPos2 = rLine.Search( ')', nPos1 != STRING_NOTFOUND ? nPos1 : 0 );
+- if( nPos1 != STRING_NOTFOUND && nPos2 != STRING_NOTFOUND
+- && (int)nPos2 - (int)nPos1 > 5 )
+- {
+- ByteString aTriple( rLine.Copy( nPos1+1, nPos2-nPos1-1 ) );
+- xub_StrLen nIndex = 0;
+- int nRed, nGreen, nBlue, nColor = 0;
+- do
+- {
+- switch( nColor )
+- {
+- case 0: nRed = aTriple.GetToken( 0, ',', nIndex ).ToInt32();break;
+- case 1: nGreen = aTriple.GetToken( 0, ',', nIndex ).ToInt32();break;
+- case 2: nBlue = aTriple.GetToken( 0, ',', nIndex ).ToInt32();break;
+- }
+- nColor++;
+- } while( nIndex != STRING_NOTFOUND );
+- if( nColor == 3 )
+- {
+- aColor = Color( nRed, nGreen, nBlue );
+- }
+- }
+- return aColor;
+-}
+-
+-Font DtIntegrator::parseFont( const ByteString& rLine )
+-{
+- Font aFont;
+-
+- xub_StrLen nPos1 = rLine.Search( '"' );
+- xub_StrLen nPos2 = rLine.Search( '"', nPos1 != STRING_NOTFOUND ? nPos1+1 : 0 );
+- if( nPos1 != STRING_NOTFOUND && nPos2 != STRING_NOTFOUND
+- && (int)nPos2 - (int)nPos1 > 1 )
+- {
+- aFont.SetName( String( rLine.Copy( nPos1+1, nPos2-nPos1-1 ), osl_getThreadTextEncoding() ) );
+- xub_StrLen nIndex = nPos2;
+- ByteString aToken = rLine.GetToken( 1, ',', nIndex );
+- if( aToken.Len() )
+- {
+- int nPixelHeight = aToken.ToInt32();
+- long nDPIX, nDPIY;
+- long nDispDPIY = mpSalDisplay->GetResolution().B();
+- mpSalDisplay->GetScreenFontResolution( nDPIX, nDPIY );
+- int nHeight = nPixelHeight * nDispDPIY / nDPIY;
+- // allow for rounding in back conversion (at SetFont)
+- while( (nHeight * nDPIY / nDispDPIY) > nPixelHeight )
+- nHeight--;
+- while( (nHeight * nDPIY / nDispDPIY) < nPixelHeight )
+- nHeight++;
+- aFont.SetHeight( nHeight );
+- }
+- while( nIndex != STRING_NOTFOUND )
+- {
+- aToken = rLine.GetToken( 0, ',', nIndex );
+- if( aToken.Equals( "bold" ) )
+- aFont.SetWeight( WEIGHT_BOLD );
+- else if( aToken.Equals( "light" ) )
+- aFont.SetWeight( WEIGHT_LIGHT );
+- else if( aToken.Equals( "italic" ) )
+- aFont.SetItalic( ITALIC_NORMAL );
+- }
+- }
+- return aFont;
+-}
+-
+-bool DtIntegrator::StartSystemLookProcess( const char* pCommand )
+-{
+- ByteString aCommand, aArgWindow;
+- if( pCommand[0] == '/' )
+- aCommand = pCommand;
+- else
+- {
+- OUString aExec;
+- OUString aSys;
+- osl_getExecutableFile( &aExec.pData );
+- if( osl_File_E_None != osl_getSystemPathFromFileURL( aExec.pData, &aSys.pData ) )
+- return false; // huh ?
+- aCommand = ByteString( String( aSys ), osl_getThreadTextEncoding() );
+- aCommand.Erase( aCommand.SearchBackward( '/' )+1 );
+- aCommand.Append( pCommand );
+- }
+- aArgWindow = ByteString::CreateFromInt32( mpSalDisplay->GetDrawable() );
+- mnSystemLookCommandProcess = fork();
+- if( mnSystemLookCommandProcess == 0 )
+- {
+-#if OSL_DEBUG_LEVEL > 1
+- fprintf( stderr, "exec( \"%s --vcl-system-settings-window %s\" )\n", aCommand.GetBuffer(), aArgWindow.GetBuffer() );
+-#endif
+- int nRedirect = open( "/dev/null", O_WRONLY );
+- if( nRedirect != -1 )
+- {
+- dup2( nRedirect, STDOUT_FILENO );
+- dup2( nRedirect, STDERR_FILENO );
+- }
+- execl( aCommand.GetBuffer(), aCommand.GetBuffer(), "--vcl-system-settings-window", aArgWindow.GetBuffer(), NULL );
+- _exit(1);
+- }
+- return mnSystemLookCommandProcess != -1;
+-}
+-
+-void DtIntegrator::GetSystemLook( const char* pCommand, AllSettings& rSettings )
+-{
+- BOOL bRet = FALSE;
+- std::list< ByteString > aLines;
+-
+- if( pCommand )
+- {
+- char pBuffer[1024];
+- FILE* pOutput = NULL;
+-
+- ByteString aCommand;
+- if( pCommand[0] == '/' )
+- aCommand = pCommand;
+- else
+- {
+- OUString aExec;
+- OUString aSys;
+- osl_getExecutableFile( &aExec.pData );
+- if( osl_File_E_None != osl_getSystemPathFromFileURL( aExec.pData, &aSys.pData ) )
+- return; // huh ?
+- aCommand = ByteString( String( aSys ), osl_getThreadTextEncoding() );
+- aCommand.Erase( aCommand.SearchBackward( '/' )+1 );
+- aCommand.Append( pCommand );
+- }
+-#if OSL_DEBUG_LEVEL < 2
+- aCommand.Append( " 2>/dev/null" );
+-#endif
+- pOutput = popen( aCommand.GetBuffer(), "r" );
+-#if OSL_DEBUG_LEVEL > 1
+- fprintf( stderr, "popen( \"%s\", \"r\" ) = %p\n", aCommand.GetBuffer(), pOutput );
+-#endif
+- while( fgets( pBuffer, sizeof( pBuffer ), pOutput ) )
+- {
+- aLines.push_back( ByteString( pBuffer ) );
+- }
+- pclose( pOutput );
+- }
+- else if( ! pCommand && mnSystemLookCommandProcess != -1 )
+- {
+- // get the lines from the VCL_SYSTEM_SETTINGS property
+- Atom nType = 0;
+- int nFormat = 0;
+- unsigned long nItems = 0, nBytes = 0;
+- char* pData = NULL;
+- // query size of the property
+- XGetWindowProperty( mpSalDisplay->GetDisplay(),
+- mpSalDisplay->GetDrawable(),
+- mpSalDisplay->getWMAdaptor()->getAtom( WMAdaptor::VCL_SYSTEM_SETTINGS ),
+- 0, 0,
+- False,
+- XA_STRING,
+- &nType,
+- &nFormat,
+- &nItems,
+- &nBytes,
+- (unsigned char**)&pData );
+- if( nBytes )
+- {
+- // query the actual data
+- XGetWindowProperty( mpSalDisplay->GetDisplay(),
+- mpSalDisplay->GetDrawable(),
+- mpSalDisplay->getWMAdaptor()->getAtom( WMAdaptor::VCL_SYSTEM_SETTINGS ),
+- 0, (nBytes+3)/4,
+- False,
+- XA_STRING,
+- &nType,
+- &nFormat,
+- &nItems,
+- &nBytes,
+- (unsigned char**)&pData );
+- // sanity check
+- if( nFormat == 8 && nType == XA_STRING && nItems )
+- {
+-#if OSL_DEBUG_LEVEL > 1
+- fprintf( stderr, "got %d data items:\n%.*s", nItems, nItems, pData );
+-#endif
+- // fill in the lines
+- char* pRun = pData;
+- char* pLastLine = pData;
+- while( (pRun-pData) <= nItems )
+- {
+- if( *pRun == '\n' )
+- {
+- if( pRun-pLastLine > 1 )
+- {
+- aLines.push_back( ByteString( pLastLine, pRun - pLastLine ) );
+- pLastLine = pRun+1;
+- }
+- }
+- pRun++;
+- }
+- }
+-#if OSL_DEBUG_LEVEL > 1
+- else
+- fprintf( stderr, "query of data failed with nFormat = %d, nType = %d, nItems = %d\n", nFormat, nType, nItems );
+-#endif
+- XFree( pData );
+- }
+-#if OSL_DEBUG_LEVEL > 1
+- else
+- fprintf( stderr, "query of bytes failed\n" );
+-#endif
+- }
+-
+- // nothing to do ?
+- if( aLines.begin() == aLines.end() )
+- return;
+-
+- StyleSettings aStyleSettings( rSettings.GetStyleSettings() );
+- MouseSettings aMouseSettings( rSettings.GetMouseSettings() );
+- KeyboardSettings aKeyboardSettings( rSettings.GetKeyboardSettings() );
+-
+- std::set< DtSetEnum > aItemSet;
+-
+- while( aLines.begin() != aLines.end() )
+- {
+- ByteString aLine( aLines.front() );
+- aLines.pop_front();
+- if( aLine.GetChar( aLine.Len()-1 ) == '\n' )
+- aLine.Erase( aLine.Len()-1 ); // cut newline
+-
+- USHORT nPos = aLine.Search( '=' );
+- if( nPos == STRING_NOTFOUND )
+- continue;
+-
+- DtSetEnum aToken = (DtSetEnum)aLine.Copy( 0, nPos ).ToInt32();
+- aLine.Erase( 0, nPos+1 );
+-
+- if( aToken )
+- {
+- bRet = TRUE;
+- aItemSet.insert( aToken );
+- }
+-
+- switch( aToken )
+- {
+- case MouseOptions: aMouseSettings.SetOptions( aLine.ToInt32() );break;
+- case DoubleClickTime: aMouseSettings.SetDoubleClickTime( aLine.ToInt32() );break;
+- case DoubleClickWidth: aMouseSettings.SetDoubleClickWidth( aLine.ToInt32() );break;
+- case DoubleClickHeight: aMouseSettings.SetDoubleClickHeight( aLine.ToInt32() );break;
+- case StartDragWidth: aMouseSettings.SetStartDragWidth( aLine.ToInt32() );break;
+- case StartDragHeight: aMouseSettings.SetStartDragHeight( aLine.ToInt32() );break;
+- case DragMoveCode: aMouseSettings.SetDragMoveCode( aLine.ToInt32() );break;
+- case DragCopyCode: aMouseSettings.SetDragCopyCode( aLine.ToInt32() );break;
+- case DragLinkCode: aMouseSettings.SetDragLinkCode( aLine.ToInt32() );break;
+- case ContextMenuCode: aMouseSettings.SetContextMenuCode( aLine.ToInt32() );break;
+- case ContextMenuClicks: aMouseSettings.SetContextMenuClicks( aLine.ToInt32() );break;
+- case ContextMenuDown: aMouseSettings.SetContextMenuDown( aLine.ToInt32() );break;
+- case ScrollRepeat: aMouseSettings.SetScrollRepeat( aLine.ToInt32() );break;
+- case ButtonStartRepeat: aMouseSettings.SetButtonStartRepeat( aLine.ToInt32() );break;
+- case ButtonRepeat: aMouseSettings.SetButtonRepeat( aLine.ToInt32() );break;
+- case ActionDelay: aMouseSettings.SetActionDelay( aLine.ToInt32() );break;
+- case MenuDelay: aMouseSettings.SetMenuDelay( aLine.ToInt32() );break;
+- case Follow: aMouseSettings.SetFollow( aLine.ToInt32() );break;
+- case MiddleButtonAction: aMouseSettings.SetMiddleButtonAction( aLine.ToInt32() );break;
+- case KeyboardOptions: aKeyboardSettings.SetOptions( aLine.ToInt32() );break;
+- case StyleOptions: aStyleSettings.SetOptions( aLine.ToInt32() );break;
+- case BorderSize: aStyleSettings.SetBorderSize( aLine.ToInt32() );break;
+- case TitleHeight: aStyleSettings.SetTitleHeight( aLine.ToInt32() );break;
+- case FloatTitleHeight: aStyleSettings.SetFloatTitleHeight( aLine.ToInt32() );break;
+- case TearOffTitleHeight: aStyleSettings.SetTearOffTitleHeight( aLine.ToInt32() );break;
+- case MenuBarHeight: aStyleSettings.SetMenuBarHeight( aLine.ToInt32() );break;
+- case ScrollBarSize: aStyleSettings.SetScrollBarSize( aLine.ToInt32() );break;
+- case SpinSize: aStyleSettings.SetSpinSize( aLine.ToInt32() );break;
+- case SplitSize: aStyleSettings.SetSplitSize( aLine.ToInt32() );break;
+- case IconHorzSpace: aStyleSettings.SetIconHorzSpace( aLine.ToInt32() );break;
+- case IconVertSpace: aStyleSettings.SetIconVertSpace( aLine.ToInt32() );break;
+- case CursorSize: aStyleSettings.SetCursorSize( aLine.ToInt32() );break;
+- case CursorBlinkTime: aStyleSettings.SetCursorBlinkTime( aLine.ToInt32() );break;
+- case ScreenZoom: aStyleSettings.SetScreenZoom( aLine.ToInt32() );break;
+- case ScreenFontZoom: aStyleSettings.SetScreenFontZoom( aLine.ToInt32() );break;
+- case LogoDisplayTime: aStyleSettings.SetLogoDisplayTime( aLine.ToInt32() );break;
+- case DragFullOptions: aStyleSettings.SetDragFullOptions( aLine.ToInt32() );break;
+- case AnimationOptions: aStyleSettings.SetAnimationOptions( aLine.ToInt32() );break;
+- case SelectionOptions: aStyleSettings.SetSelectionOptions( aLine.ToInt32() );break;
+- case DisplayOptions: aStyleSettings.SetDisplayOptions( aLine.ToInt32() );break;
+- case AntialiasingMinPixelHeight: aStyleSettings.SetAntialiasingMinPixelHeight( aLine.ToInt32() );break;
+- case ThreeDColor: aStyleSettings.Set3DColors( parseColor( aLine ) );break;
+- case FaceColor: aStyleSettings.SetFaceColor( parseColor( aLine ) );break;
+- case CheckedColor: aStyleSettings.SetCheckedColor( parseColor( aLine ) );break;
+- case LightColor: aStyleSettings.SetLightColor( parseColor( aLine ) );break;
+- case LightBorderColor: aStyleSettings.SetLightBorderColor( parseColor( aLine ) );break;
+- case ShadowColor: aStyleSettings.SetShadowColor( parseColor( aLine ) );break;
+- case DarkShadowColor: aStyleSettings.SetDarkShadowColor( parseColor( aLine ) );break;
+- case ButtonTextColor: aStyleSettings.SetButtonTextColor( parseColor( aLine ) );break;
+- case RadioCheckTextColor: aStyleSettings.SetRadioCheckTextColor( parseColor( aLine ) );break;
+- case GroupTextColor: aStyleSettings.SetGroupTextColor( parseColor( aLine ) );break;
+- case LabelTextColor: aStyleSettings.SetLabelTextColor( parseColor(aLine ) );break;
+- case InfoTextColor: aStyleSettings.SetInfoTextColor( parseColor( aLine ) );break;
+- case WindowColor: aStyleSettings.SetWindowColor( parseColor( aLine ) );break;
+- case WindowTextColor: aStyleSettings.SetWindowTextColor( parseColor( aLine ) );break;
+- case DialogColor: aStyleSettings.SetDialogColor( parseColor( aLine ) );break;
+- case DialogTextColor: aStyleSettings.SetDialogTextColor( parseColor( aLine ) );break;
+- case WorkspaceColor: aStyleSettings.SetWorkspaceColor( parseColor( aLine ) );break;
+- case FieldColor: aStyleSettings.SetFieldColor( parseColor( aLine ) );break;
+- case FieldTextColor: aStyleSettings.SetFieldTextColor( parseColor( aLine ) );break;
+- case ActiveColor: aStyleSettings.SetActiveColor( parseColor( aLine ) );break;
+- case ActiveColor2: aStyleSettings.SetActiveColor2( parseColor( aLine ) );break;
+- case ActiveTextColor: aStyleSettings.SetActiveTextColor( parseColor( aLine ) );break;
+- case ActiveBorderColor: aStyleSettings.SetActiveBorderColor( parseColor( aLine ) );break;
+- case DeactiveColor: aStyleSettings.SetDeactiveColor( parseColor( aLine ) );break;
+- case DeactiveColor2: aStyleSettings.SetDeactiveColor2( parseColor( aLine ) );break;
+- case DeactiveTextColor: aStyleSettings.SetDeactiveTextColor( parseColor( aLine ) );break;
+- case DeactiveBorderColor: aStyleSettings.SetDeactiveBorderColor( parseColor( aLine ) );break;
+- case HighlightColor: aStyleSettings.SetHighlightColor( parseColor( aLine ) );break;
+- case HighlightTextColor: aStyleSettings.SetHighlightTextColor( parseColor( aLine ) );break;
+- case DisableColor: aStyleSettings.SetDisableColor( parseColor( aLine ) );break;
+- case HelpColor: aStyleSettings.SetHelpColor( parseColor( aLine ) );break;
+- case HelpTextColor: aStyleSettings.SetHelpTextColor( parseColor( aLine ) );break;
+- case MenuColor: aStyleSettings.SetMenuColor( parseColor( aLine ) );break;
+- case MenuBarColor: aStyleSettings.SetMenuBarColor( parseColor( aLine ) );break;
+- case MenuTextColor: aStyleSettings.SetMenuTextColor( parseColor( aLine ) );break;
+- case MenuHighlightColor: aStyleSettings.SetMenuHighlightColor( parseColor( aLine ) );break;
+- case MenuHighlightTextColor: aStyleSettings.SetMenuHighlightTextColor( parseColor( aLine ) );break;
+- case LinkColor: aStyleSettings.SetLinkColor( parseColor( aLine ) );break;
+- case VisitedLinkColor: aStyleSettings.SetVisitedLinkColor( parseColor( aLine ) );break;
+- case HighlightLinkColor: aStyleSettings.SetHighlightLinkColor( parseColor( aLine ) );break;
+- case HighContrastMode: aStyleSettings.SetHighContrastMode( aLine.ToInt32() );break;
+- case AppFont: aStyleSettings.SetAppFont( parseFont( aLine ) );break;
+- case HelpFont: aStyleSettings.SetHelpFont( parseFont( aLine ) );break;
+- case TitleFont: aStyleSettings.SetTitleFont( parseFont( aLine ) );break;
+- case FloatTitleFont: aStyleSettings.SetFloatTitleFont( parseFont( aLine ) );break;
+- case MenuFont: aStyleSettings.SetMenuFont( parseFont( aLine ) );break;
+- case ToolFont: aStyleSettings.SetToolFont( parseFont( aLine ) );break;
+- case GroupFont: aStyleSettings.SetGroupFont( parseFont( aLine ) );break;
+- case LabelFont: aStyleSettings.SetLabelFont( parseFont( aLine ) );break;
+- case InfoFont: aStyleSettings.SetInfoFont( parseFont( aLine ) );break;
+- case RadioCheckFont: aStyleSettings.SetRadioCheckFont( parseFont( aLine ) );break;
+- case PushButtonFont: aStyleSettings.SetPushButtonFont( parseFont( aLine ) );break;
+- case FieldFont: aStyleSettings.SetFieldFont( parseFont( aLine ) );break;
+- case IconFont: aStyleSettings.SetIconFont( parseFont( aLine ) );break;
+- case RadioButtonStyle: aStyleSettings.SetRadioButtonStyle( aLine.ToInt32() );break;
+- case CheckBoxStyle: aStyleSettings.SetCheckBoxStyle( aLine.ToInt32() );break;
+- case PushButtonStyle: aStyleSettings.SetPushButtonStyle( aLine.ToInt32() );break;
+- case TabControlStyle: aStyleSettings.SetTabControlStyle( aLine.ToInt32() );
+- break;
+-
+- case AllTextColors:
+- {
+- Color aTextColor = parseColor( aLine );
+- aStyleSettings.SetDialogTextColor( aTextColor );
+- aStyleSettings.SetMenuTextColor( aTextColor );
+- aStyleSettings.SetButtonTextColor( aTextColor );
+- aStyleSettings.SetRadioCheckTextColor( aTextColor );
+- aStyleSettings.SetGroupTextColor( aTextColor );
+- aStyleSettings.SetLabelTextColor( aTextColor );
+- aStyleSettings.SetInfoTextColor( aTextColor );
+- aStyleSettings.SetWindowTextColor( aTextColor );
+- aStyleSettings.SetFieldTextColor( aTextColor );
+- }
+- break;
+- case AllBackColors:
+- {
+- Color aBack = parseColor( aLine );
+- aStyleSettings.Set3DColors( aBack );
+- aStyleSettings.SetFaceColor( aBack );
+- aStyleSettings.SetDialogColor( aBack );
+- aStyleSettings.SetMenuColor( aBack );
+- aStyleSettings.SetMenuBarColor( aBack );
+- aStyleSettings.SetWindowColor( aBack );
+- aStyleSettings.SetFieldColor( aBack );
+- if( aBack == COL_LIGHTGRAY )
+- aStyleSettings.SetCheckedColor( Color( 0xCC, 0xCC, 0xCC ) );
+- else
+- {
+- Color aColor2 = aStyleSettings.GetLightColor();
+- aStyleSettings.
+- SetCheckedColor( Color(
+- (BYTE)(((USHORT)aBack.GetRed()+(USHORT)aColor2.GetRed())/2),
+- (BYTE)(((USHORT)aBack.GetGreen()+(USHORT)aColor2.GetGreen())/2),
+- (BYTE)(((USHORT)aBack.GetBlue()+(USHORT)aColor2.GetBlue())/2)
+- ) );
+- }
+- }
+- break;
+- case UIFont:
+- if( aStyleSettings.GetUseSystemUIFonts() )
+- {
+- Font aFont = parseFont( aLine );
+- aStyleSettings.SetAppFont( aFont );
+- aStyleSettings.SetHelpFont( aFont );
+- aStyleSettings.SetMenuFont( aFont );
+- aStyleSettings.SetToolFont( aFont );
+- aStyleSettings.SetLabelFont( aFont );
+- aStyleSettings.SetInfoFont( aFont );
+- aStyleSettings.SetRadioCheckFont( aFont );
+- aStyleSettings.SetPushButtonFont( aFont );
+- aStyleSettings.SetFieldFont( aFont );
+- aStyleSettings.SetIconFont( aFont );
+- aStyleSettings.SetGroupFont( aFont );
+- }
+- break;
+- case ToolbarIconSize:
+- if( aLine.EqualsIgnoreCaseAscii( "large" ) )
+- aStyleSettings.SetToolbarIconSize( STYLE_TOOLBAR_ICONSIZE_LARGE );
+- else if( aLine.EqualsIgnoreCaseAscii( "small" ) )
+- aStyleSettings.SetToolbarIconSize( STYLE_TOOLBAR_ICONSIZE_SMALL );
+- else
+- aStyleSettings.SetToolbarIconSize( STYLE_TOOLBAR_ICONSIZE_UNKNOWN );
+- break;
+-#if OSL_DEBUG_LEVEL > 1
+- default:
+- fprintf( stderr, "don't understand \"%d=%s\"\n", aToken, aLine.GetBuffer() );
+- break;
+-#endif
+- }
+- }
+- if( bRet )
+- {
+- rSettings.SetKeyboardSettings( aKeyboardSettings );
+- 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
+@@ -61,6 +61,7 @@
+
+ #include <rtl/ustring.hxx>
+ #include <osl/module.h>
++#include <osl/thread.h>
+ using namespace rtl;
+
+ #include <gcach_xpeer.hxx>
+@@ -138,7 +139,7 @@ void X11GlyphPeer::SetDisplay( Display*
+ if( !pRenderLib ) {
+ #ifdef DEBUG
+ fprintf( stderr, "Display can do XRender, but no %s installed.\n"
+- "Please install for improved display performance\n", xrenderLibraryName.getStr() );
++ "Please install for improved display performance\n", OUStringToOString( xrenderLibraryName.getStr(), osl_getThreadTextEncoding() ).getStr() );
+ #endif
+ return;
+ }
+@@ -296,15 +297,16 @@ void X11GlyphPeer::RemovingGlyph( Server
+
+ case XRENDER_KIND:
+ {
++/*
++ // TODO: reenable when it works without problems
+ Glyph nGlyphId = (Glyph)rGlyphData.GetExtPointer();
+ // XRenderFreeGlyphs not implemented yet for version<=0.2
+ // #108209# disabled because of crash potential,
+ // the glyph leak is not too bad because they will
+ // be cleaned up when the glyphset is released
+-#if 0 // TODO: reenable when it works without problems
+ if( nRenderVersion >= 0x05 )
+ (*pXRenderFreeGlyphs)( mpDisplay, aGlyphSet, &nGlyphId, 1 );
+-#endif
++*/
+ mnBytesUsed -= nHeight * ((nWidth + 3) & ~3);
+ }
+ break;
+@@ -331,7 +333,7 @@ bool X11GlyphPeer::ForcedAntialiasing( c
+ GlyphSet X11GlyphPeer::GetGlyphSet( ServerFont& rServerFont )
+ {
+ if( !mbUsingXRender )
+- return NULL;
++ return 0;
+
+ GlyphSet aGlyphSet;
+
+@@ -354,12 +356,12 @@ GlyphSet X11GlyphPeer::GetGlyphSet( Serv
+ rServerFont.SetExtended( XRENDER_KIND, (void*)aGlyphSet );
+ }
+ else
+- aGlyphSet = NULL;
++ aGlyphSet = 0;
+ }
+ break;
+
+ default:
+- aGlyphSet = NULL;
++ aGlyphSet = 0;
+ break;
+ }
+
+@@ -381,7 +383,7 @@ Pixmap X11GlyphPeer::GetPixmap( ServerFo
+ {
+ // #94666# circumvent bug in some X11 systems, e.g. XF410.LynxEM.v163
+ ULONG nPixmapWidth = 8 * maRawBitmap.mnScanlineSize - 1;
+- nPixmapWidth = std::max( nPixmapWidth, maRawBitmap.mnWidth );
++ nPixmapWidth = Max( nPixmapWidth, maRawBitmap.mnWidth );
+
+ rGlyphData.SetSize( Size( nPixmapWidth, maRawBitmap.mnHeight ) );
+ 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
+@@ -60,18 +60,18 @@
+ ************************************************************************/
+
+ #include <kdeint.hxx>
+-#include <config.hxx>
++#include <tools/config.hxx>
+ #include <settings.hxx>
+
+ #include <osl/thread.h>
+
+ #include <unistd.h>
++#include <cstdio>
+
+ using namespace rtl;
+ using namespace osl;
+
+-KDEIntegrator::KDEIntegrator( SalFrame* pFrame ) :
+- DtIntegrator( pFrame )
++KDEIntegrator::KDEIntegrator()
+ {
+ meType = DtKDE;
+ }
+@@ -80,7 +80,7 @@ KDEIntegrator::~KDEIntegrator()
+ {
+ }
+
+-static char* pTryFiles[] =
++static const char* pTryFiles[] =
+ {
+ "/usr/share/config/kdeglobals",
+ "/opt/kde/share/config/kdeglobals",
+@@ -93,7 +93,7 @@ void KDEIntegrator::GetSystemLook( AllSe
+ {
+ rtl_TextEncoding aEncoding = osl_getThreadTextEncoding();
+
+- for( int i = 0; (i < sizeof( pTryFiles )/sizeof(pTryFiles[0])); i++ )
++ for( unsigned int i = 0; (i < sizeof( pTryFiles )/sizeof(pTryFiles[0])); i++ )
+ {
+ String aFile;
+ 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
+@@ -80,24 +80,29 @@ dummy:
+
+ .ELSE # "$(GUIBASE)"!="unx"
+
+-.IF "$(remote)"==""
+ SLOFILES= \
+ $(SLO)$/salgdi2.obj \
+ $(SLO)$/salbmp.obj \
+ $(SLO)$/salgdi.obj \
+ $(SLO)$/salvd.obj \
+ $(SLO)$/salogl.obj \
+- $(SLO)$/charnames.obj \
+ $(SLO)$/dtint.obj \
+- $(SLO)$/kdeint.obj \
+- $(SLO)$/gnomeint.obj \
+ $(SLO)$/salcvt.obj \
+- $(SLO)$/ansi1252.obj \
+ $(SLO)$/xfont.obj \
+ $(SLO)$/xlfd_attr.obj \
+ $(SLO)$/xlfd_extd.obj \
+ $(SLO)$/xlfd_smpl.obj \
+- $(SLO)$/salgdi3.obj
++ $(SLO)$/salgdi3.obj \
++ $(SLO)$/pspgraphics.obj
++
++.IF "$(WITH_WIDGETSET)"=="kde"
++ # salnativewidgets-kde.cxx contains own implementation of KDEintegrator
++ SLOFILES+=$(SLO)/salnativewidgets-kde.obj
++ CFLAGS+=$(WIDGETSET_CFLAGS)
++.ELSE
++ SLOFILES+= \
++ $(SLO)$/kdeint.obj
++.ENDIF
+
+ .IF "$(USE_XPRINT)" == "TRUE"
+ CFLAGS+=-D_USE_PRINT_EXTENSION_=1
+@@ -113,8 +118,6 @@ ENVCFLAGS+=-DUSE_CDE
+
+ .IF "$(USE_BUILTIN_RASTERIZER)" != ""
+ SLOFILES+= $(SLO)$/gcach_xpeer.obj
+-.ENDIF
+-
+ .ENDIF
+
+ .ENDIF # "$(GUIBASE)"!="unx"
+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
+@@ -0,0 +1,1355 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * 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): _______________________________________
++ *
++ *
++ ************************************************************************/
++
++#include <pspgraphics.h>
++#include <psprint/jobdata.hxx>
++#include <psprint/printergfx.hxx>
++#include <psprint/printerinfomanager.hxx>
++#include <bmpacc.hxx>
++#include <salbmp.hxx>
++#include <glyphcache.hxx>
++#include <svapp.hxx>
++
++#include <stdlib.h>
++#include <unistd.h>
++#include <fcntl.h>
++#include <sys/mman.h>
++#include <sys/stat.h>
++#include <sys/types.h>
++
++using namespace psp;
++using namespace rtl;
++
++// ----- Implementation of PrinterBmp by means of SalBitmap/BitmapBuffer ---------------
++
++class SalPrinterBmp : public psp::PrinterBmp
++{
++ private:
++ BitmapBuffer* mpBmpBuffer;
++
++ FncGetPixel mpFncGetPixel;
++ Scanline mpScanAccess;
++ sal_Int32 mnScanOffset;
++
++ sal_uInt32 ColorOf (BitmapColor& rColor) const;
++ sal_uInt8 GrayOf (BitmapColor& rColor) const;
++
++ SalPrinterBmp ();
++
++ public:
++
++ SalPrinterBmp (BitmapBuffer* pBitmap);
++ virtual ~SalPrinterBmp ();
++ virtual sal_uInt32 GetPaletteColor (sal_uInt32 nIdx) const;
++ virtual sal_uInt32 GetPaletteEntryCount () const;
++ virtual sal_uInt32 GetPixelRGB (sal_uInt32 nRow, sal_uInt32 nColumn) const;
++ virtual sal_uInt8 GetPixelGray (sal_uInt32 nRow, sal_uInt32 nColumn) const;
++ virtual sal_uInt8 GetPixelIdx (sal_uInt32 nRow, sal_uInt32 nColumn) const;
++ virtual sal_uInt32 GetWidth () const;
++ virtual sal_uInt32 GetHeight() const;
++ virtual sal_uInt32 GetDepth () const;
++};
++
++SalPrinterBmp::SalPrinterBmp (BitmapBuffer* pBuffer) :
++ mpBmpBuffer (pBuffer)
++{
++ DBG_ASSERT (mpBmpBuffer, "SalPrinterBmp::SalPrinterBmp () can't acquire Bitmap");
++
++ // calibrate scanline buffer
++ if( BMP_SCANLINE_ADJUSTMENT( mpBmpBuffer->mnFormat ) == BMP_FORMAT_TOP_DOWN )
++ {
++ mpScanAccess = mpBmpBuffer->mpBits;
++ mnScanOffset = mpBmpBuffer->mnScanlineSize;
++ }
++ else
++ {
++ mpScanAccess = mpBmpBuffer->mpBits
++ + (mpBmpBuffer->mnHeight - 1) * mpBmpBuffer->mnScanlineSize;
++ mnScanOffset = - mpBmpBuffer->mnScanlineSize;
++ }
++
++ // request read access to the pixels
++ switch( BMP_SCANLINE_FORMAT( mpBmpBuffer->mnFormat ) )
++ {
++ case BMP_FORMAT_1BIT_MSB_PAL:
++ mpFncGetPixel = BitmapReadAccess::GetPixelFor_1BIT_MSB_PAL; break;
++ case BMP_FORMAT_1BIT_LSB_PAL:
++ mpFncGetPixel = BitmapReadAccess::GetPixelFor_1BIT_LSB_PAL; break;
++ case BMP_FORMAT_4BIT_MSN_PAL:
++ mpFncGetPixel = BitmapReadAccess::GetPixelFor_4BIT_MSN_PAL; break;
++ case BMP_FORMAT_4BIT_LSN_PAL:
++ mpFncGetPixel = BitmapReadAccess::GetPixelFor_4BIT_LSN_PAL; break;
++ case BMP_FORMAT_8BIT_PAL:
++ mpFncGetPixel = BitmapReadAccess::GetPixelFor_8BIT_PAL; break;
++ case BMP_FORMAT_8BIT_TC_MASK:
++ mpFncGetPixel = BitmapReadAccess::GetPixelFor_8BIT_TC_MASK; break;
++ case BMP_FORMAT_16BIT_TC_MSB_MASK:
++ mpFncGetPixel = BitmapReadAccess::GetPixelFor_16BIT_TC_MSB_MASK; break;
++ case BMP_FORMAT_16BIT_TC_LSB_MASK:
++ mpFncGetPixel = BitmapReadAccess::GetPixelFor_16BIT_TC_LSB_MASK; break;
++ case BMP_FORMAT_24BIT_TC_BGR:
++ mpFncGetPixel = BitmapReadAccess::GetPixelFor_24BIT_TC_BGR; break;
++ case BMP_FORMAT_24BIT_TC_RGB:
++ mpFncGetPixel = BitmapReadAccess::GetPixelFor_24BIT_TC_RGB; break;
++ case BMP_FORMAT_24BIT_TC_MASK:
++ mpFncGetPixel = BitmapReadAccess::GetPixelFor_24BIT_TC_MASK; break;
++ case BMP_FORMAT_32BIT_TC_ABGR:
++ mpFncGetPixel = BitmapReadAccess::GetPixelFor_32BIT_TC_ABGR; break;
++ case BMP_FORMAT_32BIT_TC_ARGB:
++ mpFncGetPixel = BitmapReadAccess::GetPixelFor_32BIT_TC_ARGB; break;
++ case BMP_FORMAT_32BIT_TC_BGRA:
++ mpFncGetPixel = BitmapReadAccess::GetPixelFor_32BIT_TC_BGRA; break;
++ case BMP_FORMAT_32BIT_TC_RGBA:
++ mpFncGetPixel = BitmapReadAccess::GetPixelFor_32BIT_TC_RGBA; break;
++ case BMP_FORMAT_32BIT_TC_MASK:
++ mpFncGetPixel = BitmapReadAccess::GetPixelFor_32BIT_TC_MASK; break;
++
++ default:
++ DBG_ERROR("Error: SalPrinterBmp::SalPrinterBmp() unknown bitmap format");
++ break;
++ }
++}
++
++SalPrinterBmp::~SalPrinterBmp ()
++{
++}
++
++sal_uInt32
++SalPrinterBmp::GetWidth () const
++{
++ return mpBmpBuffer->mnWidth;
++}
++
++sal_uInt32
++SalPrinterBmp::GetHeight () const
++{
++ return mpBmpBuffer->mnHeight;
++}
++
++sal_uInt32
++SalPrinterBmp::GetDepth () const
++{
++ sal_uInt32 nDepth;
++
++ switch (mpBmpBuffer->mnBitCount)
++ {
++ case 1:
++ nDepth = 1;
++ break;
++
++ case 4:
++ case 8:
++ nDepth = 8;
++ break;
++
++ case 16:
++ case 24:
++ case 32:
++ nDepth = 24;
++ break;
++
++ default:
++ DBG_ERROR ("Error: unsupported bitmap depth in SalPrinterBmp::GetDepth()");
++ break;
++ }
++
++ return nDepth;
++}
++
++sal_uInt32
++SalPrinterBmp::ColorOf (BitmapColor& rColor) const
++{
++ if (rColor.IsIndex())
++ return ColorOf (mpBmpBuffer->maPalette[rColor.GetIndex()]);
++ else
++ return ((rColor.GetBlue()) & 0x000000ff)
++ | ((rColor.GetGreen() << 8) & 0x0000ff00)
++ | ((rColor.GetRed() << 16) & 0x00ff0000);
++}
++
++sal_uInt8
++SalPrinterBmp::GrayOf (BitmapColor& rColor) const
++{
++ if (rColor.IsIndex())
++ return GrayOf (mpBmpBuffer->maPalette[rColor.GetIndex()]);
++ else
++ return ( rColor.GetBlue() * 28UL
++ + rColor.GetGreen() * 151UL
++ + rColor.GetRed() * 77UL ) >> 8;
++}
++
++sal_uInt32
++SalPrinterBmp::GetPaletteEntryCount () const
++{
++ return mpBmpBuffer->maPalette.GetEntryCount ();
++}
++
++sal_uInt32
++SalPrinterBmp::GetPaletteColor (sal_uInt32 nIdx) const
++{
++ return ColorOf (mpBmpBuffer->maPalette[nIdx]);
++}
++
++sal_uInt32
++SalPrinterBmp::GetPixelRGB (sal_uInt32 nRow, sal_uInt32 nColumn) const
++{
++ Scanline pScan = mpScanAccess + nRow * mnScanOffset;
++ BitmapColor aColor = mpFncGetPixel (pScan, nColumn, mpBmpBuffer->maColorMask);
++
++ return ColorOf (aColor);
++}
++
++sal_uInt8
++SalPrinterBmp::GetPixelGray (sal_uInt32 nRow, sal_uInt32 nColumn) const
++{
++ Scanline pScan = mpScanAccess + nRow * mnScanOffset;
++ BitmapColor aColor = mpFncGetPixel (pScan, nColumn, mpBmpBuffer->maColorMask);
++
++ return GrayOf (aColor);
++}
++
++sal_uInt8
++SalPrinterBmp::GetPixelIdx (sal_uInt32 nRow, sal_uInt32 nColumn) const
++{
++ Scanline pScan = mpScanAccess + nRow * mnScanOffset;
++ BitmapColor aColor = mpFncGetPixel (pScan, nColumn, mpBmpBuffer->maColorMask);
++
++ if (aColor.IsIndex())
++ return aColor.GetIndex();
++ else
++ return 0;
++}
++
++/*******************************************************
++ * PspGraphics *
++ *******************************************************/
++
++PspGraphics::~PspGraphics()
++{
++}
++
++void PspGraphics::GetResolution( sal_Int32 &rDPIX, sal_Int32 &rDPIY )
++{
++ if (m_pJobData != NULL)
++ {
++ int x = m_pJobData->m_aContext.getRenderResolution();
++
++ rDPIX = x;
++ rDPIY = x;
++ }
++}
++
++void PspGraphics::GetScreenFontResolution( sal_Int32 &rDPIX, sal_Int32 &rDPIY )
++{
++ m_pPrinterGfx->GetScreenFontResolution (rDPIX, rDPIY);
++}
++
++USHORT PspGraphics::GetBitCount()
++{
++ return m_pPrinterGfx->GetBitCount();
++}
++
++long PspGraphics::GetGraphicsWidth()
++{
++ return 0;
++}
++
++void PspGraphics::ResetClipRegion()
++{
++ m_pPrinterGfx->ResetClipRegion ();
++}
++
++void PspGraphics::BeginSetClipRegion( ULONG n )
++{
++ m_pPrinterGfx->BeginSetClipRegion(n);
++}
++
++BOOL PspGraphics::unionClipRegion( long nX, long nY, long nDX, long nDY )
++{
++ return (BOOL)m_pPrinterGfx->UnionClipRegion (nX, nY, nDX, nDY);
++}
++
++void PspGraphics::EndSetClipRegion()
++{
++ m_pPrinterGfx->EndSetClipRegion ();
++}
++
++void PspGraphics::SetLineColor()
++{
++ m_pPrinterGfx->SetLineColor ();
++}
++
++void PspGraphics::SetLineColor( SalColor nSalColor )
++{
++ psp::PrinterColor aColor (SALCOLOR_RED (nSalColor),
++ SALCOLOR_GREEN (nSalColor),
++ SALCOLOR_BLUE (nSalColor));
++ m_pPrinterGfx->SetLineColor (aColor);
++}
++
++void PspGraphics::SetFillColor()
++{
++ m_pPrinterGfx->SetFillColor ();
++}
++
++void PspGraphics::SetFillColor( SalColor nSalColor )
++{
++ psp::PrinterColor aColor (SALCOLOR_RED (nSalColor),
++ SALCOLOR_GREEN (nSalColor),
++ SALCOLOR_BLUE (nSalColor));
++ m_pPrinterGfx->SetFillColor (aColor);
++}
++
++void PspGraphics::SetROPLineColor( SalROPColor nROPColor )
++{
++ DBG_ASSERT( 0, "Error: PrinterGfx::SetROPLineColor() not implemented" );
++}
++
++void PspGraphics::SetROPFillColor( SalROPColor nROPColor )
++{
++ DBG_ASSERT( 0, "Error: PrinterGfx::SetROPFillColor() not implemented" );
++}
++
++void PspGraphics::SetXORMode( BOOL bSet )
++{
++ DBG_ASSERT( !bSet, "Error: PrinterGfx::SetXORMode() not implemented" );
++}
++
++void PspGraphics::drawPixel( long nX, long nY )
++{
++ m_pPrinterGfx->DrawPixel (Point(nX, nY));
++}
++
++void PspGraphics::drawPixel( long nX, long nY, SalColor nSalColor )
++{
++ psp::PrinterColor aColor (SALCOLOR_RED (nSalColor),
++ SALCOLOR_GREEN (nSalColor),
++ SALCOLOR_BLUE (nSalColor));
++ m_pPrinterGfx->DrawPixel (Point(nX, nY), aColor);
++}
++
++void PspGraphics::drawLine( long nX1, long nY1, long nX2, long nY2 )
++{
++ m_pPrinterGfx->DrawLine (Point(nX1, nY1), Point(nX2, nY2));
++}
++
++void PspGraphics::drawRect( long nX, long nY, long nDX, long nDY )
++{
++ m_pPrinterGfx->DrawRect (Rectangle(Point(nX, nY), Size(nDX, nDY)));
++}
++
++void PspGraphics::drawPolyLine( ULONG nPoints, const SalPoint *pPtAry )
++{
++ m_pPrinterGfx->DrawPolyLine (nPoints, (Point*)pPtAry);
++}
++
++void PspGraphics::drawPolygon( ULONG nPoints, const SalPoint* pPtAry )
++{
++ // Point must be equal to SalPoint! see vcl/inc/salgtype.hxx
++ m_pPrinterGfx->DrawPolygon (nPoints, (Point*)pPtAry);
++}
++
++void PspGraphics::drawPolyPolygon( ULONG nPoly,
++ const ULONG *pPoints,
++ PCONSTSALPOINT *pPtAry )
++{
++ m_pPrinterGfx->DrawPolyPolygon (nPoly, pPoints, (const Point**)pPtAry);
++}
++
++sal_Bool PspGraphics::drawPolyLineBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry )
++{
++ m_pPrinterGfx->DrawPolyLineBezier (nPoints, (Point*)pPtAry, pFlgAry);
++ return sal_True;
++}
++
++sal_Bool PspGraphics::drawPolygonBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry )
++{
++ m_pPrinterGfx->DrawPolygonBezier (nPoints, (Point*)pPtAry, pFlgAry);
++ return sal_True;
++}
++
++sal_Bool PspGraphics::drawPolyPolygonBezier( ULONG nPoly,
++ const ULONG* pPoints,
++ const SalPoint* const* pPtAry,
++ const BYTE* const* pFlgAry )
++{
++ // Point must be equal to SalPoint! see vcl/inc/salgtype.hxx
++ m_pPrinterGfx->DrawPolyPolygonBezier (nPoly, pPoints, (Point**)pPtAry, (BYTE**)pFlgAry);
++ return sal_True;
++}
++
++void PspGraphics::invert( ULONG nPoints,
++ const SalPoint* pPtAry,
++ SalInvert nFlags )
++{
++ DBG_ASSERT( 0, "Error: PrinterGfx::Invert() not implemented" );
++}
++BOOL PspGraphics::drawEPS( long nX, long nY, long nWidth, long nHeight, void* pPtr, ULONG nSize )
++{
++ return m_pPrinterGfx->DrawEPS( Rectangle( Point( nX, nY ), Size( nWidth, nHeight ) ), pPtr, nSize );
++}
++
++void PspGraphics::copyBits( const SalTwoRect *pPosAry,
++ SalGraphics *pSSrcGraphics )
++{
++ DBG_ERROR( "Error: PrinterGfx::CopyBits() not implemented" );
++}
++
++void PspGraphics::copyArea ( long nDestX, long nDestY,
++ long nSrcX, long nSrcY,
++ long nSrcWidth, long nSrcHeight,
++ USHORT nFlags )
++{
++ DBG_ERROR( "Error: PrinterGfx::CopyArea() not implemented" );
++}
++
++void PspGraphics::drawBitmap( const SalTwoRect* pPosAry, const SalBitmap& rSalBitmap )
++{
++ Rectangle aSrc (Point(pPosAry->mnSrcX, pPosAry->mnSrcY),
++ Size(pPosAry->mnSrcWidth, pPosAry->mnSrcHeight));
++ Rectangle aDst (Point(pPosAry->mnDestX, pPosAry->mnDestY),
++ Size(pPosAry->mnDestWidth, pPosAry->mnDestHeight));
++
++ BitmapBuffer* pBuffer= const_cast<SalBitmap&>(rSalBitmap).AcquireBuffer(sal_True);
++
++ SalPrinterBmp aBmp (pBuffer);
++ m_pPrinterGfx->DrawBitmap (aDst, aSrc, aBmp);
++
++ const_cast<SalBitmap&>(rSalBitmap).ReleaseBuffer (pBuffer, sal_True);
++}
++
++void PspGraphics::drawBitmap( const SalTwoRect* pPosAry,
++ const SalBitmap& rSalBitmap,
++ const SalBitmap& rTransBitmap )
++{
++ DBG_ERROR("Error: no PrinterGfx::DrawBitmap() for transparent bitmap");
++}
++
++void PspGraphics::drawBitmap( const SalTwoRect* pPosAry,
++ const SalBitmap& rSalBitmap,
++ SalColor nTransparentColor )
++{
++ DBG_ERROR("Error: no PrinterGfx::DrawBitmap() for transparent color");
++}
++
++void PspGraphics::drawMask( const SalTwoRect* pPosAry,
++ const SalBitmap &rSalBitmap,
++ SalColor nMaskColor )
++{
++ DBG_ERROR("Error: PrinterGfx::DrawMask() not implemented");
++}
++
++SalBitmap* PspGraphics::getBitmap( long nX, long nY, long nDX, long nDY )
++{
++ DBG_WARNING ("Warning: PrinterGfx::GetBitmap() not implemented");
++ return NULL;
++}
++
++SalColor PspGraphics::getPixel( long nX, long nY )
++{
++ DBG_ERROR ("Warning: PrinterGfx::GetPixel() not implemented");
++ return 0;
++}
++
++void PspGraphics::invert(
++ long nX,
++ long nY,
++ long nDX,
++ long nDY,
++ SalInvert nFlags )
++{
++ DBG_ERROR ("Warning: PrinterGfx::Invert() not implemented");
++}
++
++/*
++ * returns:
++ * true: cut out positions rStart to rStop from output because fax number was swallowed
++ * false: do nothing
++ */
++
++String PspGraphics::FaxPhoneComment( const String& rOrig, xub_StrLen nIndex, xub_StrLen& rLen, xub_StrLen& rCutStart, xub_StrLen& rCutStop ) const
++{
++ rCutStop = rCutStart = STRING_NOTFOUND;
++
++ if( ! m_pPhoneNr )
++ return String( rOrig );
++
++#define FAX_PHONE_TOKEN "@@#"
++#define FAX_PHONE_TOKEN_LENGTH 3
++#define FAX_END_TOKEN "@@"
++#define FAX_END_TOKEN_LENGTH 2
++
++ bool bRet = false;
++ bool bStarted = false;
++ bool bStopped = false;
++ USHORT nPos;
++ USHORT nStart = 0;
++ USHORT nStop = rLen;
++ String aPhone = rOrig.Copy( nIndex, rLen );
++
++ static String aPhoneNumber;
++ static bool bIsCollecting = false;
++
++ if( ! bIsCollecting )
++ {
++ if( ( nPos = aPhone.SearchAscii( FAX_PHONE_TOKEN ) ) != STRING_NOTFOUND )
++ {
++ nStart = nPos;
++ bIsCollecting = true;
++ aPhoneNumber.Erase();
++ bRet = true;
++ bStarted = true;
++ }
++ }
++ if( bIsCollecting )
++ {
++ bRet = true;
++ nPos = bStarted ? nStart + FAX_PHONE_TOKEN_LENGTH : 0;
++ if( ( nPos = aPhone.SearchAscii( FAX_END_TOKEN, nPos ) ) != STRING_NOTFOUND )
++ {
++ bIsCollecting = false;
++ nStop = nPos + FAX_END_TOKEN_LENGTH;
++ bStopped = true;
++ }
++ int nTokenStart = nStart + (bStarted ? FAX_PHONE_TOKEN_LENGTH : 0);
++ int nTokenStop = nStop - (bStopped ? FAX_END_TOKEN_LENGTH : 0);
++ aPhoneNumber += aPhone.Copy( nTokenStart, nTokenStop - nTokenStart );
++ if( ! bIsCollecting )
++ {
++ *m_pPhoneNr = aPhoneNumber;
++ aPhoneNumber.Erase();
++ }
++ }
++ if( aPhoneNumber.Len() > 1024 )
++ {
++ bIsCollecting = false;
++ aPhoneNumber.Erase();
++ bRet = false;
++ }
++
++ String aRet;
++ if( bRet && m_bSwallowFaxNo )
++ {
++ rLen -= nStop - nStart;
++ rCutStart = nStart+nIndex;
++ rCutStop = nStop+nIndex;
++ if( rCutStart )
++ aRet = rOrig.Copy( 0, rCutStart );
++ aRet += rOrig.Copy( rCutStop );
++ }
++ else
++ aRet = rOrig;
++
++ return aRet;
++}
++
++class PspFontLayout : public GenericSalLayout
++{
++public:
++ PspFontLayout( ::psp::PrinterGfx& );
++ virtual bool LayoutText( ImplLayoutArgs& );
++ virtual void InitFont() const;
++ virtual void DrawText( SalGraphics& ) const;
++private:
++ ::psp::PrinterGfx& mrPrinterGfx;
++ int mnFontID;
++ int mnFontHeight;
++ int mnFontWidth;
++ bool mbVertical;
++ bool mbArtItalic;
++ bool mbArtBold;
++};
++
++//--------------------------------------------------------------------------
++
++PspFontLayout::PspFontLayout( ::psp::PrinterGfx& rGfx )
++: mrPrinterGfx( rGfx )
++{
++ mnFontID = mrPrinterGfx.GetFontID();
++ mnFontHeight = mrPrinterGfx.GetFontHeight();
++ mnFontWidth = mrPrinterGfx.GetFontWidth();
++ mbVertical = mrPrinterGfx.GetFontVertical();
++ mbArtItalic = mrPrinterGfx.GetArtificialItalic();
++ mbArtBold = mrPrinterGfx.GetArtificialBold();
++}
++
++//--------------------------------------------------------------------------
++
++bool PspFontLayout::LayoutText( ImplLayoutArgs& rArgs )
++{
++ mbVertical = ((rArgs.mnFlags & SAL_LAYOUT_VERTICAL) != 0);
++
++ long nUnitsPerPixel = 1;
++ int nOldGlyphId = -1;
++ long nGlyphWidth = 0;
++ int nCharPos = -1;
++ Point aNewPos( 0, 0 );
++ GlyphItem aPrevItem;
++ rtl_TextEncoding aFontEnc = mrPrinterGfx.GetFontMgr().getFontEncoding( mnFontID );
++ for(;;)
++ {
++ bool bRightToLeft;
++ if( !rArgs.GetNextPos( &nCharPos, &bRightToLeft ) )
++ break;
++
++ sal_Unicode cChar = rArgs.mpStr[ nCharPos ];
++ if( bRightToLeft )
++ cChar = GetMirroredChar( cChar );
++ // symbol font aliasing: 0x0020-0x00ff -> 0xf020 -> 0xf0ff
++ if( aFontEnc == RTL_TEXTENCODING_SYMBOL )
++ if( cChar < 256 )
++ cChar += 0xf000;
++ int nGlyphIndex = cChar; // printer glyphs = unicode
++
++ // update fallback_runs if needed
++ psp::CharacterMetric aMetric;
++ mrPrinterGfx.GetFontMgr().getMetrics( mnFontID, cChar, cChar, &aMetric, mbVertical );
++ if( aMetric.width == -1 && aMetric.height == -1 )
++ rArgs.NeedFallback( nCharPos, bRightToLeft );
++
++ // apply pair kerning to prev glyph if requested
++ if( SAL_LAYOUT_KERNING_PAIRS & rArgs.mnFlags )
++ {
++ if( nOldGlyphId > 0 )
++ {
++ const std::list< KernPair >& rKernPairs = mrPrinterGfx.getKernPairs(mbVertical);
++ for( std::list< 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
++ if( nOldGlyphId >= 0 )
++ AppendGlyph( aPrevItem );
++ nOldGlyphId = nGlyphIndex;
++ aNewPos.X() += nGlyphWidth;
++
++ // prepare GlyphItem for appending it in next round
++ nUnitsPerPixel = mrPrinterGfx.GetCharWidth( cChar, cChar, &nGlyphWidth );
++ int nGlyphFlags = bRightToLeft ? GlyphItem::IS_RTL_GLYPH : 0;
++ nGlyphIndex |= GF_ISCHAR;
++ aPrevItem = GlyphItem( nCharPos, nGlyphIndex, aNewPos, nGlyphFlags, nGlyphWidth );
++ }
++
++ // append last glyph item if any
++ if( nOldGlyphId >= 0 )
++ AppendGlyph( aPrevItem );
++
++ SetOrientation( mrPrinterGfx.GetFontAngle() );
++ SetUnitsPerPixel( nUnitsPerPixel );
++ return (nOldGlyphId >= 0);
++}
++
++class PspServerFontLayout : public ServerFontLayout
++{
++public:
++ PspServerFontLayout( ::psp::PrinterGfx&, ServerFont& rFont );
++
++ virtual void InitFont() const;
++private:
++ ::psp::PrinterGfx& mrPrinterGfx;
++ int mnFontID;
++ int mnFontHeight;
++ int mnFontWidth;
++ bool mbVertical;
++ bool mbArtItalic;
++ bool mbArtBold;
++};
++
++PspServerFontLayout::PspServerFontLayout( ::psp::PrinterGfx& rGfx, ServerFont& rFont )
++ : ServerFontLayout( rFont ),
++ mrPrinterGfx( rGfx )
++{
++ mnFontID = mrPrinterGfx.GetFontID();
++ mnFontHeight = mrPrinterGfx.GetFontHeight();
++ mnFontWidth = mrPrinterGfx.GetFontWidth();
++ mbVertical = mrPrinterGfx.GetFontVertical();
++ mbArtItalic = mrPrinterGfx.GetArtificialItalic();
++ mbArtBold = mrPrinterGfx.GetArtificialBold();
++}
++
++void PspServerFontLayout::InitFont() const
++{
++ mrPrinterGfx.SetFont( mnFontID, mnFontHeight, mnFontWidth,
++ mnOrientation, mbVertical, mbArtItalic, mbArtBold );
++}
++
++//--------------------------------------------------------------------------
++
++void DrawPrinterLayout( const SalLayout& rLayout, ::psp::PrinterGfx& rGfx )
++{
++ const int nMaxGlyphs = 200;
++ sal_Int32 aGlyphAry[ nMaxGlyphs ];
++ sal_Int32 aWidthAry[ nMaxGlyphs ];
++ sal_Int32 aIdxAry [ nMaxGlyphs ];
++ sal_Unicode aUnicodes[ nMaxGlyphs ];
++ Point aPos;
++ long nUnitsPerPixel = rLayout.GetUnitsPerPixel();
++ for( int nStart = 0;; )
++ {
++ int nGlyphCount = rLayout.GetNextGlyphs( nMaxGlyphs, aGlyphAry, aPos, nStart, aWidthAry );
++ if( !nGlyphCount )
++ break;
++
++ sal_Int32 nXOffset = 0;
++ for( int i = 0; i < nGlyphCount; ++i )
++ {
++ nXOffset += aWidthAry[ i ];
++ aIdxAry[ i ] = nXOffset / nUnitsPerPixel;
++ sal_uInt32 nGlyphIdx = aGlyphAry[i] & (GF_IDXMASK | GF_ROTMASK);
++ aUnicodes[i] = (aGlyphAry[i] & GF_ISCHAR) ? nGlyphIdx : 0;
++ aGlyphAry[i] = nGlyphIdx;
++ }
++
++ rGfx.DrawGlyphs( aPos, (sal_uInt32 *)aGlyphAry, aUnicodes, nGlyphCount, aIdxAry );
++ }
++}
++
++//--------------------------------------------------------------------------
++
++void PspFontLayout::InitFont() const
++{
++ mrPrinterGfx.SetFont( mnFontID, mnFontHeight, mnFontWidth,
++ mnOrientation, mbVertical, mbArtItalic, mbArtBold );
++}
++
++//--------------------------------------------------------------------------
++
++void PspFontLayout::DrawText( SalGraphics& ) const
++{
++ DrawPrinterLayout( *this, mrPrinterGfx );
++}
++
++void PspGraphics::DrawServerFontLayout( const ServerFontLayout& rLayout )
++{
++#ifdef USE_BUILTIN_RASTERIZER
++ // print complex text
++ DrawPrinterLayout( rLayout, *m_pPrinterGfx );
++#endif
++}
++
++ULONG PspGraphics::GetFontCodeRanges( sal_uInt32* pCodePairs ) const
++
++{
++ ULONG nPairs = 0;
++#ifdef USE_BUILTIN_RASTERIZER
++ if( m_pServerFont[0] )
++ nPairs = m_pServerFont[0]->GetFontCodeRanges( pCodePairs );
++#endif //USE_BUILTIN_RASTERIZER
++ return nPairs;
++}
++
++USHORT PspGraphics::SetFont( ImplFontSelectData *pEntry, int nFallbackLevel )
++{
++ sal_Bool bVertical = pEntry->mbVertical;
++ sal_Int32 nID = pEntry->mpFontData ? (sal_Int32)pEntry->mpFontData->mpSysData : 0;
++
++ bool bArtItalic = false;
++ bool bArtBold = false;
++ if( pEntry->meItalic == ITALIC_OBLIQUE || pEntry->meItalic == ITALIC_NORMAL )
++ {
++ psp::italic::type eItalic = m_pPrinterGfx->GetFontMgr().getFontItalic( nID );
++ if( eItalic != psp::italic::Italic && eItalic != psp::italic::Oblique )
++ bArtItalic = true;
++ }
++ int nWeight = (int)pEntry->meWeight;
++ int nRealWeight = (int)m_pPrinterGfx->GetFontMgr().getFontWeight( nID );
++ if( nRealWeight < nWeight-2 ||
++ ( nRealWeight < (int)psp::weight::SemiBold && nWeight > (int)WEIGHT_NORMAL) )
++ {
++ bArtBold = true;
++ }
++
++ // also set the serverside font for layouting
++ m_bFontVertical = pEntry->mbVertical;
++ for( int i = nFallbackLevel; i < MAX_FALLBACK; ++i )
++ {
++ if( m_pServerFont[i] != NULL )
++ {
++ // old server side font is no longer referenced
++ GlyphCache::GetInstance().UncacheFont( *m_pServerFont[i] );
++ m_pServerFont[i] = NULL;
++ }
++ }
++
++ if( pEntry->mpFontData )
++ {
++ // requesting a font provided by builtin rasterizer
++ ServerFont* pServerFont = GlyphCache::GetInstance().CacheFont( *pEntry );
++ if( pServerFont != NULL )
++ {
++ if( pServerFont->TestFont() )
++ m_pServerFont[ nFallbackLevel ] = pServerFont;
++ else
++ GlyphCache::GetInstance().UncacheFont( *pServerFont );
++ }
++ else
++ m_pServerFont[ nFallbackLevel ] = pServerFont;
++ }
++
++ // set the printer font
++ return m_pPrinterGfx->SetFont( nID,
++ pEntry->mnHeight,
++ pEntry->mnWidth,
++ pEntry->mnOrientation,
++ pEntry->mbVertical,
++ bArtItalic,
++ bArtBold
++ );
++}
++
++void PspGraphics::SetTextColor( SalColor nSalColor )
++{
++ psp::PrinterColor aColor (SALCOLOR_RED (nSalColor),
++ SALCOLOR_GREEN (nSalColor),
++ SALCOLOR_BLUE (nSalColor));
++ m_pPrinterGfx->SetTextColor (aColor);
++}
++
++ImplFontData* PspGraphics::AddTempDevFont(const String& rFileURL, const String& rFontName )
++{
++ return NULL;
++}
++
++void PspGraphics::GetDevFontList( ImplDevFontList *pList )
++{
++ const char* pLangBoost = NULL;
++ const LanguageType aLang = Application::GetSettings().GetUILanguage();
++ switch( aLang )
++ {
++ case LANGUAGE_JAPANESE:
++ pLangBoost = "jan"; // japanese is default
++ break;
++ case LANGUAGE_CHINESE:
++ case LANGUAGE_CHINESE_SIMPLIFIED:
++ case LANGUAGE_CHINESE_SINGAPORE:
++ pLangBoost = "zhs";
++ break;
++ case LANGUAGE_CHINESE_TRADITIONAL:
++ case LANGUAGE_CHINESE_HONGKONG:
++ case LANGUAGE_CHINESE_MACAU:
++ pLangBoost = "zht";
++ break;
++ case LANGUAGE_KOREAN:
++ case LANGUAGE_KOREAN_JOHAB:
++ pLangBoost = "kor";
++ break;
++ }
++
++ ::std::list< psp::fontID > aList;
++ const psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
++ rMgr.getFontList( aList, m_pJobData->m_pParser );
++
++ ::std::list< psp::fontID >::iterator it;
++ for (it = aList.begin(); it != aList.end(); ++it)
++ {
++ psp::FastPrintFontInfo aInfo;
++ if (rMgr.getFontFastInfo (*it, aInfo))
++ {
++ 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 )
++ {
++ // prefer truetype fonts
++ pFontData->mnQuality += 10;
++ // asian type 1 fonts are not known
++ ByteString aFileName( rMgr.getFontFileSysPath( *it ) );
++ int nPos = aFileName.SearchBackward( '_' );
++ if( nPos == STRING_NOTFOUND || aFileName.GetChar( nPos+1 ) == '.' )
++ pFontData->mnQuality += 5;
++ else
++ {
++ if( pLangBoost && aFileName.Copy( nPos+1, 3 ).EqualsIgnoreCaseAscii( pLangBoost ) )
++ pFontData->mnQuality += 10;
++ }
++ }
++ pList->Add( pFontData );
++ }
++ }
++}
++
++void PspGraphics::GetDevFontSubstList( OutputDevice* pOutDev )
++{
++ const psp::PrinterInfo& rInfo = psp::PrinterInfoManager::get().getPrinterInfo( m_pJobData->m_aPrinterName );
++ if( rInfo.m_bPerformFontSubstitution )
++ {
++ for( std::hash_map< rtl::OUString, rtl::OUString, rtl::OUStringHash >::const_iterator it = rInfo.m_aFontSubstitutes.begin(); it != rInfo.m_aFontSubstitutes.end(); ++it )
++ pOutDev->ImplAddDevFontSubstitute( it->first, it->second, FONT_SUBSTITUTE_ALWAYS );
++ }
++}
++
++void PspGraphics::GetFontMetric( ImplFontMetricData *pMetric )
++{
++ const psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
++ psp::PrintFontInfo aInfo;
++
++ if (rMgr.getFontInfo (m_pPrinterGfx->GetFontID(), aInfo))
++ {
++ sal_Int32 nTextHeight = m_pPrinterGfx->GetFontHeight();
++ sal_Int32 nTextWidth = m_pPrinterGfx->GetFontWidth();
++ if( ! nTextWidth )
++ nTextWidth = nTextHeight;
++
++ pMetric->mnOrientation = m_pPrinterGfx->GetFontAngle();
++ pMetric->mnSlant = 0;
++ pMetric->mbDevice = aInfo.m_eType == psp::fonttype::Builtin ? sal_True : sal_False;
++
++ pMetric->meCharSet = aInfo.m_aEncoding;
++
++ pMetric->meFamily = ToFontFamily (aInfo.m_eFamilyStyle);
++ pMetric->meWeight = ToFontWeight (aInfo.m_eWeight);
++ pMetric->mePitch = ToFontPitch (aInfo.m_ePitch);
++ pMetric->meItalic = ToFontItalic (aInfo.m_eItalic);
++ pMetric->meType = TYPE_SCALABLE;
++
++ pMetric->mnFirstChar = 0;
++ pMetric->mnLastChar = 255;
++
++ pMetric->mnWidth = nTextWidth;
++ pMetric->mnAscent = ( aInfo.m_nAscend * nTextHeight + 500 ) / 1000;
++ pMetric->mnDescent = ( aInfo.m_nDescend * nTextHeight + 500 ) / 1000;
++ pMetric->mnLeading = ( aInfo.m_nLeading * nTextHeight + 500 ) / 1000;
++ }
++}
++
++ULONG PspGraphics::GetKernPairs( ULONG nPairs, ImplKernPairData *pKernPairs )
++{
++ const ::std::list< ::psp::KernPair >& rPairs( m_pPrinterGfx->getKernPairs() );
++ ULONG nHavePairs = rPairs.size();
++ if( pKernPairs && nPairs )
++ {
++ ::std::list< ::psp::KernPair >::const_iterator it;
++ int i;
++ int nTextScale = m_pPrinterGfx->GetFontWidth();
++ if( ! nTextScale )
++ nTextScale = m_pPrinterGfx->GetFontHeight();
++ for( i = 0, it = rPairs.begin(); i < nPairs && i < nHavePairs; i++, ++it )
++ {
++ pKernPairs[i].mnChar1 = it->first;
++ pKernPairs[i].mnChar2 = it->second;
++ pKernPairs[i].mnKern = it->kern_x * nTextScale / 1000;
++ }
++
++ }
++ return nHavePairs;
++}
++
++BOOL PspGraphics::GetGlyphBoundRect( long nGlyphIndex, Rectangle& rRect )
++{
++ int nLevel = nGlyphIndex >> GF_FONTSHIFT;
++ if( nLevel >= MAX_FALLBACK )
++ return FALSE;
++
++ ServerFont* pSF = m_pServerFont[ nLevel ];
++ if( !pSF )
++ return FALSE;
++
++ nGlyphIndex &= ~GF_FONTMASK;
++ const GlyphMetric& rGM = pSF->GetGlyphMetric( nGlyphIndex );
++ rRect = Rectangle( rGM.GetOffset(), rGM.GetSize() );
++ return TRUE;
++}
++
++BOOL PspGraphics::GetGlyphOutline( long nGlyphIndex, PolyPolygon& rPolyPoly )
++{
++ int nLevel = nGlyphIndex >> GF_FONTSHIFT;
++ if( nLevel >= MAX_FALLBACK )
++ return FALSE;
++
++ ServerFont* pSF = m_pServerFont[ nLevel ];
++ if( !pSF )
++ return FALSE;
++
++ nGlyphIndex &= ~GF_FONTMASK;
++ if( pSF->GetGlyphOutline( nGlyphIndex, rPolyPoly ) )
++ return TRUE;
++
++ return FALSE;
++}
++
++SalLayout* PspGraphics::GetTextLayout( ImplLayoutArgs& rArgs, int nFallbackLevel )
++{
++ // workaround for printers not handling glyph indexing for non-TT fonts
++ int nFontId = m_pPrinterGfx->GetFontID();
++ if( psp::fonttype::TrueType != psp::PrintFontManager::get().getFontType( nFontId ) )
++ rArgs.mnFlags |= SAL_LAYOUT_DISABLE_GLYPH_PROCESSING;
++ else if( nFallbackLevel > 0 )
++ rArgs.mnFlags &= ~SAL_LAYOUT_DISABLE_GLYPH_PROCESSING;
++
++ GenericSalLayout* pLayout = NULL;
++
++ if( m_pServerFont[ nFallbackLevel ]
++ && !(rArgs.mnFlags & SAL_LAYOUT_DISABLE_GLYPH_PROCESSING) )
++ pLayout = new PspServerFontLayout( *m_pPrinterGfx, *m_pServerFont[nFallbackLevel] );
++ else
++ pLayout = new PspFontLayout( *m_pPrinterGfx );
++
++ return pLayout;
++}
++//--------------------------------------------------------------------------
++
++BOOL PspGraphics::CreateFontSubset(
++ const rtl::OUString& rToFile,
++ ImplFontData* pFont,
++ sal_Int32* pGlyphIDs,
++ sal_uInt8* pEncoding,
++ sal_Int32* pWidths,
++ int nGlyphs,
++ FontSubsetInfo& rInfo
++ )
++{
++ // in this context the sysdata member of pFont should
++ // contain a fontID as the X fonts should be filtered
++ // out of the font list available to PDF export (for
++ // 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;
++ return PspGraphics::DoCreateFontSubset( rToFile, aFont, pGlyphIDs, pEncoding, pWidths, nGlyphs, rInfo );
++}
++
++//--------------------------------------------------------------------------
++
++const void* PspGraphics::GetEmbedFontData( ImplFontData* pFont, const sal_Unicode* pUnicodes, sal_Int32* pWidths, FontSubsetInfo& rInfo, long* pDataLen )
++{
++ // in this context the sysdata member of pFont should
++ // contain a fontID as the X fonts should be filtered
++ // out of the font list available to PDF export (for
++ // 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;
++ return PspGraphics::DoGetEmbedFontData( aFont, pUnicodes, pWidths, rInfo, pDataLen );
++}
++
++//--------------------------------------------------------------------------
++
++void PspGraphics::FreeEmbedFontData( const void* pData, long nLen )
++{
++ PspGraphics::DoFreeEmbedFontData( pData, nLen );
++}
++
++//--------------------------------------------------------------------------
++
++const std::map< sal_Unicode, sal_Int32 >* PspGraphics::GetFontEncodingVector( ImplFontData* pFont, const std::map< sal_Unicode, rtl::OString >** pNonEncoded )
++{
++ // in this context the sysdata member of pFont should
++ // contain a fontID as the X fonts should be filtered
++ // out of the font list available to PDF export (for
++ // 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;
++ return PspGraphics::DoGetFontEncodingVector( aFont, pNonEncoded );
++}
++
++
++// static helpers of PspGraphics
++
++bool PspGraphics::DoCreateFontSubset( const rtl::OUString& rToFile,
++ psp::fontID aFont,
++ sal_Int32* pGlyphIDs,
++ sal_uInt8* pEncoding,
++ sal_Int32* pWidths,
++ int nGlyphs,
++ FontSubsetInfo& rInfo )
++{
++ psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
++ psp::PrintFontInfo aFontInfo;
++
++ if( ! rMgr.getFontInfo( aFont, aFontInfo ) )
++ return false;
++
++ // fill in font info
++ switch( aFontInfo.m_eType )
++ {
++ case psp::fonttype::TrueType: rInfo.m_nFontType = SAL_FONTSUBSETINFO_TYPE_TRUETYPE;break;
++ case psp::fonttype::Type1: rInfo.m_nFontType = SAL_FONTSUBSETINFO_TYPE_TYPE1;break;
++ default:
++ return false;
++ }
++ rInfo.m_nAscent = aFontInfo.m_nAscend;
++ rInfo.m_nDescent = aFontInfo.m_nDescend;
++ rInfo.m_aPSName = rMgr.getPSName( aFont );
++
++ int xMin, yMin, xMax, yMax;
++ rMgr.getFontBoundingBox( aFont, xMin, yMin, xMax, yMax );
++
++ if( ! rMgr.createFontSubset( aFont,
++ rToFile,
++ pGlyphIDs,
++ pEncoding,
++ pWidths,
++ nGlyphs
++ ) )
++ return false;
++
++ rInfo.m_aFontBBox = Rectangle( Point( xMin, yMin ), Size( xMax-xMin, yMax-yMin ) );
++ rInfo.m_nCapHeight = yMax; // Well ...
++
++ return true;
++}
++
++const void* PspGraphics::DoGetEmbedFontData( fontID aFont, const sal_Unicode* pUnicodes, sal_Int32* pWidths, FontSubsetInfo& rInfo, long* pDataLen )
++{
++ psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
++
++ psp::PrintFontInfo aFontInfo;
++ if( ! rMgr.getFontInfo( aFont, aFontInfo ) )
++ return NULL;
++
++ // fill in font info
++ switch( aFontInfo.m_eType )
++ {
++ case psp::fonttype::TrueType: rInfo.m_nFontType = SAL_FONTSUBSETINFO_TYPE_TRUETYPE;break;
++ case psp::fonttype::Type1: rInfo.m_nFontType = SAL_FONTSUBSETINFO_TYPE_TYPE1;break;
++ default:
++ return NULL;
++ }
++ rInfo.m_nAscent = aFontInfo.m_nAscend;
++ rInfo.m_nDescent = aFontInfo.m_nDescend;
++ rInfo.m_aPSName = rMgr.getPSName( aFont );
++
++ int xMin, yMin, xMax, yMax;
++ rMgr.getFontBoundingBox( aFont, xMin, yMin, xMax, yMax );
++
++ psp::CharacterMetric aMetrics[256];
++ sal_Unicode aUnicodes[256];
++ if( aFontInfo.m_aEncoding == RTL_TEXTENCODING_SYMBOL && aFontInfo.m_eType == psp::fonttype::Type1 )
++ {
++ for( int i = 0; i < 256; i++ )
++ aUnicodes[i] = pUnicodes[i] < 0x0100 ? pUnicodes[i] + 0xf000 : pUnicodes[i];
++ pUnicodes = aUnicodes;
++ }
++ if( ! rMgr.getMetrics( aFont, pUnicodes, 256, aMetrics ) )
++ return NULL;
++
++ OString aSysPath = rMgr.getFontFileSysPath( aFont );
++ struct stat aStat;
++ if( stat( aSysPath.getStr(), &aStat ) )
++ return NULL;
++ int fd = open( aSysPath.getStr(), O_RDONLY );
++ if( fd < 0 )
++ return NULL;
++ void* pFile = mmap( NULL, aStat.st_size, PROT_READ, MAP_SHARED, fd, 0 );
++ close( fd );
++ if( pFile == MAP_FAILED )
++ return NULL;
++
++ *pDataLen = aStat.st_size;
++
++ rInfo.m_aFontBBox = Rectangle( Point( xMin, yMin ), Size( xMax-xMin, yMax-yMin ) );
++ rInfo.m_nCapHeight = yMax; // Well ...
++
++ for( int i = 0; i < 256; i++ )
++
++ pWidths[i] = (aMetrics[i].width > 0 ? aMetrics[i].width : 0);
++
++ return pFile;
++}
++
++void PspGraphics::DoFreeEmbedFontData( const void* pData, long nLen )
++{
++ if( pData )
++ munmap( (char*)pData, nLen );
++}
++
++const std::map< sal_Unicode, sal_Int32 >* PspGraphics::DoGetFontEncodingVector( fontID aFont, const std::map< sal_Unicode, rtl::OString >** pNonEncoded )
++{
++ psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
++
++ psp::PrintFontInfo aFontInfo;
++ if( ! rMgr.getFontInfo( aFont, aFontInfo ) )
++ {
++ if( pNonEncoded )
++ *pNonEncoded = NULL;
++ return NULL;
++ }
++
++ return rMgr.getEncodingMap( aFont, pNonEncoded );
++}
++
++void PspGraphics::SetImplFontData( const psp::FastPrintFontInfo& aInfo, ImplFontData& rData )
++{
++ rData.meFamily = ToFontFamily (aInfo.m_eFamilyStyle);
++ rData.meWeight = ToFontWeight (aInfo.m_eWeight);
++
++ rData.meItalic = ToFontItalic (aInfo.m_eItalic);
++ rData.meWidthType = ToFontWidth (aInfo.m_eWidth);
++ rData.mePitch = ToFontPitch (aInfo.m_ePitch);
++ rData.meCharSet = aInfo.m_aEncoding;
++ rData.maName = aInfo.m_aFamilyName;
++ // rData.meScript = SCRIPT_DONTKNOW;
++ /*rData.maStyleName = XXX */
++
++ rData.mnWidth = 0;
++ rData.mnHeight = 0;
++ rData.mbOrientation = TRUE;
++ rData.mnQuality = (aInfo.m_eType == psp::fonttype::Builtin ? 1024 : 0);
++ rData.mnVerticalOrientation= 0;
++ rData.meType = TYPE_SCALABLE;
++ rData.mbDevice = (aInfo.m_eType == psp::fonttype::Builtin);
++ String aMapNames;
++ for( ::std::list< OUString >::const_iterator it = aInfo.m_aAliases.begin(); it != aInfo.m_aAliases.end(); ++it )
++ {
++ if( it != aInfo.m_aAliases.begin() )
++ aMapNames.Append(';');
++ aMapNames.Append( String( *it ) );
++ }
++ rData.maMapNames = aMapNames;
++ switch( aInfo.m_eType )
++ {
++ case psp::fonttype::TrueType:
++ rData.mbSubsettable = TRUE;
++ rData.mbEmbeddable = FALSE;
++ break;
++ case psp::fonttype::Type1:
++ rData.mbSubsettable = FALSE;
++ rData.mbEmbeddable = TRUE;
++ break;
++ default:
++ rData.mbSubsettable = FALSE;
++ rData.mbEmbeddable = FALSE;
++ break;
++ }
++}
++
++FontWidth PspGraphics::ToFontWidth (psp::width::type eWidth)
++{
++ switch (eWidth)
++ {
++ case psp::width::UltraCondensed: return WIDTH_ULTRA_CONDENSED;
++ case psp::width::ExtraCondensed: return WIDTH_EXTRA_CONDENSED;
++ case psp::width::Condensed: return WIDTH_CONDENSED;
++ case psp::width::SemiCondensed: return WIDTH_SEMI_CONDENSED;
++ case psp::width::Normal: return WIDTH_NORMAL;
++ case psp::width::SemiExpanded: return WIDTH_SEMI_EXPANDED;
++ case psp::width::Expanded: return WIDTH_EXPANDED;
++ case psp::width::ExtraExpanded: return WIDTH_EXTRA_EXPANDED;
++ case psp::width::UltraExpanded: return WIDTH_ULTRA_EXPANDED;
++ }
++ return WIDTH_DONTKNOW;
++}
++
++FontWeight PspGraphics::ToFontWeight (psp::weight::type eWeight)
++{
++ switch (eWeight)
++ {
++ case psp::weight::Thin: return WEIGHT_THIN;
++ case psp::weight::UltraLight: return WEIGHT_ULTRALIGHT;
++ case psp::weight::Light: return WEIGHT_LIGHT;
++ case psp::weight::SemiLight: return WEIGHT_SEMILIGHT;
++ case psp::weight::Normal: return WEIGHT_NORMAL;
++ case psp::weight::Medium: return WEIGHT_MEDIUM;
++ case psp::weight::SemiBold: return WEIGHT_SEMIBOLD;
++ case psp::weight::Bold: return WEIGHT_BOLD;
++ case psp::weight::UltraBold: return WEIGHT_ULTRABOLD;
++ case psp::weight::Black: return WEIGHT_BLACK;
++ }
++ return WEIGHT_DONTKNOW;
++}
++
++FontPitch PspGraphics::ToFontPitch (psp::pitch::type ePitch)
++{
++ switch (ePitch)
++ {
++ case psp::pitch::Fixed: return PITCH_FIXED;
++ case psp::pitch::Variable: return PITCH_VARIABLE;
++ }
++ return PITCH_DONTKNOW;
++}
++
++FontItalic PspGraphics::ToFontItalic (psp::italic::type eItalic)
++{
++ switch (eItalic)
++ {
++ case psp::italic::Upright: return ITALIC_NONE;
++ case psp::italic::Oblique: return ITALIC_OBLIQUE;
++ case psp::italic::Italic: return ITALIC_NORMAL;
++ }
++ return ITALIC_DONTKNOW;
++}
++
++FontFamily PspGraphics::ToFontFamily (psp::family::type eFamily)
++{
++ switch (eFamily)
++ {
++ case psp::family::Decorative: return FAMILY_DECORATIVE;
++ case psp::family::Modern: return FAMILY_MODERN;
++ case psp::family::Roman: return FAMILY_ROMAN;
++ case psp::family::Script: return FAMILY_SCRIPT;
++ case psp::family::Swiss: return FAMILY_SWISS;
++ case psp::family::System: return FAMILY_SYSTEM;
++ }
++ return FAMILY_DONTKNOW;
++}
+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
+@@ -59,20 +59,18 @@
+ *
+ ************************************************************************/
+
+-#define _SV_SALBMP_CXX
+-
+-// -=-= #includes =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-
+ #include <string.h>
+ #include <stdio.h>
+ #include <errno.h>
+ #ifdef FREEBSD
+ #include <sys/types.h>
+ #endif
+-#include <sys/shm.h>
+ #include <prex.h>
+ #include <postx.h>
+ #include <salunx.h>
++#ifndef _OSL_ENDIAN_H_
++#include <osl/endian.h>
++#endif
+ #ifndef _RTL_MEMORY_H_
+ #include <rtl/memory.h>
+ #endif
+@@ -85,11 +83,14 @@
+ #ifndef _SV_SALDISP_HXX
+ #include <saldisp.hxx>
+ #endif
+-#ifndef _SV_SALGDI_HXX
+-#include <salgdi.hxx>
++#ifndef _SV_SALGDI_H
++#include <salgdi.h>
++#endif
++#ifndef _SV_SALBMP_H
++#include <salbmp.h>
+ #endif
+-#ifndef _SV_SALBMP_HXX
+-#include <salbmp.hxx>
++#ifndef _SV_SALINST_H
++#include <salinst.h>
+ #endif
+
+ // -----------
+@@ -102,12 +103,17 @@
+ // - SalBitmap -
+ // -------------
+
+-ImplSalBitmapCache* SalBitmap::mpCache = NULL;
+-ULONG SalBitmap::mnCacheInstCount = 0;
++SalBitmap* X11SalInstance::CreateSalBitmap()
++{
++ return new X11SalBitmap();
++}
++
++ImplSalBitmapCache* X11SalBitmap::mpCache = NULL;
++ULONG X11SalBitmap::mnCacheInstCount = 0;
+
+ // -----------------------------------------------------------------------------
+
+-SalBitmap::SalBitmap() :
++X11SalBitmap::X11SalBitmap() :
+ mpDIB( NULL ),
+ mpDDB( NULL )
+ {
+@@ -115,14 +121,14 @@ SalBitmap::SalBitmap() :
+
+ // -----------------------------------------------------------------------------
+
+-SalBitmap::~SalBitmap()
++X11SalBitmap::~X11SalBitmap()
+ {
+ Destroy();
+ }
+
+ // -----------------------------------------------------------------------------
+
+-void SalBitmap::ImplCreateCache()
++void X11SalBitmap::ImplCreateCache()
+ {
+ if( !mnCacheInstCount++ )
+ mpCache = new ImplSalBitmapCache;
+@@ -130,9 +136,9 @@ void SalBitmap::ImplCreateCache()
+
+ // -----------------------------------------------------------------------------
+
+-void SalBitmap::ImplDestroyCache()
++void X11SalBitmap::ImplDestroyCache()
+ {
+- DBG_ASSERT( mnCacheInstCount, "SalBitmap::ImplDestroyCache(): underflow" );
++ DBG_ASSERT( mnCacheInstCount, "X11SalBitmap::ImplDestroyCache(): underflow" );
+
+ if( mnCacheInstCount && !--mnCacheInstCount )
+ delete mpCache, mpCache = NULL;
+@@ -140,7 +146,7 @@ void SalBitmap::ImplDestroyCache()
+
+ // -----------------------------------------------------------------------------
+
+-void SalBitmap::ImplRemovedFromCache()
++void X11SalBitmap::ImplRemovedFromCache()
+ {
+ if( mpDDB )
+ delete mpDDB, mpDDB = NULL;
+@@ -148,7 +154,7 @@ void SalBitmap::ImplRemovedFromCache()
+
+ // -----------------------------------------------------------------------------
+
+-BitmapBuffer* SalBitmap::ImplCreateDIB( const Size& rSize, USHORT nBitCount, const BitmapPalette& rPal )
++BitmapBuffer* X11SalBitmap::ImplCreateDIB( const Size& rSize, USHORT nBitCount, const BitmapPalette& rPal )
+ {
+ DBG_ASSERT( nBitCount == 1 || nBitCount == 4 || nBitCount == 8 || nBitCount == 24, "Unsupported BitCount!" );
+
+@@ -198,7 +204,7 @@ BitmapBuffer* SalBitmap::ImplCreateDIB(
+
+ // -----------------------------------------------------------------------------
+
+-BitmapBuffer* SalBitmap::ImplCreateDIB( Drawable aDrawable,
++BitmapBuffer* X11SalBitmap::ImplCreateDIB( Drawable aDrawable,
+ long nDrawableDepth,
+ long nX, long nY,
+ long nWidth, long nHeight )
+@@ -207,7 +213,7 @@ BitmapBuffer* SalBitmap::ImplCreateDIB(
+
+ if( aDrawable && nWidth && nHeight && nDrawableDepth )
+ {
+- SalDisplay* pSalDisp = GetSalData()->GetCurDisp();
++ SalDisplay* pSalDisp = GetSalData()->GetDisplay();
+ SalXLib* pXLib = pSalDisp->GetXLib();
+ Display* pXDisp = pSalDisp->GetDisplay();
+
+@@ -342,13 +348,13 @@ BitmapBuffer* SalBitmap::ImplCreateDIB(
+
+ // -----------------------------------------------------------------------------
+
+-XImage* SalBitmap::ImplCreateXImage( SalDisplay *pSalDisp, long nDepth, const SalTwoRect& rTwoRect ) const
++XImage* X11SalBitmap::ImplCreateXImage( SalDisplay *pSalDisp, long nDepth, const SalTwoRect& rTwoRect ) const
+ {
+ XImage* pImage = NULL;
+
+ if( !mpDIB && mpDDB )
+ {
+- ( (SalBitmap*) this )->mpDIB = ImplCreateDIB( mpDDB->ImplGetPixmap(),
++ const_cast<X11SalBitmap*>(this)->mpDIB = ImplCreateDIB( mpDDB->ImplGetPixmap(),
+ mpDDB->ImplGetDepth(),
+ 0, 0,
+ mpDDB->ImplGetWidth(),
+@@ -478,7 +484,7 @@ XImage* SalBitmap::ImplCreateXImage( Sal
+
+ // -----------------------------------------------------------------------------
+ #ifdef _USE_PRINT_EXTENSION_
+-BOOL SalBitmap::ImplCreateFromDrawable( SalDisplay* pDisplay, Drawable aDrawable, long nDrawableDepth,
++bool X11SalBitmap::ImplCreateFromDrawable( SalDisplay* pDisplay, Drawable aDrawable, long nDrawableDepth,
+ long nX, long nY, long nWidth, long nHeight )
+ {
+ Destroy();
+@@ -489,7 +495,7 @@ BOOL SalBitmap::ImplCreateFromDrawable(
+ return( mpDDB != NULL );
+ }
+ #else
+-BOOL SalBitmap::ImplCreateFromDrawable( Drawable aDrawable, long nDrawableDepth,
++bool X11SalBitmap::ImplCreateFromDrawable( Drawable aDrawable, long nDrawableDepth,
+ long nX, long nY, long nWidth, long nHeight )
+ {
+ Destroy();
+@@ -502,19 +508,8 @@ BOOL SalBitmap::ImplCreateFromDrawable(
+ // -----------------------------------------------------------------------------
+ #endif
+
+-BOOL SalBitmap::ImplCreateLocalFromDrawable( Drawable aDrawable, long nDrawableDepth,
+- long nX, long nY, long nWidth, long nHeight )
+-{
+- Destroy();
+-
+- if( aDrawable && nWidth && nHeight && nDrawableDepth )
+- mpDIB = ImplCreateDIB( aDrawable, nDrawableDepth, nX, nY, nWidth, nHeight );
+-
+- return( mpDIB != NULL );
+-}
+-
+-BOOL
+-SalBitmap::SnapShot (Display* pDisplay, XLIB_Window hWindow)
++bool
++X11SalBitmap::SnapShot (Display* pDisplay, XLIB_Window hWindow)
+ {
+ if (hWindow != None)
+ {
+@@ -577,7 +572,7 @@ SalBitmap::SnapShot (Display* pDisplay,
+ {
+ XImage* pImage = XGetImage (pDisplay, aAttribute.root,
+ x, y, width, height, AllPlanes, ZPixmap);
+- BOOL bSnapShot = ImplCreateFromXImage (pDisplay, aAttribute.root, pImage);
++ bool bSnapShot = ImplCreateFromXImage (pDisplay, aAttribute.root, pImage);
+ XDestroyImage (pImage);
+
+ return bSnapShot;
+@@ -589,8 +584,8 @@ SalBitmap::SnapShot (Display* pDisplay,
+ return False;
+ }
+
+-BOOL
+-SalBitmap::ImplCreateFromXImage (Display* pDisplay, XLIB_Window hWindow, XImage* pImage)
++bool
++X11SalBitmap::ImplCreateFromXImage (Display* pDisplay, XLIB_Window hWindow, XImage* pImage)
+ {
+ Destroy();
+
+@@ -603,8 +598,8 @@ SalBitmap::ImplCreateFromXImage (Display
+ }
+
+ #ifdef _USE_PRINT_EXTENSION_
+-void SalBitmap::ImplDraw( SalDisplay *pDisplay, Drawable aDrawable, long nDrawableDepth,
+- const SalTwoRect& rTwoRect, const GC& rGC ) const
++void X11SalBitmap::ImplDraw( SalDisplay *pDisplay, Drawable aDrawable, long nDrawableDepth,
++ const SalTwoRect& rTwoRect, const GC& rGC, bool bDstIsWindow ) const
+ {
+ if( !mpDDB || !mpDDB->ImplMatches( nDrawableDepth, rTwoRect ) )
+ {
+@@ -654,11 +649,11 @@ void SalBitmap::ImplDraw( SalDisplay *pD
+ }
+
+ if( mpDDB )
+- mpDDB->ImplDraw( pDisplay, aDrawable, nDrawableDepth, rTwoRect, rGC );
++ mpDDB->ImplDraw( pDisplay, aDrawable, nDrawableDepth, rTwoRect, rGC, bDstIsWindow );
+ }
+ #else
+-void SalBitmap::ImplDraw( Drawable aDrawable, long nDrawableDepth,
+- const SalTwoRect& rTwoRect, const GC& rGC ) const
++void X11SalBitmap::ImplDraw( Drawable aDrawable, long nDrawableDepth,
++ const SalTwoRect& rTwoRect, const GC& rGC, bool bDstIsWindow ) const
+ {
+ if( !mpDDB || !mpDDB->ImplMatches( nDrawableDepth, rTwoRect ) )
+ {
+@@ -667,18 +662,18 @@ void SalBitmap::ImplDraw( Drawable aDraw
+ // do we already have a DIB? if not, create aDIB from current DDB first
+ if( !mpDIB )
+ {
+- ( (SalBitmap*) this )->mpDIB = ImplCreateDIB( mpDDB->ImplGetPixmap(),
++ const_cast<X11SalBitmap*>(this)->mpDIB = ImplCreateDIB( mpDDB->ImplGetPixmap(),
+ mpDDB->ImplGetDepth(),
+ 0, 0,
+ mpDDB->ImplGetWidth(),
+ mpDDB->ImplGetHeight() );
+ }
+
+- delete mpDDB, ( (SalBitmap*) this )->mpDDB = NULL;
++ delete mpDDB, const_cast<X11SalBitmap*>(this)->mpDDB = NULL;
+ }
+
+ if( mpCache )
+- mpCache->ImplRemove( const_cast<SalBitmap*>(this) );
++ mpCache->ImplRemove( const_cast<X11SalBitmap*>(this) );
+
+ SalTwoRect aTwoRect( rTwoRect );
+
+@@ -693,28 +688,28 @@ void SalBitmap::ImplDraw( Drawable aDraw
+ aTwoRect.mnSrcHeight = aTwoRect.mnDestHeight = aSize.Height();
+ }
+
+- XImage* pImage = ImplCreateXImage( GetSalData()->GetCurDisp(),
++ XImage* pImage = ImplCreateXImage( GetSalData()->GetDisplay(),
+ nDrawableDepth, aTwoRect );
+
+ if( pImage )
+ {
+- ( (SalBitmap*) this )->mpDDB = new ImplSalDDB( pImage, aDrawable, aTwoRect );
++ const_cast<X11SalBitmap*>(this)->mpDDB = new ImplSalDDB( pImage, aDrawable, aTwoRect );
+ delete[] pImage->data, pImage->data = NULL;
+ XDestroyImage( pImage );
+
+ if( mpCache )
+- mpCache->ImplAdd( const_cast<SalBitmap*>(this), mpDDB->ImplGetMemSize() );
++ mpCache->ImplAdd( const_cast<X11SalBitmap*>(this), mpDDB->ImplGetMemSize() );
+ }
+ }
+
+ if( mpDDB )
+- mpDDB->ImplDraw( aDrawable, nDrawableDepth, rTwoRect, rGC );
++ mpDDB->ImplDraw( aDrawable, nDrawableDepth, rTwoRect, rGC, bDstIsWindow );
+ }
+ #endif
+
+ // -----------------------------------------------------------------------------
+
+-BOOL SalBitmap::Create( const Size& rSize, USHORT nBitCount, const BitmapPalette& rPal )
++bool X11SalBitmap::Create( const Size& rSize, USHORT nBitCount, const BitmapPalette& rPal )
+ {
+ Destroy();
+ mpDIB = ImplCreateDIB( rSize, nBitCount, rPal );
+@@ -724,14 +719,14 @@ BOOL SalBitmap::Create( const Size& rSiz
+
+ // -----------------------------------------------------------------------------
+
+-BOOL SalBitmap::Create( const SalBitmap& rSalBmp )
++bool X11SalBitmap::Create( const SalBitmap& rSSalBmp )
+ {
+ Destroy();
+
++ const X11SalBitmap& rSalBmp = static_cast<const X11SalBitmap&>( rSSalBmp );
++
+ if( rSalBmp.mpDIB )
+ {
+- const Size aSize( rSalBmp.GetSize() );
+-
+ mpDIB = ImplCreateDIB( rSalBmp.GetSize(), rSalBmp.GetBitCount(), rSalBmp.mpDIB->maPalette );
+
+ if( mpDIB )
+@@ -752,21 +747,21 @@ BOOL SalBitmap::Create( const SalBitmap&
+
+ // -----------------------------------------------------------------------------
+
+-BOOL SalBitmap::Create( const SalBitmap& rSalBmp, SalGraphics* pGraphics )
++bool X11SalBitmap::Create( const SalBitmap& rSalBmp, SalGraphics* pGraphics )
+ {
+ return FALSE;
+ }
+
+ // -----------------------------------------------------------------------------
+
+-BOOL SalBitmap::Create( const SalBitmap& rSalBmp, USHORT nNewBitCount )
++bool X11SalBitmap::Create( const SalBitmap& rSalBmp, USHORT nNewBitCount )
+ {
+ return FALSE;
+ }
+
+ // -----------------------------------------------------------------------------
+
+-void SalBitmap::Destroy()
++void X11SalBitmap::Destroy()
+ {
+ if( mpDIB )
+ {
+@@ -783,7 +778,7 @@ void SalBitmap::Destroy()
+
+ // -----------------------------------------------------------------------------
+
+-Size SalBitmap::GetSize() const
++Size X11SalBitmap::GetSize() const
+ {
+ Size aSize;
+
+@@ -797,7 +792,7 @@ Size SalBitmap::GetSize() const
+
+ // -----------------------------------------------------------------------------
+
+-USHORT SalBitmap::GetBitCount() const
++USHORT X11SalBitmap::GetBitCount() const
+ {
+ USHORT nBitCount;
+
+@@ -825,7 +820,7 @@ USHORT SalBitmap::GetBitCount() const
+
+ // -----------------------------------------------------------------------------
+
+-BitmapBuffer* SalBitmap::AcquireBuffer( BOOL bReadOnly )
++BitmapBuffer* X11SalBitmap::AcquireBuffer( bool bReadOnly )
+ {
+ if( !mpDIB && mpDDB )
+ {
+@@ -838,7 +833,7 @@ BitmapBuffer* SalBitmap::AcquireBuffer(
+
+ // -----------------------------------------------------------------------------
+
+-void SalBitmap::ReleaseBuffer( BitmapBuffer* pBuffer, BOOL bReadOnly )
++void X11SalBitmap::ReleaseBuffer( BitmapBuffer* pBuffer, bool bReadOnly )
+ {
+ if( !bReadOnly )
+ {
+@@ -864,14 +859,14 @@ ImplSalDDB::ImplSalDDB(
+ mnDepth ( pImage->depth )
+ {
+ #if !defined(_USE_PRINT_EXTENSION_)
+- SalDisplay* pSalDisp = GetSalData()->GetCurDisp();
++ SalDisplay* pSalDisp = GetSalData()->GetDisplay();
+ Display* pXDisp = pSalDisp->GetDisplay();
+ #else
+ Display* pXDisp = pDisplay->GetDisplay();
+ #endif
+
+
+- if( maPixmap = XCreatePixmap( pXDisp, aDrawable, ImplGetWidth(), ImplGetHeight(), ImplGetDepth() ) )
++ if( (maPixmap = XCreatePixmap( pXDisp, aDrawable, ImplGetWidth(), ImplGetHeight(), ImplGetDepth() )) )
+ {
+ XGCValues aValues;
+ GC aGC;
+@@ -939,13 +934,13 @@ ImplSalDDB::ImplSalDDB(
+ mnDepth( nDrawableDepth )
+ {
+ #if !defined(_USE_PRINT_EXTENSION_)
+- SalDisplay* pSalDisp = GetSalData()->GetCurDisp();
++ SalDisplay* pSalDisp = GetSalData()->GetDisplay();
+ Display* pXDisp = pSalDisp->GetDisplay();
+ #else
+ Display* pXDisp = pDisplay->GetDisplay();
+ #endif
+
+- if( maPixmap = XCreatePixmap( pXDisp, aDrawable, nWidth, nHeight, nDrawableDepth ) )
++ if( (maPixmap = XCreatePixmap( pXDisp, aDrawable, nWidth, nHeight, nDrawableDepth )) )
+ {
+ XGCValues aValues;
+ GC aGC;
+@@ -962,10 +957,10 @@ ImplSalDDB::ImplSalDDB(
+ aGC = XCreateGC( pXDisp, maPixmap, nValues, &aValues );
+ #ifdef _USE_PRINT_EXTENSION_
+ ImplDraw( pDisplay, aDrawable, nDrawableDepth, maPixmap, mnDepth,
+- nX, nY, nWidth, nHeight, 0, 0, aGC );
++ nX, nY, nWidth, nHeight, 0, 0, aGC, false );
+ #else
+ ImplDraw( aDrawable, nDrawableDepth, maPixmap, mnDepth,
+- nX, nY, nWidth, nHeight, 0, 0, aGC );
++ nX, nY, nWidth, nHeight, 0, 0, aGC, false );
+ #endif
+ XFreeGC( pXDisp, aGC );
+
+@@ -980,14 +975,14 @@ ImplSalDDB::ImplSalDDB(
+ ImplSalDDB::~ImplSalDDB()
+ {
+ if( maPixmap && ImplGetSVData() )
+- XFreePixmap( GetSalData()->GetCurDisp()->GetDisplay(), maPixmap );
++ XFreePixmap( GetSalData()->GetDisplay()->GetDisplay(), maPixmap );
+ }
+
+ // -----------------------------------------------------------------------------
+
+-BOOL ImplSalDDB::ImplMatches( long nDepth, const SalTwoRect& rTwoRect ) const
++bool ImplSalDDB::ImplMatches( long nDepth, const SalTwoRect& rTwoRect ) const
+ {
+- BOOL bRet = FALSE;
++ bool bRet = FALSE;
+
+ if( ( maPixmap != 0 ) && ( ( mnDepth == nDepth ) || ( 1 == mnDepth ) ) )
+ {
+@@ -1017,18 +1012,18 @@ void ImplSalDDB::ImplDraw(
+ #ifdef _USE_PRINT_EXTENSION_
+ SalDisplay* pDisplay,
+ #endif
+- Drawable aDrawable, long nDrawableDepth, const SalTwoRect& rTwoRect, const GC& rGC ) const
++ Drawable aDrawable, long nDrawableDepth, const SalTwoRect& rTwoRect, const GC& rGC, bool bDstIsWindow ) const
+ {
+ #ifdef _USE_PRINT_EXTENSION_
+ ImplDraw( pDisplay, maPixmap, mnDepth, aDrawable, nDrawableDepth,
+ rTwoRect.mnSrcX - maTwoRect.mnSrcX, rTwoRect.mnSrcY - maTwoRect.mnSrcY,
+ rTwoRect.mnDestWidth, rTwoRect.mnDestHeight,
+- rTwoRect.mnDestX, rTwoRect.mnDestY, rGC );
++ rTwoRect.mnDestX, rTwoRect.mnDestY, rGC, bDstIsWindow );
+ #else
+ ImplDraw( maPixmap, mnDepth, aDrawable, nDrawableDepth,
+ rTwoRect.mnSrcX - maTwoRect.mnSrcX, rTwoRect.mnSrcY - maTwoRect.mnSrcY,
+ rTwoRect.mnDestWidth, rTwoRect.mnDestHeight,
+- rTwoRect.mnDestX, rTwoRect.mnDestY, rGC );
++ rTwoRect.mnDestX, rTwoRect.mnDestY, rGC, bDstIsWindow );
+ #endif
+ }
+
+@@ -1042,10 +1037,10 @@ void ImplSalDDB::ImplDraw(
+ Drawable aDstDrawable, long nDstDrawableDepth,
+ long nSrcX, long nSrcY,
+ long nDestWidth, long nDestHeight,
+- long nDestX, long nDestY, const GC& rGC )
++ long nDestX, long nDestY, const GC& rGC, bool bDstIsWindow )
+ {
+ #if !defined(_USE_PRINT_EXTENSION_)
+- SalDisplay* pSalDisp = GetSalData()->GetCurDisp();
++ SalDisplay* pSalDisp = GetSalData()->GetDisplay();
+ Display* pXDisp = pSalDisp->GetDisplay();
+ #else
+ Display* pXDisp = pDisplay->GetDisplay();
+@@ -1058,18 +1053,11 @@ void ImplSalDDB::ImplDraw(
+ }
+ else
+ {
+- if( nDestWidth > SAL_DRAWPIXMAP_MAX_EXT )
+- {
+- // !!! Broken XCopyArea
+- XCopyArea( pXDisp, aSrcDrawable, aDstDrawable, rGC,
+- nSrcX, nSrcY, nDestWidth, nDestHeight, nDestX, nDestY );
+- }
+- else
+- {
+- XCopyArea( pXDisp, aSrcDrawable, aDstDrawable, rGC,
+- nSrcX, nSrcY, nDestWidth, nDestHeight, nDestX, nDestY );
+- }
++ XCopyArea( pXDisp, aSrcDrawable, aDstDrawable, rGC,
++ nSrcX, nSrcY, nDestWidth, nDestHeight, nDestX, nDestY );
+ }
++ if( bDstIsWindow )
++ X11SalGraphics::YieldGraphicsExpose( pXDisp, NULL, aDstDrawable );
+ }
+
+ // ----------------------
+@@ -1078,11 +1066,11 @@ void ImplSalDDB::ImplDraw(
+
+ struct ImplBmpObj
+ {
+- SalBitmap* mpBmp;
++ X11SalBitmap* mpBmp;
+ ULONG mnMemSize;
+ ULONG mnFlags;
+
+- ImplBmpObj( SalBitmap* pBmp, ULONG nMemSize, ULONG nFlags ) :
++ ImplBmpObj( X11SalBitmap* pBmp, ULONG nMemSize, ULONG nFlags ) :
+ mpBmp( pBmp ), mnMemSize( nMemSize ), mnFlags( nFlags ) {}
+ };
+
+@@ -1102,10 +1090,10 @@ ImplSalBitmapCache::~ImplSalBitmapCache(
+
+ // -----------------------------------------------------------------------------
+
+-void ImplSalBitmapCache::ImplAdd( SalBitmap* pBmp, ULONG nMemSize, ULONG nFlags )
++void ImplSalBitmapCache::ImplAdd( X11SalBitmap* pBmp, ULONG nMemSize, ULONG nFlags )
+ {
+ ImplBmpObj* pObj;
+- BOOL bFound = FALSE;
++ bool bFound = FALSE;
+
+ for( pObj = (ImplBmpObj*) maBmpList.Last(); pObj && !bFound; pObj = (ImplBmpObj*) maBmpList.Prev() )
+ if( pObj->mpBmp == pBmp )
+@@ -1124,7 +1112,7 @@ void ImplSalBitmapCache::ImplAdd( SalBit
+
+ // -----------------------------------------------------------------------------
+
+-void ImplSalBitmapCache::ImplRemove( SalBitmap* pBmp )
++void ImplSalBitmapCache::ImplRemove( X11SalBitmap* pBmp )
+ {
+ for( ImplBmpObj* pObj = (ImplBmpObj*) maBmpList.Last(); pObj; pObj = (ImplBmpObj*) maBmpList.Prev() )
+ {
+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
+@@ -59,14 +59,22 @@
+ *
+ ************************************************************************/
+
+-#define _SV_SALGDI_CXX
+-
+-// -=-= #includes =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
+ #include <stdio.h>
+ #include <stdlib.h>
+
+ #include <prex.h>
++// [ed] 6/15/02 There's a conflicting definition of INT8 within the Xmd.h header
++// and the solar.h OOo header. So, wrap the X11 header with a bogus #define
++// to use the OOo definition of the symbol for INT8.
++// [fa] 4/12/04 With 64-bit changes, X11 headers also conflict with INT64
++
++#define INT8 blehBlahFooBarINT8
++#define INT64 blehBlahFooBarINT64
++
+ #include <X11/Xproto.h>
++
++#undef INT8
++#undef INT64
+ #include <postx.h>
+
+ #include <salunx.h>
+@@ -78,13 +86,13 @@
+ #include <saldisp.hxx>
+ #endif
+ #ifndef _SV_SALGDI_HXX
+-#include <salgdi.hxx>
++#include <salgdi.h>
+ #endif
+-#ifndef _SV_SALFRAME_HXX
+-#include <salframe.hxx>
++#ifndef _SV_SALFRAME_H
++#include <salframe.h>
+ #endif
+-#ifndef _SV_SALVD_HXX
+-#include <salvd.hxx>
++#ifndef _SV_SALVD_H
++#include <salvd.h>
+ #endif
+ #include <tools/debug.hxx>
+
+@@ -128,17 +136,13 @@ inline SalPolyLine::~SalPolyLine()
+ { if( pFirst_ != Points_ ) delete [] pFirst_; }
+
+ #undef STATIC_POINTS
+-// -=-= SalGraphicsData =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++// -=-= X11SalGraphics =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-SalGraphicsData::SalGraphicsData()
++X11SalGraphics::X11SalGraphics()
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- m_pJobData = NULL;
+- m_pPrinterGfx = NULL;
+- m_pPhoneNr = NULL;
+-#endif
+ m_pFrame = NULL;
+ m_pVDev = NULL;
++ m_pDeleteColormap = NULL;
+ hDrawable_ = None;
+
+ pClipRegion_ = NULL;
+@@ -188,38 +192,53 @@ SalGraphicsData::SalGraphicsData()
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-SalGraphicsData::~SalGraphicsData()
++X11SalGraphics::~X11SalGraphics()
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if( ! ( m_pJobData || m_pPrinterGfx ) )
+-#endif
+- {
+- Display *pDisplay = GetXDisplay();
++ Display *pDisplay = GetXDisplay();
++
++ DBG_ASSERT( !pPaintRegion_, "pPaintRegion_" )
++ if( pClipRegion_ ) XDestroyRegion( pClipRegion_ );
++
++ if( hBrush_ ) XFreePixmap( pDisplay, hBrush_ );
++ if( pPenGC_ ) XFreeGC( pDisplay, pPenGC_ );
++ if( pFontGC_ ) XFreeGC( pDisplay, pFontGC_ );
++ if( pBrushGC_ ) XFreeGC( pDisplay, pBrushGC_ );
++ if( pMonoGC_ ) XFreeGC( pDisplay, pMonoGC_ );
++ if( pCopyGC_ ) XFreeGC( pDisplay, pCopyGC_ );
++ if( pMaskGC_ ) XFreeGC( pDisplay, pMaskGC_ );
++ if( pInvertGC_ ) XFreeGC( pDisplay, pInvertGC_ );
++ if( pInvert50GC_ ) XFreeGC( pDisplay, pInvert50GC_ );
++ if( pStippleGC_ ) XFreeGC( pDisplay, pStippleGC_ );
++ if( pTrackingGC_ ) XFreeGC( pDisplay, pTrackingGC_ );
++ if( m_pDeleteColormap )
++ delete m_pDeleteColormap;
++}
+
+- DBG_ASSERT( !pPaintRegion_, "pPaintRegion_" )
+- if( pClipRegion_ ) XDestroyRegion( pClipRegion_ );
++// -=-= SalGraphics / X11SalGraphics =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+- if( hBrush_ ) XFreePixmap( pDisplay, hBrush_ );
+- if( pPenGC_ ) XFreeGC( pDisplay, pPenGC_ );
+- if( pFontGC_ ) XFreeGC( pDisplay, pFontGC_ );
+- if( pBrushGC_ ) XFreeGC( pDisplay, pBrushGC_ );
+- if( pMonoGC_ ) XFreeGC( pDisplay, pMonoGC_ );
+- if( pCopyGC_ ) XFreeGC( pDisplay, pCopyGC_ );
+- if( pMaskGC_ ) XFreeGC( pDisplay, pMaskGC_ );
+- if( pInvertGC_ ) XFreeGC( pDisplay, pInvertGC_ );
+- if( pInvert50GC_ ) XFreeGC( pDisplay, pInvert50GC_ );
+- if( pStippleGC_ ) XFreeGC( pDisplay, pStippleGC_ );
+- if( pTrackingGC_ ) XFreeGC( pDisplay, pTrackingGC_ );
+- }
++void X11SalGraphics::Init( SalFrame *pFrame, Drawable aTarget )
++{
++ m_pColormap = &GetSalData()->GetDisplay()->GetColormap();
++ hDrawable_ = aTarget;
++
++ bWindow_ = TRUE;
++ m_pFrame = pFrame;
++ m_pVDev = NULL;
++
++ nPenPixel_ = GetPixel( nPenColor_ );
++ nTextPixel_ = GetPixel( nTextColor_ );
++ nBrushPixel_ = GetPixel( nBrushColor_ );
++ numClipRects_ = 0;
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphicsData::DeInit()
++void X11SalGraphics::DeInit()
+ {
++ hDrawable_ = None;
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphicsData::SetClipRegion( GC pGC, XLIB_Region pXReg ) const
++void X11SalGraphics::SetClipRegion( GC pGC, XLIB_Region pXReg ) const
+ {
+ Display *pDisplay = GetXDisplay();
+
+@@ -250,7 +269,7 @@ void SalGraphicsData::SetClipRegion( GC
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-GC SalGraphicsData::SelectPen()
++GC X11SalGraphics::SelectPen()
+ {
+ Display *pDisplay = GetXDisplay();
+
+@@ -281,7 +300,7 @@ GC SalGraphicsData::SelectPen()
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-GC SalGraphicsData::SelectBrush()
++GC X11SalGraphics::SelectBrush()
+ {
+ Display *pDisplay = GetXDisplay();
+
+@@ -334,7 +353,7 @@ GC SalGraphicsData::SelectBrush()
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-GC SalGraphicsData::GetTrackingGC()
++GC X11SalGraphics::GetTrackingGC()
+ {
+ const char dash_list[2] = {2, 2};
+
+@@ -343,8 +362,8 @@ GC SalGraphicsData::GetTrackingGC()
+ XGCValues values;
+
+ values.graphics_exposures = True;
+- values.foreground = xColormap_->GetBlackPixel()
+- ^ xColormap_->GetWhitePixel();
++ values.foreground = m_pColormap->GetBlackPixel()
++ ^ m_pColormap->GetWhitePixel();
+ values.function = GXxor;
+ values.line_width = 1;
+ values.line_style = LineOnOffDash;
+@@ -366,7 +385,7 @@ GC SalGraphicsData::GetTrackingGC()
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphicsData::DrawLines( ULONG nPoints,
++void X11SalGraphics::DrawLines( ULONG nPoints,
+ const SalPolyLine &rPoints,
+ GC pGC )
+ {
+@@ -399,7 +418,7 @@ void SalGraphicsData::DrawLines( ULONG
+ #define P_DELTA 51
+ #define DMAP( v, m ) ((v % P_DELTA) > m ? (v / P_DELTA) + 1 : (v / P_DELTA))
+
+-BOOL SalGraphicsData::GetDitherPixmap( SalColor nSalColor )
++BOOL X11SalGraphics::GetDitherPixmap( SalColor nSalColor )
+ {
+ static const short nOrdDither8Bit[ 8 ][ 8 ] =
+ {
+@@ -475,49 +494,24 @@ BOOL SalGraphicsData::GetDitherPixmap( S
+ return TRUE;
+ }
+
+-// -=-= SalGraphics =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-SalGraphics::SalGraphics()
+-{ }
+-
+-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-SalGraphics::~SalGraphics()
+-{ }
+-
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::GetResolution( long &rDPIX, long &rDPIY ) // const
++void X11SalGraphics::GetResolution( sal_Int32 &rDPIX, sal_Int32 &rDPIY ) // const
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pJobData != NULL)
+- {
+- int x = maGraphicsData.m_pJobData->m_aContext.getRenderResolution();
+-
+- rDPIX = x;
+- rDPIY = x;
+- }
+- else
+- {
+-#endif
+-
+- SalDisplay *pDisplay = _GetDisplay();
+-
+- rDPIX = pDisplay->GetResolution().A();
+- rDPIY = pDisplay->GetResolution().B();
+- if ( rDPIY < 96 )
+- {
+- rDPIX = Divide( rDPIX * 96, rDPIY );
++ SalDisplay *pDisplay = GetDisplay();
++
++ rDPIX = pDisplay->GetResolution().A();
++ rDPIY = pDisplay->GetResolution().B();
++ if( !pDisplay->GetExactResolution() && rDPIY < 96 )
++ {
++ rDPIX = Divide( rDPIX * 96, rDPIY );
+ rDPIY = 96;
+- }
+- else if ( rDPIY > 200 )
+- {
+- rDPIX = Divide( rDPIX * 200, rDPIY );
+- rDPIY = 200;
+- }
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
+-
++ }
++ else if ( rDPIY > 200 )
++ {
++ rDPIX = Divide( rDPIX * 200, rDPIY );
++ rDPIY = 200;
++ }
++
+ // #i12705# equalize x- and y-resolution if they are close enough
+ if( rDPIX != rDPIY )
+ {
+@@ -535,731 +529,439 @@ void SalGraphics::GetResolution( long &r
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::GetScreenFontResolution( long &rDPIX, long &rDPIY ) // const
++void X11SalGraphics::GetScreenFontResolution( sal_Int32 &rDPIX, sal_Int32 &rDPIY ) // const
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- maGraphicsData.m_pPrinterGfx->GetScreenFontResolution (rDPIX, rDPIY);
+- else
+-#endif
+- _GetDisplay()->GetScreenFontResolution( rDPIX, rDPIY );
++ GetDisplay()->GetScreenFontResolution( rDPIX, rDPIY );
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-USHORT SalGraphics::GetBitCount() // const
++USHORT X11SalGraphics::GetBitCount() // const
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- return maGraphicsData.m_pPrinterGfx->GetBitCount ();
+- else
+- {
+-#endif
+-
+- return _GetVisual()->GetDepth();
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ return GetVisual()->GetDepth();
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-long SalGraphics::GetGraphicsWidth()
++long X11SalGraphics::GetGraphicsWidth()
+ {
+- if( maGraphicsData.m_pFrame )
+- return maGraphicsData.m_pFrame->maGeometry.nWidth;
+- else if( maGraphicsData.m_pVDev )
+- return maGraphicsData.m_pVDev->maVirDevData.GetWidth();
++ if( m_pFrame )
++ return m_pFrame->maGeometry.nWidth;
++ else if( m_pVDev )
++ return m_pVDev->GetWidth();
+ else
+ return 0;
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::ResetClipRegion()
++void X11SalGraphics::ResetClipRegion()
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- maGraphicsData.m_pPrinterGfx->ResetClipRegion ();
+- else
+- {
+-#endif
+-
+- if( _GetClipRegion() )
+- {
+- _IsPenGC() = FALSE;
+- _IsFontGC() = FALSE;
+- _IsBrushGC() = FALSE;
+- _IsMonoGC() = FALSE;
+- _IsCopyGC() = FALSE;
+- _IsInvertGC() = FALSE;
+- _IsInvert50GC() = FALSE;
+- _IsStippleGC() = FALSE;
+- _IsTrackingGC() = FALSE;
+-
+- XDestroyRegion( _GetClipRegion() );
+- _GetClipRegion() = NULL;
+- }
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ if( pClipRegion_ )
++ {
++ bPenGC_ = FALSE;
++ bFontGC_ = FALSE;
++ bBrushGC_ = FALSE;
++ bMonoGC_ = FALSE;
++ bCopyGC_ = FALSE;
++ bInvertGC_ = FALSE;
++ bInvert50GC_ = FALSE;
++ bStippleGC_ = FALSE;
++ bTrackingGC_ = FALSE;
++
++ XDestroyRegion( pClipRegion_ );
++ pClipRegion_ = NULL;
++ }
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::BeginSetClipRegion( ULONG n )
++void X11SalGraphics::BeginSetClipRegion( ULONG n )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- maGraphicsData.m_pPrinterGfx->BeginSetClipRegion(n);
+- else
+- {
+-#endif
+-
+- if( _GetClipRegion() )
+- XDestroyRegion( _GetClipRegion() );
+- _GetClipRegion() = XCreateRegion();
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ if( pClipRegion_ )
++ XDestroyRegion( pClipRegion_ );
++ pClipRegion_ = XCreateRegion();
++ numClipRects_ = 0;
++ boundingClipRect_.SetEmpty();
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-BOOL SalGraphics::UnionClipRegion( long nX, long nY, long nDX, long nDY, const OutputDevice* )
++BOOL X11SalGraphics::unionClipRegion( long nX, long nY, long nDX, long nDY )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- return maGraphicsData.m_pPrinterGfx->UnionClipRegion (nX, nY, nDX, nDY);
+- else
+- {
+-#endif
+-
+- if (!nDX || !nDY)
+- return TRUE;
+-
+- XRectangle aRect;
+- aRect.x = (short)nX;
+- aRect.y = (short)nY;
+- aRect.width = (unsigned short)nDX;
+- aRect.height = (unsigned short)nDY;
+-
+- XUnionRectWithRegion( &aRect, _GetClipRegion(), _GetClipRegion() );
+-
++ if (!nDX || !nDY)
+ return TRUE;
+
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ numClipRects_++;
++ boundingClipRect_.Union( Rectangle( nX, nY, nX+nDX, nY+nDY ) );
++
++ XRectangle aRect;
++ aRect.x = (short)nX;
++ aRect.y = (short)nY;
++ aRect.width = (unsigned short)nDX;
++ aRect.height = (unsigned short)nDY;
++
++ XUnionRectWithRegion( &aRect, pClipRegion_, pClipRegion_ );
++
++ return TRUE;
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::EndSetClipRegion()
+-{
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- maGraphicsData.m_pPrinterGfx->EndSetClipRegion ();
+- else
+- {
+-#endif
+-
+- _IsPenGC() = FALSE;
+- _IsFontGC() = FALSE;
+- _IsBrushGC() = FALSE;
+- _IsMonoGC() = FALSE;
+- _IsCopyGC() = FALSE;
+- _IsInvertGC() = FALSE;
+- _IsInvert50GC() = FALSE;
+- _IsStippleGC() = FALSE;
+- _IsTrackingGC() = FALSE;
+-
+- if( XEmptyRegion( _GetClipRegion() ) )
+- {
+- XDestroyRegion( _GetClipRegion() );
+- _GetClipRegion() = NULL;
+- }
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++void X11SalGraphics::EndSetClipRegion()
++{
++ bPenGC_ = FALSE;
++ bFontGC_ = FALSE;
++ bBrushGC_ = FALSE;
++ bMonoGC_ = FALSE;
++ bCopyGC_ = FALSE;
++ bInvertGC_ = FALSE;
++ bInvert50GC_ = FALSE;
++ bStippleGC_ = FALSE;
++ bTrackingGC_ = FALSE;
++
++ if( XEmptyRegion( pClipRegion_ ) )
++ {
++ XDestroyRegion( pClipRegion_ );
++ pClipRegion_= NULL;
++ numClipRects_ = 0;
++ boundingClipRect_.SetEmpty();
++ }
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::SetLineColor()
++void X11SalGraphics::SetLineColor()
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- maGraphicsData.m_pPrinterGfx->SetLineColor ();
+- else
+- {
+-#endif
+-
+- if( _GetPenColor() != 0xFFFFFFFF )
+- {
+- _GetPenColor() = 0xFFFFFFFF;
+- _IsPenGC() = FALSE;
+- }
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ if( nPenColor_ != 0xFFFFFFFF )
++ {
++ nPenColor_ = 0xFFFFFFFF;
++ bPenGC_ = FALSE;
++ }
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::SetLineColor( SalColor nSalColor )
++void X11SalGraphics::SetLineColor( SalColor nSalColor )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- psp::PrinterColor aColor (SALCOLOR_RED (nSalColor),
+- SALCOLOR_GREEN (nSalColor),
+- SALCOLOR_BLUE (nSalColor));
+- maGraphicsData.m_pPrinterGfx->SetLineColor (aColor);
+- }
+- else
+- {
+-#endif
+-
+- if( _GetPenColor() != nSalColor )
+- {
+- _GetPenColor() = nSalColor;
+- _GetPenPixel() = _GetPixel( nSalColor );
+- _IsPenGC() = FALSE;
+- }
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ if( nPenColor_ != nSalColor )
++ {
++ nPenColor_ = nSalColor;
++ nPenPixel_ = GetPixel( nSalColor );
++ bPenGC_ = FALSE;
++ }
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::SetFillColor()
++void X11SalGraphics::SetFillColor()
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- maGraphicsData.m_pPrinterGfx->SetFillColor ();
+- else
+- {
+-#endif
+-
+- if( _GetBrushColor() != 0xFFFFFFFF )
+- {
+- _IsDitherBrush() = FALSE;
+- _GetBrushColor() = 0xFFFFFFFF;
+- _IsBrushGC() = FALSE;
+- }
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ if( nBrushColor_ != 0xFFFFFFFF )
++ {
++ bDitherBrush_ = FALSE;
++ nBrushColor_ = 0xFFFFFFFF;
++ bBrushGC_ = FALSE;
++ }
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::SetFillColor( SalColor nSalColor )
++void X11SalGraphics::SetFillColor( SalColor nSalColor )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- psp::PrinterColor aColor (SALCOLOR_RED (nSalColor),
+- SALCOLOR_GREEN (nSalColor),
+- SALCOLOR_BLUE (nSalColor));
+- maGraphicsData.m_pPrinterGfx->SetFillColor (aColor);
+- }
+- else
+- {
+-#endif
+-
+- if( _GetBrushColor() != nSalColor )
+- {
+- _IsDitherBrush() = FALSE;
+- _GetBrushColor() = nSalColor;
+- _GetBrushPixel() = _GetPixel( nSalColor );
+- if( TrueColor != _GetColormap().GetVisual()->GetClass()
+- && _GetColor( _GetBrushPixel() ) != _GetBrushColor()
+- && nSalColor != MAKE_SALCOLOR( 0x00, 0x00, 0x00 ) // black
+- && nSalColor != MAKE_SALCOLOR( 0x00, 0x00, 0x80 ) // blue
+- && nSalColor != MAKE_SALCOLOR( 0x00, 0x80, 0x00 ) // green
+- && nSalColor != MAKE_SALCOLOR( 0x00, 0x80, 0x80 ) // cyan
+- && nSalColor != MAKE_SALCOLOR( 0x80, 0x00, 0x00 ) // red
+- && nSalColor != MAKE_SALCOLOR( 0x80, 0x00, 0x80 ) // magenta
+- && nSalColor != MAKE_SALCOLOR( 0x80, 0x80, 0x00 ) // brown
+- && nSalColor != MAKE_SALCOLOR( 0x80, 0x80, 0x80 ) // gray
+- && nSalColor != MAKE_SALCOLOR( 0xC0, 0xC0, 0xC0 ) // light gray
+- && nSalColor != MAKE_SALCOLOR( 0x00, 0x00, 0xFF ) // light blue
+- && nSalColor != MAKE_SALCOLOR( 0x00, 0xFF, 0x00 ) // light green
+- && nSalColor != MAKE_SALCOLOR( 0x00, 0xFF, 0xFF ) // light cyan
+- && nSalColor != MAKE_SALCOLOR( 0xFF, 0x00, 0x00 ) // light red
+- && nSalColor != MAKE_SALCOLOR( 0xFF, 0x00, 0xFF ) // light magenta
+- && nSalColor != MAKE_SALCOLOR( 0xFF, 0xFF, 0x00 ) // light brown
+- && nSalColor != MAKE_SALCOLOR( 0xFF, 0xFF, 0xFF ) )
+- _IsDitherBrush() = maGraphicsData.GetDitherPixmap(nSalColor);
+- _IsBrushGC() = FALSE;
+- }
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ if( nBrushColor_ != nSalColor )
++ {
++ bDitherBrush_ = FALSE;
++ nBrushColor_ = nSalColor;
++ nBrushPixel_ = GetPixel( nSalColor );
++ if( TrueColor != GetColormap().GetVisual()->GetClass()
++ && GetColormap().GetColor( nBrushPixel_ ) != nBrushColor_
++ && nSalColor != MAKE_SALCOLOR( 0x00, 0x00, 0x00 ) // black
++ && nSalColor != MAKE_SALCOLOR( 0x00, 0x00, 0x80 ) // blue
++ && nSalColor != MAKE_SALCOLOR( 0x00, 0x80, 0x00 ) // green
++ && nSalColor != MAKE_SALCOLOR( 0x00, 0x80, 0x80 ) // cyan
++ && nSalColor != MAKE_SALCOLOR( 0x80, 0x00, 0x00 ) // red
++ && nSalColor != MAKE_SALCOLOR( 0x80, 0x00, 0x80 ) // magenta
++ && nSalColor != MAKE_SALCOLOR( 0x80, 0x80, 0x00 ) // brown
++ && nSalColor != MAKE_SALCOLOR( 0x80, 0x80, 0x80 ) // gray
++ && nSalColor != MAKE_SALCOLOR( 0xC0, 0xC0, 0xC0 ) // light gray
++ && nSalColor != MAKE_SALCOLOR( 0x00, 0x00, 0xFF ) // light blue
++ && nSalColor != MAKE_SALCOLOR( 0x00, 0xFF, 0x00 ) // light green
++ && nSalColor != MAKE_SALCOLOR( 0x00, 0xFF, 0xFF ) // light cyan
++ && nSalColor != MAKE_SALCOLOR( 0xFF, 0x00, 0x00 ) // light red
++ && nSalColor != MAKE_SALCOLOR( 0xFF, 0x00, 0xFF ) // light magenta
++ && nSalColor != MAKE_SALCOLOR( 0xFF, 0xFF, 0x00 ) // light brown
++ && nSalColor != MAKE_SALCOLOR( 0xFF, 0xFF, 0xFF ) )
++ bDitherBrush_ = GetDitherPixmap(nSalColor);
++ bBrushGC_ = FALSE;
++ }
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::SetROPLineColor( SalROPColor nROPColor )
++void X11SalGraphics::SetROPLineColor( SalROPColor nROPColor )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- DBG_ASSERT( 0, "Error: PrinterGfx::SetROPLineColor() not implemented" );
+- }
+- else
+- {
+-#endif
+-
+- switch( nROPColor )
+- {
+- case SAL_ROP_0 : // 0
+- _GetPenPixel() = (Pixel)0;
+- break;
+- case SAL_ROP_1 : // 1
+- _GetPenPixel() = (Pixel)(1 << _GetVisual()->GetDepth()) - 1;
+- break;
+- case SAL_ROP_INVERT : // 2
+- _GetPenPixel() = (Pixel)(1 << _GetVisual()->GetDepth()) - 1;
+- break;
+- }
+- _GetPenColor() = _GetColor( _GetPenPixel() );
+- _IsPenGC() = FALSE;
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ switch( nROPColor )
++ {
++ case SAL_ROP_0 : // 0
++ nPenPixel_ = (Pixel)0;
++ break;
++ case SAL_ROP_1 : // 1
++ nPenPixel_ = (Pixel)(1 << GetVisual()->GetDepth()) - 1;
++ break;
++ case SAL_ROP_INVERT : // 2
++ nPenPixel_ = (Pixel)(1 << GetVisual()->GetDepth()) - 1;
++ break;
++ }
++ nPenColor_ = GetColormap().GetColor( nPenPixel_ );
++ bPenGC_ = FALSE;
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::SetROPFillColor( SalROPColor nROPColor )
++void X11SalGraphics::SetROPFillColor( SalROPColor nROPColor )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- DBG_ASSERT( 0, "Error: PrinterGfx::SetROPFillColor() not implemented" );
+- }
+- else
+- {
+-#endif
+-
+- switch( nROPColor )
+- {
+- case SAL_ROP_0 : // 0
+- _GetBrushPixel() = (Pixel)0;
+- break;
+- case SAL_ROP_1 : // 1
+- _GetBrushPixel() = (Pixel)(1 << _GetVisual()->GetDepth()) - 1;
+- break;
+- case SAL_ROP_INVERT : // 2
+- _GetBrushPixel() = (Pixel)(1 << _GetVisual()->GetDepth()) - 1;
+- break;
+- }
+- _IsDitherBrush() = FALSE;
+- _GetBrushColor() = _GetColor( _GetBrushPixel() );
+- _IsBrushGC() = FALSE;
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ switch( nROPColor )
++ {
++ case SAL_ROP_0 : // 0
++ nBrushPixel_ = (Pixel)0;
++ break;
++ case SAL_ROP_1 : // 1
++ nBrushPixel_ = (Pixel)(1 << GetVisual()->GetDepth()) - 1;
++ break;
++ case SAL_ROP_INVERT : // 2
++ nBrushPixel_ = (Pixel)(1 << GetVisual()->GetDepth()) - 1;
++ break;
++ }
++ bDitherBrush_ = FALSE;
++ nBrushColor_ = GetColormap().GetColor( nBrushPixel_ );
++ bBrushGC_ = FALSE;
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::SetXORMode( BOOL bSet )
++void X11SalGraphics::SetXORMode( BOOL bSet )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- DBG_ASSERT( !bSet, "Error: PrinterGfx::SetXORMode() not implemented" );
+- }
+- else
+- {
+-#endif
+-
+- if( !_IsXORMode() == bSet )
+- {
+- _IsXORMode() = bSet;
+- _IsPenGC() = FALSE;
+- _IsBrushGC() = FALSE;
+- _IsMonoGC() = FALSE;
+- _IsCopyGC() = FALSE;
+- _IsInvertGC() = FALSE;
+- _IsInvert50GC() = FALSE;
+- _IsStippleGC() = FALSE;
+- _IsTrackingGC() = FALSE;
+- }
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ if( !bXORMode_ == bSet )
++ {
++ bXORMode_ = bSet;
++ bPenGC_ = FALSE;
++ bBrushGC_ = FALSE;
++ bMonoGC_ = FALSE;
++ bCopyGC_ = FALSE;
++ bInvertGC_ = FALSE;
++ bInvert50GC_ = FALSE;
++ bStippleGC_ = FALSE;
++ bTrackingGC_ = FALSE;
++ }
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::DrawPixel( long nX, long nY, const OutputDevice* )
++void X11SalGraphics::drawPixel( long nX, long nY )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- maGraphicsData.m_pPrinterGfx->DrawPixel (Point(nX, nY));
+- else
+- {
+-#endif
+-
+- if( _GetPenColor() != 0xFFFFFFFF )
+- XDrawPoint( _GetXDisplay(), _GetDrawable(), _SelectPen(), nX, nY );
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ if( nPenColor_ != 0xFFFFFFFF )
++ XDrawPoint( GetXDisplay(), GetDrawable(), SelectPen(), nX, nY );
+ }
+
+-void SalGraphics::DrawPixel( long nX, long nY, SalColor nSalColor, const OutputDevice* )
++void X11SalGraphics::drawPixel( long nX, long nY, SalColor nSalColor )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- psp::PrinterColor aColor (SALCOLOR_RED (nSalColor),
+- SALCOLOR_GREEN (nSalColor),
+- SALCOLOR_BLUE (nSalColor));
+- maGraphicsData.m_pPrinterGfx->DrawPixel (Point(nX, nY), aColor);
+- }
+- else
+- {
+-#endif
+-
+- if( nSalColor != 0xFFFFFFFF )
++ if( nSalColor != 0xFFFFFFFF )
++ {
++ Display *pDisplay = GetXDisplay();
++
++ if( nPenColor_ == 0xFFFFFFFF && !bPenGC_ )
++ {
++ SetLineColor( nSalColor );
++ XDrawPoint( pDisplay, GetDrawable(), SelectPen(), nX, nY );
++ nPenColor_ = 0xFFFFFFFF;
++ bPenGC_ = False;
++ }
++ else
+ {
+- Display *pDisplay = _GetXDisplay();
+-
+- if( _GetPenColor() == 0xFFFFFFFF && !_IsPenGC() )
+- {
+- SetLineColor( nSalColor );
+- XDrawPoint( pDisplay, _GetDrawable(), _SelectPen(), nX, nY );
+- _GetPenColor() = 0xFFFFFFFF;
+- _IsPenGC() = False;
+- }
+- else
+- {
+- GC pGC = _SelectPen();
+-
+- if( nSalColor != _GetPenColor() )
+- XSetForeground( pDisplay, pGC, _GetPixel( nSalColor ) );
+-
+- XDrawPoint( pDisplay, _GetDrawable(), pGC, nX, nY );
+-
+- if( nSalColor != _GetPenColor() )
+- XSetForeground( pDisplay, pGC, _GetPenPixel() );
+- }
++ GC pGC = SelectPen();
++
++ if( nSalColor != nPenColor_ )
++ XSetForeground( pDisplay, pGC, GetPixel( nSalColor ) );
++
++ XDrawPoint( pDisplay, GetDrawable(), pGC, nX, nY );
++
++ if( nSalColor != nPenColor_ )
++ XSetForeground( pDisplay, pGC, nPenPixel_ );
+ }
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ }
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::DrawLine( long nX1, long nY1, long nX2, long nY2, const OutputDevice* )
++void X11SalGraphics::drawLine( long nX1, long nY1, long nX2, long nY2 )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- maGraphicsData.m_pPrinterGfx->DrawLine (Point(nX1, nY1), Point(nX2, nY2));
+- else
+- {
+-#endif
+-
+- if( _GetPenColor() != 0xFFFFFFFF )
++ if( nPenColor_ != 0xFFFFFFFF )
++ {
++ if ( GetDisplay()->GetProperties() & PROPERTY_BUG_DrawLine )
+ {
+- if ( _GetDisplay()->GetProperties() & PROPERTY_BUG_DrawLine )
+- {
+- GC aGC = _SelectPen();
+- XDrawPoint (_GetXDisplay(), _GetDrawable(), aGC, (int)nX1, (int)nY1);
+- XDrawPoint (_GetXDisplay(), _GetDrawable(), aGC, (int)nX2, (int)nY2);
+- XDrawLine (_GetXDisplay(), _GetDrawable(), aGC, nX1, nY1, nX2, nY2 );
++ GC aGC = SelectPen();
++ XDrawPoint (GetXDisplay(), GetDrawable(), aGC, (int)nX1, (int)nY1);
++ XDrawPoint (GetXDisplay(), GetDrawable(), aGC, (int)nX2, (int)nY2);
++ XDrawLine (GetXDisplay(), GetDrawable(), aGC, nX1, nY1, nX2, nY2 );
+ }
+- else
+- XDrawLine( _GetXDisplay(), _GetDrawable(),_SelectPen(),
+- nX1, nY1, nX2, nY2 );
+- }
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ else
++ XDrawLine( GetXDisplay(), GetDrawable(),SelectPen(),
++ nX1, nY1, nX2, nY2 );
++ }
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::DrawRect( long nX, long nY, long nDX, long nDY, const OutputDevice* )
++void X11SalGraphics::drawRect( long nX, long nY, long nDX, long nDY )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+-
+- maGraphicsData.m_pPrinterGfx->DrawRect (Rectangle(Point(nX, nY), Size(nDX, nDY)));
+- else
+- {
+-#endif
+-
+- if( _GetBrushColor() != 0xFFFFFFFF )
+- {
+- XFillRectangle( _GetXDisplay(),
+- _GetDrawable(),
+- _SelectBrush(),
+- nX, nY, nDX, nDY );
+- }
+- // Beschreibung DrawRect verkehrt, deshalb -1
+- if( _GetPenColor() != 0xFFFFFFFF )
+- XDrawRectangle( _GetXDisplay(),
+- _GetDrawable(),
+- _SelectPen(),
+- nX, nY, nDX-1, nDY-1 );
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ if( nBrushColor_ != 0xFFFFFFFF )
++ {
++ XFillRectangle( GetXDisplay(),
++ GetDrawable(),
++ SelectBrush(),
++ nX, nY, nDX, nDY );
++ }
++ // Beschreibung DrawRect verkehrt, deshalb -1
++ if( nPenColor_ != 0xFFFFFFFF )
++ XDrawRectangle( GetXDisplay(),
++ GetDrawable(),
++ SelectPen(),
++ nX, nY, nDX-1, nDY-1 );
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::DrawPolyLine( ULONG nPoints, const SalPoint *pPtAry, const OutputDevice* )
++void X11SalGraphics::drawPolyLine( ULONG nPoints, const SalPoint *pPtAry )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- maGraphicsData.m_pPrinterGfx->DrawPolyLine (nPoints, (Point*)pPtAry);
+- else
+- {
+-#endif
+-
+- if( _GetPenColor() != 0xFFFFFFFF )
+- {
+- SalPolyLine Points( nPoints, pPtAry );
+-
+- maGraphicsData.DrawLines( nPoints, Points, _SelectPen() );
+- }
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ if( nPenColor_ != 0xFFFFFFFF )
++ {
++ SalPolyLine Points( nPoints, pPtAry );
++
++ DrawLines( nPoints, Points, SelectPen() );
++ }
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::DrawPolygon( ULONG nPoints, const SalPoint* pPtAry, const OutputDevice *pOutDev )
++void X11SalGraphics::drawPolygon( ULONG nPoints, const SalPoint* pPtAry )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- // Point must be equal to SalPoint! see vcl/inc/salgtype.hxx
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- maGraphicsData.m_pPrinterGfx->DrawPolygon (nPoints, (Point*)pPtAry);
+- else
+- {
+-#endif
+-
+- if( nPoints < 3 )
++ if( nPoints < 3 )
++ {
++ if( !nPoints )
+ {
+- if( !nPoints )
+- {
+ #if OSL_DEBUG_LEVEL > 1
+- fprintf( stderr, "SalGraphics::DrawPolygon !nPoints\n" );
++ fprintf( stderr, "X11SalGraphicsDrawPolygon !nPoints\n" );
+ #endif
+- }
+- else if( !_IsXORMode() )
+- {
+- if( 1 == nPoints )
+- DrawPixel( pPtAry[0].mnX, pPtAry[0].mnY, pOutDev );
+- else
+- DrawLine( pPtAry[0].mnX, pPtAry[0].mnY,
+- pPtAry[1].mnX, pPtAry[1].mnY, pOutDev );
+- }
+- return;
+ }
+-
+- SalPolyLine Points( nPoints, pPtAry );
+-
+- nPoints++;
+-
+- if( _GetBrushColor() != 0xFFFFFFFF )
+- XFillPolygon( _GetXDisplay(),
+- _GetDrawable(),
+- _SelectBrush(),
+- &Points[0], nPoints,
+- Complex, CoordModeOrigin );
+-
+- if( _GetPenColor() != 0xFFFFFFFF )
+- maGraphicsData.DrawLines( nPoints, Points, _SelectPen() );
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ else if( !bXORMode_ )
++ {
++ if( 1 == nPoints )
++ drawPixel( pPtAry[0].mnX, pPtAry[0].mnY );
++ else
++ drawLine( pPtAry[0].mnX, pPtAry[0].mnY,
++ pPtAry[1].mnX, pPtAry[1].mnY );
++ }
++ return;
++ }
++
++ SalPolyLine Points( nPoints, pPtAry );
++
++ nPoints++;
++
++ if( nBrushColor_ != 0xFFFFFFFF )
++ XFillPolygon( GetXDisplay(),
++ GetDrawable(),
++ SelectBrush(),
++ &Points[0], nPoints,
++ Complex, CoordModeOrigin );
++
++ if( nPenColor_ != 0xFFFFFFFF )
++ DrawLines( nPoints, Points, SelectPen() );
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::DrawPolyPolygon( ULONG nPoly,
++void X11SalGraphics::drawPolyPolygon( ULONG nPoly,
+ const ULONG *pPoints,
+- PCONSTSALPOINT *pPtAry,
+- const OutputDevice *pOutDev )
++ PCONSTSALPOINT *pPtAry )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- maGraphicsData.m_pPrinterGfx->DrawPolyPolygon (nPoly, pPoints, (const Point**)pPtAry);
+- else
+- {
+-
+-#endif
+-
+- if( _GetBrushColor() != 0xFFFFFFFF )
+- {
+- ULONG i, n;
+- XLIB_Region pXRegA = NULL;
+-
+-#ifdef CLIPPING
+- Size aOutSize = pOutDev->GetOutputSizePixel();
+-
+- ClipRectangle aClippingRect( Point(0,0),
+- Point(aOutSize.Width(), aOutSize.Height()) );
+-
+- ULONG nMax = pPoints[0];
+- for( i = 1; i < nPoly; i++ )
+- if( pPoints[i] > nMax )
+- nMax = pPoints[i];
+-
+- SalPolyLine Points( nMax * 2 );
+-
+- for( i = 0; i < nPoly; i++ )
++ if( nBrushColor_ != 0xFFFFFFFF )
++ {
++ ULONG i, n;
++ XLIB_Region pXRegA = NULL;
++
++ for( i = 0; i < nPoly; i++ ) {
++ n = pPoints[i];
++ SalPolyLine Points( n, pPtAry[i] );
++ if( n > 2 )
+ {
+- n = aClippingRect.ClipPolygon( pPoints[i], pPtAry[i], &Points[0] );
+-#else
+- for( i = 0; i < nPoly; i++ ) {
+- n = pPoints[i];
+- SalPolyLine Points( n, pPtAry[i] );
+-#endif
+- if( n > 2 )
++ XLIB_Region pXRegB = XPolygonRegion( &Points[0], n+1, WindingRule );
++ if( !pXRegA )
++ pXRegA = pXRegB;
++ else
+ {
+- XLIB_Region pXRegB = XPolygonRegion( &Points[0], n+1, WindingRule );
+- if( !pXRegA )
+- pXRegA = pXRegB;
+- else
+- {
+- XXorRegion( pXRegA, pXRegB, pXRegA );
+- XDestroyRegion( pXRegB );
+- }
++ XXorRegion( pXRegA, pXRegB, pXRegA );
++ XDestroyRegion( pXRegB );
+ }
+ }
+-
+- if( pXRegA )
+- {
+- XRectangle aXRect;
+- XClipBox( pXRegA, &aXRect );
+-
+- GC pGC = _SelectBrush();
+- maGraphicsData.SetClipRegion( pGC, pXRegA ); // ??? doppelt
+- XDestroyRegion( pXRegA );
+- _IsBrushGC() = FALSE;
+-
+- XFillRectangle( _GetXDisplay(),
+- _GetDrawable(),
+- pGC,
+- aXRect.x, aXRect.y, aXRect.width, aXRect.height );
+- }
+ }
+-
+- if( _GetPenColor() != 0xFFFFFFFF )
+- for( ULONG i = 0; i < nPoly; i++ )
+- DrawPolyLine( pPoints[i], pPtAry[i], pOutDev );
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++
++ if( pXRegA )
++ {
++ XRectangle aXRect;
++ XClipBox( pXRegA, &aXRect );
++
++ GC pGC = SelectBrush();
++ SetClipRegion( pGC, pXRegA ); // ??? doppelt
++ XDestroyRegion( pXRegA );
++ bBrushGC_ = FALSE;
++
++ XFillRectangle( GetXDisplay(),
++ GetDrawable(),
++ pGC,
++ aXRect.x, aXRect.y, aXRect.width, aXRect.height );
++ }
++ }
++
++ if( nPenColor_ != 0xFFFFFFFF )
++ for( ULONG i = 0; i < nPoly; i++ )
++ drawPolyLine( pPoints[i], pPtAry[i] );
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+-sal_Bool SalGraphics::DrawPolyLineBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry, const OutputDevice* )
++sal_Bool X11SalGraphics::drawPolyLineBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- maGraphicsData.m_pPrinterGfx->DrawPolyLineBezier (nPoints, (Point*)pPtAry, pFlgAry);
+- return sal_True;
+- }
+-#endif
+ return sal_False;
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+-sal_Bool SalGraphics::DrawPolygonBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry, const OutputDevice* )
++sal_Bool X11SalGraphics::drawPolygonBezier( ULONG nPoints, const SalPoint* pPtAry, const BYTE* pFlgAry )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- maGraphicsData.m_pPrinterGfx->DrawPolygonBezier (nPoints, (Point*)pPtAry, pFlgAry);
+- return sal_True;
+- }
+-#endif
+ return sal_False;
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+-sal_Bool SalGraphics::DrawPolyPolygonBezier( ULONG nPoly, const ULONG* pPoints,
+- const SalPoint* const* pPtAry, const BYTE* const* pFlgAry, const OutputDevice* )
++sal_Bool X11SalGraphics::drawPolyPolygonBezier( ULONG nPoly, const ULONG* pPoints,
++ const SalPoint* const* pPtAry, const BYTE* const* pFlgAry )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- // Point must be equal to SalPoint! see vcl/inc/salgtype.hxx
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- maGraphicsData.m_pPrinterGfx->DrawPolyPolygonBezier (nPoly, pPoints, (Point**)pPtAry, (BYTE**)pFlgAry);
+- return sal_True;
+- }
+-#endif
+ return sal_False;
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+-void SalGraphics::Invert( ULONG nPoints,
+- const SalPoint* pPtAry,
+- SalInvert nFlags,
+- const OutputDevice* )
+-{
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- DBG_ASSERT( 0, "Error: PrinterGfx::Invert() not implemented" );
+- }
+- else
+- {
+-#endif
+-
+- SalDisplay *pDisp = _GetDisplay();
+- SalPolyLine Points ( nPoints, pPtAry );
+-
+- GC pGC;
+- if( SAL_INVERT_50 & nFlags )
+- pGC = maGraphicsData.GetInvert50GC();
+- else
+- if ( SAL_INVERT_TRACKFRAME & nFlags )
+- pGC = maGraphicsData.GetTrackingGC();
+- else
+- pGC = maGraphicsData.GetInvertGC();
+-
+- if( SAL_INVERT_TRACKFRAME & nFlags )
+- maGraphicsData.DrawLines ( nPoints, Points, pGC );
++void X11SalGraphics::invert( ULONG nPoints,
++ const SalPoint* pPtAry,
++ SalInvert nFlags )
++{
++ SalDisplay *pDisp = GetDisplay();
++ SalPolyLine Points ( nPoints, pPtAry );
++
++ GC pGC;
++ if( SAL_INVERT_50 & nFlags )
++ pGC = GetInvert50GC();
++ else
++ if ( SAL_INVERT_TRACKFRAME & nFlags )
++ pGC = GetTrackingGC();
+ else
+- XFillPolygon( _GetXDisplay(),
+- _GetDrawable(),
+- pGC,
+- &Points[0], nPoints,
+- Complex, CoordModeOrigin );
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ pGC = GetInvertGC();
++
++ if( SAL_INVERT_TRACKFRAME & nFlags )
++ DrawLines ( nPoints, Points, pGC );
++ else
++ XFillPolygon( GetXDisplay(),
++ GetDrawable(),
++ pGC,
++ &Points[0], nPoints,
++ Complex, CoordModeOrigin );
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+-BOOL SalGraphics::DrawEPS( long nX, long nY, long nWidth, long nHeight, void* pPtr, ULONG nSize, const OutputDevice* )
++BOOL X11SalGraphics::drawEPS( long nX, long nY, long nWidth, long nHeight, void* pPtr, ULONG nSize )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- return maGraphicsData.m_pPrinterGfx->DrawEPS( Rectangle( Point( nX, nY ), Size( nWidth, nHeight ) ), pPtr, nSize );
+- }
+- else
+-#endif
+- return FALSE;
++ return FALSE;
+ }
+-
+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
+@@ -59,9 +59,6 @@
+ *
+ ************************************************************************/
+
+-#define _SV_SALGDI2_CXX
+-
+-// -=-= #includes =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+ #include <stdio.h>
+
+ #include <salunx.h>
+@@ -72,17 +69,17 @@
+ #ifndef _SV_SALDISP_HXX
+ #include <saldisp.hxx>
+ #endif
+-#ifndef _SV_SALBMP_HXX
+-#include <salbmp.hxx>
++#ifndef _SV_SALBMP_H
++#include <salbmp.h>
+ #endif
+ #ifndef _SV_SALBTYPE_HXX
+ #include <salbtype.hxx>
+ #endif
+-#ifndef _SV_SALGDI_HXX
+-#include <salgdi.hxx>
++#ifndef _SV_SALGDI_H
++#include <salgdi.h>
+ #endif
+-#ifndef _SV_SALFRAME_HXX
+-#include <salframe.hxx>
++#ifndef _SV_SALFRAME_H
++#include <salframe.h>
+ #endif
+
+ #ifndef _USE_PRINT_EXTENSION_
+@@ -115,7 +112,7 @@ static void sal_PrintImage( char *s, XIm
+ #if (OSL_DEBUG_LEVEL > 1) && defined SALGDI2_TESTTRANS
+ #define DBG_TESTTRANS( _def_drawable ) \
+ { \
+- XCopyArea( pXDisp, _def_drawable, aDrawable, _GetCopyGC(), \
++ XCopyArea( pXDisp, _def_drawable, aDrawable, GetCopyGC(), \
+ 0, 0, \
+ pPosAry->mnDestWidth, pPosAry->mnDestHeight, \
+ 0, 0 ); \
+@@ -124,15 +121,15 @@ static void sal_PrintImage( char *s, XIm
+ #define DBG_TESTTRANS( _def_drawable )
+ #endif // (OSL_DEBUG_LEVEL > 1) && defined SALGDI2_TESTTRANS
+
+-// -=-= SalGraphicsData =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++// -=-= X11SalGraphics =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-GC SalGraphicsData::CreateGC( Drawable hDrawable, unsigned long nMask )
++GC X11SalGraphics::CreateGC( Drawable hDrawable, unsigned long nMask )
+ {
+ XGCValues values;
+
+ values.graphics_exposures = True;
+- values.foreground = xColormap_->GetBlackPixel()
+- ^ xColormap_->GetWhitePixel();
++ values.foreground = m_pColormap->GetBlackPixel()
++ ^ m_pColormap->GetWhitePixel();
+ values.function = GXxor;
+ values.line_width = 1;
+ values.fill_style = FillStippled;
+@@ -143,7 +140,7 @@ GC SalGraphicsData::CreateGC( Drawable h
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-inline GC SalGraphicsData::GetMonoGC( Pixmap hPixmap )
++inline GC X11SalGraphics::GetMonoGC( Pixmap hPixmap )
+ {
+ if( !pMonoGC_ )
+ pMonoGC_ = CreateGC( hPixmap );
+@@ -158,7 +155,7 @@ inline GC SalGraphicsData::GetMonoGC( Pi
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-inline GC SalGraphicsData::GetCopyGC()
++inline GC X11SalGraphics::GetCopyGC()
+ {
+ if( bXORMode_ ) return GetInvertGC();
+
+@@ -174,7 +171,7 @@ inline GC SalGraphicsData::GetCopyGC()
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-GC SalGraphicsData::GetInvertGC()
++GC X11SalGraphics::GetInvertGC()
+ {
+ if( !pInvertGC_ )
+ pInvertGC_ = CreateGC( GetDrawable(),
+@@ -192,15 +189,15 @@ GC SalGraphicsData::GetInvertGC()
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-GC SalGraphicsData::GetInvert50GC()
++GC X11SalGraphics::GetInvert50GC()
+ {
+ if( !pInvert50GC_ )
+ {
+ XGCValues values;
+
+ values.graphics_exposures = True;
+- values.foreground = xColormap_->GetWhitePixel();
+- values.background = xColormap_->GetBlackPixel();
++ values.foreground = m_pColormap->GetWhitePixel();
++ values.background = m_pColormap->GetBlackPixel();
+ values.function = GXinvert;
+ values.line_width = 1;
+ values.line_style = LineSolid;
+@@ -240,7 +237,7 @@ GC SalGraphicsData::GetInvert50GC()
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-inline GC SalGraphicsData::GetStippleGC()
++inline GC X11SalGraphics::GetStippleGC()
+ {
+ if( !pStippleGC_ )
+ pStippleGC_ = CreateGC( GetDrawable(),
+@@ -259,7 +256,7 @@ inline GC SalGraphicsData::GetStippleGC(
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-int SalGraphicsData::Clip( XLIB_Region pRegion,
++int X11SalGraphics::Clip( XLIB_Region pRegion,
+ int &nX,
+ int &nY,
+ unsigned int &nDX,
+@@ -297,7 +294,7 @@ int SalGraphicsData::Clip( XLIB_Region
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-int SalGraphicsData::Clip( int &nX,
++int X11SalGraphics::Clip( int &nX,
+ int &nY,
+ unsigned int &nDX,
+ unsigned int &nDY,
+@@ -339,7 +336,7 @@ int SalGraphicsData::Clip( int
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-GC SalGraphicsData::SetMask( int &nX,
++GC X11SalGraphics::SetMask( int &nX,
+ int &nY,
+ unsigned int &nDX,
+ unsigned int &nDY,
+@@ -369,7 +366,7 @@ GC SalGraphicsData::SetMask( int
+ if( !hPixmap )
+ {
+ #if (OSL_DEBUG_LEVEL > 1) || defined DBG_UTIL
+- fprintf( stderr, "SalGraphicsData::SetMask !hPixmap\n" );
++ fprintf( stderr, "X11SalGraphics::SetMask !hPixmap\n" );
+ #endif
+ return NULL;
+ }
+@@ -399,771 +396,495 @@ GC SalGraphicsData::SetMask( int
+ return pMaskGC_;
+ }
+
+-// ----- Implementation of PrinterBmp by means of SalBitmap/BitmapBuffer ---------------
+-
+-#ifndef _USE_PRINT_EXTENSION_
+-class SalPrinterBmp : public psp::PrinterBmp
+-{
+- private:
+-
+- BitmapBuffer* mpBmpBuffer;
+-
+- FncGetPixel mpFncGetPixel;
+- Scanline mpScanAccess;
+- sal_Int32 mnScanOffset;
+-
+- sal_uInt32 ColorOf (BitmapColor& rColor) const;
+- sal_uInt8 GrayOf (BitmapColor& rColor) const;
+-
+- SalPrinterBmp ();
+-
+- public:
+-
+- SalPrinterBmp (BitmapBuffer* pBitmap);
+- virtual ~SalPrinterBmp ();
+- virtual sal_uInt32 GetPaletteColor (sal_uInt32 nIdx) const;
+- virtual sal_uInt32 GetPaletteEntryCount () const;
+- virtual sal_uInt32 GetPixelRGB (sal_uInt32 nRow, sal_uInt32 nColumn) const;
+- virtual sal_uInt8 GetPixelGray (sal_uInt32 nRow, sal_uInt32 nColumn) const;
+- virtual sal_uInt8 GetPixelIdx (sal_uInt32 nRow, sal_uInt32 nColumn) const;
+- virtual sal_uInt32 GetWidth () const;
+- virtual sal_uInt32 GetHeight() const;
+- virtual sal_uInt32 GetDepth () const;
+-};
+-
+-SalPrinterBmp::SalPrinterBmp (BitmapBuffer* pBuffer) :
+- mpBmpBuffer (pBuffer)
+-{
+- DBG_ASSERT (mpBmpBuffer, "SalPrinterBmp::SalPrinterBmp () can't acquire Bitmap");
+-
+- // calibrate scanline buffer
+- if( BMP_SCANLINE_ADJUSTMENT( mpBmpBuffer->mnFormat ) == BMP_FORMAT_TOP_DOWN )
+- {
+- mpScanAccess = mpBmpBuffer->mpBits;
+- mnScanOffset = mpBmpBuffer->mnScanlineSize;
+- }
+- else
+- {
+- mpScanAccess = mpBmpBuffer->mpBits
+- + (mpBmpBuffer->mnHeight - 1) * mpBmpBuffer->mnScanlineSize;
+- mnScanOffset = - mpBmpBuffer->mnScanlineSize;
+- }
+-
+- // request read access to the pixels
+- switch( BMP_SCANLINE_FORMAT( mpBmpBuffer->mnFormat ) )
+- {
+- case BMP_FORMAT_1BIT_MSB_PAL:
+- mpFncGetPixel = BitmapReadAccess::GetPixelFor_1BIT_MSB_PAL; break;
+- case BMP_FORMAT_1BIT_LSB_PAL:
+- mpFncGetPixel = BitmapReadAccess::GetPixelFor_1BIT_LSB_PAL; break;
+- case BMP_FORMAT_4BIT_MSN_PAL:
+- mpFncGetPixel = BitmapReadAccess::GetPixelFor_4BIT_MSN_PAL; break;
+- case BMP_FORMAT_4BIT_LSN_PAL:
+- mpFncGetPixel = BitmapReadAccess::GetPixelFor_4BIT_LSN_PAL; break;
+- case BMP_FORMAT_8BIT_PAL:
+- mpFncGetPixel = BitmapReadAccess::GetPixelFor_8BIT_PAL; break;
+- case BMP_FORMAT_8BIT_TC_MASK:
+- mpFncGetPixel = BitmapReadAccess::GetPixelFor_8BIT_TC_MASK; break;
+- case BMP_FORMAT_16BIT_TC_MSB_MASK:
+- mpFncGetPixel = BitmapReadAccess::GetPixelFor_16BIT_TC_MSB_MASK; break;
+- case BMP_FORMAT_16BIT_TC_LSB_MASK:
+- mpFncGetPixel = BitmapReadAccess::GetPixelFor_16BIT_TC_LSB_MASK; break;
+- case BMP_FORMAT_24BIT_TC_BGR:
+- mpFncGetPixel = BitmapReadAccess::GetPixelFor_24BIT_TC_BGR; break;
+- case BMP_FORMAT_24BIT_TC_RGB:
+- mpFncGetPixel = BitmapReadAccess::GetPixelFor_24BIT_TC_RGB; break;
+- case BMP_FORMAT_24BIT_TC_MASK:
+- mpFncGetPixel = BitmapReadAccess::GetPixelFor_24BIT_TC_MASK; break;
+- case BMP_FORMAT_32BIT_TC_ABGR:
+- mpFncGetPixel = BitmapReadAccess::GetPixelFor_32BIT_TC_ABGR; break;
+- case BMP_FORMAT_32BIT_TC_ARGB:
+- mpFncGetPixel = BitmapReadAccess::GetPixelFor_32BIT_TC_ARGB; break;
+- case BMP_FORMAT_32BIT_TC_BGRA:
+- mpFncGetPixel = BitmapReadAccess::GetPixelFor_32BIT_TC_BGRA; break;
+- case BMP_FORMAT_32BIT_TC_RGBA:
+- mpFncGetPixel = BitmapReadAccess::GetPixelFor_32BIT_TC_RGBA; break;
+- case BMP_FORMAT_32BIT_TC_MASK:
+- mpFncGetPixel = BitmapReadAccess::GetPixelFor_32BIT_TC_MASK; break;
+-
+- default:
+- DBG_ERROR("Error: SalPrinterBmp::SalPrinterBmp() unknown bitmap format");
+- break;
+- }
+-}
+-
+-SalPrinterBmp::~SalPrinterBmp ()
+-{
+-}
+-
+-sal_uInt32
+-SalPrinterBmp::GetWidth () const
+-{
+- return mpBmpBuffer->mnWidth;
+-}
+-
+-sal_uInt32
+-SalPrinterBmp::GetHeight () const
+-{
+- return mpBmpBuffer->mnHeight;
+-}
+-
+-sal_uInt32
+-SalPrinterBmp::GetDepth () const
+-{
+- sal_uInt32 nDepth;
+-
+- switch (mpBmpBuffer->mnBitCount)
+- {
+- case 1:
+- nDepth = 1;
+- break;
+-
+- case 4:
+- case 8:
+- nDepth = 8;
+- break;
+-
+- case 16:
+- case 24:
+- case 32:
+- nDepth = 24;
+- break;
+-
+- default:
+- DBG_ERROR ("Error: unsupported bitmap depth in SalPrinterBmp::GetDepth()");
+- break;
+- }
+-
+- return nDepth;
+-}
+-
+-sal_uInt32
+-SalPrinterBmp::ColorOf (BitmapColor& rColor) const
+-{
+- if (rColor.IsIndex())
+- return ColorOf (mpBmpBuffer->maPalette[rColor.GetIndex()]);
+- else
+- return ((rColor.GetBlue()) & 0x000000ff)
+- | ((rColor.GetGreen() << 8) & 0x0000ff00)
+- | ((rColor.GetRed() << 16) & 0x00ff0000);
+-}
+-
+-sal_uInt8
+-SalPrinterBmp::GrayOf (BitmapColor& rColor) const
+-{
+- if (rColor.IsIndex())
+- return GrayOf (mpBmpBuffer->maPalette[rColor.GetIndex()]);
+- else
+- return ( rColor.GetBlue() * 28UL
+- + rColor.GetGreen() * 151UL
+- + rColor.GetRed() * 77UL ) >> 8;
+-}
+-
+-sal_uInt32
+-SalPrinterBmp::GetPaletteEntryCount () const
+-{
+- return mpBmpBuffer->maPalette.GetEntryCount ();
+-}
+-
+-sal_uInt32
+-SalPrinterBmp::GetPaletteColor (sal_uInt32 nIdx) const
+-{
+- return ColorOf (mpBmpBuffer->maPalette[nIdx]);
+-}
++// -=-= SalGraphics =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+-sal_uInt32
+-SalPrinterBmp::GetPixelRGB (sal_uInt32 nRow, sal_uInt32 nColumn) const
++extern "C"
+ {
+- Scanline pScan = mpScanAccess + nRow * mnScanOffset;
+- BitmapColor aColor = mpFncGetPixel (pScan, nColumn, mpBmpBuffer->maColorMask);
+-
+- return ColorOf (aColor);
++ static Bool GraphicsExposePredicate( Display* pDisplay, XEvent* pEvent, XPointer pFrameWindow )
++ {
++ Bool bRet = False;
++ if( (pEvent->type == GraphicsExpose || pEvent->type == NoExpose) &&
++ pEvent->xnoexpose.drawable == (Drawable)pFrameWindow )
++ {
++ bRet = True;
++ }
++ return bRet;
++ }
+ }
+
+-sal_uInt8
+-SalPrinterBmp::GetPixelGray (sal_uInt32 nRow, sal_uInt32 nColumn) const
+-{
+- Scanline pScan = mpScanAccess + nRow * mnScanOffset;
+- BitmapColor aColor = mpFncGetPixel (pScan, nColumn, mpBmpBuffer->maColorMask);
+-
+- return GrayOf (aColor);
+-}
+
+-sal_uInt8
+-SalPrinterBmp::GetPixelIdx (sal_uInt32 nRow, sal_uInt32 nColumn) const
++void X11SalGraphics::YieldGraphicsExpose( Display* pDisplay, SalFrame* pFrame, Drawable aWindow )
+ {
+- Scanline pScan = mpScanAccess + nRow * mnScanOffset;
+- BitmapColor aColor = mpFncGetPixel (pScan, nColumn, mpBmpBuffer->maColorMask);
+-
+- if (aColor.IsIndex())
+- return aColor.GetIndex();
+- else
+- return 0;
+-}
+-#endif
++ // get frame if necessary
++ if( ! pFrame )
++ {
++ const std::list< SalFrame* >& rFrames = GetSalData()->GetDisplay()->getFrames();
++ for( std::list< SalFrame* >::const_iterator it = rFrames.begin(); it != rFrames.end() && ! pFrame; ++it )
++ {
++ const SystemEnvData* pEnvData = (*it)->GetSystemData();
++ if( pEnvData->aWindow == aWindow )
++ pFrame = *it;
++ }
++ if( ! pFrame )
++ return;
++ }
+
+-// -=-= SalGraphics =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::CopyBits( const SalTwoRect *pPosAry,
+- SalGraphics *pSrcGraphics,
+- const OutputDevice *pOutDev, const OutputDevice *pSrcOutDev)
+-{
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- DBG_ERROR( "Error: PrinterGfx::CopyBits() not implemented" );
+- }
+- else
+- {
+-#endif
++ XEvent aEvent;
++ while( XCheckTypedWindowEvent( pDisplay, aWindow, Expose, &aEvent ) )
++ {
++ SalPaintEvent aPEvt;
++ aPEvt.mnBoundX = aEvent.xexpose.x;
++ aPEvt.mnBoundY = aEvent.xexpose.y;
++ aPEvt.mnBoundWidth = aEvent.xexpose.width+1;
++ aPEvt.mnBoundHeight = aEvent.xexpose.height+1;
++ pFrame->CallCallback( SALEVENT_PAINT, &aPEvt );
++ }
++
++ do
++ {
++ XIfEvent( pDisplay, &aEvent, GraphicsExposePredicate, (XPointer)aWindow );
++ if( aEvent.type == NoExpose )
++ break;
+
+- if( pPosAry->mnSrcWidth <= 0
+- || pPosAry->mnSrcHeight <= 0
+- || pPosAry->mnDestWidth <= 0
+- || pPosAry->mnDestHeight <= 0 )
++ if( pFrame )
+ {
+- return;
++ SalPaintEvent aPEvt;
++ aPEvt.mnBoundX = aEvent.xgraphicsexpose.x;
++ aPEvt.mnBoundY = aEvent.xgraphicsexpose.y;
++ aPEvt.mnBoundWidth = aEvent.xgraphicsexpose.width+1;
++ aPEvt.mnBoundHeight = aEvent.xgraphicsexpose.height+1;
++ pFrame->CallCallback( SALEVENT_PAINT, &aPEvt );
+ }
++ } while( aEvent.xgraphicsexpose.count != 0 );
++}
+
+- int n;
+- if( !pSrcGraphics )
++void X11SalGraphics::copyBits( const SalTwoRect *pPosAry,
++ SalGraphics *pSSrcGraphics )
++{
++ X11SalGraphics* pSrcGraphics = pSSrcGraphics
++ ? static_cast<X11SalGraphics*>(pSSrcGraphics)
++ : this;
++
++ if( pPosAry->mnSrcWidth <= 0
++ || pPosAry->mnSrcHeight <= 0
++ || pPosAry->mnDestWidth <= 0
++ || pPosAry->mnDestHeight <= 0 )
++ {
++ return;
++ }
++
++ int n;
++ if( pSrcGraphics == this )
++ {
++ n = 2;
++ }
++ else if( pSrcGraphics->bWindow_ )
++ {
++ // window or compatible virtual device
++ if( pSrcGraphics->GetDisplay() == GetDisplay() )
++ n = 2; // same Display
++ else
++ n = 1; // printer or other display
++ }
++ else if( pSrcGraphics->bVirDev_ )
++ {
++ // printer compatible virtual device
++ if( bPrinter_ )
++ n = 2; // printer or compatible virtual device == same display
++ else
++ n = 1; // window or compatible virtual device
++ }
++ else
++ n = 0;
++
++ if( n == 2
++ && pPosAry->mnSrcWidth == pPosAry->mnDestWidth
++ && pPosAry->mnSrcHeight == pPosAry->mnDestHeight )
++ {
++ if( bXORMode_
++ && !pSrcGraphics->bVirDev_
++ && (GetDisplay()->GetProperties() & PROPERTY_BUG_XCopyArea_GXxor) )
+ {
+- pSrcGraphics = this;
+- n = 2;
++ Pixmap hPixmap = XCreatePixmap( GetXDisplay(),
++ pSrcGraphics->GetDrawable(), // source
++ pPosAry->mnSrcWidth, pPosAry->mnSrcHeight,
++ pSrcGraphics->GetBitCount() );
++ XCopyArea( GetXDisplay(),
++ pSrcGraphics->GetDrawable(), // source
++ hPixmap, // destination
++ GetDisplay()->GetCopyGC(), // no clipping
++ pPosAry->mnSrcX, pPosAry->mnSrcY,
++ pPosAry->mnSrcWidth, pPosAry->mnSrcHeight,
++ 0, 0 ); // destination
++ XCopyArea( GetXDisplay(),
++ hPixmap, // source
++ GetDrawable(), // destination
++ GetInvertGC(), // destination clipping
++ 0, 0, // source
++ pPosAry->mnSrcWidth, pPosAry->mnSrcHeight,
++ pPosAry->mnDestX, pPosAry->mnDestY );
++ XFreePixmap( GetXDisplay(), hPixmap );
+ }
+- else if( pSrcGraphics->_IsWindow() )
+- // window or compatible virtual device
+- if( pSrcGraphics->_GetDisplay() == _GetDisplay() )
+- n = 2; // same Display
+- else
+- n = 1; // printer or other display
+- else if( pSrcGraphics->_IsVirtualDevice() )
+- // printer compatible virtual device
+- if( _IsPrinter() )
+- n = 2; // printer or compatible virtual device == same display
+- else
+- n = 1; // window or compatible virtual device
+ else
+- n = 0;
++ XCopyArea( GetXDisplay(),
++ pSrcGraphics->GetDrawable(), // source
++ GetDrawable(), // destination
++ GetCopyGC(), // destination clipping
++ pPosAry->mnSrcX, pPosAry->mnSrcY,
++ pPosAry->mnSrcWidth, pPosAry->mnSrcHeight,
++ pPosAry->mnDestX, pPosAry->mnDestY );
+
+- if( n == 2
+- && pPosAry->mnSrcWidth == pPosAry->mnDestWidth
+- && pPosAry->mnSrcHeight == pPosAry->mnDestHeight )
++ if( bWindow_ && ! bVirDev_ )
+ {
+- if( _IsXORMode()
+- && !pSrcGraphics->_IsVirtualDevice()
+- && (_GetDisplay()->GetProperties() & PROPERTY_BUG_XCopyArea_GXxor) )
+- {
+- Pixmap hPixmap = XCreatePixmap( _GetXDisplay(),
+- pSrcGraphics->_GetDrawable(), // source
+- pPosAry->mnSrcWidth, pPosAry->mnSrcHeight,
+- pSrcGraphics->GetBitCount() );
+- XCopyArea( _GetXDisplay(),
+- pSrcGraphics->_GetDrawable(), // source
+- hPixmap, // destination
+- _GetDisplay()->GetCopyGC(), // no clipping
+- pPosAry->mnSrcX, pPosAry->mnSrcY,
+- pPosAry->mnSrcWidth, pPosAry->mnSrcHeight,
+- 0, 0 ); // destination
+- XCopyArea( _GetXDisplay(),
+- hPixmap, // source
+- _GetDrawable(), // destination
+- maGraphicsData.GetInvertGC(), // destination clipping
+- 0, 0, // source
+- pPosAry->mnSrcWidth, pPosAry->mnSrcHeight,
+- pPosAry->mnDestX, pPosAry->mnDestY );
+- XFreePixmap( _GetXDisplay(), hPixmap );
+- }
+- else
+- XCopyArea( _GetXDisplay(),
+- pSrcGraphics->_GetDrawable(), // source
+- _GetDrawable(), // destination
+- maGraphicsData.GetCopyGC(), // destination clipping
+- pPosAry->mnSrcX, pPosAry->mnSrcY,
+- pPosAry->mnSrcWidth, pPosAry->mnSrcHeight,
+- pPosAry->mnDestX, pPosAry->mnDestY );
+-
+- if( _IsWindow() && ! _IsVirtualDevice() )
+- {
+- maGraphicsData.m_pFrame->maFrameData.YieldGraphicsExpose();
+- }
++ YieldGraphicsExpose( GetXDisplay(), m_pFrame, GetDrawable() );
+ }
+- else if( n )
++ }
++ else if( n )
++ {
++ SalBitmap *pDDB = pSrcGraphics->getBitmap( pPosAry->mnSrcX,
++ pPosAry->mnSrcY,
++ pPosAry->mnSrcWidth,
++ pPosAry->mnSrcHeight );
++
++ if( !pDDB )
+ {
+- SalBitmap *pDDB = pSrcGraphics->GetBitmap( pPosAry->mnSrcX,
+- pPosAry->mnSrcY,
+- pPosAry->mnSrcWidth,
+- pPosAry->mnSrcHeight, pSrcOutDev );
+-
+- if( !pDDB )
+- {
+- stderr0( "SalGraphics::CopyBits !pSrcGraphics->GetBitmap()\n" );
+- return;
+- }
+-
+- SalTwoRect aPosAry( *pPosAry );
+-
+- aPosAry.mnSrcX = 0, aPosAry.mnSrcY = 0;
+- DrawBitmap( &aPosAry, *pDDB, pOutDev );
+-
+- delete pDDB;
++ stderr0( "SalGraphics::CopyBits !pSrcGraphics->GetBitmap()\n" );
++ return;
+ }
+- else
+- stderr0( "SalGraphics::CopyBits from Printer not yet implemented\n" );
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++
++ SalTwoRect aPosAry( *pPosAry );
++
++ aPosAry.mnSrcX = 0, aPosAry.mnSrcY = 0;
++ drawBitmap( &aPosAry, *pDDB );
++
++ delete pDDB;
++ }
++ else
++ stderr0( "X11SalGraphics::CopyBits from Printer not yet implemented\n" );
+ }
+
+ // --------------------------------------------------------------------------
+
+-void SalGraphics::CopyArea ( long nDestX, long nDestY,
++void X11SalGraphics::copyArea ( long nDestX, long nDestY,
+ long nSrcX, long nSrcY,
+ long nSrcWidth, long nSrcHeight,
+- USHORT nFlags, const OutputDevice *pOutDev )
++ USHORT nFlags )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- DBG_ERROR( "Error: PrinterGfx::CopyArea() not implemented" );
+- }
+- else
+- {
+-#endif
+-
+- SalTwoRect aPosAry;
+-
+- aPosAry.mnDestX = nDestX;
+- aPosAry.mnDestY = nDestY;
+- aPosAry.mnDestWidth = nSrcWidth;
+- aPosAry.mnDestHeight = nSrcHeight;
+-
+- aPosAry.mnSrcX = nSrcX;
+- aPosAry.mnSrcY = nSrcY;
+- aPosAry.mnSrcWidth = nSrcWidth;
+- aPosAry.mnSrcHeight = nSrcHeight;
+-
+- SalGraphics::CopyBits ( &aPosAry, 0, pOutDev, pOutDev );
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
+-}
+-
+-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::DrawBitmap( const SalTwoRect* pPosAry, const SalBitmap& rSalBitmap, const OutputDevice* )
+-{
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- Rectangle aSrc (Point(pPosAry->mnSrcX, pPosAry->mnSrcY),
+- Size(pPosAry->mnSrcWidth, pPosAry->mnSrcHeight));
+- Rectangle aDst (Point(pPosAry->mnDestX, pPosAry->mnDestY),
+- Size(pPosAry->mnDestWidth, pPosAry->mnDestHeight));
+-
+- BitmapBuffer* pBuffer= const_cast<SalBitmap&>(rSalBitmap).AcquireBuffer(sal_True);
+-
+- SalPrinterBmp aBmp (pBuffer);
+- maGraphicsData.m_pPrinterGfx->DrawBitmap (aDst, aSrc, aBmp);
+-
+- const_cast<SalBitmap&>(rSalBitmap).ReleaseBuffer (pBuffer, sal_True);
+- }
+- else
+- {
+-#endif
+-
+- SalDisplay* pSalDisp = maGraphicsData.GetDisplay();
+- Display* pXDisp = pSalDisp->GetDisplay();
+- const Drawable aDrawable( maGraphicsData.GetDrawable() );
++ SalTwoRect aPosAry;
++
++ aPosAry.mnDestX = nDestX;
++ aPosAry.mnDestY = nDestY;
++ aPosAry.mnDestWidth = nSrcWidth;
++ aPosAry.mnDestHeight = nSrcHeight;
++
++ aPosAry.mnSrcX = nSrcX;
++ aPosAry.mnSrcY = nSrcY;
++ aPosAry.mnSrcWidth = nSrcWidth;
++ aPosAry.mnSrcHeight = nSrcHeight;
++
++ copyBits ( &aPosAry, 0 );
++}
++
++// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++void X11SalGraphics::drawBitmap( const SalTwoRect* pPosAry, const SalBitmap& rSalBitmap )
++{
++ SalDisplay* pSalDisp = GetDisplay();
++ Display* pXDisp = pSalDisp->GetDisplay();
++ const Drawable aDrawable( GetDrawable() );
++ const SalColormap& rColMap = pSalDisp->GetColormap();
++ const long nDepth = GetDisplay()->GetVisual()->GetDepth();
++ GC aGC( GetCopyGC() );
++ XGCValues aOldVal, aNewVal;
++ int nValues = GCForeground | GCBackground;
++
++ if( rSalBitmap.GetBitCount() == 1 )
++ {
++ // set foreground/background values for 1Bit bitmaps
++ XGetGCValues( pXDisp, aGC, nValues, &aOldVal );
++ aNewVal.foreground = rColMap.GetWhitePixel(), aNewVal.background = rColMap.GetBlackPixel();
++ XChangeGC( pXDisp, aGC, nValues, &aNewVal );
++ }
++
++ static_cast<const X11SalBitmap&>(rSalBitmap).ImplDraw( aDrawable, nDepth, *pPosAry, aGC, bWindow_ );
++
++ if( rSalBitmap.GetBitCount() == 1 )
++ XChangeGC( pXDisp, aGC, nValues, &aOldVal );
++ XFlush( pXDisp );
++}
++
++// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++
++void X11SalGraphics::drawBitmap( const SalTwoRect* pPosAry,
++ const SalBitmap& rSalBitmap,
++ const SalBitmap& rTransBitmap )
++{
++ DBG_ASSERT( !bPrinter_, "Drawing of transparent bitmaps on printer devices is strictly forbidden" );
++
++ SalDisplay* pSalDisp = GetDisplay();
++ Display* pXDisp = pSalDisp->GetDisplay();
++ Drawable aDrawable( GetDrawable() );
++ const USHORT nDepth = pSalDisp->GetVisual()->GetDepth();
++ Pixmap aFG( XCreatePixmap( pXDisp, aDrawable, pPosAry->mnDestWidth,
++ pPosAry->mnDestHeight, nDepth ) );
++ Pixmap aBG( XCreatePixmap( pXDisp, aDrawable, pPosAry->mnDestWidth,
++ pPosAry->mnDestHeight, nDepth ) );
++
++ if( aFG && aBG )
++ {
++ GC aTmpGC;
++ XGCValues aValues;
+ const SalColormap& rColMap = pSalDisp->GetColormap();
+- const long nDepth = maGraphicsData.GetDisplay()->GetVisual()->GetDepth();
+- GC aGC( maGraphicsData.GetCopyGC() );
+- XGCValues aOldVal, aNewVal;
+- int nValues = GCForeground | GCBackground;
+-
+- if( rSalBitmap.GetBitCount() == 1 )
+- {
+- // set foreground/background values for 1Bit bitmaps
+- XGetGCValues( pXDisp, aGC, nValues, &aOldVal );
+- aNewVal.foreground = rColMap.GetWhitePixel(), aNewVal.background = rColMap.GetBlackPixel();
+- XChangeGC( pXDisp, aGC, nValues, &aNewVal );
+- }
+-
+-#if defined(_USE_PRINT_EXTENSION_)
+- rSalBitmap.ImplDraw( pSalDisp, aDrawable, nDepth, *pPosAry, aGC );
+-#else
+- rSalBitmap.ImplDraw( aDrawable, nDepth, *pPosAry, aGC );
+-#endif
+-
+- if( rSalBitmap.GetBitCount() == 1 )
+- XChangeGC( pXDisp, aGC, nValues, &aOldVal );
+- XFlush( pXDisp );
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
+-}
+-
+-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-
+-void SalGraphics::DrawBitmap( const SalTwoRect* pPosAry, const SalBitmap& rSalBitmap,
+- const SalBitmap& rTransBitmap, const OutputDevice *pOutDev )
+-{
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- DBG_ERROR("Error: no PrinterGfx::DrawBitmap() for transparent bitmap");
+- }
+- else
+- {
+-#endif
+-
+- DBG_ASSERT( !_IsPrinter(), "Drawing of transparent bitmaps on printer devices is strictly forbidden" );
+-
+- SalDisplay* pSalDisp = maGraphicsData.GetDisplay();
+- Display* pXDisp = pSalDisp->GetDisplay();
+- Drawable aDrawable( maGraphicsData.GetDrawable() );
+- const USHORT nDepth = pSalDisp->GetVisual()->GetDepth();
+- Pixmap aFG( XCreatePixmap( pXDisp, aDrawable, pPosAry->mnDestWidth,
+- pPosAry->mnDestHeight, nDepth ) );
+- Pixmap aBG( XCreatePixmap( pXDisp, aDrawable, pPosAry->mnDestWidth,
+- pPosAry->mnDestHeight, nDepth ) );
+-
+- if( aFG && aBG )
++ const int nBlack = rColMap.GetBlackPixel(), nWhite = rColMap.GetWhitePixel();
++ const int nValues = GCFunction | GCForeground | GCBackground;
++ SalTwoRect aTmpRect( *pPosAry ); aTmpRect.mnDestX = aTmpRect.mnDestY = 0;
++
++ // draw paint bitmap in pixmap #1
++ aValues.function = GXcopy, aValues.foreground = nWhite, aValues.background = nBlack;
++ aTmpGC = XCreateGC( pXDisp, aFG, nValues, &aValues );
++ static_cast<const X11SalBitmap&>(rSalBitmap).ImplDraw( aFG, nDepth, aTmpRect, aTmpGC, false );
++ DBG_TESTTRANS( aFG );
++
++ // draw background in pixmap #2
++ XCopyArea( pXDisp, aDrawable, aBG, aTmpGC,
++ pPosAry->mnDestX, pPosAry->mnDestY,
++ pPosAry->mnDestWidth, pPosAry->mnDestHeight,
++ 0, 0 );
++
++ DBG_TESTTRANS( aBG );
++
++ // mask out paint bitmap in pixmap #1 (transparent areas 0)
++ aValues.function = GXand, aValues.foreground = 0x00000000, aValues.background = 0xffffffff;
++ XChangeGC( pXDisp, aTmpGC, nValues, &aValues );
++ static_cast<const X11SalBitmap&>(rTransBitmap).ImplDraw( aFG, 1, aTmpRect, aTmpGC, false );
++
++ DBG_TESTTRANS( aFG );
++
++ // #105055# For XOR mode, keep background behind bitmap intact
++ if( !bXORMode_ )
+ {
+- GC aTmpGC;
+- XGCValues aValues;
+- const SalColormap& rColMap = pSalDisp->GetColormap();
+- const int nBlack = rColMap.GetBlackPixel(), nWhite = rColMap.GetWhitePixel();
+- const int nValues = GCFunction | GCForeground | GCBackground;
+- SalTwoRect aTmpRect( *pPosAry ); aTmpRect.mnDestX = aTmpRect.mnDestY = 0;
+-
+- // draw paint bitmap in pixmap #1
+- aValues.function = GXcopy, aValues.foreground = nWhite, aValues.background = nBlack;
+- aTmpGC = XCreateGC( pXDisp, aFG, nValues, &aValues );
+-#ifdef _USE_PRINT_EXTENSION_
+- rSalBitmap.ImplDraw( pSalDisp, aFG, nDepth, aTmpRect, aTmpGC );
+-#else
+- rSalBitmap.ImplDraw( aFG, nDepth, aTmpRect, aTmpGC );
+-#endif
+- DBG_TESTTRANS( aFG );
+-
+- // draw background in pixmap #2
+- XCopyArea( pXDisp, aDrawable, aBG, aTmpGC,
+- pPosAry->mnDestX, pPosAry->mnDestY,
+- pPosAry->mnDestWidth, pPosAry->mnDestHeight,
+- 0, 0 );
+- DBG_TESTTRANS( aBG );
+-
+- // mask out paint bitmap in pixmap #1 (transparent areas 0)
+- aValues.function = GXand, aValues.foreground = 0x00000000, aValues.background = 0xffffffff;
++ // mask out background in pixmap #2 (nontransparent areas 0)
++ aValues.function = GXand, aValues.foreground = 0xffffffff, aValues.background = 0x00000000;
+ XChangeGC( pXDisp, aTmpGC, nValues, &aValues );
+-#ifdef _USE_PRINT_EXTENSION_
+- rTransBitmap.ImplDraw( pSalDisp, aFG, 1, aTmpRect, aTmpGC );
+-#else
+- rTransBitmap.ImplDraw( aFG, 1, aTmpRect, aTmpGC );
+-#endif
+-
+- DBG_TESTTRANS( aFG );
+-
+- // #105055# For XOR mode, keep background behind bitmap intact
+- if( !maGraphicsData.bXORMode_ )
+- {
+- // mask out background in pixmap #2 (nontransparent areas 0)
+- aValues.function = GXand, aValues.foreground = 0xffffffff, aValues.background = 0x00000000;
+- XChangeGC( pXDisp, aTmpGC, nValues, &aValues );
+-#ifdef _USE_PRINT_EXTENSION_
+- rTransBitmap.ImplDraw( pSalDisp, aBG, 1, aTmpRect, aTmpGC );
+-#else
+- rTransBitmap.ImplDraw( aBG, 1, aTmpRect, aTmpGC );
+-#endif
+-
+- DBG_TESTTRANS( aBG );
+- }
+-
+- // merge pixmap #1 and pixmap #2 in pixmap #2
+- aValues.function = GXxor, aValues.foreground = 0xffffffff, aValues.background = 0x00000000;
+- XChangeGC( pXDisp, aTmpGC, nValues, &aValues );
+- XCopyArea( pXDisp, aFG, aBG, aTmpGC,
+- 0, 0,
+- pPosAry->mnDestWidth, pPosAry->mnDestHeight,
+- 0, 0 );
+- DBG_TESTTRANS( aBG );
+-
+- // #105055# Disable XOR temporarily
+- BOOL bOldXORMode( maGraphicsData.bXORMode_ );
+- maGraphicsData.bXORMode_ = FALSE;
+-
+- // copy pixmap #2 (result) to background
+- XCopyArea( pXDisp, aBG, aDrawable, maGraphicsData.GetCopyGC(),
+- 0, 0,
+- pPosAry->mnDestWidth, pPosAry->mnDestHeight,
+- pPosAry->mnDestX, pPosAry->mnDestY );
++ static_cast<const X11SalBitmap&>(rTransBitmap).ImplDraw( aBG, 1, aTmpRect, aTmpGC, false );
++
+ DBG_TESTTRANS( aBG );
+-
+- maGraphicsData.bXORMode_ = bOldXORMode;
+-
+- XFreeGC( pXDisp, aTmpGC );
+- XFlush( pXDisp );
+ }
+- else
+- DrawBitmap( pPosAry, rSalBitmap, pOutDev );
+-
+- if( aFG )
+- XFreePixmap( pXDisp, aFG );
+-
+- if( aBG )
+- XFreePixmap( pXDisp, aBG );
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++
++ // merge pixmap #1 and pixmap #2 in pixmap #2
++ aValues.function = GXxor, aValues.foreground = 0xffffffff, aValues.background = 0x00000000;
++ XChangeGC( pXDisp, aTmpGC, nValues, &aValues );
++ XCopyArea( pXDisp, aFG, aBG, aTmpGC,
++ 0, 0,
++ pPosAry->mnDestWidth, pPosAry->mnDestHeight,
++ 0, 0 );
++ DBG_TESTTRANS( aBG );
++
++ // #105055# Disable XOR temporarily
++ BOOL bOldXORMode( bXORMode_ );
++ bXORMode_ = FALSE;
++
++ // copy pixmap #2 (result) to background
++ XCopyArea( pXDisp, aBG, aDrawable, GetCopyGC(),
++ 0, 0,
++ pPosAry->mnDestWidth, pPosAry->mnDestHeight,
++ pPosAry->mnDestX, pPosAry->mnDestY );
++ YieldGraphicsExpose( pXDisp, bWindow_ ? m_pFrame : NULL, aDrawable );
++
++ DBG_TESTTRANS( aBG );
++
++ bXORMode_ = bOldXORMode;
++
++ XFreeGC( pXDisp, aTmpGC );
++ XFlush( pXDisp );
++ }
++ else
++ drawBitmap( pPosAry, rSalBitmap );
++
++ if( aFG )
++ XFreePixmap( pXDisp, aFG );
++
++ if( aBG )
++ XFreePixmap( pXDisp, aBG );
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::DrawBitmap( const SalTwoRect* pPosAry, const SalBitmap& rSalBitmap,
+- SalColor nTransparentColor, const OutputDevice* )
+-{
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- DBG_ERROR("Error: no PrinterGfx::DrawBitmap() for transparent color");
+- }
+- else
+- {
+-#endif
+-
+- DBG_ERROR( "::DrawBitmap with transparent color not supported" );
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++void X11SalGraphics::drawBitmap( const SalTwoRect* pPosAry,
++ const SalBitmap& rSalBitmap,
++ SalColor nTransparentColor )
++{
++ DBG_ERROR( "::DrawBitmap with transparent color not supported" );
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::DrawMask( const SalTwoRect* pPosAry, const SalBitmap &rSalBitmap,
+- SalColor nMaskColor, const OutputDevice *pOutDev )
+-{
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- DBG_ERROR("Error: PrinterGfx::DrawMask() not implemented");
+- }
+- else
+- {
+-#endif
+-
+- SalDisplay* pSalDisp = maGraphicsData.GetDisplay();
+- Display* pXDisp = pSalDisp->GetDisplay();
+- Drawable aDrawable( maGraphicsData.GetDrawable() );
+- Pixmap aStipple( XCreatePixmap( pXDisp, aDrawable,
+- pPosAry->mnDestWidth,
+- pPosAry->mnDestHeight, 1 ) );
+-
+- if( aStipple )
+- {
+- SalTwoRect aTwoRect( *pPosAry ); aTwoRect.mnDestX = aTwoRect.mnDestY = 0;
+- GC aTmpGC;
+- XGCValues aValues;
+-
+- // create a stipple bitmap first (set bits are changed to unset bits and vice versa)
+- aValues.function = GXcopyInverted;
+- aValues.foreground = 1, aValues.background = 0;
+- aTmpGC = XCreateGC( pXDisp, aStipple, GCFunction | GCForeground | GCBackground, &aValues );
+-#ifdef _USE_PRINT_EXTENSION_
+- rSalBitmap.ImplDraw( pSalDisp, aStipple, 1, aTwoRect, aTmpGC );
+-#else
+- rSalBitmap.ImplDraw( aStipple, 1, aTwoRect, aTmpGC );
+-#endif
+-
+- XFreeGC( pXDisp, aTmpGC );
+-
+- // Set stipple and draw rectangle
+- GC aStippleGC( maGraphicsData.GetStippleGC() );
+- int nX = pPosAry->mnDestX, nY = pPosAry->mnDestY;
+-
+- XSetStipple( pXDisp, aStippleGC, aStipple );
+- XSetTSOrigin( pXDisp, aStippleGC, nX, nY );
+- XSetForeground( pXDisp, aStippleGC, _GetPixel( nMaskColor ) );
+- XFillRectangle( pXDisp, aDrawable, aStippleGC,
+- nX, nY,
+- pPosAry->mnDestWidth, pPosAry->mnDestHeight );
+- XFreePixmap( pXDisp, aStipple );
+- XFlush( pXDisp );
+- }
+- else
+- DrawBitmap( pPosAry, rSalBitmap, pOutDev );
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++void X11SalGraphics::drawMask( const SalTwoRect* pPosAry,
++ const SalBitmap &rSalBitmap,
++ SalColor nMaskColor )
++{
++ SalDisplay* pSalDisp = GetDisplay();
++ Display* pXDisp = pSalDisp->GetDisplay();
++ Drawable aDrawable( GetDrawable() );
++ Pixmap aStipple( XCreatePixmap( pXDisp, aDrawable,
++ pPosAry->mnDestWidth,
++ pPosAry->mnDestHeight, 1 ) );
++
++ if( aStipple )
++ {
++ SalTwoRect aTwoRect( *pPosAry ); aTwoRect.mnDestX = aTwoRect.mnDestY = 0;
++ GC aTmpGC;
++ XGCValues aValues;
++
++ // create a stipple bitmap first (set bits are changed to unset bits and vice versa)
++ aValues.function = GXcopyInverted;
++ aValues.foreground = 1, aValues.background = 0;
++ aTmpGC = XCreateGC( pXDisp, aStipple, GCFunction | GCForeground | GCBackground, &aValues );
++ static_cast<const X11SalBitmap&>(rSalBitmap).ImplDraw( aStipple, 1, aTwoRect, aTmpGC, false );
++
++ XFreeGC( pXDisp, aTmpGC );
++
++ // Set stipple and draw rectangle
++ GC aStippleGC( GetStippleGC() );
++ int nX = pPosAry->mnDestX, nY = pPosAry->mnDestY;
++
++ XSetStipple( pXDisp, aStippleGC, aStipple );
++ XSetTSOrigin( pXDisp, aStippleGC, nX, nY );
++ XSetForeground( pXDisp, aStippleGC, GetPixel( nMaskColor ) );
++ XFillRectangle( pXDisp, aDrawable, aStippleGC,
++ nX, nY,
++ pPosAry->mnDestWidth, pPosAry->mnDestHeight );
++ XFreePixmap( pXDisp, aStipple );
++ XFlush( pXDisp );
++ }
++ else
++ drawBitmap( pPosAry, rSalBitmap );
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-SalBitmap *SalGraphics::GetBitmap( long nX, long nY, long nDX, long nDY, const OutputDevice* )
++SalBitmap *X11SalGraphics::getBitmap( long nX, long nY, long nDX, long nDY )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- DBG_WARNING ("Warning: PrinterGfx::GetBitmap() not implemented");
+- return NULL;
+- }
+- else
+- {
+-#endif
+-
+- if( _IsPrinter() && !_IsVirtualDevice() )
++ if( bPrinter_ && !bVirDev_ )
++ return NULL;
++
++ if( bWindow_ && !bVirDev_ )
++ {
++ // normalize
++ if( nDX < 0 )
++ {
++ nX += nDX;
++ nDX = -nDX;
++ }
++ if ( nDY < 0 )
++ {
++ nY += nDY;
++ nDY = -nDY;
++ }
++
++ XWindowAttributes aAttrib;
++
++ XGetWindowAttributes( GetXDisplay(), GetDrawable(), &aAttrib );
++ if( aAttrib.map_state != IsViewable )
++ {
++ stderr0( "X11SalGraphics::GetBitmap drawable not viewable\n" );
+ return NULL;
+-
+- if( _IsWindow() && !_IsVirtualDevice() )
++ }
++
++ // am Window clippen (eg)
++ if ( nX < 0 )
+ {
+- // normalize
+- if( nDX < 0 )
+- {
+- nX += nDX;
+- nDX = -nDX;
+- }
+- if ( nDY < 0 )
+- {
+- nY += nDY;
+- nDY = -nDY;
+- }
+-
+- XWindowAttributes aAttrib;
+-
+- XGetWindowAttributes( _GetXDisplay(), _GetDrawable(), &aAttrib );
+- if( aAttrib.map_state != IsViewable )
+- {
+- stderr0( "SalGraphics::GetBitmap drawable not viewable\n" );
+- return NULL;
+- }
+-
+- // am Window clippen (eg)
+- if ( nX < 0 )
+- {
+- nDX += nX;
+- nX = 0;
+- }
+- if ( nY < 0 )
+- {
+- nDY += nY;
+- nY = 0;
+- }
+- if( nX + nDX > aAttrib.width )
+- nDX = aAttrib.width - nX;
+- if( nY + nDY > aAttrib.height )
+- nDY = aAttrib.height - nY;
+-
+- // nun alles ok ?
+- if( nDX <= 0 || nDY <= 0 )
+- {
+- stderr0( "SalGraphics::GetBitmap zero sized bitmap after clipping\n" );
+- return NULL;
+- }
++ nDX += nX;
++ nX = 0;
+ }
+-
+- SalBitmap* pSalBitmap = new SalBitmap;
+- USHORT nBitCount = GetBitCount();
+-
+- if( &_GetDisplay()->GetColormap() != &_GetColormap() )
+- nBitCount = 1;
+-
+- pSalBitmap->ImplCreateLocalFromDrawable( _GetDrawable(), nBitCount, nX, nY, nDX, nDY );
+- return pSalBitmap;
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
+-}
+-
+-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-SalColor SalGraphics::GetPixel( long nX, long nY, const OutputDevice* )
+-{
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- DBG_ERROR ("Warning: PrinterGfx::GetPixel() not implemented");
+- return 0;
+- }
+- else
+- {
+-#endif
+-
+- if( _IsWindow() && !_IsVirtualDevice() )
++ if ( nY < 0 )
+ {
+- XWindowAttributes aAttrib;
+-
+- XGetWindowAttributes( _GetXDisplay(), _GetDrawable(), &aAttrib );
+- if( aAttrib.map_state != IsViewable )
+- {
+- stderr0( "SalGraphics::GetPixel drawable not viewable\n" );
+- return 0;
+- }
++ nDY += nY;
++ nY = 0;
++ }
++ if( nX + nDX > aAttrib.width )
++ nDX = aAttrib.width - nX;
++ if( nY + nDY > aAttrib.height )
++ nDY = aAttrib.height - nY;
++
++ // nun alles ok ?
++ if( nDX <= 0 || nDY <= 0 )
++ {
++ stderr0( "X11SalGraphics::GetBitmap zero sized bitmap after clipping\n" );
++ return NULL;
+ }
++ }
++
++ X11SalBitmap* pSalBitmap = new X11SalBitmap;
++ USHORT nBitCount = GetBitCount();
++
++ if( &GetDisplay()->GetColormap() != &GetColormap() )
++ nBitCount = 1;
++
++
++ pSalBitmap->ImplCreateFromDrawable( GetDrawable(), nBitCount, nX, nY, nDX, nDY );
++ return pSalBitmap;
++}
+
+- XImage *pXImage = XGetImage( _GetXDisplay(),
+- _GetDrawable(),
+- nX, nY,
+- 1, 1,
+- AllPlanes,
+- ZPixmap );
+- if( !pXImage )
++// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
++SalColor X11SalGraphics::getPixel( long nX, long nY )
++{
++ if( bWindow_ && !bVirDev_ )
++ {
++ XWindowAttributes aAttrib;
++
++ XGetWindowAttributes( GetXDisplay(), GetDrawable(), &aAttrib );
++ if( aAttrib.map_state != IsViewable )
+ {
+- stderr0( "SalGraphics::GetPixel !XGetImage()\n" );
++ stderr0( "X11SalGraphics::GetPixel drawable not viewable\n" );
+ return 0;
+ }
+-
+- XColor aXColor;
+-
+- aXColor.pixel = XGetPixel( pXImage, 0, 0 );
+- XDestroyImage( pXImage );
+-
+- return _GetColormap().GetColor( aXColor.pixel );
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ }
++
++ XImage *pXImage = XGetImage( GetXDisplay(),
++ GetDrawable(),
++ nX, nY,
++ 1, 1,
++ AllPlanes,
++ ZPixmap );
++ if( !pXImage )
++ {
++ stderr0( "X11SalGraphics::GetPixel !XGetImage()\n" );
++ return 0;
++ }
++
++ XColor aXColor;
++
++ aXColor.pixel = XGetPixel( pXImage, 0, 0 );
++ XDestroyImage( pXImage );
++
++ return GetColormap().GetColor( aXColor.pixel );
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphics::Invert( long nX,
++void X11SalGraphics::invert( long nX,
+ long nY,
+ long nDX,
+ long nDY,
+- SalInvert nFlags, const OutputDevice* )
++ SalInvert nFlags )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- DBG_ERROR ("Warning: PrinterGfx::Invert() not implemented");
+- }
+- else
+- {
+-#endif
+-
+- SalDisplay *pDisp = _GetDisplay();
+-
+- GC pGC;
+- if( SAL_INVERT_50 & nFlags )
++ SalDisplay *pDisp = GetDisplay();
++
++ GC pGC;
++ if( SAL_INVERT_50 & nFlags )
++ {
++ pGC = GetInvert50GC();
++ XFillRectangle( GetXDisplay(), GetDrawable(), pGC, nX, nY, nDX, nDY );
++ }
++ else
++ {
++ if ( SAL_INVERT_TRACKFRAME & nFlags )
+ {
+- pGC = maGraphicsData.GetInvert50GC();
+- XFillRectangle( _GetXDisplay(), _GetDrawable(), pGC, nX, nY, nDX, nDY );
++ pGC = GetTrackingGC();
++ XDrawRectangle( GetXDisplay(), GetDrawable(), pGC, nX, nY, nDX, nDY );
+ }
+ else
+- if ( SAL_INVERT_TRACKFRAME & nFlags )
+- {
+- pGC = maGraphicsData.GetTrackingGC();
+- XDrawRectangle( _GetXDisplay(), _GetDrawable(), pGC, nX, nY, nDX, nDY );
+- }
+- else
+- {
+- pGC = maGraphicsData.GetInvertGC();
+- XFillRectangle( _GetXDisplay(), _GetDrawable(), pGC, nX, nY, nDX, nDY );
+- }
+-
+-#ifndef _USE_PRINT_EXTENSION_
+- }
+-#endif
++ {
++ pGC = GetInvertGC();
++ XFillRectangle( GetXDisplay(), GetDrawable(), pGC, nX, nY, nDX, nDY );
++ }
++ }
+ }
+
+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
+@@ -59,10 +59,6 @@
+ *
+ ************************************************************************/
+
+-#define _SV_SALGDI3_CXX
+-
+-// -=-= #includes =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-
+ #include <string.h>
+ #include <stdio.h>
+ #include <stdlib.h>
+@@ -76,9 +72,7 @@
+ #include <alloca.h>
+ #endif
+
+-#ifdef USE_BUILTIN_RASTERIZER
+ #include <gcach_xpeer.hxx>
+-#endif // USE_BUILTIN_RASTERIZER
+
+ #ifndef _SAL_TYPES_H_
+ #include <sal/types.h>
+@@ -92,14 +86,17 @@
+ #ifndef _SV_SALDISP_HXX
+ #include <saldisp.hxx>
+ #endif
+-#ifndef _SV_SALGDI_HXX
+-#include <salgdi.hxx>
++#ifndef _SV_SALGDI_H
++#include <salgdi.h>
++#endif
++#ifndef _VCL_PSPGRAPHICS_H
++#include <pspgraphics.h>
+ #endif
+ #ifndef _SV_SALFRAME_HXX
+ #include <salframe.hxx>
+ #endif
+-#ifndef _SV_SALVD_HXX
+-#include <salvd.hxx>
++#ifndef _SV_SALVD_H
++#include <salvd.h>
+ #endif
+ #ifndef _SV_OUTDEV_H
+ #include <outdev.h>
+@@ -107,8 +104,8 @@
+ #ifndef _STRING_HXX
+ #include <tools/string.hxx>
+ #endif
+-#ifndef _SV_POLY_HXX
+-#include <poly.hxx>
++#ifndef _TL_POLY_HXX
++#include <tools/poly.hxx>
+ #endif
+ #ifndef _RTL_TENCINFO_H
+ #include <rtl/tencinfo.h>
+@@ -132,9 +129,6 @@
+ #include <svapp.hxx>
+ #endif
+
+-#ifndef ANSI1252_HXX_
+-#include "ansi1252.hxx"
+-#endif
+ #ifndef XLFD_ATTRIBUTE_HXX
+ #include "xlfd_attr.hxx"
+ #endif
+@@ -155,106 +149,12 @@
+
+ // -----------------------------------------------------------------------
+
+-#ifdef USE_BUILTIN_RASTERIZER
+ static X11GlyphPeer aX11GlyphPeer;
+-#endif // USE_BUILTIN_RASTERIZER
+
+ using namespace rtl;
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+
+-/*
+- * returns:
+- * true: cut out positions rStart to rStop from output because fax number was swallowed
+- * false: do nothing
+- */
+-
+-String SalGraphicsData::FaxPhoneComment( const String& rOrig, xub_StrLen nIndex, xub_StrLen& rLen, xub_StrLen& rCutStart, xub_StrLen& rCutStop ) const
+-{
+- rCutStop = rCutStart = STRING_NOTFOUND;
+-
+-#ifdef _USE_PRINT_EXTENSION_
+- return String( rOrig );
+-#else
+- if( ! m_pPhoneNr )
+- return String( rOrig );
+-#endif
+-
+-#define FAX_PHONE_TOKEN "@@#"
+-#define FAX_PHONE_TOKEN_LENGTH 3
+-#define FAX_END_TOKEN "@@"
+-#define FAX_END_TOKEN_LENGTH 2
+-
+- bool bRet = false;
+- bool bStarted = false;
+- bool bStopped = false;
+- USHORT nPos;
+- USHORT nStart = 0;
+- USHORT nStop = rLen;
+- String aPhone = rOrig.Copy( nIndex, rLen );
+-
+- static String aPhoneNumber;
+- static bool bIsCollecting = false;
+-
+- if( ! bIsCollecting )
+- {
+- if( ( nPos = aPhone.SearchAscii( FAX_PHONE_TOKEN ) ) != STRING_NOTFOUND )
+- {
+- nStart = nPos;
+- bIsCollecting = true;
+- aPhoneNumber.Erase();
+- bRet = true;
+- bStarted = true;
+- }
+- }
+- if( bIsCollecting )
+- {
+- bRet = true;
+- nPos = bStarted ? nStart + FAX_PHONE_TOKEN_LENGTH : 0;
+- if( ( nPos = aPhone.SearchAscii( FAX_END_TOKEN, nPos ) ) != STRING_NOTFOUND )
+- {
+- bIsCollecting = false;
+- nStop = nPos + FAX_END_TOKEN_LENGTH;
+- bStopped = true;
+- }
+- int nTokenStart = nStart + (bStarted ? FAX_PHONE_TOKEN_LENGTH : 0);
+- int nTokenStop = nStop - (bStopped ? FAX_END_TOKEN_LENGTH : 0);
+- aPhoneNumber += aPhone.Copy( nTokenStart, nTokenStop - nTokenStart );
+- if( ! bIsCollecting )
+- {
+-#ifndef PRINTER_DUMMY
+- *m_pPhoneNr = aPhoneNumber;
+-#endif
+- aPhoneNumber.Erase();
+- }
+- }
+- if( aPhoneNumber.Len() > 1024 )
+- {
+- bIsCollecting = false;
+- aPhoneNumber.Erase();
+- bRet = false;
+- }
+-
+- String aRet;
+- if( bRet
+-#ifndef MACOSX
+- && m_bSwallowFaxNo
+-#endif
+- )
+- {
+- rLen -= nStop - nStart;
+- rCutStart = nStart+nIndex;
+- rCutStop = nStop+nIndex;
+- if( rCutStart )
+- aRet = rOrig.Copy( 0, rCutStart );
+- aRet += rOrig.Copy( rCutStop );
+- }
+- else
+- aRet = rOrig;
+-
+- return aRet;
+-}
+-
+ // ----------------------------------------------------------------------------
+ //
+ // manage X11 fonts and self rastered fonts
+@@ -263,9 +163,6 @@ String SalGraphicsData::FaxPhoneComment(
+
+ #ifndef _USE_PRINT_EXTENSION_
+
+-static FontItalic ToFontItalic (psp::italic::type eItalic);
+-static FontWeight ToFontWeight (psp::weight::type eWeight);
+-
+ class FontLookup
+ {
+ public:
+@@ -278,21 +175,20 @@ class FontLookup
+
+ private:
+
++ rtl::OString maName;
+ FontWeight mnWeight;
+ FontItalic mnItalic;
+ sal_Bool mbDisplay;
+
+- rtl::OString maName;
+-
+ public:
+
+ FontLookup ( ::std::list< psp::fontID >::iterator& it,
+ const psp::PrintFontManager& rMgr );
+ FontLookup (const Xlfd& rFont);
+ FontLookup (const FontLookup &rRef) :
++ maName (rRef.maName),
+ mnWeight (rRef.mnWeight),
+ mnItalic (rRef.mnItalic),
+- maName (rRef.maName),
+ mbDisplay(rRef.mbDisplay)
+ {}
+ ~FontLookup ()
+@@ -345,8 +241,8 @@ FontLookup::FontLookup ( ::std::list< ps
+ psp::FastPrintFontInfo aInfo;
+ if (rMgr.getFontFastInfo (*it, aInfo))
+ {
+- mnItalic = ToFontItalic (aInfo.m_eItalic);
+- mnWeight = ToFontWeight (aInfo.m_eWeight);
++ mnItalic = PspGraphics::ToFontItalic (aInfo.m_eItalic);
++ mnWeight = PspGraphics::ToFontWeight (aInfo.m_eWeight);
+ mbDisplay= aInfo.m_eType == psp::fonttype::Builtin
+ || aInfo.m_eType == psp::fonttype::Unknown ? False : True;
+ maName = rtl::OUStringToOString
+@@ -588,7 +484,7 @@ SalDisplay::GetFont( const ExtendedXlfd
+ if( pFontCache_->GetCurPos() )
+ {
+ pFontCache_->Remove( pItem );
+- pFontCache_->Insert( pItem, 0UL );
++ pFontCache_->Insert( pItem, (sal_uInt32)0 );
+ }
+ return pItem;
+ }
+@@ -618,7 +514,7 @@ SalDisplay::GetFont( const ExtendedXlfd
+ ExtendedFontStruct *pItem = new ExtendedFontStruct( GetDisplay(),
+ rPixelSize, bVertical,
+ const_cast<ExtendedXlfd*>(pRequestedFont) );
+- pFontCache_->Insert( pItem, 0UL );
++ pFontCache_->Insert( pItem, (sal_uInt32)0 );
+ pItem->AddRef();
+
+ return pItem;
+@@ -656,12 +552,12 @@ SalDisplay::DestroyFontCache()
+
+ // ----------------------------------------------------------------------------
+ //
+-// SalGraphicsData
++// X11SalGraphics
+ //
+ // ----------------------------------------------------------------------------
+
+ GC
+-SalGraphicsData::SelectFont()
++X11SalGraphics::SelectFont()
+ {
+ Display *pDisplay = GetXDisplay();
+
+@@ -697,9 +593,8 @@ SalGraphicsData::SelectFont()
+
+ //--------------------------------------------------------------------------
+
+-bool SalGraphicsData::SetFont( const ImplFontSelectData *pEntry, int nFallbackLevel )
++bool X11SalGraphics::setFont( const ImplFontSelectData *pEntry, int nFallbackLevel )
+ {
+- nFontOrientation_ = pEntry->mnOrientation;
+ bFontVertical_ = pEntry->mbVertical;
+
+ #ifdef HDU_DEBUG
+@@ -740,9 +635,6 @@ bool SalGraphicsData::SetFont( const Imp
+ return true;
+ }
+
+- if( m_pPrinterGfx != NULL )
+- return false;
+-
+ bFontGC_ = FALSE;
+ ExtendedXlfd *pSysFont = (ExtendedXlfd*)pEntry->mpFontData->mpSysData;
+ if( !pSysFont )
+@@ -834,8 +726,7 @@ ConvertTextItem16( XTextItem16* pTextIte
+
+ //--------------------------------------------------------------------------
+
+-#ifdef USE_BUILTIN_RASTERIZER
+-void SalGraphicsData::DrawServerAAFontString( const ServerFontLayout& rLayout )
++void X11SalGraphics::DrawServerAAFontString( const ServerFontLayout& rLayout )
+ {
+ Display* pDisplay = GetXDisplay();
+ Visual* pVisual = GetDisplay()->GetVisual()->GetVisual();
+@@ -843,7 +734,7 @@ void SalGraphicsData::DrawServerAAFontSt
+
+ // create xrender Picture for font foreground
+ static Pixmap aPixmap;
+- static Picture aSrc = NULL;
++ static Picture aSrc = 0;
+ if( !aSrc )
+ {
+ int iDummy;
+@@ -879,7 +770,7 @@ void SalGraphicsData::DrawServerAAFontSt
+
+ Point aPos;
+ static const int MAXGLYPHS = 160;
+- long aGlyphAry[ MAXGLYPHS ];
++ sal_Int32 aGlyphAry[ MAXGLYPHS ];
+ int nMaxGlyphs = rLayout.GetOrientation() ? 1 : MAXGLYPHS;
+ for( int nStart = 0;;)
+ {
+@@ -900,7 +791,7 @@ void SalGraphicsData::DrawServerAAFontSt
+
+ //--------------------------------------------------------------------------
+
+-bool SalGraphicsData::DrawServerAAForcedString( const ServerFontLayout& rLayout )
++bool X11SalGraphics::DrawServerAAForcedString( const ServerFontLayout& rLayout )
+ {
+ ServerFont& rFont = rLayout.GetServerFont();
+
+@@ -908,7 +799,7 @@ bool SalGraphicsData::DrawServerAAForced
+ int nXmin, nXmax, nYmin, nYmax;
+ int nStart = 0;
+ Point aPos;
+- long nGlyph;
++ sal_Int32 nGlyph;
+ for( bool bFirst=true; rLayout.GetNextGlyphs( 1, &nGlyph, aPos, nStart ); )
+ {
+ const RawBitmap* const pRawBitmap = aX11GlyphPeer.GetRawBitmap( rFont, nGlyph );
+@@ -947,7 +838,7 @@ bool SalGraphicsData::DrawServerAAForced
+ if( m_pFrame )
+ nWidth = m_pFrame->maGeometry.nWidth, nHeight = m_pFrame->maGeometry.nHeight;
+ else if( m_pVDev )
+- nWidth = m_pVDev->maVirDevData.GetWidth(), nHeight = m_pVDev->maVirDevData.GetHeight();
++ nWidth = m_pVDev->GetWidth(), nHeight = m_pVDev->GetHeight();
+
+ if( pClipRegion_ && !XEmptyRegion( pClipRegion_ ) )
+ {
+@@ -1082,7 +973,7 @@ bool SalGraphicsData::DrawServerAAForced
+
+ //--------------------------------------------------------------------------
+
+-void SalGraphicsData::DrawServerSimpleFontString( const ServerFontLayout& rSalLayout )
++void X11SalGraphics::DrawServerSimpleFontString( const ServerFontLayout& rSalLayout )
+ {
+ ServerFont& rFont = rSalLayout.GetServerFont();
+
+@@ -1096,7 +987,7 @@ void SalGraphicsData::DrawServerSimpleFo
+ XCopyGC( pDisplay, nGC, (1<<GCLastBit)-(1+GCFillStyle+GCLineWidth), tmpGC );
+
+ Point aPos;
+- long nGlyph;
++ sal_Int32 nGlyph;
+ for( int nStart = 0; rSalLayout.GetNextGlyphs( 1, &nGlyph, aPos, nStart ); )
+ {
+ Pixmap aStipple = aX11GlyphPeer.GetPixmap( rFont, nGlyph );
+@@ -1124,186 +1015,27 @@ void SalGraphicsData::DrawServerSimpleFo
+
+ //--------------------------------------------------------------------------
+
+-#ifndef _USE_PRINT_EXTENSION_
+-
+-class PspFontLayout : public GenericSalLayout
+-{
+-public:
+- PspFontLayout( ::psp::PrinterGfx& );
+- virtual bool LayoutText( ImplLayoutArgs& );
+- virtual void InitFont() const;
+- virtual void DrawText( SalGraphics& ) const;
+-private:
+- ::psp::PrinterGfx& mrPrinterGfx;
+- int mnFontID;
+- int mnFontHeight;
+- int mnFontWidth;
+- bool mbVertical;
+-};
+-
+-//--------------------------------------------------------------------------
+-
+-PspFontLayout::PspFontLayout( ::psp::PrinterGfx& rGfx )
+-: mrPrinterGfx( rGfx )
+-{
+- mnFontID = mrPrinterGfx.GetFontID();
+- mnFontHeight = mrPrinterGfx.GetFontHeight();
+- mnFontWidth = mrPrinterGfx.GetFontWidth();
+- mbVertical = mrPrinterGfx.GetFontVertical();
+-}
+-
+-//--------------------------------------------------------------------------
+-
+-bool PspFontLayout::LayoutText( ImplLayoutArgs& rArgs )
+-{
+- mbVertical = ((rArgs.mnFlags & SAL_LAYOUT_VERTICAL) != 0);
+-
+- long nUnitsPerPixel = 1;
+- int nOldGlyphId = -1;
+- long nGlyphWidth = 0;
+- int nCharPos = -1;
+- Point aNewPos( 0, 0 );
+- GlyphItem aPrevItem;
+- rtl_TextEncoding aFontEnc = mrPrinterGfx.GetFontMgr().getFontEncoding( mnFontID );
+- for(;;)
+- {
+- bool bRightToLeft;
+- if( !rArgs.GetNextPos( &nCharPos, &bRightToLeft ) )
+- break;
+-
+- sal_Unicode cChar = rArgs.mpStr[ nCharPos ];
+- if( bRightToLeft )
+- cChar = GetMirroredChar( cChar );
+- // symbol font aliasing: 0x0020-0x00ff -> 0xf020 -> 0xf0ff
+- if( aFontEnc == RTL_TEXTENCODING_SYMBOL )
+- if( cChar < 256 )
+- cChar += 0xf000;
+- int nGlyphIndex = cChar; // printer glyphs = unicode
+-
+- // update fallback_runs if needed
+- psp::CharacterMetric aMetric;
+- mrPrinterGfx.GetFontMgr().getMetrics( mnFontID, cChar, cChar, &aMetric, mbVertical );
+- if( aMetric.width == -1 && aMetric.height == -1 )
+- rArgs.NeedFallback( nCharPos, bRightToLeft );
+-
+- // 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;
+- }
+-
+- // finish previous glyph
+- if( nOldGlyphId >= 0 )
+- AppendGlyph( aPrevItem );
+- nOldGlyphId = nGlyphIndex;
+- aNewPos.X() += nGlyphWidth;
+-
+- // prepare GlyphItem for appending it in next round
+- nUnitsPerPixel = mrPrinterGfx.GetCharWidth( cChar, cChar, &nGlyphWidth );
+- int nGlyphFlags = bRightToLeft ? GlyphItem::IS_RTL_GLYPH : 0;
+- nGlyphIndex |= GF_ISCHAR;
+- aPrevItem = GlyphItem( nCharPos, nGlyphIndex, aNewPos, nGlyphFlags, nGlyphWidth );
+- }
+-
+- // append last glyph item if any
+- if( nOldGlyphId >= 0 )
+- AppendGlyph( aPrevItem );
+-
+- SetOrientation( mrPrinterGfx.GetFontAngle() );
+- SetUnitsPerPixel( nUnitsPerPixel );
+- return (nOldGlyphId >= 0);
+-}
+-
+-class PspServerFontLayout : public ServerFontLayout
+-{
+-public:
+- PspServerFontLayout( ::psp::PrinterGfx&, ServerFont& rFont );
+-
+- virtual void InitFont() const;
+-private:
+- ::psp::PrinterGfx& mrPrinterGfx;
+- int mnFontID;
+- int mnFontHeight;
+- int mnFontWidth;
+- bool mbVertical;
+-};
+-
+-PspServerFontLayout::PspServerFontLayout( ::psp::PrinterGfx& rGfx, ServerFont& rFont )
+- : ServerFontLayout( rFont ),
+- mrPrinterGfx( rGfx )
+-{
+- mnFontID = mrPrinterGfx.GetFontID();
+- mnFontHeight = mrPrinterGfx.GetFontHeight();
+- mnFontWidth = mrPrinterGfx.GetFontWidth();
+- mbVertical = mrPrinterGfx.GetFontVertical();
+-}
+-
+-void PspServerFontLayout::InitFont() const
+-{
+- mrPrinterGfx.SetFont( mnFontID, mnFontHeight, mnFontWidth,
+- mnOrientation, mbVertical );
+-}
+-
+-//--------------------------------------------------------------------------
+-
+-void DrawPrinterLayout( const SalLayout& rLayout, ::psp::PrinterGfx& rGfx )
+-{
+- const int nMaxGlyphs = 200;
+- long aGlyphAry[ nMaxGlyphs ];
+- long aWidthAry[ nMaxGlyphs ];
+- sal_Int32 aIdxAry [ nMaxGlyphs ];
+- sal_Unicode aUnicodes[ nMaxGlyphs ];
+- Point aPos;
+- long nUnitsPerPixel = rLayout.GetUnitsPerPixel();
+- for( int nStart = 0;; )
+- {
+- int nGlyphCount = rLayout.GetNextGlyphs( nMaxGlyphs, aGlyphAry, aPos, nStart, aWidthAry );
+- if( !nGlyphCount )
+- break;
+-
+- long nXOffset = 0;
+- for( int i = 0; i < nGlyphCount; ++i )
+- {
+- nXOffset += aWidthAry[ i ];
+- aIdxAry[ i ] = nXOffset / nUnitsPerPixel;
+- long nGlyphIdx = aGlyphAry[i] & (GF_IDXMASK | GF_ROTMASK);
+- aUnicodes[i] = (aGlyphAry[i] & GF_ISCHAR) ? nGlyphIdx : 0;
+- aGlyphAry[i] = nGlyphIdx;
+- }
+-
+- rGfx.DrawGlyphs( aPos, (unsigned long*)aGlyphAry, aUnicodes, nGlyphCount, aIdxAry );
+- }
+-}
+-
+-//--------------------------------------------------------------------------
+-
+-void PspFontLayout::InitFont() const
+-{
+- mrPrinterGfx.SetFont( mnFontID, mnFontHeight, mnFontWidth,
+- mnOrientation, mbVertical );
+-}
+-
+-//--------------------------------------------------------------------------
+-
+-void PspFontLayout::DrawText( SalGraphics& ) const
++static Point
++RotatedPoint( Point &rOrigin, int nDx, int nAngle )
+ {
+- DrawPrinterLayout( *this, mrPrinterGfx );
++ Point aPos( rOrigin.X() + nDx, rOrigin.Y() );
++ Polygon aPolygon(1);
++ aPolygon.SetPoint( aPos, 0 );
++ aPolygon.Rotate( rOrigin, nAngle );
++ return aPolygon.GetPoint( 0 );
+ }
+
+-#endif // _USE_PRINT_EXTENSION_
+-
+ //--------------------------------------------------------------------------
+
+-void SalGraphicsData::DispatchServerFontString( const ServerFontLayout& rLayout )
++void X11SalGraphics::DrawServerFontLayout( const ServerFontLayout& rLayout )
+ {
+- if( m_pPrinterGfx != NULL )
+- {
+- // print complex text
+- DrawPrinterLayout( rLayout, *m_pPrinterGfx );
+- }
++ // draw complex text
++ ServerFont& rFont = rLayout.GetServerFont();
++
++ if( aX11GlyphPeer.GetGlyphSet( rFont ) )
++ DrawServerAAFontString( rLayout );
++ else if( aX11GlyphPeer.ForcedAntialiasing( rFont ) )
++ DrawServerAAForcedString( rLayout );
+ else
+ {
+ // draw complex text
+@@ -1326,35 +1058,7 @@ void SalGraphicsData::DispatchServerFont
+
+ //--------------------------------------------------------------------------
+
+-void ServerFontLayout::DrawText( SalGraphics& rSalGraphics ) const
+-{
+- rSalGraphics.maGraphicsData.DispatchServerFontString( *this );
+-}
+-
+-//--------------------------------------------------------------------------
+-
+-static Point
+-RotatedPoint( Point &rOrigin, int nDx, int nAngle )
+-{
+- Point aPos( rOrigin.X() + nDx, rOrigin.Y() );
+- Polygon aPolygon(1);
+- aPolygon.SetPoint( aPos, 0 );
+- aPolygon.Rotate( rOrigin, nAngle );
+- return aPolygon.GetPoint( 0 );
+-}
+-
+-//--------------------------------------------------------------------------
+-
+-void SalGraphicsData::DrawServerFontString( const ServerFontLayout& rLayout )
+-{
+- DispatchServerFontString( rLayout );
+-}
+-
+-#endif // USE_BUILTIN_RASTERIZER
+-
+-//--------------------------------------------------------------------------
+-
+-void SalGraphicsData::DrawStringUCS2MB( ExtendedFontStruct& rFont,
++void X11SalGraphics::DrawStringUCS2MB( ExtendedFontStruct& rFont,
+ const Point& rPoint, const sal_Unicode* pStr, int nLength )
+ {
+ Display* pDisplay = GetXDisplay();
+@@ -1383,8 +1087,9 @@ void SalGraphicsData::DrawStringUCS2MB(
+ {
+ XTextItem16 *pTextItem = (XTextItem16*)alloca( nLength * sizeof(XTextItem16) );
+ XChar2b *pMBChar = (XChar2b*)pStr;
++ int nItem = 0;
+
+- for( int nChar = 0, nItem = 0; nChar < nLength; ++nChar )
++ for( int nChar = 0; nChar < nLength; ++nChar )
+ {
+ rtl_TextEncoding nEnc;
+ XFontStruct* pFontStruct = rFont.GetFontStruct( pStr[nChar], &nEnc );
+@@ -1406,15 +1111,13 @@ void SalGraphicsData::DrawStringUCS2MB(
+
+ //--------------------------------------------------------------------------
+
+-ULONG SalGraphicsData::GetFontCodeRanges( sal_uInt32* pCodePairs ) const
++ULONG X11SalGraphics::GetFontCodeRanges( sal_uInt32* pCodePairs ) const
+
+ {
+ ULONG nPairs = 0;
+-#ifdef USE_BUILTIN_RASTERIZER
+ if( mpServerFont[0] )
+ nPairs = mpServerFont[0]->GetFontCodeRanges( pCodePairs );
+ else
+-#endif //USE_BUILTIN_RASTERIZER
+ if( mXFont[0] )
+ nPairs = mXFont[0]->GetFontCodeRanges( pCodePairs );
+ return nPairs;
+@@ -1449,204 +1152,32 @@ CheckNoNegativeCoordinateWorkaround()
+ //
+ // ----------------------------------------------------------------------------
+
+-USHORT SalGraphics::SetFont( ImplFontSelectData *pEntry, int nFallbackLevel )
++USHORT X11SalGraphics::SetFont( ImplFontSelectData *pEntry, int nFallbackLevel )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if( (maGraphicsData.m_pPrinterGfx != NULL) )
+- {
+- sal_Bool bVertical = pEntry->mbVertical;
+- sal_Int32 nID = pEntry->mpFontData ? (sal_Int32)pEntry->mpFontData->mpSysData : 0;
+-
+- // also set the serverside font for layouting
+- maGraphicsData.SetFont( pEntry, nFallbackLevel );
+-
+- // set the printer and the printer fallback font
+- return maGraphicsData.m_pPrinterGfx->SetFont(
+- nID,
+- pEntry->mnHeight,
+- pEntry->mnWidth,
+- pEntry->mnOrientation,
+- pEntry->mbVertical
+- );
+- }
+- else
+-#endif
+- {
+- USHORT nRetVal = 0;
+- if( !maGraphicsData.SetFont( pEntry, nFallbackLevel ) )
+- nRetVal |= SAL_SETFONT_BADFONT;
+- if( _IsPrinter() || (maGraphicsData.mpServerFont[ nFallbackLevel ] != NULL) )
+- nRetVal |= SAL_SETFONT_USEDRAWTEXTARRAY;
+- return nRetVal;
+- }
+-}
+-
+-// ----------------------------------------------------------------------------
+-
+-void SalGraphics::RemovingFont( ImplFontData* pFontData )
+-{
+- // ImplFontData gets removed => notify all caches
+- GlyphCache::GetInstance().RemoveFont( pFontData );
++ USHORT nRetVal = 0;
++ if( !setFont( pEntry, nFallbackLevel ) )
++ nRetVal |= SAL_SETFONT_BADFONT;
++ if( bPrinter_ || (mpServerFont[ nFallbackLevel ] != NULL) )
++ nRetVal |= SAL_SETFONT_USEDRAWTEXTARRAY;
++ return nRetVal;
+ }
+
+ // ----------------------------------------------------------------------------
+
+ void
+-SalGraphics::SetTextColor( SalColor nSalColor )
++X11SalGraphics::SetTextColor( SalColor nSalColor )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- psp::PrinterColor aColor (SALCOLOR_RED (nSalColor),
+- SALCOLOR_GREEN (nSalColor),
+- SALCOLOR_BLUE (nSalColor));
+- maGraphicsData.m_pPrinterGfx->SetTextColor (aColor);
+- }
+- 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
+ }
+
+ // ----------------------------------------------------------------------------
+
+-#ifndef _USE_PRINT_EXTENSION_
+-
+-static FontWidth
+-ToFontWidth (psp::width::type eWidth)
+-{
+- switch (eWidth)
+- {
+- case psp::width::UltraCondensed: return WIDTH_ULTRA_CONDENSED;
+- case psp::width::ExtraCondensed: return WIDTH_EXTRA_CONDENSED;
+- case psp::width::Condensed: return WIDTH_CONDENSED;
+- case psp::width::SemiCondensed: return WIDTH_SEMI_CONDENSED;
+- case psp::width::Normal: return WIDTH_NORMAL;
+- case psp::width::SemiExpanded: return WIDTH_SEMI_EXPANDED;
+- case psp::width::Expanded: return WIDTH_EXPANDED;
+- case psp::width::ExtraExpanded: return WIDTH_EXTRA_EXPANDED;
+- case psp::width::UltraExpanded: return WIDTH_ULTRA_EXPANDED;
+- }
+- return WIDTH_DONTKNOW;
+-}
+-
+-static FontWeight
+-ToFontWeight (psp::weight::type eWeight)
+-{
+- switch (eWeight)
+- {
+- case psp::weight::Thin: return WEIGHT_THIN;
+- case psp::weight::UltraLight: return WEIGHT_ULTRALIGHT;
+- case psp::weight::Light: return WEIGHT_LIGHT;
+- case psp::weight::SemiLight: return WEIGHT_SEMILIGHT;
+- case psp::weight::Normal: return WEIGHT_NORMAL;
+- case psp::weight::Medium: return WEIGHT_MEDIUM;
+- case psp::weight::SemiBold: return WEIGHT_SEMIBOLD;
+- case psp::weight::Bold: return WEIGHT_BOLD;
+- case psp::weight::UltraBold: return WEIGHT_ULTRABOLD;
+- case psp::weight::Black: return WEIGHT_BLACK;
+- }
+- return WEIGHT_DONTKNOW;
+-}
+-
+-static FontPitch
+-ToFontPitch (psp::pitch::type ePitch)
+-{
+- switch (ePitch)
+- {
+- case psp::pitch::Fixed: return PITCH_FIXED;
+- case psp::pitch::Variable: return PITCH_VARIABLE;
+- }
+- return PITCH_DONTKNOW;
+-}
+-
+-static FontItalic
+-ToFontItalic (psp::italic::type eItalic)
+-{
+- switch (eItalic)
+- {
+- case psp::italic::Upright: return ITALIC_NONE;
+- case psp::italic::Oblique: return ITALIC_OBLIQUE;
+- case psp::italic::Italic: return ITALIC_NORMAL;
+- }
+- return ITALIC_DONTKNOW;
+-}
+-
+-static FontFamily
+-ToFontFamily (psp::family::type eFamily)
+-{
+- switch (eFamily)
+- {
+- case psp::family::Decorative: return FAMILY_DECORATIVE;
+- case psp::family::Modern: return FAMILY_MODERN;
+- case psp::family::Roman: return FAMILY_ROMAN;
+- case psp::family::Script: return FAMILY_SCRIPT;
+- case psp::family::Swiss: return FAMILY_SWISS;
+- case psp::family::System: return FAMILY_SYSTEM;
+- }
+- return FAMILY_DONTKNOW;
+-}
+-
+-static void SetImplFontData( const psp::FastPrintFontInfo& aInfo, ImplFontData& rData )
+-{
+- rData.meFamily = ToFontFamily (aInfo.m_eFamilyStyle);
+- rData.meWeight = ToFontWeight (aInfo.m_eWeight);
+-
+- rData.meItalic = ToFontItalic (aInfo.m_eItalic);
+- rData.meWidthType = ToFontWidth (aInfo.m_eWidth);
+- rData.mePitch = ToFontPitch (aInfo.m_ePitch);
+- rData.meCharSet = aInfo.m_aEncoding;
+- rData.maName = aInfo.m_aFamilyName;
+- // rData.meScript = SCRIPT_DONTKNOW;
+- /*rData.maStyleName = XXX */
+-
+- rData.mnWidth = 0;
+- rData.mnHeight = 0;
+- rData.mbOrientation = TRUE;
+- rData.mnQuality = (aInfo.m_eType == psp::fonttype::Builtin ? 1024 : 0);
+- rData.mnVerticalOrientation= 0;
+- rData.meType = TYPE_SCALABLE;
+- rData.mbDevice = (aInfo.m_eType == psp::fonttype::Builtin);
+- String aMapNames;
+- for( ::std::list< OUString >::const_iterator it = aInfo.m_aAliases.begin(); it != aInfo.m_aAliases.end(); ++it )
+- {
+- if( it != aInfo.m_aAliases.begin() )
+- aMapNames.Append(';');
+- aMapNames.Append( String( *it ) );
+- }
+- rData.maMapNames = aMapNames;
+- switch( aInfo.m_eType )
+- {
+- case psp::fonttype::TrueType:
+- rData.mbSubsettable = TRUE;
+- rData.mbEmbeddable = FALSE;
+- break;
+- case psp::fonttype::Type1:
+- rData.mbSubsettable = FALSE;
+- rData.mbEmbeddable = TRUE;
+- break;
+- default:
+- rData.mbSubsettable = FALSE;
+- rData.mbEmbeddable = FALSE;
+- break;
+- }
+-}
+-
+-#endif
+-
+-// ----------------------------------------------------------------------------
+-
+-ImplFontData* SalGraphics::AddTempDevFont( const String& rFileURL, const String& rFontName )
++ImplFontData* X11SalGraphics::AddTempDevFont( const String& rFileURL, const String& rFontName )
+ {
+ // inform font manager
+ rtl::OUString aUSystemPath;
+@@ -1662,7 +1193,7 @@ ImplFontData* SalGraphics::AddTempDevFon
+ psp::FastPrintFontInfo aInfo;
+ rMgr.getFontFastInfo( nFontId, aInfo );
+ ImplFontData* pFontData = new ImplFontData;
+- SetImplFontData( aInfo, *pFontData );
++ PspGraphics::SetImplFontData( aInfo, *pFontData );
+ pFontData->maName = rFontName;
+ pFontData->mnQuality += 5800;
+
+@@ -1676,148 +1207,83 @@ ImplFontData* SalGraphics::AddTempDevFon
+
+ // ----------------------------------------------------------------------------
+
+-void SalGraphics::GetDevFontList( ImplDevFontList *pList )
++void X11SalGraphics::GetDevFontList( ImplDevFontList *pList )
+ {
+-#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 )
+- {
+- case LANGUAGE_JAPANESE:
+- pLangBoost = "jan"; // japanese is default
+- break;
+- case LANGUAGE_CHINESE:
+- case LANGUAGE_CHINESE_SIMPLIFIED:
+- case LANGUAGE_CHINESE_SINGAPORE:
+- pLangBoost = "zhs";
+- break;
+- case LANGUAGE_CHINESE_TRADITIONAL:
+- case LANGUAGE_CHINESE_HONGKONG:
+- case LANGUAGE_CHINESE_MACAU:
+- pLangBoost = "zht";
+- break;
+- case LANGUAGE_KOREAN:
+- case LANGUAGE_KOREAN_JOHAB:
+- pLangBoost = "kor";
+- break;
+- }
+-
+- ::std::list< psp::fontID > aList;
+- const psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
+- rMgr.getFontList( aList, maGraphicsData.m_pJobData->m_pParser );
+-
+- ::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
+- ByteString aFileName( rMgr.getFontFileSysPath( *it ) );
+- int nPos = aFileName.SearchBackward( '_' );
+- if( nPos == STRING_NOTFOUND || aFileName.GetChar( nPos+1 ) == '.' )
+- pFontData->mnQuality += 5;
+- else
+- {
+- 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
+- // don't use bitmap X fonts on OS X
+- if ( pFonts->Get(nIdx)->GetFontType() != TYPE_RASTER )
+-#endif
+- {
+- 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 );
+- }
+- }
+-
+-#ifdef USE_BUILTIN_RASTERIZER
+- aX11GlyphPeer.SetDisplay( maGraphicsData.GetXDisplay(),
+- maGraphicsData.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 );
+- for( it = aList.begin(); it != aList.end(); ++it )
+- {
+- psp::FastPrintFontInfo aInfo;
+- if( rMgr.getFontFastInfo( *it, aInfo ) )
+- {
+- if( aInfo.m_eType == psp::fonttype::Builtin )
+- continue;
+- ImplFontData aFontData;
+- 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;
+- rGC.AddFontFile( rMgr.getFontFileSysPath( aInfo.m_nID ), nFaceNum,
+- aInfo.m_nID, &aFontData );
+- }
+- }
+-
+- rGC.FetchFontList( pList );
+-#endif // USE_BUILTIN_RASTERIZER
+- }
++ rGC.FetchFontList( pList );
+ }
+
+ // ----------------------------------------------------------------------------
+
+-void SalGraphics::GetDevFontSubstList( OutputDevice* pOutDev )
++void X11SalGraphics::GetDevFontSubstList( OutputDevice* pOutDev )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if( maGraphicsData.m_pPrinterGfx != NULL )
+- {
+- const psp::PrinterInfo& rInfo = psp::PrinterInfoManager::get().getPrinterInfo( maGraphicsData.m_pJobData->m_aPrinterName );
+- if( rInfo.m_bPerformFontSubstitution )
+- {
+- for( std::hash_map< rtl::OUString, rtl::OUString, rtl::OUStringHash >::const_iterator it = rInfo.m_aFontSubstitutes.begin(); it != rInfo.m_aFontSubstitutes.end(); ++it )
+- pOutDev->ImplAddDevFontSubstitute( it->first, it->second, FONT_SUBSTITUTE_ALWAYS );
+- }
+- }
+-#endif
+ }
+
+ // ----------------------------------------------------------------------------
+@@ -1831,136 +1297,53 @@ sal_DivideNeg( long n1, long n2 )
+ // ----------------------------------------------------------------------------
+
+ void
+-SalGraphics::GetFontMetric( ImplFontMetricData *pMetric )
++X11SalGraphics::GetFontMetric( ImplFontMetricData *pMetric )
+ {
+-#ifndef _USE_PRINT_EXTENSION_
+- if (maGraphicsData.m_pPrinterGfx != NULL)
+- {
+- const psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
+- psp::PrintFontInfo aInfo;
+-
+- if (rMgr.getFontInfo (maGraphicsData.m_pPrinterGfx->GetFontID(), aInfo))
+- {
+- sal_Int32 nTextHeight = maGraphicsData.m_pPrinterGfx->GetFontHeight();
+- sal_Int32 nTextWidth = maGraphicsData.m_pPrinterGfx->GetFontWidth();
+- if( ! nTextWidth )
+- nTextWidth = nTextHeight;
+-
+- pMetric->mnOrientation = maGraphicsData.m_pPrinterGfx->GetFontAngle();
+- pMetric->mnSlant = 0;
+- pMetric->mbDevice = aInfo.m_eType == psp::fonttype::Builtin ? sal_True : sal_False;
+-
+- pMetric->meCharSet = aInfo.m_aEncoding;
+-
+- pMetric->meFamily = ToFontFamily (aInfo.m_eFamilyStyle);
+- pMetric->meWeight = ToFontWeight (aInfo.m_eWeight);
+- pMetric->mePitch = ToFontPitch (aInfo.m_ePitch);
+- pMetric->meItalic = ToFontItalic (aInfo.m_eItalic);
+- pMetric->meType = TYPE_SCALABLE;
+-
+- pMetric->mnFirstChar = 0;
+- pMetric->mnLastChar = 255;
+-
+- pMetric->mnWidth = nTextWidth;
+- pMetric->mnAscent = ( aInfo.m_nAscend * nTextHeight + 500 ) / 1000;
+- pMetric->mnDescent = ( aInfo.m_nDescend * nTextHeight + 500 ) / 1000;
+- pMetric->mnLeading = ( aInfo.m_nLeading * nTextHeight + 500 ) / 1000;
+- }
+- return;
+- }
+-#endif
+-
+- if( maGraphicsData.mpServerFont[0] != NULL )
++ if( mpServerFont[0] != NULL )
+ {
+ long rDummyFactor;
+- maGraphicsData.mpServerFont[0]->FetchFontMetric( *pMetric, rDummyFactor );
++ mpServerFont[0]->FetchFontMetric( *pMetric, rDummyFactor );
+ return;
+ }
+
+- ExtendedFontStruct* pFont = maGraphicsData.mXFont[0];
++ ExtendedFontStruct* pFont = mXFont[0];
+ if( pFont != NULL )
+ {
+ pFont->ToImplFontMetricData( pMetric );
+- if ( maGraphicsData.bFontVertical_ )
++ if ( bFontVertical_ )
+ pMetric->mnOrientation = 0;
+ }
+ }
+
+ // ---------------------------------------------------------------------------
+
+-static long
+-InitializeWidthArray( long *pWidthArray, sal_Size nItems, int nValue = 0 )
+-{
+- const long nPrecision = 1;
+-
+- for ( int i = 0; i < nItems; i++, pWidthArray++ )
+- *pWidthArray = nValue;
+-
+- return nPrecision;
+-}
+-
+-// ---------------------------------------------------------------------------
+-
+-extern unsigned char TranslateCharName( char* );
+-
+ ULONG
+-SalGraphics::GetKernPairs( ULONG nPairs, ImplKernPairData *pKernPairs )
++X11SalGraphics::GetKernPairs( ULONG nPairs, ImplKernPairData *pKernPairs )
+ {
+- if( ! _IsPrinter() )
++ if( ! bPrinter_ )
+ {
+- if( maGraphicsData.mpServerFont[0] != NULL )
++ if( mpServerFont[0] != NULL )
+ {
+ ImplKernPairData* pTmpKernPairs;
+- ULONG nGotPairs = maGraphicsData.mpServerFont[0]->GetKernPairs( &pTmpKernPairs );
++ ULONG nGotPairs = mpServerFont[0]->GetKernPairs( &pTmpKernPairs );
+ for( int i = 0; i < nPairs && i < nGotPairs; ++i )
+ pKernPairs[ i ] = pTmpKernPairs[ i ];
+ delete[] pTmpKernPairs;
+ return nGotPairs;
+ }
+ }
+- else
+- {
+-#ifndef _USE_PRINT_EXTENSION_
+- const ::std::list< ::psp::KernPair >& rPairs( maGraphicsData.m_pPrinterGfx->getKernPairs() );
+- ULONG nHavePairs = rPairs.size();
+- if( pKernPairs && nPairs )
+- {
+- ::std::list< ::psp::KernPair >::const_iterator it;
+- int i;
+- int nTextScale = maGraphicsData.m_pPrinterGfx->GetFontWidth();
+- if( ! nTextScale )
+- nTextScale = maGraphicsData.m_pPrinterGfx->GetFontHeight();
+- for( i = 0, it = rPairs.begin(); i < nPairs && i < nHavePairs; i++, ++it )
+- {
+- pKernPairs[i].mnChar1 = it->first;
+- pKernPairs[i].mnChar2 = it->second;
+- pKernPairs[i].mnKern = it->kern_x * nTextScale / 1000;
+- }
+-
+- }
+- return nHavePairs;
+-#endif
+- }
+-
+ return 0;
+ }
+
+ // ---------------------------------------------------------------------------
+
+-ULONG SalGraphics::GetFontCodeRanges( sal_uInt32* pCodePairs ) const
+-{
+- return maGraphicsData.GetFontCodeRanges( pCodePairs );
+-}
+-
+-// ---------------------------------------------------------------------------
+-
+-BOOL SalGraphics::GetGlyphBoundRect( long nGlyphIndex, Rectangle& rRect, const OutputDevice* )
++BOOL X11SalGraphics::GetGlyphBoundRect( long nGlyphIndex, Rectangle& rRect )
+ {
+ int nLevel = nGlyphIndex >> GF_FONTSHIFT;
+ if( nLevel >= MAX_FALLBACK )
+ return FALSE;
+
+- ServerFont* pSF = maGraphicsData.mpServerFont[ nLevel ];
++ ServerFont* pSF = mpServerFont[ nLevel ];
+ if( !pSF )
+ return FALSE;
+
+@@ -1972,13 +1355,13 @@ BOOL SalGraphics::GetGlyphBoundRect( lon
+
+ // ---------------------------------------------------------------------------
+
+-BOOL SalGraphics::GetGlyphOutline( long nGlyphIndex, PolyPolygon& rPolyPoly, const OutputDevice* )
++BOOL X11SalGraphics::GetGlyphOutline( long nGlyphIndex, PolyPolygon& rPolyPoly )
+ {
+ int nLevel = nGlyphIndex >> GF_FONTSHIFT;
+ if( nLevel >= MAX_FALLBACK )
+ return FALSE;
+
+- ServerFont* pSF = maGraphicsData.mpServerFont[ nLevel ];
++ ServerFont* pSF = mpServerFont[ nLevel ];
+ if( !pSF )
+ return FALSE;
+
+@@ -1991,29 +1374,13 @@ BOOL SalGraphics::GetGlyphOutline( long
+
+ //--------------------------------------------------------------------------
+
+-SalLayout* SalGraphicsData::GetTextLayout( ImplLayoutArgs& rArgs, int nFallbackLevel )
++SalLayout* X11SalGraphics::GetTextLayout( ImplLayoutArgs& rArgs, int nFallbackLevel )
+ {
+-#if !defined(_USE_PRINT_EXTENSION_)
+- // workaround for printers not handling glyph indexing for non-TT fonts
+- if( m_pPrinterGfx != NULL )
+- {
+- int nFontId = m_pPrinterGfx->GetFontID();
+- if( psp::fonttype::TrueType != psp::PrintFontManager::get().getFontType( nFontId ) )
+- rArgs.mnFlags |= SAL_LAYOUT_DISABLE_GLYPH_PROCESSING;
+- else if( nFallbackLevel > 0 )
+- rArgs.mnFlags &= ~SAL_LAYOUT_DISABLE_GLYPH_PROCESSING;
+- }
+-#endif // !defined(_USE_PRINT_EXTENSION_)
+-
+ GenericSalLayout* pLayout = NULL;
+
+ if( mpServerFont[ nFallbackLevel ]
+ && !(rArgs.mnFlags & SAL_LAYOUT_DISABLE_GLYPH_PROCESSING) )
+- pLayout = m_pPrinterGfx ? new PspServerFontLayout( *m_pPrinterGfx, *mpServerFont[nFallbackLevel] ) : new ServerFontLayout( *mpServerFont[ nFallbackLevel ] );
+-#if !defined(_USE_PRINT_EXTENSION_)
+- else if( m_pPrinterGfx != NULL )
+- pLayout = new PspFontLayout( *m_pPrinterGfx );
+-#endif // !defined(_USE_PRINT_EXTENSION_)
++ pLayout = new ServerFontLayout( *mpServerFont[ nFallbackLevel ] );
+ else if( mXFont[ nFallbackLevel ] )
+ pLayout = new X11FontLayout( *mXFont[ nFallbackLevel ] );
+ else
+@@ -2024,18 +1391,10 @@ SalLayout* SalGraphicsData::GetTextLayou
+
+ //--------------------------------------------------------------------------
+
+-SalLayout* SalGraphics::GetTextLayout( ImplLayoutArgs& rArgs, int nFallbackLevel )
+-{
+- SalLayout* pSalLayout = maGraphicsData.GetTextLayout( rArgs, nFallbackLevel );
+- return pSalLayout;
+-}
+-
+-//--------------------------------------------------------------------------
+-
+-BOOL SalGraphics::CreateFontSubset(
++BOOL X11SalGraphics::CreateFontSubset(
+ const rtl::OUString& rToFile,
+ ImplFontData* pFont,
+- long* pGlyphIDs,
++ sal_Int32* pGlyphIDs,
+ sal_uInt8* pEncoding,
+ sal_Int32* pWidths,
+ int nGlyphs,
+@@ -2049,41 +1408,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;
+- psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
+-
+- psp::PrintFontInfo aFontInfo;
+-
+- if( ! rMgr.getFontInfo( aFont, aFontInfo ) )
+- return FALSE;
+-
+- // fill in font info
+- switch( aFontInfo.m_eType )
+- {
+- case psp::fonttype::TrueType: rInfo.m_nFontType = SAL_FONTSUBSETINFO_TYPE_TRUETYPE;break;
+- case psp::fonttype::Type1: rInfo.m_nFontType = SAL_FONTSUBSETINFO_TYPE_TYPE1;break;
+- default:
+- return FALSE;
+- }
+- rInfo.m_nAscent = aFontInfo.m_nAscend;
+- rInfo.m_nDescent = aFontInfo.m_nDescend;
+- rInfo.m_aPSName = rMgr.getPSName( aFont );
+-
+- int xMin, yMin, xMax, yMax;
+- rMgr.getFontBoundingBox( aFont, xMin, yMin, xMax, yMax );
+-
+- if( ! rMgr.createFontSubset( aFont,
+- rToFile,
+- pGlyphIDs,
+- pEncoding,
+- pWidths,
+- nGlyphs
+- ) )
+- return FALSE;
+-
+- rInfo.m_aFontBBox = Rectangle( Point( xMin, yMin ), Size( xMax-xMin, yMax-yMin ) );
+- rInfo.m_nCapHeight = yMax; // Well ...
+-
+- return TRUE;
++ return PspGraphics::DoCreateFontSubset( rToFile, aFont, pGlyphIDs, pEncoding, pWidths, nGlyphs, rInfo );
+ #else
+ return FALSE;
+ #endif
+@@ -2091,7 +1416,7 @@ BOOL SalGraphics::CreateFontSubset(
+
+ //--------------------------------------------------------------------------
+
+-const void* SalGraphics::GetEmbedFontData( ImplFontData* pFont, const sal_Unicode* pUnicodes, sal_Int32* pWidths, FontSubsetInfo& rInfo, long* pDataLen )
++const void* X11SalGraphics::GetEmbedFontData( ImplFontData* pFont, const sal_Unicode* pUnicodes, sal_Int32* pWidths, FontSubsetInfo& rInfo, long* pDataLen )
+ {
+ #ifndef _USE_PRINT_EXTENSION_
+ // in this context the sysdata member of pFont should
+@@ -2100,61 +1425,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;
+- psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
+-
+- psp::PrintFontInfo aFontInfo;
+- if( ! rMgr.getFontInfo( aFont, aFontInfo ) )
+- return NULL;
+-
+- // fill in font info
+- switch( aFontInfo.m_eType )
+- {
+- case psp::fonttype::TrueType: rInfo.m_nFontType = SAL_FONTSUBSETINFO_TYPE_TRUETYPE;break;
+- case psp::fonttype::Type1: rInfo.m_nFontType = SAL_FONTSUBSETINFO_TYPE_TYPE1;break;
+- default:
+- return NULL;
+- }
+- rInfo.m_nAscent = aFontInfo.m_nAscend;
+- rInfo.m_nDescent = aFontInfo.m_nDescend;
+- rInfo.m_aPSName = rMgr.getPSName( aFont );
+-
+- int xMin, yMin, xMax, yMax;
+- rMgr.getFontBoundingBox( aFont, xMin, yMin, xMax, yMax );
+-
+- psp::CharacterMetric aMetrics[256];
+- sal_Unicode aUnicodes[256];
+- if( aFontInfo.m_aEncoding == RTL_TEXTENCODING_SYMBOL && aFontInfo.m_eType == psp::fonttype::Type1 )
+- {
+- for( int i = 0; i < 256; i++ )
+- aUnicodes[i] = pUnicodes[i] < 0x0100 ? pUnicodes[i] + 0xf000 : pUnicodes[i];
+- pUnicodes = aUnicodes;
+- }
+- if( ! rMgr.getMetrics( aFont, pUnicodes, 256, aMetrics ) )
+- return NULL;
+-
+- OString aSysPath = rMgr.getFontFileSysPath( aFont );
+- struct stat aStat;
+- if( stat( aSysPath.getStr(), &aStat ) )
+- return NULL;
+- int fd = open( aSysPath.getStr(), O_RDONLY );
+- if( fd < 0 )
+- return NULL;
+- void* pFile = mmap( NULL, aStat.st_size, PROT_READ, MAP_SHARED, fd, 0 );
+- close( fd );
+- if( pFile == MAP_FAILED )
+- return NULL;
+-
+- *pDataLen = aStat.st_size;
+-
+- rInfo.m_aFontBBox = Rectangle( Point( xMin, yMin ), Size( xMax-xMin, yMax-yMin ) );
+- rInfo.m_nCapHeight = yMax; // Well ...
+-
+- for( int i = 0; i < 256; i++ )
+-
+- pWidths[i] = (aMetrics[i].width > 0 ? aMetrics[i].width : 0);
+-
+- return pFile;
+-
++ return PspGraphics::DoGetEmbedFontData( aFont, pUnicodes, pWidths, rInfo, pDataLen );
+ #else
+ return NULL;
+ #endif
+@@ -2162,14 +1433,16 @@ const void* SalGraphics::GetEmbedFontDat
+
+ //--------------------------------------------------------------------------
+
+-void SalGraphics::FreeEmbedFontData( const void* pData, long nLen )
++void X11SalGraphics::FreeEmbedFontData( const void* pData, long nLen )
+ {
+- munmap( (char*)pData, nLen );
++#ifndef _USE_PRINT_EXTENSION_
++ PspGraphics::DoFreeEmbedFontData( pData, nLen );
++#endif
+ }
+
+ //--------------------------------------------------------------------------
+
+-const std::map< sal_Unicode, sal_Int32 >* SalGraphics::GetFontEncodingVector( ImplFontData* pFont, const std::map< sal_Unicode, rtl::OString >** pNonEncoded )
++const std::map< sal_Unicode, sal_Int32 >* X11SalGraphics::GetFontEncodingVector( ImplFontData* pFont, const std::map< sal_Unicode, rtl::OString >** pNonEncoded )
+ {
+ #ifndef _USE_PRINT_EXTENSION_
+ // in this context the sysdata member of pFont should
+@@ -2178,17 +1451,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;
+- psp::PrintFontManager& rMgr = psp::PrintFontManager::get();
+-
+- psp::PrintFontInfo aFontInfo;
+- if( ! rMgr.getFontInfo( aFont, aFontInfo ) )
+- {
+- if( pNonEncoded )
+- *pNonEncoded = NULL;
+- return NULL;
+- }
+-
+- return rMgr.getEncodingMap( aFont, pNonEncoded );
++ return PspGraphics::DoGetFontEncodingVector( aFont, pNonEncoded );
+ #else
+ return NULL;
+ #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
+@@ -0,0 +1,1633 @@
++/*************************************************************************
++ *
++ *
++ *
++ *
++ *
++ *
++ *
++ * 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): Juergen Keil
++ * Jan Holesovsky <kendy@artax.karlin.mff.cuni.cz>
++ * Lukas Tinkl <lukas@kde.org>
++ *
++ *
++ ************************************************************************/
++
++#define _SV_SALNATIVEWIDGETS_KDE_CXX
++
++// Hack, but needed because of conflicting types...
++#define Region QtXRegion
++
++#include <qcheckbox.h>
++#include <qcombobox.h>
++#include <qframe.h>
++#include <qlineedit.h>
++#include <qlistview.h>
++#include <qpainter.h>
++#include <qpushbutton.h>
++#include <qradiobutton.h>
++#include <qrangecontrol.h>
++#include <qtabbar.h>
++#include <qtabwidget.h>
++#include <qwidget.h>
++
++#include <kaboutdata.h>
++#include <kapplication.h>
++#include <kcmdlineargs.h>
++#include <kconfig.h>
++#include <kglobal.h>
++#include <kmainwindow.h>
++#include <kmenubar.h>
++#include <kstyle.h>
++
++#undef Region
++
++#include <salunx.h>
++
++#ifndef _SV_SALDATA_HXX
++#include <saldata.hxx>
++#endif
++
++#ifndef _SV_SALDISP_HXX
++#include <saldisp.hxx>
++#endif
++
++#ifndef _SV_SALGDI_HXX
++#include <salgdi.hxx>
++#endif
++
++#ifndef _SV_KDEINT_HXX
++#include <kdeint.hxx>
++#endif
++
++#ifndef _SV_SETTINGS_HXX
++#include <settings.hxx>
++#endif
++
++#include <iostream>
++
++using namespace ::rtl;
++
++/** Cached native widgets.
++
++ A class which caches and paints the native widgets.
++*/
++class WidgetPainter
++{
++ protected:
++ /** Cached push button.
++
++ It is necessary for the QStyle::drawControl(). The buttons are created
++ on demand and they are still hidden (no QWidget::show() is called).
++ */
++ QPushButton *m_pPushButton;
++
++ /** Cached radio button.
++
++ @see m_pPushButton
++ */
++ QRadioButton *m_pRadioButton;
++
++ /** Cached check box.
++
++ @see m_pPushButton
++ */
++ QCheckBox *m_pCheckBox;
++
++ /** Cached combo box.
++
++ @see m_pPushButton
++ */
++ QComboBox *m_pComboBox;
++
++ /** Cached editable combo box.
++
++ Needed, because some styles do not like dynamic changes
++ (QComboBox::setEditable()).
++
++ @see m_pPushButton
++ */
++ QComboBox *m_pEditableComboBox;
++
++ /** Cached line edit box.
++
++ @see m_pPushButton
++ */
++ QLineEdit *m_pLineEdit;
++
++ /** Cached spin box.
++
++ @see m_pPushButton
++ */
++ QSpinWidget *m_pSpinWidget;
++
++ /** Cached spin box'es line edit.
++
++ @see m_pPushButton
++ */
++ QLineEdit *m_pSpinEdit;
++
++ /** Cached tab.
++
++ Left, middle, right tab and a tab which is alone.
++
++ @see m_pPushButton
++ */
++ QTab *m_pTabLeft, *m_pTabMiddle, *m_pTabRight, *m_pTabAlone;
++
++ /** Cached tab bar's parent widget.
++
++ Needed, because the Qt windows style checks for the availability
++ of tab bar's parent. We cannot use m_pTabWidget, because
++ TabWidget::setTabBar() and TabWidget::tabBar() methods are
++ protected.
++
++ @see m_pPushButton, m_pTabWidget
++ */
++ QWidget *m_pTabBarParent;
++
++ /** Cached tab bar widget.
++
++ @see m_pPushButton
++ */
++ QTabBar *m_pTabBar;
++
++ /** Cached tab widget.
++
++ We need it to draw the tab page. It cannot be used to draw the
++ tabs themselves, because the drawing has to be tweaked a little
++ due to not enough information from VCL.
++
++ @see m_pPushButton, m_pTabBarParent
++ */
++ QTabWidget *m_pTabWidget;
++
++ /** Cached list view.
++
++ @see m_pPushButton
++ */
++ QListView *m_pListView;
++
++ /** Cached scroll bar.
++
++ @see m_pPushButton
++ */
++ QScrollBar *m_pScrollBar;
++
++ // TODO other widgets
++
++ public:
++ /** Implicit constructor.
++
++ It creates an empty WidgetPainter with all the cached widgets initialized
++ to NULL. The widgets are created on demand and they are still hidden
++ (no QWidget::show()), because they are needed just as a parameter for
++ QStyle::drawControl().
++
++ @see m_pPushButton
++ */
++ WidgetPainter( void );
++
++ /** Destructor.
++
++ Destruct all the cached widgets.
++ */
++ virtual ~WidgetPainter( void );
++
++ /** Paints the specified widget to the X window.
++
++ Use X calls to bitblt (bit block transfer) the widget qWidget to
++ the window specified by drawable with the style defined by nStyle.
++
++ @param qWidget
++ A pointer to the cached widget.
++
++ @param nState
++ The state of the control (focused, on/off, ...)
++
++ @param aValue
++ The value (true/false, ...)
++
++ @param dpy
++ The display to be used by the X calls.
++
++ @param drawable
++ The destination X window.
++
++ @param gc
++ The graphics context.
++ */
++ BOOL drawStyledWidget( QWidget *pWidget,
++ ControlState nState, const ImplControlValue& aValue,
++ Display *dpy, XLIB_Window drawable, GC gc );
++
++ /** 'Get' method for push button.
++
++ The method returns the cached push button. It is constructed if it
++ does not exist. It has NULL as a parent and it stays hidden, but it
++ is necessary for the drawStyledWidget() method.
++
++ @return valid push button.
++ */
++ QPushButton *pushButton( const Region& rControlRegion, BOOL bDefault );
++
++ /** 'Get' method for radio button.
++
++ @see pushButton()
++ */
++ QRadioButton *radioButton( const Region& rControlRegion );
++
++ /** 'Get' method for check box.
++
++ @see pushButton()
++ */
++ QCheckBox *checkBox( const Region& rControlRegion );
++
++ /** 'Get' method for combo box.
++
++ It returns m_pComboBox or m_pEditableComboBox according to
++ bEditable.
++
++ @see pushButton(), m_pEditableComboBox
++ */
++ QComboBox *comboBox( const Region& rControlRegion, BOOL bEditable );
++
++ /** 'Get' method for line edit box.
++
++ @see pushButton()
++ */
++ QLineEdit *lineEdit( const Region& rControlRegion );
++
++ /** 'Get' method for spin box.
++
++ @see pushButton()
++ */
++ QSpinWidget *spinWidget( const Region& rControlRegion );
++
++ /** 'Get' method for tab bar.
++
++ @see pushButton()
++ */
++ QTabBar *tabBar( const Region& rControlRegion );
++
++ /** 'Get' method for tab widget.
++
++ @see pushButton()
++ */
++ QTabWidget *tabWidget( const Region& rControlRegion );
++
++ /** 'Get' method for list view.
++
++ @see pushButton()
++ */
++ QListView *listView( const Region& rControlRegion );
++
++ /** 'Get' method for scroll bar.
++
++ @see pushButton()
++ */
++ QScrollBar *scrollBar( const Region& rControlRegion,
++ BOOL bHorizontal, const ImplControlValue& aValue );
++
++ // TODO other widgets
++
++ protected:
++ /** Style conversion function.
++
++ Conversion function between VCL ControlState together with
++ ImplControlValue and Qt state flags.
++
++ @param nState
++ State of the widget (default, focused, ...) as defined in Native
++ Widget Framework.
++
++ @param aValue
++ Value held by the widget (on, off, ...)
++ */
++ QStyle::SFlags vclStateValue2SFlags( ControlState nState, const ImplControlValue& aValue );
++
++ public:
++ /** Convert VCL Region to QRect.
++
++ @param rControlRegion
++ The region to convert.
++
++ @return
++ The bounding box of the region.
++ */
++ static QRect region2QRect( const Region& rControlRegion );
++};
++
++WidgetPainter::WidgetPainter( void )
++ : m_pPushButton( NULL ),
++ m_pRadioButton( NULL ),
++ m_pCheckBox( NULL ),
++ m_pComboBox( NULL ),
++ m_pEditableComboBox( NULL ),
++ m_pLineEdit( NULL ),
++ m_pSpinWidget( NULL ),
++ m_pSpinEdit( NULL ),
++ m_pTabLeft( NULL ),
++ m_pTabMiddle( NULL ),
++ m_pTabRight( NULL ),
++ m_pTabAlone( NULL ),
++ m_pTabBarParent( NULL ),
++ m_pTabBar( NULL ),
++ m_pTabWidget( NULL ),
++ m_pListView( NULL ),
++ m_pScrollBar( NULL )
++{
++}
++
++WidgetPainter::~WidgetPainter( void )
++{
++ delete m_pPushButton, m_pPushButton = NULL;
++ delete m_pRadioButton, m_pRadioButton = NULL;
++ delete m_pCheckBox, m_pCheckBox = NULL;
++ delete m_pComboBox, m_pComboBox = NULL;
++ delete m_pEditableComboBox, m_pEditableComboBox = NULL;
++ delete m_pLineEdit, m_pLineEdit = NULL;
++ delete m_pSpinWidget, m_pSpinWidget = NULL;
++ delete m_pSpinEdit, m_pSpinEdit = NULL;
++ delete m_pTabLeft, m_pTabLeft = NULL;
++ delete m_pTabMiddle, m_pTabMiddle = NULL;
++ delete m_pTabRight, m_pTabRight = NULL;
++ delete m_pTabAlone, m_pTabAlone = NULL;
++ delete m_pTabBarParent, m_pTabBarParent = NULL;
++ delete m_pTabBar, m_pTabBar = NULL;
++ delete m_pTabWidget, m_pTabWidget = NULL;
++ delete m_pListView, m_pListView = NULL;
++ delete m_pScrollBar, m_pScrollBar = NULL;
++}
++
++BOOL WidgetPainter::drawStyledWidget( QWidget *pWidget,
++ ControlState nState, const ImplControlValue& aValue,
++ Display *dpy, XLIB_Window drawable, GC gc )
++{
++ if ( !pWidget )
++ return FALSE;
++
++ // Normalize the widget
++ QPoint qWidgetPos( pWidget->pos() );
++ pWidget->move( 0, 0 );
++
++ // Enable/disable the widget
++ pWidget->setEnabled( nState & CTRL_STATE_ENABLED );
++
++ // Create pixmap to paint to
++ QPixmap qPixmap( pWidget->width(), pWidget->height() );
++ QPainter qPainter( &qPixmap );
++ QRect qRect( 0, 0, pWidget->width(), pWidget->height() );
++
++ // Use the background of the widget
++ qPixmap.fill( pWidget, QPoint(0, 0) );
++
++ // Convert the flags
++ QStyle::SFlags nStyle = vclStateValue2SFlags( nState, aValue );
++
++ // Store the widget class
++ const char *pClassName = pWidget->className();
++
++ // Draw the widget to the pixmap
++ if ( strcmp( "QPushButton", pClassName ) == 0 )
++ {
++ // Workaround for the Platinum style.
++ // Platinum takes the state directly from the widget, not from SFlags.
++ QPushButton *pPushButton = static_cast<QPushButton *>( pWidget->qt_cast( "QPushButton" ) );
++ if ( pPushButton )
++ {
++ pPushButton->setDown ( nStyle & QStyle::Style_Down );
++ pPushButton->setOn ( nStyle & QStyle::Style_On );
++ pPushButton->setEnabled( nStyle & QStyle::Style_Enabled );
++ }
++
++ kapp->style().drawControl( QStyle::CE_PushButton,
++ &qPainter, pWidget, qRect,
++ pWidget->colorGroup(), nStyle );
++ }
++ else if ( strcmp( "QRadioButton", pClassName ) == 0 )
++ {
++ // Bitblt from the screen, because the radio buttons are usually not
++ // rectangular, and there could be a bitmap under them
++ GC aTmpGC = XCreateGC( dpy, qPixmap.handle(), 0, NULL );
++ XCopyArea( dpy,
++ drawable, qPixmap.handle(),
++ aTmpGC,
++ qWidgetPos.x(), qWidgetPos.y(), qRect.width(), qRect.height(),
++ 0, 0 );
++ XFreeGC( dpy, aTmpGC );
++
++ kapp->style().drawControl( QStyle::CE_RadioButton,
++ &qPainter, pWidget, qRect,
++ pWidget->colorGroup(), nStyle );
++ }
++ else if ( strcmp( "QCheckBox", pClassName ) == 0 )
++ {
++ kapp->style().drawControl( QStyle::CE_CheckBox,
++ &qPainter, pWidget, qRect,
++ pWidget->colorGroup(), nStyle );
++ }
++ else if ( strcmp( "QComboBox", pClassName ) == 0 )
++ {
++ kapp->style().drawComplexControl( QStyle::CC_ComboBox,
++ &qPainter, pWidget, qRect,
++ pWidget->colorGroup(), nStyle );
++
++ // Editable combo box uses the background of the associated edit box
++ QComboBox *pComboBox = static_cast<QComboBox *>( pWidget->qt_cast( "QComboBox" ) );
++ if ( pComboBox && pComboBox->editable() && pComboBox->lineEdit() )
++ {
++ QColorGroup::ColorRole eColorRole = ( pComboBox->isEnabled() )?
++ QColorGroup::Base: QColorGroup::Background;
++ qPainter.fillRect(
++ kapp->style().querySubControlMetrics( QStyle::CC_ComboBox,
++ pComboBox, QStyle::SC_ComboBoxEditField ),
++ pComboBox->lineEdit()->colorGroup().brush( eColorRole ) );
++ }
++ }
++ else if ( strcmp( "QLineEdit", pClassName ) == 0 )
++ {
++ kapp->style().drawPrimitive( QStyle::PE_PanelLineEdit,
++ &qPainter, qRect,
++ pWidget->colorGroup(), nStyle | QStyle::Style_Sunken );
++ }
++ else if ( strcmp( "QSpinWidget", pClassName ) == 0 )
++ {
++ SpinbuttonValue *pValue = static_cast<SpinbuttonValue *> ( aValue.getOptionalVal() );
++
++ // Is any of the buttons pressed?
++ QStyle::SCFlags eActive = QStyle::SC_None;
++ if ( pValue )
++ {
++ if ( pValue->mnUpperState & CTRL_STATE_PRESSED )
++ eActive = QStyle::SC_SpinWidgetUp;
++ else if ( pValue->mnLowerState & CTRL_STATE_PRESSED )
++ eActive = QStyle::SC_SpinWidgetDown;
++
++ // Update the enable/disable state of the widget
++ if ( ( nState & CTRL_STATE_ENABLED ) ||
++ ( pValue->mnUpperState & CTRL_STATE_ENABLED ) ||
++ ( pValue->mnLowerState & CTRL_STATE_ENABLED ) )
++ {
++ pWidget->setEnabled( true );
++ nStyle |= QStyle::Style_Enabled;
++ }
++ else
++ pWidget->setEnabled( false );
++
++ // Mouse-over effect
++ if ( (pValue->mnUpperState & CTRL_STATE_ROLLOVER) ||
++ (pValue->mnLowerState & CTRL_STATE_ROLLOVER) )
++ nStyle |= QStyle::Style_MouseOver;
++ }
++
++ // Spin widget uses the background of the associated edit box
++ QSpinWidget *pSpinWidget = static_cast<QSpinWidget *>( pWidget->qt_cast( "QSpinWidget" ) );
++ if ( pSpinWidget && pSpinWidget->editWidget() )
++ {
++ QColorGroup::ColorRole eColorRole = ( pSpinWidget->isEnabled() )?
++ QColorGroup::Base: QColorGroup::Background;
++ qPainter.fillRect(
++ kapp->style().querySubControlMetrics( QStyle::CC_SpinWidget,
++ pSpinWidget, QStyle::SC_SpinWidgetEditField ),
++ pSpinWidget->editWidget()->colorGroup().brush( eColorRole ) );
++ }
++
++ // Adjust the frame (needed for Motif Plus style)
++ QRect qFrameRect = kapp->style().querySubControlMetrics( QStyle::CC_SpinWidget,
++ pWidget, QStyle::SC_SpinWidgetFrame );
++
++ kapp->style().drawComplexControl( QStyle::CC_SpinWidget,
++ &qPainter, pWidget, qFrameRect,
++ pWidget->colorGroup(), nStyle,
++ QStyle::SC_All, eActive );
++ }
++ else if ( strcmp( "QTabBar", pClassName ) == 0 )
++ {
++ TabitemValue *pValue = static_cast<TabitemValue *> ( aValue.getOptionalVal() );
++
++ QTab *pTab = NULL;
++ if ( pValue )
++ {
++ if ( ( pValue->isFirst() || pValue->isLeftAligned() ) && ( pValue->isLast() || pValue->isRightAligned() ) )
++ pTab = m_pTabAlone;
++ else if ( pValue->isFirst() || pValue->isLeftAligned() )
++ pTab = m_pTabLeft;
++ else if ( pValue->isLast() || pValue->isRightAligned() )
++ pTab = m_pTabRight;
++ else
++ pTab = m_pTabMiddle;
++ }
++ if ( !pTab )
++ return FALSE;
++
++ pTab->setRect( qRect );
++
++ kapp->style().drawControl( QStyle::CE_TabBarTab,
++ &qPainter, pWidget, qRect,
++ pWidget->colorGroup(), nStyle,
++ QStyleOption( pTab ) );
++ }
++ else if ( strcmp( "QTabWidget", pClassName ) == 0 )
++ {
++ kapp->style().drawPrimitive( QStyle::PE_PanelTabWidget,
++ &qPainter, qRect,
++ pWidget->colorGroup(), nStyle );
++ }
++ else if ( strcmp( "QListView", pClassName ) == 0 )
++ {
++ kapp->style().drawPrimitive( QStyle::PE_Panel,
++ &qPainter, qRect,
++ pWidget->colorGroup(), nStyle | QStyle::Style_Sunken );
++ }
++ else if ( strcmp( "QScrollBar", pClassName ) == 0 )
++ {
++ ScrollbarValue *pValue = static_cast<ScrollbarValue *> ( aValue.getOptionalVal() );
++
++ QStyle::SCFlags eActive = QStyle::SC_None;
++ if ( pValue )
++ {
++ // Workaround for Style_MouseOver-aware themes.
++ // Quite ugly, but I do not know about a better solution.
++ const char *pStyleName = kapp->style().className();
++ if ( strcmp( "QMotifPlusStyle", pStyleName ) == 0 )
++ {
++ nStyle |= QStyle::Style_MouseOver;
++ if ( pValue->mnThumbState & CTRL_STATE_ROLLOVER )
++ eActive = QStyle::SC_ScrollBarSlider;
++ }
++ else if ( strcmp( "QSGIStyle", pStyleName ) == 0 )
++ {
++ nStyle |= QStyle::Style_MouseOver;
++ if ( pValue->mnButton1State & CTRL_STATE_ROLLOVER )
++ eActive = QStyle::SC_ScrollBarSubLine;
++ else if ( pValue->mnButton2State & CTRL_STATE_ROLLOVER )
++ eActive = QStyle::SC_ScrollBarAddLine;
++ else if ( pValue->mnThumbState & CTRL_STATE_ROLLOVER )
++ eActive = QStyle::SC_ScrollBarSlider;
++ }
++
++ if ( pValue->mnButton1State & CTRL_STATE_PRESSED )
++ eActive = QStyle::SC_ScrollBarSubLine;
++ else if ( pValue->mnButton2State & CTRL_STATE_PRESSED )
++ eActive = QStyle::SC_ScrollBarAddLine;
++ else if ( pValue->mnThumbState & CTRL_STATE_PRESSED )
++ eActive = QStyle::SC_ScrollBarSlider;
++ else if ( pValue->mnPage1State & CTRL_STATE_PRESSED )
++ eActive = QStyle::SC_ScrollBarSubPage;
++ else if ( pValue->mnPage2State & CTRL_STATE_PRESSED )
++ eActive = QStyle::SC_ScrollBarAddPage;
++
++ // Update the enable/disable state of the widget
++ if ( ( nState & CTRL_STATE_ENABLED ) ||
++ ( pValue->mnButton1State & CTRL_STATE_ENABLED ) ||
++ ( pValue->mnButton2State & CTRL_STATE_ENABLED ) ||
++ ( pValue->mnThumbState & CTRL_STATE_ENABLED ) ||
++ ( pValue->mnPage1State & CTRL_STATE_ENABLED ) ||
++ ( pValue->mnPage2State & CTRL_STATE_ENABLED ) )
++ {
++ pWidget->setEnabled( true );
++ nStyle |= QStyle::Style_Enabled;
++ }
++ else
++ pWidget->setEnabled( false );
++ }
++
++ // Is it a horizontal scroll bar?
++ QScrollBar *pScrollBar = static_cast<QScrollBar *> ( pWidget->qt_cast( "QScrollBar" ) );
++ QStyle::StyleFlags eHoriz = QStyle::Style_Default;
++ if ( pScrollBar && pScrollBar->orientation() == Qt::Horizontal )
++ eHoriz = QStyle::Style_Horizontal;
++
++ kapp->style().drawComplexControl( QStyle::CC_ScrollBar,
++ &qPainter, pWidget, qRect,
++ pWidget->colorGroup(), nStyle | eHoriz,
++ QStyle::SC_All, eActive );
++ }
++ else
++ return FALSE;
++
++ // Bitblt it to the screen
++ XCopyArea( dpy,
++ qPixmap.handle(), drawable,
++ gc,
++ 0, 0, qRect.width(), qRect.height(),
++ qWidgetPos.x(), qWidgetPos.y() );
++
++ // Restore widget's position
++ pWidget->move( qWidgetPos );
++
++ return TRUE;
++}
++
++QPushButton *WidgetPainter::pushButton( const Region& rControlRegion,
++ BOOL bDefault )
++{
++ if ( !m_pPushButton )
++ m_pPushButton = new QPushButton( NULL, "push_button" );
++
++ QRect qRect = region2QRect( rControlRegion );
++
++ // Workaround for broken styles which do not add
++ // QStyle::PM_ButtonDefaultIndicator to the size of the default button
++ // (for example Keramik)
++ // FIXME Fix Keramik style to be consistant with Qt built-in styles. Aargh!
++ if ( bDefault )
++ {
++ QSize qContentsSize( 50, 50 );
++ m_pPushButton->setDefault( false );
++ QSize qNormalSize = kapp->style().sizeFromContents( QStyle::CT_PushButton,
++ m_pPushButton, qContentsSize );
++ m_pPushButton->setDefault( true );
++ QSize qDefSize = kapp->style().sizeFromContents( QStyle::CT_PushButton,
++ m_pPushButton, qContentsSize );
++
++ int nIndicatorSize = kapp->style().pixelMetric(
++ QStyle::PM_ButtonDefaultIndicator, m_pPushButton );
++ if ( qNormalSize.width() == qDefSize.width() )
++ qRect.addCoords( nIndicatorSize, 0, -nIndicatorSize, 0 );
++ if ( qNormalSize.height() == qDefSize.height() )
++ qRect.addCoords( 0, nIndicatorSize, 0, -nIndicatorSize );
++ }
++
++ m_pPushButton->move( qRect.topLeft() );
++ m_pPushButton->resize( qRect.size() );
++ m_pPushButton->setDefault( bDefault );
++
++ return m_pPushButton;
++}
++
++QRadioButton *WidgetPainter::radioButton( const Region& rControlRegion )
++{
++ if ( !m_pRadioButton )
++ m_pRadioButton = new QRadioButton( NULL, "radio_button" );
++
++ QRect qRect = region2QRect( rControlRegion );
++
++ // Workaround for broken themes which do not honor the given size.
++ // Quite ugly, but I do not know about a better solution.
++ const char *pStyleName = kapp->style().className();
++ if ( strcmp( "KThemeStyle", pStyleName ) == 0 )
++ {
++ QRect qOldRect( qRect );
++
++ qRect.setWidth( kapp->style().pixelMetric(
++ QStyle::PM_ExclusiveIndicatorWidth, m_pRadioButton ) );
++ qRect.setHeight( kapp->style().pixelMetric(
++ QStyle::PM_ExclusiveIndicatorHeight, m_pRadioButton ) );
++
++ qRect.moveBy( ( qOldRect.width() - qRect.width() ) / 2,
++ ( qOldRect.height() - qRect.height() ) / 2 );
++ }
++
++ m_pRadioButton->move( qRect.topLeft() );
++ m_pRadioButton->resize( qRect.size() );
++
++ return m_pRadioButton;
++}
++
++QCheckBox *WidgetPainter::checkBox( const Region& rControlRegion )
++{
++ if ( !m_pCheckBox )
++ m_pCheckBox = new QCheckBox( NULL, "check_box" );
++
++ QRect qRect = region2QRect( rControlRegion );
++
++ // Workaround for broken themes which do not honor the given size.
++ // Quite ugly, but I do not know about a better solution.
++ const char *pStyleName = kapp->style().className();
++ if ( strcmp( "KThemeStyle", pStyleName ) == 0 )
++ {
++ QRect qOldRect( qRect );
++
++ qRect.setWidth( kapp->style().pixelMetric(
++ QStyle::PM_IndicatorWidth, m_pCheckBox ) );
++ qRect.setHeight( kapp->style().pixelMetric(
++ QStyle::PM_IndicatorHeight, m_pCheckBox ) );
++
++ qRect.moveBy( ( qOldRect.width() - qRect.width() ) / 2,
++ ( qOldRect.height() - qRect.height() ) / 2 );
++ }
++
++ m_pCheckBox->move( qRect.topLeft() );
++ m_pCheckBox->resize( qRect.size() );
++
++ return m_pCheckBox;
++}
++
++QComboBox *WidgetPainter::comboBox( const Region& rControlRegion,
++ BOOL bEditable )
++{
++ QComboBox *pComboBox = NULL;
++ if ( bEditable )
++ {
++ if ( !m_pEditableComboBox )
++ m_pEditableComboBox = new QComboBox( true, NULL, "combo_box_edit" );
++ pComboBox = m_pEditableComboBox;
++ }
++ else
++ {
++ if ( !m_pComboBox )
++ m_pComboBox = new QComboBox( false, NULL, "combo_box" );
++ pComboBox = m_pComboBox;
++ }
++
++ QRect qRect = region2QRect( rControlRegion );
++
++ pComboBox->move( qRect.topLeft() );
++ pComboBox->resize( qRect.size() );
++
++ return pComboBox;
++}
++
++QLineEdit *WidgetPainter::lineEdit( const Region& rControlRegion )
++{
++ if ( !m_pLineEdit )
++ m_pLineEdit = new QLineEdit( NULL, "line_edit" );
++
++ QRect qRect = region2QRect( rControlRegion );
++
++ m_pLineEdit->move( qRect.topLeft() );
++ m_pLineEdit->resize( qRect.size() );
++
++ return m_pLineEdit;
++}
++
++QSpinWidget *WidgetPainter::spinWidget( const Region& rControlRegion )
++{
++ if ( !m_pSpinWidget )
++ {
++ m_pSpinWidget = new QSpinWidget( NULL, "spin_widget" );
++
++ m_pSpinEdit = new QLineEdit( NULL, "line_edit_spin" );
++ m_pSpinWidget->setEditWidget( m_pSpinEdit );
++ }
++
++ QRect qRect = region2QRect( rControlRegion );
++
++ m_pSpinWidget->move( qRect.topLeft() );
++ m_pSpinWidget->resize( qRect.size() );
++ m_pSpinWidget->arrange();
++
++ return m_pSpinWidget;
++}
++
++QTabBar *WidgetPainter::tabBar( const Region& rControlRegion )
++{
++ if ( !m_pTabBar )
++ {
++ if ( !m_pTabBarParent )
++ m_pTabBarParent = new QWidget( NULL, "tab_bar_parent" );
++
++ m_pTabBar = new QTabBar( m_pTabBarParent, "tab_bar" );
++
++ m_pTabLeft = new QTab();
++ m_pTabMiddle = new QTab();
++ m_pTabRight = new QTab();
++ m_pTabAlone = new QTab();
++
++ m_pTabBar->addTab( m_pTabLeft );
++ m_pTabBar->addTab( m_pTabMiddle );
++ m_pTabBar->addTab( m_pTabRight );
++ }
++
++ QRect qRect = region2QRect( rControlRegion );
++
++ m_pTabBar->move( qRect.topLeft() );
++ m_pTabBar->resize( qRect.size() );
++
++ m_pTabBar->setShape( QTabBar::RoundedAbove );
++
++ return m_pTabBar;
++}
++
++QTabWidget *WidgetPainter::tabWidget( const Region& rControlRegion )
++{
++ if ( !m_pTabWidget )
++ m_pTabWidget = new QTabWidget( NULL, "tab_widget" );
++
++ QRect qRect = region2QRect( rControlRegion );
++ --qRect.rTop();
++
++ m_pTabWidget->move( qRect.topLeft() );
++ m_pTabWidget->resize( qRect.size() );
++
++ return m_pTabWidget;
++}
++
++QListView *WidgetPainter::listView( const Region& rControlRegion )
++{
++ if ( !m_pListView )
++ m_pListView = new QListView( NULL, "list_view" );
++
++ QRect qRect = region2QRect( rControlRegion );
++
++ m_pListView->move( qRect.topLeft() );
++ m_pListView->resize( qRect.size() );
++
++ return m_pListView;
++}
++
++QScrollBar *WidgetPainter::scrollBar( const Region& rControlRegion,
++ BOOL bHorizontal, const ImplControlValue& aValue )
++{
++ if ( !m_pScrollBar )
++ {
++ m_pScrollBar = new QScrollBar( NULL, "scroll_bar" );
++ m_pScrollBar->setTracking( false );
++ m_pScrollBar->setLineStep( 1 );
++ }
++
++ QRect qRect = region2QRect( rControlRegion );
++
++ m_pScrollBar->move( qRect.topLeft() );
++ m_pScrollBar->resize( qRect.size() );
++ m_pScrollBar->setOrientation( bHorizontal? Qt::Horizontal: Qt::Vertical );
++
++ ScrollbarValue *pValue = static_cast<ScrollbarValue *> ( aValue.getOptionalVal() );
++ if ( pValue )
++ {
++ m_pScrollBar->setMinValue( pValue->mnMin );
++ m_pScrollBar->setMaxValue( pValue->mnMax - pValue->mnVisibleSize );
++ m_pScrollBar->setValue( pValue->mnCur );
++ m_pScrollBar->setPageStep( pValue->mnVisibleSize );
++ }
++
++ return m_pScrollBar;
++}
++
++QStyle::SFlags WidgetPainter::vclStateValue2SFlags( ControlState nState,
++ const ImplControlValue& aValue )
++{
++ QStyle::SFlags nStyle =
++ ( (nState & CTRL_STATE_DEFAULT)? QStyle::Style_ButtonDefault: QStyle::Style_Default ) |
++ ( (nState & CTRL_STATE_ENABLED)? QStyle::Style_Enabled: QStyle::Style_Default ) |
++ ( (nState & CTRL_STATE_FOCUSED)? QStyle::Style_HasFocus: QStyle::Style_Default ) |
++ ( (nState & CTRL_STATE_PRESSED)? QStyle::Style_Down: QStyle::Style_Raised ) |
++ ( (nState & CTRL_STATE_SELECTED)? QStyle::Style_Selected : QStyle::Style_Default ) |
++ ( (nState & CTRL_STATE_ROLLOVER)? QStyle::Style_MouseOver: QStyle::Style_Default );
++ //TODO ( (nState & CTRL_STATE_HIDDEN)? QStyle::Style_: QStyle::Style_Default ) |
++
++ switch ( aValue.getTristateVal() )
++ {
++ case BUTTONVALUE_ON: nStyle |= QStyle::Style_On; break;
++ case BUTTONVALUE_OFF: nStyle |= QStyle::Style_Off; break;
++ case BUTTONVALUE_MIXED: nStyle |= QStyle::Style_NoChange; break;
++ }
++
++ return nStyle;
++}
++
++QRect WidgetPainter::region2QRect( const Region& rControlRegion )
++{
++ Rectangle aRect = rControlRegion.GetBoundRect();
++
++ return QRect( QPoint( aRect.Left(), aRect.Top() ),
++ QPoint( aRect.Right(), aRect.Bottom() ) );
++}
++
++/** Instance of WidgetPainter.
++
++ It is used to paint the widgets requested by NWF.
++*/
++static WidgetPainter widgetPainter;
++
++
++/** Initialization of KDE and local stuff.
++
++ It creates an instance of KApplication.
++*/
++void VCLInitNativeWidgets( void )
++{
++ KAboutData *kAboutData = new KAboutData( "OpenOffice.org",
++ I18N_NOOP( "OpenOffice.org" ),
++ "1.1.0",
++ I18N_NOOP( "OpenOffice.org with KDE Native Widget Support." ),
++ KAboutData::License_LGPL,
++ "(c) 2003, Jan Holesovsky",
++ I18N_NOOP( "OpenOffice.org is an office suite.\n" ),
++ "http://kde.openoffice.org/index.html",
++ "dev@kde.openoffice.org");
++ kAboutData->addAuthor( "Jan Holesovsky",
++ I18N_NOOP( "Original author and maintainer of the KDE NWF." ),
++ "kendy@artax.karlin.mff.cuni.cz",
++ "http://artax.karlin.mff.cuni.cz/~kendy" );
++
++ // We ignore the arguments, KApplication has to be initialized according
++ // to the OOo's display.
++ int argc = 0;
++ char *argv[20] = { "soffice.bin", 0 };
++ KCmdLineArgs::init( argc, argv, kAboutData );
++
++ // Get display
++ SalDisplay *pSalDisplay = GetSalData()->GetCurDisp();
++ if ( !pSalDisplay )
++ ::std::cerr << "Cannot get current display!" << ::std::endl;
++ else
++ new KApplication( pSalDisplay->GetDisplay(), argc, argv, "soffice.bin" );
++}
++
++/** Release KDE and local stuff
++
++ No operation for KDE.
++*/
++void VCLDeinitNativeWidgets( void )
++{
++}
++
++/** What widgets can be drawn the native way.
++
++ @param nType
++ Type of the widget.
++
++ @param nPart
++ Specification of the widget's part if it consists of more than one.
++
++ @return TRUE if the platform supports native drawing of the widget nType
++ defined by nPart.
++*/
++BOOL SalGraphics::IsNativeControlSupported( ControlType nType, ControlPart nPart )
++{
++ return
++ ( (nType == CTRL_PUSHBUTTON) && (nPart == PART_ENTIRE_CONTROL) ) ||
++ ( (nType == CTRL_RADIOBUTTON) && (nPart == PART_ENTIRE_CONTROL) ) ||
++ ( (nType == CTRL_CHECKBOX) && (nPart == PART_ENTIRE_CONTROL) ) ||
++ ( (nType == CTRL_COMBOBOX) && (nPart == PART_ENTIRE_CONTROL || nPart == HAS_BACKGROUND_TEXTURE) ) ||
++ ( (nType == CTRL_EDITBOX) && (nPart == PART_ENTIRE_CONTROL || nPart == HAS_BACKGROUND_TEXTURE) ) ||
++ ( (nType == CTRL_LISTBOX) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_WINDOW) ) ||
++ ( (nType == CTRL_SPINBOX) && (nPart == PART_ENTIRE_CONTROL || nPart == HAS_BACKGROUND_TEXTURE) ) ||
++ // no CTRL_SPINBUTTONS for KDE
++ ( (nType == CTRL_TAB_ITEM) && (nPart == PART_ENTIRE_CONTROL) ) ||
++ ( (nType == CTRL_TAB_PANE) && (nPart == PART_ENTIRE_CONTROL) ) ||
++ // no CTRL_TAB_BODY for KDE
++ ( (nType == CTRL_SCROLLBAR) && (nPart == PART_ENTIRE_CONTROL || nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_DRAW_BACKGROUND_VERT) ) ||
++ ( (nType == CTRL_SCROLLBAR) && (nPart == HAS_THREE_BUTTONS) ); // TODO small optimization is possible here: return this only if the style really has 3 buttons
++ // CTRL_GROUPBOX not supported
++ // CTRL_FIXEDLINE not supported
++ // CTRL_FIXEDBORDER not supported
++}
++
++
++/** Test whether the position is in the native widget.
++
++ If the return value is TRUE, bIsInside contains information whether
++ aPos was or was not inside the native widget specified by the
++ nType/nPart combination.
++*/
++BOOL SalGraphics::HitTestNativeControl( ControlType nType, ControlPart nPart,
++ const Region& rControlRegion, const Point& aPos,
++ SalControlHandle& rControlHandle, BOOL& rIsInside,
++ const OutputDevice* )
++{
++ if ( nType == CTRL_SCROLLBAR )
++ {
++ rIsInside = FALSE;
++
++ BOOL bHorizontal = ( nPart == PART_BUTTON_LEFT || nPart == PART_BUTTON_RIGHT );
++
++ QScrollBar *pScrollBar = widgetPainter.scrollBar( rControlRegion,
++ bHorizontal, ImplControlValue() );
++ QRect qRectSubLine = kapp->style().querySubControlMetrics(
++ QStyle::CC_ScrollBar, pScrollBar, QStyle::SC_ScrollBarSubLine );
++ QRect qRectAddLine = kapp->style().querySubControlMetrics(
++ QStyle::CC_ScrollBar, pScrollBar, QStyle::SC_ScrollBarAddLine );
++
++ // There are 2 buttons on the right/bottom side of the scrollbar
++ BOOL bTwoSubButtons = FALSE;
++
++ // It is a Platinum style scroll bar
++ BOOL bPlatinumStyle = FALSE;
++
++ // Workaround for Platinum and 3 button style scroll bars.
++ // It makes the right/down button bigger.
++ if ( bHorizontal )
++ {
++ qRectAddLine.setLeft( kapp->style().querySubControlMetrics(
++ QStyle::CC_ScrollBar, pScrollBar,
++ QStyle::SC_ScrollBarAddPage ).right() + 1 );
++ if ( qRectAddLine.width() > qRectSubLine.width() )
++ bTwoSubButtons = TRUE;
++ if ( qRectSubLine.left() > kapp->style().querySubControlMetrics( QStyle::CC_ScrollBar, pScrollBar, QStyle::SC_ScrollBarSubPage ).left() )
++ bPlatinumStyle = TRUE;
++ }
++ else
++ {
++ qRectAddLine.setTop( kapp->style().querySubControlMetrics(
++ QStyle::CC_ScrollBar, pScrollBar,
++ QStyle::SC_ScrollBarAddPage ).bottom() + 1 );
++ if ( qRectAddLine.height() > qRectSubLine.height() )
++ bTwoSubButtons = TRUE;
++ if ( qRectSubLine.top() > kapp->style().querySubControlMetrics( QStyle::CC_ScrollBar, pScrollBar, QStyle::SC_ScrollBarSubPage ).top() )
++ bPlatinumStyle = TRUE;
++ }
++
++ switch ( nPart )
++ {
++ case PART_BUTTON_LEFT:
++ if ( !bPlatinumStyle && qRectSubLine.contains( aPos.getX(), aPos.getY() ) )
++ rIsInside = TRUE;
++ else if ( bTwoSubButtons )
++ {
++ qRectAddLine.setWidth( qRectAddLine.width() / 2 );
++ rIsInside = qRectAddLine.contains( aPos.getX(), aPos.getY() );
++ }
++ break;
++
++ case PART_BUTTON_UP:
++ if ( !bPlatinumStyle && qRectSubLine.contains( aPos.getX(), aPos.getY() ) )
++ rIsInside = TRUE;
++ else if ( bTwoSubButtons )
++ {
++ qRectAddLine.setHeight( qRectAddLine.height() / 2 );
++ rIsInside = qRectAddLine.contains( aPos.getX(), aPos.getY() );
++ }
++ break;
++
++ case PART_BUTTON_RIGHT:
++ if ( bTwoSubButtons )
++ qRectAddLine.setLeft( qRectAddLine.left() + qRectAddLine.width() / 2 );
++
++ rIsInside = qRectAddLine.contains( aPos.getX(), aPos.getY() );
++ break;
++
++ case PART_BUTTON_DOWN:
++ if ( bTwoSubButtons )
++ qRectAddLine.setTop( qRectAddLine.top() + qRectAddLine.height() / 2 );
++
++ rIsInside = qRectAddLine.contains( aPos.getX(), aPos.getY() );
++ break;
++ }
++
++ return TRUE;
++ }
++
++ return FALSE;
++}
++
++
++/** Draw the requested control described by nPart/nState.
++
++ @param rControlRegion
++ The bounding region of the complete control in VCL frame coordinates.
++
++ @param aValue
++ An optional value (tristate/numerical/string).
++
++ @param rControlHandle
++ Carries platform dependent data and is maintained by the SalFrame implementation.
++
++ @param aCaption
++ A caption or title string (like button text etc.)
++*/
++BOOL SalGraphics::DrawNativeControl( ControlType nType, ControlPart nPart,
++ const Region& rControlRegion, ControlState nState,
++ const ImplControlValue& aValue, SalControlHandle& rControlHandle,
++ OUString aCaption, const OutputDevice* )
++{
++ BOOL bReturn = FALSE;
++
++ Display *dpy = maGraphicsData.GetXDisplay();
++ XLIB_Window drawable = maGraphicsData.GetDrawable();
++ GC gc = maGraphicsData.SelectFont(); // GC with current clipping region set
++
++ if ( (nType == CTRL_PUSHBUTTON) && (nPart == PART_ENTIRE_CONTROL) )
++ {
++ bReturn = widgetPainter.drawStyledWidget(
++ widgetPainter.pushButton( rControlRegion, (nState & CTRL_STATE_DEFAULT) ),
++ nState, aValue,
++ dpy, drawable, gc );
++ }
++ else if ( (nType == CTRL_RADIOBUTTON) && (nPart == PART_ENTIRE_CONTROL) )
++ {
++ bReturn = widgetPainter.drawStyledWidget(
++ widgetPainter.radioButton( rControlRegion ),
++ nState, aValue,
++ dpy, drawable, gc );
++ }
++ else if ( (nType == CTRL_CHECKBOX) && (nPart == PART_ENTIRE_CONTROL) )
++ {
++ bReturn = widgetPainter.drawStyledWidget(
++ widgetPainter.checkBox( rControlRegion ),
++ nState, aValue,
++ dpy, drawable, gc );
++ }
++ else if ( (nType == CTRL_COMBOBOX) && (nPart == PART_ENTIRE_CONTROL) )
++ {
++ bReturn = widgetPainter.drawStyledWidget(
++ widgetPainter.comboBox( rControlRegion, TRUE ),
++ nState, aValue,
++ dpy, drawable, gc );
++ }
++ else if ( (nType == CTRL_EDITBOX) && (nPart == PART_ENTIRE_CONTROL) )
++ {
++ bReturn = widgetPainter.drawStyledWidget(
++ widgetPainter.lineEdit( rControlRegion ),
++ nState, aValue,
++ dpy, drawable, gc );
++ }
++ else if ( (nType == CTRL_LISTBOX) && (nPart == PART_ENTIRE_CONTROL) )
++ {
++ bReturn = widgetPainter.drawStyledWidget(
++ widgetPainter.comboBox( rControlRegion, FALSE ),
++ nState, aValue,
++ dpy, drawable, gc );
++ }
++ else if ( (nType == CTRL_LISTBOX) && (nPart == PART_WINDOW) )
++ {
++ bReturn = widgetPainter.drawStyledWidget(
++ widgetPainter.listView( rControlRegion ),
++ nState, aValue,
++ dpy, drawable, gc );
++ }
++ else if ( (nType == CTRL_SPINBOX) && (nPart == PART_ENTIRE_CONTROL) )
++ {
++ bReturn = widgetPainter.drawStyledWidget(
++ widgetPainter.spinWidget( rControlRegion ),
++ nState, aValue,
++ dpy, drawable, gc );
++ }
++ else if ( (nType==CTRL_TAB_ITEM) && (nPart == PART_ENTIRE_CONTROL) )
++ {
++ bReturn = widgetPainter.drawStyledWidget(
++ widgetPainter.tabBar( rControlRegion ),
++ nState, aValue,
++ dpy, drawable, gc );
++ }
++ else if ( (nType==CTRL_TAB_PANE) && (nPart == PART_ENTIRE_CONTROL) )
++ {
++ bReturn = widgetPainter.drawStyledWidget(
++ widgetPainter.tabWidget( rControlRegion ),
++ nState, aValue,
++ dpy, drawable, gc );
++ }
++ else if ( (nType == CTRL_SCROLLBAR) && (nPart == PART_DRAW_BACKGROUND_HORZ || nPart == PART_DRAW_BACKGROUND_VERT) )
++ {
++ bReturn = widgetPainter.drawStyledWidget(
++ widgetPainter.scrollBar( rControlRegion, nPart == PART_DRAW_BACKGROUND_HORZ, aValue ),
++ nState, aValue,
++ dpy, drawable, gc );
++ }
++
++ return bReturn;
++}
++
++
++/** Draw text on the widget.
++
++ OPTIONAL. Draws the requested text for the control described by nPart/nState.
++ Used if text is not drawn by DrawNativeControl().
++
++ @param rControlRegion
++ The bounding region of the complete control in VCL frame coordinates.
++
++ @param aValue
++ An optional value (tristate/numerical/string)
++
++ @param rControlHandle
++ Carries platform dependent data and is maintained by the SalFrame implementation.
++
++ @param aCaption
++ A caption or title string (like button text etc.)
++*/
++BOOL SalGraphics::DrawNativeControlText( ControlType nType, ControlPart nPart,
++ const Region& rControlRegion, ControlState nState,
++ const ImplControlValue& aValue, SalControlHandle& rControlHandle,
++ OUString aCaption, const OutputDevice* )
++{
++ return FALSE;
++}
++
++/** Check if the bounding regions match.
++
++ If the return value is TRUE, rNativeBoundingRegion
++ contains the true bounding region covered by the control
++ including any adornment, while rNativeContentRegion contains the area
++ within the control that can be safely drawn into without drawing over
++ the borders of the control.
++
++ @param rControlRegion
++ The bounding region of the control in VCL frame coordinates.
++
++ @param aValue
++ An optional value (tristate/numerical/string)
++
++ @param rControlHandle
++ Carries platform dependent data and is maintained by the SalFrame implementation.
++
++ @param aCaption
++ A caption or title string (like button text etc.)
++*/
++BOOL SalGraphics::GetNativeControlRegion( ControlType nType, ControlPart nPart,
++ const Region& rControlRegion, ControlState nState,
++ const ImplControlValue& aValue, SalControlHandle& rControlHandle,
++ OUString aCaption,
++ Region &rNativeBoundingRegion, Region &rNativeContentRegion,
++ const OutputDevice* )
++{
++ BOOL bReturn = FALSE;
++ QRect qBoundingRect = WidgetPainter::region2QRect( rControlRegion );
++ QRect qRect;
++
++ QWidget *pWidget = NULL;
++ switch ( nType )
++ {
++ // Metrics of the push button
++ case CTRL_PUSHBUTTON:
++ pWidget = widgetPainter.pushButton( rControlRegion, ( nState & CTRL_STATE_DEFAULT ) );
++
++ switch ( nPart )
++ {
++ case PART_ENTIRE_CONTROL:
++ qRect = qBoundingRect;
++
++ if ( nState & CTRL_STATE_DEFAULT )
++ {
++ int nIndicatorSize = kapp->style().pixelMetric(
++ QStyle::PM_ButtonDefaultIndicator, pWidget );
++ qBoundingRect.addCoords( -nIndicatorSize, -nIndicatorSize,
++ nIndicatorSize, nIndicatorSize );
++ bReturn = TRUE;
++ }
++ break;
++ }
++ break;
++
++ // Metrics of the combo box
++ case CTRL_COMBOBOX:
++ case CTRL_LISTBOX:
++ pWidget = widgetPainter.comboBox( rControlRegion, ( nType == CTRL_COMBOBOX ) );
++ switch ( nPart )
++ {
++ case PART_BUTTON_DOWN:
++ qRect = kapp->style().querySubControlMetrics(
++ QStyle::CC_ComboBox, pWidget, QStyle::SC_ComboBoxArrow );
++ qRect.setLeft( kapp->style().querySubControlMetrics(
++ QStyle::CC_ComboBox, pWidget,
++ QStyle::SC_ComboBoxEditField ).right() + 1 );
++ bReturn = TRUE;
++ break;
++
++ case PART_SUB_EDIT:
++ qRect = kapp->style().querySubControlMetrics(
++ QStyle::CC_ComboBox, pWidget, QStyle::SC_ComboBoxEditField );
++ bReturn = TRUE;
++ break;
++ }
++ break;
++
++ // Metrics of the spin box
++ case CTRL_SPINBOX:
++ pWidget = widgetPainter.spinWidget( rControlRegion );
++ switch ( nPart )
++ {
++ case PART_BUTTON_UP:
++ qRect = kapp->style().querySubControlMetrics(
++ QStyle::CC_SpinWidget, pWidget, QStyle::SC_SpinWidgetUp );
++ bReturn = TRUE;
++ break;
++
++ case PART_BUTTON_DOWN:
++ qRect = kapp->style().querySubControlMetrics(
++ QStyle::CC_SpinWidget, pWidget, QStyle::SC_SpinWidgetDown );
++ bReturn = TRUE;
++ break;
++ }
++ break;
++
++ // Metrics of the scroll bar
++ case CTRL_SCROLLBAR:
++ pWidget = widgetPainter.scrollBar( rControlRegion,
++ ( nPart == PART_BUTTON_LEFT || nPart == PART_BUTTON_RIGHT ),
++ ImplControlValue() );
++ switch ( nPart )
++ {
++ case PART_BUTTON_LEFT:
++ case PART_BUTTON_UP:
++ qRect = kapp->style().querySubControlMetrics(
++ QStyle::CC_ScrollBar, pWidget, QStyle::SC_ScrollBarSubLine );
++
++ // Workaround for Platinum style scroll bars. It makes the
++ // left/up button invisible.
++ if ( nPart == PART_BUTTON_LEFT )
++ {
++ if ( qRect.left() > kapp->style().querySubControlMetrics(
++ QStyle::CC_ScrollBar, pWidget,
++ QStyle::SC_ScrollBarSubPage ).left() )
++ {
++ qRect.setLeft( 0 );
++ qRect.setRight( 0 );
++ }
++ }
++ else
++ {
++ if ( qRect.top() > kapp->style().querySubControlMetrics(
++ QStyle::CC_ScrollBar, pWidget,
++ QStyle::SC_ScrollBarSubPage ).top() )
++ {
++ qRect.setTop( 0 );
++ qRect.setBottom( 0 );
++ }
++ }
++
++ bReturn = TRUE;
++ break;
++
++ case PART_BUTTON_RIGHT:
++ case PART_BUTTON_DOWN:
++ qRect = kapp->style().querySubControlMetrics(
++ QStyle::CC_ScrollBar, pWidget, QStyle::SC_ScrollBarAddLine );
++
++ // Workaround for Platinum and 3 button style scroll bars.
++ // It makes the right/down button bigger.
++ if ( nPart == PART_BUTTON_RIGHT )
++ qRect.setLeft( kapp->style().querySubControlMetrics(
++ QStyle::CC_ScrollBar, pWidget,
++ QStyle::SC_ScrollBarAddPage ).right() + 1 );
++ else
++ qRect.setTop( kapp->style().querySubControlMetrics(
++ QStyle::CC_ScrollBar, pWidget,
++ QStyle::SC_ScrollBarAddPage ).bottom() + 1 );
++
++ bReturn = TRUE;
++ break;
++ }
++ }
++
++ // Fill rNativeBoundingRegion and rNativeContentRegion
++ if ( bReturn )
++ {
++ // Bounding region
++ Point aBPoint( qBoundingRect.x(), qBoundingRect.y() );
++ Size aBSize( qBoundingRect.width(), qBoundingRect.height() );
++ rNativeBoundingRegion = Region( Rectangle( aBPoint, aBSize ) );
++
++ // Region of the content
++ Point aPoint( qRect.x(), qRect.y() );
++ Size aSize( qRect.width(), qRect.height() );
++ rNativeContentRegion = Region( Rectangle( aPoint, aSize ) );
++ }
++
++ return bReturn;
++}
++
++/** Constructor.
++*/
++SalControlHandleData::SalControlHandleData( void )
++{
++}
++
++/** Destructor.
++*/
++SalControlHandleData::~SalControlHandleData( void )
++{
++}
++
++// -----------------------------------------------------------------------
++// KDEIntegrator implementation
++// -----------------------------------------------------------------------
++
++/** Constructor of the KDE integrator.
++*/
++KDEIntegrator::KDEIntegrator( SalFrame* pFrame ) :
++ DtIntegrator( pFrame )
++{
++ meType = DtKDE;
++}
++
++/** Destructor of the KDE integrator.
++*/
++KDEIntegrator::~KDEIntegrator()
++{
++}
++
++/** Helper function to convert colors.
++*/
++Color toColor( const QColor &rColor )
++{
++ return Color( rColor.red(), rColor.green(), rColor.blue() );
++}
++
++/** Helper function to read color from KConfig configuration repository.
++*/
++Color readColor( KConfig *pConfig, const char *pKey )
++{
++ return toColor( pConfig->readColorEntry( pKey ) );
++}
++
++/** Helper function to add information to Font from QFont.
++*/
++void modifyFont( Font &rFont, const QFont &rQFont )
++{
++ QFontInfo qFontInfo( rQFont );
++
++ rFont.SetName( String( qFontInfo.family().utf8(), RTL_TEXTENCODING_UTF8 ) );
++
++ // Do not set the height, it does not look good
++ // rFont.SetHeight( qFontInfo.pointSize() );
++
++ rFont.SetItalic( qFontInfo.italic()? ITALIC_NORMAL: ITALIC_NONE );
++
++ FontWeight eWeight = WEIGHT_DONTKNOW;
++ int nWeight = qFontInfo.weight();
++ if ( nWeight <= QFont::Light )
++ eWeight = WEIGHT_LIGHT;
++ else if ( nWeight <= QFont::Normal )
++ eWeight = WEIGHT_NORMAL;
++ else if ( nWeight <= QFont::DemiBold )
++ eWeight = WEIGHT_SEMIBOLD;
++ else if ( nWeight <= QFont::Bold )
++ eWeight = WEIGHT_BOLD;
++ else
++ eWeight = WEIGHT_BLACK;
++ rFont.SetWeight( eWeight );
++}
++
++/** Implementation of KDE integration's main method.
++*/
++void KDEIntegrator::GetSystemLook( AllSettings& rSettings )
++{
++ StyleSettings aStyleSettings( rSettings.GetStyleSettings() );
++
++ // WM settings
++ KConfig *pConfig = KGlobal::config();
++ if ( pConfig )
++ {
++ pConfig->setGroup( "WM" );
++ const char *pKey;
++
++ pKey = "activeBackground";
++ if ( pConfig->hasKey( pKey ) )
++ aStyleSettings.SetActiveColor( readColor( pConfig, pKey ) );
++
++ pKey = "activeBlend";
++ if ( pConfig->hasKey( pKey ) )
++ aStyleSettings.SetActiveColor2( readColor( pConfig, pKey ) );
++
++ pKey = "inactiveBackground";
++ if ( pConfig->hasKey( pKey ) )
++ aStyleSettings.SetDeactiveColor( readColor( pConfig, pKey ) );
++
++ pKey = "inactiveBlend";
++ if ( pConfig->hasKey( pKey ) )
++ aStyleSettings.SetDeactiveColor2( readColor( pConfig, pKey ) );
++
++ pKey = "inactiveForeground";
++ if ( pConfig->hasKey( pKey ) )
++ aStyleSettings.SetDeactiveTextColor( readColor( pConfig, pKey ) );
++
++ pKey = "activeForeground";
++ if ( pConfig->hasKey( pKey ) )
++ aStyleSettings.SetActiveTextColor( readColor( pConfig, pKey ) );
++
++ pKey = "titleFont";
++ if ( pConfig->hasKey( pKey ) )
++ {
++ Font aFont= aStyleSettings.GetTitleFont();
++ modifyFont( aFont, pConfig->readFontEntry( pKey ) );
++ aStyleSettings.SetTitleFont( aFont );
++ }
++ }
++
++ // General settings
++ QColorGroup qColorGroup = kapp->palette().active();
++
++ // Foreground
++ Color aFore = toColor( qColorGroup.foreground() );
++ aStyleSettings.SetRadioCheckTextColor( aFore );
++ aStyleSettings.SetLabelTextColor( aFore );
++ aStyleSettings.SetInfoTextColor( aFore );
++ aStyleSettings.SetDialogTextColor( aFore );
++ aStyleSettings.SetGroupTextColor( aFore );
++
++ // Input boxes, list boxes
++ aStyleSettings.SetFieldColor( toColor( qColorGroup.base() ) );
++ aStyleSettings.SetFieldTextColor( toColor( qColorGroup.text() ) );
++
++ // Buttons
++ aStyleSettings.SetButtonTextColor( toColor( qColorGroup.buttonText() ) );
++
++ // Disable color
++ aStyleSettings.SetDisableColor( toColor( qColorGroup.mid() ) );
++
++ // Background
++ Color aBack = toColor( qColorGroup.background() );
++ aStyleSettings.Set3DColors( aBack );
++ aStyleSettings.SetFaceColor( aBack );
++ aStyleSettings.SetDialogColor( aBack );
++ if( aBack == COL_LIGHTGRAY )
++ aStyleSettings.SetCheckedColor( Color( 0xCC, 0xCC, 0xCC ) );
++ else
++ {
++ Color aColor2 = aStyleSettings.GetLightColor();
++ aStyleSettings.
++ SetCheckedColor( Color( (BYTE)(((USHORT)aBack.GetRed()+(USHORT)aColor2.GetRed())/2),
++ (BYTE)(((USHORT)aBack.GetGreen()+(USHORT)aColor2.GetGreen())/2),
++ (BYTE)(((USHORT)aBack.GetBlue()+(USHORT)aColor2.GetBlue())/2)
++ ) );
++ }
++
++ // Selection
++ aStyleSettings.SetHighlightColor( toColor( qColorGroup.highlight() ) );
++ aStyleSettings.SetHighlightTextColor( toColor( qColorGroup.highlightedText() ) );
++
++ // Font
++ Font aFont= aStyleSettings.GetAppFont();
++ modifyFont( aFont, kapp->font() );
++
++ aStyleSettings.SetAppFont( aFont );
++ aStyleSettings.SetHelpFont( aFont );
++ aStyleSettings.SetMenuFont( aFont ); // will be changed according to pMenuBar
++ aStyleSettings.SetToolFont( aFont ); // will be changed according to pToolBar
++ aStyleSettings.SetLabelFont( aFont );
++ aStyleSettings.SetInfoFont( aFont );
++ aStyleSettings.SetRadioCheckFont( aFont );
++ aStyleSettings.SetPushButtonFont( aFont );
++ aStyleSettings.SetFieldFont( aFont );
++ aStyleSettings.SetIconFont( aFont );
++ aStyleSettings.SetGroupFont( aFont );
++
++ // Menu
++ KMainWindow qMainWindow;
++ qMainWindow.createGUI();
++
++ KMenuBar *pMenuBar = qMainWindow.menuBar();
++ if ( pMenuBar )
++ {
++ // Color
++ QColorGroup qMenuCG = pMenuBar->colorGroup();
++ aStyleSettings.SetMenuTextColor( toColor( qMenuCG.buttonText() ) );
++ aStyleSettings.SetMenuColor( toColor( qMenuCG.button() ) );
++ aStyleSettings.SetMenuBarColor( toColor( qMenuCG.button() ) );
++ aStyleSettings.SetMenuHighlightColor( toColor ( qMenuCG.highlight() ) );
++ aStyleSettings.SetMenuHighlightTextColor( toColor ( qMenuCG.highlightedText() ) );
++
++ // Font
++ Font aFont= aStyleSettings.GetMenuFont();
++ modifyFont( aFont, pMenuBar->font() );
++ aStyleSettings.SetMenuFont( aFont );
++ }
++
++ // Tool bar
++ KToolBar *pToolBar = qMainWindow.toolBar();
++ if ( pToolBar )
++ {
++ Font aFont= aStyleSettings.GetToolFont();
++ modifyFont( aFont, pToolBar->font() );
++ aStyleSettings.SetToolFont( aFont );
++ }
++
++ // Scroll bar size
++ aStyleSettings.SetScrollBarSize( kapp->style().pixelMetric( QStyle::PM_ScrollBarExtent ) );
++
++ rSettings.SetStyleSettings( aStyleSettings );
++}
++
++/* 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
+@@ -59,8 +59,6 @@
+ *
+ ************************************************************************/
+
+-#define _SV_SALOGL_CXX
+-
+ #include <salunx.h>
+
+ #ifndef _SV_SALDATA_HXX
+@@ -71,18 +69,20 @@
+ #include <saldisp.hxx>
+ #endif
+
+-#ifndef _SV_SALOGL_HXX
+-#include <salogl.hxx>
++#ifndef _SV_SALOGL_H
++#include <salogl.h>
+ #endif
+
+-#ifndef _SV_SALGDI_HXX
+-#include <salgdi.hxx>
++#ifndef _SV_SALGDI_H
++#include <salgdi.h>
+ #endif
+
+ #include <stdlib.h>
+ #include <stdio.h>
+ #include <string.h>
+
++using namespace rtl;
++
+ // ------------
+ // - Lib-Name -
+ // ------------
+@@ -97,55 +97,53 @@
+ // - Macros -
+ // ----------
+
+-// NetBSD has neither RTLD_GLOBAL nor RTLD_NOW
+-#if defined NETBSD
+-#define DLOPEN_MODE 0
+-#else
+-#define DLOPEN_MODE (RTLD_NOW | RTLD_GLOBAL)
+-#endif
+-
+-
+ // -----------------
+ // - Statics init. -
+ // -----------------
+
+ // Members
+-GLXContext SalOpenGL::maGLXContext = 0;
+-Display* SalOpenGL::mpDisplay = 0;
+-XVisualInfo* SalOpenGL::mpVisualInfo = 0;
+-BOOL SalOpenGL::mbHaveGLVisual = FALSE;
+-
+-void * SalOpenGL::mpGLLib = 0;
+-ULONG SalOpenGL::mnOGLState = OGL_STATE_UNLOADED;
+-
+-GLXContext (*SalOpenGL::pCreateContext)( Display *, XVisualInfo *, GLXContext, Bool ) = 0;
+-void (*SalOpenGL::pDestroyContext)( Display *, GLXContext ) = 0;
+-GLXContext (*SalOpenGL::pGetCurrentContext)( ) = 0;
+-Bool (*SalOpenGL::pMakeCurrent)( Display *, GLXDrawable, GLXContext ) = 0;
+-void (*SalOpenGL::pSwapBuffers)( Display*, GLXDrawable ) = 0;
+-int (*SalOpenGL::pGetConfig)( Display*, XVisualInfo*, int, int* ) = 0;
+-void (*SalOpenGL::pFlush)() = 0;
++GLXContext X11SalOpenGL::maGLXContext = 0;
++Display* X11SalOpenGL::mpDisplay = 0;
++XVisualInfo* X11SalOpenGL::mpVisualInfo = 0;
++BOOL X11SalOpenGL::mbHaveGLVisual = FALSE;
++
++#ifdef MACOSX
++oslModule X11SalOpenGL::mpGLLib = 0;
++#else
++void * X11SalOpenGL::mpGLLib = 0;
++#endif
++
++ULONG X11SalOpenGL::mnOGLState = OGL_STATE_UNLOADED;
++
++GLXContext (*X11SalOpenGL::pCreateContext)( Display *, XVisualInfo *, GLXContext, Bool ) = 0;
++void (*X11SalOpenGL::pDestroyContext)( Display *, GLXContext ) = 0;
++GLXContext (*X11SalOpenGL::pGetCurrentContext)( ) = 0;
++Bool (*X11SalOpenGL::pMakeCurrent)( Display *, GLXDrawable, GLXContext ) = 0;
++void (*X11SalOpenGL::pSwapBuffers)( Display*, GLXDrawable ) = 0;
++int (*X11SalOpenGL::pGetConfig)( Display*, XVisualInfo*, int, int* ) = 0;
++void (*X11SalOpenGL::pFlush)() = 0;
+
+ // -------------
+-// - SalOpenGL -
++// - X11SalOpenGL -
+ // -------------
+
+-SalOpenGL::SalOpenGL( SalGraphics* pGraphics )
++X11SalOpenGL::X11SalOpenGL( SalGraphics* pSGraphics )
+ {
+- mpDisplay = pGraphics->maGraphicsData.GetXDisplay();
+- mpVisualInfo = pGraphics->maGraphicsData.GetDisplay()->GetVisual();
+- maDrawable = pGraphics->maGraphicsData.GetDrawable();
++ X11SalGraphics* pGraphics = static_cast<X11SalGraphics*>(pSGraphics);
++ mpDisplay = pGraphics->GetXDisplay();
++ mpVisualInfo = pGraphics->GetDisplay()->GetVisual();
++ maDrawable = pGraphics->GetDrawable();
+ }
+
+ // ------------------------------------------------------------------------
+
+-SalOpenGL::~SalOpenGL()
++X11SalOpenGL::~X11SalOpenGL()
+ {
+ }
+
+ // ------------------------------------------------------------------------
+
+-BOOL SalOpenGL::Create()
++bool X11SalOpenGL::IsValid()
+ {
+ if( OGL_STATE_UNLOADED == mnOGLState )
+ {
+@@ -205,7 +203,7 @@ BOOL SalOpenGL::Create()
+ GLX_DOUBLEBUFFER, &nDoubleBuffer );
+ if( nHaveGL && ! nDoubleBuffer )
+ {
+- SalDisplay* pSalDisplay = GetSalData()->GetDefDisp();
++ SalDisplay* pSalDisplay = GetSalData()->GetDisplay();
+ BOOL bPreviousState =
+ pSalDisplay->GetXLib()->GetIgnoreXErrors();
+ pSalDisplay->GetXLib()->SetIgnoreXErrors( TRUE );
+@@ -244,36 +242,23 @@ BOOL SalOpenGL::Create()
+
+ // ------------------------------------------------------------------------
+
+-void SalOpenGL::Release()
++void X11SalOpenGL::Release()
+ {
+ ImplFreeLib();
+ }
+
+ // ------------------------------------------------------------------------
+
+-void* SalOpenGL::GetOGLFnc( const String& rFncName )
++void* X11SalOpenGL::GetOGLFnc( const char *pFncName )
+ {
+- if( mpGLLib )
+- {
+- return dlsym( mpGLLib, ByteString( rFncName, RTL_TEXTENCODING_ASCII_US ).GetBuffer() );
+- }
+- return NULL;
+-}
+-
+-void* SalOpenGL::GetOGLFnc( char *pFncName )
+-{
+- if( mpGLLib )
+- {
+- return dlsym( mpGLLib, pFncName );
+- }
+- return NULL;
++ return resolveSymbol( pFncName );
+ }
+
+ // ------------------------------------------------------------------------
+
+-void SalOpenGL::OGLEntry( SalGraphics* pGraphics )
++void X11SalOpenGL::OGLEntry( SalGraphics* pGraphics )
+ {
+- GLXDrawable aDrawable = pGraphics->maGraphicsData.GetDrawable();
++ GLXDrawable aDrawable = static_cast<X11SalGraphics*>(pGraphics)->GetDrawable();
+ if( aDrawable != maDrawable )
+ {
+ maDrawable = aDrawable;
+@@ -283,19 +268,23 @@ void SalOpenGL::OGLEntry( SalGraphics* p
+
+ // ------------------------------------------------------------------------
+
+-void SalOpenGL::OGLExit( SalGraphics* pGraphics )
++void X11SalOpenGL::OGLExit( SalGraphics* pGraphics )
+ {
+ }
+
+ // ------------------------------------------------------------------------
+
+-void SalOpenGL::ImplFreeLib()
++void X11SalOpenGL::ImplFreeLib()
+ {
+ if( mpGLLib )
+ {
+ if( maGLXContext && pDestroyContext )
+ pDestroyContext( mpDisplay, maGLXContext );
+- dlclose( mpGLLib );
++#ifdef MACOSX
++ osl_unloadModule( (oslModule) mpGLLib );
++#else
++ osl_unloadModule( mpGLLib );
++#endif
+
+ mpGLLib = 0;
+ pCreateContext = 0;
+@@ -309,37 +298,55 @@ void SalOpenGL::ImplFreeLib()
+
+ // ------------------------------------------------------------------------
+
+-BOOL SalOpenGL::ImplInit()
++void* X11SalOpenGL::resolveSymbol( const char* pSymbol )
++{
++ void* pSym = NULL;
++ if( mpGLLib )
++ {
++ OUString aSym = OUString::createFromAscii( pSymbol );
++#ifdef MACOSX
++ pSym = osl_getSymbol( (oslModule) mpGLLib, aSym.pData );
++#else
++ pSym = osl_getSymbol( mpGLLib, aSym.pData );
++#endif
++ }
++ return pSym;
++}
++
++
++BOOL X11SalOpenGL::ImplInit()
+ {
+ if( ! mpGLLib )
+ {
+ ByteString sNoGL( getenv( "SAL_NOOPENGL" ) );
+- if( sNoGL.ToLowerAscii() == "true" ) return FALSE;
+- mpGLLib = dlopen( OGL_LIBNAME, DLOPEN_MODE );
++ if( sNoGL.ToLowerAscii() == "true" )
++ return FALSE;
++ OUString aLibName( RTL_CONSTASCII_USTRINGPARAM( OGL_LIBNAME ) );
++ mpGLLib = osl_loadModule( aLibName.pData, SAL_LOADMODULE_NOW );
+ }
+ if( ! mpGLLib )
+ {
+ #if OSL_DEBUG_LEVEL > 1
+- fprintf( stderr, OGL_LIBNAME "could not be opened: %s\n", dlerror() );
++ fprintf( stderr, OGL_LIBNAME "could not be opened\n" );
+ #endif
+ return FALSE;
+ }
+
+ // Internal use
+ pCreateContext = (GLXContext(*)(Display*,XVisualInfo*,GLXContext,Bool ))
+- GetOGLFnc( "glXCreateContext" );
++ resolveSymbol( "glXCreateContext" );
+ pDestroyContext = (void(*)(Display*,GLXContext))
+- GetOGLFnc( "glXDestroyContext" );
++ resolveSymbol( "glXDestroyContext" );
+ pGetCurrentContext = (GLXContext(*)())
+- GetOGLFnc( "glXGetCurrentContext" );
++ resolveSymbol( "glXGetCurrentContext" );
+ pMakeCurrent = (Bool(*)(Display*,GLXDrawable,GLXContext))
+- GetOGLFnc( "glXMakeCurrent" );
++ resolveSymbol( "glXMakeCurrent" );
+ pSwapBuffers=(void(*)(Display*, GLXDrawable))
+- GetOGLFnc( "glXSwapBuffers" );
++ resolveSymbol( "glXSwapBuffers" );
+ pGetConfig = (int(*)(Display*, XVisualInfo*, int, int* ))
+- GetOGLFnc( "glXGetConfig" );
++ resolveSymbol( "glXGetConfig" );
+ pFlush = (void(*)())
+- GetOGLFnc( "glFlush" );
++ resolveSymbol( "glFlush" );
+
+ BOOL bRet = pCreateContext && pDestroyContext && pGetCurrentContext && pMakeCurrent && pSwapBuffers && pGetConfig ? TRUE : FALSE;
+
+@@ -351,14 +358,14 @@ BOOL SalOpenGL::ImplInit()
+ return bRet;
+ }
+
+-void SalOpenGL::StartScene( SalGraphics* pGraphics )
++void X11SalOpenGL::StartScene( SalGraphics* pGraphics )
+ {
+ // flush pending operations which otherwise might be drawn
+ // at the wrong time
+ XSync( mpDisplay, False );
+ }
+
+-void SalOpenGL::StopScene()
++void X11SalOpenGL::StopScene()
+ {
+ if( maDrawable )
+ {
+@@ -367,7 +374,7 @@ void SalOpenGL::StopScene()
+ }
+ }
+
+-void SalOpenGL::MakeVisualWeights( Display* pDisplay,
++void X11SalOpenGL::MakeVisualWeights( Display* pDisplay,
+ XVisualInfo* pInfos,
+ int *pWeights,
+ 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
+@@ -79,14 +79,14 @@
+ #ifndef _SV_JOBSET_H
+ #include <jobset.h>
+ #endif
+-#ifndef _SV_SALINST_HXX
+-#include <salinst.hxx>
++#ifndef _SV_SALDISP_HXX
++#include <saldisp.hxx>
+ #endif
+-#ifndef _SV_SALPRN_HXX
+-#include <salprn.hxx>
++#ifndef _SV_SALINST_H
++#include <salinst.h>
+ #endif
+-#ifndef _SV_SALGDI_HXX
+-#include <salgdi.hxx>
++#ifndef _SV_SALPRN_H
++#include <salprn.h>
+ #endif
+ #ifndef _SV_PRINT_H
+ #include <print.h>
+@@ -94,8 +94,11 @@
+ #ifndef _SV_SALPTYPE_HXX
+ #include <salptype.hxx>
+ #endif
+-#ifndef _SV_SALFRAME_HXX
+-#include <salframe.hxx>
++#ifndef _SV_SALFRAME_H
++#include <salframe.h>
++#endif
++#ifndef _VCL_PSPGRAPHICS_H
++#include <pspgraphics.h>
+ #endif
+ #ifndef _SV_SALDATA_HXX
+ #include <saldata.hxx>
+@@ -211,9 +214,9 @@ static void getPaLib()
+ }
+ }
+
+-inline PtTo10Mu( int nPoints ) { return (int)((((double)nPoints)*35.27777778)+0.5); }
++inline int PtTo10Mu( int nPoints ) { return (int)((((double)nPoints)*35.27777778)+0.5); }
+
+-inline TenMuToPt( int nUnits ) { return (int)((((double)nUnits)/35.27777778)+0.5); }
++inline int TenMuToPt( int nUnits ) { return (int)((((double)nUnits)/35.27777778)+0.5); }
+
+ static struct
+ {
+@@ -433,20 +436,19 @@ static bool createPdf( const String& rTo
+
+ // -----------------------------------------------------------------------
+
+-SalInfoPrinter* SalInstance::CreateInfoPrinter(
+- SalPrinterQueueInfo* pQueueInfo,
+- ImplJobSetup* pJobSetup )
++SalInfoPrinter* X11SalInstance::CreateInfoPrinter( SalPrinterQueueInfo* pQueueInfo,
++ ImplJobSetup* pJobSetup )
+ {
+- maInstData.mbPrinterInit = true;
++ mbPrinterInit = true;
+ // create and initialize SalInfoPrinter
+- SalInfoPrinter* pPrinter = new SalInfoPrinter;
++ PspSalInfoPrinter* pPrinter = new PspSalInfoPrinter;
+
+ if( pJobSetup )
+ {
+ PrinterInfoManager& rManager( PrinterInfoManager::get() );
+ PrinterInfo aInfo( rManager.getPrinterInfo( pQueueInfo->maPrinterName ) );
+- pPrinter->maPrinterData.m_aJobData = aInfo;
+- pPrinter->maPrinterData.m_aPrinterGfx.Init( pPrinter->maPrinterData.m_aJobData );
++ pPrinter->m_aJobData = aInfo;
++ pPrinter->m_aPrinterGfx.Init( pPrinter->m_aJobData );
+
+ if( pJobSetup->mpDriverData )
+ JobData::constructFromStreamBuffer( pJobSetup->mpDriverData, pJobSetup->mnDriverDataLen, aInfo );
+@@ -463,35 +465,35 @@ SalInfoPrinter* SalInstance::CreateInfoP
+
+ // -----------------------------------------------------------------------
+
+-void SalInstance::DestroyInfoPrinter( SalInfoPrinter* pPrinter )
++void X11SalInstance::DestroyInfoPrinter( SalInfoPrinter* pPrinter )
+ {
+ delete pPrinter;
+ }
+
+ // -----------------------------------------------------------------------
+
+-SalPrinter* SalInstance::CreatePrinter( SalInfoPrinter* pInfoPrinter )
++SalPrinter* X11SalInstance::CreatePrinter( SalInfoPrinter* pInfoPrinter )
+ {
+- maInstData.mbPrinterInit = true;
++ mbPrinterInit = true;
+ // create and initialize SalPrinter
+- SalPrinter* pPrinter = new SalPrinter;
+- pPrinter->maPrinterData.m_aJobData = pInfoPrinter->maPrinterData.m_aJobData;
++ PspSalPrinter* pPrinter = new PspSalPrinter;
++ pPrinter->m_aJobData = static_cast<PspSalInfoPrinter*>(pInfoPrinter)->m_aJobData;
+
+ return pPrinter;
+ }
+
+ // -----------------------------------------------------------------------
+
+-void SalInstance::DestroyPrinter( SalPrinter* pPrinter )
++void X11SalInstance::DestroyPrinter( SalPrinter* pPrinter )
+ {
+ delete pPrinter;
+ }
+
+ // -----------------------------------------------------------------------
+
+-void SalInstance::GetPrinterQueueInfo( ImplPrnQueueList* pList )
++void X11SalInstance::GetPrinterQueueInfo( ImplPrnQueueList* pList )
+ {
+- maInstData.mbPrinterInit = true;
++ mbPrinterInit = true;
+ PrinterInfoManager& rManager( PrinterInfoManager::get() );
+ ::std::list< OUString > aPrinters;
+ rManager.listPrinters( aPrinters );
+@@ -524,56 +526,56 @@ void SalInstance::GetPrinterQueueInfo( I
+
+ // -----------------------------------------------------------------------
+
+-void SalInstance::DeletePrinterQueueInfo( SalPrinterQueueInfo* pInfo )
++void X11SalInstance::DeletePrinterQueueInfo( SalPrinterQueueInfo* pInfo )
+ {
+ delete pInfo;
+ }
+
+ // -----------------------------------------------------------------------
+
+-void SalInstance::GetPrinterQueueState( SalPrinterQueueInfo* pInfo )
++void X11SalInstance::GetPrinterQueueState( SalPrinterQueueInfo* pInfo )
+ {
+- maInstData.mbPrinterInit = true;
++ mbPrinterInit = true;
+ }
+
+ // -----------------------------------------------------------------------
+
+-String SalInstance::GetDefaultPrinter()
++String X11SalInstance::GetDefaultPrinter()
+ {
+- maInstData.mbPrinterInit = true;
++ mbPrinterInit = true;
+ PrinterInfoManager& rManager( PrinterInfoManager::get() );
+ return rManager.getDefaultPrinter();
+ }
+
+ // =======================================================================
+
+-SalInfoPrinter::SalInfoPrinter()
++PspSalInfoPrinter::PspSalInfoPrinter()
+ {
+- maPrinterData.m_pGraphics = NULL;
++ m_pGraphics = NULL;
+ m_bPapersInit = false;
+ }
+
+ // -----------------------------------------------------------------------
+
+-SalInfoPrinter::~SalInfoPrinter()
++PspSalInfoPrinter::~PspSalInfoPrinter()
+ {
+- if( maPrinterData.m_pGraphics )
++ if( m_pGraphics )
+ {
+- delete maPrinterData.m_pGraphics;
+- maPrinterData.m_pGraphics = NULL;
++ delete m_pGraphics;
++ m_pGraphics = NULL;
+ }
+ }
+
+ // -----------------------------------------------------------------------
+
+-void SalInfoPrinter::InitPaperFormats( const ImplJobSetup* pSetupData )
++void PspSalInfoPrinter::InitPaperFormats( const ImplJobSetup* pSetupData )
+ {
+ m_aPaperFormats.clear();
+ m_bPapersInit = true;
+
+- if( maPrinterData.m_aJobData.m_pParser )
++ if( m_aJobData.m_pParser )
+ {
+- const PPDKey* pKey = maPrinterData.m_aJobData.m_pParser->getKey( String( RTL_CONSTASCII_USTRINGPARAM( "PageSize" ) ) );
++ const PPDKey* pKey = m_aJobData.m_pParser->getKey( String( RTL_CONSTASCII_USTRINGPARAM( "PageSize" ) ) );
+ if( pKey )
+ {
+ int nValues = pKey->countValues();
+@@ -585,7 +587,7 @@ void SalInfoPrinter::InitPaperFormats( c
+ if( ! aInfo.m_aPaperName.Len() )
+ aInfo.m_aPaperName = pValue->m_aOption;
+ int nWidth = 0, nHeight = 0;
+- maPrinterData.m_aJobData.m_pParser->getPaperDimension( pValue->m_aOption, nWidth, nHeight );
++ m_aJobData.m_pParser->getPaperDimension( pValue->m_aOption, nWidth, nHeight );
+ aInfo.m_nPaperWidth = (unsigned long)((PtTo10Mu( nWidth )+50)/100);
+ aInfo.m_nPaperHeight = (unsigned long)((PtTo10Mu( nHeight )+50)/100);
+ m_aPaperFormats.push_back( aInfo );
+@@ -596,46 +598,44 @@ void SalInfoPrinter::InitPaperFormats( c
+
+ // -----------------------------------------------------------------------
+
+-int SalInfoPrinter::GetLandscapeAngle( const ImplJobSetup* pSetupData )
++int PspSalInfoPrinter::GetLandscapeAngle( const ImplJobSetup* pSetupData )
+ {
+ return 900;
+ }
+
+ // -----------------------------------------------------------------------
+
+-SalGraphics* SalInfoPrinter::GetGraphics()
++SalGraphics* PspSalInfoPrinter::GetGraphics()
+ {
+ // return a valid pointer only once
+ // the reasoning behind this is that we could have different
+ // SalGraphics that can run in multiple threads
+ // (future plans)
+ SalGraphics* pRet = NULL;
+- if( ! maPrinterData.m_pGraphics )
++ if( ! m_pGraphics )
+ {
+- maPrinterData.m_pGraphics = new SalGraphics;
+- maPrinterData.m_pGraphics->maGraphicsData.m_pJobData = &maPrinterData.m_aJobData;
+- maPrinterData.m_pGraphics->maGraphicsData.m_pPrinterGfx = &maPrinterData.m_aPrinterGfx;
+- maPrinterData.m_pGraphics->maGraphicsData.bPrinter_ = TRUE;
+- pRet = maPrinterData.m_pGraphics;
++ m_pGraphics = new PspGraphics( &m_aJobData, &m_aPrinterGfx );
++ m_pGraphics->SetLayout( 0 );
++ pRet = m_pGraphics;
+ }
+ return pRet;
+ }
+
+ // -----------------------------------------------------------------------
+
+-void SalInfoPrinter::ReleaseGraphics( SalGraphics* pGraphics )
++void PspSalInfoPrinter::ReleaseGraphics( SalGraphics* pGraphics )
+ {
+- if( pGraphics == maPrinterData.m_pGraphics )
++ if( pGraphics == m_pGraphics )
+ {
+ delete pGraphics;
+- maPrinterData.m_pGraphics = NULL;
++ m_pGraphics = NULL;
+ }
+ return;
+ }
+
+ // -----------------------------------------------------------------------
+
+-BOOL SalInfoPrinter::Setup( SalFrame* pFrame, ImplJobSetup* pJobSetup )
++BOOL PspSalInfoPrinter::Setup( SalFrame* pFrame, ImplJobSetup* pJobSetup )
+ {
+ if( ! pFrame || ! pJobSetup )
+ return FALSE;
+@@ -679,12 +679,12 @@ BOOL SalInfoPrinter::Setup( SalFrame* pF
+ // data should be merged into the driver data
+ // If pJobSetup->mpDriverData IS NULL, then the driver defaults
+ // should be merged into the independent data
+-BOOL SalInfoPrinter::SetPrinterData( ImplJobSetup* pJobSetup )
++BOOL PspSalInfoPrinter::SetPrinterData( ImplJobSetup* pJobSetup )
+ {
+ if( pJobSetup->mpDriverData )
+ return SetData( ~0, pJobSetup );
+
+- copyJobDataToJobSetup( pJobSetup, maPrinterData.m_aJobData );
++ copyJobDataToJobSetup( pJobSetup, m_aJobData );
+ return TRUE;
+ }
+
+@@ -694,7 +694,7 @@ BOOL SalInfoPrinter::SetPrinterData( Imp
+ // and sets the new independ data in pJobSetup
+ // Only the data must be changed, where the bit
+ // in nGetDataFlags is set
+-BOOL SalInfoPrinter::SetData(
++BOOL PspSalInfoPrinter::SetData(
+ ULONG nSetDataFlags,
+ ImplJobSetup* pJobSetup )
+ {
+@@ -804,7 +804,7 @@ BOOL SalInfoPrinter::SetData(
+ if( nSetDataFlags & SAL_JOBSET_ORIENTATION )
+ aData.m_eOrientation = pJobSetup->meOrientation == ORIENTATION_LANDSCAPE ? orientation::Landscape : orientation::Portrait;
+
+- maPrinterData.m_aJobData = aData;
++ m_aJobData = aData;
+ copyJobDataToJobSetup( pJobSetup, aData );
+ return TRUE;
+ }
+@@ -814,7 +814,7 @@ BOOL SalInfoPrinter::SetData(
+
+ // -----------------------------------------------------------------------
+
+-void SalInfoPrinter::GetPageInfo(
++void PspSalInfoPrinter::GetPageInfo(
+ const ImplJobSetup* pJobSetup,
+ long& rOutWidth, long& rOutHeight,
+ long& rPageOffX, long& rPageOffY,
+@@ -858,7 +858,7 @@ void SalInfoPrinter::GetPageInfo(
+
+ // -----------------------------------------------------------------------
+
+-ULONG SalInfoPrinter::GetPaperBinCount( const ImplJobSetup* pJobSetup )
++ULONG PspSalInfoPrinter::GetPaperBinCount( const ImplJobSetup* pJobSetup )
+ {
+ if( ! pJobSetup )
+ return 0;
+@@ -872,7 +872,7 @@ ULONG SalInfoPrinter::GetPaperBinCount(
+
+ // -----------------------------------------------------------------------
+
+-String SalInfoPrinter::GetPaperBinName( const ImplJobSetup* pJobSetup, ULONG nPaperBin )
++String PspSalInfoPrinter::GetPaperBinName( const ImplJobSetup* pJobSetup, ULONG nPaperBin )
+ {
+ JobData aData;
+ JobData::constructFromStreamBuffer( pJobSetup->mpDriverData, pJobSetup->mnDriverDataLen, aData );
+@@ -896,7 +896,7 @@ String SalInfoPrinter::GetPaperBinName(
+
+ // -----------------------------------------------------------------------
+
+-ULONG SalInfoPrinter::GetCapabilities( const ImplJobSetup* pJobSetup, USHORT nType )
++ULONG PspSalInfoPrinter::GetCapabilities( const ImplJobSetup* pJobSetup, USHORT nType )
+ {
+ switch( nType )
+ {
+@@ -951,13 +951,13 @@ ULONG SalInfoPrinter::GetCapabilities( c
+ * SalPrinter
+ */
+
+-SalPrinter::SalPrinter()
++PspSalPrinter::PspSalPrinter()
+ {
+ }
+
+ // -----------------------------------------------------------------------
+
+-SalPrinter::~SalPrinter()
++PspSalPrinter::~PspSalPrinter()
+ {
+ }
+
+@@ -972,7 +972,7 @@ static String getTmpName()
+ return aSys;
+ }
+
+-BOOL SalPrinter::StartJob(
++BOOL PspSalPrinter::StartJob(
+ const XubString* pFileName,
+ const XubString& rJobName,
+ const XubString& rAppName,
+@@ -981,81 +981,81 @@ BOOL SalPrinter::StartJob(
+ {
+ vcl_sal::PrinterUpdate::jobStarted();
+
+- maPrinterData.m_bFax = false;
+- maPrinterData.m_bPdf = false;
+- maPrinterData.m_aFileName = pFileName ? *pFileName : String();
+- maPrinterData.m_aTmpFile = String();
+- maPrinterData.m_nCopies = nCopies;
++ m_bFax = false;
++ m_bPdf = false;
++ m_aFileName = pFileName ? *pFileName : String();
++ m_aTmpFile = String();
++ m_nCopies = nCopies;
+
+- JobData::constructFromStreamBuffer( pJobSetup->mpDriverData, pJobSetup->mnDriverDataLen, maPrinterData.m_aJobData );
+- if( maPrinterData.m_nCopies > 1 )
++ JobData::constructFromStreamBuffer( pJobSetup->mpDriverData, pJobSetup->mnDriverDataLen, m_aJobData );
++ if( m_nCopies > 1 )
+ // in case user did not do anything (m_nCopies=1)
+ // take the default from jobsetup
+- maPrinterData.m_aJobData.m_nCopies = maPrinterData.m_nCopies;
++ m_aJobData.m_nCopies = m_nCopies;
+
+ // check wether this printer is configured as fax
+ int nMode = 0;
+- const PrinterInfo& rInfo( PrinterInfoManager::get().getPrinterInfo( maPrinterData.m_aJobData.m_aPrinterName ) );
++ const PrinterInfo& rInfo( PrinterInfoManager::get().getPrinterInfo( m_aJobData.m_aPrinterName ) );
+ sal_Int32 nIndex = 0;
+ while( nIndex != -1 )
+ {
+ OUString aToken( rInfo.m_aFeatures.getToken( 0, ',', nIndex ) );
+ if( ! aToken.compareToAscii( "fax", 3 ) )
+ {
+- maPrinterData.m_bFax = true;
+- maPrinterData.m_aTmpFile = getTmpName();
++ m_bFax = true;
++ m_aTmpFile = getTmpName();
+ nMode = S_IRUSR | S_IWUSR;
+
+ ::std::hash_map< ::rtl::OUString, ::rtl::OUString, ::rtl::OUStringHash >::const_iterator it;
+ it = pJobSetup->maValueMap.find( ::rtl::OUString::createFromAscii( "FAX#" ) );
+ if( it != pJobSetup->maValueMap.end() )
+- maPrinterData.m_aFaxNr = it->second;
++ m_aFaxNr = it->second;
+
+ sal_Int32 nPos = 0;
+- maPrinterData.m_bSwallowFaxNo = ! aToken.getToken( 1, '=', nPos ).compareToAscii( "swallow", 7 ) ? true : false;
++ m_bSwallowFaxNo = ! aToken.getToken( 1, '=', nPos ).compareToAscii( "swallow", 7 ) ? true : false;
+
+ break;
+ }
+ if( ! aToken.compareToAscii( "pdf=", 4 ) )
+ {
+- maPrinterData.m_bPdf = true;
+- maPrinterData.m_aTmpFile = getTmpName();
++ m_bPdf = true;
++ m_aTmpFile = getTmpName();
+ nMode = S_IRUSR | S_IWUSR;
+
+- if( ! maPrinterData.m_aFileName.Len() )
++ if( ! m_aFileName.Len() )
+ {
+- maPrinterData.m_aFileName = getPdfDir( rInfo );
+- maPrinterData.m_aFileName.Append( '/' );
+- maPrinterData.m_aFileName.Append( rJobName );
+- maPrinterData.m_aFileName.AppendAscii( ".pdf" );
++ m_aFileName = getPdfDir( rInfo );
++ m_aFileName.Append( '/' );
++ m_aFileName.Append( rJobName );
++ m_aFileName.AppendAscii( ".pdf" );
+ }
+ break;
+ }
+ }
+- maPrinterData.m_aPrinterGfx.Init( maPrinterData.m_aJobData );
+- return maPrinterData.m_aPrintJob.StartJob( maPrinterData.m_aTmpFile.Len() ? maPrinterData.m_aTmpFile : maPrinterData.m_aFileName, nMode, rJobName, rAppName, maPrinterData.m_aJobData, &maPrinterData.m_aPrinterGfx ) ? TRUE : FALSE;
++ m_aPrinterGfx.Init( m_aJobData );
++ return m_aPrintJob.StartJob( m_aTmpFile.Len() ? m_aTmpFile : m_aFileName, nMode, rJobName, rAppName, m_aJobData, &m_aPrinterGfx ) ? TRUE : FALSE;
+ }
+
+ // -----------------------------------------------------------------------
+
+-BOOL SalPrinter::EndJob()
++BOOL PspSalPrinter::EndJob()
+ {
+- BOOL bSuccess = maPrinterData.m_aPrintJob.EndJob();
++ BOOL bSuccess = m_aPrintJob.EndJob();
+
+ if( bSuccess )
+ {
+ // check for fax
+- if( maPrinterData.m_bFax )
++ if( m_bFax )
+ {
+
+- const PrinterInfo& rInfo( PrinterInfoManager::get().getPrinterInfo( maPrinterData.m_aJobData.m_aPrinterName ) );
++ const PrinterInfo& rInfo( PrinterInfoManager::get().getPrinterInfo( m_aJobData.m_aPrinterName ) );
+ // sendAFax removes the file after use
+- bSuccess = sendAFax( maPrinterData.m_aFaxNr, maPrinterData.m_aTmpFile, rInfo.m_aCommand );
++ bSuccess = sendAFax( m_aFaxNr, m_aTmpFile, rInfo.m_aCommand );
+ }
+- else if( maPrinterData.m_bPdf )
++ else if( m_bPdf )
+ {
+- const PrinterInfo& rInfo( PrinterInfoManager::get().getPrinterInfo( maPrinterData.m_aJobData.m_aPrinterName ) );
+- bSuccess = createPdf( maPrinterData.m_aFileName, maPrinterData.m_aTmpFile, rInfo.m_aCommand );
++ const PrinterInfo& rInfo( PrinterInfoManager::get().getPrinterInfo( m_aJobData.m_aPrinterName ) );
++ bSuccess = createPdf( m_aFileName, m_aTmpFile, rInfo.m_aCommand );
+ }
+ }
+ vcl_sal::PrinterUpdate::jobEnded();
+@@ -1064,47 +1064,43 @@ BOOL SalPrinter::EndJob()
+
+ // -----------------------------------------------------------------------
+
+-BOOL SalPrinter::AbortJob()
++BOOL PspSalPrinter::AbortJob()
+ {
+- BOOL bAbort = maPrinterData.m_aPrintJob.AbortJob() ? TRUE : FALSE;
++ BOOL bAbort = m_aPrintJob.AbortJob() ? TRUE : FALSE;
+ vcl_sal::PrinterUpdate::jobEnded();
+ return bAbort;
+ }
+
+ // -----------------------------------------------------------------------
+
+-SalGraphics* SalPrinter::StartPage( ImplJobSetup* pJobSetup, BOOL bNewJobData )
++SalGraphics* PspSalPrinter::StartPage( ImplJobSetup* pJobSetup, BOOL bNewJobData )
+ {
+- JobData::constructFromStreamBuffer( pJobSetup->mpDriverData, pJobSetup->mnDriverDataLen, maPrinterData.m_aJobData );
+- maPrinterData.m_pGraphics = new SalGraphics();
+- maPrinterData.m_pGraphics->maGraphicsData.m_pJobData = &maPrinterData.m_aJobData;
+- maPrinterData.m_pGraphics->maGraphicsData.m_pPrinterGfx = &maPrinterData.m_aPrinterGfx;
+- maPrinterData.m_pGraphics->maGraphicsData.bPrinter_ = true;
+- maPrinterData.m_pGraphics->maGraphicsData.m_pPhoneNr = maPrinterData.m_bFax ? &maPrinterData.m_aFaxNr : NULL;
+- maPrinterData.m_pGraphics->maGraphicsData.m_bSwallowFaxNo = maPrinterData.m_bSwallowFaxNo;
+- if( maPrinterData.m_nCopies > 1 )
++ JobData::constructFromStreamBuffer( pJobSetup->mpDriverData, pJobSetup->mnDriverDataLen, m_aJobData );
++ m_pGraphics = new PspGraphics( &m_aJobData, &m_aPrinterGfx, m_bFax ? &m_aFaxNr : NULL, m_bSwallowFaxNo );
++ m_pGraphics->SetLayout( 0 );
++ if( m_nCopies > 1 )
+ // in case user did not do anything (m_nCopies=1)
+ // take the default from jobsetup
+- maPrinterData.m_aJobData.m_nCopies = maPrinterData.m_nCopies;
++ m_aJobData.m_nCopies = m_nCopies;
+
+- maPrinterData.m_aPrintJob.StartPage( maPrinterData.m_aJobData, bNewJobData ? sal_True : sal_False );
+- maPrinterData.m_aPrinterGfx.Init( maPrinterData.m_aPrintJob );
++ m_aPrintJob.StartPage( m_aJobData, bNewJobData ? sal_True : sal_False );
++ m_aPrinterGfx.Init( m_aPrintJob );
+
+- return maPrinterData.m_pGraphics;
++ return m_pGraphics;
+ }
+
+ // -----------------------------------------------------------------------
+
+-BOOL SalPrinter::EndPage()
++BOOL PspSalPrinter::EndPage()
+ {
+- sal_Bool bResult = maPrinterData.m_aPrintJob.EndPage();
+- maPrinterData.m_aPrinterGfx.Clear();
++ sal_Bool bResult = m_aPrintJob.EndPage();
++ m_aPrinterGfx.Clear();
+ return bResult ? TRUE : FALSE;
+ }
+
+ // -----------------------------------------------------------------------
+
+-ULONG SalPrinter::GetErrorCode()
++ULONG PspSalPrinter::GetErrorCode()
+ {
+ return 0;
+ }
+@@ -1116,39 +1112,16 @@ ULONG SalPrinter::GetErrorCode()
+ Timer* vcl_sal::PrinterUpdate::pPrinterUpdateTimer = NULL;
+ int vcl_sal::PrinterUpdate::nActiveJobs = 0;
+
+-struct PrnFrameCall
+-{
+- SalFrame* pFrame;
+- SalFrameDelData aDelData;
+-
+- PrnFrameCall() : pFrame( NULL ) {}
+-};
+-
+ void vcl_sal::PrinterUpdate::doUpdate()
+ {
+ ::psp::PrinterInfoManager& rManager( ::psp::PrinterInfoManager::get() );
+ if( rManager.checkPrintersChanged() )
+ {
+- std::list< PrnFrameCall > aList;
+- SalFrame* pFrame = GetSalData()->pFirstFrame_;
+- while( pFrame )
+- {
+- aList.push_back( PrnFrameCall() );
+- aList.back().pFrame = pFrame;
+- pFrame->maFrameData.RegisterDeleteData( &aList.back().aDelData );
+- pFrame = pFrame->maFrameData.GetNextFrame();
+- }
+-
+- while( aList.begin() != aList.end() )
+- {
+- if( ! aList.front().aDelData.IsDeleted() )
+- {
+- aList.front().pFrame->maFrameData.Call( SALEVENT_PRINTERCHANGED, NULL );
+- if( !aList.front().aDelData.IsDeleted() )
+- aList.front().pFrame->maFrameData.UnregisterDeleteData( &aList.front().aDelData );
+- }
+- aList.pop_front();
+- }
++ SalDisplay* pDisp = GetSalData()->GetDisplay();
++ const std::list< SalFrame* >& rList = pDisp->getFrames();
++ for( std::list< SalFrame* >::const_iterator it = rList.begin();
++ it != rList.end(); ++it )
++ pDisp->SendInternalEvent( *it, NULL, SALEVENT_PRINTERCHANGED );
+ }
+ }
+
+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
+@@ -59,9 +59,6 @@
+ *
+ ************************************************************************/
+
+-#define _SV_SALVD_CXX
+-
+-// -=-= #includes =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+ #include <salunx.h>
+
+ #ifndef _SV_SALDATA_HXX
+@@ -73,53 +70,53 @@
+ #ifndef _SV_SALINST_HXX
+ #include <salinst.hxx>
+ #endif
+-#ifndef _SV_SALGDI_HXX
+-#include <salgdi.hxx>
++#ifndef _SV_SALGDI_H
++#include <salgdi.h>
+ #endif
+-#ifndef _SV_SALVD_HXX
+-#include <salvd.hxx>
++#ifndef _SV_SALVD_H
++#include <salvd.h>
+ #endif
+
+ // -=-= SalInstance =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-SalVirtualDevice* SalInstance::CreateVirtualDevice( SalGraphics* pGraphics,
+- long nDX, long nDY,
+- USHORT nBitCount )
++SalVirtualDevice* X11SalInstance::CreateVirtualDevice( SalGraphics* pGraphics,
++ long nDX, long nDY,
++ USHORT nBitCount )
+ {
+- SalVirtualDevice *pVDev = new SalVirtualDevice();
++ X11SalVirtualDevice *pVDev = new X11SalVirtualDevice();
+ if( !nBitCount && pGraphics )
+ nBitCount = pGraphics->GetBitCount();
+- if( !pVDev->maVirDevData.Init( pGraphics->maGraphicsData.GetDisplay(),
+- nDX, nDY, nBitCount ) )
++ if( !pVDev->Init( GetSalData()->GetDisplay(), nDX, nDY, nBitCount ) )
+ {
+ delete pVDev;
+ return NULL;
+ }
+
+- pVDev->maVirDevData.InitGraphics( pVDev, pGraphics );
++ pVDev->InitGraphics( pVDev );
+ return pVDev;
+ }
+
+-void SalInstance::DestroyVirtualDevice( SalVirtualDevice* pDevice )
+-{ delete pDevice; }
++void X11SalInstance::DestroyVirtualDevice( SalVirtualDevice* pDevice )
++{
++ delete pDevice;
++}
+
+ // -=-= SalGraphicsData =-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-void SalGraphicsData::Init( SalVirtualDevice *pDevice,
+- SalGraphics *pGraphics )
++void X11SalGraphics::Init( X11SalVirtualDevice *pDevice )
+ {
+- SalDisplay *pDisplay = pDevice->maVirDevData.GetDisplay();
++ SalDisplay *pDisplay = pDevice->GetDisplay();
+
+ int nVisualDepth = pDisplay->GetColormap().GetVisual()->GetDepth();
+- int nDeviceDepth = pDevice->maVirDevData.GetDepth();
++ int nDeviceDepth = pDevice->GetDepth();
+
+ if( nDeviceDepth == nVisualDepth )
+- xColormap_ = &pDisplay->GetColormap();
++ m_pColormap = &pDisplay->GetColormap();
+ else
+ if( nDeviceDepth == 1 )
+- xColormap_ = new SalColormap();
++ m_pDeleteColormap = m_pColormap = new SalColormap();
+
+- hDrawable_ = pDevice->maVirDevData.GetDrawable();
++ hDrawable_ = pDevice->GetDrawable();
+ m_pVDev = pDevice;
+ m_pFrame = NULL;
+
+@@ -133,12 +130,12 @@ void SalGraphicsData::Init( SalVirtualDe
+
+ // -=-= SalVirDevData / SalVirtualDevice -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-BOOL SalVirDevData::Init( SalDisplay *pDisplay,
+- long nDX, long nDY,
++BOOL X11SalVirtualDevice::Init( SalDisplay *pDisplay,
++ long nDX, long nDY,
+ USHORT nBitCount )
+ {
+- pDisplay_ = pDisplay;
+- pGraphics_ = new SalGraphicsLayout();
++ pDisplay_ = pDisplay;
++ pGraphics_ = new X11SalGraphics();
+ pGraphics_->SetLayout( 0 ); // by default no! mirroring for VirtualDevices, can be enabled with EnableRTL()
+ nDX_ = nDX;
+ nDY_ = nDY;
+@@ -149,11 +146,13 @@ BOOL SalVirDevData::Init( SalDisplay *pD
+ nDX_, nDY_,
+ GetDepth() );
+
++ pGraphics_->Init( this );
++
+ return hDrawable_ != None ? TRUE : FALSE;
+ }
+
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-inline SalVirDevData::SalVirDevData()
++X11SalVirtualDevice::X11SalVirtualDevice()
+ {
+ pDisplay_ = (SalDisplay*)ILLEGAL_POINTER;
+ pGraphics_ = NULL;
+@@ -164,78 +163,61 @@ inline SalVirDevData::SalVirDevData()
+ bGraphics_ = FALSE;
+ }
+
+-SalVirtualDevice::SalVirtualDevice() {}
+-
+ // -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-inline SalVirDevData::~SalVirDevData()
++X11SalVirtualDevice::~X11SalVirtualDevice()
+ {
+ if( pGraphics_ )
+- {
+- pGraphics_->maGraphicsData.DeInit();
+ delete pGraphics_;
+- }
+
+ if( GetDrawable() )
+ XFreePixmap( GetXDisplay(), GetDrawable() );
+ }
+
+-SalVirtualDevice::~SalVirtualDevice()
+-{}
+-
+-// -=-= #defines -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-
+-#define _GetDrawable() maVirDevData.GetDrawable()
+-#define _GetDisplay() maVirDevData.GetDisplay()
+-#define _GetXDisplay() maVirDevData.GetXDisplay()
+-#define _GetDepth() maVirDevData.nDepth_
+-
+-// -=-= SalVirtualDevice -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-// -=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
+-SalGraphics* SalVirtualDevice::GetGraphics()
++SalGraphics* X11SalVirtualDevice::GetGraphics()
+ {
+- if( maVirDevData.bGraphics_ )
++ if( bGraphics_ )
+ return NULL;
+
+- if( maVirDevData.pGraphics_ )
+- maVirDevData.bGraphics_ = TRUE;
++ if( pGraphics_ )
++ bGraphics_ = TRUE;
+
+- return maVirDevData.pGraphics_;
++ return pGraphics_;
+ }
+
+-void SalVirtualDevice::ReleaseGraphics( SalGraphics* )
+-{ maVirDevData.bGraphics_ = FALSE; }
++void X11SalVirtualDevice::ReleaseGraphics( SalGraphics* )
++{ bGraphics_ = FALSE; }
+
+-BOOL SalVirtualDevice::SetSize( long nDX, long nDY )
++BOOL X11SalVirtualDevice::SetSize( long nDX, long nDY )
+ {
+ if( !nDX ) nDX = 1;
+ if( !nDY ) nDY = 1;
+
+- Pixmap h = XCreatePixmap( _GetXDisplay(),
+- maVirDevData.pDisplay_->GetDrawable(),
+- nDX, nDY, _GetDepth() );
++ Pixmap h = XCreatePixmap( GetXDisplay(),
++ pDisplay_->GetDrawable(),
++ nDX, nDY, nDepth_ );
+
+ if( !h )
+ {
+- if( !_GetDrawable() )
++ if( !GetDrawable() )
+ {
+- maVirDevData.hDrawable_ = XCreatePixmap( _GetXDisplay(),
+- maVirDevData.pDisplay_->GetDrawable(),
+- 1, 1, _GetDepth() );
+- maVirDevData.nDX_ = 1;
+- maVirDevData.nDY_ = 1;
++ hDrawable_ = XCreatePixmap( GetXDisplay(),
++ pDisplay_->GetDrawable(),
++ 1, 1, nDepth_ );
++ nDX_ = 1;
++ nDY_ = 1;
+ }
+ return FALSE;
+ }
+
+- if( _GetDrawable() )
+- XFreePixmap( _GetXDisplay(), _GetDrawable() );
+- maVirDevData.hDrawable_ = h;
++ if( GetDrawable() )
++ XFreePixmap( GetXDisplay(), GetDrawable() );
++ hDrawable_ = h;
+
+- maVirDevData.nDX_ = nDX;
+- maVirDevData.nDY_ = nDY;
++ nDX_ = nDX;
++ nDY_ = nDY;
+
+- if( maVirDevData.pGraphics_ )
+- maVirDevData.InitGraphics( this, maVirDevData.pGraphics_ );
++ if( pGraphics_ )
++ InitGraphics( this );
+
+ return TRUE;
+ }
+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
+@@ -76,8 +76,11 @@
+ #ifndef _SV_OUTFONT_HXX
+ #include <outfont.hxx>
+ #endif
+-#ifndef _SV_SALGDI_HXX
+-#include <salgdi.hxx>
++#ifndef _SV_SALDISP_HXX
++#include <saldisp.hxx>
++#endif
++#ifndef _SV_SALGDI_H
++#include <salgdi.h>
+ #endif
+
+ #if OSL_DEBUG_LEVEL > 1
+@@ -122,8 +125,8 @@ ExtendedFontStruct::ExtendedFontStruct(
+ maPixelSize( rPixelSize ),
+ mfXScale(1.0), mfYScale(1.0),
+ mbVertical( bVertical ),
+- mpXlfd( pXlfd ),
+ mnCachedEncoding( RTL_TEXTENCODING_DONTKNOW ),
++ mpXlfd( pXlfd ),
+ mpRangeCodes(NULL),
+ mnRangeCount(-1)
+ {
+@@ -434,7 +438,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,
+- long* pWidthArray, rtl_TextEncoding nEncoding )
++ sal_Int32* pWidthArray, rtl_TextEncoding nEncoding )
+ {
+ if ( !(nFrom <= nTo) )
+ return 0;
+@@ -477,7 +481,7 @@ ExtendedFontStruct::GetCharWidth8( sal_U
+ // Handle utf16 encoded fonts, which do not require conversion
+ sal_Size
+ ExtendedFontStruct::GetCharWidthUTF16( sal_Unicode nFrom, sal_Unicode nTo,
+- long* pWidthArray )
++ sal_Int32* pWidthArray )
+ {
+ if ( !(nFrom <= nTo) )
+ return 0;
+@@ -523,7 +527,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,
+- long* pWidthArray, ExtendedFontStruct *pFallback )
++ sal_Int32* pWidthArray, ExtendedFontStruct *pFallback )
+ {
+ if ( nFrom > nTo )
+ return 0;
+@@ -608,8 +612,8 @@ ExtendedFontStruct::GetCharWidth16( sal_
+ }
+
+ sal_Size
+-ExtendedFontStruct::GetCharWidth( sal_Unicode cChar, long *pPhysicalWidth,
+- long *pLogicalWidth )
++ExtendedFontStruct::GetCharWidth( sal_Unicode cChar, sal_Int32 *pPhysicalWidth,
++ sal_Int32 *pLogicalWidth )
+ {
+ sal_Size nConverted = 0;
+
+@@ -707,7 +711,9 @@ bool X11FontLayout::LayoutText( ImplLayo
+ {
+ Point aNewPos( 0, 0 );
+ bool bRightToLeft;
+- for( int nCharPos = -1; rArgs.GetNextPos( &nCharPos, &bRightToLeft ); )
++ int nCharPos;
++
++ for( nCharPos = -1; rArgs.GetNextPos( &nCharPos, &bRightToLeft ); )
+ {
+ sal_Unicode cChar = rArgs.mpStr[ nCharPos ];
+ if( bRightToLeft )
+@@ -722,7 +728,7 @@ bool X11FontLayout::LayoutText( ImplLayo
+ nGlyphIndex = 0; // drop NotDef fallback glyphs
+ }
+
+- long nPhysGlyphWidth, nLogGlyphWidth;
++ sal_Int32 nPhysGlyphWidth, nLogGlyphWidth;
+ mrFont.GetCharWidth( cChar, &nPhysGlyphWidth, &nLogGlyphWidth );
+ int nGlyphFlags = (nPhysGlyphWidth > 0) ? 0 : GlyphItem::IS_IN_CLUSTER;
+ if( bRightToLeft )
+@@ -753,7 +759,7 @@ void X11FontLayout::DrawText( SalGraphic
+ int nMaxGlyphs = GetOrientation() ? 1 : MAXGLYPHS;
+
+ Point aPos;
+- long aGlyphAry[ MAXGLYPHS ];
++ sal_Int32 aGlyphAry[ MAXGLYPHS ];
+ sal_Unicode pStr[ MAXGLYPHS ];
+ for( int nStart=0;;)
+ {
+@@ -764,7 +770,7 @@ void X11FontLayout::DrawText( SalGraphic
+ for( int i = 0; i < nGlyphCount; ++i )
+ pStr[ i ] = aGlyphAry[ i ] & GF_IDXMASK;
+
+- rSalGraphics.maGraphicsData.DrawStringUCS2MB( mrFont, aPos, pStr, nGlyphCount );
++ static_cast<X11SalGraphics&>(rSalGraphics).DrawStringUCS2MB( mrFont, aPos, pStr, nGlyphCount );
+ }
+ }
+
+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
+@@ -120,10 +120,12 @@ Attribute::Compare( const char *p, int n
+ const rtl::OString&
+ Attribute::GetKey ()
+ {
++ static rtl::OString aEmptyStr;
++
+ if (mpKeyName != NULL)
+ return *mpKeyName;
+ if (mnLength == NULL)
+- return rtl::OString();
++ return aEmptyStr;
+
+ sal_Char* pBuffer = (sal_Char*)alloca (mnLength);
+
+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
+@@ -652,7 +652,7 @@ ScalableBitmapXlfd::ToString( ByteString
+ rString += '-';
+ rString += ByteString::CreateFromInt32( rInfo.mnResolutionY );
+ rString += '-';
+- rString += rInfo.mcSpacing;
++ rString += static_cast< char >(rInfo.mcSpacing);
+ rString += "-0";
+
+ AppendAttribute( mpFactory->RetrieveCharset(rInfo.mnCharset), rString );
+@@ -673,10 +673,10 @@ ScalableBitmapXlfd::ToString( ByteString
+
+ rString += "-*-";
+ char pTmp[256];
+- sprintf( pTmp, pMatricsString, nPixelSize, nPixelSize );
++ snprintf( pTmp, sizeof(pTmp), pMatricsString, nPixelSize, nPixelSize );
+ rString += pTmp;
+ rString += "-*-*-";
+- rString += rInfo.mcSpacing;
++ rString += static_cast< char >(rInfo.mcSpacing);
+ rString += "-*";
+
+ AppendAttribute( mpFactory->RetrieveCharset(rInfo.mnCharset), rString );
+@@ -697,10 +697,10 @@ BitmapXlfd::ToString( ByteString &rStrin
+
+ rString += "-*-";
+ char pTmp[256];
+- sprintf( pTmp, pMatricsString, nPixelSize, nPixelSize );
++ snprintf( pTmp, sizeof(pTmp), pMatricsString, nPixelSize, nPixelSize );
+ rString += pTmp;
+ rString += "-*-*-";
+- rString += rInfo.mcSpacing;
++ rString += static_cast< char >(rInfo.mcSpacing);
+ rString += "-*";
+
+ AppendAttribute( mpFactory->RetrieveCharset(rInfo.mnCharset), rString );
+@@ -774,28 +774,9 @@ BitmapXlfd::ToString( ByteString &rStrin
+ AppendAttribute( mpFactory->RetrieveAddstyle(rInfo.mnAddstyle), rString );
+ rString += '-';
+ rString += ByteString::CreateFromInt32( mnPixelSize );
+- #ifdef __notdef__
+- // since mnPointSize is not asked when comparing two bitmap font xlfd
+- // it may differ (and it does) for two fonts with same pixelsize
+- rString += "-";
+- rString += ByteString::CreateFromInt32( mnPointSize );
+- rString += "-";
+- rString += ByteString::CreateFromInt32( rInfo.mnResolutionX );
+- rString += '-';
+- rString += ByteString::CreateFromInt32( rInfo.mnResolutionY );
+- rString += '-';
+- #else
+- rString += "-*-*-*-";
+- #endif /* __notdef__ */
+-
+- rString += rInfo.mcSpacing;
+-
+- #ifdef __notdef__
+- rString += '-';
+- rString += ByteString::CreateFromInt32( mnAverageWidth );
+- #else
+- rString += "-*";
+- #endif
++ rString += "-*-*-*-";
++ rString += static_cast< char >(rInfo.mcSpacing);
++ rString += "-*";
+
+ AppendAttribute( mpFactory->RetrieveCharset(rInfo.mnCharset), rString );
+ }
+@@ -836,7 +817,7 @@ ScalableXlfd::ToString( ByteString &rStr
+ rString += '-';
+ rString += ByteString::CreateFromInt32( nPixelSize );
+ rString += "-0-0-0-";
+- rString += rInfo.mcSpacing;
++ rString += static_cast< char >(rInfo.mcSpacing);
+ rString += "-0";
+
+ AppendAttribute( mpFactory->RetrieveCharset(rInfo.mnCharset), rString );
+@@ -857,10 +838,10 @@ ScalableXlfd::ToString( ByteString &rStr
+
+ rString += "-*-";
+ char pTmp[256];
+- sprintf( pTmp, pMatricsString, nPixelSize, nPixelSize );
++ snprintf( pTmp, sizeof(pTmp), pMatricsString, nPixelSize, nPixelSize );
+ rString += pTmp;
+ rString += "-*-*-";
+- rString += rInfo.mcSpacing;
++ rString += static_cast< char >(rInfo.mcSpacing);
+ rString += "-*";
+
+ AppendAttribute( mpFactory->RetrieveCharset(rInfo.mnCharset), rString );
+@@ -1018,7 +999,7 @@ VirtualXlfd::ToString( ByteString &rStri
+ rString += '-';
+ rString += ByteString::CreateFromInt32( nPixelSize );
+ rString += "-0-0-0-";
+- rString += rInfo.mcSpacing;
++ rString += static_cast< char >(rInfo.mcSpacing);
+ rString += "-0";
+
+ AppendAttribute( mpFactory->RetrieveCharset(rInfo.mnCharset), rString );
+@@ -1045,10 +1026,10 @@ VirtualXlfd::ToString( ByteString &rStri
+
+ rString += "-*-";
+ char pTmp[256];
+- sprintf( pTmp, pMatricsString, nPixelSize, nPixelSize );
++ snprintf( pTmp, sizeof(pTmp), pMatricsString, nPixelSize, nPixelSize );
+ rString += pTmp;
+ rString += "-*-*-";
+- rString += rInfo.mcSpacing;
++ rString += static_cast< char >(rInfo.mcSpacing);
+ rString += "-*";
+
+ 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
+@@ -93,8 +93,8 @@ class XlfdStorage;
+
+ class ExtendedXlfd {
+
+- friend VirtualXlfd;
+- friend XlfdStorage;
++ friend class VirtualXlfd;
++ friend class XlfdStorage;
+
+ public:
+ 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
+@@ -282,12 +282,12 @@ Xlfd::ToString( ByteString &rString ) co
+ AppendAttribute( mpFactory->RetrieveSetwidth(mnSetwidth), rString );
+ AppendAttribute( mpFactory->RetrieveAddstyle(mnAddstyle), rString );
+
+- rString += '-'; rString += ByteString::CreateFromInt32( mnPixelSize );
+- rString += '-'; rString += ByteString::CreateFromInt32( mnPointSize );
+- rString += '-'; rString += ByteString::CreateFromInt32( mnResolutionX );
+- rString += '-'; rString += ByteString::CreateFromInt32( mnResolutionY );
+- rString += '-'; rString += mcSpacing;
+- rString += '-'; rString += ByteString::CreateFromInt32( mnAverageWidth );
++ rString.Append("-"); rString.Append( ByteString::CreateFromInt32( mnPixelSize ) );
++ rString.Append("-"); rString.Append( ByteString::CreateFromInt32( mnPointSize ) );
++ rString.Append("-"); rString.Append( ByteString::CreateFromInt32( mnResolutionX ) );
++ rString.Append("-"); rString.Append( ByteString::CreateFromInt32( mnResolutionY ) );
++ rString.Append("-"); rString.Append( (char)mcSpacing );
++ rString.Append("-"); rString.Append( ByteString::CreateFromInt32( mnAverageWidth ) );
+
+ AppendAttribute( mpFactory->RetrieveCharset(mnCharset), rString );
+
+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
+@@ -59,8 +59,6 @@
+ *
+ ************************************************************************/
+
+-#define _VCL_XPRINT_EXTENSION_CXX
+-
+ #include <stdio.h>
+ #include <stdlib.h>
+ #include <unistd.h>
+@@ -432,7 +430,7 @@ SalPrinter::StartJob(
+ XpSelectInput (pDisplay, aContext, XPPrintMask);
+
+ char pJobName[ 64 ];
+- sprintf (pJobName, "%s.job-name: XPrint%d", pPrinterName, getpid() );
++ snprintf (pJobName, sizeof(pJobName), "%s.job-name: XPrint%d", pPrinterName, getpid() );
+
+ XpStartJob( pDisplay, XPSpool );
+
diff --git a/patches/OOO_1_1_2/word-count.diff b/patches/OOO_1_1_2/word-count.diff
new file mode 100644
index 000000000..4f3040435
--- /dev/null
+++ b/patches/OOO_1_1_2/word-count.diff
@@ -0,0 +1,285 @@
+Index: sw/inc/cmdid.h
+===================================================================
+RCS file: /cvs/sw/sw/inc/cmdid.h,v
+retrieving revision 1.46
+diff -u -p -u -r1.46 cmdid.h
+--- sw/inc/cmdid.h 22 May 2003 08:40:37 -0000 1.46
++++ sw/inc/cmdid.h 31 Jul 2003 17:01:16 -0000
+@@ -749,6 +749,7 @@ Achtung: Ab sofort sind in diesem File k
+ #define FN_MACRO_POPUP (FN_EXTRA + 37) /* Alle Macrofunktionen */
+ #define FN_BULLET (FN_EXTRA + 38) /* Bullet-Liste */
+
++#define FN_WORD_COUNT_DLG (FN_EXTRA + 39)
+
+ // Bereich: Gloassaries
+
+Index: sw/sdi/swriter.sdi
+===================================================================
+RCS file: /cvs/sw/sw/sdi/swriter.sdi,v
+retrieving revision 1.43
+diff -u -p -u -r1.43 swriter.sdi
+--- sw/sdi/swriter.sdi 22 May 2003 08:42:09 -0000 1.43
++++ sw/sdi/swriter.sdi 31 Jul 2003 17:01:17 -0000
+@@ -8482,6 +8482,29 @@ SfxBoolItem UnderlineDouble FN_UNDERLINE
+ ]
+
+ //--------------------------------------------------------------------------
++SfxVoidItem WordCount FN_WORD_COUNT_DLG
++()
++[
++ /* flags: */
++ AutoUpdate = FALSE,
++ Cachable = Cachable,
++ FastCall = FALSE,
++ HasCoreId = FALSE,
++ HasDialog = TRUE,
++ ReadOnlyDoc = TRUE,
++ Toggle = TRUE,
++ Container = FALSE,
++ Asynchron;
++
++ /* config: */
++ AccelConfig = TRUE,
++ MenuConfig = TRUE,
++ StatusBarConfig = FALSE,
++ ToolBoxConfig = TRUE,
++ GroupId = GID_DOCUMENT;
++]
++
++//--------------------------------------------------------------------------
+ SfxVoidItem UnhainFrames FN_FRAME_UNCHAIN
+
+ [
+Index: sw/sdi/swslots.src
+===================================================================
+RCS file: /cvs/sw/sw/sdi/swslots.src,v
+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
+ SlotName[ hindi ] = "हाइफनेशन";
+ SlotName[ slovak ] = "Delenie slov";
+ };
++SfxSlotInfo FN_WORD_COUNT_DLG
++{
++ SlotName = "Wörter zählen...";
++ SlotName[ arabic ] = "ÅÍÕÇÆíÇÊ";
++ SlotName[ english ] = "Word count";
++ SlotName[ english_us ] = "Word count";
++ SlotName[ catalan ] = "Comptador de paraules";
++ SlotName[ czech ] = "PoÄet slov";
++ SlotName[ danish ] = "Ordoptælling";
++ SlotName[ greek ] = "Áñßèìçóç ËÝîåùí";
++ SlotName[ spanish ] = "Contar palabras";
++ SlotName[ estonian ] = "Sõnade arv";
++ SlotName[ finnish ] = "Laske sanat";
++ SlotName[ french ] = "Statistiques";
++ SlotName[ hindi ] = "शबà¥à¤¦ गिनें";
++ SlotName[ italian ] = "Statistiche";
++ SlotName[ hungarian ] = "Szavak száma";
++ SlotName[ japanese ] = "ワードカウント";
++ SlotName[ korean ] = "통계";
++ SlotName[ norwegian ] = "Ordtelling";
++ SlotName[ dutch ] = "Woorden tellen";
++ SlotName[ polish ] = "Liczba s³ów";
++ SlotName[ portuguese ] = "Contagem palavras";
++ SlotName[ portuguese_brazilian ] = "Contagem palavras";
++ SlotName[ russian ] = "Êîëè÷åñòâî ñëîâ";
++ SlotName[ slovak ] = "PoÄet slov";
++ SlotName[ swedish ] = "Ordräkning";
++ SlotName[ turkish ] = "Ýstatistik";
++ SlotName[ chinese_simplified ] = "统计";
++ SlotName[ chinese_traditional ] = "統計";
++ SlotName[ slovenian ] = "Å tevilo besed";
++ SlotName[ thai ] = "Word count";
++ SlotName[ hebrew ] = "Word count";
++ SlotName[ 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"
++ sq: "Llogariti fjalët"
++ ta: "சொல௠எணà¯à®£à®¿"
++ uk: "КількіÑÑ‚ÑŒ Ñлів"
++ vi: "Äếm từ"
++ wa: "Contaedje des mots"
++*/
++};
+ SfxSlotInfo FN_IDX_MARK_TO_IDX
+ {
+ SlotName = "Indexmarke zum Index";
+Index: sw/sdi/viewsh.sdi
+===================================================================
+RCS file: /cvs/sw/sw/sdi/viewsh.sdi,v
+retrieving revision 1.9
+diff -u -p -u -r1.9 viewsh.sdi
+--- sw/sdi/viewsh.sdi 6 Dec 2002 13:58:48 -0000 1.9
++++ sw/sdi/viewsh.sdi 31 Jul 2003 17:01:27 -0000
+@@ -112,6 +112,12 @@ interface TextEditView : BaseTextEditVie
+ StateMethod = GetState ;
+ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
+ ]
++ FN_WORD_COUNT_DLG // status(final|play)
++ [
++ ExecMethod = ExecLingu ;
++ StateMethod = GetState ;
++ DisableFlags="SW_DISABLE_ON_PROTECTED_CURSOR";
++ ];
+ FN_CHANGE_PAGENUM // status(final)
+ [
+ ExecMethod = ExecDlg ;
+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 = "Wörter zählen..." ;
++ 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 s³ów...";
++ 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 ] = "~AutoCorrecção/AutoFormato..." ;
+ Text [ english_us ] = "~AutoCorrect/AutoFormat..." ;
+ Text [ portuguese_brazilian ] = "~AutoCorreção/AutoFormatação..." ;
+ Text [ swedish ] = "~AutoKorrigering/AutoFormat..." ;
+ Text [ danish ] = "~AutoKorrektur/AutoFormat..." ;
+ Text [ italian ] = "Correzione/Formattazione a~utomatica..." ;
+ Text [ spanish ] = "~Corrección/Formateado automático..." ;
+Index: sw/source/ui/uiview/viewling.cxx
+===================================================================
+RCS file: /cvs/sw/sw/source/ui/uiview/viewling.cxx,v
+retrieving revision 1.13
+diff -u -p -u -r1.13 viewling.cxx
+--- sw/source/ui/uiview/viewling.cxx 17 Apr 2003 17:51:30 -0000 1.13
++++ sw/source/ui/uiview/viewling.cxx 7 Aug 2003 12:38:22 -0000
+@@ -105,6 +105,9 @@
+ #ifndef _SVX_DIALMGR_HXX //autogen
+ #include <svx/dialmgr.hxx>
+ #endif
++#ifndef _SFX_DINFDLG_HXX
++#include <sfx2/dinfdlg.hxx>
++#endif
+ #ifndef _SVX_LANGITEM_HXX
+ #include <svx/langitem.hxx>
+ #endif
+@@ -214,6 +217,40 @@ void SwView::ExecLingu(SfxRequest &rReq)
+ case FN_HYPHENATE_OPT_DLG:
+ HyphenateDocument();
+ break;
++ case FN_WORD_COUNT_DLG: {
++
++ SfxObjectShell *pObjectShell = GetObjectShell();
++ if (!pObjectShell)
++ break;
++
++ String aURL, aTitle;
++ SfxDocumentInfo *pTmpDocInfo = new SfxDocumentInfo;
++ *pTmpDocInfo = pObjectShell->GetDocInfo ();
++ pTmpDocInfo->SetReadOnly( true );
++ SfxDocumentInfoItem aDocInfoItem( aURL, *pTmpDocInfo );
++
++ SfxItemSet aSet(GetPool(), SID_DOCINFO, SID_DOCINFO,
++ SID_EXPLORER_PROPS_START, SID_EXPLORER_PROPS_START, 0L );
++ aSet.Put( aDocInfoItem );
++ aSet.Put( SfxStringItem( SID_EXPLORER_PROPS_START, aTitle ) );
++
++ // SwDocShell::CreateDocumentInfoDialog
++ SfxDocumentInfoDialog *pDlg = pObjectShell->CreateDocumentInfoDialog( 0, aSet );
++
++ pDlg->RemoveResetButton();
++ pDlg->RemoveTabPage( TP_DOCINFODESC );
++ pDlg->RemoveTabPage( TP_DOCINFODOC );
++ pDlg->RemoveTabPage( TP_DOCINFOUSER );
++ pDlg->RemoveTabPage( TP_DOCINFORELOAD );
++ pDlg->GetCancelButton().Hide();
++
++ pDlg->Execute(); // discard return value - it's irrelevant.
++
++ delete pDlg;
++ delete pTmpDocInfo;
++ break;
++ }
++
+ default:
+ ASSERT(!this, falscher Dispatcher);
+ return;
diff --git a/patches/vclplug/vcl-inc.diff b/patches/vclplug/vcl-inc.diff
index 9abbee81a..9888e8296 100644
--- a/patches/vclplug/vcl-inc.diff
+++ b/patches/vclplug/vcl-inc.diff
@@ -1,9 +1,7 @@
Index: vcl/inc/abstdlg.hxx
===================================================================
-RCS file: vcl/inc/abstdlg.hxx
-diff -N vcl/inc/abstdlg.hxx
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/inc/abstdlg.hxx 3 Feb 2004 17:13:21 -0000 1.3
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ vcl/inc/abstdlg.hxx 2004-09-12 14:54:44.784065432 +0200
@@ -0,0 +1,101 @@
+/*************************************************************************
+ *
@@ -108,12 +106,8 @@ diff -N vcl/inc/abstdlg.hxx
+
Index: vcl/inc/accel.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/accel.hxx,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -p -u -r1.2 -r1.3
---- vcl/inc/accel.hxx 7 Dec 2000 13:37:15 -0000 1.2
-+++ vcl/inc/accel.hxx 6 Jan 2004 12:50:31 -0000 1.3
+--- vcl/inc/accel.hxx.orig 2004-09-12 14:26:21.659979648 +0200
++++ vcl/inc/accel.hxx 2004-09-12 14:54:44.785065280 +0200
@@ -65,11 +65,11 @@
#ifndef _SV_SV_H
#include <sv.h>
@@ -166,13 +160,9 @@ diff -u -p -u -r1.2 -r1.3
virtual void Deactivate();
Index: vcl/inc/alpha.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/alpha.hxx,v
-retrieving revision 1.3
-retrieving revision 1.6
-diff -u -p -u -r1.3 -r1.6
---- vcl/inc/alpha.hxx 12 Sep 2002 09:30:19 -0000 1.3
-+++ vcl/inc/alpha.hxx 21 May 2004 16:20:16 -0000 1.6
-@@ -70,15 +70,15 @@
+--- vcl/inc/alpha.hxx.orig 2004-09-12 14:26:21.659979648 +0200
++++ vcl/inc/alpha.hxx 2004-09-12 14:54:44.786065128 +0200
+@@ -70,16 +70,16 @@
// - AlphaMask -
// -------------
@@ -185,21 +175,18 @@ diff -u -p -u -r1.3 -r1.6
+ friend SvStream& operator<<( SvStream&, const ImageList& );
private:
--
+
- long nDummy1;
- long nDummy2;
-
+-
const Bitmap& ImplGetBitmap() const;
void ImplSetBitmap( const Bitmap& rBitmap );
+
Index: vcl/inc/apptypes.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/apptypes.hxx,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -p -u -r1.3 -r1.4
---- vcl/inc/apptypes.hxx 11 Jul 2001 08:32:52 -0000 1.3
-+++ vcl/inc/apptypes.hxx 6 Jan 2004 12:51:37 -0000 1.4
-@@ -62,12 +62,12 @@
+--- vcl/inc/apptypes.hxx.orig 2004-09-12 14:26:21.660979496 +0200
++++ vcl/inc/apptypes.hxx 2004-09-12 14:54:44.786065128 +0200
+@@ -62,14 +62,14 @@
#ifndef _VCL_APPTYPES_HXX
#define _VCL_APPTYPES_HXX
@@ -209,21 +196,19 @@ diff -u -p -u -r1.3 -r1.4
-
#ifndef _SV_SV_H
#include <sv.h>
-+#endif
-+
-+#ifndef _RTTI_HXX
-+#include <tools/rtti.hxx>
#endif
++#ifndef _RTTI_HXX
++#include <tools/rtti.hxx>
++#endif
++
+ // ---------------------
+ // - Application-Types -
// ---------------------
Index: vcl/inc/bitmap.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/bitmap.hxx,v
-retrieving revision 1.8
-retrieving revision 1.13
-diff -u -p -u -r1.8 -r1.13
---- vcl/inc/bitmap.hxx 24 Apr 2003 14:56:11 -0000 1.8
-+++ vcl/inc/bitmap.hxx 10 Jun 2004 17:36:43 -0000 1.13
+--- vcl/inc/bitmap.hxx.orig 2004-09-12 14:26:21.662979192 +0200
++++ vcl/inc/bitmap.hxx 2004-09-12 14:54:44.787064976 +0200
@@ -68,8 +68,8 @@
#ifndef _SV_MAPMOD_HXX
#include <mapmod.hxx>
@@ -287,12 +272,8 @@ diff -u -p -u -r1.8 -r1.13
public:
Index: vcl/inc/bitmapex.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/bitmapex.hxx,v
-retrieving revision 1.5
-retrieving revision 1.9
-diff -u -p -u -r1.5 -r1.9
---- vcl/inc/bitmapex.hxx 22 Oct 2002 17:07:54 -0000 1.5
-+++ vcl/inc/bitmapex.hxx 21 May 2004 16:20:50 -0000 1.9
+--- vcl/inc/bitmapex.hxx.orig 2004-09-12 14:26:21.663979040 +0200
++++ vcl/inc/bitmapex.hxx 2004-09-12 14:54:44.788064824 +0200
@@ -68,8 +68,8 @@
#ifndef _SV_ALPHA_HXX
#include <alpha.hxx>
@@ -330,12 +311,8 @@ diff -u -p -u -r1.5 -r1.9
ImpBitmap* ImplGetBitmapImpBitmap() const { return aBitmap.ImplGetImpBitmap(); }
Index: vcl/inc/brdwin.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/brdwin.hxx,v
-retrieving revision 1.2
-retrieving revision 1.4
-diff -u -p -u -r1.2 -r1.4
---- vcl/inc/brdwin.hxx 16 Feb 2001 11:09:45 -0000 1.2
-+++ vcl/inc/brdwin.hxx 17 Jun 2004 12:01:23 -0000 1.4
+--- vcl/inc/brdwin.hxx.orig 2004-09-12 14:26:21.665978736 +0200
++++ vcl/inc/brdwin.hxx 2004-09-12 14:54:44.789064672 +0200
@@ -156,14 +156,12 @@ private:
BOOL mbHelpBtn;
BOOL mbDisplayActive;
@@ -436,12 +413,8 @@ diff -u -p -u -r1.2 -r1.4
};
Index: vcl/inc/btndlg.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/btndlg.hxx,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -p -u -r1.2 -r1.3
---- vcl/inc/btndlg.hxx 7 Dec 2000 13:37:15 -0000 1.2
-+++ vcl/inc/btndlg.hxx 6 Jan 2004 12:53:29 -0000 1.3
+--- vcl/inc/btndlg.hxx.orig 2004-09-12 14:26:21.666978584 +0200
++++ vcl/inc/btndlg.hxx 2004-09-12 14:54:44.790064520 +0200
@@ -101,20 +101,15 @@ private:
BOOL mbFormat;
Link maClickHdl;
@@ -466,12 +439,8 @@ diff -u -p -u -r1.2 -r1.3
ButtonDialog( Window* pParent, WinBits nStyle = WB_STDDIALOG );
Index: vcl/inc/button.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/button.hxx,v
-retrieving revision 1.8
-retrieving revision 1.11
-diff -u -p -u -r1.8 -r1.11
---- vcl/inc/button.hxx 17 Apr 2003 17:55:12 -0000 1.8
-+++ vcl/inc/button.hxx 10 May 2004 15:40:59 -0000 1.11
+--- vcl/inc/button.hxx.orig 2004-09-12 14:26:21.667978432 +0200
++++ vcl/inc/button.hxx 2004-09-12 14:54:44.791064368 +0200
@@ -78,6 +78,10 @@
#include <bitmap.hxx>
#endif
@@ -520,7 +489,7 @@ diff -u -p -u -r1.8 -r1.11
virtual void UserDraw( const UserDrawEvent& rUDEvt );
virtual void Toggle();
-@@ -253,10 +246,8 @@ inline BOOL PushButton::IsChecked() cons
+@@ -253,10 +253,8 @@ inline BOOL PushButton::IsChecked() cons
class OKButton : public PushButton
{
@@ -531,7 +500,7 @@ diff -u -p -u -r1.8 -r1.11
public:
OKButton( Window* pParent, WinBits nStyle = WB_DEFBUTTON );
-@@ -271,10 +262,8 @@ public:
+@@ -271,10 +269,8 @@ public:
class CancelButton : public PushButton
{
@@ -542,7 +511,7 @@ diff -u -p -u -r1.8 -r1.11
public:
CancelButton( Window* pParent, WinBits nStyle = 0 );
-@@ -289,10 +278,8 @@ public:
+@@ -289,10 +285,8 @@ public:
class HelpButton : public PushButton
{
@@ -553,7 +522,7 @@ diff -u -p -u -r1.8 -r1.11
public:
HelpButton( Window* pParent, WinBits nStyle = 0 );
-@@ -318,12 +305,9 @@ private:
+@@ -318,12 +312,9 @@ private:
BOOL mbSaveValue;
BOOL mbRadioCheck;
BOOL mbStateChanged;
@@ -566,7 +535,7 @@ diff -u -p -u -r1.8 -r1.11
void ImplInitData();
WinBits ImplInitStyle( const Window* pPrevWindow, WinBits nStyle );
void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
-@@ -336,7 +320,6 @@ private:
+@@ -336,7 +327,6 @@ private:
bool bLayout = false );
void ImplDrawRadioButton( bool bLayout = false );
void ImplUncheckAllOther();
@@ -574,7 +543,7 @@ diff -u -p -u -r1.8 -r1.11
protected:
void ImplInit( Window* pParent, WinBits nStyle );
-@@ -376,6 +359,7 @@ public:
+@@ -376,6 +366,7 @@ public:
virtual void LoseFocus();
virtual void StateChanged( StateChangedType nType );
virtual void DataChanged( const DataChangedEvent& rDCEvt );
@@ -582,7 +551,7 @@ diff -u -p -u -r1.8 -r1.11
virtual void Toggle();
-@@ -428,7 +412,6 @@ private:
+@@ -428,7 +419,6 @@ private:
Link maToggleHdl;
#if _SOLAR__PRIVATE
@@ -590,7 +559,7 @@ diff -u -p -u -r1.8 -r1.11
void ImplInitData();
WinBits ImplInitStyle( const Window* pPrevWindow, WinBits nStyle );
void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
-@@ -439,7 +422,6 @@ private:
+@@ -439,7 +429,6 @@ private:
Rectangle& rStateRect,
Rectangle& rMouseRect, Rectangle& rFocusRect, bool bLayout );
void ImplDrawCheckBox( bool bLayout = false );
@@ -598,7 +567,7 @@ diff -u -p -u -r1.8 -r1.11
protected:
void ImplInit( Window* pParent, WinBits nStyle );
-@@ -465,6 +447,7 @@ public:
+@@ -465,6 +454,7 @@ public:
virtual void LoseFocus();
virtual void StateChanged( StateChangedType nType );
virtual void DataChanged( const DataChangedEvent& rDCEvt );
@@ -608,12 +577,8 @@ diff -u -p -u -r1.8 -r1.11
Index: vcl/inc/cmdevt.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/cmdevt.hxx,v
-retrieving revision 1.10.250.1
-retrieving revision 1.12
-diff -u -p -u -r1.10.250.1 -r1.12
---- vcl/inc/cmdevt.hxx 9 Jan 2004 18:13:38 -0000 1.10.250.1
-+++ vcl/inc/cmdevt.hxx 6 Jan 2004 12:54:08 -0000 1.12
+--- vcl/inc/cmdevt.hxx.orig 2004-09-12 14:26:21.668978280 +0200
++++ vcl/inc/cmdevt.hxx 2004-09-12 14:54:44.792064216 +0200
@@ -101,7 +101,6 @@ private:
xub_StrLen mnOldTextLen;
USHORT mnCursorFlags;
@@ -624,12 +589,8 @@ diff -u -p -u -r1.10.250.1 -r1.12
CommandExtTextInputData();
Index: vcl/inc/combobox.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/combobox.hxx,v
-retrieving revision 1.12
-retrieving revision 1.14
-diff -u -p -u -r1.12 -r1.14
---- vcl/inc/combobox.hxx 11 Apr 2003 17:24:42 -0000 1.12
-+++ vcl/inc/combobox.hxx 18 May 2004 10:47:56 -0000 1.14
+--- vcl/inc/combobox.hxx.orig 2004-09-12 14:26:21.669978128 +0200
++++ vcl/inc/combobox.hxx 2004-09-12 14:54:44.792064216 +0200
@@ -192,6 +192,7 @@ public:
BOOL IsUserDrawEnabled() const;
@@ -640,12 +601,8 @@ diff -u -p -u -r1.12 -r1.14
void SetSeparatorPos();
Index: vcl/inc/controllayout.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/controllayout.hxx,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -p -u -r1.3 -r1.4
---- vcl/inc/controllayout.hxx 16 May 2002 11:52:49 -0000 1.3
-+++ vcl/inc/controllayout.hxx 18 May 2004 10:48:10 -0000 1.4
+--- vcl/inc/controllayout.hxx.orig 2004-09-12 14:26:21.670977976 +0200
++++ vcl/inc/controllayout.hxx 2004-09-12 14:54:44.793064064 +0200
@@ -103,6 +103,20 @@ struct ControlLayoutData
// returns the interval [start,end] of line nLine
// returns [-1,-1] for an invalid line
@@ -669,12 +626,8 @@ diff -u -p -u -r1.3 -r1.4
} // namespace vcl
Index: vcl/inc/ctrl.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/ctrl.hxx,v
-retrieving revision 1.5
-retrieving revision 1.8
-diff -u -p -u -r1.5 -r1.8
---- vcl/inc/ctrl.hxx 16 May 2002 11:52:49 -0000 1.5
-+++ vcl/inc/ctrl.hxx 18 May 2004 10:48:23 -0000 1.8
+--- vcl/inc/ctrl.hxx.orig 2004-09-12 14:26:21.671977824 +0200
++++ vcl/inc/ctrl.hxx 2004-09-12 14:54:44.794063912 +0200
@@ -73,6 +73,10 @@
#include <window.hxx>
#endif
@@ -749,12 +702,8 @@ diff -u -p -u -r1.5 -r1.8
void SetGetFocusHdl( const Link& rLink ) { maGetFocusHdl = rLink; }
Index: vcl/inc/cursor.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/cursor.hxx,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -p -u -r1.3 -r1.4
---- vcl/inc/cursor.hxx 27 Mar 2003 17:57:20 -0000 1.3
-+++ vcl/inc/cursor.hxx 6 Jan 2004 12:55:28 -0000 1.4
+--- vcl/inc/cursor.hxx.orig 2004-09-12 14:26:21.672977672 +0200
++++ vcl/inc/cursor.hxx 2004-09-12 14:54:44.795063760 +0200
@@ -66,6 +66,10 @@
#include <tools/gen.hxx>
#endif
@@ -780,12 +729,8 @@ diff -u -p -u -r1.3 -r1.4
void ImplNew();
Index: vcl/inc/cvtsvm.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/cvtsvm.hxx,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -p -u -r1.3 -r1.4
---- vcl/inc/cvtsvm.hxx 7 Dec 2000 13:37:15 -0000 1.3
-+++ vcl/inc/cvtsvm.hxx 6 Jan 2004 12:55:49 -0000 1.4
+--- vcl/inc/cvtsvm.hxx.orig 2004-09-12 14:26:21.672977672 +0200
++++ vcl/inc/cvtsvm.hxx 2004-09-12 14:54:44.795063760 +0200
@@ -129,7 +129,6 @@ class SVMConverter
{
private:
@@ -804,12 +749,8 @@ diff -u -p -u -r1.3 -r1.4
SVMConverter( SvStream& rIStm, GDIMetaFile& rMtf, ULONG nConvertMode );
Index: vcl/inc/decoview.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/decoview.hxx,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -p -u -r1.3 -r1.4
---- vcl/inc/decoview.hxx 27 Mar 2003 17:57:20 -0000 1.3
-+++ vcl/inc/decoview.hxx 10 May 2004 15:41:25 -0000 1.4
+--- vcl/inc/decoview.hxx.orig 2004-09-12 14:26:21.674977368 +0200
++++ vcl/inc/decoview.hxx 2004-09-12 14:54:44.796063608 +0200
@@ -88,6 +88,7 @@ class OutputDevice;
#define FRAME_DRAW_DOUBLEIN ((USHORT)0x0004)
#define FRAME_DRAW_DOUBLEOUT ((USHORT)0x0005)
@@ -820,12 +761,8 @@ diff -u -p -u -r1.3 -r1.4
#define FRAME_DRAW_STYLE ((USHORT)0x000F)
Index: vcl/inc/dialog.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/dialog.hxx,v
-retrieving revision 1.7.252.1
-retrieving revision 1.10
-diff -u -p -u -r1.7.252.1 -r1.10
---- vcl/inc/dialog.hxx 31 Oct 2003 15:43:22 -0000 1.7.252.1
-+++ vcl/inc/dialog.hxx 17 Jun 2004 12:02:16 -0000 1.10
+--- vcl/inc/dialog.hxx.orig 2004-09-12 14:26:21.675977216 +0200
++++ vcl/inc/dialog.hxx 2004-09-12 14:54:44.796063608 +0200
@@ -81,20 +81,16 @@ class Dialog : public SystemWindow
{
private:
@@ -860,12 +797,8 @@ diff -u -p -u -r1.7.252.1 -r1.10
void SetModalInputMode( BOOL bModal, BOOL bSubModalDialogs );
Index: vcl/inc/dockwin.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/dockwin.hxx,v
-retrieving revision 1.4
-retrieving revision 1.6
-diff -u -p -u -r1.4 -r1.6
---- vcl/inc/dockwin.hxx 24 Apr 2002 15:41:07 -0000 1.4
-+++ vcl/inc/dockwin.hxx 17 Jun 2004 12:02:29 -0000 1.6
+--- vcl/inc/dockwin.hxx.orig 2004-09-12 14:26:21.676977064 +0200
++++ vcl/inc/dockwin.hxx 2004-09-12 14:54:44.797063456 +0200
@@ -89,10 +89,10 @@ private:
long mnTrackY;
long mnTrackWidth;
@@ -900,12 +833,8 @@ diff -u -p -u -r1.4 -r1.6
void ImplInit( Window* pParent, WinBits nStyle );
Index: vcl/inc/edit.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/edit.hxx,v
-retrieving revision 1.11
-retrieving revision 1.13
-diff -u -p -u -r1.11 -r1.13
---- vcl/inc/edit.hxx 27 Mar 2003 17:57:20 -0000 1.11
-+++ vcl/inc/edit.hxx 10 May 2004 15:41:45 -0000 1.13
+--- vcl/inc/edit.hxx.orig 2004-09-12 14:26:21.676977064 +0200
++++ vcl/inc/edit.hxx 2004-09-12 14:54:44.798063304 +0200
@@ -139,7 +139,6 @@ private:
Link maAutocompleteHdl;
@@ -932,12 +861,8 @@ diff -u -p -u -r1.11 -r1.13
Index: vcl/inc/field.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/field.hxx,v
-retrieving revision 1.9
-retrieving revision 1.12
-diff -u -p -u -r1.9 -r1.12
---- vcl/inc/field.hxx 5 Nov 2001 13:00:00 -0000 1.9
-+++ vcl/inc/field.hxx 2 Apr 2004 10:35:02 -0000 1.12
+--- vcl/inc/field.hxx.orig 2004-09-12 14:26:21.679976608 +0200
++++ vcl/inc/field.hxx 2004-09-12 14:54:44.800063000 +0200
@@ -105,17 +105,10 @@ private:
BOOL mbEmptyFieldValue;
BOOL mbEmptyFieldValueEnabled;
@@ -965,7 +890,7 @@ diff -u -p -u -r1.9 -r1.12
const LocaleDataWrapper& GetLocaleDataWrapper() const;
-@@ -174,21 +163,16 @@ private:
+@@ -174,21 +167,16 @@ private:
XubString maFieldString;
XubString maLiteralMask;
USHORT mnFormatFlags;
@@ -987,7 +912,7 @@ diff -u -p -u -r1.9 -r1.12
public:
~PatternFormatter();
-@@ -217,9 +201,7 @@ public:
+@@ -217,9 +205,7 @@ public:
class NumericFormatter : public FormatterBase
{
private:
@@ -997,7 +922,7 @@ diff -u -p -u -r1.9 -r1.12
protected:
long mnFieldValue;
-@@ -233,8 +215,6 @@ protected:
+@@ -233,8 +219,6 @@ protected:
USHORT mnDumym2;
BOOL mbThousandSep;
BOOL mbShowTrailingZeros;
@@ -1006,7 +931,7 @@ diff -u -p -u -r1.9 -r1.12
// Eigentlich nur am entsprechenden Feld einstellbar (fuer Interaktion),
// wird aber in allen Verschiedenen Ableitungen benoetigt
-@@ -255,12 +235,10 @@ protected:
+@@ -255,12 +239,10 @@ protected:
void FieldFirst();
void FieldLast();
@@ -1019,7 +944,7 @@ diff -u -p -u -r1.9 -r1.12
public:
~NumericFormatter();
-@@ -308,9 +286,7 @@ public:
+@@ -308,9 +290,7 @@ public:
class MetricFormatter : public NumericFormatter
{
private:
@@ -1029,7 +954,7 @@ diff -u -p -u -r1.9 -r1.12
protected:
XubString maCustomUnitText;
-@@ -324,10 +300,8 @@ protected:
+@@ -324,10 +304,8 @@ protected:
virtual XubString CreateFieldText( long nValue ) const;
@@ -1040,7 +965,7 @@ diff -u -p -u -r1.9 -r1.12
public:
~MetricFormatter();
-@@ -368,23 +342,13 @@ class CurrencyFormatter : public Numeric
+@@ -368,23 +346,13 @@ class CurrencyFormatter : public Numeric
{
private:
String maCurrencySymbol;
@@ -1064,7 +989,7 @@ diff -u -p -u -r1.9 -r1.12
public:
~CurrencyFormatter();
-@@ -417,19 +381,13 @@ private:
+@@ -417,19 +385,13 @@ private:
BOOL mbShowDateCentury;
USHORT mnDateFormat;
ULONG mnExtDateFormat;
@@ -1085,7 +1010,7 @@ diff -u -p -u -r1.9 -r1.12
void ImplLoadRes( const ResId& rResId );
const Date& ImplGetFieldDate() const { return maFieldDate; }
BOOL ImplDateReformat( const XubString& rStr, XubString& rOutStr,
-@@ -440,7 +398,8 @@ protected:
+@@ -440,7 +402,8 @@ protected:
const AllSettings& rSettings ) const;
void ImplNewFieldValue( const Date& rDate );
CalendarWrapper& GetCalendarWrapper() const;
@@ -1095,7 +1020,7 @@ diff -u -p -u -r1.9 -r1.12
public:
~DateFormatter();
-@@ -450,11 +409,6 @@ public:
+@@ -450,11 +413,6 @@ public:
virtual void SetLocale( const ::com::sun::star::lang::Locale& rLocale );
@@ -1107,7 +1032,7 @@ diff -u -p -u -r1.9 -r1.12
void SetExtDateFormat( ExtDateFieldFormat eFormat );
ExtDateFieldFormat GetExtDateFormat( BOOL bResolveSystemFormat = FALSE ) const;
-@@ -489,6 +443,23 @@ public:
+@@ -489,6 +447,23 @@ public:
static void ExpandCentury( Date& rDate );
static void ExpandCentury( Date& rDate, USHORT nTwoDigitYearStart );
@@ -1131,7 +1056,7 @@ diff -u -p -u -r1.9 -r1.12
};
-@@ -507,27 +478,20 @@ private:
+@@ -507,27 +482,20 @@ private:
USHORT mnTimeFormat;
BOOL mbDuration;
BOOL mbEmptyTime;
@@ -1161,7 +1086,7 @@ diff -u -p -u -r1.9 -r1.12
public:
~TimeFormatter();
-@@ -557,6 +521,23 @@ public:
+@@ -557,6 +525,23 @@ public:
void SetEmptyTime() { FormatterBase::SetEmptyFieldValue(); }
BOOL IsEmptyTime() const { return FormatterBase::IsEmptyFieldValue(); }
Time GetCorrectedTime() const { return maCorrectedTime; }
@@ -1185,7 +1110,7 @@ diff -u -p -u -r1.9 -r1.12
};
-@@ -583,10 +564,8 @@ public:
+@@ -583,10 +568,8 @@ public:
class NumericField : public SpinField, public NumericFormatter
{
@@ -1196,7 +1121,7 @@ diff -u -p -u -r1.9 -r1.12
public:
NumericField( Window* pParent, WinBits nWinStyle );
-@@ -612,10 +591,8 @@ public:
+@@ -612,10 +595,8 @@ public:
class MetricField : public SpinField, public MetricFormatter
{
@@ -1207,7 +1132,7 @@ diff -u -p -u -r1.9 -r1.12
public:
MetricField( Window* pParent, WinBits nWinStyle );
-@@ -663,10 +640,8 @@ public:
+@@ -663,10 +644,8 @@ public:
class CurrencyField : public SpinField, public CurrencyFormatter
{
@@ -1218,7 +1143,7 @@ diff -u -p -u -r1.9 -r1.12
public:
CurrencyField( Window* pParent, WinBits nWinStyle );
-@@ -696,11 +671,9 @@ private:
+@@ -696,11 +675,9 @@ private:
Date maFirst;
Date maLast;
@@ -1230,7 +1155,7 @@ diff -u -p -u -r1.9 -r1.12
public:
DateField( Window* pParent, WinBits nWinStyle );
-@@ -739,11 +707,9 @@ private:
+@@ -739,11 +716,9 @@ private:
Time maFirst;
Time maLast;
@@ -1244,12 +1169,8 @@ diff -u -p -u -r1.9 -r1.12
TimeField( Window* pParent, WinBits nWinStyle );
Index: vcl/inc/fixbrd.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/fixbrd.hxx,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -p -u -r1.2 -r1.3
---- vcl/inc/fixbrd.hxx 7 Dec 2000 13:37:15 -0000 1.2
-+++ vcl/inc/fixbrd.hxx 6 Jan 2004 12:57:59 -0000 1.3
+--- vcl/inc/fixbrd.hxx.orig 2004-09-12 14:26:21.680976456 +0200
++++ vcl/inc/fixbrd.hxx 2004-09-12 14:54:44.800063000 +0200
@@ -91,18 +91,13 @@ class FixedBorder : public Control
private:
USHORT mnType;
@@ -1271,12 +1192,8 @@ diff -u -p -u -r1.2 -r1.3
FixedBorder( Window* pParent, WinBits nStyle = 0 );
Index: vcl/inc/fixed.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/fixed.hxx,v
-retrieving revision 1.5
-retrieving revision 1.6
-diff -u -p -u -r1.5 -r1.6
---- vcl/inc/fixed.hxx 29 Apr 2002 17:46:17 -0000 1.5
-+++ vcl/inc/fixed.hxx 6 Jan 2004 12:58:20 -0000 1.6
+--- vcl/inc/fixed.hxx.orig 2004-09-12 14:26:21.681976304 +0200
++++ vcl/inc/fixed.hxx 2004-09-12 14:54:44.801062848 +0200
@@ -84,14 +84,12 @@ class UserDrawEvent;
class FixedText : public Control
{
@@ -1355,12 +1272,8 @@ diff -u -p -u -r1.5 -r1.6
FixedImage( Window* pParent, WinBits nStyle = 0 );
Index: vcl/inc/floatwin.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/floatwin.hxx,v
-retrieving revision 1.5
-retrieving revision 1.6
-diff -u -p -u -r1.5 -r1.6
---- vcl/inc/floatwin.hxx 31 Oct 2001 19:28:50 -0000 1.5
-+++ vcl/inc/floatwin.hxx 6 Jan 2004 12:58:54 -0000 1.6
+--- vcl/inc/floatwin.hxx.orig 2004-09-12 14:26:21.682976152 +0200
++++ vcl/inc/floatwin.hxx 2004-09-12 14:54:44.802062696 +0200
@@ -114,7 +114,6 @@ private:
FloatingWindow* mpNextFloat;
Window* mpFirstPopupModeWin;
@@ -1382,12 +1295,8 @@ diff -u -p -u -r1.5 -r1.6
void ImplInit( Window* pParent, WinBits nStyle );
Index: vcl/inc/fntstyle.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/fntstyle.hxx,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -p -u -r1.2 -r1.3
---- vcl/inc/fntstyle.hxx 23 Mar 2001 11:44:51 -0000 1.2
-+++ vcl/inc/fntstyle.hxx 6 Jan 2004 12:59:13 -0000 1.3
+--- vcl/inc/fntstyle.hxx.orig 2004-09-12 14:26:21.682976152 +0200
++++ vcl/inc/fntstyle.hxx 2004-09-12 14:54:44.802062696 +0200
@@ -62,6 +62,7 @@
#ifndef _VCL_FNTSTYLE_HXX
#define _VCL_FNTSTYLE_HXX
@@ -1398,12 +1307,8 @@ diff -u -p -u -r1.2 -r1.3
// --------------
Index: vcl/inc/font.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/font.hxx,v
-retrieving revision 1.6
-retrieving revision 1.8
-diff -u -p -u -r1.6 -r1.8
---- vcl/inc/font.hxx 1 Aug 2001 12:32:45 -0000 1.6
-+++ vcl/inc/font.hxx 6 Jan 2004 12:59:38 -0000 1.8
+--- vcl/inc/font.hxx.orig 2004-09-12 14:26:21.684975848 +0200
++++ vcl/inc/font.hxx 2004-09-12 14:54:44.803062544 +0200
@@ -71,8 +71,8 @@
#ifndef _TOOLS_LANG_HXX
#include <tools/lang.hxx>
@@ -1428,7 +1333,7 @@ diff -u -p -u -r1.6 -r1.8
class SvStream;
#define FontAlign TextAlign
-@@ -226,16 +220,4 @@ public:
+@@ -226,18 +220,6 @@ public:
friend SvStream& operator>>( SvStream& rIStm, Font& rFont );
friend SvStream& operator<<( SvStream& rOStm, const Font& rFont );
@@ -1445,15 +1350,12 @@ diff -u -p -u -r1.6 -r1.8
-#endif
-
};
-
+
+ #ifndef NOOLDSV
Index: vcl/inc/fontcfg.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/fontcfg.hxx,v
-retrieving revision 1.3
-retrieving revision 1.5
-diff -u -p -u -r1.3 -r1.5
---- vcl/inc/fontcfg.hxx 29 May 2002 13:37:05 -0000 1.3
-+++ vcl/inc/fontcfg.hxx 25 Jun 2004 15:24:19 -0000 1.5
+--- vcl/inc/fontcfg.hxx.orig 2004-09-12 14:26:21.685975696 +0200
++++ vcl/inc/fontcfg.hxx 2004-09-12 14:54:44.806062088 +0200
@@ -66,43 +66,70 @@
#ifndef _UTL_CONFIGITEM_HXX_
#include <unotools/configitem.hxx>
@@ -1607,12 +1509,8 @@ diff -u -p -u -r1.3 -r1.5
Index: vcl/inc/gdimtf.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/gdimtf.hxx,v
-retrieving revision 1.5
-retrieving revision 1.6
-diff -u -p -u -r1.5 -r1.6
---- vcl/inc/gdimtf.hxx 18 Nov 2002 13:42:14 -0000 1.5
-+++ vcl/inc/gdimtf.hxx 6 Jan 2004 13:00:30 -0000 1.6
+--- vcl/inc/gdimtf.hxx.orig 2004-09-12 14:26:21.686975544 +0200
++++ vcl/inc/gdimtf.hxx 2004-09-12 14:54:44.807061936 +0200
@@ -98,6 +98,7 @@ class Gradient;
#ifndef METAFILE_END
#define METAFILE_END GDI_METAFILE_END
@@ -1646,21 +1544,9 @@ diff -u -p -u -r1.5 -r1.6
BOOL operator==( const GDIMetaFile& rMtf ) const;
Index: vcl/inc/glyphcache.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/glyphcache.hxx,v
-retrieving revision 1.19
-retrieving revision 1.22
-diff -u -p -u -r1.19 -r1.22
---- vcl/inc/glyphcache.hxx 2 Jul 2003 13:38:54 -0000 1.19
-+++ vcl/inc/glyphcache.hxx 18 May 2004 10:48:36 -0000 1.22
-@@ -72,6 +72,7 @@ class ServerFontLayout;
-
- #include <tools/gen.hxx>
- #include <hash_map>
-+#include <map>
- #include <hash_set>
-
- struct ImplFontSelectData;
-@@ -90,14 +91,20 @@ bool operator==( const ImplFontSelectDat
+--- vcl/inc/glyphcache.hxx.orig 2004-09-12 14:46:23.370291912 +0200
++++ vcl/inc/glyphcache.hxx 2004-09-12 14:58:34.432153616 +0200
+@@ -91,14 +92,17 @@ bool operator==( const ImplFontSelectDat
// =======================================================================
@@ -1674,28 +1560,12 @@ diff -u -p -u -r1.19 -r1.22
+}
+
+ typedef std::map< sal_Unicode, std::map< sal_Unicode, int > > unicodeKernMap;
+ typedef std::map< int, std::map< int, int > > glyphKernMap;
+
//--------
-+typedef std::map< sal_Unicode, std::map< sal_Unicode, int > > unicodeKernMap;
-+typedef std::map< int, std::map< int, int > > glyphKernMap;
-+
- class GlyphCache
- {
- public:
-@@ -110,7 +117,11 @@ public:
- void ClearFontPath();
- void AddFontPath( const String& rFontPath );
- void AddFontFile( const rtl::OString& rNormalizedName,
-- int nFaceNum, int nFontId, const ImplFontData* );
-+ int nFaceNum,
-+ int nFontId,
-+ const ImplFontData*,
-+ const unicodeKernMap* pUniKernPairs = NULL
-+ );
- long FetchFontList( ImplDevFontList* ) const;
-
- ServerFont* CacheFont( const ImplFontSelectData& );
-@@ -118,7 +129,7 @@ public:
+@@ -124,7 +131,7 @@ public:
void RemoveFont( const ImplFontData* );
private:
@@ -1704,7 +1574,7 @@ diff -u -p -u -r1.19 -r1.22
// used by ServerFont class only
void AddedGlyph( ServerFont& rServerFont, GlyphData& rGlyphData );
void RemovingGlyph( ServerFont& rSF, GlyphData& rGD, int nGlyphIndex );
-@@ -156,7 +167,7 @@ public:
+@@ -162,7 +169,7 @@ public:
long GetCharWidth() const { return mnAdvanceWidth; }
protected:
@@ -1713,51 +1583,10 @@ diff -u -p -u -r1.19 -r1.22
void SetOffset( int nX, int nY ) { maOffset = Point( nX, nY); }
void SetDelta( int nX, int nY ) { maDelta = Point( nX, nY); }
void SetSize( const Size& s ) { maSize = s; }
-@@ -218,8 +229,8 @@ public:
- const ImplFontSelectData& GetFontSelData() const { return maFontSelData; }
-
- virtual void FetchFontMetric( ImplFontMetricData&, long& rFactor ) const = 0;
-- virtual ULONG GetKernPairs( struct ImplKernPairData** ) const = 0;
-- virtual int GetGlyphKernValue( int, int ) const = 0;
-+ virtual ULONG GetKernPairs( struct ImplKernPairData** ) const;
-+ virtual int GetGlyphKernValue( int, int ) const;
- virtual ULONG GetFontCodeRanges( sal_uInt32* pCodes ) const { return 0; }
- Point TransformPoint( const Point& ) const;
-
-@@ -238,9 +249,9 @@ public:
- void* GetExtPointer() { return mpExtData; }
-
- protected:
--friend GlyphCache;
--friend ServerFontLayout;
-- ServerFont( const ImplFontSelectData& );
-+ friend class GlyphCache;
-+ friend class ServerFontLayout;
-+ ServerFont( const ImplFontSelectData&, const glyphKernMap* pGlyphKern = NULL, const unicodeKernMap* pUniKern = NULL );
- virtual ~ServerFont();
-
- void AddRef() const { ++mnRefCount; }
-@@ -273,6 +284,12 @@ private:
- protected:
- long nCos;
- long nSin;
-+
-+ // maps left glyph id to map of right glyphid
-+ // the inner map maps right glyphid to kern value
-+ const glyphKernMap* mpKernPairs;
-+ const unicodeKernMap* mpUnicodeKernPairs;
-+
- };
-
- // =======================================================================
Index: vcl/inc/gradient.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/gradient.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.3
-diff -u -p -u -r1.1.1.1 -r1.3
---- vcl/inc/gradient.hxx 19 Sep 2000 10:23:04 -0000 1.1.1.1
-+++ vcl/inc/gradient.hxx 6 Jan 2004 13:01:22 -0000 1.3
+--- vcl/inc/gradient.hxx.orig 2004-09-12 14:26:21.688975240 +0200
++++ vcl/inc/gradient.hxx 2004-09-12 14:54:44.810061480 +0200
@@ -62,7 +62,10 @@
#ifndef _SV_GRADIENT_HXX
#define _SV_GRADIENT_HXX
@@ -1802,12 +1631,8 @@ diff -u -p -u -r1.1.1.1 -r1.3
#endif // _SV_GRADIENT_HXX
Index: vcl/inc/graph.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/graph.hxx,v
-retrieving revision 1.6
-retrieving revision 1.7
-diff -u -p -u -r1.6 -r1.7
---- vcl/inc/graph.hxx 27 Mar 2003 17:57:21 -0000 1.6
-+++ vcl/inc/graph.hxx 20 Apr 2004 13:53:29 -0000 1.7
+--- vcl/inc/graph.hxx.orig 2004-09-12 14:26:21.689975088 +0200
++++ vcl/inc/graph.hxx 2004-09-12 14:54:44.811061328 +0200
@@ -143,6 +143,8 @@ public:
Bitmap GetBitmap( const Size* pSizePixel ) const;
BitmapEx GetBitmapEx() const;
@@ -1819,12 +1644,8 @@ diff -u -p -u -r1.6 -r1.7
Index: vcl/inc/group.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/group.hxx,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -p -u -r1.2 -r1.3
---- vcl/inc/group.hxx 8 May 2002 16:01:29 -0000 1.2
-+++ vcl/inc/group.hxx 6 Jan 2004 13:01:39 -0000 1.3
+--- vcl/inc/group.hxx.orig 2004-09-12 14:26:21.690974936 +0200
++++ vcl/inc/group.hxx 2004-09-12 14:54:44.811061328 +0200
@@ -75,16 +75,15 @@
class GroupBox : public Control
@@ -1846,12 +1667,8 @@ diff -u -p -u -r1.2 -r1.3
GroupBox( Window* pParent, const ResId& rResId );
Index: vcl/inc/hatch.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/hatch.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.3
-diff -u -p -u -r1.1.1.1 -r1.3
---- vcl/inc/hatch.hxx 19 Sep 2000 10:23:04 -0000 1.1.1.1
-+++ vcl/inc/hatch.hxx 6 Jan 2004 13:01:57 -0000 1.3
+--- vcl/inc/hatch.hxx.orig 2004-09-12 14:26:21.690974936 +0200
++++ vcl/inc/hatch.hxx 2004-09-12 14:54:44.812061176 +0200
@@ -62,7 +62,10 @@
#ifndef _SV_HATCH_HXX
#define _SV_HATCH_HXX
@@ -1897,12 +1714,8 @@ diff -u -p -u -r1.1.1.1 -r1.3
#endif // _SV_HATCH_HXX
Index: vcl/inc/help.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/help.hxx,v
-retrieving revision 1.3.284.1
-retrieving revision 1.5
-diff -u -p -u -r1.3.284.1 -r1.5
---- vcl/inc/help.hxx 9 Jan 2004 18:13:39 -0000 1.3.284.1
-+++ vcl/inc/help.hxx 6 Jan 2004 13:02:14 -0000 1.5
+--- vcl/inc/help.hxx.orig 2004-09-12 14:26:21.691974784 +0200
++++ vcl/inc/help.hxx 2004-09-12 14:54:44.812061176 +0200
@@ -103,6 +103,7 @@ private:
public:
@@ -1913,12 +1726,8 @@ diff -u -p -u -r1.3.284.1 -r1.5
const String& GetHelpFile() const { return maHelpFile; }
Index: vcl/inc/ilstbox.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/ilstbox.hxx,v
-retrieving revision 1.20
-retrieving revision 1.23
-diff -u -p -u -r1.20 -r1.23
---- vcl/inc/ilstbox.hxx 24 Apr 2003 16:29:18 -0000 1.20
-+++ vcl/inc/ilstbox.hxx 18 May 2004 10:48:51 -0000 1.23
+--- vcl/inc/ilstbox.hxx.orig 2004-09-12 14:26:21.693974480 +0200
++++ vcl/inc/ilstbox.hxx 2004-09-12 14:54:44.814060872 +0200
@@ -244,7 +244,7 @@ private:
USHORT mnBorder; // Abstand Rahmen - Text
USHORT mnTextHeight; // Texthoehe
@@ -2113,12 +1922,8 @@ diff -u -p -u -r1.20 -r1.23
Index: vcl/inc/imgcons.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/imgcons.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.2
-diff -u -p -u -r1.1.1.1 -r1.2
---- vcl/inc/imgcons.hxx 19 Sep 2000 10:23:04 -0000 1.1.1.1
-+++ vcl/inc/imgcons.hxx 6 Jan 2004 13:03:07 -0000 1.2
+--- vcl/inc/imgcons.hxx.orig 2004-09-12 14:26:21.694974328 +0200
++++ vcl/inc/imgcons.hxx 2004-09-12 14:54:44.815060720 +0200
@@ -85,7 +85,6 @@ private:
Bitmap maBitmap;
Bitmap maMask;
@@ -2140,12 +1945,8 @@ diff -u -p -u -r1.1.1.1 -r1.2
Index: vcl/inc/imgctrl.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/imgctrl.hxx,v
-retrieving revision 1.4
-retrieving revision 1.5
-diff -u -p -u -r1.4 -r1.5
---- vcl/inc/imgctrl.hxx 15 Aug 2002 14:49:14 -0000 1.4
-+++ vcl/inc/imgctrl.hxx 6 Jan 2004 13:03:24 -0000 1.5
+--- vcl/inc/imgctrl.hxx.orig 2004-09-12 14:26:21.695974176 +0200
++++ vcl/inc/imgctrl.hxx 2004-09-12 14:54:44.816060568 +0200
@@ -74,7 +74,7 @@ class ImageControl : public FixedImage
private:
BitmapEx maBmp;
@@ -2157,12 +1958,8 @@ diff -u -p -u -r1.4 -r1.5
ImageControl( Window* pParent, WinBits nStyle = 0 );
Index: vcl/inc/impbmp.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/impbmp.hxx,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -p -u -r1.2 -r1.3
---- vcl/inc/impbmp.hxx 7 Dec 2000 13:37:15 -0000 1.2
-+++ vcl/inc/impbmp.hxx 1 Dec 2003 12:53:44 -0000 1.3
+--- vcl/inc/impbmp.hxx.orig 2004-09-12 14:26:21.696974024 +0200
++++ vcl/inc/impbmp.hxx 2004-09-12 14:54:44.816060568 +0200
@@ -92,11 +92,7 @@ private:
ULONG mnRefCount;
ULONG mnChecksum;
@@ -2219,12 +2016,8 @@ diff -u -p -u -r1.2 -r1.3
Index: vcl/inc/impgraph.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/impgraph.hxx,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -p -u -r1.3 -r1.4
---- vcl/inc/impgraph.hxx 24 Aug 2001 14:07:49 -0000 1.3
-+++ vcl/inc/impgraph.hxx 20 Apr 2004 13:53:44 -0000 1.4
+--- vcl/inc/impgraph.hxx.orig 2004-09-12 14:26:21.697973872 +0200
++++ vcl/inc/impgraph.hxx 2004-09-12 14:54:44.817060416 +0200
@@ -144,8 +144,8 @@ private:
BOOL ImplIsAlpha() const;
BOOL ImplIsAnimated() const;
@@ -2238,12 +2031,8 @@ diff -u -p -u -r1.3 -r1.4
Index: vcl/inc/jobset.h
===================================================================
-RCS file: /cvs/gsl/vcl/inc/jobset.h,v
-retrieving revision 1.5
-retrieving revision 1.6
-diff -u -p -u -r1.5 -r1.6
---- vcl/inc/jobset.h 6 Mar 2002 11:13:54 -0000 1.5
-+++ vcl/inc/jobset.h 6 Jan 2004 13:03:42 -0000 1.6
+--- vcl/inc/jobset.h.orig 2004-09-12 14:26:21.697973872 +0200
++++ vcl/inc/jobset.h 2004-09-12 14:54:44.817060416 +0200
@@ -72,7 +72,7 @@
#ifndef _SV_PRNTYPES_HXX
#include <prntypes.hxx>
@@ -2255,12 +2044,8 @@ diff -u -p -u -r1.5 -r1.6
#ifndef _RTL_USTRING_
Index: vcl/inc/jobset.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/jobset.hxx,v
-retrieving revision 1.4
-retrieving revision 1.5
-diff -u -p -u -r1.4 -r1.5
---- vcl/inc/jobset.hxx 19 Dec 2001 14:43:31 -0000 1.4
-+++ vcl/inc/jobset.hxx 1 Dec 2003 12:54:41 -0000 1.5
+--- vcl/inc/jobset.hxx.orig 2004-09-12 14:26:21.698973720 +0200
++++ vcl/inc/jobset.hxx 2004-09-12 14:54:44.818060264 +0200
@@ -75,10 +75,6 @@
class SvStream;
struct ImplJobSetup;
@@ -2285,12 +2070,8 @@ diff -u -p -u -r1.4 -r1.5
BOOL operator!=( const JobSetup& rJobSetup ) const
Index: vcl/inc/keycod.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/keycod.hxx,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -p -u -r1.2 -r1.3
---- vcl/inc/keycod.hxx 27 Feb 2002 12:11:26 -0000 1.2
-+++ vcl/inc/keycod.hxx 6 Jan 2004 13:03:58 -0000 1.3
+--- vcl/inc/keycod.hxx.orig 2004-09-12 14:26:21.699973568 +0200
++++ vcl/inc/keycod.hxx 2004-09-12 14:54:44.818060264 +0200
@@ -69,8 +69,8 @@
#ifndef _SV_SV_H
#include <sv.h>
@@ -2304,12 +2085,8 @@ diff -u -p -u -r1.2 -r1.3
#include <keycodes.hxx>
Index: vcl/inc/keycodes.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/keycodes.hxx,v
-retrieving revision 1.2.250.1
-retrieving revision 1.5
-diff -u -p -u -r1.2.250.1 -r1.5
---- vcl/inc/keycodes.hxx 9 Jan 2004 18:13:39 -0000 1.2.250.1
-+++ vcl/inc/keycodes.hxx 17 Mar 2004 10:04:17 -0000 1.5
+--- vcl/inc/keycodes.hxx.orig 2004-09-12 14:26:21.700973416 +0200
++++ vcl/inc/keycodes.hxx 2004-09-12 14:54:44.819060112 +0200
@@ -70,7 +70,7 @@
// - KeyCode-Types -
// -----------------
@@ -2329,12 +2106,8 @@ diff -u -p -u -r1.2.250.1 -r1.5
Index: vcl/inc/lineinfo.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/lineinfo.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.2
-diff -u -p -u -r1.1.1.1 -r1.2
---- vcl/inc/lineinfo.hxx 19 Sep 2000 10:23:05 -0000 1.1.1.1
-+++ vcl/inc/lineinfo.hxx 4 Sep 2003 07:41:49 -0000 1.2
+--- vcl/inc/lineinfo.hxx.orig 2004-09-12 14:26:21.701973264 +0200
++++ vcl/inc/lineinfo.hxx 2004-09-12 14:54:44.819060112 +0200
@@ -140,31 +140,6 @@ public:
friend SvStream& operator>>( SvStream& rIStm, LineInfo& rLineInfo );
@@ -2369,12 +2142,8 @@ diff -u -p -u -r1.1.1.1 -r1.2
#endif // _SV_LINEINFO_HXX
Index: vcl/inc/longcurr.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/longcurr.hxx,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -p -u -r1.3 -r1.4
---- vcl/inc/longcurr.hxx 29 Jun 2001 10:17:29 -0000 1.3
-+++ vcl/inc/longcurr.hxx 6 Jan 2004 13:04:51 -0000 1.4
+--- vcl/inc/longcurr.hxx.orig 2004-09-12 14:26:21.702973112 +0200
++++ vcl/inc/longcurr.hxx 2004-09-12 14:54:44.820059960 +0200
@@ -77,12 +77,9 @@ class LocaleDataWrapper;
class LongCurrencyFormatter : public FormatterBase
@@ -2400,24 +2169,21 @@ diff -u -p -u -r1.3 -r1.4
LongCurrencyFormatter();
void ImplLoadRes( const ResId& rResId );
-@@ -141,9 +135,7 @@ public:
+@@ -141,10 +135,8 @@ public:
class LongCurrencyField : public SpinField, public LongCurrencyFormatter
{
#if _SOLAR__PRIVATE
-#ifdef VCL_LONGCURR_CXX
friend void ImplNewLongCurrencyFieldValue( LongCurrencyField*, BigInt );
--#endif
#endif
+-#endif
private:
+ BigInt mnSpinSize;
Index: vcl/inc/lstbox.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/lstbox.hxx,v
-retrieving revision 1.12
-retrieving revision 1.14
-diff -u -p -u -r1.12 -r1.14
---- vcl/inc/lstbox.hxx 1 Nov 2002 09:00:27 -0000 1.12
-+++ vcl/inc/lstbox.hxx 18 May 2004 10:49:04 -0000 1.14
+--- vcl/inc/lstbox.hxx.orig 2004-09-12 14:26:21.703972960 +0200
++++ vcl/inc/lstbox.hxx 2004-09-12 14:54:44.821059808 +0200
@@ -232,6 +232,9 @@ public:
USHORT GetMaxMRUCount() const;
@@ -2428,15 +2194,10 @@ diff -u -p -u -r1.12 -r1.14
};
-
Index: vcl/inc/mapmod.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/mapmod.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.2
-diff -u -p -u -r1.1.1.1 -r1.2
---- vcl/inc/mapmod.hxx 19 Sep 2000 10:23:05 -0000 1.1.1.1
-+++ vcl/inc/mapmod.hxx 7 Jan 2004 09:06:47 -0000 1.2
+--- vcl/inc/mapmod.hxx.orig 2004-09-12 14:26:21.704972808 +0200
++++ vcl/inc/mapmod.hxx 2004-09-12 14:54:44.821059808 +0200
@@ -72,8 +72,8 @@
#ifndef _SV_SV_H
#include <sv.h>
@@ -2472,12 +2233,8 @@ diff -u -p -u -r1.1.1.1 -r1.2
MapMode();
Index: vcl/inc/menu.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/menu.hxx,v
-retrieving revision 1.26.112.1
-retrieving revision 1.30
-diff -u -p -u -r1.26.112.1 -r1.30
---- vcl/inc/menu.hxx 13 Nov 2003 16:48:20 -0000 1.26.112.1
-+++ vcl/inc/menu.hxx 25 Feb 2004 17:29:29 -0000 1.30
+--- vcl/inc/menu.hxx.orig 2004-09-12 14:26:21.706972504 +0200
++++ vcl/inc/menu.hxx 2004-09-12 14:54:44.823059504 +0200
@@ -66,20 +66,20 @@
#include <sv.h>
#endif
@@ -2505,8 +2262,7 @@ diff -u -p -u -r1.26.112.1 -r1.30
#endif
#ifndef _VCL_VCLEVENT_HXX
-@@ -103,7 +103,9 @@ class KeyEvent;
- class AppBarWindow;
+@@ -104,6 +104,8 @@ class AppBarWindow;
class MenuFloatingWindow;
class Window;
class AccessObjectRef;
@@ -2515,7 +2271,7 @@ diff -u -p -u -r1.26.112.1 -r1.30
namespace com {
namespace sun {
-@@ -126,11 +127,11 @@ namespace vcl { struct MenuLayoutData; }
+@@ -126,11 +128,11 @@ namespace vcl { struct MenuLayoutData; }
#define POPUPMENU_EXECUTE_LEFT ((USHORT)0x0004)
#define POPUPMENU_EXECUTE_RIGHT ((USHORT)0x0008)
@@ -2529,7 +2285,7 @@ diff -u -p -u -r1.26.112.1 -r1.30
typedef USHORT MenuItemBits;
#define MIB_CHECKABLE ((MenuItemBits)0x0001)
#define MIB_RADIOCHECK ((MenuItemBits)0x0002)
-@@ -151,12 +152,10 @@ struct MenuLogo
+@@ -151,12 +153,10 @@ struct MenuLogo
BitmapEx aBitmap;
Color aStartColor;
Color aEndColor;
@@ -2542,7 +2298,7 @@ diff -u -p -u -r1.26.112.1 -r1.30
friend class MenuBar;
friend class MenuBarWindow;
friend class MenuFloatingWindow;
-@@ -164,6 +163,7 @@ class Menu : public Resource
+@@ -164,6 +164,7 @@ class Menu : public Resource
friend class SystemWindow;
private:
@@ -2550,7 +2306,7 @@ diff -u -p -u -r1.26.112.1 -r1.30
MenuItemList* pItemList; // Liste mit den MenuItems
MenuLogo* pLogo;
Menu* pStartedFrom;
-@@ -180,7 +180,7 @@ private:
+@@ -180,7 +181,7 @@ private:
XubString aTitleText; // PopupMenu-Text
ULONG nEventId;
@@ -2559,7 +2315,7 @@ diff -u -p -u -r1.26.112.1 -r1.30
USHORT nMenuFlags;
USHORT nDefaultItem; // Id vom Default-Item
USHORT nSelectedId;
-@@ -197,16 +197,14 @@ private:
+@@ -197,16 +198,14 @@ private:
::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > mxAccessible;
mutable vcl::MenuLayoutData* mpLayoutData;
@@ -2578,7 +2334,7 @@ diff -u -p -u -r1.26.112.1 -r1.30
Size ImplCalcSize( Window* pWin );
BOOL ImplIsVisible( USHORT nPos ) const;
USHORT ImplGetVisibleItemCount() const;
-@@ -220,11 +218,16 @@ protected:
+@@ -220,11 +219,16 @@ protected:
DECL_LINK( ImplCallSelect, Menu* );
void ImplFillLayoutData() const;
@@ -2595,7 +2351,7 @@ diff -u -p -u -r1.26.112.1 -r1.30
Window* ImplGetWindow() const { return pWindow; }
public:
-@@ -315,7 +318,10 @@ public:
+@@ -315,7 +319,10 @@ public:
void SetTipHelpText( USHORT nItemId, const XubString& rString );
const XubString& GetTipHelpText( USHORT nItemId ) const;
@@ -2607,7 +2363,7 @@ diff -u -p -u -r1.26.112.1 -r1.30
ULONG GetHelpId( USHORT nItemId ) const;
void SetActivateHdl( const Link& rLink ) { aActivateHdl = rLink; }
-@@ -342,6 +348,9 @@ public:
+@@ -347,6 +354,9 @@ public:
// Fuer Menu-'Funktionen'
MenuItemList* GetItemList() const { return pItemList; }
@@ -2617,7 +2373,7 @@ diff -u -p -u -r1.26.112.1 -r1.30
// accessibility helpers
-@@ -393,14 +400,13 @@ public:
+@@ -393,14 +403,13 @@ public:
class MenuBar : public Menu
{
@@ -2633,7 +2389,7 @@ diff -u -p -u -r1.26.112.1 -r1.30
#if _SOLAR__PRIVATE
friend class Application;
-@@ -431,6 +437,10 @@ public:
+@@ -431,6 +440,10 @@ public:
void ShowButtons( BOOL bClose, BOOL bFloat, BOOL bHide );
void SelectEntry( USHORT nId );
@@ -2644,7 +2400,7 @@ diff -u -p -u -r1.26.112.1 -r1.30
void SetCloserHdl( const Link& rLink ) { maCloserHdl = rLink; }
const Link& GetCloserHdl() const { return maCloserHdl; }
-@@ -438,6 +448,14 @@ public:
+@@ -438,6 +451,14 @@ public:
const Link& GetFloatButtonClickHdl() const { return maFloatHdl; }
void SetHideButtonClickHdl( const Link& rLink ) { maHideHdl = rLink; }
const Link& GetHideButtonClickHdl() const { return maHideHdl; }
@@ -2661,12 +2417,8 @@ diff -u -p -u -r1.26.112.1 -r1.30
inline MenuBar& MenuBar::operator =( const MenuBar& rMenu )
Index: vcl/inc/menubtn.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/menubtn.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.2
-diff -u -p -u -r1.1.1.1 -r1.2
---- vcl/inc/menubtn.hxx 19 Sep 2000 10:23:05 -0000 1.1.1.1
-+++ vcl/inc/menubtn.hxx 7 Jan 2004 09:07:50 -0000 1.2
+--- vcl/inc/menubtn.hxx.orig 2004-09-12 14:26:21.707972352 +0200
++++ vcl/inc/menubtn.hxx 2004-09-12 14:54:44.823059504 +0200
@@ -86,7 +86,6 @@ class MenuButton : public PushButton
{
private:
@@ -2689,12 +2441,8 @@ diff -u -p -u -r1.1.1.1 -r1.2
void ImplInit( Window* pParent, WinBits nStyle );
Index: vcl/inc/metaact.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/metaact.hxx,v
-retrieving revision 1.4.252.1
-retrieving revision 1.7
-diff -u -p -u -r1.4.252.1 -r1.7
---- vcl/inc/metaact.hxx 9 Jan 2004 18:13:40 -0000 1.4.252.1
-+++ vcl/inc/metaact.hxx 17 Jun 2004 12:05:02 -0000 1.7
+--- vcl/inc/metaact.hxx.orig 2004-09-12 14:26:21.709972048 +0200
++++ vcl/inc/metaact.hxx 2004-09-12 14:54:44.825059200 +0200
@@ -74,8 +74,8 @@
#ifndef _SV_FONT_HXX
#include <font.hxx>
@@ -2735,12 +2483,8 @@ diff -u -p -u -r1.4.252.1 -r1.7
// -------------------------
Index: vcl/inc/msgbox.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/msgbox.hxx,v
-retrieving revision 1.5
-retrieving revision 1.6
-diff -u -p -u -r1.5 -r1.6
---- vcl/inc/msgbox.hxx 24 Oct 2002 10:56:12 -0000 1.5
-+++ vcl/inc/msgbox.hxx 7 Jan 2004 09:08:49 -0000 1.6
+--- vcl/inc/msgbox.hxx.orig 2004-09-12 14:26:21.710971896 +0200
++++ vcl/inc/msgbox.hxx 2004-09-12 14:54:44.826059048 +0200
@@ -118,12 +118,9 @@ protected:
XubString maCheckBoxText;
BOOL mbCheck;
@@ -2800,12 +2544,8 @@ diff -u -p -u -r1.5 -r1.6
QueryBox( Window* pParent, WinBits nStyle,
Index: vcl/inc/opengl.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/opengl.hxx,v
-retrieving revision 1.3
-retrieving revision 1.5
-diff -u -p -u -r1.3 -r1.5
---- vcl/inc/opengl.hxx 15 Mar 2002 17:10:25 -0000 1.3
-+++ vcl/inc/opengl.hxx 7 Jan 2004 09:09:11 -0000 1.5
+--- vcl/inc/opengl.hxx.orig 2004-09-12 14:26:21.711971744 +0200
++++ vcl/inc/opengl.hxx 2004-09-12 14:54:44.827058896 +0200
@@ -80,22 +80,13 @@ class RmOpenGL;
class OpenGL
{
@@ -2832,12 +2572,8 @@ diff -u -p -u -r1.3 -r1.5
OpenGL( OutputDevice* pOutDev );
Index: vcl/inc/outdata.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/outdata.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.3
-diff -u -p -u -r1.1.1.1 -r1.3
---- vcl/inc/outdata.hxx 19 Sep 2000 10:23:05 -0000 1.1.1.1
-+++ vcl/inc/outdata.hxx 7 Jan 2004 09:09:31 -0000 1.3
+--- vcl/inc/outdata.hxx.orig 2004-09-12 14:26:21.712971592 +0200
++++ vcl/inc/outdata.hxx 2004-09-12 14:54:44.827058896 +0200
@@ -66,8 +66,8 @@
#include <sv.h>
#endif
@@ -2864,12 +2600,8 @@ diff -u -p -u -r1.1.1.1 -r1.3
{
Index: vcl/inc/outdev.h
===================================================================
-RCS file: /cvs/gsl/vcl/inc/outdev.h,v
-retrieving revision 1.13
-retrieving revision 1.14
-diff -u -p -u -r1.13 -r1.14
---- vcl/inc/outdev.h 27 Mar 2003 17:57:25 -0000 1.13
-+++ vcl/inc/outdev.h 7 Jan 2004 09:09:50 -0000 1.14
+--- vcl/inc/outdev.h.orig 2004-09-12 14:26:21.713971440 +0200
++++ vcl/inc/outdev.h 2004-09-12 14:54:44.828058744 +0200
@@ -263,7 +263,6 @@ private:
ImplFontEntry* mpFirstEntry;
USHORT mnRef0Count;
@@ -2880,12 +2612,8 @@ diff -u -p -u -r1.13 -r1.14
ImplFontCache( BOOL bPrinter );
Index: vcl/inc/outdev.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/outdev.hxx,v
-retrieving revision 1.40
-retrieving revision 1.51
-diff -u -p -u -r1.40 -r1.51
---- vcl/inc/outdev.hxx 6 Jun 2003 10:29:59 -0000 1.40
-+++ vcl/inc/outdev.hxx 17 Jun 2004 12:05:32 -0000 1.51
+--- vcl/inc/outdev.hxx.orig 2004-09-12 14:26:21.717970832 +0200
++++ vcl/inc/outdev.hxx 2004-09-12 14:54:44.832058136 +0200
@@ -71,11 +71,11 @@
#ifndef _SV_SV_H
#include <sv.h>
@@ -2921,8 +2649,7 @@ diff -u -p -u -r1.40 -r1.51
class Gradient;
class Hatch;
class Bitmap;
-@@ -139,7 +138,10 @@ namespace awt {
- typedef std::vector< Rectangle > MetricVector;
+@@ -147,6 +146,9 @@ typedef std::vector< Rectangle > MetricV
namespace vcl { class PDFWriterImpl; }
@@ -2932,7 +2659,7 @@ diff -u -p -u -r1.40 -r1.51
// ---------------------
// - OutputDevice-Data -
// ---------------------
-@@ -196,7 +194,9 @@ struct KerningPair
+@@ -196,7 +198,9 @@ struct KerningPair
#define PUSH_TEXTALIGN ((USHORT)0x0100)
#define PUSH_REFPOINT ((USHORT)0x0200)
#define PUSH_TEXTLINECOLOR ((USHORT)0x0400)
@@ -2943,7 +2670,7 @@ diff -u -p -u -r1.40 -r1.51
#define PUSH_ALLFONT (PUSH_ALLTEXT | PUSH_FONT)
#define PUSH_ALL ((USHORT)0xFFFF)
-@@ -224,10 +224,11 @@ struct KerningPair
+@@ -224,10 +228,11 @@ struct KerningPair
#define IMAGE_DRAW_DISABLE ((USHORT)0x0001)
#define IMAGE_DRAW_HIGHLIGHT ((USHORT)0x0002)
#define IMAGE_DRAW_DEACTIVE ((USHORT)0x0004)
@@ -2957,7 +2684,7 @@ diff -u -p -u -r1.40 -r1.51
#define IMAGE_DRAW_BTNLOOK 0
// WaveLine
-@@ -327,20 +328,24 @@ enum OutDevViewType { OUTDEV_VIEWTYPE_DO
+@@ -327,20 +332,24 @@ enum OutDevViewType { OUTDEV_VIEWTYPE_DO
class OutputDevice : public Resource
{
@@ -2993,7 +2720,7 @@ diff -u -p -u -r1.40 -r1.51
mutable OutputDevice* mpPrevGraphics;
mutable OutputDevice* mpNextGraphics;
GDIMetaFile* mpMetaFile;
-@@ -354,7 +359,10 @@ private:
+@@ -354,7 +363,10 @@ private:
List* mpUnoGraphicsList;
OutDev3D* mp3DContext;
vcl::PDFWriterImpl* mpPDFWriter;
@@ -3005,7 +2732,7 @@ diff -u -p -u -r1.40 -r1.51
/// Additional output pixel offset, applied in LogicToPixel (used by SetPixelOffset/GetPixelOffset)
long mnOutOffOrigX;
/// Additional output offset in _logical_ coordinates, applied in PixelToLogic (used by SetPixelOffset/GetPixelOffset)
-@@ -369,8 +377,8 @@ private:
+@@ -369,8 +381,8 @@ private:
long mnOutOffY;
long mnOutWidth;
long mnOutHeight;
@@ -3016,7 +2743,7 @@ diff -u -p -u -r1.40 -r1.51
/// Output offset for text alignment in pixel
long mnTextOffX;
/// Output offset for text alignment in pixel
-@@ -379,7 +387,6 @@ private:
+@@ -379,7 +391,6 @@ private:
long mnEmphasisDescent;
ULONG mnDrawMode;
ULONG mnTextLayoutMode;
@@ -3024,7 +2751,7 @@ diff -u -p -u -r1.40 -r1.51
ImplMapRes maMapRes;
ImplThresholdRes maThresRes;
OutDevType meOutDevType;
-@@ -389,7 +396,6 @@ private:
+@@ -389,7 +400,6 @@ private:
Color maFillColor;
Font maFont;
Color maTextColor;
@@ -3032,7 +2759,7 @@ diff -u -p -u -r1.40 -r1.51
Color maTextLineColor;
TextAlign meTextAlign;
RasterOp meRasterOp;
-@@ -399,8 +405,6 @@ private:
+@@ -399,8 +409,6 @@ private:
Point maRefPoint;
USHORT mnAntialiasing;
LanguageType meTextLanguage;
@@ -3041,7 +2768,7 @@ diff -u -p -u -r1.40 -r1.51
mutable BOOL mbMap:1,
mbMapIsDefault:1,
mbClipRegion:1,
-@@ -421,12 +425,121 @@ private:
+@@ -421,12 +429,121 @@ private:
mbTextLines:1,
mbTextSpecial:1,
mbRefPoint:1,
@@ -3167,7 +2894,7 @@ diff -u -p -u -r1.40 -r1.51
#endif
protected:
-@@ -459,15 +572,15 @@ public:
+@@ -459,15 +576,15 @@ public:
xub_StrLen nLen = STRING_LEN ) const;
long GetTextHeight() const;
void DrawTextArray( const Point& rStartPt, const XubString& rStr,
@@ -3187,7 +2914,7 @@ diff -u -p -u -r1.40 -r1.51
BOOL bCellBreaking = TRUE ) const;
void DrawStretchText( const Point& rStartPt, ULONG nWidth,
const XubString& rStr,
-@@ -505,10 +618,10 @@ public:
+@@ -505,10 +622,10 @@ public:
xub_StrLen nLen = STRING_LEN ) const;
BOOL GetTextOutline( PolyPolygon&,
const String& rStr, xub_StrLen nBase = 0, xub_StrLen nIndex = 0,
@@ -3200,7 +2927,7 @@ diff -u -p -u -r1.40 -r1.51
BOOL GetGlyphBoundRects( const Point& rOrigin, const String& rStr, int nIndex,
int nLen, int nBase, MetricVector& rVector );
-@@ -517,10 +630,52 @@ public:
+@@ -526,10 +643,52 @@ public:
void DrawLine( const Point& rStartPt, const Point& rEndPt );
void DrawLine( const Point& rStartPt, const Point& rEndPt,
const LineInfo& rLineInfo );
@@ -3253,7 +2980,7 @@ diff -u -p -u -r1.40 -r1.51
void DrawPolyPolygon( const PolyPolygon& rPolyPoly );
void DrawRect( const Rectangle& rRect );
void DrawRect( const Rectangle& rRect,
-@@ -606,17 +755,21 @@ public:
+@@ -606,17 +765,21 @@ public:
Bitmap GetBitmap( const Point& rSrcPt, const Size& rSize ) const;
@@ -3278,7 +3005,7 @@ diff -u -p -u -r1.40 -r1.51
BOOL IsOutputEnabled() const { return mbOutput; }
BOOL IsDeviceOutput() const { return mbDevOutput; }
BOOL IsDeviceOutputNecessary() const { return (mbOutput && mbDevOutput); }
-@@ -676,7 +829,7 @@ public:
+@@ -676,7 +839,7 @@ public:
void SetFont( const Font& rNewFont );
const Font& GetFont() const { return maFont; }
void SetTextColor( const Color& rColor );
@@ -3287,7 +3014,7 @@ diff -u -p -u -r1.40 -r1.51
void SetTextFillColor();
void SetTextFillColor( const Color& rColor );
-@@ -689,6 +842,6 @@ public:
+@@ -689,7 +852,7 @@ public:
void SetTextAlign( TextAlign eAlign );
TextAlign GetTextAlign() const { return maFont.GetAlign(); }
@@ -3295,7 +3022,8 @@ diff -u -p -u -r1.40 -r1.51
+ void SetSettings( const AllSettings& rSettings );
const AllSettings& GetSettings() const { return maSettings; }
-@@ -811,6 +953,11 @@ public:
+ #ifndef NOOLDSV
+@@ -811,6 +974,11 @@ public:
Size GetOutputSizePixel() const
{ return Size( mnOutWidth, mnOutHeight ); }
@@ -3307,7 +3035,9 @@ diff -u -p -u -r1.40 -r1.51
Size GetOutputSize() const
{ return PixelToLogic( GetOutputSizePixel() ); }
-@@ -831,9 +978,22 @@ public:
+@@ -836,11 +1004,24 @@ public:
+ #endif
+
USHORT GetBitCount() const;
+
+ /** Query the existence and depth of the alpha channel
@@ -3330,15 +3060,10 @@ diff -u -p -u -r1.40 -r1.51
void DrawEPS( const Point& rPt, const Size& rSz,
const GfxLink& rGfxLink, GDIMetaFile* pSubst = NULL );
-
Index: vcl/inc/pdfwriter.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/pdfwriter.hxx,v
-retrieving revision 1.6
-retrieving revision 1.8
-diff -u -p -u -r1.6 -r1.8
---- vcl/inc/pdfwriter.hxx 28 May 2003 12:29:54 -0000 1.6
-+++ vcl/inc/pdfwriter.hxx 17 Jun 2004 12:05:47 -0000 1.8
+--- vcl/inc/pdfwriter.hxx.orig 2004-09-12 14:26:21.718970680 +0200
++++ vcl/inc/pdfwriter.hxx 2004-09-12 14:54:44.833057984 +0200
@@ -73,7 +73,7 @@
#ifndef _STRING_HXX
#include <tools/string.hxx>
@@ -3359,10 +3084,8 @@ diff -u -p -u -r1.6 -r1.8
void DrawStretchText( const Point& rStartPt, ULONG nWidth,
Index: vcl/inc/pngread.hxx
===================================================================
-RCS file: vcl/inc/pngread.hxx
-diff -N vcl/inc/pngread.hxx
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/inc/pngread.hxx 28 Jun 2004 16:05:43 -0000 1.3
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ vcl/inc/pngread.hxx 2004-09-12 14:54:44.833057984 +0200
@@ -0,0 +1,101 @@
+/*************************************************************************
+ *
@@ -3467,10 +3190,8 @@ diff -N vcl/inc/pngread.hxx
+#endif // _SV_PNGREAD_HXX
Index: vcl/inc/pngwrite.hxx
===================================================================
-RCS file: vcl/inc/pngwrite.hxx
-diff -N vcl/inc/pngwrite.hxx
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/inc/pngwrite.hxx 28 Jun 2004 16:05:57 -0000 1.3
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ vcl/inc/pngwrite.hxx 2004-09-12 14:54:44.834057832 +0200
@@ -0,0 +1,106 @@
+/*************************************************************************
+ *
@@ -3580,12 +3301,8 @@ diff -N vcl/inc/pngwrite.hxx
+#endif // _SV_PNGWRITE_HXX
Index: vcl/inc/print.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/print.hxx,v
-retrieving revision 1.17
-retrieving revision 1.19
-diff -u -p -u -r1.17 -r1.19
---- vcl/inc/print.hxx 27 Mar 2003 17:57:29 -0000 1.17
-+++ vcl/inc/print.hxx 7 Jan 2004 09:11:49 -0000 1.19
+--- vcl/inc/print.hxx.orig 2004-09-12 14:26:21.721970224 +0200
++++ vcl/inc/print.hxx 2004-09-12 14:54:44.835057680 +0200
@@ -85,12 +85,9 @@
#include <tools/stream.hxx>
#endif
@@ -3685,12 +3402,8 @@ diff -u -p -u -r1.17 -r1.19
public:
Index: vcl/inc/regband.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/regband.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.2
-diff -u -p -u -r1.1.1.1 -r1.2
---- vcl/inc/regband.hxx 19 Sep 2000 10:23:06 -0000 1.1.1.1
-+++ vcl/inc/regband.hxx 7 Jan 2004 09:13:14 -0000 1.2
+--- vcl/inc/regband.hxx.orig 2004-09-12 14:26:21.722970072 +0200
++++ vcl/inc/regband.hxx 2004-09-12 14:54:44.836057528 +0200
@@ -65,8 +65,8 @@
#ifndef _SV_SV_H
#include <sv.h>
@@ -3704,12 +3417,8 @@ diff -u -p -u -r1.1.1.1 -r1.2
/* =======================================================================
Index: vcl/inc/region.h
===================================================================
-RCS file: /cvs/gsl/vcl/inc/region.h,v
-retrieving revision 1.1.1.1
-retrieving revision 1.2
-diff -u -p -u -r1.1.1.1 -r1.2
---- vcl/inc/region.h 19 Sep 2000 10:23:06 -0000 1.1.1.1
-+++ vcl/inc/region.h 7 Jan 2004 09:13:32 -0000 1.2
+--- vcl/inc/region.h.orig 2004-09-12 14:26:21.722970072 +0200
++++ vcl/inc/region.h 2004-09-12 14:54:44.836057528 +0200
@@ -68,8 +68,8 @@
#ifndef _SV_REGBAND_HXX
#include <regband.hxx>
@@ -3723,12 +3432,8 @@ diff -u -p -u -r1.1.1.1 -r1.2
#ifndef _SV_REGION_HXX
Index: vcl/inc/region.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/region.hxx,v
-retrieving revision 1.3
-retrieving revision 1.5
-diff -u -p -u -r1.3 -r1.5
---- vcl/inc/region.hxx 18 Jun 2001 12:53:13 -0000 1.3
-+++ vcl/inc/region.hxx 7 Jan 2004 09:13:51 -0000 1.5
+--- vcl/inc/region.hxx.orig 2004-09-12 14:26:21.728969160 +0200
++++ vcl/inc/region.hxx 2004-09-12 14:54:44.837057376 +0200
@@ -91,11 +91,30 @@ typedef long RegionHandle;
class Region
@@ -3775,10 +3480,8 @@ diff -u -p -u -r1.3 -r1.5
#endif // _SV_REGION_HXX
Index: vcl/inc/salbmp.hxx
===================================================================
-RCS file: vcl/inc/salbmp.hxx
-diff -N vcl/inc/salbmp.hxx
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/inc/salbmp.hxx 18 Nov 2003 14:28:29 -0000 1.2
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ vcl/inc/salbmp.hxx 2004-09-12 14:54:44.838057224 +0200
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
@@ -3878,10 +3581,8 @@ diff -N vcl/inc/salbmp.hxx
+#endif
Index: vcl/inc/salctrlhandle.hxx
===================================================================
-RCS file: vcl/inc/salctrlhandle.hxx
-diff -N vcl/inc/salctrlhandle.hxx
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/inc/salctrlhandle.hxx 10 May 2004 15:42:11 -0000 1.2
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ vcl/inc/salctrlhandle.hxx 2004-09-12 14:54:44.838057224 +0200
@@ -0,0 +1,82 @@
+/*************************************************************************
+ *
@@ -3967,12 +3668,8 @@ diff -N vcl/inc/salctrlhandle.hxx
+#endif
Index: vcl/inc/salframe.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/salframe.hxx,v
-retrieving revision 1.16
-retrieving revision 1.19
-diff -u -p -u -r1.16 -r1.19
---- vcl/inc/salframe.hxx 24 Apr 2003 15:16:48 -0000 1.16
-+++ vcl/inc/salframe.hxx 10 May 2004 15:42:24 -0000 1.19
+--- vcl/inc/salframe.hxx.orig 2004-09-12 14:26:21.732968552 +0200
++++ vcl/inc/salframe.hxx 2004-09-12 14:54:44.839057072 +0200
@@ -80,9 +80,6 @@
#ifndef _SV_SALWTYPE_HXX
#include <salwtype.hxx>
@@ -4202,12 +3899,8 @@ diff -u -p -u -r1.16 -r1.19
Index: vcl/inc/salgdi.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/salgdi.hxx,v
-retrieving revision 1.20.116.1
-retrieving revision 1.24
-diff -u -p -u -r1.20.116.1 -r1.24
---- vcl/inc/salgdi.hxx 9 Jan 2004 18:13:40 -0000 1.20.116.1
-+++ vcl/inc/salgdi.hxx 17 Jun 2004 12:07:14 -0000 1.24
+--- vcl/inc/salgdi.hxx.orig 2004-09-12 14:26:21.735968096 +0200
++++ vcl/inc/salgdi.hxx 2004-09-12 14:54:44.842056616 +0200
@@ -72,15 +72,21 @@
#ifndef _SV_SALGTYPE_HXX
#include <salgtype.hxx>
@@ -4713,10 +4406,8 @@ diff -u -p -u -r1.20.116.1 -r1.24
#endif // _SV_SALGDI_HXX
Index: vcl/inc/salimestatus.hxx
===================================================================
-RCS file: vcl/inc/salimestatus.hxx
-diff -N vcl/inc/salimestatus.hxx
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/inc/salimestatus.hxx 18 Nov 2003 14:29:06 -0000 1.2
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ vcl/inc/salimestatus.hxx 2004-09-12 14:54:44.843056464 +0200
@@ -0,0 +1,77 @@
+/*************************************************************************
+ *
@@ -4797,12 +4488,8 @@ diff -N vcl/inc/salimestatus.hxx
+#endif
Index: vcl/inc/salinst.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/salinst.hxx,v
-retrieving revision 1.6.280.1
-retrieving revision 1.10
-diff -u -p -u -r1.6.280.1 -r1.10
---- vcl/inc/salinst.hxx 2 Mar 2004 10:00:22 -0000 1.6.280.1
-+++ vcl/inc/salinst.hxx 18 May 2004 10:49:17 -0000 1.10
+--- vcl/inc/salinst.hxx.orig 2004-09-12 14:26:21.738967640 +0200
++++ vcl/inc/salinst.hxx 2004-09-12 14:54:44.845056160 +0200
@@ -67,15 +67,11 @@
#ifndef _STRING_HXX
#include <tools/string.hxx>
@@ -5029,12 +4716,8 @@ diff -u -p -u -r1.6.280.1 -r1.10
void DeInitSalMain();
Index: vcl/inc/sallayout.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/sallayout.hxx,v
-retrieving revision 1.31.68.1
-retrieving revision 1.36
-diff -u -p -u -r1.31.68.1 -r1.36
---- vcl/inc/sallayout.hxx 9 Jan 2004 18:13:41 -0000 1.31.68.1
-+++ vcl/inc/sallayout.hxx 17 Jun 2004 12:07:38 -0000 1.36
+--- vcl/inc/sallayout.hxx.orig 2004-09-12 14:26:21.739967488 +0200
++++ vcl/inc/sallayout.hxx 2004-09-12 14:54:44.846056008 +0200
@@ -63,10 +63,10 @@
#define _SV_SALLAYOUT_HXX
@@ -5151,10 +4834,8 @@ diff -u -p -u -r1.31.68.1 -r1.36
GlyphItem* mpGlyphItems; // TODO: change to GlyphList
Index: vcl/inc/salmenu.hxx
===================================================================
-RCS file: vcl/inc/salmenu.hxx
-diff -N vcl/inc/salmenu.hxx
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/inc/salmenu.hxx 7 Jan 2004 09:17:01 -0000 1.4
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ vcl/inc/salmenu.hxx 2004-09-12 14:54:44.846056008 +0200
@@ -0,0 +1,122 @@
+/*************************************************************************
+ *
@@ -5280,10 +4961,8 @@ diff -N vcl/inc/salmenu.hxx
+
Index: vcl/inc/salnativewidgets.hxx
===================================================================
-RCS file: vcl/inc/salnativewidgets.hxx
-diff -N vcl/inc/salnativewidgets.hxx
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/inc/salnativewidgets.hxx 10 May 2004 15:42:51 -0000 1.2
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ vcl/inc/salnativewidgets.hxx 2004-09-12 14:54:44.848055704 +0200
@@ -0,0 +1,367 @@
+/*************************************************************************
+ *
@@ -5654,12 +5333,8 @@ diff -N vcl/inc/salnativewidgets.hxx
+
Index: vcl/inc/salobj.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/salobj.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.2
-diff -u -p -u -r1.1.1.1 -r1.2
---- vcl/inc/salobj.hxx 19 Sep 2000 10:23:06 -0000 1.1.1.1
-+++ vcl/inc/salobj.hxx 18 Nov 2003 14:29:32 -0000 1.2
+--- vcl/inc/salobj.hxx.orig 2004-09-12 14:26:21.742967032 +0200
++++ vcl/inc/salobj.hxx 2004-09-12 14:54:44.848055704 +0200
@@ -71,9 +71,6 @@
#ifndef _SV_SALWTYPE_HXX
#include <salwtype.hxx>
@@ -5735,10 +5410,8 @@ diff -u -p -u -r1.1.1.1 -r1.2
#endif // _SV_SALOBJ_HXX
Index: vcl/inc/salogl.hxx
===================================================================
-RCS file: vcl/inc/salogl.hxx
-diff -N vcl/inc/salogl.hxx
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/inc/salogl.hxx 18 Nov 2003 14:29:40 -0000 1.2
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ vcl/inc/salogl.hxx 2004-09-12 14:54:44.849055552 +0200
@@ -0,0 +1,109 @@
+/*************************************************************************
+ *
@@ -5851,12 +5524,8 @@ diff -N vcl/inc/salogl.hxx
+#endif
Index: vcl/inc/salprn.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/salprn.hxx,v
-retrieving revision 1.4
-retrieving revision 1.5
-diff -u -p -u -r1.4 -r1.5
---- vcl/inc/salprn.hxx 20 Nov 2002 12:03:33 -0000 1.4
-+++ vcl/inc/salprn.hxx 18 Nov 2003 14:29:49 -0000 1.5
+--- vcl/inc/salprn.hxx.orig 2004-09-12 14:26:21.746966424 +0200
++++ vcl/inc/salprn.hxx 2004-09-12 14:54:44.850055400 +0200
@@ -69,9 +69,6 @@
#ifndef _SV_SV_H
#include <sv.h>
@@ -5984,13 +5653,10 @@ diff -u -p -u -r1.4 -r1.5
};
#endif // _SV_SALPRN_HXX
-
Index: vcl/inc/salsound.hxx
===================================================================
-RCS file: vcl/inc/salsound.hxx
-diff -N vcl/inc/salsound.hxx
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/inc/salsound.hxx 18 Nov 2003 14:29:57 -0000 1.2
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ vcl/inc/salsound.hxx 2004-09-12 14:54:44.851055248 +0200
@@ -0,0 +1,119 @@
+/*************************************************************************
+ *
@@ -6113,12 +5779,8 @@ diff -N vcl/inc/salsound.hxx
+#endif
Index: vcl/inc/salsys.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/salsys.hxx,v
-retrieving revision 1.7
-retrieving revision 1.9
-diff -u -p -u -r1.7 -r1.9
---- vcl/inc/salsys.hxx 20 Nov 2002 15:45:04 -0000 1.7
-+++ vcl/inc/salsys.hxx 7 Jan 2004 09:17:24 -0000 1.9
+--- vcl/inc/salsys.hxx.orig 2004-09-12 14:26:21.748966120 +0200
++++ vcl/inc/salsys.hxx 2004-09-12 14:54:44.851055248 +0200
@@ -65,44 +65,9 @@
#ifndef _STRING_HXX
#include <tools/string.hxx>
@@ -6253,12 +5915,8 @@ diff -u -p -u -r1.7 -r1.9
#endif // _SV_SALSYS_HXX
Index: vcl/inc/saltimer.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/saltimer.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.2
-diff -u -p -u -r1.1.1.1 -r1.2
---- vcl/inc/saltimer.hxx 19 Sep 2000 10:23:06 -0000 1.1.1.1
-+++ vcl/inc/saltimer.hxx 18 Nov 2003 14:30:19 -0000 1.2
+--- vcl/inc/saltimer.hxx.orig 2004-09-12 14:26:21.749965968 +0200
++++ vcl/inc/saltimer.hxx 2004-09-12 14:54:44.852055096 +0200
@@ -73,15 +73,34 @@
// - SalTimer -
// ------------
@@ -6300,12 +5958,8 @@ diff -u -p -u -r1.1.1.1 -r1.2
#endif // _SV_SALTIMER_HXX
Index: vcl/inc/salvd.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/salvd.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.2
-diff -u -p -u -r1.1.1.1 -r1.2
---- vcl/inc/salvd.hxx 19 Sep 2000 10:23:06 -0000 1.1.1.1
-+++ vcl/inc/salvd.hxx 18 Nov 2003 14:30:29 -0000 1.2
+--- vcl/inc/salvd.hxx.orig 2004-09-12 14:26:21.750965816 +0200
++++ vcl/inc/salvd.hxx 2004-09-12 14:54:44.852055096 +0200
@@ -65,9 +65,6 @@
#ifndef _SV_SV_H
#include <sv.h>
@@ -6351,12 +6005,8 @@ diff -u -p -u -r1.1.1.1 -r1.2
#endif // _SV_SALVD_HXX
Index: vcl/inc/salwtype.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/salwtype.hxx,v
-retrieving revision 1.11
-retrieving revision 1.12
-diff -u -p -u -r1.11 -r1.12
---- vcl/inc/salwtype.hxx 27 Mar 2003 17:57:31 -0000 1.11
-+++ vcl/inc/salwtype.hxx 18 Nov 2003 14:56:54 -0000 1.12
+--- vcl/inc/salwtype.hxx.orig 2004-09-12 14:26:21.751965664 +0200
++++ vcl/inc/salwtype.hxx 2004-09-12 14:54:44.853054944 +0200
@@ -147,7 +147,11 @@ struct ImplFontSelectData;
#define SALEVENT_CLOSEPOPUPS ((USHORT)30)
#define SALEVENT_EXTERNALKEYINPUT ((USHORT)31)
@@ -6370,28 +6020,24 @@ diff -u -p -u -r1.11 -r1.12
// MOUSELEAVE must send, when the pointer leave the client area and
// the mouse is not captured
-@@ -169,6 +173,13 @@ struct SalKeyEvent
- USHORT mnCode; // SV-KeyCode (KEY_xxx | KEY_SHIFT | KEY_MOD1 | KEY_MOD2)
- USHORT mnCharCode; // SV-CharCode
+@@ -171,6 +175,13 @@ struct SalKeyEvent
USHORT mnRepeat; // Repeat-Count (KeyInputs-1)
-+};
-+
+ };
+
+// MENUEVENT
+struct SalMenuEvent
+{
+ USHORT mnId; // Menu item ID
+ void* mpMenu; // pointer to VCL menu (class Menu)
- };
-
++};
++
// KEYMODCHANGE
+ struct SalKeyModEvent
+ {
Index: vcl/inc/scrbar.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/scrbar.hxx,v
-retrieving revision 1.5
-retrieving revision 1.10
-diff -u -p -u -r1.5 -r1.10
---- vcl/inc/scrbar.hxx 25 Jul 2001 11:39:21 -0000 1.5
-+++ vcl/inc/scrbar.hxx 10 May 2004 15:43:03 -0000 1.10
+--- vcl/inc/scrbar.hxx.orig 2004-09-12 14:26:21.752965512 +0200
++++ vcl/inc/scrbar.hxx 2004-09-12 14:54:44.854054792 +0200
@@ -69,6 +69,8 @@
#include <ctrl.hxx>
#endif
@@ -6478,12 +6124,8 @@ diff -u -p -u -r1.5 -r1.10
ScrollBarBox( Window* pParent, WinBits nStyle = 0 );
Index: vcl/inc/settings.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/settings.hxx,v
-retrieving revision 1.19
-retrieving revision 1.23
-diff -u -p -u -r1.19 -r1.23
---- vcl/inc/settings.hxx 17 Apr 2003 15:16:59 -0000 1.19
-+++ vcl/inc/settings.hxx 10 Jun 2004 17:17:43 -0000 1.23
+--- vcl/inc/settings.hxx.orig 2004-09-12 14:26:21.756964904 +0200
++++ vcl/inc/settings.hxx 2004-09-12 14:54:44.858054184 +0200
@@ -69,8 +69,8 @@
#ifndef _SV_SV_H
#include <sv.h>
@@ -6790,12 +6432,8 @@ diff -u -p -u -r1.19 -r1.23
// ---------------
Index: vcl/inc/slider.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/slider.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.2
-diff -u -p -u -r1.1.1.1 -r1.2
---- vcl/inc/slider.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
-+++ vcl/inc/slider.hxx 7 Jan 2004 09:18:32 -0000 1.2
+--- vcl/inc/slider.hxx.orig 2004-09-12 14:26:21.757964752 +0200
++++ vcl/inc/slider.hxx 2004-09-12 14:54:44.859054032 +0200
@@ -106,7 +106,6 @@ private:
Link maSlideHdl;
Link maEndSlideHdl;
@@ -6814,12 +6452,8 @@ diff -u -p -u -r1.1.1.1 -r1.2
Slider( Window* pParent, WinBits nStyle = WB_HORZ );
Index: vcl/inc/sound.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/sound.hxx,v
-retrieving revision 1.3
-retrieving revision 1.5
-diff -u -p -u -r1.3 -r1.5
---- vcl/inc/sound.hxx 13 Jun 2001 10:52:47 -0000 1.3
-+++ vcl/inc/sound.hxx 7 Jan 2004 09:19:13 -0000 1.5
+--- vcl/inc/sound.hxx.orig 2004-09-12 14:26:21.758964600 +0200
++++ vcl/inc/sound.hxx 2004-09-12 14:54:44.859054032 +0200
@@ -92,15 +92,10 @@ class Sound
{
private:
@@ -6857,12 +6491,8 @@ diff -u -p -u -r1.3 -r1.5
void Play();
Index: vcl/inc/spin.h
===================================================================
-RCS file: /cvs/gsl/vcl/inc/spin.h,v
-retrieving revision 1.1.1.1
-retrieving revision 1.2
-diff -u -p -u -r1.1.1.1 -r1.2
---- vcl/inc/spin.h 19 Sep 2000 10:23:07 -0000 1.1.1.1
-+++ vcl/inc/spin.h 11 Dec 2003 11:51:45 -0000 1.2
+--- vcl/inc/spin.h.orig 2004-09-12 14:26:21.759964448 +0200
++++ vcl/inc/spin.h 2004-09-12 14:54:44.860053880 +0200
@@ -82,6 +82,6 @@ void ImplDrawSpinButton( OutputDevice* p
BOOL bUpperIn, BOOL bLowerIn,
BOOL bUpperEnabled = TRUE,
@@ -6873,12 +6503,8 @@ diff -u -p -u -r1.1.1.1 -r1.2
#endif // _SV_SPIN_H
Index: vcl/inc/spin.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/spin.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.4
-diff -u -p -u -r1.1.1.1 -r1.4
---- vcl/inc/spin.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
-+++ vcl/inc/spin.hxx 10 May 2004 15:43:29 -0000 1.4
+--- vcl/inc/spin.hxx.orig 2004-09-12 14:26:21.760964296 +0200
++++ vcl/inc/spin.hxx 2004-09-12 14:54:44.861053728 +0200
@@ -82,19 +82,24 @@ private:
AutoTimer maRepeatTimer;
Rectangle maUpperRect;
@@ -6960,12 +6586,8 @@ diff -u -p -u -r1.1.1.1 -r1.4
#endif // _SV_SPIN_HXX
Index: vcl/inc/spinfld.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/spinfld.hxx,v
-retrieving revision 1.3
-retrieving revision 1.6
-diff -u -p -u -r1.3 -r1.6
---- vcl/inc/spinfld.hxx 3 May 2002 13:04:10 -0000 1.3
-+++ vcl/inc/spinfld.hxx 10 May 2004 15:43:41 -0000 1.6
+--- vcl/inc/spinfld.hxx.orig 2004-09-12 14:26:21.761964144 +0200
++++ vcl/inc/spinfld.hxx 2004-09-12 14:54:44.861053728 +0200
@@ -97,16 +97,12 @@ protected:
mbLowerIn:1,
mbInDropDown:1;
@@ -7001,12 +6623,8 @@ diff -u -p -u -r1.3 -r1.6
const Link& GetUpHdl() const { return maUpHdlLink; }
Index: vcl/inc/split.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/split.hxx,v
-retrieving revision 1.7
-retrieving revision 1.8
-diff -u -p -u -r1.7 -r1.8
---- vcl/inc/split.hxx 14 Aug 2002 14:06:39 -0000 1.7
-+++ vcl/inc/split.hxx 7 Jan 2004 09:20:22 -0000 1.8
+--- vcl/inc/split.hxx.orig 2004-09-12 14:26:21.761964144 +0200
++++ vcl/inc/split.hxx 2004-09-12 14:54:44.862053576 +0200
@@ -92,7 +92,6 @@ private:
Link maStartSplitHdl;
Link maSplitHdl;
@@ -7025,12 +6643,8 @@ diff -u -p -u -r1.7 -r1.8
void ImplInit( Window* pParent, WinBits nWinStyle );
Index: vcl/inc/splitwin.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/splitwin.hxx,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -p -u -r1.2 -r1.3
---- vcl/inc/splitwin.hxx 27 Mar 2003 17:57:33 -0000 1.2
-+++ vcl/inc/splitwin.hxx 7 Jan 2004 09:20:41 -0000 1.3
+--- vcl/inc/splitwin.hxx.orig 2004-09-12 14:26:21.762963992 +0200
++++ vcl/inc/splitwin.hxx 2004-09-12 14:54:44.862053576 +0200
@@ -141,10 +141,7 @@ private:
mbFadeInPressed:1,
mbFadeOutPressed:1,
@@ -7061,12 +6675,8 @@ diff -u -p -u -r1.2 -r1.3
SplitWindow( Window* pParent, WinBits nStyle = 0 );
Index: vcl/inc/status.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/status.hxx,v
-retrieving revision 1.3
-retrieving revision 1.4
-diff -u -p -u -r1.3 -r1.4
---- vcl/inc/status.hxx 27 Mar 2003 17:57:33 -0000 1.3
-+++ vcl/inc/status.hxx 7 Jan 2004 09:20:58 -0000 1.4
+--- vcl/inc/status.hxx.orig 2004-09-12 14:26:21.764963688 +0200
++++ vcl/inc/status.hxx 2004-09-12 14:54:44.863053424 +0200
@@ -128,23 +128,17 @@ private:
long mnCalcHeight;
long mnTextY;
@@ -7101,12 +6711,8 @@ diff -u -p -u -r1.3 -r1.4
StatusBar( Window* pParent,
Index: vcl/inc/svapp.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/svapp.hxx,v
-retrieving revision 1.27
-retrieving revision 1.30
-diff -u -p -u -r1.27 -r1.30
---- vcl/inc/svapp.hxx 10 Jun 2003 14:29:14 -0000 1.27
-+++ vcl/inc/svapp.hxx 10 May 2004 12:57:43 -0000 1.30
+--- vcl/inc/svapp.hxx.orig 2004-09-12 14:26:21.765963536 +0200
++++ vcl/inc/svapp.hxx 2004-09-12 14:54:44.865053120 +0200
@@ -74,9 +74,6 @@
#ifndef _UNQID_HXX
#include <tools/unqid.hxx>
@@ -7117,9 +6723,7 @@ diff -u -p -u -r1.27 -r1.30
#ifndef _SV_SV_H
#include <sv.h>
#endif
-@@ -100,13 +97,8 @@ class Window;
- class Reflection;
- class KeyCode;
+@@ -106,11 +103,6 @@ class KeyCode;
class NotifyEvent;
class KeyEvent;
@@ -7131,7 +6735,7 @@ diff -u -p -u -r1.27 -r1.30
namespace vos { class IMutex; }
#ifndef _COM_SUN_STAR_UNO_REFERENCE_H_
-@@ -327,7 +291,7 @@ class Application
+@@ -327,7 +319,7 @@ class Application
{
public:
Application();
@@ -7140,8 +6744,7 @@ diff -u -p -u -r1.27 -r1.30
virtual void Main() = 0;
-@@ -406,8 +370,9 @@ public:
-
+@@ -435,7 +427,8 @@ public:
#ifndef NO_GETAPPWINDOW
static WorkWindow* GetAppWindow();
#endif
@@ -7151,7 +6754,7 @@ diff -u -p -u -r1.27 -r1.30
static OutputDevice* GetDefaultDevice();
static Window* GetFirstTopLevelWindow();
-@@ -562,6 +482,11 @@ public:
+@@ -562,6 +555,11 @@ public:
Can be called without the Solar mutex locked.
*/
static bool GetShowImeStatusWindowDefault();
@@ -7165,12 +6768,8 @@ diff -u -p -u -r1.27 -r1.30
Application* GetpApp();
Index: vcl/inc/svdata.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/svdata.hxx,v
-retrieving revision 1.38.88.2
-retrieving revision 1.45
-diff -u -p -u -r1.38.88.2 -r1.45
---- vcl/inc/svdata.hxx 2 Mar 2004 10:00:45 -0000 1.38.88.2
-+++ vcl/inc/svdata.hxx 25 Jun 2004 17:08:32 -0000 1.45
+--- vcl/inc/svdata.hxx.orig 2004-09-12 14:26:21.767963232 +0200
++++ vcl/inc/svdata.hxx 2004-09-12 14:54:44.866052968 +0200
@@ -147,80 +147,13 @@ class ImplVDevCache;
class UnoWrapperBase;
class GraphicConverter;
@@ -7264,7 +6863,7 @@ diff -u -p -u -r1.38.88.2 -r1.45
::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory > mxMSF;
String* mpMSFTempFileName;
AllSettings* mpSettings; // Application settings
-@@ -337,7 +266,6 @@ struct ImplSVWinData
+@@ -337,7 +267,6 @@ struct ImplSVWinData
USHORT mnAutoScrollFlags; // auto scroll flags
BOOL mbNoDeactivate; // TRUE: keine Deactivate durchfuehren
BOOL mbNoSaveFocus; // TRUE: menues must not save/restore focus
@@ -7272,7 +6871,7 @@ diff -u -p -u -r1.38.88.2 -r1.45
};
-@@ -387,17 +315,6 @@ struct ImplSVHelpData
+@@ -387,17 +316,6 @@ struct ImplSVHelpData
};
@@ -7290,7 +6889,7 @@ diff -u -p -u -r1.38.88.2 -r1.45
// --------------
// - ImplSVData -
// --------------
-@@ -412,6 +329,9 @@ struct ImplSVData
+@@ -412,6 +330,9 @@ struct ImplSVData
ULONG mnThreadCount; // is VCL MultiThread enabled
ImplConfigData* mpFirstConfigData; // Zeiger auf ersten Config-Block
ImplTimerData* mpFirstTimerData; // list of all running timers
@@ -7300,7 +6899,7 @@ diff -u -p -u -r1.38.88.2 -r1.45
ResMgr* mpResMgr; // SV-Resource-Manager
ULONG mnTimerPeriod; // current timer period
ULONG mnTimerUpdate; // TimerCallbackProcs on stack
-@@ -422,35 +342,12 @@ struct ImplSVData
+@@ -422,35 +343,12 @@ struct ImplSVData
ImplSVWinData maWinData; // indepen data for Windows classes
ImplSVCtrlData maCtrlData; // indepen data for Control classes
ImplSVHelpData maHelpData; // indepen data for Help classes
@@ -7336,7 +6935,7 @@ diff -u -p -u -r1.38.88.2 -r1.45
::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxAccessBridge;
com::sun::star::uno::Reference< com::sun::star::frame::XSessionManagerClient > xSMClient;
::vcl::SettingsConfigItem* mpSettingsConfigItem;
-@@ -465,10 +362,8 @@ ResMgr* ImplGetResMgr();
+@@ -465,10 +363,8 @@ ResMgr* ImplGetResMgr();
void ImplWindowAutoMnemonic( Window* pWindow );
void ImplTimerCallbackProc();
@@ -7349,12 +6948,8 @@ diff -u -p -u -r1.38.88.2 -r1.45
BOOL ImplCallHotKey( const KeyCode& rKeyCode );
Index: vcl/inc/sysdata.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/sysdata.hxx,v
-retrieving revision 1.2
-retrieving revision 1.4
-diff -u -p -u -r1.2 -r1.4
---- vcl/inc/sysdata.hxx 9 Feb 2001 14:51:45 -0000 1.2
-+++ vcl/inc/sysdata.hxx 7 Jan 2004 09:22:49 -0000 1.4
+--- vcl/inc/sysdata.hxx.orig 2004-09-12 14:26:21.768963080 +0200
++++ vcl/inc/sysdata.hxx 2004-09-12 14:54:44.867052816 +0200
@@ -69,11 +69,8 @@
struct SystemEnvData
{
@@ -7407,12 +7002,8 @@ diff -u -p -u -r1.2 -r1.4
Index: vcl/inc/syswin.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/syswin.hxx,v
-retrieving revision 1.12
-retrieving revision 1.13
-diff -u -p -u -r1.12 -r1.13
---- vcl/inc/syswin.hxx 27 Mar 2003 17:57:34 -0000 1.12
-+++ vcl/inc/syswin.hxx 7 Jan 2004 09:23:35 -0000 1.13
+--- vcl/inc/syswin.hxx.orig 2004-09-12 14:26:21.769962928 +0200
++++ vcl/inc/syswin.hxx 2004-09-12 14:54:44.868052664 +0200
@@ -219,12 +219,9 @@ private:
BOOL mbDockBtn;
BOOL mbHideBtn;
@@ -7428,12 +7019,8 @@ diff -u -p -u -r1.12 -r1.13
SystemWindow( WindowType nType );
Index: vcl/inc/tabctrl.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/tabctrl.hxx,v
-retrieving revision 1.4
-retrieving revision 1.7
-diff -u -p -u -r1.4 -r1.7
---- vcl/inc/tabctrl.hxx 4 Jun 2003 11:21:18 -0000 1.4
-+++ vcl/inc/tabctrl.hxx 10 May 2004 15:43:53 -0000 1.7
+--- vcl/inc/tabctrl.hxx.orig 2004-09-12 14:26:21.770962776 +0200
++++ vcl/inc/tabctrl.hxx 2004-09-12 14:54:44.868052664 +0200
@@ -110,8 +110,6 @@ private:
Link maActivateHdl;
Link maDeactivateHdl;
@@ -7473,12 +7060,8 @@ diff -u -p -u -r1.4 -r1.7
virtual long DeactivatePage();
Index: vcl/inc/tabdlg.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/tabdlg.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.2
-diff -u -p -u -r1.1.1.1 -r1.2
---- vcl/inc/tabdlg.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
-+++ vcl/inc/tabdlg.hxx 7 Jan 2004 09:24:21 -0000 1.2
+--- vcl/inc/tabdlg.hxx.orig 2004-09-12 14:26:21.770962776 +0200
++++ vcl/inc/tabdlg.hxx 2004-09-12 14:54:44.869052512 +0200
@@ -83,10 +83,8 @@ private:
WindowAlign meViewAlign;
BOOL mbPosControls;
@@ -7492,13 +7075,9 @@ diff -u -p -u -r1.1.1.1 -r1.2
TabDialog( Window* pParent,
Index: vcl/inc/tabpage.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/tabpage.hxx,v
-retrieving revision 1.3
-retrieving revision 1.5
-diff -u -p -u -r1.3 -r1.5
---- vcl/inc/tabpage.hxx 24 Apr 2003 16:30:10 -0000 1.3
-+++ vcl/inc/tabpage.hxx 20 Feb 2004 08:49:19 -0000 1.5
-@@ -75,15 +75,15 @@
+--- vcl/inc/tabpage.hxx.orig 2004-09-12 14:26:21.771962624 +0200
++++ vcl/inc/tabpage.hxx 2004-09-12 14:54:44.869052512 +0200
+@@ -75,16 +75,16 @@
class TabPage : public Window
{
@@ -7511,19 +7090,16 @@ diff -u -p -u -r1.3 -r1.5
public:
TabPage( Window* pParent, WinBits nStyle = 0 );
TabPage( Window* pParent, const ResId& rResId );
-+
-+ virtual void Paint( const Rectangle& rRect );
++ virtual void Paint( const Rectangle& rRect );
++
virtual void StateChanged( StateChangedType nStateChange );
virtual void DataChanged( const DataChangedEvent& rDCEvt );
+
Index: vcl/inc/threadex.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/threadex.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.2
-diff -u -p -u -r1.1.1.1 -r1.2
---- vcl/inc/threadex.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
-+++ vcl/inc/threadex.hxx 7 Jan 2004 09:24:56 -0000 1.2
+--- vcl/inc/threadex.hxx.orig 2004-09-12 14:26:21.772962472 +0200
++++ vcl/inc/threadex.hxx 2004-09-12 14:54:44.870052360 +0200
@@ -74,7 +74,7 @@ namespace vcl
static void SAL_CALL worker( void* );
public:
@@ -7544,12 +7120,8 @@ diff -u -p -u -r1.1.1.1 -r1.2
long execute();
Index: vcl/inc/timer.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/timer.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.2
-diff -u -p -u -r1.1.1.1 -r1.2
---- vcl/inc/timer.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
-+++ vcl/inc/timer.hxx 7 Jan 2004 09:25:18 -0000 1.2
+--- vcl/inc/timer.hxx.orig 2004-09-12 14:26:21.772962472 +0200
++++ vcl/inc/timer.hxx 2004-09-12 14:54:44.870052360 +0200
@@ -89,7 +89,7 @@ protected:
public:
Timer();
@@ -7561,13 +7133,9 @@ diff -u -p -u -r1.1.1.1 -r1.2
Index: vcl/inc/toolbox.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/toolbox.hxx,v
-retrieving revision 1.24
-retrieving revision 1.26
-diff -u -p -u -r1.24 -r1.26
---- vcl/inc/toolbox.hxx 17 Apr 2003 15:17:11 -0000 1.24
-+++ vcl/inc/toolbox.hxx 20 Jan 2004 11:55:53 -0000 1.26
-@@ -202,7 +201,6 @@ private:
+--- vcl/inc/toolbox.hxx.orig 2004-09-12 14:26:21.775962016 +0200
++++ vcl/inc/toolbox.hxx 2004-09-12 14:54:44.872052056 +0200
+@@ -202,7 +202,6 @@ private:
Rectangle maPaintRect;
FloatingWindow* mpFloatWin;
USHORT mnKeyModifier;
@@ -7575,7 +7143,7 @@ diff -u -p -u -r1.24 -r1.26
long mnDX;
long mnDY;
long mnItemWidth;
-@@ -250,10 +248,9 @@ private:
+@@ -250,10 +249,9 @@ private:
mbDragging:1,
mbHideStatusText:1,
mbMenuStrings:1,
@@ -7589,7 +7157,7 @@ diff -u -p -u -r1.24 -r1.26
WindowAlign meAlign;
WindowAlign meDockAlign;
ButtonType meButtonType;
-@@ -267,8 +264,6 @@ private:
+@@ -267,8 +265,6 @@ private:
Link maSelectHdl;
Link maNextToolBoxHdl;
@@ -7598,7 +7166,7 @@ diff -u -p -u -r1.24 -r1.26
void ImplInit( Window* pParent, WinBits nStyle );
void ImplInitSettings( BOOL bFont, BOOL bForeground, BOOL bBackground );
void ImplLoadRes( const ResId& rResId );
-@@ -298,12 +293,16 @@ private:
+@@ -298,12 +294,16 @@ private:
void ImplUpdateInputEnable();
void ImplFillLayoutData() const;
DECL_LINK( ImplUpdateHdl, void* );
@@ -7616,7 +7184,7 @@ diff -u -p -u -r1.24 -r1.26
public:
ToolBox( Window* pParent, WinBits nStyle = 0 );
ToolBox( Window* pParent, const ResId& rResId );
-@@ -510,9 +509,9 @@ public:
+@@ -513,9 +513,9 @@ public:
void GetAccessObject( AccessObjectRef& rAcc ) const;
// allow Click Handler to detect special key
@@ -7630,13 +7198,9 @@ diff -u -p -u -r1.24 -r1.26
Index: vcl/inc/unobrok.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/unobrok.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.2
-diff -u -p -u -r1.1.1.1 -r1.2
---- vcl/inc/unobrok.hxx 19 Sep 2000 10:23:07 -0000 1.1.1.1
-+++ vcl/inc/unobrok.hxx 1 Dec 2003 13:02:17 -0000 1.2
-@@ -62,62 +62,8 @@
+--- vcl/inc/unobrok.hxx.orig 2004-09-12 14:26:21.776961864 +0200
++++ vcl/inc/unobrok.hxx 2004-09-12 14:54:44.872052056 +0200
+@@ -62,63 +62,9 @@
#ifndef _UNOBROK_HXX
#define _UNOBROK_HXX
@@ -7644,7 +7208,7 @@ diff -u -p -u -r1.1.1.1 -r1.2
-
#include <svdata.hxx>
#include <vos/thread.hxx>
--
+
-// #include <com/sun/star/connection/XAcceptor.hpp>
-
-// class UnoBrokerThread : public ::vos::OThread
@@ -7696,17 +7260,14 @@ diff -u -p -u -r1.1.1.1 -r1.2
-// ::com::sun::star::uno::Reference< ::com::sun::star::connection::XAcceptor > m_rAcceptor;
-// ::rtl::OUString m_sAcceptorDescription;
-// };
-
+-
namespace vcl_accept
{
+ sal_Bool accept(const ::rtl::OUString & accDcp, const ::com::sun::star::uno::Reference< ::com::sun::star::lang::XMultiServiceFactory> & rSMgr);
Index: vcl/inc/unohelp2.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/unohelp2.hxx,v
-retrieving revision 1.1
-retrieving revision 1.2
-diff -u -p -u -r1.1 -r1.2
---- vcl/inc/unohelp2.hxx 18 Mar 2002 17:34:51 -0000 1.1
-+++ vcl/inc/unohelp2.hxx 7 Jan 2004 09:25:54 -0000 1.2
+--- vcl/inc/unohelp2.hxx.orig 2004-09-12 14:26:21.776961864 +0200
++++ vcl/inc/unohelp2.hxx 2004-09-12 14:54:44.873051904 +0200
@@ -74,6 +74,9 @@
#include <tools/string.hxx>
#endif
@@ -7717,11 +7278,10 @@ diff -u -p -u -r1.1 -r1.2
namespace vcl { namespace unohelper {
-@@ -98,6 +101,14 @@ namespace vcl { namespace unohelper {
- ::com::sun::star::uno::Any SAL_CALL getTransferData( const ::com::sun::star::datatransfer::DataFlavor& aFlavor ) throw(::com::sun::star::datatransfer::UnsupportedFlavorException, ::com::sun::star::io::IOException, ::com::sun::star::uno::RuntimeException);
+@@ -99,6 +102,14 @@ namespace vcl { namespace unohelper {
::com::sun::star::uno::Sequence< ::com::sun::star::datatransfer::DataFlavor > SAL_CALL getTransferDataFlavors( ) throw(::com::sun::star::uno::RuntimeException);
sal_Bool SAL_CALL isDataFlavorSupported( const ::com::sun::star::datatransfer::DataFlavor& aFlavor ) throw(::com::sun::star::uno::RuntimeException);
-+ };
+ };
+
+ struct MutexHelper
+ {
@@ -7729,17 +7289,14 @@ diff -u -p -u -r1.1 -r1.2
+ ::osl::Mutex maMutex;
+ public:
+ ::osl::Mutex& GetMutex() { return maMutex; }
- };
++ };
}} // namespace vcl::unohelper
+
Index: vcl/inc/vclevent.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/vclevent.hxx,v
-retrieving revision 1.30
-retrieving revision 1.31
-diff -u -p -u -r1.30 -r1.31
---- vcl/inc/vclevent.hxx 12 Jun 2003 07:50:37 -0000 1.30
-+++ vcl/inc/vclevent.hxx 19 May 2004 13:50:40 -0000 1.31
+--- vcl/inc/vclevent.hxx.orig 2004-09-12 14:26:21.777961712 +0200
++++ vcl/inc/vclevent.hxx 2004-09-12 14:54:44.874051752 +0200
@@ -178,6 +178,7 @@ class Menu;
#define VCLEVENT_TOOLBOX_ITEMENABLED 1168 // pData = itempos
#define VCLEVENT_TOOLBOX_ITEMDISABLED 1169 // pData = itempos
@@ -7815,12 +7372,8 @@ diff -u -p -u -r1.30 -r1.31
Index: vcl/inc/virdev.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/virdev.hxx,v
-retrieving revision 1.3
-retrieving revision 1.7
-diff -u -p -u -r1.3 -r1.7
---- vcl/inc/virdev.hxx 1 Apr 2003 09:43:53 -0000 1.3
-+++ vcl/inc/virdev.hxx 7 Jan 2004 09:26:54 -0000 1.7
+--- vcl/inc/virdev.hxx.orig 2004-09-12 14:26:21.778961560 +0200
++++ vcl/inc/virdev.hxx 2004-09-12 14:54:44.875051600 +0200
@@ -78,40 +78,52 @@ class RmVirtualDevice;
class VirtualDevice : public OutputDevice
@@ -7892,12 +7445,8 @@ diff -u -p -u -r1.3 -r1.7
#endif // _SV_VIRDEV_HXX
Index: vcl/inc/wall.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/wall.hxx,v
-retrieving revision 1.1.1.1
-retrieving revision 1.2
-diff -u -p -u -r1.1.1.1 -r1.2
---- vcl/inc/wall.hxx 19 Sep 2000 10:23:08 -0000 1.1.1.1
-+++ vcl/inc/wall.hxx 7 Jan 2004 09:27:34 -0000 1.2
+--- vcl/inc/wall.hxx.orig 2004-09-12 14:26:21.779961408 +0200
++++ vcl/inc/wall.hxx 2004-09-12 14:54:44.876051448 +0200
@@ -65,13 +65,14 @@
#ifndef _SV_SV_H
#include <sv.h>
@@ -8000,10 +7549,8 @@ diff -u -p -u -r1.1.1.1 -r1.2
BOOL IsScrollable() const;
Index: vcl/inc/wall2.hxx
===================================================================
-RCS file: vcl/inc/wall2.hxx
-diff -N vcl/inc/wall2.hxx
---- /dev/null 1 Jan 1970 00:00:00 -0000
-+++ vcl/inc/wall2.hxx 7 Jan 2004 09:27:49 -0000 1.2
+--- /dev/null 1970-01-01 00:00:00.000000000 +0000
++++ vcl/inc/wall2.hxx 2004-09-12 14:54:44.876051448 +0200
@@ -0,0 +1,96 @@
+/*************************************************************************
+ *
@@ -8103,12 +7650,8 @@ diff -N vcl/inc/wall2.hxx
+#endif // _SV_WALL2_HXX
Index: vcl/inc/windata.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/windata.hxx,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -p -u -r1.2 -r1.3
---- vcl/inc/windata.hxx 27 Jun 2001 08:23:42 -0000 1.2
-+++ vcl/inc/windata.hxx 1 Dec 2003 13:02:52 -0000 1.3
+--- vcl/inc/windata.hxx.orig 2004-09-12 14:26:21.781961104 +0200
++++ vcl/inc/windata.hxx 2004-09-12 14:54:44.877051296 +0200
@@ -72,15 +72,7 @@ class SalFrame;
// - Prototypes -
// --------------
@@ -8128,12 +7671,8 @@ diff -u -p -u -r1.2 -r1.3
// - HitTest -
Index: vcl/inc/window.h
===================================================================
-RCS file: /cvs/gsl/vcl/inc/window.h,v
-retrieving revision 1.11.136.1
-retrieving revision 1.15
-diff -u -p -u -r1.11.136.1 -r1.15
---- vcl/inc/window.h 9 Jan 2004 18:13:41 -0000 1.11.136.1
-+++ vcl/inc/window.h 17 Jun 2004 12:10:38 -0000 1.15
+--- vcl/inc/window.h.orig 2004-09-12 14:26:21.782960952 +0200
++++ vcl/inc/window.h 2004-09-12 14:54:44.878051144 +0200
@@ -86,6 +86,7 @@ class VirtualDevice;
struct SalPaintEvent;
class ImplDevFontList;
@@ -8178,12 +7717,8 @@ diff -u -p -u -r1.11.136.1 -r1.15
long mnLastMouseWinX; // last x mouse position, rel. to pMouseMoveWin
Index: vcl/inc/window.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/window.hxx,v
-retrieving revision 1.47.112.1
-retrieving revision 1.55
-diff -u -p -u -r1.47.112.1 -r1.55
---- vcl/inc/window.hxx 26 Jan 2004 17:20:36 -0000 1.47.112.1
-+++ vcl/inc/window.hxx 17 Jun 2004 12:10:54 -0000 1.55
+--- vcl/inc/window.hxx.orig 2004-09-12 14:26:21.786960344 +0200
++++ vcl/inc/window.hxx 2004-09-12 14:54:44.881050688 +0200
@@ -68,8 +68,8 @@
#ifndef _SV_OUTDEV_HXX
#include <outdev.hxx>
@@ -8220,7 +7755,7 @@ diff -u -p -u -r1.47.112.1 -r1.55
#endif
class VirtualDevice;
-@@ -144,6 +151,7 @@ namespace sun {
+@@ -144,6 +152,7 @@ namespace sun {
namespace star {
namespace awt {
class XWindowPeer;
@@ -8228,7 +7763,7 @@ diff -u -p -u -r1.47.112.1 -r1.55
}
namespace uno {
class Any;
-@@ -335,26 +351,55 @@ typedef USHORT StateChangedType;
+@@ -335,26 +344,55 @@ typedef USHORT StateChangedType;
#define EXTTEXTINPUT_END_COMPLETE ((USHORT)0x0001)
#define EXTTEXTINPUT_END_CANCEL ((USHORT)0x0002)
@@ -8291,7 +7826,7 @@ diff -u -p -u -r1.47.112.1 -r1.55
Window* mpFrameWindow;
Window* mpOverlapWindow;
Window* mpBorderWindow;
-@@ -385,14 +433,13 @@ private:
+@@ -385,14 +423,13 @@ private:
Font* mpControlFont;
Color maControlForeground;
Color maControlBackground;
@@ -8310,7 +7845,7 @@ diff -u -p -u -r1.47.112.1 -r1.55
Point maPos;
ULONG mnHelpId;
ULONG mnUniqId;
-@@ -413,8 +460,6 @@ private:
+@@ -413,8 +450,6 @@ private:
WinBits mnExtendedStyle;
WinBits mnPrevExtendedStyle;
WindowType mnType;
@@ -8319,7 +7854,7 @@ diff -u -p -u -r1.47.112.1 -r1.55
USHORT mnWaitCount;
USHORT mnPaintFlags;
USHORT mnGetFocusFlags;
-@@ -422,8 +467,6 @@ private:
+@@ -422,8 +457,6 @@ private:
USHORT mnActivateMode;
USHORT mnDlgCtrlFlags;
USHORT mnLockCount;
@@ -8328,7 +7863,7 @@ diff -u -p -u -r1.47.112.1 -r1.55
BOOL mbFrame:1,
mbBorderWin:1,
mbOverlapWin:1,
-@@ -490,9 +533,176 @@ private:
+@@ -490,9 +523,176 @@ private:
mbDrawSelectionBackground:1;
::com::sun::star::uno::Reference< ::com::sun::star::uno::XInterface > mxDNDListenerContainer;
@@ -8506,7 +8041,7 @@ diff -u -p -u -r1.47.112.1 -r1.55
#endif
protected:
-@@ -573,8 +783,8 @@ public:
+@@ -573,8 +773,8 @@ public:
void SetBorderStyle( USHORT nBorderStyle );
USHORT GetBorderStyle() const;
@@ -8517,7 +8052,7 @@ diff -u -p -u -r1.47.112.1 -r1.55
Size CalcWindowSize( const Size& rOutSz ) const;
Size CalcOutputSize( const Size& rWinSz ) const;
long CalcTitleWidth() const;
-@@ -594,6 +804,8 @@ public:
+@@ -594,6 +794,8 @@ public:
void SetDialogControlFlags( USHORT nFlags ) { mnDlgCtrlFlags = nFlags; }
USHORT GetDialogControlFlags() const { return mnDlgCtrlFlags; }
@@ -8526,7 +8061,7 @@ diff -u -p -u -r1.47.112.1 -r1.55
ULONG GetCurrentModButtons();
void SetInputContext( const InputContext& rInputContext );
-@@ -616,7 +828,7 @@ public:
+@@ -616,7 +818,7 @@ public:
void SetZoomedPointFont( const Font& rFont );
long GetDrawPixel( OutputDevice* pDev, long nPixels ) const;
Font GetDrawPixelFont( OutputDevice* pDev ) const;
@@ -8535,7 +8070,7 @@ diff -u -p -u -r1.47.112.1 -r1.55
void SetControlFont();
void SetControlFont( const Font& rFont );
-@@ -641,6 +853,10 @@ public:
+@@ -641,6 +843,10 @@ public:
Region GetWindowClipRegionPixel( USHORT nFlags = 0 ) const;
Region GetPaintRegion() const;
BOOL IsInPaint() const { return mbInPaint; }
@@ -8546,7 +8081,7 @@ diff -u -p -u -r1.47.112.1 -r1.55
void SetParent( Window* pNewParent );
Window* GetParent() const { return mpRealParent; }
-@@ -687,8 +903,12 @@ public:
+@@ -687,8 +893,12 @@ public:
BOOL IsDefaultPos() const { return mbDefPos; }
BOOL IsDefaultSize() const { return mbDefSize; }
@@ -8559,7 +8094,7 @@ diff -u -p -u -r1.47.112.1 -r1.55
Point OutputToAbsoluteScreenPixel( const Point& rPos ) const;
Point AbsoluteScreenToOutputPixel( const Point& rPos ) const;
Rectangle GetDesktopRectPixel() const;
-@@ -753,6 +964,7 @@ public:
+@@ -753,6 +963,7 @@ public:
BOOL IsChildPointerOverwrite() const { return mbChildPtrOverwrite; }
void SetPointerPosPixel( const Point& rPos );
Point GetPointerPosPixel();
@@ -8567,7 +8102,7 @@ diff -u -p -u -r1.47.112.1 -r1.55
void ShowPointer( BOOL bVisible );
BOOL IsPointerVisible() const { return !mbNoPtrVisible; }
void EnterWait();
-@@ -852,11 +1060,11 @@ public:
+@@ -852,11 +1063,11 @@ public:
::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > GetAccessible( BOOL bCreate = TRUE );
virtual ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > CreateAccessible();
void SetAccessible( ::com::sun::star::uno::Reference< ::com::sun::star::accessibility::XAccessible > );
@@ -8581,7 +8116,7 @@ diff -u -p -u -r1.47.112.1 -r1.55
void SetAccessibleRole( USHORT nRole );
USHORT GetAccessibleRole() const;
-@@ -900,6 +1114,52 @@ public:
+@@ -900,6 +1111,52 @@ public:
// Clipboard/Selection interfaces
virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::clipboard::XClipboard > GetClipboard();
virtual ::com::sun::star::uno::Reference< ::com::sun::star::datatransfer::clipboard::XClipboard > GetSelection();
@@ -8636,12 +8171,8 @@ diff -u -p -u -r1.47.112.1 -r1.55
inline void Window::SetPosPixel( const Point& rNewPos )
Index: vcl/inc/wintypes.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/wintypes.hxx,v
-retrieving revision 1.14
-retrieving revision 1.17
-diff -u -p -u -r1.14 -r1.17
---- vcl/inc/wintypes.hxx 11 Apr 2003 17:27:04 -0000 1.14
-+++ vcl/inc/wintypes.hxx 10 May 2004 15:44:37 -0000 1.17
+--- vcl/inc/wintypes.hxx.orig 2004-09-12 14:26:21.787960192 +0200
++++ vcl/inc/wintypes.hxx 2004-09-12 14:54:44.882050536 +0200
@@ -154,14 +154,15 @@ typedef USHORT WindowType;
#define WINDOW_TREELISTBOX (WINDOW_FIRST + 0x4d)
#define WINDOW_HELPTEXTWINDOW (WINDOW_FIRST + 0x4e)
@@ -8662,13 +8193,9 @@ diff -u -p -u -r1.14 -r1.17
// Window-Bits fuer Window
Index: vcl/inc/wrkwin.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/wrkwin.hxx,v
-retrieving revision 1.7
-retrieving revision 1.9
-diff -u -p -u -r1.7 -r1.9
---- vcl/inc/wrkwin.hxx 11 Apr 2003 17:27:14 -0000 1.7
-+++ vcl/inc/wrkwin.hxx 17 Jun 2004 11:43:45 -0000 1.9
-@@ -96,20 +92,10 @@ private:
+--- vcl/inc/wrkwin.hxx.orig 2004-09-12 14:26:21.788960040 +0200
++++ vcl/inc/wrkwin.hxx 2004-09-12 14:54:44.882050536 +0200
+@@ -96,20 +96,10 @@ private:
BOOL mbPresentationMode:1,
mbPresentationVisible:1,
mbPresentationFull:1,
@@ -8690,7 +8217,7 @@ diff -u -p -u -r1.7 -r1.9
protected:
WorkWindow( WindowType nType );
-@@ -124,6 +110,8 @@ public:
+@@ -124,6 +114,8 @@ public:
WorkWindow( SystemParentData* pParent ); // Not in the REMOTE-Version
~WorkWindow();
@@ -8699,7 +8226,7 @@ diff -u -p -u -r1.7 -r1.9
void ShowFullScreenMode( BOOL bFullScreenMode = TRUE );
void EndFullScreenMode() { ShowFullScreenMode( FALSE ); }
BOOL IsFullScreenMode() const { return mbFullScreenMode; }
-@@ -136,16 +124,14 @@ public:
+@@ -136,16 +128,14 @@ public:
BOOL SetPluginParent( SystemParentData* pParent );
@@ -8720,12 +8247,8 @@ diff -u -p -u -r1.7 -r1.9
#endif // _SV_WRKWIN_HXX
Index: vcl/inc/xconnection.hxx
===================================================================
-RCS file: /cvs/gsl/vcl/inc/xconnection.hxx,v
-retrieving revision 1.2
-retrieving revision 1.3
-diff -u -p -u -r1.2 -r1.3
---- vcl/inc/xconnection.hxx 11 Sep 2001 15:52:21 -0000 1.2
-+++ vcl/inc/xconnection.hxx 6 Jan 2004 13:08:25 -0000 1.3
+--- vcl/inc/xconnection.hxx.orig 2004-09-12 14:26:21.789959888 +0200
++++ vcl/inc/xconnection.hxx 2004-09-12 14:54:44.883050384 +0200
@@ -78,7 +78,7 @@
#include <com/sun/star/uno/Reference.hxx>
#endif
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 @@
*
************************************************************************/
diff --git a/patches/vclplug/vcl-util.diff b/patches/vclplug/vcl-util.diff
index 3b7413cd8..552d2cfb8 100644
--- a/patches/vclplug/vcl-util.diff
+++ b/patches/vclplug/vcl-util.diff
@@ -243,7 +243,7 @@ Index: vcl/util/makefile.mk
-.IF "$(OS)"=="LINUX" || "$(OS)"=="SOLARIS" || "$(OS)"=="FREEBSD"
-# some nas versions need -lXt, too
--SHL1STDLIBS += -lXt
+-#we must not link with Xt !!! it requires Xm which is not available on all platforms
-SHL1STDLIBS += -laudio
-.IF "$(OS)"=="SOLARIS"
-# needed by libaudio.a