29#include <com/sun/star/accessibility/AccessibleTextType.hpp>
30#include <com/sun/star/awt/Key.hpp>
31#include <com/sun/star/awt/KeyModifier.hpp>
32#include <com/sun/star/awt/PosSize.hpp>
33#include <com/sun/star/drawing/framework/XConfigurationController.hpp>
34#include <com/sun/star/drawing/framework/XPane.hpp>
35#include <com/sun/star/lang/XServiceName.hpp>
36#include <com/sun/star/presentation/XPresentationPage.hpp>
37#include <com/sun/star/rendering/CompositeOperation.hpp>
38#include <com/sun/star/rendering/XSpriteCanvas.hpp>
39#include <com/sun/star/text/XTextRange.hpp>
54 const Reference<XComponentContext>& rxComponentContext,
55 const Reference<XResourceId>& rxViewId,
56 const ::rtl::Reference<::sd::DrawController>& rxController,
57 const ::rtl::Reference<PresenterController>& rpPresenterController)
61 maSeparatorColor(0xffffff),
62 mnSeparatorYLocation(0),
67 Reference<XConfigurationController> xCC (rxController->getConfigurationController(), UNO_SET_THROW);
68 Reference<XPane> xPane (xCC->getResource(rxViewId->getAnchor()), UNO_QUERY_THROW);
72 mpTextView = std::make_shared<PresenterTextView>(
77 const OUString sResourceURL (
mxViewId->getResourceURL());
78 mpFont = std::make_shared<PresenterTheme::FontDescriptor>(
79 rpPresenterController->GetViewFont(sResourceURL));
105 [
this](
double f) { return this->SetTop(f); });
136 Reference<XComponent> xComponent =
mpToolBar;
139 xComponent->dispose();
145 xComponent->dispose();
151 xComponent->dispose();
159 xComponent->dispose();
170 const css::uno::Reference<css::uno::XComponentContext>& rxContext,
171 const ::rtl::Reference<PresenterController>& rpPresenterController)
173 if (!rpPresenterController)
176 Reference<drawing::XPresenterHelper> xPresenterHelper (
177 rpPresenterController->GetPresenterHelper());
178 if ( ! xPresenterHelper.is())
189 Reference<rendering::XSpriteCanvas>(
mxCanvas, UNO_QUERY),
200 rpPresenterController,
203 "PresenterScreenSettings/ToolBars/NotesToolBar");
208 static constexpr OUStringLiteral sNotesShapeName (
209 u"com.sun.star.presentation.NotesShape");
210 static constexpr OUStringLiteral sTextShapeName (
211 u"com.sun.star.drawing.TextShape");
213 if (!rxNotesPage.is())
217 sal_Int32
nCount (rxNotesPage->getCount());
221 Reference<lang::XServiceName> xServiceName (
222 rxNotesPage->getByIndex(
nIndex), UNO_QUERY);
223 if (xServiceName.is()
224 && xServiceName->getServiceName() == sNotesShapeName)
229 Reference<drawing::XShapeDescriptor> xShapeDescriptor (
230 rxNotesPage->getByIndex(
nIndex), UNO_QUERY);
231 if (xShapeDescriptor.is())
233 OUString
sType (xShapeDescriptor->getShapeType());
234 if (
sType == sNotesShapeName ||
sType == sTextShapeName)
236 Reference<text::XTextRange> xText (
237 rxNotesPage->getByIndex(
nIndex), UNO_QUERY);
240 mpTextView->SetText(Reference<text::XText>(xText, UNO_QUERY));
283 if (rBHelper.bDisposed || rBHelper.bInDispose)
285 throw lang::DisposedException (
286 "PresenterNotesView object has already been disposed",
287 static_cast<uno::XWeak*
>(
this));
290 if ( ! mbIsPresenterViewActive)
293 ::osl::MutexGuard aSolarGuard (::osl::Mutex::getGlobalMutex());
294 Paint(rEvent.UpdateRect);
317 Reference<presentation::XPresentationPage> xPresentationPage(rxSlide, UNO_QUERY);
318 if (xPresentationPage.is())
337 switch (rEvent.KeyCode)
360 (rEvent.Modifiers == awt::KeyModifier::SHIFT)
361 ? css::accessibility::AccessibleTextType::CHARACTER
362 : css::accessibility::AccessibleTextType::WORD);
369 (rEvent.Modifiers == awt::KeyModifier::SHIFT)
370 ? css::accessibility::AccessibleTextType::CHARACTER
371 : css::accessibility::AccessibleTextType::WORD);
384 geometry::RealRectangle2D aNewTextBoundingBox (0,0,aWindowBox.Width, aWindowBox.Height);
388 const geometry::RealSize2D aToolBarSize (
mpToolBar->GetMinimalSize());
389 const sal_Int32 nToolBarHeight = sal_Int32(aToolBarSize.Height + 0.5);
391 sal_Int32(aToolBarSize.Width + 0.5), nToolBarHeight,
392 awt::PosSize::POSSIZE);
398 (aWindowBox.Width + aToolBarSize.Width) / 2,
399 aWindowBox.Height - aToolBarSize.Height/2));
404 bool bShowVerticalScrollbar (
false);
407 const double nTextBoxHeight (aNewTextBoundingBox.Y2 - aNewTextBoundingBox.Y1);
408 const double nHeight (
mpTextView->GetTotalTextHeight());
409 if (nHeight > nTextBoxHeight)
411 bShowVerticalScrollbar =
true;
419 catch(beans::UnknownPropertyException&)
427 geometry::RealRectangle2D(
429 aNewTextBoundingBox.Y1,
430 aNewTextBoundingBox.X1,
431 aNewTextBoundingBox.Y2));
432 if( ! bShowVerticalScrollbar)
440 geometry::RealRectangle2D(
442 aNewTextBoundingBox.Y1,
444 aNewTextBoundingBox.Y2));
445 if( ! bShowVerticalScrollbar)
458 geometry::RealPoint2D(
459 aNewTextBoundingBox.X1,
460 aNewTextBoundingBox.Y1));
462 geometry::RealSize2D(
463 aNewTextBoundingBox.X2 - aNewTextBoundingBox.X1,
464 aNewTextBoundingBox.Y2 - aNewTextBoundingBox.Y1));
496 rendering::ViewState aViewState (
497 geometry::AffineMatrix2D(1,0,0, 0,1,0),
499 rendering::RenderState aRenderState(
500 geometry::AffineMatrix2D(1,0,0, 0,1,0),
503 rendering::CompositeOperation::SOURCE);
512 awt::Rectangle(0,sal_Int32(
maTextBoundingBox.Y2),aWindowBox.Width,aWindowBox.Height),
532 if (aBox.Width <= 0 || aBox.Height <= 0)
546 Reference<rendering::XSpriteCanvas> xSpriteCanvas (
mxCanvas, UNO_QUERY);
547 if (xSpriteCanvas.is())
548 xSpriteCanvas->updateScreen(
false);
568 catch (beans::UnknownPropertyException&)
582 catch (beans::UnknownPropertyException&)
588 const sal_Int32 nNewSize (
mpFont->mnSize + nSizeChange);
592 mpFont->mnSize = nNewSize;
605 std::shared_ptr<PresenterConfigurationAccess> pConfiguration (
608 if (pConfiguration ==
nullptr || !pConfiguration->IsValid())
611 pConfiguration->GoToChild(
"Font");
612 pConfiguration->SetProperty(
"Size",
Any(
static_cast<sal_Int32
>(nNewSize+0.5)));
613 pConfiguration->CommitChanges();
635 catch(beans::UnknownPropertyException&)
const double gnLineScrollFactor(1.2)
const sal_Int32 gnSpaceAboveSeparator(10)
const sal_Int32 gnSpaceBelowSeparator(10)
rtl::Reference< PresenterController > mpPresenterController
static bool GetLayoutRTL()
static void SetDeviceColor(css::rendering::RenderState &rRenderState, const css::util::Color aColor)
static css::awt::Rectangle Intersection(const css::awt::Rectangle &rBox1, const css::awt::Rectangle &rBox2)
static css::awt::Rectangle ConvertRectangle(const css::geometry::RealRectangle2D &rBox)
Return the bounding box with integer coordinates of the given rectangle.
::rtl::Reference< PresenterController > mpPresenterController
css::uno::Reference< css::drawing::XDrawPage > mxCurrentNotesPage
virtual sal_Bool SAL_CALL isAnchorOnly() override
virtual void SAL_CALL disposing() override
void CreateToolBar(const css::uno::Reference< css::uno::XComponentContext > &rxContext, const ::rtl::Reference< PresenterController > &rpPresenterController)
css::uno::Reference< css::rendering::XCanvas > mxToolBarCanvas
css::uno::Reference< css::rendering::XCanvas > mxCanvas
void Scroll(const double nDistance)
virtual void SAL_CALL setCurrentPage(const css::uno::Reference< css::drawing::XDrawPage > &rxSlide) override
virtual css::uno::Reference< css::drawing::XDrawPage > SAL_CALL getCurrentPage() override
virtual ~PresenterNotesView() override
css::uno::Reference< css::awt::XWindow > mxToolBarWindow
::rtl::Reference< PresenterScrollBar > mpScrollBar
css::util::Color maSeparatorColor
::rtl::Reference< PresenterButton > mpCloseButton
std::shared_ptr< PresenterTextView > mpTextView
void ChangeFontSize(const sal_Int32 nSizeChange)
virtual void SAL_CALL windowMoved(const css::awt::WindowEvent &rEvent) override
SharedBitmapDescriptor mpBackground
void SetTop(const double nTop)
::rtl::Reference< PresenterToolBar > mpToolBar
sal_Int32 mnSeparatorYLocation
PresenterTheme::SharedFontDescriptor mpFont
PresenterNotesView(const css::uno::Reference< css::uno::XComponentContext > &rxContext, const css::uno::Reference< css::drawing::framework::XResourceId > &rxViewId, const ::rtl::Reference<::sd::DrawController > &rxController, const ::rtl::Reference< PresenterController > &rpPresenterController)
void Paint(const css::awt::Rectangle &rUpdateBox)
virtual css::uno::Reference< css::drawing::framework::XResourceId > SAL_CALL getResourceId() override
void PaintText(const css::awt::Rectangle &rUpdateBox)
virtual void SAL_CALL windowResized(const css::awt::WindowEvent &rEvent) override
void SetSlide(const css::uno::Reference< css::drawing::XDrawPage > &rxNotesPage)
Typically called from setCurrentSlide() with the notes page that is associated with the slide given t...
virtual void SAL_CALL windowShown(const css::lang::EventObject &rEvent) override
virtual void SAL_CALL keyPressed(const css::awt::KeyEvent &rEvent) override
css::uno::Reference< css::drawing::framework::XResourceId > mxViewId
virtual void SAL_CALL windowHidden(const css::lang::EventObject &rEvent) override
virtual void SAL_CALL windowPaint(const css::awt::PaintEvent &rEvent) override
const std::shared_ptr< PresenterTextView > & GetTextView() const
virtual void SAL_CALL keyReleased(const css::awt::KeyEvent &rEvent) override
void PaintToolBar(const css::awt::Rectangle &rUpdateBox)
css::geometry::RealRectangle2D maTextBoundingBox
css::uno::Reference< css::awt::XWindow > mxParentWindow
cppu::WeakComponentImplHelper< css::awt::XWindowListener, css::awt::XPaintListener, css::drawing::framework::XView, css::drawing::XDrawView, css::awt::XKeyListener > PresenterNotesViewInterfaceBase