summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCaolán McNamara <caolanm@redhat.com>2013-03-16 17:30:29 +0000
committerCaolán McNamara <caolanm@redhat.com>2013-03-16 21:25:17 +0000
commit918f8ed91e325606a44d088da5fbbf8c463dffba (patch)
treec44b3ccf10b0325aa85a3ea5830a87dea5edb1a2
parent4d362d2362661670579c03bdccf0063ee6569604 (diff)
"show logo" in slideshow settings doesn't do anything
This wants to load about.png which doesn't exist anymore. "about.svg" does, but is a rather abstract background image for the about dialog these days, so use "flat_logo.svg" instead. Which requires moving the svg loader out of cui into sfx2 for re-use. Change-Id: I8654f0f93766556ef4ed4b87eff35b45d8189761
-rw-r--r--cui/source/dialogs/about.cxx91
-rw-r--r--sd/source/ui/slideshow/slideshowimpl.cxx2
-rw-r--r--sfx2/inc/sfx2/app.hxx8
-rw-r--r--sfx2/source/appl/appmisc.cxx95
4 files changed, 99 insertions, 97 deletions
diff --git a/cui/source/dialogs/about.cxx b/cui/source/dialogs/about.cxx
index e904d0f04ac1..d40e4525b2d1 100644
--- a/cui/source/dialogs/about.cxx
+++ b/cui/source/dialogs/about.cxx
@@ -20,7 +20,6 @@
#include <vcl/svapp.hxx>
#include <vcl/msgbox.hxx>
-#include <osl/process.h>
#include <tools/stream.hxx>
#include <rtl/bootstrap.hxx>
#include <unotools/configmgr.hxx>
@@ -36,13 +35,8 @@
#include "comphelper/anytostring.hxx"
#include "cppuhelper/exc_hlp.hxx"
#include "cppuhelper/bootstrap.hxx"
-#include <com/sun/star/graphic/XPrimitive2DRenderer.hpp>
#include <basegfx/numeric/ftools.hxx>
-#include <vcl/canvastools.hxx>
#include <com/sun/star/geometry/RealRectangle2D.hpp>
-#include <com/sun/star/rendering/XIntegerReadOnlyBitmap.hpp>
-#include <basegfx/matrix/b2dhommatrixtools.hxx>
-#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
#include <sfx2/sfxuno.hxx>
#include <sfx2/sfxcommands.h>
@@ -191,87 +185,6 @@ void AboutDialog::StyleControls()
aCancelButton.GrabFocus();
}
-static bool loadBrandSvg(const char *pName, BitmapEx &rBitmap, int nWidth )
-{
- // Load from disk
- // ---------------------------------------------------------------------
- rtl::OUString aBaseName = ( rtl::OUString("/") +
- rtl::OUString::createFromAscii( pName ) );
- rtl::OUString aSvg( ".svg" );
-
- rtl_Locale *pLoc = NULL;
- osl_getProcessLocale (&pLoc);
- LanguageTag aLanguageTag( *pLoc);
-
- rtl::OUString uri = rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program" ) + aBaseName+aSvg;
- rtl::Bootstrap::expandMacros( uri );
- INetURLObject aObj( uri );
- SvgData aSvgData(aObj.PathToFileName());
-
- // transform into [0,0,width,width*aspect] std dimensions
- // ---------------------------------------------------------------------
- basegfx::B2DRange aRange(aSvgData.getRange());
- const double fAspectRatio(aRange.getWidth()/aRange.getHeight());
- basegfx::B2DHomMatrix aTransform(
- basegfx::tools::createTranslateB2DHomMatrix(
- -aRange.getMinX(),
- -aRange.getMinY()));
- aTransform.scale(
- nWidth / aRange.getWidth(),
- nWidth / fAspectRatio / aRange.getHeight());
- const drawinglayer::primitive2d::Primitive2DReference xTransformRef(
- new drawinglayer::primitive2d::TransformPrimitive2D(
- aTransform,
- aSvgData.getPrimitive2DSequence()));
-
- // UNO dance to render from drawinglayer
- // ---------------------------------------------------------------------
- uno::Reference< lang::XMultiServiceFactory > xFactory(::comphelper::getProcessServiceFactory());
- const rtl::OUString aServiceName("com.sun.star.graphic.Primitive2DTools");
-
- try
- {
- const uno::Reference< graphic::XPrimitive2DRenderer > xPrimitive2DRenderer(
- xFactory->createInstance(aServiceName),
- uno::UNO_QUERY_THROW);
-
- if(xPrimitive2DRenderer.is())
- {
- // cancel out rasterize's mm2pixel conversion
- const double fFakeDPI=1000.0/2.54;
-
- geometry::RealRectangle2D aRealRect(
- 0, 0,
- nWidth, nWidth / fAspectRatio);
-
- const uno::Reference< rendering::XBitmap > xBitmap(
- xPrimitive2DRenderer->rasterize(
- drawinglayer::primitive2d::Primitive2DSequence(&xTransformRef, 1),
- uno::Sequence< beans::PropertyValue >(),
- fFakeDPI,
- fFakeDPI,
- aRealRect,
- 500000));
-
- if(xBitmap.is())
- {
- const uno::Reference< rendering::XIntegerReadOnlyBitmap> xIntBmp(xBitmap, uno::UNO_QUERY_THROW);
-
- if(xIntBmp.is())
- {
- rBitmap = vcl::unotools::bitmapExFromXBitmap(xIntBmp);
- return true;
- }
- }
- }
- }
- catch(const uno::Exception&)
- {
- OSL_ENSURE(sal_False, "Got no graphic::XPrimitive2DRenderer (!)" );
- }
- return false;
-}
-
void AboutDialog::LayoutControls()
{
// Get the size of the screen
@@ -297,7 +210,7 @@ void AboutDialog::LayoutControls()
Point aLogoPos( 0, 0 );
// load svg logo, specify desired width, scale height isotrophically
- if( loadBrandSvg("flat_logo",
+ if( SfxApplication::loadBrandSvg("flat_logo",
aLogoBitmap,
aDialogSize.Width()) &&
!aLogoBitmap.IsEmpty() )
@@ -364,7 +277,7 @@ void AboutDialog::LayoutControls()
// Layout background image
if ( !(Application::GetSettings().GetStyleSettings().GetHighContrastMode()) )
- loadBrandSvg("shell/about",
+ SfxApplication::loadBrandSvg("shell/about",
aBackgroundBitmap,
aDialogSize.Width());
SetOutputSizePixel( aDialogSize );
diff --git a/sd/source/ui/slideshow/slideshowimpl.cxx b/sd/source/ui/slideshow/slideshowimpl.cxx
index b21e0850bde3..88f282a0c3d7 100644
--- a/sd/source/ui/slideshow/slideshowimpl.cxx
+++ b/sd/source/ui/slideshow/slideshowimpl.cxx
@@ -3221,7 +3221,7 @@ void SAL_CALL SlideshowImpl::gotoNextSlide( ) throw (RuntimeException)
{
if ( maPresSettings.mbShowPauseLogo )
{
- Graphic aGraphic( SfxApplication::GetApplicationLogo().GetBitmapEx() );
+ Graphic aGraphic(SfxApplication::GetApplicationLogo(360));
mpShowWindow->SetPauseMode( 0, maPresSettings.mnPauseTimeout, &aGraphic );
}
else
diff --git a/sfx2/inc/sfx2/app.hxx b/sfx2/inc/sfx2/app.hxx
index 24c0294211d9..ab884406e5de 100644
--- a/sfx2/inc/sfx2/app.hxx
+++ b/sfx2/inc/sfx2/app.hxx
@@ -257,10 +257,10 @@ public:
SAL_DLLPRIVATE SfxModule* GetModule_Impl();
SAL_DLLPRIVATE ResMgr* GetOffResManager_Impl();
- /* loads a branded bitmap - that can be overridden per locale */
- static bool LoadBrandBitmap (const char* pName, BitmapEx &rBitmap);
- /** loads the application logo as used in the about dialog and impress slideshow pause screen */
- static Image GetApplicationLogo();
+ static bool loadBrandSvg(const char *pName, BitmapEx &rBitmap, int nWidth);
+
+ /** loads the application logo as used in the impress slideshow pause screen */
+ static BitmapEx GetApplicationLogo(long nWidth);
};
#define SFX_APP() SfxGetpApp()
diff --git a/sfx2/source/appl/appmisc.cxx b/sfx2/source/appl/appmisc.cxx
index a134957d1304..7e016efa01e5 100644
--- a/sfx2/source/appl/appmisc.cxx
+++ b/sfx2/source/appl/appmisc.cxx
@@ -17,6 +17,7 @@
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
*/
+#include <vcl/canvastools.hxx>
#include <vcl/status.hxx>
#include <vcl/msgbox.hxx>
#include <svl/whiter.hxx>
@@ -27,8 +28,10 @@
#include <unotools/internaloptions.hxx>
#include <unotools/pathoptions.hxx>
#include <com/sun/star/registry/InvalidRegistryException.hpp>
+#include <com/sun/star/rendering/XIntegerReadOnlyBitmap.hpp>
#include <com/sun/star/beans/PropertyValue.hpp>
#include <com/sun/star/frame/XFrame.hpp>
+#include <com/sun/star/graphic/XPrimitive2DRenderer.hpp>
#include <com/sun/star/util/XURLTransformer.hpp>
#include <com/sun/star/frame/XFramesSupplier.hpp>
#include <com/sun/star/uno/Reference.h>
@@ -43,6 +46,7 @@
#include <unotools/bootstrap.hxx>
#include <unotools/moduleoptions.hxx>
#include <osl/file.hxx>
+#include <osl/process.h>
#include <rtl/bootstrap.hxx>
#include "sfx2/sfxresid.hxx"
@@ -71,7 +75,10 @@
#include <sfx2/viewsh.hxx>
#include <sfx2/objface.hxx>
#include "helper.hxx" // SfxContentHelper::Kill()
+#include <basegfx/matrix/b2dhommatrixtools.hxx>
+#include <drawinglayer/primitive2d/transformprimitive2d.hxx>
+using namespace ::com::sun::star;
using namespace ::com::sun::star::uno;
using namespace ::com::sun::star::util;
using namespace ::com::sun::star::beans;
@@ -259,12 +266,94 @@ sal_Bool SfxApplication::IsDowning() const { return pAppData_Impl->bDowning; }
SfxDispatcher* SfxApplication::GetAppDispatcher_Impl() { return pAppData_Impl->pAppDispat; }
SfxSlotPool& SfxApplication::GetAppSlotPool_Impl() const { return *pAppData_Impl->pSlotPool; }
-/** loads the application logo as used in the about dialog and impress slideshow pause screen */
-Image SfxApplication::GetApplicationLogo()
+bool SfxApplication::loadBrandSvg(const char *pName, BitmapEx &rBitmap, int nWidth)
+{
+ // Load from disk
+ // ---------------------------------------------------------------------
+ rtl::OUString aBaseName = ( rtl::OUString("/") +
+ rtl::OUString::createFromAscii( pName ) );
+ rtl::OUString aSvg( ".svg" );
+
+ rtl_Locale *pLoc = NULL;
+ osl_getProcessLocale (&pLoc);
+ LanguageTag aLanguageTag( *pLoc);
+
+ rtl::OUString uri = rtl::OUString::createFromAscii( "$BRAND_BASE_DIR/program" ) + aBaseName+aSvg;
+ rtl::Bootstrap::expandMacros( uri );
+ INetURLObject aObj( uri );
+ SvgData aSvgData(aObj.PathToFileName());
+
+ // transform into [0,0,width,width*aspect] std dimensions
+ // ---------------------------------------------------------------------
+ basegfx::B2DRange aRange(aSvgData.getRange());
+ const double fAspectRatio(aRange.getWidth()/aRange.getHeight());
+ basegfx::B2DHomMatrix aTransform(
+ basegfx::tools::createTranslateB2DHomMatrix(
+ -aRange.getMinX(),
+ -aRange.getMinY()));
+ aTransform.scale(
+ nWidth / aRange.getWidth(),
+ nWidth / fAspectRatio / aRange.getHeight());
+ const drawinglayer::primitive2d::Primitive2DReference xTransformRef(
+ new drawinglayer::primitive2d::TransformPrimitive2D(
+ aTransform,
+ aSvgData.getPrimitive2DSequence()));
+
+ // UNO dance to render from drawinglayer
+ // ---------------------------------------------------------------------
+ uno::Reference< lang::XMultiServiceFactory > xFactory(::comphelper::getProcessServiceFactory());
+ const rtl::OUString aServiceName("com.sun.star.graphic.Primitive2DTools");
+
+ try
+ {
+ const uno::Reference< graphic::XPrimitive2DRenderer > xPrimitive2DRenderer(
+ xFactory->createInstance(aServiceName),
+ uno::UNO_QUERY_THROW);
+
+ if(xPrimitive2DRenderer.is())
+ {
+ // cancel out rasterize's mm2pixel conversion
+ const double fFakeDPI=1000.0/2.54;
+
+ geometry::RealRectangle2D aRealRect(
+ 0, 0,
+ nWidth, nWidth / fAspectRatio);
+
+ const uno::Reference< rendering::XBitmap > xBitmap(
+ xPrimitive2DRenderer->rasterize(
+ drawinglayer::primitive2d::Primitive2DSequence(&xTransformRef, 1),
+ uno::Sequence< beans::PropertyValue >(),
+ fFakeDPI,
+ fFakeDPI,
+ aRealRect,
+ 500000));
+
+ if(xBitmap.is())
+ {
+ const uno::Reference< rendering::XIntegerReadOnlyBitmap> xIntBmp(xBitmap, uno::UNO_QUERY_THROW);
+
+ if(xIntBmp.is())
+ {
+ rBitmap = vcl::unotools::bitmapExFromXBitmap(xIntBmp);
+ return true;
+ }
+ }
+ }
+ }
+ catch(const uno::Exception&)
+ {
+ OSL_ENSURE(sal_False, "Got no graphic::XPrimitive2DRenderer (!)" );
+ }
+ return false;
+}
+
+/** loads the application logo as used in the impress slideshow pause screen */
+BitmapEx SfxApplication::GetApplicationLogo(long nWidth)
{
BitmapEx aBitmap;
+ SfxApplication::loadBrandSvg("flat_logo", aBitmap, nWidth);
Application::LoadBrandBitmap ("about", aBitmap);
- return Image( aBitmap );
+ return aBitmap;
}
SfxChildWinFactArr_Impl::~SfxChildWinFactArr_Impl()