icon-themes/galaxy/sd/res/pointericon.png |binary offapi/com/sun/star/presentation/XSlideShowView.idl | 14 +++++++++++ sd/source/ui/slideshow/slideshowviewimpl.cxx | 12 +++++++++ sd/source/ui/slideshow/slideshowviewimpl.hxx | 2 + sdext/source/presenter/PresenterSlideShowView.cxx | 7 +++++ sdext/source/presenter/PresenterSlideShowView.hxx | 3 ++ slideshow/source/engine/pointersymbol.cxx | 11 +++++--- slideshow/source/engine/slide/layermanager.cxx | 5 ++++ slideshow/source/engine/slideview.cxx | 25 ++++++++++++++++++++ slideshow/source/inc/viewlayer.hxx | 3 ++ 10 files changed, 78 insertions(+), 4 deletions(-)
New commits: commit 6aac349140436a40cfbe84e3fce61a8dc7be4b3f Author: Siqi LIU <m...@siqi.fr> Date: Fri Aug 23 10:54:42 2013 +0800 misc Change-Id: I24736c4bd05644ed61e6df50f2267f6a2cd2f7f3 diff --git a/slideshow/source/engine/slide/layermanager.cxx b/slideshow/source/engine/slide/layermanager.cxx index 91bdb7b..bbe4578 100644 --- a/slideshow/source/engine/slide/layermanager.cxx +++ b/slideshow/source/engine/slide/layermanager.cxx @@ -636,6 +636,11 @@ namespace slideshow OSL_FAIL( "BitmapView::setPriority(): This method is not supposed to be called!" ); } + virtual ::com::sun::star::geometry::IntegerSize2D getTranslationOffset() const + { + return geometry::IntegerSize2D(0,0); + } + virtual ::basegfx::B2DHomMatrix getTransformation() const { return mpCanvas->getTransformation(); diff --git a/slideshow/source/engine/slideview.cxx b/slideshow/source/engine/slideview.cxx index 250de4e..db2e471 100644 --- a/slideshow/source/engine/slideview.cxx +++ b/slideshow/source/engine/slideview.cxx @@ -489,6 +489,25 @@ public: } } + virtual ::com::sun::star::geometry::IntegerSize2D getTranslationOffset() const + { + std::cerr << "slideshow/source/engine/slideview.cxx:522" << std::endl; + basegfx::B2DRectangle aTmpRect; + canvas::tools::calcTransformedRectBounds( aTmpRect, + maLayerBounds, + maTransformation ); + geometry::IntegerSize2D offset(0, 0); + + // Add translation according to the origin of aTmpRect. Ignore the + // translation when aTmpRect was not properly initialized. + if ( ! aTmpRect.isEmpty()) + { + offset.Width = basegfx::fround(aTmpRect.getMinX()); + offset.Height = basegfx::fround(aTmpRect.getMinY()); + } + return offset; + } + private: // ViewLayer interface // ---------------------------------------------- @@ -700,6 +719,7 @@ private: virtual cppcanvas::CustomSpriteSharedPtr createSprite( const ::basegfx::B2DSize& rSpriteSizePixel, double nPriority ) const; virtual void setPriority( const basegfx::B1DRange& rRange ); + virtual geometry::IntegerSize2D getTranslationOffset() const; virtual ::basegfx::B2DHomMatrix getTransformation() const; virtual basegfx::B2DHomMatrix getSpriteTransformation() const; virtual void setClip( const ::basegfx::B2DPolyPolygon& rClip ); @@ -960,6 +980,11 @@ basegfx::B2DHomMatrix SlideView::getTransformation() const return maViewTransform * aMatrix; } +geometry::IntegerSize2D SlideView::getTranslationOffset() const +{ + return mxView->getTranslationOffset(); +} + basegfx::B2DHomMatrix SlideView::getSpriteTransformation() const { return getTransformation(); diff --git a/slideshow/source/inc/viewlayer.hxx b/slideshow/source/inc/viewlayer.hxx index bddb210..f47f18a 100644 --- a/slideshow/source/inc/viewlayer.hxx +++ b/slideshow/source/inc/viewlayer.hxx @@ -22,6 +22,7 @@ #include <sal/config.h> #include <boost/shared_ptr.hpp> +#include <com/sun/star/geometry/IntegerSize2D.hpp> namespace basegfx { @@ -128,6 +129,8 @@ namespace slideshow */ virtual basegfx::B2DHomMatrix getTransformation() const = 0; + virtual ::com::sun::star::geometry::IntegerSize2D getTranslationOffset() const = 0; + /** Get the overall view transformation. Same transformation as with getTransformation(), only commit 1e7918feeb088008a266edc493731dad361fecbc Author: Siqi LIU <m...@siqi.fr> Date: Fri Aug 23 10:40:27 2013 +0800 getTransilationOffset Impl Change-Id: Ie02e1c4d2ab1357469213f13971ab04632611d67 diff --git a/slideshow/source/engine/pointersymbol.cxx b/slideshow/source/engine/pointersymbol.cxx index d0e7fce..f825bbc 100644 --- a/slideshow/source/engine/pointersymbol.cxx +++ b/slideshow/source/engine/pointersymbol.cxx @@ -28,6 +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 "pointersymbol.hxx" @@ -106,6 +107,7 @@ basegfx::B2DPoint PointerSymbol::calcSpritePos( UnoViewSharedPtr const & rView ) 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 ), @@ -120,12 +122,13 @@ basegfx::B2DPoint PointerSymbol::calcSpritePos( uno::UNO_QUERY_THROW ); const geometry::IntegerSize2D realSize( xBitmap->getSize() ); + const geometry::IntegerSize2D realTranslationOffset ( rView->getTranslationOffset() ); + + basegfx::B2DPoint newPos( - // pos.X pos.Y are given in 0..1, beginning from the upper left corner of the currentSlide. - realSize.Width * pos.X, - realSize.Height * pos.Y); + realTranslationOffset.Width + (realSize.Width - 2 * realTranslationOffset.Width) * pos.X, + realTranslationOffset.Height + (realSize.Height - 2 * realTranslationOffset.Height) * pos.Y); - // std::cerr << "calcSpritePos : (" << newPos.getX() << ","<<newPos.getY() << ")" << std::endl; return newPos; } commit eb0cc3a63d6dade5d54deff91c2845a5a782b6ff Author: Siqi LIU <m...@siqi.fr> Date: Fri Aug 23 10:40:01 2013 +0800 dummy implementation for getTranslationOffset Change-Id: Ie1f71ee76af308a6eec9d38e3d629d7d6faf3596 diff --git a/sdext/source/presenter/PresenterSlideShowView.cxx b/sdext/source/presenter/PresenterSlideShowView.cxx index 1a663fc..2dbf3e7 100644 --- a/sdext/source/presenter/PresenterSlideShowView.cxx +++ b/sdext/source/presenter/PresenterSlideShowView.cxx @@ -378,6 +378,13 @@ geometry::AffineMatrix2D SAL_CALL PresenterSlideShowView::getTransformation (voi } } +geometry::IntegerSize2D SAL_CALL PresenterSlideShowView::getTranslationOffset(void) + throw (RuntimeException) +{ + ThrowIfDisposed(); + return geometry::IntegerSize2D(0,0); +} + void SAL_CALL PresenterSlideShowView::addTransformationChangedListener( const Reference<util::XModifyListener>& rxListener) throw (RuntimeException) diff --git a/sdext/source/presenter/PresenterSlideShowView.hxx b/sdext/source/presenter/PresenterSlideShowView.hxx index a392842..fc66fe3 100644 --- a/sdext/source/presenter/PresenterSlideShowView.hxx +++ b/sdext/source/presenter/PresenterSlideShowView.hxx @@ -90,6 +90,9 @@ public: virtual css::geometry::AffineMatrix2D SAL_CALL getTransformation (void) throw (css::uno::RuntimeException); + virtual ::com::sun::star::geometry::IntegerSize2D SAL_CALL getTranslationOffset(void) + throw (css::uno::RuntimeException); + virtual void SAL_CALL addTransformationChangedListener( const css::uno::Reference< css::util::XModifyListener >& xListener) commit e21ad69e8b0bc7b3c5b3a310c3891685d8e4b7a1 Author: Siqi LIU <m...@siqi.fr> Date: Fri Aug 23 10:25:29 2013 +0800 implementation for getTranslationOffset Change-Id: Ibe1d7f6af4be8f1520c093cd0b23cb06f5346716 diff --git a/sd/source/ui/slideshow/slideshowviewimpl.cxx b/sd/source/ui/slideshow/slideshowviewimpl.cxx index e2678b8..45c9b2b 100644 --- a/sd/source/ui/slideshow/slideshowviewimpl.cxx +++ b/sd/source/ui/slideshow/slideshowviewimpl.cxx @@ -218,6 +218,9 @@ SlideShowView::SlideShowView( ShowWindow& rOutputWindow, mbMousePressedEaten( false ) { init(); + + mTranslationOffset.Width = 0; + mTranslationOffset.Height = 0; } /// Dispose all internal references @@ -329,6 +332,11 @@ void SAL_CALL SlideShowView::clear() throw (::com::sun::star::uno::RuntimeExcept } } +geometry::IntegerSize2D SAL_CALL SlideShowView::getTranslationOffset( ) throw (RuntimeException) +{ + return mTranslationOffset; +} + geometry::AffineMatrix2D SAL_CALL SlideShowView::getTransformation( ) throw (RuntimeException) { ::osl::MutexGuard aGuard( m_aMutex ); @@ -374,6 +382,10 @@ geometry::AffineMatrix2D SAL_CALL SlideShowView::getTransformation( ) throw (Ru aOutputSize.Width() --; aOutputSize.Height() --; + // Record mTranslationOffset + mTranslationOffset.Height = aOutputOffset.Y(); + mTranslationOffset.Width = aOutputOffset.X(); + maPresentationArea = Rectangle( aOutputOffset, aOutputSize ); mrOutputWindow.SetPresentationArea( maPresentationArea ); diff --git a/sd/source/ui/slideshow/slideshowviewimpl.hxx b/sd/source/ui/slideshow/slideshowviewimpl.hxx index a0239f2..704d53c 100644 --- a/sd/source/ui/slideshow/slideshowviewimpl.hxx +++ b/sd/source/ui/slideshow/slideshowviewimpl.hxx @@ -211,6 +211,7 @@ public: virtual ::com::sun::star::uno::Reference< ::com::sun::star::rendering::XSpriteCanvas > SAL_CALL getCanvas( ) throw (::com::sun::star::uno::RuntimeException); virtual void SAL_CALL clear( ) throw (::com::sun::star::uno::RuntimeException); virtual ::com::sun::star::geometry::AffineMatrix2D SAL_CALL getTransformation( ) throw (::com::sun::star::uno::RuntimeException); + virtual ::com::sun::star::geometry::IntegerSize2D SAL_CALL getTranslationOffset( ) throw (::com::sun::star::uno::RuntimeException); virtual void SAL_CALL addTransformationChangedListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); virtual void SAL_CALL removeTransformationChangedListener( const ::com::sun::star::uno::Reference< ::com::sun::star::util::XModifyListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); virtual void SAL_CALL addPaintListener( const ::com::sun::star::uno::Reference< ::com::sun::star::awt::XPaintListener >& xListener ) throw (::com::sun::star::uno::RuntimeException); @@ -265,6 +266,7 @@ private: bool mbFirstPaint; bool mbFullScreen; bool mbMousePressedEaten; + ::com::sun::star::geometry::IntegerSize2D mTranslationOffset; }; commit 7ba076d7fd46cce99f6fc7a5b26f74d8f207ec3d Author: Siqi LIU <m...@siqi.fr> Date: Fri Aug 23 10:05:28 2013 +0800 extend the SlideShowView interface with getTranslationOffset Change-Id: I33f0eaa8a54902bb65a000b74ef25323423d01b4 diff --git a/offapi/com/sun/star/presentation/XSlideShowView.idl b/offapi/com/sun/star/presentation/XSlideShowView.idl index 5804af2..81ecd86 100644 --- a/offapi/com/sun/star/presentation/XSlideShowView.idl +++ b/offapi/com/sun/star/presentation/XSlideShowView.idl @@ -26,6 +26,7 @@ #include <com/sun/star/awt/XMouseListener.idl> #include <com/sun/star/awt/XMouseMotionListener.idl> #include <com/sun/star/awt/Rectangle.idl> +#include <com/sun/star/geometry/IntegerSize2D.idl> module com { module sun { module star { module presentation { @@ -73,6 +74,19 @@ interface XSlideShowView : ::com::sun::star::uno::XInterface */ ::com::sun::star::geometry::AffineMatrix2D getTransformation(); + /** Query the current translation offset used to fill the physical screen while keeping aspect ratio.<p> + + This method returns the traslation offset of the view of the + view.<p> + + @return the slideshowview will be transformed in order to fill + the physical screen while keeping the aspect ratio. + In order to do so, we need to add a black border on the side. This method + return an IntegerSize2D which represent (x, y) translation. + x represents the width of the border on the left, for example. + */ + ::com::sun::star::geometry::IntegerSize2D getTranslationOffset(); + /** Add a listener to get notified when the transformation matrix changes.<p> This method registers a listener with the view, which will get commit 0f61bcb6a304b5323e2d61f088cf688291796e88 Author: Siqi LIU <m...@siqi.fr> Date: Fri Aug 23 10:03:02 2013 +0800 replace pointericon png with a transparent background Change-Id: I9b8528b545ffc67daa8e6b3b9d588c9bd09ee09d diff --git a/icon-themes/galaxy/sd/res/pointericon.png b/icon-themes/galaxy/sd/res/pointericon.png index 4184c06..574027c 100644 Binary files a/icon-themes/galaxy/sd/res/pointericon.png and b/icon-themes/galaxy/sd/res/pointericon.png differ _______________________________________________ Libreoffice-commits mailing list libreoffice-comm...@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/libreoffice-commits