summaryrefslogtreecommitdiff
path: root/sdext/source/presenter
diff options
context:
space:
mode:
authorJens-Heiner Rechtien <hr@openoffice.org>2009-11-30 14:44:46 +0000
committerJens-Heiner Rechtien <hr@openoffice.org>2009-11-30 14:44:46 +0000
commit1becba6356524f199edea28c718a052e0e6f1478 (patch)
tree6174adc2801e23e531629692187998f86834562f /sdext/source/presenter
parent08b4374045238631144b6927bf6f1253e98cd6b2 (diff)
parent17ca33d11352af246ecbb2f2c92e614aff4e1021 (diff)
slideshow1: merge with DEV300 m44
Diffstat (limited to 'sdext/source/presenter')
-rw-r--r--sdext/source/presenter/PresenterPaneBorderPainter.hxx1
-rw-r--r--sdext/source/presenter/PresenterSlideShowView.cxx48
-rw-r--r--sdext/source/presenter/PresenterSlideShowView.hxx7
-rw-r--r--sdext/source/presenter/PresenterTimer.cxx10
4 files changed, 46 insertions, 20 deletions
diff --git a/sdext/source/presenter/PresenterPaneBorderPainter.hxx b/sdext/source/presenter/PresenterPaneBorderPainter.hxx
index e09192734f7f..45fbe3340cd5 100644
--- a/sdext/source/presenter/PresenterPaneBorderPainter.hxx
+++ b/sdext/source/presenter/PresenterPaneBorderPainter.hxx
@@ -32,7 +32,6 @@
#ifndef SDEXT_PRESENTER_PRESENTER_PANE_BORDER_PAINTER_HXX
#define SDEXT_PRESENTER_PRESENTER_PANE_BORDER_PAINTER_HXX
-#include <vcl/bitmap.hxx>
#include <com/sun/star/uno/XComponentContext.hpp>
#include <com/sun/star/awt/Rectangle.hpp>
#include <com/sun/star/drawing/framework/XPaneBorderPainter.hpp>
diff --git a/sdext/source/presenter/PresenterSlideShowView.cxx b/sdext/source/presenter/PresenterSlideShowView.cxx
index 2816c7bee395..10e1b80f6805 100644
--- a/sdext/source/presenter/PresenterSlideShowView.cxx
+++ b/sdext/source/presenter/PresenterSlideShowView.cxx
@@ -82,6 +82,8 @@ PresenterSlideShowView::PresenterSlideShowView (
mxPointer(),
mxWindow(),
mxViewWindow(),
+ mxTopPane(),
+ mxPresenterHelper(),
mxBackgroundPolygon1(),
mxBackgroundPolygon2(),
mbIsViewAdded(false),
@@ -114,6 +116,13 @@ void PresenterSlideShowView::LateInit (void)
if (xSlideShowComponent.is())
xSlideShowComponent->addEventListener(static_cast<awt::XWindowListener*>(this));
+ Reference<lang::XMultiComponentFactory> xFactory (
+ mxComponentContext->getServiceManager(), UNO_QUERY_THROW);
+ mxPresenterHelper.set (xFactory->createInstanceWithContext(
+ OUString::createFromAscii("com.sun.star.comp.Draw.PresenterHelper"),
+ mxComponentContext),
+ UNO_QUERY_THROW);
+
// Use view id and controller to retrieve window and canvas from
// configuration controller.
Reference<XControllerManager> xCM (mxController, UNO_QUERY_THROW);
@@ -121,6 +130,8 @@ void PresenterSlideShowView::LateInit (void)
if (xCC.is())
{
+ mxTopPane.set(xCC->getResource(mxViewId->getAnchor()->getAnchor()), UNO_QUERY);
+
Reference<XPane> xPane (xCC->getResource(mxViewId->getAnchor()), UNO_QUERY_THROW);
mxWindow = xPane->getWindow();
@@ -142,8 +153,8 @@ void PresenterSlideShowView::LateInit (void)
// Create a window for the actual slide show view. It is places
// centered and with maximal size inside the pane.
mxViewWindow = CreateViewWindow(mxWindow);
- mxViewCanvas = CreateViewCanvas(mxViewWindow,
- Reference<XPane>(xCC->getResource(mxViewId->getAnchor()->getAnchor()), UNO_QUERY));
+
+ mxViewCanvas = CreateViewCanvas(mxViewWindow);
if (mxViewWindow.is())
{
@@ -553,6 +564,19 @@ void SAL_CALL PresenterSlideShowView::setMouseCursor(::sal_Int16 nPointerShape)
+awt::Rectangle SAL_CALL PresenterSlideShowView::getCanvasArea( ) throw (RuntimeException)
+{
+ if( mxViewWindow.is() && mxTopPane.is() )
+ return mxPresenterHelper->getWindowExtentsRelative( mxViewWindow, mxTopPane->getWindow() );
+
+ awt::Rectangle aRectangle;
+
+ aRectangle.X = aRectangle.Y = aRectangle.Width = aRectangle.Height = 0;
+
+ return aRectangle;
+}
+
+
//----- lang::XEventListener --------------------------------------------------
@@ -986,22 +1010,14 @@ Reference<awt::XWindow> PresenterSlideShowView::CreateViewWindow (
Reference<rendering::XCanvas> PresenterSlideShowView::CreateViewCanvas (
- const Reference<awt::XWindow>& rxViewWindow,
- const Reference<XPane>& rxParentPane) const
+ const Reference<awt::XWindow>& rxViewWindow) const
{
// Create a canvas for the view window.
- Reference<lang::XMultiComponentFactory> xFactory (
- mxComponentContext->getServiceManager(), UNO_QUERY_THROW);
- Reference<drawing::XPresenterHelper> xPresenterHelper(
- xFactory->createInstanceWithContext(
- OUString::createFromAscii("com.sun.star.comp.Draw.PresenterHelper"),
- mxComponentContext),
- UNO_QUERY_THROW);
- return xPresenterHelper->createSharedCanvas(
- Reference<rendering::XSpriteCanvas>(rxParentPane->getCanvas(), UNO_QUERY),
- rxParentPane->getWindow(),
- rxParentPane->getCanvas(),
- rxParentPane->getWindow(),
+ return mxPresenterHelper->createSharedCanvas(
+ Reference<rendering::XSpriteCanvas>(mxTopPane->getCanvas(), UNO_QUERY),
+ mxTopPane->getWindow(),
+ mxTopPane->getCanvas(),
+ mxTopPane->getWindow(),
rxViewWindow);
}
diff --git a/sdext/source/presenter/PresenterSlideShowView.hxx b/sdext/source/presenter/PresenterSlideShowView.hxx
index 4525a38b04db..4bb12a1aadb0 100644
--- a/sdext/source/presenter/PresenterSlideShowView.hxx
+++ b/sdext/source/presenter/PresenterSlideShowView.hxx
@@ -149,6 +149,8 @@ public:
virtual void SAL_CALL setMouseCursor(::sal_Int16 nPointerShape)
throw (css::uno::RuntimeException);
+ virtual ::com::sun::star::awt::Rectangle SAL_CALL getCanvasArea( )
+ throw (::com::sun::star::uno::RuntimeException);
// lang::XEventListener
virtual void SAL_CALL disposing (const css::lang::EventObject& rEvent)
@@ -236,6 +238,8 @@ private:
css::uno::Reference<css::awt::XPointer> mxPointer;
css::uno::Reference<css::awt::XWindow> mxWindow;
css::uno::Reference<css::awt::XWindow> mxViewWindow;
+ css::uno::Reference<css::drawing::framework::XPane> mxTopPane;
+ css::uno::Reference<css::drawing::XPresenterHelper> mxPresenterHelper;
css::uno::Reference<css::rendering::XPolyPolygon2D> mxBackgroundPolygon1;
css::uno::Reference<css::rendering::XPolyPolygon2D> mxBackgroundPolygon2;
bool mbIsViewAdded;
@@ -267,8 +271,7 @@ private:
css::uno::Reference<css::awt::XWindow> CreateViewWindow (
const css::uno::Reference<css::awt::XWindow>& rxParentWindow) const;
css::uno::Reference<css::rendering::XCanvas> CreateViewCanvas (
- const css::uno::Reference<css::awt::XWindow>& rxWindow,
- const css::uno::Reference<css::drawing::framework::XPane>& rxParentPane) const;
+ const css::uno::Reference<css::awt::XWindow>& rxWindow) const;
void Resize (void);
diff --git a/sdext/source/presenter/PresenterTimer.cxx b/sdext/source/presenter/PresenterTimer.cxx
index 45aba5f8bdce..f66289f2e5e6 100644
--- a/sdext/source/presenter/PresenterTimer.cxx
+++ b/sdext/source/presenter/PresenterTimer.cxx
@@ -76,7 +76,6 @@ class TimerScheduler
{
public:
static ::boost::shared_ptr<TimerScheduler> Instance (void);
- static void Release (void);
static SharedTimerTask CreateTimerTask (
const PresenterTimer::Task& rTask,
const TimeValue& rDueTime,
@@ -107,12 +106,15 @@ private:
::osl::Mutex maCurrentTaskMutex;
SharedTimerTask mpCurrentTask;
+ static void Release (void);
+
TimerScheduler (void);
virtual ~TimerScheduler (void);
class Deleter {public: void operator () (TimerScheduler* pScheduler) { delete pScheduler; } };
friend class Deleter;
virtual void SAL_CALL run (void);
+ virtual void SAL_CALL onTerminated (void);
};
@@ -380,7 +382,13 @@ void SAL_CALL TimerScheduler::run (void)
mpCurrentTask.reset();
}
}
+}
+
+
+
+void SAL_CALL TimerScheduler::onTerminated (void)
+{
Release();
}