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)
68 maSeparatorColor(0xffffff),
69 mnSeparatorYLocation(0),
78 Reference<XControllerManager> xCM (rxController, UNO_QUERY_THROW);
79 Reference<XConfigurationController> xCC (xCM->getConfigurationController(), UNO_SET_THROW);
80 Reference<XPane> xPane (xCC->getResource(rxViewId->getAnchor()), UNO_QUERY_THROW);
84 mpTextView = std::make_shared<PresenterTextView>(
89 const OUString sResourceURL (
mxViewId->getResourceURL());
90 mpFont = std::make_shared<PresenterTheme::FontDescriptor>(
91 rpPresenterController->GetViewFont(sResourceURL));
117 [
this](
double f) {
return this->
SetTop(
f); });
148 Reference<XComponent> xComponent (static_cast<XWeak*>(
mpToolBar.get()), UNO_QUERY);
151 xComponent->dispose();
157 xComponent->dispose();
163 xComponent->dispose();
168 Reference<XComponent> xComponent (static_cast<XWeak*>(
mpCloseButton.get()), UNO_QUERY);
171 xComponent->dispose();
182 const css::uno::Reference<css::uno::XComponentContext>& rxContext,
183 const ::rtl::Reference<PresenterController>& rpPresenterController)
185 if (!rpPresenterController)
188 Reference<drawing::XPresenterHelper> xPresenterHelper (
189 rpPresenterController->GetPresenterHelper());
190 if ( ! xPresenterHelper.is())
201 Reference<rendering::XSpriteCanvas>(
mxCanvas, UNO_QUERY),
212 rpPresenterController,
215 "PresenterScreenSettings/ToolBars/NotesToolBar");
220 static constexpr OUStringLiteral sNotesShapeName (
221 u"com.sun.star.presentation.NotesShape");
222 static constexpr OUStringLiteral sTextShapeName (
223 u"com.sun.star.drawing.TextShape");
225 if (!rxNotesPage.is())
229 sal_Int32
nCount (rxNotesPage->getCount());
233 Reference<lang::XServiceName> xServiceName (
234 rxNotesPage->getByIndex(
nIndex), UNO_QUERY);
235 if (xServiceName.is()
236 && xServiceName->getServiceName() == sNotesShapeName)
241 Reference<drawing::XShapeDescriptor> xShapeDescriptor (
242 rxNotesPage->getByIndex(
nIndex), UNO_QUERY);
243 if (xShapeDescriptor.is())
245 OUString
sType (xShapeDescriptor->getShapeType());
246 if (
sType == sNotesShapeName ||
sType == sTextShapeName)
248 Reference<text::XTextRange> xText (
249 rxNotesPage->getByIndex(
nIndex), UNO_QUERY);
252 mpTextView->SetText(Reference<text::XText>(xText, UNO_QUERY));
295 if (rBHelper.bDisposed || rBHelper.bInDispose)
297 throw lang::DisposedException (
298 "PresenterNotesView object has already been disposed",
299 static_cast<uno::XWeak*>(
this));
305 ::osl::MutexGuard aSolarGuard (::osl::Mutex::getGlobalMutex());
306 Paint(rEvent.UpdateRect);
329 Reference<presentation::XPresentationPage> xPresentationPage(rxSlide, UNO_QUERY);
330 if (xPresentationPage.is())
349 switch (rEvent.KeyCode)
372 (rEvent.Modifiers == awt::KeyModifier::SHIFT)
373 ? css::accessibility::AccessibleTextType::CHARACTER
374 : css::accessibility::AccessibleTextType::WORD);
381 (rEvent.Modifiers == awt::KeyModifier::SHIFT)
382 ? css::accessibility::AccessibleTextType::CHARACTER
383 : css::accessibility::AccessibleTextType::WORD);
396 geometry::RealRectangle2D aNewTextBoundingBox (0,0,aWindowBox.Width, aWindowBox.Height);
400 const geometry::RealSize2D aToolBarSize (
mpToolBar->GetMinimalSize());
401 const sal_Int32 nToolBarHeight = sal_Int32(aToolBarSize.Height + 0.5);
403 sal_Int32(aToolBarSize.Width + 0.5), nToolBarHeight,
404 awt::PosSize::POSSIZE);
410 (aWindowBox.Width + aToolBarSize.Width) / 2,
411 aWindowBox.Height - aToolBarSize.Height/2));
416 bool bShowVerticalScrollbar (
false);
419 const double nTextBoxHeight (aNewTextBoundingBox.Y2 - aNewTextBoundingBox.Y1);
420 const double nHeight (
mpTextView->GetTotalTextHeight());
421 if (nHeight > nTextBoxHeight)
423 bShowVerticalScrollbar =
true;
431 catch(beans::UnknownPropertyException&)
439 geometry::RealRectangle2D(
441 aNewTextBoundingBox.Y1,
442 aNewTextBoundingBox.X1,
443 aNewTextBoundingBox.Y2));
444 if( ! bShowVerticalScrollbar)
452 geometry::RealRectangle2D(
454 aNewTextBoundingBox.Y1,
456 aNewTextBoundingBox.Y2));
457 if( ! bShowVerticalScrollbar)
470 geometry::RealPoint2D(
471 aNewTextBoundingBox.X1,
472 aNewTextBoundingBox.Y1));
474 geometry::RealSize2D(
475 aNewTextBoundingBox.X2 - aNewTextBoundingBox.X1,
476 aNewTextBoundingBox.Y2 - aNewTextBoundingBox.Y1));
508 rendering::ViewState aViewState (
509 geometry::AffineMatrix2D(1,0,0, 0,1,0),
511 rendering::RenderState aRenderState(
512 geometry::AffineMatrix2D(1,0,0, 0,1,0),
515 rendering::CompositeOperation::SOURCE);
524 awt::Rectangle(0,sal_Int32(
maTextBoundingBox.Y2),aWindowBox.Width,aWindowBox.Height),
544 if (aBox.Width <= 0 || aBox.Height <= 0)
558 Reference<rendering::XSpriteCanvas> xSpriteCanvas (
mxCanvas, UNO_QUERY);
559 if (xSpriteCanvas.is())
560 xSpriteCanvas->updateScreen(
false);
580 catch (beans::UnknownPropertyException&)
594 catch (beans::UnknownPropertyException&)
600 const sal_Int32 nNewSize (
mpFont->mnSize + nSizeChange);
604 mpFont->mnSize = nNewSize;
617 std::shared_ptr<PresenterConfigurationAccess> pConfiguration (
620 if (pConfiguration ==
nullptr || !pConfiguration->IsValid())
623 pConfiguration->GoToChild(
"Font");
624 pConfiguration->SetProperty(
"Size",
Any(static_cast<sal_Int32>(nNewSize+0.5)));
625 pConfiguration->CommitChanges();
647 catch(beans::UnknownPropertyException&)
::rtl::Reference< PresenterToolBar > mpToolBar
Reference< rendering::XCanvas > mxCanvas
SharedBitmapDescriptor mpBackground
sal_Int32 mnSeparatorYLocation
::rtl::Reference< PresenterController > mpPresenterController
SharedBitmapDescriptor mpBackground
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
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)
PresenterTheme::SharedFontDescriptor mpFont
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