"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
This commit is contained in:
@@ -20,7 +20,6 @@
|
|||||||
#include <vcl/svapp.hxx>
|
#include <vcl/svapp.hxx>
|
||||||
#include <vcl/msgbox.hxx>
|
#include <vcl/msgbox.hxx>
|
||||||
|
|
||||||
#include <osl/process.h>
|
|
||||||
#include <tools/stream.hxx>
|
#include <tools/stream.hxx>
|
||||||
#include <rtl/bootstrap.hxx>
|
#include <rtl/bootstrap.hxx>
|
||||||
#include <unotools/configmgr.hxx>
|
#include <unotools/configmgr.hxx>
|
||||||
@@ -36,13 +35,8 @@
|
|||||||
#include "comphelper/anytostring.hxx"
|
#include "comphelper/anytostring.hxx"
|
||||||
#include "cppuhelper/exc_hlp.hxx"
|
#include "cppuhelper/exc_hlp.hxx"
|
||||||
#include "cppuhelper/bootstrap.hxx"
|
#include "cppuhelper/bootstrap.hxx"
|
||||||
#include <com/sun/star/graphic/XPrimitive2DRenderer.hpp>
|
|
||||||
#include <basegfx/numeric/ftools.hxx>
|
#include <basegfx/numeric/ftools.hxx>
|
||||||
#include <vcl/canvastools.hxx>
|
|
||||||
#include <com/sun/star/geometry/RealRectangle2D.hpp>
|
#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/sfxuno.hxx>
|
||||||
#include <sfx2/sfxcommands.h>
|
#include <sfx2/sfxcommands.h>
|
||||||
@@ -191,87 +185,6 @@ void AboutDialog::StyleControls()
|
|||||||
aCancelButton.GrabFocus();
|
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()
|
void AboutDialog::LayoutControls()
|
||||||
{
|
{
|
||||||
// Get the size of the screen
|
// Get the size of the screen
|
||||||
@@ -297,7 +210,7 @@ void AboutDialog::LayoutControls()
|
|||||||
Point aLogoPos( 0, 0 );
|
Point aLogoPos( 0, 0 );
|
||||||
|
|
||||||
// load svg logo, specify desired width, scale height isotrophically
|
// load svg logo, specify desired width, scale height isotrophically
|
||||||
if( loadBrandSvg("flat_logo",
|
if( SfxApplication::loadBrandSvg("flat_logo",
|
||||||
aLogoBitmap,
|
aLogoBitmap,
|
||||||
aDialogSize.Width()) &&
|
aDialogSize.Width()) &&
|
||||||
!aLogoBitmap.IsEmpty() )
|
!aLogoBitmap.IsEmpty() )
|
||||||
@@ -364,7 +277,7 @@ void AboutDialog::LayoutControls()
|
|||||||
|
|
||||||
// Layout background image
|
// Layout background image
|
||||||
if ( !(Application::GetSettings().GetStyleSettings().GetHighContrastMode()) )
|
if ( !(Application::GetSettings().GetStyleSettings().GetHighContrastMode()) )
|
||||||
loadBrandSvg("shell/about",
|
SfxApplication::loadBrandSvg("shell/about",
|
||||||
aBackgroundBitmap,
|
aBackgroundBitmap,
|
||||||
aDialogSize.Width());
|
aDialogSize.Width());
|
||||||
SetOutputSizePixel( aDialogSize );
|
SetOutputSizePixel( aDialogSize );
|
||||||
|
@@ -3221,7 +3221,7 @@ void SAL_CALL SlideshowImpl::gotoNextSlide( ) throw (RuntimeException)
|
|||||||
{
|
{
|
||||||
if ( maPresSettings.mbShowPauseLogo )
|
if ( maPresSettings.mbShowPauseLogo )
|
||||||
{
|
{
|
||||||
Graphic aGraphic( SfxApplication::GetApplicationLogo().GetBitmapEx() );
|
Graphic aGraphic(SfxApplication::GetApplicationLogo(360));
|
||||||
mpShowWindow->SetPauseMode( 0, maPresSettings.mnPauseTimeout, &aGraphic );
|
mpShowWindow->SetPauseMode( 0, maPresSettings.mnPauseTimeout, &aGraphic );
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
|
@@ -257,10 +257,10 @@ public:
|
|||||||
SAL_DLLPRIVATE SfxModule* GetModule_Impl();
|
SAL_DLLPRIVATE SfxModule* GetModule_Impl();
|
||||||
SAL_DLLPRIVATE ResMgr* GetOffResManager_Impl();
|
SAL_DLLPRIVATE ResMgr* GetOffResManager_Impl();
|
||||||
|
|
||||||
/* loads a branded bitmap - that can be overridden per locale */
|
static bool loadBrandSvg(const char *pName, BitmapEx &rBitmap, int nWidth);
|
||||||
static bool LoadBrandBitmap (const char* pName, BitmapEx &rBitmap);
|
|
||||||
/** loads the application logo as used in the about dialog and impress slideshow pause screen */
|
/** loads the application logo as used in the impress slideshow pause screen */
|
||||||
static Image GetApplicationLogo();
|
static BitmapEx GetApplicationLogo(long nWidth);
|
||||||
};
|
};
|
||||||
|
|
||||||
#define SFX_APP() SfxGetpApp()
|
#define SFX_APP() SfxGetpApp()
|
||||||
|
@@ -17,6 +17,7 @@
|
|||||||
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
* the License at http://www.apache.org/licenses/LICENSE-2.0 .
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include <vcl/canvastools.hxx>
|
||||||
#include <vcl/status.hxx>
|
#include <vcl/status.hxx>
|
||||||
#include <vcl/msgbox.hxx>
|
#include <vcl/msgbox.hxx>
|
||||||
#include <svl/whiter.hxx>
|
#include <svl/whiter.hxx>
|
||||||
@@ -27,8 +28,10 @@
|
|||||||
#include <unotools/internaloptions.hxx>
|
#include <unotools/internaloptions.hxx>
|
||||||
#include <unotools/pathoptions.hxx>
|
#include <unotools/pathoptions.hxx>
|
||||||
#include <com/sun/star/registry/InvalidRegistryException.hpp>
|
#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/beans/PropertyValue.hpp>
|
||||||
#include <com/sun/star/frame/XFrame.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/util/XURLTransformer.hpp>
|
||||||
#include <com/sun/star/frame/XFramesSupplier.hpp>
|
#include <com/sun/star/frame/XFramesSupplier.hpp>
|
||||||
#include <com/sun/star/uno/Reference.h>
|
#include <com/sun/star/uno/Reference.h>
|
||||||
@@ -43,6 +46,7 @@
|
|||||||
#include <unotools/bootstrap.hxx>
|
#include <unotools/bootstrap.hxx>
|
||||||
#include <unotools/moduleoptions.hxx>
|
#include <unotools/moduleoptions.hxx>
|
||||||
#include <osl/file.hxx>
|
#include <osl/file.hxx>
|
||||||
|
#include <osl/process.h>
|
||||||
#include <rtl/bootstrap.hxx>
|
#include <rtl/bootstrap.hxx>
|
||||||
|
|
||||||
#include "sfx2/sfxresid.hxx"
|
#include "sfx2/sfxresid.hxx"
|
||||||
@@ -71,7 +75,10 @@
|
|||||||
#include <sfx2/viewsh.hxx>
|
#include <sfx2/viewsh.hxx>
|
||||||
#include <sfx2/objface.hxx>
|
#include <sfx2/objface.hxx>
|
||||||
#include "helper.hxx" // SfxContentHelper::Kill()
|
#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::uno;
|
||||||
using namespace ::com::sun::star::util;
|
using namespace ::com::sun::star::util;
|
||||||
using namespace ::com::sun::star::beans;
|
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; }
|
SfxDispatcher* SfxApplication::GetAppDispatcher_Impl() { return pAppData_Impl->pAppDispat; }
|
||||||
SfxSlotPool& SfxApplication::GetAppSlotPool_Impl() const { return *pAppData_Impl->pSlotPool; }
|
SfxSlotPool& SfxApplication::GetAppSlotPool_Impl() const { return *pAppData_Impl->pSlotPool; }
|
||||||
|
|
||||||
/** loads the application logo as used in the about dialog and impress slideshow pause screen */
|
bool SfxApplication::loadBrandSvg(const char *pName, BitmapEx &rBitmap, int nWidth)
|
||||||
Image SfxApplication::GetApplicationLogo()
|
{
|
||||||
|
// 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;
|
BitmapEx aBitmap;
|
||||||
|
SfxApplication::loadBrandSvg("flat_logo", aBitmap, nWidth);
|
||||||
Application::LoadBrandBitmap ("about", aBitmap);
|
Application::LoadBrandBitmap ("about", aBitmap);
|
||||||
return Image( aBitmap );
|
return aBitmap;
|
||||||
}
|
}
|
||||||
|
|
||||||
SfxChildWinFactArr_Impl::~SfxChildWinFactArr_Impl()
|
SfxChildWinFactArr_Impl::~SfxChildWinFactArr_Impl()
|
||||||
|
Reference in New Issue
Block a user