"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/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 );
|
||||
|
@@ -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
|
||||
|
@@ -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()
|
||||
|
@@ -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()
|
||||
|
Reference in New Issue
Block a user