blob: 1845d152a65f1c29cf285b243dff1614919c9f88 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
|
/*************************************************************************
*
* DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
*
* Copyright 2008 by Sun Microsystems, Inc.
*
* OpenOffice.org - a multi-platform office productivity suite
*
* $RCSfile: sdrpagewindow.hxx,v $
* $Revision: 1.4 $
*
* This file is part of OpenOffice.org.
*
* OpenOffice.org is free software: you can redistribute it and/or modify
* it under the terms of the GNU Lesser General Public License version 3
* only, as published by the Free Software Foundation.
*
* OpenOffice.org is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Lesser General Public License version 3 for more details
* (a copy is included in the LICENSE file that accompanied this code).
*
* You should have received a copy of the GNU Lesser General Public License
* version 3 along with OpenOffice.org. If not, see
* <http://www.openoffice.org/license.html>
* for a copy of the LGPLv3 License.
*
************************************************************************/
#ifndef _SDRPAGEWINDOW_HXX
#define _SDRPAGEWINDOW_HXX
#include <tools/debug.hxx>
#include <com/sun/star/awt/XWindowListener.hpp>
#include <com/sun/star/beans/XPropertyChangeListener.hpp>
#include <com/sun/star/awt/XControlContainer.hpp>
#include <com/sun/star/util/XModeChangeListener.hpp>
#include <cppuhelper/implbase4.hxx>
#include <svx/svdtypes.hxx> // fuer SdrLayerID
#include <svtools/svarray.hxx>
#include <tools/contnr.hxx>
#include <svx/sdrpagewindow.hxx>
#include "svx/svxdllapi.h"
#include <vector>
////////////////////////////////////////////////////////////////////////////////////////////////////
// predeclarations
class Region;
class SdrUnoObj;
class SdrPageView;
// #110094#
namespace sdr
{
namespace contact
{
class ObjectContact;
class ViewObjectContactRedirector;
} // end of namespace contact
namespace overlay
{
class OverlayManager;
} // end of namespace overlay
} // end of namespace sdr
namespace basegfx
{
class B2DRange;
} // end of namespace basegfx
class SdrUnoControlList;
class SdrPaintWindow;
class Link;
////////////////////////////////////////////////////////////////////////////////////////////////////
class SVX_DLLPUBLIC SdrPageWindow
{
// #110094# ObjectContact section
sdr::contact::ObjectContact* mpObjectContact;
// the SdrPageView this window belongs to
SdrPageView& mrPageView;
// the PaintWindow to paint on. Here is access to OutDev etc.
// #i72752# change to pointer to allow patcing it in DrawLayer() if necessary
SdrPaintWindow* mpPaintWindow;
SdrPaintWindow* mpOriginalPaintWindow;
// UNO stuff for xControls
void* mpDummy;
::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer > mxControlContainer;
// #110094# ObjectContact section
sdr::contact::ObjectContact* CreateViewSpecificObjectContact();
public:
SdrPageWindow(SdrPageView& rNewPageView, SdrPaintWindow& rPaintWindow);
~SdrPageWindow();
// data read accesses
SdrPageView& GetPageView() const { return mrPageView; }
SdrPaintWindow& GetPaintWindow() const { return *mpPaintWindow; }
const SdrPaintWindow* GetOriginalPaintWindow() const { return mpOriginalPaintWindow; }
::com::sun::star::uno::Reference< ::com::sun::star::awt::XControlContainer > GetControlContainer( bool _bCreateIfNecessary = true ) const;
// OVERLAYMANAGER
::sdr::overlay::OverlayManager* GetOverlayManager() const;
// #i72752# allow patcing SdrPaintWindow from SdrPageView::DrawLayer if needed
void patchPaintWindow(SdrPaintWindow& rPaintWindow);
void unpatchPaintWindow();
// the repaint method. For migration from pPaintProc, use one more parameter
void PrePaint();
void PrepareRedraw(const Region& rReg);
void RedrawAll(sdr::contact::ViewObjectContactRedirector* pRedirector) const;
void RedrawLayer(const SdrLayerID* pId, sdr::contact::ViewObjectContactRedirector* pRedirector) const;
// Invalidate call, used from ObjectContact(OfPageView) in InvalidatePartOfView(...)
void InvalidatePageWindow(const basegfx::B2DRange& rRange);
// #110094# ObjectContact section
sdr::contact::ObjectContact& GetObjectContact() const;
/// determines whether there already exists an ObjectContact
bool HasObjectContact() const;
// #i26631#
void ResetObjectContact();
/** sets all elements in the view which support a design and a alive mode into the given mode
*/
void SetDesignMode( bool _bDesignMode ) const;
};
// typedefs for a list of SdrPageWindow
typedef ::std::vector< SdrPageWindow* > SdrPageWindowVector;
////////////////////////////////////////////////////////////////////////////////////////////////////
#endif //_SDRPAGEWINDOW_HXX
|