summaryrefslogtreecommitdiff
path: root/svx/source
diff options
context:
space:
mode:
authorVladimir Glazounov <vg@openoffice.org>2005-02-24 14:20:19 +0000
committerVladimir Glazounov <vg@openoffice.org>2005-02-24 14:20:19 +0000
commit70067ac67e5092fc25e15c35f6cf8231845a63f1 (patch)
treefff32469f1b2b44a8b682801409addbd9e1fabcb /svx/source
parent899805c4006c2af48bd95e7ecfc3afecfacc54b5 (diff)
INTEGRATION: CWS nodirectxui (1.19.110); FILE MERGED
2005/02/21 13:16:20 fs 1.19.110.2: new strings for #i43061# 2005/02/18 15:08:41 fs 1.19.110.1: #i43061# option to enable or disable usage of DirectX (UI strings still preliminary)
Diffstat (limited to 'svx/source')
-rw-r--r--svx/source/dialog/optgdlg.cxx186
1 files changed, 170 insertions, 16 deletions
diff --git a/svx/source/dialog/optgdlg.cxx b/svx/source/dialog/optgdlg.cxx
index 763329c6b82b..625a6add40d0 100644
--- a/svx/source/dialog/optgdlg.cxx
+++ b/svx/source/dialog/optgdlg.cxx
@@ -2,9 +2,9 @@
*
* $RCSfile: optgdlg.cxx,v $
*
- * $Revision: 1.19 $
+ * $Revision: 1.20 $
*
- * last change: $Author: kz $ $Date: 2005-01-21 16:44:51 $
+ * last change: $Author: vg $ $Date: 2005-02-24 15:20:19 $
*
* The Contents of this file are made available subject to the terms of
* either of the following licenses
@@ -58,7 +58,6 @@
*
*
************************************************************************/
-
#ifdef SVX_DLLIMPLEMENTATION
#undef SVX_DLLIMPLEMENTATION
#endif
@@ -90,6 +89,9 @@
#ifndef _SFXIMGMGR_HXX
#include <sfx2/imgmgr.hxx>
#endif
+#ifndef VCL_INC_CONFIGSETTINGS_HXX
+#include <vcl/configsettings.hxx>
+#endif
#ifndef _SV_MSGBOX_HXX
#include <vcl/msgbox.hxx>
#endif
@@ -190,6 +192,10 @@
#ifndef _UNOTOOLS_PROCESSFACTORY_HXX
#include <comphelper/processfactory.hxx>
#endif
+#ifndef _RTL_USTRBUF_HXX_
+#include <rtl/ustrbuf.hxx>
+#endif
+
#include "dialmgr.hxx"
#ifndef INCLUDED_SVTOOLS_HELPOPT_HXX
@@ -532,6 +538,132 @@ IMPL_LINK( OfaMiscTabPage, HelpAgentResetHdl_Impl, PushButton*, EMPTYARG )
return 0;
}
+// -----------------------------------------------------------------------
+namespace
+{
+ // ...................................................................
+ static const sal_Char* getDirectXRendererAsciiName()
+ {
+ return "com.sun.star.rendering.DXCanvas";
+// return "drafts.com.sun.star.rendering.DXCanvas";
+ }
+ // ...................................................................
+ static const sal_Char* getVCLRendererAsciiName()
+ {
+ return "com.sun.star.rendering.VCLCanvas";
+// return "drafts.com.sun.star.rendering.VCLCanvas";
+ }
+
+ // ...................................................................
+ static bool isHardwareAccelerationAvailable()
+ {
+ static bool bWasHere = false;
+ static bool bIsAvailable = false;
+ if ( !bWasHere )
+ {
+ Reference< XInterface > xDirectXRenderer;
+ try
+ {
+ Reference< XMultiServiceFactory > xORB( ::comphelper::getProcessServiceFactory() );
+ if ( xORB.is() )
+ xDirectXRenderer = xORB->createInstance(
+ ::rtl::OUString::createFromAscii( getDirectXRendererAsciiName() )
+ );
+ }
+ catch( const Exception& )
+ {
+ }
+ bIsAvailable = xDirectXRenderer.is();
+ bWasHere = true;
+ }
+ return bIsAvailable;
+ }
+
+ // -------------------------------------------------------------------
+ class VCLSettings
+ {
+ public:
+ VCLSettings();
+
+ public:
+ BOOL IsHardwareAccelerationEnabled() const;
+ void EnabledHardwareAcceleration( BOOL _bEnabled ) const;
+
+ private:
+ void implSetRendererPreference( const ::rtl::OUString& _rPreferredServices ) const;
+ ::rtl::OUString implGetRendererPreference() const;
+ };
+
+ // -------------------------------------------------------------------
+ VCLSettings::VCLSettings()
+ {
+ }
+
+ // -------------------------------------------------------------------
+ void VCLSettings::implSetRendererPreference( const ::rtl::OUString& _rPreferredServices ) const
+ {
+ return ::vcl::SettingsConfigItem::get()->setValue(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Canvas" ) ),
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PreferredServices" ) ),
+ _rPreferredServices
+ );
+ }
+
+ // -------------------------------------------------------------------
+ ::rtl::OUString VCLSettings::implGetRendererPreference() const
+ {
+ return ::vcl::SettingsConfigItem::get()->getValue(
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "Canvas" ) ),
+ ::rtl::OUString( RTL_CONSTASCII_USTRINGPARAM( "PreferredServices" ) )
+ );
+ }
+
+ // -------------------------------------------------------------------
+ BOOL VCLSettings::IsHardwareAccelerationEnabled() const
+ {
+ ::rtl::OUString sPreferredServices( implGetRendererPreference() );
+ sal_Int32 nTokenPos = 0;
+ do
+ {
+ ::rtl::OUString sServiceName = sPreferredServices.getToken( 0, ';', nTokenPos );
+ if ( sServiceName.equalsAscii( getDirectXRendererAsciiName() ) )
+ // the DirectX renderer is to be preferred (over the VCL renderer)
+ return TRUE;
+ if ( sServiceName.equalsAscii( getVCLRendererAsciiName() ) )
+ // the VCL renderer is to be preferred (over the DirectX renderer)
+ return FALSE;
+ }
+ while ( nTokenPos > 0 );
+ return TRUE;
+ }
+
+ // -------------------------------------------------------------------
+ void VCLSettings::EnabledHardwareAcceleration( BOOL _bEnabled ) const
+ {
+ const sal_Char* pPreferredRenderer = _bEnabled ? getDirectXRendererAsciiName() : getVCLRendererAsciiName();
+
+ ::rtl::OUStringBuffer aPreferredServices;
+ aPreferredServices.appendAscii( pPreferredRenderer );
+
+ // append all other services
+ ::rtl::OUString sPreviouslyPreferred( implGetRendererPreference() );
+ sal_Int32 nTokenPos = 0;
+ do
+ {
+ ::rtl::OUString sServiceName = sPreviouslyPreferred.getToken( 0, ';', nTokenPos );
+ if ( sServiceName.equalsAscii( pPreferredRenderer ) )
+ // no duplicate ...
+ continue;
+
+ aPreferredServices.append( (sal_Unicode)';' );
+ aPreferredServices.append( sServiceName );
+ }
+ while ( nTokenPos > 0 );
+
+ implSetRendererPreference( aPreferredServices.makeStringAndClear() );
+ }
+}
+
// class OfaViewTabPage --------------------------------------------------
// -----------------------------------------------------------------------
IMPL_LINK_INLINE_START( OfaViewTabPage, OpenGLHdl, CheckBox*, EMPTYARG )
@@ -551,7 +683,7 @@ OfaViewTabPage::OfaViewTabPage(Window* pParent, const SfxItemSet& rSet ) :
aIconSizeFT ( this, ResId( FT_ICONSIZE ) ),
aIconSizeLB ( this, ResId( LB_ICONSIZE ) ),
m_aSystemFont (this, ResId( CB_SYSTEM_FONT ) ),
-#if defined( UNX ) || defined ( FS_PRIV_DEBUG )
+#if defined( UNX )
aFontAntiAliasing ( this, ResId( CB_FONTANTIALIASING )),
aAAPointLimitLabel ( this, ResId( FT_POINTLIMIT_LABEL )),
aAAPointLimit ( this, ResId( NF_AA_POINTLIMIT )),
@@ -563,6 +695,8 @@ OfaViewTabPage::OfaViewTabPage(Window* pParent, const SfxItemSet& rSet ) :
aFontListsFL ( this, ResId( FL_FONTLISTS) ),
aFontShowCB ( this, ResId( CB_FONT_SHOW ) ),
aFontHistoryCB ( this, ResId( CB_FONT_HISTORY ) ),
+ aRenderingFL ( this, ResId( FL_RENDERING ) ),
+ aUseHardwareAccell ( this, ResId( CB_USE_HARDACCELL ) ),
aMouseFL ( this, ResId( FL_MOUSE ) ),
aMousePosFT ( this, ResId( FT_MOUSEPOS ) ),
@@ -581,7 +715,13 @@ OfaViewTabPage::OfaViewTabPage(Window* pParent, const SfxItemSet& rSet ) :
{
a3DOpenGLCB.SetClickHdl( LINK( this, OfaViewTabPage, OpenGLHdl ) );
-#if defined( UNX ) || defined ( FS_PRIV_DEBUG )
+ if ( !isHardwareAccelerationAvailable() )
+ {
+ aRenderingFL.Hide();
+ aUseHardwareAccell.Hide();
+ }
+
+#if defined( UNX )
aFontAntiAliasing.SetToggleHdl( LINK( this, OfaViewTabPage, OnAntialiasingToggled ) );
// depending on the size of the text in aAAPointLimitLabel, we slightly re-arrange aAAPointLimit and aAAPointLimitUnits
@@ -619,7 +759,8 @@ OfaViewTabPage::OfaViewTabPage(Window* pParent, const SfxItemSet& rSet ) :
Control* pMiscOptions[] =
{
&aMenuFL, &aFontShowCB, &aShowInactiveItemsCB,
- &aFontListsFL, &aFontHistoryCB, &aMenuIconsCB
+ &aFontListsFL, &aFontHistoryCB, &aMenuIconsCB,
+ &aRenderingFL, &aUseHardwareAccell
};
// temporaryly create the checkbox for the anti aliasing (we need to to determine it's pos)
@@ -649,7 +790,7 @@ OfaViewTabPage::~OfaViewTabPage()
delete pAppearanceCfg;
}
-#if defined( UNX ) || defined ( FS_PRIV_DEBUG )
+#if defined( UNX )
//--- 20.08.01 10:16:12 ---------------------------------------------------
IMPL_LINK( OfaViewTabPage, OnAntialiasingToggled, void*, NOTINTERESTEDIN )
{
@@ -739,7 +880,7 @@ BOOL OfaViewTabPage::FillItemSet( SfxItemSet& rSet )
bAppearanceChanged = TRUE;
}
-#if defined( UNX ) || defined ( FS_PRIV_DEBUG )
+#if defined( UNX )
if ( aFontAntiAliasing.IsChecked() != aFontAntiAliasing.GetSavedValue() )
{
pAppearanceCfg->SetFontAntiAliasing( aFontAntiAliasing.IsChecked() );
@@ -753,6 +894,12 @@ BOOL OfaViewTabPage::FillItemSet( SfxItemSet& rSet )
}
#endif
+ if ( bAppearanceChanged )
+ {
+ pAppearanceCfg->Commit();
+ pAppearanceCfg->SetApplicationDefaults ( GetpApp() );
+ }
+
if ( aFontShowCB.IsChecked() != aFontShowCB.GetSavedValue() )
{
aFontOpt.EnableFontWYSIWYG( aFontShowCB.IsChecked() );
@@ -777,11 +924,14 @@ BOOL OfaViewTabPage::FillItemSet( SfxItemSet& rSet )
aFontOpt.EnableFontHistory( aFontHistoryCB.IsChecked() );
bModified = TRUE;
}
- if ( bAppearanceChanged )
- {
- pAppearanceCfg->Commit();
- pAppearanceCfg->SetApplicationDefaults ( GetpApp() );
- }
+
+ if ( isHardwareAccelerationAvailable() )
+ if ( aUseHardwareAccell.IsChecked() != aUseHardwareAccell.GetSavedValue() )
+ {
+ VCLSettings().EnabledHardwareAcceleration( aUseHardwareAccell.IsChecked() );
+ bModified = TRUE;
+ }
+
// Workingset
SvtSaveOptions aSaveOptions;
if ( aDocViewBtn.IsChecked() != aDocViewBtn.GetSavedValue() )
@@ -900,7 +1050,7 @@ void OfaViewTabPage::Reset( const SfxItemSet& rSet )
aMouseMiddleLB.SelectEntryPos(pAppearanceCfg->GetMiddleMouseButton());
aMouseMiddleLB.SaveValue();
-#if defined( UNX ) || defined ( FS_PRIV_DEBUG )
+#if defined( UNX )
aFontAntiAliasing.Check( pAppearanceCfg->IsFontAntiAliasing() );
aAAPointLimit.SetValue( pAppearanceCfg->GetFontAntialiasingMinPixelHeight() );
#endif
@@ -921,18 +1071,22 @@ void OfaViewTabPage::Reset( const SfxItemSet& rSet )
aMenuIconsCB.SaveValue();
aFontHistoryCB.Check( aFontOpt.IsFontHistoryEnabled() );
+ if ( isHardwareAccelerationAvailable() )
+ aUseHardwareAccell.Check( VCLSettings().IsHardwareAccelerationEnabled() );
-#if defined( UNX ) || defined ( FS_PRIV_DEBUG )
+#if defined( UNX )
aFontAntiAliasing.SaveValue();
aAAPointLimit.SaveValue();
#endif
aFontShowCB.SaveValue();
aShowInactiveItemsCB.SaveValue();
aFontHistoryCB.SaveValue();
+ if ( isHardwareAccelerationAvailable() )
+ aUseHardwareAccell.SaveValue();
aDocViewBtn.SaveValue();
aOpenWinBtn.SaveValue();
-#if defined( UNX ) || defined ( FS_PRIV_DEBUG )
+#if defined( UNX )
LINK( this, OfaViewTabPage, OnAntialiasingToggled ).Call( NULL );
#endif
}