diff options
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 |