30#include <com/sun/star/presentation/XSlideShowView.hpp>
31#include <com/sun/star/rendering/XCanvas.hpp>
39 const css::uno::Reference<css::rendering::XBitmap>& xIconBitmap, css::awt::Point pPosition,
44 xIconBitmap, pPosition, clickHandler, rScreenUpdater, rEventMultiplexer, rViewContainer));
53 css::awt::Point pPosition,
58 : mxIconBitmap(
std::move(xIconBitmap))
60 , mpPosition(pPosition)
61 , mClickHandler(clickHandler)
62 , mrScreenUpdater(rScreenUpdater)
64 for (
const auto& pView : rViewContainer)
75 for (
const auto& rView :
maViews)
87 const css::awt::Rectangle aViewArea(rView->getUnoView()->getCanvasArea());
89 aViewArea.X + std::min(aViewArea.Width,
mpPosition.X),
91 + std::max(sal_Int32(0),
101 const css::geometry::IntegerSize2D spriteSize(
mxIconBitmap->getSize());
102 sprite = rView->createSprite(
basegfx::B2DSize(spriteSize.Width, spriteSize.Height),
105 css::rendering::ViewState viewState;
107 css::rendering::RenderState renderState;
109 sprite->getContentCanvas()->getUNOCanvas()->drawBitmap(
mxIconBitmap, viewState,
112 sprite->setAlpha(0.9);
116 catch (css::uno::Exception&)
121 maViews.emplace_back(rView, sprite);
128 [&rView](
const ViewsVecT::value_type& cp) { return rView == cp.first; }),
135 ViewsVecT::iterator aModifiedEntry(
137 [&rView](
const ViewsVecT::value_type& cp) { return rView == cp.first; }));
139 assert(aModifiedEntry !=
maViews.end());
140 if (aModifiedEntry ==
maViews.end())
143 if (aModifiedEntry->second)
144 aModifiedEntry->second->movePixel(
calcSpritePos(aModifiedEntry->first));
150 for (
const auto& rView :
maViews)
161 css::uno::Reference<css::presentation::XSlideShowView> view(e.Source,
162 css::uno::UNO_QUERY_THROW);
164 view->getCanvasArea().X + std::min(view->getCanvasArea().Width,
mpPosition.X),
165 view->getCanvasArea().Y
166 + std::max(sal_Int32(0), view->getCanvasArea().Height -
mxIconBitmap->getSize().Height
This class multiplexes user-activated and slide-show global events.
void addClickHandler(const MouseEventHandlerSharedPtr &rHandler, double nPriority)
Register a mouse handler that is called on mouse click.
basegfx::B2DPoint toNormalPoint(css::uno::Reference< css::uno::XInterface > xInterface, basegfx::B2DPoint pnt)
void addViewHandler(const ViewEventHandlerWeakPtr &rHandler)
Register an event handler that will be called when views are changed.
void requestImmediateUpdate()
A wart.
#define TOOLS_WARN_EXCEPTION(area, stream)
std::shared_ptr< ::cppcanvas::CustomSprite > CustomSpriteSharedPtr
std::shared_ptr< class SlideOverlayButton > SlideOverlayButtonSharedPtr
std::shared_ptr< UnoView > UnoViewSharedPtr
EventMultiplexer & mrEventMultiplexer