summaryrefslogtreecommitdiff
path: root/slideshow
diff options
context:
space:
mode:
authorMatthias Huetsch [mhu] <matthias.huetsch@oracle.com>2011-01-27 18:16:28 +0100
committerMatthias Huetsch [mhu] <matthias.huetsch@oracle.com>2011-01-27 18:16:28 +0100
commitcff21146b09d6bd46d83cf6a36bac14d340b6c9c (patch)
treefd3c068484f281253ebe425550fe6b0798d1f79d /slideshow
parent563aab4eddce3503905a2b404f653531b3ba9439 (diff)
parentfa27b2da2f8e7bd9bafb4a057318ac22577727dd (diff)
Update from master repository (DEV300_m98).
Diffstat (limited to 'slideshow')
-rw-r--r--slideshow/prj/build.lst2
-rw-r--r--slideshow/prj/d.lst2
-rw-r--r--slideshow/source/engine/OGLTrans/exports.dxp1
-rw-r--r--slideshow/source/engine/OGLTrans/makefile.mk8
-rw-r--r--slideshow/source/engine/OGLTrans/ogltrans.component34
-rw-r--r--slideshow/source/engine/color.cxx4
-rw-r--r--slideshow/source/engine/makefile.mk2
-rw-r--r--slideshow/source/engine/shapes/shapeimporter.cxx23
-rw-r--r--slideshow/source/engine/shapes/viewmediashape.cxx24
-rw-r--r--slideshow/source/engine/shapes/viewmediashape.hxx4
-rw-r--r--slideshow/source/engine/slide/layer.cxx4
-rw-r--r--slideshow/source/engine/slide/slideimpl.cxx50
-rw-r--r--slideshow/source/engine/slide/userpaintoverlay.cxx91
-rw-r--r--slideshow/source/engine/slide/userpaintoverlay.hxx9
-rw-r--r--slideshow/source/engine/slideshowimpl.cxx54
-rw-r--r--slideshow/source/inc/slide.hxx7
-rw-r--r--slideshow/util/exports.dxp1
-rw-r--r--slideshow/util/makefile.mk8
-rw-r--r--slideshow/util/makefile.pmk2
-rw-r--r--slideshow/util/slideshow.component34
20 files changed, 253 insertions, 111 deletions
diff --git a/slideshow/prj/build.lst b/slideshow/prj/build.lst
index 14de0c1793e2..60989f862776 100644
--- a/slideshow/prj/build.lst
+++ b/slideshow/prj/build.lst
@@ -1,4 +1,4 @@
-pe slideshow : tools sal cppu vcl comphelper cppuhelper offuh cppcanvas basegfx svtools unotools toolkit animations avmedia NULL
+pe slideshow : tools sal cppu vcl comphelper cppuhelper offuh cppcanvas basegfx svtools unotools toolkit animations avmedia LIBXSLT:libxslt NULL
pe slideshow usr1 - all pe_mkout NULL
pe slideshow\inc nmake - all pe_inc NULL
pe slideshow\source\engine nmake - all pe_engine pe_inc NULL
diff --git a/slideshow/prj/d.lst b/slideshow/prj/d.lst
index 2015e1311834..f6707c2491f4 100644
--- a/slideshow/prj/d.lst
+++ b/slideshow/prj/d.lst
@@ -4,3 +4,5 @@
..\%__SRC%\lib\slideshow.uno.so %_DEST%\lib%_EXT%\slideshow.uno.so
..\%__SRC%\lib\OGLTrans.uno.so %_DEST%\lib%_EXT%\OGLTrans.uno.so
..\%__SRC%\lib\*.dylib %_DEST%\lib%_EXT%\*.dylib
+..\%__SRC%\misc\ogltrans.component %_DEST%\xml%_EXT%\ogltrans.component
+..\%__SRC%\misc\slideshow.component %_DEST%\xml%_EXT%\slideshow.component
diff --git a/slideshow/source/engine/OGLTrans/exports.dxp b/slideshow/source/engine/OGLTrans/exports.dxp
index 9630d7e06768..f0e1c69934bc 100644
--- a/slideshow/source/engine/OGLTrans/exports.dxp
+++ b/slideshow/source/engine/OGLTrans/exports.dxp
@@ -1,3 +1,2 @@
component_getImplementationEnvironment
-component_writeInfo
component_getFactory
diff --git a/slideshow/source/engine/OGLTrans/makefile.mk b/slideshow/source/engine/OGLTrans/makefile.mk
index dd945a06b1aa..46d40b3e61a2 100644
--- a/slideshow/source/engine/OGLTrans/makefile.mk
+++ b/slideshow/source/engine/OGLTrans/makefile.mk
@@ -78,3 +78,11 @@ DEF1EXPORTFILE=exports.dxp
# ==========================================================================
.INCLUDE : target.mk
+
+ALLTAR : $(MISC)/ogltrans.component
+
+$(MISC)/ogltrans.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
+ ogltrans.component
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt ogltrans.component
diff --git a/slideshow/source/engine/OGLTrans/ogltrans.component b/slideshow/source/engine/OGLTrans/ogltrans.component
new file mode 100644
index 000000000000..89f2384b0d6c
--- /dev/null
+++ b/slideshow/source/engine/OGLTrans/ogltrans.component
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<component loader="com.sun.star.loader.SharedLibrary"
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.comp.presentation.OGLTransitionFactory">
+ <service name="com.sun.star.presentation.TransitionFactory"/>
+ </implementation>
+</component>
diff --git a/slideshow/source/engine/color.cxx b/slideshow/source/engine/color.cxx
index e49f8e7e1b63..7b60a463dd1c 100644
--- a/slideshow/source/engine/color.cxx
+++ b/slideshow/source/engine/color.cxx
@@ -267,7 +267,9 @@ namespace slideshow
RGBColor::RGBColor(const RGBColor& rLHS)
{
- RGBColor(rLHS.getRed(), rLHS.getGreen(), rLHS.getBlue());
+ maRGBTriple.mnRed = rLHS.getRed();
+ maRGBTriple.mnGreen = rLHS.getGreen();
+ maRGBTriple.mnBlue = rLHS.getBlue();
}
RGBColor& RGBColor::operator=( const RGBColor& rLHS ){
diff --git a/slideshow/source/engine/makefile.mk b/slideshow/source/engine/makefile.mk
index beac66778518..fdc99cd1ad9f 100644
--- a/slideshow/source/engine/makefile.mk
+++ b/slideshow/source/engine/makefile.mk
@@ -38,7 +38,7 @@ ENABLE_EXCEPTIONS=TRUE
.INCLUDE : $(PRJ)$/util$/makefile.pmk
.IF "$(ENABLE_PRESENTER_EXTRA_UI)"=="YES"
-CDEFS+=-DENABLE_PRESENTER_EXTRA_UI
+ENABLE_PRESENTER_EXTRA_UI is not used anymore
.ENDIF
# --- Common ----------------------------------------------------------
diff --git a/slideshow/source/engine/shapes/shapeimporter.cxx b/slideshow/source/engine/shapes/shapeimporter.cxx
index f793dfed7e7e..a5d8acea2140 100644
--- a/slideshow/source/engine/shapes/shapeimporter.cxx
+++ b/slideshow/source/engine/shapes/shapeimporter.cxx
@@ -285,7 +285,9 @@ ShapeSharedPtr ShapeImporter::createShape(
rtl::OUString const& shapeType ) const
{
if( shapeType.equalsAsciiL(
- RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.MediaShape") ))
+ RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.MediaShape") ) ||
+ shapeType.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM("com.sun.star.presentation.MediaShape") ) )
{
// Media shape (video etc.). This is a special object
return createMediaShape(xCurrShape,
@@ -337,7 +339,9 @@ ShapeSharedPtr ShapeImporter::createShape(
mrContext );
}
else if( shapeType.equalsAsciiL(
- RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.OLE2Shape") ))
+ RTL_CONSTASCII_STRINGPARAM("com.sun.star.drawing.OLE2Shape") ) ||
+ shapeType.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM("com.sun.star.presentation.OLE2Shape") ) )
{
// #i46224# Mark OLE shapes as foreign content - scan them for
// unsupported actions, and fallback to bitmap, if necessary
@@ -349,7 +353,10 @@ ShapeSharedPtr ShapeImporter::createShape(
}
else if( shapeType.equalsAsciiL(
RTL_CONSTASCII_STRINGPARAM(
- "com.sun.star.drawing.GraphicObjectShape") ))
+ "com.sun.star.drawing.GraphicObjectShape") ) ||
+ shapeType.equalsAsciiL(
+ RTL_CONSTASCII_STRINGPARAM(
+ "com.sun.star.presentation.GraphicObjectShape") ) )
{
GraphicObject aGraphicObject;
@@ -513,12 +520,11 @@ void ShapeImporter::importPolygons(uno::Reference<beans::XPropertySet> const& xP
::basegfx::B2DPolygon aPoly;
basegfx::B2DPoint aPoint;
- for( sal_Int32 nCurrPoly=0; nCurrPoly<pOuterSequence->getLength(); ++nCurrPoly )
+ for( sal_Int32 nCurrPoly=0; nCurrPoly<pOuterSequence->getLength(); ++nCurrPoly, ++pInnerSequence )
{
aPoint.setX((*pInnerSequence).X);
aPoint.setY((*pInnerSequence).Y);
aPoly.append( aPoint );
- *pInnerSequence++;
}
UnoViewVector::const_iterator aIter=(mrContext.mrViewContainer).begin();
UnoViewVector::const_iterator aEnd=(mrContext.mrViewContainer).end();
@@ -647,20 +653,13 @@ ShapeImporter::ShapeImporter( uno::Reference<drawing::XDrawPage> const&
sal_Int32 nOrdNumStart,
bool bConvertingMasterPage ) :
mxPage( xActualPage ),
-#ifdef ENABLE_PRESENTER_EXTRA_UI
mxPagesSupplier( xPagesSupplier ),
-#else
- mxPagesSupplier( NULL ),
-#endif
mrContext( rContext ),
maPolygons(),
maShapesStack(),
mnAscendingPrio( nOrdNumStart ),
mbConvertingMasterPage( bConvertingMasterPage )
{
-#ifndef ENABLE_PRESENTER_EXTRA_UI
- (void)xPagesSupplier;
-#endif
uno::Reference<drawing::XShapes> const xShapes(
xPage, uno::UNO_QUERY_THROW );
maShapesStack.push( XShapesEntry(xShapes) );
diff --git a/slideshow/source/engine/shapes/viewmediashape.cxx b/slideshow/source/engine/shapes/viewmediashape.cxx
index 1c0b6f9b71a1..ee076d7e394d 100644
--- a/slideshow/source/engine/shapes/viewmediashape.cxx
+++ b/slideshow/source/engine/shapes/viewmediashape.cxx
@@ -39,7 +39,7 @@
#include <cppuhelper/exc_hlp.hxx>
#include <vcl/window.hxx>
-#include <vcl/javachild.hxx>
+#include <vcl/syschild.hxx>
#include <vcl/salbtype.hxx>
#include <basegfx/tools/canvastools.hxx>
@@ -153,7 +153,7 @@ namespace slideshow
mxPlayerWindow.clear();
}
- mpMediaWindow = ::std::auto_ptr< JavaChildWindow >();
+ mpMediaWindow = ::std::auto_ptr< SystemChildWindow >();
// shutdown player
if( mxPlayer.is() )
@@ -431,29 +431,29 @@ namespace slideshow
if( !rRangePix.isEmpty() )
{
- uno::Sequence< uno::Any > aArgs( 2 );
+ uno::Sequence< uno::Any > aArgs( 3 );
awt::Rectangle aAWTRect( rRangePix.getMinX(),
rRangePix.getMinY(),
rRangePix.getMaxX() - rRangePix.getMinX(),
rRangePix.getMaxY() - rRangePix.getMinY() );
- mpMediaWindow = ::std::auto_ptr< JavaChildWindow >( new JavaChildWindow( pWindow, WB_CLIPCHILDREN ) );
+ mpMediaWindow = ::std::auto_ptr< SystemChildWindow >( new
+ SystemChildWindow( pWindow, WB_CLIPCHILDREN ) );
mpMediaWindow->SetBackground( Color( COL_BLACK ) );
- mpMediaWindow->SetPosSizePixel( Point( aAWTRect.X,
- aAWTRect.Y ),
- Size( aAWTRect.Width,
- aAWTRect.Height ));
+ mpMediaWindow->SetPosSizePixel( Point( aAWTRect.X, aAWTRect.Y ),
+ Size( aAWTRect.Width, aAWTRect.Height ) );
mpMediaWindow->Show();
if( mxPlayer.is() )
{
aArgs[ 0 ] = uno::makeAny(
- sal::static_int_cast<sal_IntPtr>(
- mpMediaWindow->getParentWindowHandleForJava()) );
+ sal::static_int_cast< sal_IntPtr >( mpMediaWindow->GetParentWindowHandle() ) );
aAWTRect.X = aAWTRect.Y = 0;
aArgs[ 1 ] = uno::makeAny( aAWTRect );
+ aArgs[ 2 ] = uno::makeAny( reinterpret_cast< sal_IntPtr >( mpMediaWindow.get() ) );
+
mxPlayerWindow.set( mxPlayer->createPlayerWindow( aArgs ) );
if( mxPlayerWindow.is() )
@@ -515,9 +515,7 @@ namespace slideshow
if( mxPlayer.is() )
{
- aArgs[ 0 ] = uno::makeAny(
- sal::static_int_cast<sal_Int32>(
- aWNDVal) );
+ aArgs[ 0 ] = uno::makeAny( sal::static_int_cast< sal_Int32 >( aWNDVal) );
aArgs[ 1 ] = uno::makeAny( aAWTRect );
mxPlayerWindow.set( mxPlayer->createPlayerWindow( aArgs ) );
diff --git a/slideshow/source/engine/shapes/viewmediashape.hxx b/slideshow/source/engine/shapes/viewmediashape.hxx
index 5e2568bbd98e..8e024ae75bbe 100644
--- a/slideshow/source/engine/shapes/viewmediashape.hxx
+++ b/slideshow/source/engine/shapes/viewmediashape.hxx
@@ -36,7 +36,7 @@
#include "viewlayer.hxx"
-class JavaChildWindow;
+class SystemChildWindow;
namespace com { namespace sun { namespace star { namespace drawing {
class XShape;
@@ -155,7 +155,7 @@ namespace slideshow
const ::com::sun::star::uno::Sequence< ::com::sun::star::uno::Any >& rDXDeviceParams );
ViewLayerSharedPtr mpViewLayer;
- ::std::auto_ptr< JavaChildWindow > mpMediaWindow;
+ ::std::auto_ptr< SystemChildWindow > mpMediaWindow;
mutable ::com::sun::star::awt::Point maWindowOffset;
mutable ::basegfx::B2DRectangle maBounds;
diff --git a/slideshow/source/engine/slide/layer.cxx b/slideshow/source/engine/slide/layer.cxx
index be67b220962e..65f52f3b823f 100644
--- a/slideshow/source/engine/slide/layer.cxx
+++ b/slideshow/source/engine/slide/layer.cxx
@@ -36,6 +36,8 @@
#include <basegfx/range/b2dpolyrange.hxx>
#include <basegfx/matrix/b2dhommatrix.hxx>
#include <basegfx/polygon/b2dpolypolygon.hxx>
+#include <basegfx/polygon/b2dpolypolygontools.hxx>
+#include <basegfx/polygon/b2dpolypolygoncutter.hxx>
#include "layer.hxx"
@@ -288,6 +290,8 @@ namespace slideshow
// clipping, and render each shape that intersects with
// the calculated update area
::basegfx::B2DPolyPolygon aClip( maUpdateAreas.solveCrossovers() );
+ aClip = ::basegfx::tools::stripNeutralPolygons(aClip);
+ aClip = ::basegfx::tools::stripDispensablePolygons(aClip, false);
// actually, if there happen to be shapes with zero
// update area in the maUpdateAreas vector, the
diff --git a/slideshow/source/engine/slide/slideimpl.cxx b/slideshow/source/engine/slide/slideimpl.cxx
index 6e71d6ca4c42..61f04d6044d7 100644
--- a/slideshow/source/engine/slide/slideimpl.cxx
+++ b/slideshow/source/engine/slide/slideimpl.cxx
@@ -139,6 +139,10 @@ public:
virtual PolyPolygonVector getPolygons();
virtual void drawPolygons() const;
virtual bool isPaintOverlayActive() const;
+ virtual void enablePaintOverlay();
+ virtual void disablePaintOverlay();
+ virtual void update_settings( bool bUserPaintEnabled, RGBColor const& aUserPaintColor, double dUserPaintStrokeWidth );
+
// TODO(F2): Rework SlideBitmap to no longer be based on XBitmap,
// but on canvas-independent basegfx bitmaps
@@ -156,6 +160,9 @@ private:
virtual bool requestCursor( sal_Int16 nCursorShape );
virtual void resetCursor();
+ void activatePaintOverlay();
+ void deactivatePaintOverlay();
+
/** Query whether the slide has animations at all
If the slide doesn't have animations, show() displays
@@ -174,9 +181,6 @@ private:
*/
bool isShowing() const;
- void enablePaintOverlay();
- void disablePaintOverlay();
-
/// Set all Shapes to their initial attributes for slideshow
bool applyInitialShapeAttributes( const ::com::sun::star::uno::Reference<
::com::sun::star::animations::XAnimationNode >& xRootAnimationNode );
@@ -419,6 +423,13 @@ SlideImpl::SlideImpl( const uno::Reference< drawing::XDrawPage >& xDra
maContext.mrScreenUpdater.addViewUpdate(mpShapeManager);
}
+void SlideImpl::update_settings( bool bUserPaintEnabled, RGBColor const& aUserPaintColor, double dUserPaintStrokeWidth )
+{
+ maUserPaintColor = aUserPaintColor;
+ mdUserPaintStrokeWidth = dUserPaintStrokeWidth;
+ mbUserPaintOverlayEnabled = bUserPaintEnabled;
+}
+
SlideImpl::~SlideImpl()
{
if( mpShapeManager )
@@ -454,9 +465,7 @@ void SlideImpl::dispose()
mpShapeManager.reset();
mxRootNode.clear();
mxDrawPage.clear();
-#ifndef ENABLE_PRESENTER_EXTRA_UI
mxDrawPagesSupplier.clear();
-#endif
}
bool SlideImpl::prefetch()
@@ -542,7 +551,7 @@ bool SlideImpl::show( bool bSlideBackgoundPainted )
// ---------------------------------------------------------------
// enable paint overlay, if maUserPaintColor is valid
- enablePaintOverlay();
+ activatePaintOverlay();
// ---------------------------------------------------------------
@@ -566,7 +575,7 @@ void SlideImpl::hide()
// disable user paint overlay under all circumstances,
// this slide now ceases to be active.
- disablePaintOverlay();
+ deactivatePaintOverlay();
// ---------------------------------------------------------------
@@ -888,19 +897,33 @@ bool SlideImpl::implPrefetchShow()
void SlideImpl::enablePaintOverlay()
{
- if( mbUserPaintOverlayEnabled )
+ if( !mbUserPaintOverlayEnabled || !mbPaintOverlayActive )
+ {
+ mbUserPaintOverlayEnabled = true;
+ activatePaintOverlay();
+ }
+}
+
+void SlideImpl::disablePaintOverlay()
+{
+}
+
+void SlideImpl::activatePaintOverlay()
+{
+ if( mbUserPaintOverlayEnabled || !maPolygons.empty() )
{
mpPaintOverlay = UserPaintOverlay::create( maUserPaintColor,
mdUserPaintStrokeWidth,
maContext,
- maPolygons );
+ maPolygons,
+ mbUserPaintOverlayEnabled );
mbPaintOverlayActive = true;
}
}
void SlideImpl::drawPolygons() const
{
- if( mbUserPaintOverlayEnabled )
+ if( mpPaintOverlay )
mpPaintOverlay->drawPolygons();
}
@@ -923,7 +946,7 @@ bool SlideImpl::isPaintOverlayActive() const
return mbPaintOverlayActive;
}
-void SlideImpl::disablePaintOverlay()
+void SlideImpl::deactivatePaintOverlay()
{
if(mbPaintOverlayActive)
maPolygons = mpPaintOverlay->getPolygons();
@@ -1259,12 +1282,7 @@ SlideSharedPtr createSlide( const uno::Reference< drawing::XDrawPage >&
bool bIntrinsicAnimationsAllowed,
bool bDisableAnimationZOrder )
{
-#ifdef ENABLE_PRESENTER_EXTRA_UI
boost::shared_ptr<SlideImpl> pRet( new SlideImpl( xDrawPage, xDrawPages, xRootNode, rEventQueue,
-#else
- (void)xDrawPages;
- boost::shared_ptr<SlideImpl> pRet( new SlideImpl( xDrawPage, NULL, xRootNode, rEventQueue,
-#endif
rEventMultiplexer, rScreenUpdater,
rActivitiesQueue, rUserEventQueue,
rCursorManager, rViewContainer,
diff --git a/slideshow/source/engine/slide/userpaintoverlay.cxx b/slideshow/source/engine/slide/userpaintoverlay.cxx
index 8d9fad06a3e3..d0ab4e33a1e3 100644
--- a/slideshow/source/engine/slide/userpaintoverlay.cxx
+++ b/slideshow/source/engine/slide/userpaintoverlay.cxx
@@ -70,8 +70,9 @@ namespace slideshow
ActivitiesQueue& rActivitiesQueue,
ScreenUpdater& rScreenUpdater,
const UnoViewContainer& rViews,
- Slide& rSlide,
- const PolyPolygonVector& rPolygons ) :
+ Slide& rSlide,
+ const PolyPolygonVector& rPolygons,
+ bool bActive ) :
mrActivitiesQueue( rActivitiesQueue ),
mrScreenUpdater( rScreenUpdater ),
maViews(),
@@ -87,7 +88,8 @@ namespace slideshow
//handle the "remove stroke by stroke" mode of erasing
mbIsEraseModeActivated( false ),
mrSlide(rSlide),
- mnSize(100)
+ mnSize(100),
+ mbActive( bActive )
{
std::for_each( rViews.begin(),
rViews.end(),
@@ -129,6 +131,8 @@ namespace slideshow
bool colorChanged( RGBColor const& rUserColor )
{
+ mbIsLastPointValid = false;
+ mbActive = true;
this->maStrokeColor = rUserColor;
this->mbIsEraseModeActivated = false;
return true;
@@ -141,22 +145,15 @@ namespace slideshow
return true;
}
- bool eraseAllInkChanged( bool const& rEraseAllInk )
+ void repaintWithoutPolygons()
{
- this->mbIsEraseAllModeActivated= rEraseAllInk;
- // if the erase all mode is activated it will remove all ink from slide,
- // therefor destroy all the polygons stored
- if(mbIsEraseAllModeActivated)
- {
- // The Erase Mode should be desactivated
- mbIsEraseModeActivated = false;
// must get access to the instance to erase all polygon
for( UnoViewVector::iterator aIter=maViews.begin(), aEnd=maViews.end();
aIter!=aEnd;
++aIter )
{
// fully clear view content to background color
- (*aIter)->getCanvas()->clear();
+ //(*aIter)->getCanvas()->clear();
//get via SlideImpl instance the bitmap of the slide unmodified to redraw it
SlideBitmapSharedPtr pBitmap( mrSlide.getCurrentSlideBitmap( (*aIter) ) );
@@ -181,7 +178,19 @@ namespace slideshow
mrScreenUpdater.notifyUpdate(*aIter,true);
}
- maPolygons.clear();
+ }
+
+ bool eraseAllInkChanged( bool const& rEraseAllInk )
+ {
+ this->mbIsEraseAllModeActivated= rEraseAllInk;
+ // if the erase all mode is activated it will remove all ink from slide,
+ // therefor destroy all the polygons stored
+ if(mbIsEraseAllModeActivated)
+ {
+ // The Erase Mode should be desactivated
+ mbIsEraseModeActivated = false;
+ repaintWithoutPolygons();
+ maPolygons.clear();
}
mbIsEraseAllModeActivated=false;
return true;
@@ -198,18 +207,25 @@ namespace slideshow
bool switchPenMode()
{
+ mbIsLastPointValid = false;
+ mbActive = true;
this->mbIsEraseModeActivated = false;
return true;
}
bool switchEraserMode()
{
+ mbIsLastPointValid = false;
+ mbActive = true;
this->mbIsEraseModeActivated = true;
return true;
}
bool disable()
{
+ mbIsLastPointValid = false;
+ mbIsLastMouseDownPosValid = false;
+ mbActive = false;
return true;
}
@@ -235,6 +251,9 @@ namespace slideshow
// MouseEventHandler methods
virtual bool handleMousePressed( const awt::MouseEvent& e )
{
+ if( !mbActive )
+ return false;
+
if (e.Buttons == awt::MouseButton::RIGHT)
{
mbIsLastPointValid = false;
@@ -255,6 +274,9 @@ namespace slideshow
virtual bool handleMouseReleased( const awt::MouseEvent& e )
{
+ if( !mbActive )
+ return false;
+
if (e.Buttons == awt::MouseButton::RIGHT)
{
mbIsLastPointValid = false;
@@ -289,6 +311,9 @@ namespace slideshow
virtual bool handleMouseEntered( const awt::MouseEvent& e )
{
+ if( !mbActive )
+ return false;
+
mbIsLastPointValid = true;
maLastPoint.setX( e.X );
maLastPoint.setY( e.Y );
@@ -298,6 +323,9 @@ namespace slideshow
virtual bool handleMouseExited( const awt::MouseEvent& )
{
+ if( !mbActive )
+ return false;
+
mbIsLastPointValid = false;
mbIsLastMouseDownPosValid = false;
@@ -306,7 +334,16 @@ namespace slideshow
virtual bool handleMouseDragged( const awt::MouseEvent& e )
{
- if(mbIsEraseModeActivated)
+ if( !mbActive )
+ return false;
+
+ if (e.Buttons == awt::MouseButton::RIGHT)
+ {
+ mbIsLastPointValid = false;
+ return false;
+ }
+
+ if(mbIsEraseModeActivated)
{
//define the last point as an object
//we suppose that there's no way this point could be valid
@@ -421,6 +458,14 @@ namespace slideshow
}
+ void update_settings( bool bUserPaintEnabled, RGBColor const& aUserPaintColor, double dUserPaintStrokeWidth )
+ {
+ maStrokeColor = aUserPaintColor;
+ mnStrokeWidth = dUserPaintStrokeWidth;
+ mbActive = bUserPaintEnabled;
+ if( !mbActive )
+ disable();
+ }
private:
ActivitiesQueue& mrActivitiesQueue;
@@ -438,17 +483,20 @@ namespace slideshow
bool mbIsEraseModeActivated;
Slide& mrSlide;
sal_Int32 mnSize;
+ bool mbActive;
};
UserPaintOverlaySharedPtr UserPaintOverlay::create( const RGBColor& rStrokeColor,
double nStrokeWidth,
const SlideShowContext& rContext,
- const PolyPolygonVector& rPolygons )
+ const PolyPolygonVector& rPolygons,
+ bool bActive )
{
UserPaintOverlaySharedPtr pRet( new UserPaintOverlay( rStrokeColor,
nStrokeWidth,
rContext,
- rPolygons ));
+ rPolygons,
+ bActive));
return pRet;
}
@@ -456,7 +504,8 @@ namespace slideshow
UserPaintOverlay::UserPaintOverlay( const RGBColor& rStrokeColor,
double nStrokeWidth,
const SlideShowContext& rContext,
- const PolyPolygonVector& rPolygons ) :
+ const PolyPolygonVector& rPolygons,
+ bool bActive ) :
mpHandler( new PaintOverlayHandler( rStrokeColor,
nStrokeWidth,
rContext.mrActivitiesQueue,
@@ -464,7 +513,7 @@ namespace slideshow
rContext.mrViewContainer,
//adding a link to Slide
dynamic_cast<Slide&>(rContext.mrCursorManager),
- rPolygons )),
+ rPolygons, bActive )),
mrMultiplexer( rContext.mrEventMultiplexer )
{
mrMultiplexer.addClickHandler( mpHandler, 3.0 );
@@ -483,6 +532,12 @@ namespace slideshow
mpHandler->drawPolygons();
}
+ void UserPaintOverlay::update_settings( bool bUserPaintEnabled, RGBColor const& aUserPaintColor, double dUserPaintStrokeWidth )
+ {
+ mpHandler->update_settings( bUserPaintEnabled, aUserPaintColor, dUserPaintStrokeWidth );
+ }
+
+
UserPaintOverlay::~UserPaintOverlay()
{
try
diff --git a/slideshow/source/engine/slide/userpaintoverlay.hxx b/slideshow/source/engine/slide/userpaintoverlay.hxx
index b92f5f2539b0..3a8e14c600c5 100644
--- a/slideshow/source/engine/slide/userpaintoverlay.hxx
+++ b/slideshow/source/engine/slide/userpaintoverlay.hxx
@@ -69,16 +69,21 @@ namespace slideshow
static UserPaintOverlaySharedPtr create( const RGBColor& rStrokeColor,
double nStrokeWidth,
const SlideShowContext& rContext,
- const PolyPolygonVector& rPolygons );
+ const PolyPolygonVector& rPolygons,
+ bool bActive);
~UserPaintOverlay();
PolyPolygonVector getPolygons();
void drawPolygons();
+ void update_settings( bool bUserPaintEnabled, RGBColor const& aUserPaintColor, double dUserPaintStrokeWidth );
+
+
private:
UserPaintOverlay( const RGBColor& rStrokeColor,
double nStrokeWidth,
const SlideShowContext& rContext,
- const PolyPolygonVector& rPolygons );
+ const PolyPolygonVector& rPolygons,
+ bool bActive );
::boost::shared_ptr<PaintOverlayHandler> mpHandler;
EventMultiplexer& mrMultiplexer;
diff --git a/slideshow/source/engine/slideshowimpl.cxx b/slideshow/source/engine/slideshowimpl.cxx
index d736c3f52d64..a909ade61ee2 100644
--- a/slideshow/source/engine/slideshowimpl.cxx
+++ b/slideshow/source/engine/slideshowimpl.cxx
@@ -458,7 +458,7 @@ private:
boost::optional<RGBColor> maUserPaintColor;
- boost::optional<double> maUserPaintStrokeWidth;
+ double maUserPaintStrokeWidth;
//changed for the eraser project
boost::optional<bool> maEraseAllInk;
@@ -950,7 +950,7 @@ SlideSharedPtr SlideShowImpl::makeSlide(
maShapeCursors,
(aIter != maPolygons.end()) ? aIter->second : PolyPolygonVector(),
maUserPaintColor ? *maUserPaintColor : RGBColor(),
- *maUserPaintStrokeWidth,
+ maUserPaintStrokeWidth,
!!maUserPaintColor,
mbImageAnimationsAllowed,
mbDisableAnimationZOrder) );
@@ -1112,11 +1112,7 @@ void SlideShowImpl::displaySlide(
// precondition: must only be called from the main thread!
DBG_TESTSOLARMUTEX();
-#ifdef ENABLE_PRESENTER_EXTRA_UI
mxDrawPagesSupplier = xDrawPages;
-#else
- mxDrawPagesSupplier = NULL;
-#endif
stopShow(); // MUST call that: results in
// maUserEventQueue.clear(). What's more,
@@ -1620,6 +1616,9 @@ sal_Bool SlideShowImpl::setProperty( beans::PropertyValue const& rProperty )
// enable user paint
maUserPaintColor.reset( unoColor2RGBColor( nColor ) );
+ if( mpCurrentSlide && !mpCurrentSlide->isPaintOverlayActive() )
+ mpCurrentSlide->enablePaintOverlay();
+
maEventMultiplexer.notifyUserPaintColor( *maUserPaintColor );
}
else
@@ -1627,10 +1626,11 @@ sal_Bool SlideShowImpl::setProperty( beans::PropertyValue const& rProperty )
// disable user paint
maUserPaintColor.reset();
maEventMultiplexer.notifyUserPaintDisabled();
+ if( mpCurrentSlide )
+ mpCurrentSlide->disablePaintOverlay();
}
- if( mnCurrentCursor == awt::SystemPointer::ARROW )
- resetCursor();
+ resetCursor();
return true;
}
@@ -1649,15 +1649,6 @@ sal_Bool SlideShowImpl::setProperty( beans::PropertyValue const& rProperty )
maEraseAllInk.reset( nEraseAllInk );
maEventMultiplexer.notifyEraseAllInk( *maEraseAllInk );
}
- else
- {
- // disable user paint
- maEraseAllInk.reset();
- maEventMultiplexer.notifyUserPaintDisabled();
- }
-
- if( mnCurrentCursor == awt::SystemPointer::ARROW )
- resetCursor();
return true;
}
@@ -1677,9 +1668,6 @@ sal_Bool SlideShowImpl::setProperty( beans::PropertyValue const& rProperty )
maEventMultiplexer.notifySwitchPenMode();
}
}
-
- if( mnCurrentCursor == awt::SystemPointer::ARROW )
- resetCursor();
return true;
}
@@ -1699,8 +1687,6 @@ sal_Bool SlideShowImpl::setProperty( beans::PropertyValue const& rProperty )
}
}
- if( mnCurrentCursor == awt::SystemPointer::ARROW )
- resetCursor();
return true;
}
@@ -1719,15 +1705,6 @@ sal_Bool SlideShowImpl::setProperty( beans::PropertyValue const& rProperty )
maEraseInk.reset( nEraseInk );
maEventMultiplexer.notifyEraseInkWidth( *maEraseInk );
}
- else
- {
- // disable user paint
- maEraseInk.reset();
- maEventMultiplexer.notifyUserPaintDisabled();
- }
-
- if( mnCurrentCursor == awt::SystemPointer::ARROW )
- resetCursor();
return true;
}
@@ -1741,17 +1718,10 @@ sal_Bool SlideShowImpl::setProperty( beans::PropertyValue const& rProperty )
{
OSL_ENSURE( mbMouseVisible,"setProperty(): User paint overrides invisible mouse" );
// enable user paint stroke width
- maUserPaintStrokeWidth.reset( nWidth );
- maEventMultiplexer.notifyUserPaintStrokeWidth( *maUserPaintStrokeWidth );
+ maUserPaintStrokeWidth = nWidth;
+ maEventMultiplexer.notifyUserPaintStrokeWidth( maUserPaintStrokeWidth );
}
- else
- {
- // disable user paint stroke width
- maUserPaintStrokeWidth.reset();
- maEventMultiplexer.notifyUserPaintDisabled();
- }
- if( mnCurrentCursor == awt::SystemPointer::ARROW )
- resetCursor();
+
return true;
}
@@ -2214,6 +2184,8 @@ void SlideShowImpl::notifySlideTransitionEnded( bool bPaintSlide )
"notifySlideTransitionEnded(): Invalid current slide" );
if (mpCurrentSlide)
{
+ mpCurrentSlide->update_settings( !!maUserPaintColor, maUserPaintColor ? *maUserPaintColor : RGBColor(), maUserPaintStrokeWidth );
+
// first init show, to give the animations
// the chance to register SlideStartEvents
const bool bBackgroundLayerRendered( !bPaintSlide );
diff --git a/slideshow/source/inc/slide.hxx b/slideshow/source/inc/slide.hxx
index 9f4e6b8f5055..d457d8e16f88 100644
--- a/slideshow/source/inc/slide.hxx
+++ b/slideshow/source/inc/slide.hxx
@@ -121,9 +121,14 @@ namespace slideshow
///Draw the slide Polygons
virtual void drawPolygons() const = 0;
- ///Check if slide is already active
+ ///Check if paint overlay is already active
virtual bool isPaintOverlayActive() const = 0;
+ virtual void enablePaintOverlay() = 0;
+ virtual void disablePaintOverlay() = 0;
+
+ virtual void update_settings( bool bUserPaintEnabled, RGBColor const& aUserPaintColor, double dUserPaintStrokeWidth ) = 0;
+
// Slide bitmaps
// -------------------------------------------------------------------
diff --git a/slideshow/util/exports.dxp b/slideshow/util/exports.dxp
index 0c2e3e7cddd7..0cb5620a1603 100644
--- a/slideshow/util/exports.dxp
+++ b/slideshow/util/exports.dxp
@@ -1,3 +1,2 @@
component_getImplementationEnvironment
-component_writeInfo
component_getFactory \ No newline at end of file
diff --git a/slideshow/util/makefile.mk b/slideshow/util/makefile.mk
index def425b60469..9d9bee14a198 100644
--- a/slideshow/util/makefile.mk
+++ b/slideshow/util/makefile.mk
@@ -102,3 +102,11 @@ $(MISC)$/$(SHL2TARGET).flt: makefile.mk \
$(TARGET2).flt
+$(TYPE) $(TARGET2).flt > $@
+
+ALLTAR : $(MISC)/slideshow.component
+
+$(MISC)/slideshow.component .ERRREMOVE : $(SOLARENV)/bin/createcomponent.xslt \
+ slideshow.component
+ $(XSLTPROC) --nonet --stringparam uri \
+ '$(COMPONENTPREFIX_BASIS_NATIVE)$(SHL1TARGETN:f)' -o $@ \
+ $(SOLARENV)/bin/createcomponent.xslt slideshow.component
diff --git a/slideshow/util/makefile.pmk b/slideshow/util/makefile.pmk
index 53724522d5e8..765b5249e5a4 100644
--- a/slideshow/util/makefile.pmk
+++ b/slideshow/util/makefile.pmk
@@ -35,7 +35,7 @@ CDEFS += -DBOOST_SP_ENABLE_DEBUG_HOOKS
.IF "$(COM)"=="MSC"
# disable inlining for MSVC
-CFLAGS += -Ob0
+#CFLAGS += -Ob0
.ENDIF
.ENDIF # "$(debug)"!="" || "$(DEBUG)"!=""
diff --git a/slideshow/util/slideshow.component b/slideshow/util/slideshow.component
new file mode 100644
index 000000000000..540c586f1ff5
--- /dev/null
+++ b/slideshow/util/slideshow.component
@@ -0,0 +1,34 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--**********************************************************************
+*
+* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
+*
+* Copyright 2000, 2010 Oracle and/or its affiliates.
+*
+* OpenOffice.org - a multi-platform office productivity suite
+*
+* This file is part of OpenOffice.org.
+*
+* OpenOffice.org is free software: you can redistribute it and/or modify
+* it under the terms of the GNU Lesser General Public License version 3
+* only, as published by the Free Software Foundation.
+*
+* OpenOffice.org is distributed in the hope that it will be useful,
+* but WITHOUT ANY WARRANTY; without even the implied warranty of
+* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
+* GNU Lesser General Public License version 3 for more details
+* (a copy is included in the LICENSE file that accompanied this code).
+*
+* You should have received a copy of the GNU Lesser General Public License
+* version 3 along with OpenOffice.org. If not, see
+* <http://www.openoffice.org/license.html>
+* for a copy of the LGPLv3 License.
+*
+**********************************************************************-->
+
+<component loader="com.sun.star.loader.SharedLibrary"
+ xmlns="http://openoffice.org/2010/uno-components">
+ <implementation name="com.sun.star.comp.presentation.SlideShow">
+ <service name="com.sun.star.presentation.SlideShow"/>
+ </implementation>
+</component>