28 #include <com/sun/star/accessibility/AccessibleTextType.hpp>
29 #include <com/sun/star/awt/Key.hpp>
30 #include <com/sun/star/awt/KeyModifier.hpp>
31 #include <com/sun/star/awt/PosSize.hpp>
32 #include <com/sun/star/drawing/framework/XControllerManager.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>
55 const Reference<XResourceId>& rxViewId,
56 const Reference<frame::XController>& rxController,
57 const ::rtl::Reference<PresenterController>& rpPresenterController)
61 maSeparatorColor(0xffffff),
62 mnSeparatorYLocation(0),
67 Reference<XControllerManager> xCM (rxController, UNO_QUERY_THROW);
68 Reference<XConfigurationController> xCC (xCM->getConfigurationController(), UNO_SET_THROW);
69 Reference<XPane> xPane (xCC->getResource(rxViewId->getAnchor()), UNO_QUERY_THROW);
73 mpTextView = std::make_shared<PresenterTextView>(
78 const OUString sResourceURL (
mxViewId->getResourceURL());
79 mpFont = std::make_shared<PresenterTheme::FontDescriptor>(
80 rpPresenterController->GetViewFont(sResourceURL));
106 [
this](
double f) {
return this->
SetTop(
f); });
137 Reference<XComponent> xComponent =
mpToolBar;
140 xComponent->dispose();
146 xComponent->dispose();
152 xComponent->dispose();
160 xComponent->dispose();
171 const css::uno::Reference<css::uno::XComponentContext>& rxContext,
172 const ::rtl::Reference<PresenterController>& rpPresenterController)
174 if (!rpPresenterController)
177 Reference<drawing::XPresenterHelper> xPresenterHelper (
178 rpPresenterController->GetPresenterHelper());
179 if ( ! xPresenterHelper.is())
190 Reference<rendering::XSpriteCanvas>(
mxCanvas, UNO_QUERY),
201 rpPresenterController,
204 "PresenterScreenSettings/ToolBars/NotesToolBar");
209 static constexpr OUStringLiteral sNotesShapeName (
210 u"com.sun.star.presentation.NotesShape");
211 static constexpr OUStringLiteral sTextShapeName (
212 u"com.sun.star.drawing.TextShape");
214 if (!rxNotesPage.is())
218 sal_Int32
nCount (rxNotesPage->getCount());
222 Reference<lang::XServiceName> xServiceName (
223 rxNotesPage->getByIndex(
nIndex), UNO_QUERY);
224 if (xServiceName.is()
225 && xServiceName->getServiceName() == sNotesShapeName)
230 Reference<drawing::XShapeDescriptor> xShapeDescriptor (
231 rxNotesPage->getByIndex(
nIndex), UNO_QUERY);
232 if (xShapeDescriptor.is())
234 OUString
sType (xShapeDescriptor->getShapeType());
235 if (
sType == sNotesShapeName ||
sType == sTextShapeName)
237 Reference<text::XTextRange> xText (
238 rxNotesPage->getByIndex(
nIndex), UNO_QUERY);
284 if (rBHelper.bDisposed || rBHelper.bInDispose)
286 throw lang::DisposedException (
287 "PresenterNotesView object has already been disposed",
288 static_cast<uno::XWeak*>(
this));
294 ::osl::MutexGuard aSolarGuard (::osl::Mutex::getGlobalMutex());
295 Paint(rEvent.UpdateRect);
318 Reference<presentation::XPresentationPage> xPresentationPage(rxSlide, UNO_QUERY);
319 if (xPresentationPage.is())
338 switch (rEvent.KeyCode)
361 (rEvent.Modifiers == awt::KeyModifier::SHIFT)
362 ? css::accessibility::AccessibleTextType::CHARACTER
363 : css::accessibility::AccessibleTextType::WORD);
370 (rEvent.Modifiers == awt::KeyModifier::SHIFT)
371 ? css::accessibility::AccessibleTextType::CHARACTER
372 : css::accessibility::AccessibleTextType::WORD);
385 geometry::RealRectangle2D aNewTextBoundingBox (0,0,aWindowBox.Width, aWindowBox.Height);
389 const geometry::RealSize2D aToolBarSize (
mpToolBar->GetMinimalSize());
390 const sal_Int32 nToolBarHeight = sal_Int32(aToolBarSize.Height + 0.5);
392 sal_Int32(aToolBarSize.Width + 0.5), nToolBarHeight,
393 awt::PosSize::POSSIZE);
399 (aWindowBox.Width + aToolBarSize.Width) / 2,
400 aWindowBox.Height - aToolBarSize.Height/2));
405 bool bShowVerticalScrollbar (
false);
408 const double nTextBoxHeight (aNewTextBoundingBox.Y2 - aNewTextBoundingBox.Y1);
409 const double nHeight (
mpTextView->GetTotalTextHeight());
410 if (nHeight > nTextBoxHeight)
412 bShowVerticalScrollbar =
true;
420 catch(beans::UnknownPropertyException&)
428 geometry::RealRectangle2D(
430 aNewTextBoundingBox.Y1,
431 aNewTextBoundingBox.X1,
432 aNewTextBoundingBox.Y2));
433 if( ! bShowVerticalScrollbar)
441 geometry::RealRectangle2D(
443 aNewTextBoundingBox.Y1,
445 aNewTextBoundingBox.Y2));
446 if( ! bShowVerticalScrollbar)
459 geometry::RealPoint2D(
460 aNewTextBoundingBox.X1,
461 aNewTextBoundingBox.Y1));
463 geometry::RealSize2D(
464 aNewTextBoundingBox.X2 - aNewTextBoundingBox.X1,
465 aNewTextBoundingBox.Y2 - aNewTextBoundingBox.Y1));
497 rendering::ViewState aViewState (
498 geometry::AffineMatrix2D(1,0,0, 0,1,0),
500 rendering::RenderState aRenderState(
501 geometry::AffineMatrix2D(1,0,0, 0,1,0),
504 rendering::CompositeOperation::SOURCE);
513 awt::Rectangle(0,sal_Int32(
maTextBoundingBox.Y2),aWindowBox.Width,aWindowBox.Height),
533 if (aBox.Width <= 0 || aBox.Height <= 0)
547 Reference<rendering::XSpriteCanvas> xSpriteCanvas (
mxCanvas, UNO_QUERY);
548 if (xSpriteCanvas.is())
549 xSpriteCanvas->updateScreen(
false);
569 catch (beans::UnknownPropertyException&)
583 catch (beans::UnknownPropertyException&)
589 const sal_Int32 nNewSize (
mpFont->mnSize + nSizeChange);
593 mpFont->mnSize = nNewSize;
606 std::shared_ptr<PresenterConfigurationAccess> pConfiguration (
609 if (pConfiguration ==
nullptr || !pConfiguration->IsValid())
612 pConfiguration->GoToChild(
"Font");
613 pConfiguration->SetProperty(
"Size",
Any(static_cast<sal_Int32>(nNewSize+0.5)));
614 pConfiguration->CommitChanges();
636 catch(beans::UnknownPropertyException&)
::rtl::Reference< PresenterToolBar > mpToolBar
SharedBitmapDescriptor mpBackground
sal_Int32 mnSeparatorYLocation
::rtl::Reference< PresenterController > mpPresenterController
const std::shared_ptr< PresenterTextView > & GetTextView() const
void ChangeFontSize(const sal_Int32 nSizeChange)
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...
const sal_Int32 gnSpaceAboveSeparator(10)
css::uno::Reference< css::awt::XWindow > mxParentWindow
virtual void SAL_CALL windowResized(const css::awt::WindowEvent &rEvent) override
const sal_Int32 gnSpaceBelowSeparator(10)
virtual void SAL_CALL windowShown(const css::lang::EventObject &rEvent) override
css::util::Color maSeparatorColor
virtual void SAL_CALL keyPressed(const css::awt::KeyEvent &rEvent) override
void PaintText(const css::awt::Rectangle &rUpdateBox)
virtual css::uno::Reference< css::drawing::XDrawPage > SAL_CALL getCurrentPage() override
cppu::WeakComponentImplHelper< css::awt::XWindowListener, css::awt::XPaintListener, css::drawing::framework::XView, css::drawing::XDrawView, css::awt::XKeyListener > PresenterNotesViewInterfaceBase
css::uno::Reference< css::awt::XWindow > mxToolBarWindow
const double gnLineScrollFactor(1.2)
::rtl::Reference< PresenterScrollBar > mpScrollBar
virtual void SAL_CALL windowMoved(const css::awt::WindowEvent &rEvent) override
PresenterTheme::SharedFontDescriptor mpFont
void Paint(const css::awt::Rectangle &rUpdateBox)
css::uno::Reference< css::rendering::XCanvas > mxToolBarCanvas
std::shared_ptr< PresenterTextView > mpTextView
static bool GetLayoutRTL()
virtual sal_Bool SAL_CALL isAnchorOnly() override
virtual void SAL_CALL disposing() override
virtual void SAL_CALL windowPaint(const css::awt::PaintEvent &rEvent) override
css::geometry::RealRectangle2D maTextBoundingBox
static css::awt::Rectangle ConvertRectangle(const css::geometry::RealRectangle2D &rBox)
Return the bounding box with integer coordinates of the given rectangle.
virtual ~PresenterNotesView() override
static css::awt::Rectangle Intersection(const css::awt::Rectangle &rBox1, const css::awt::Rectangle &rBox2)
virtual void SAL_CALL setCurrentPage(const css::uno::Reference< css::drawing::XDrawPage > &rxSlide) override
rtl::Reference< PresenterController > mpPresenterController
void PaintToolBar(const css::awt::Rectangle &rUpdateBox)
css::uno::Reference< css::drawing::XDrawPage > mxCurrentNotesPage
static void SetDeviceColor(css::rendering::RenderState &rRenderState, const css::util::Color aColor)
void CreateToolBar(const css::uno::Reference< css::uno::XComponentContext > &rxContext, const ::rtl::Reference< PresenterController > &rpPresenterController)
void Scroll(const double nDistance)
virtual css::uno::Reference< css::drawing::framework::XResourceId > SAL_CALL getResourceId() override
virtual void SAL_CALL windowHidden(const css::lang::EventObject &rEvent) override
void(* f)(TrueTypeTable *)
PresenterNotesView(const css::uno::Reference< css::uno::XComponentContext > &rxContext, const css::uno::Reference< css::drawing::framework::XResourceId > &rxViewId, const css::uno::Reference< css::frame::XController > &rxController, const ::rtl::Reference< PresenterController > &rpPresenterController)
::rtl::Reference< PresenterButton > mpCloseButton
void SetTop(const double nTop)
virtual void SAL_CALL keyReleased(const css::awt::KeyEvent &rEvent) override
css::uno::Reference< css::rendering::XCanvas > mxCanvas
css::uno::Reference< css::drawing::framework::XResourceId > mxViewId
bool mbIsPresenterViewActive