Kaydet (Commit) 918f8ed9 authored tarafından Caolán McNamara's avatar Caolán McNamara

"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
üst 4d362d23
......@@ -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()
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment