summaryrefslogtreecommitdiff
path: root/slideshow
diff options
context:
space:
mode:
authorThorsten Behrens <tbehrens@suse.com>2013-10-08 12:22:23 +0200
committerThorsten Behrens <thb@documentfoundation.org>2013-10-08 12:33:58 +0200
commiteff346b78c3a0bd9855dfa9b4dc92cfbf7a9ee27 (patch)
treee3e5d9056a87939fdc001412610a99e91187dbc1 /slideshow
parent1aae965d44c813d35ca791b7e731d43fc81c58fe (diff)
oglcanvas: XCanvas != XBitmap kill another instance
This crept in from gsoc, some whitespace / formatting alignment with slideshow conventions, added doxygen class mission statement. Change-Id: Ie9837fc437d9827dc8fa6b1c25a3f46a638bac51
Diffstat (limited to 'slideshow')
-rw-r--r--slideshow/source/engine/pointersymbol.cxx73
-rw-r--r--slideshow/source/engine/pointersymbol.hxx20
-rw-r--r--slideshow/source/engine/waitsymbol.hxx1
3 files changed, 40 insertions, 54 deletions
diff --git a/slideshow/source/engine/pointersymbol.cxx b/slideshow/source/engine/pointersymbol.cxx
index 0516431312cf..9ff58929375e 100644
--- a/slideshow/source/engine/pointersymbol.cxx
+++ b/slideshow/source/engine/pointersymbol.cxx
@@ -28,8 +28,7 @@
#include <basegfx/vector/b2dvector.hxx>
#include <com/sun/star/rendering/XCanvas.hpp>
-#include <com/sun/star/geometry/IntegerSize2D.hpp>
-#include "com/sun/star/uno/Reference.hxx"
+#include <com/sun/star/presentation/XSlideShowView.hpp>
#include "pointersymbol.hxx"
#include "eventmultiplexer.hxx"
@@ -47,9 +46,9 @@ const sal_Int32 LEFT_BORDER_SPACE = 10;
const sal_Int32 LOWER_BORDER_SPACE = 10;
PointerSymbolSharedPtr PointerSymbol::create( const uno::Reference<rendering::XBitmap>& xBitmap,
- ScreenUpdater& rScreenUpdater,
- EventMultiplexer& rEventMultiplexer,
- const UnoViewContainer& rViewContainer )
+ ScreenUpdater& rScreenUpdater,
+ EventMultiplexer& rEventMultiplexer,
+ const UnoViewContainer& rViewContainer )
{
PointerSymbolSharedPtr pRet(
new PointerSymbol( xBitmap,
@@ -62,11 +61,12 @@ PointerSymbolSharedPtr PointerSymbol::create( const uno::Reference<rendering::XB
}
PointerSymbol::PointerSymbol( uno::Reference<rendering::XBitmap> const & xBitmap,
- ScreenUpdater& rScreenUpdater,
- const UnoViewContainer& rViewContainer ) :
+ ScreenUpdater& rScreenUpdater,
+ const UnoViewContainer& rViewContainer ) :
mxBitmap(xBitmap),
maViews(),
mrScreenUpdater( rScreenUpdater ),
+ maPos(),
mbVisible(false)
{
std::for_each( rViewContainer.begin(),
@@ -102,35 +102,14 @@ void PointerSymbol::setVisible( const bool bVisible )
}
}
-basegfx::B2DPoint PointerSymbol::calcSpritePos( UnoViewSharedPtr const & rView ) const
+basegfx::B2DPoint PointerSymbol::calcSpritePos(UnoViewSharedPtr const & rView) const
{
- const uno::Reference<rendering::XBitmap> xBitmap( rView->getCanvas()->getUNOCanvas(),
- uno::UNO_QUERY_THROW );
- const geometry::IntegerSize2D realSize( xBitmap->getSize() );
-
- return basegfx::B2DPoint(
- // pos.X pos.Y are given in 0..1, beginning from the upper left corner of the currentSlide.
- std::min<sal_Int32>( 0, LEFT_BORDER_SPACE ),
- std::max<sal_Int32>( 0, realSize.Height * 1 - mxBitmap->getSize().Height
- - LOWER_BORDER_SPACE ) );
-}
-
-basegfx::B2DPoint PointerSymbol::calcSpritePos(
- UnoViewSharedPtr const & rView, const ::com::sun::star::geometry::RealPoint2D pos) const
-{
- const uno::Reference<rendering::XBitmap> xBitmap( rView->getCanvas()->getUNOCanvas(),
- uno::UNO_QUERY_THROW );
- const geometry::IntegerSize2D realSize( xBitmap->getSize() );
-
+ const awt::Rectangle aViewArea( rView->getUnoView()->getCanvasArea() );
const geometry::IntegerSize2D realTranslationOffset ( rView->getTranslationOffset() );
-
- basegfx::B2DPoint newPos(
- realTranslationOffset.Width + (realSize.Width - 2 * realTranslationOffset.Width) * pos.X,
- realTranslationOffset.Height + (realSize.Height - 2 * realTranslationOffset.Height) * pos.Y);
-
-
- return newPos;
+ return basegfx::B2DPoint(
+ realTranslationOffset.Width + ((aViewArea.Width - aViewArea.X) - 2 * realTranslationOffset.Width) * maPos.X,
+ realTranslationOffset.Height + ((aViewArea.Height - aViewArea.Y) - 2 * realTranslationOffset.Height) * maPos.Y);
}
void PointerSymbol::viewAdded( const UnoViewSharedPtr& rView )
@@ -215,20 +194,26 @@ void PointerSymbol::viewsChanged()
}
}
-void PointerSymbol::viewsChanged(const ::com::sun::star::geometry::RealPoint2D pos)
+void PointerSymbol::viewsChanged(const geometry::RealPoint2D pos)
{
- // reposition sprites on all views
- ViewsVecT::const_iterator aIter( maViews.begin() );
- ViewsVecT::const_iterator const aEnd ( maViews.end() );
- while( aIter != aEnd )
+ if( pos.X != maPos.X || pos.Y != maPos.Y )
{
- if( aIter->second ) {
- aIter->second->movePixel(
- calcSpritePos( aIter->first, pos ));
- mrScreenUpdater.notifyUpdate();
- mrScreenUpdater.commitUpdates();
+ maPos = pos;
+
+ // reposition sprites on all views
+ ViewsVecT::const_iterator aIter( maViews.begin() );
+ ViewsVecT::const_iterator const aEnd ( maViews.end() );
+ while( aIter != aEnd )
+ {
+ if( aIter->second )
+ {
+ aIter->second->movePixel(
+ calcSpritePos( aIter->first ));
+ mrScreenUpdater.notifyUpdate();
+ mrScreenUpdater.commitUpdates();
+ }
+ ++aIter;
}
- ++aIter;
}
}
diff --git a/slideshow/source/engine/pointersymbol.hxx b/slideshow/source/engine/pointersymbol.hxx
index 77309e712c0a..706f312d8f54 100644
--- a/slideshow/source/engine/pointersymbol.hxx
+++ b/slideshow/source/engine/pointersymbol.hxx
@@ -34,15 +34,16 @@ namespace internal {
class EventMultiplexer;
typedef boost::shared_ptr<class PointerSymbol> PointerSymbolSharedPtr;
+/// On-screen 'laser pointer' from the Impress remote control
class PointerSymbol : public ViewEventHandler,
- private ::boost::noncopyable
+ private ::boost::noncopyable
{
public:
static PointerSymbolSharedPtr create( const ::com::sun::star::uno::Reference<
- ::com::sun::star::rendering::XBitmap>& xBitmap,
- ScreenUpdater& rScreenUpdater,
- EventMultiplexer& rEventMultiplexer,
- const UnoViewContainer& rViewContainer );
+ ::com::sun::star::rendering::XBitmap>& xBitmap,
+ ScreenUpdater& rScreenUpdater,
+ EventMultiplexer& rEventMultiplexer,
+ const UnoViewContainer& rViewContainer );
/** Shows the pointer symbol.
*/
@@ -58,9 +59,9 @@ public:
private:
PointerSymbol( const ::com::sun::star::uno::Reference<
- ::com::sun::star::rendering::XBitmap>& xBitmap,
- ScreenUpdater& rScreenUpdater,
- const UnoViewContainer& rViewContainer );
+ ::com::sun::star::rendering::XBitmap>& xBitmap,
+ ScreenUpdater& rScreenUpdater,
+ const UnoViewContainer& rViewContainer );
// ViewEventHandler
virtual void viewAdded( const UnoViewSharedPtr& rView );
@@ -68,8 +69,6 @@ private:
virtual void viewChanged( const UnoViewSharedPtr& rView );
virtual void viewsChanged();
-
- ::basegfx::B2DPoint calcSpritePos( UnoViewSharedPtr const & rView, const ::com::sun::star::geometry::RealPoint2D pos ) const;
::basegfx::B2DPoint calcSpritePos( UnoViewSharedPtr const & rView ) const;
template <typename func_type>
@@ -91,6 +90,7 @@ private:
ViewsVecT maViews;
ScreenUpdater& mrScreenUpdater;
+ ::com::sun::star::geometry::RealPoint2D maPos;
bool mbVisible;
};
diff --git a/slideshow/source/engine/waitsymbol.hxx b/slideshow/source/engine/waitsymbol.hxx
index d1d477857ea2..655ceb108f2c 100644
--- a/slideshow/source/engine/waitsymbol.hxx
+++ b/slideshow/source/engine/waitsymbol.hxx
@@ -39,6 +39,7 @@ namespace internal {
class EventMultiplexer;
typedef boost::shared_ptr<class WaitSymbol> WaitSymbolSharedPtr;
+/// On-screen 'hour glass' for when slideshow is unresponsive
class WaitSymbol : public ViewEventHandler,
private ::boost::noncopyable
{