vcl: allow for overriding the default PDF rendering resolution
[LibreOffice.git] / sdext / source / presenter / PresenterPaneContainer.hxx
blobb9df5e788a51fadb060fb96d537d74bcf6a4836f
1 /* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
2 /*
3 * This file is part of the LibreOffice project.
5 * This Source Code Form is subject to the terms of the Mozilla Public
6 * License, v. 2.0. If a copy of the MPL was not distributed with this
7 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
9 * This file incorporates work covered by the following license notice:
11 * Licensed to the Apache Software Foundation (ASF) under one or more
12 * contributor license agreements. See the NOTICE file distributed
13 * with this work for additional information regarding copyright
14 * ownership. The ASF licenses this file to you under the Apache
15 * License, Version 2.0 (the "License"); you may not use this file
16 * except in compliance with the License. You may obtain a copy of
17 * the License at http://www.apache.org/licenses/LICENSE-2.0 .
20 #ifndef INCLUDED_SDEXT_SOURCE_PRESENTER_PRESENTERPANECONTAINER_HXX
21 #define INCLUDED_SDEXT_SOURCE_PRESENTER_PRESENTERPANECONTAINER_HXX
23 #include "PresenterPaneBase.hxx"
24 #include <com/sun/star/awt/XWindow.hpp>
25 #include <com/sun/star/drawing/XPresenterHelper.hpp>
26 #include <com/sun/star/drawing/framework/XResourceId.hpp>
27 #include <com/sun/star/drawing/framework/XView.hpp>
28 #include <com/sun/star/uno/XComponentContext.hpp>
29 #include <cppuhelper/basemutex.hxx>
30 #include <cppuhelper/compbase.hxx>
31 #include <rtl/ref.hxx>
33 #include <functional>
34 #include <memory>
35 #include <vector>
37 namespace sdext { namespace presenter {
39 class PresenterPaneBase;
40 class PresenterSprite;
42 typedef ::cppu::WeakComponentImplHelper <
43 css::lang::XEventListener
44 > PresenterPaneContainerInterfaceBase;
46 /** This class could also be called PresenterPaneAndViewContainer because it
47 stores not only references to all panes that belong to the presenter
48 screen but stores the views displayed in these panes as well.
50 class PresenterPaneContainer
51 : private ::cppu::BaseMutex,
52 public PresenterPaneContainerInterfaceBase
54 public:
55 explicit PresenterPaneContainer (
56 const css::uno::Reference<css::uno::XComponentContext>& rxContext);
57 virtual ~PresenterPaneContainer() override;
58 PresenterPaneContainer(const PresenterPaneContainer&) = delete;
59 PresenterPaneContainer& operator=(const PresenterPaneContainer&) = delete;
61 virtual void SAL_CALL disposing() override;
63 typedef ::std::function<void (const css::uno::Reference<css::drawing::framework::XView>&)>
64 ViewInitializationFunction;
66 /** Each pane descriptor holds references to one pane and the view
67 displayed in this pane as well as the other information that is used
68 to manage the pane window like an XWindow reference, the title, and
69 the coordinates.
71 A initialization function for the view is stored as well. This
72 function is executed as soon as a view is created.
74 class PaneDescriptor
76 public:
77 typedef ::std::function<std::shared_ptr<PresenterSprite> ()> SpriteProvider;
78 css::uno::Reference<css::drawing::framework::XResourceId> mxPaneId;
79 OUString msViewURL;
80 ::rtl::Reference<PresenterPaneBase> mxPane;
81 css::uno::Reference<css::drawing::framework::XView> mxView;
82 css::uno::Reference<css::awt::XWindow> mxContentWindow;
83 css::uno::Reference<css::awt::XWindow> mxBorderWindow;
84 OUString msTitleTemplate;
85 OUString msAccessibleTitleTemplate;
86 OUString msTitle;
87 ViewInitializationFunction maViewInitialization;
88 bool mbIsActive;
89 bool mbIsOpaque;
90 bool mbIsSprite;
92 void SetActivationState (const bool bIsActive);
94 typedef std::shared_ptr<PaneDescriptor> SharedPaneDescriptor;
95 typedef ::std::vector<SharedPaneDescriptor> PaneList;
96 PaneList maPanes;
98 void PreparePane (
99 const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
100 const OUString& rsViewURL,
101 const OUString& rsTitle,
102 const OUString& rsAccessibleTitle,
103 const bool bIsOpaque,
104 const ViewInitializationFunction& rViewIntialization);
106 SharedPaneDescriptor StorePane (
107 const rtl::Reference<PresenterPaneBase>& rxPane);
109 SharedPaneDescriptor StoreBorderWindow(
110 const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId,
111 const css::uno::Reference<css::awt::XWindow>& rxBorderWindow);
113 SharedPaneDescriptor StoreView (
114 const css::uno::Reference<css::drawing::framework::XView>& rxView);
116 SharedPaneDescriptor RemovePane (
117 const css::uno::Reference<css::drawing::framework::XResourceId>& rxPaneId);
119 SharedPaneDescriptor RemoveView (
120 const css::uno::Reference<css::drawing::framework::XView>& rxView);
122 /** Find the pane whose border window is identical to the given border
123 window.
125 SharedPaneDescriptor FindBorderWindow (
126 const css::uno::Reference<css::awt::XWindow>& rxBorderWindow);
128 /** Find the pane whose border window is identical to the given content
129 window.
131 SharedPaneDescriptor FindContentWindow (
132 const css::uno::Reference<css::awt::XWindow>& rxBorderWindow);
134 /** Find the pane whose pane URL is identical to the given URL string.
136 SharedPaneDescriptor FindPaneURL (const OUString& rsPaneURL);
138 /** Find the pane whose resource id is identical to the given one.
140 SharedPaneDescriptor FindPaneId (const css::uno::Reference<
141 css::drawing::framework::XResourceId>& rxPaneId);
143 SharedPaneDescriptor FindViewURL (const OUString& rsViewURL);
145 OUString GetPaneURLForViewURL (const OUString& rsViewURL);
147 void ToTop (const SharedPaneDescriptor& rpDescriptor);
149 // XEventListener
151 virtual void SAL_CALL disposing (
152 const css::lang::EventObject& rEvent) override;
154 private:
155 css::uno::Reference<css::drawing::XPresenterHelper> mxPresenterHelper;
158 } } // end of namespace ::sdext::presenter
160 #endif
162 /* vim:set shiftwidth=4 softtabstop=4 expandtab: */