xref: /aoo42x/main/vcl/inc/brdwin.hxx (revision cdf0e10c)
1*cdf0e10cSrcweir /*************************************************************************
2*cdf0e10cSrcweir  *
3*cdf0e10cSrcweir  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
4*cdf0e10cSrcweir  *
5*cdf0e10cSrcweir  * Copyright 2000, 2010 Oracle and/or its affiliates.
6*cdf0e10cSrcweir  *
7*cdf0e10cSrcweir  * OpenOffice.org - a multi-platform office productivity suite
8*cdf0e10cSrcweir  *
9*cdf0e10cSrcweir  * This file is part of OpenOffice.org.
10*cdf0e10cSrcweir  *
11*cdf0e10cSrcweir  * OpenOffice.org is free software: you can redistribute it and/or modify
12*cdf0e10cSrcweir  * it under the terms of the GNU Lesser General Public License version 3
13*cdf0e10cSrcweir  * only, as published by the Free Software Foundation.
14*cdf0e10cSrcweir  *
15*cdf0e10cSrcweir  * OpenOffice.org is distributed in the hope that it will be useful,
16*cdf0e10cSrcweir  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17*cdf0e10cSrcweir  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
18*cdf0e10cSrcweir  * GNU Lesser General Public License version 3 for more details
19*cdf0e10cSrcweir  * (a copy is included in the LICENSE file that accompanied this code).
20*cdf0e10cSrcweir  *
21*cdf0e10cSrcweir  * You should have received a copy of the GNU Lesser General Public License
22*cdf0e10cSrcweir  * version 3 along with OpenOffice.org.  If not, see
23*cdf0e10cSrcweir  * <http://www.openoffice.org/license.html>
24*cdf0e10cSrcweir  * for a copy of the LGPLv3 License.
25*cdf0e10cSrcweir  *
26*cdf0e10cSrcweir  ************************************************************************/
27*cdf0e10cSrcweir 
28*cdf0e10cSrcweir #ifndef _SV_BRDWIN_HXX
29*cdf0e10cSrcweir #define _SV_BRDWIN_HXX
30*cdf0e10cSrcweir 
31*cdf0e10cSrcweir #include <vcl/sv.h>
32*cdf0e10cSrcweir #include <vcl/window.hxx>
33*cdf0e10cSrcweir 
34*cdf0e10cSrcweir class ImplBorderWindowView;
35*cdf0e10cSrcweir 
36*cdf0e10cSrcweir // --------------------------
37*cdf0e10cSrcweir // - ImplBorderWindow-Types -
38*cdf0e10cSrcweir // --------------------------
39*cdf0e10cSrcweir 
40*cdf0e10cSrcweir #define BORDERWINDOW_STYLE_OVERLAP			((sal_uInt16)0x0001)
41*cdf0e10cSrcweir #define BORDERWINDOW_STYLE_BORDER			((sal_uInt16)0x0002)
42*cdf0e10cSrcweir #define BORDERWINDOW_STYLE_FLOAT			((sal_uInt16)0x0004)
43*cdf0e10cSrcweir #define BORDERWINDOW_STYLE_FRAME			((sal_uInt16)0x0008)
44*cdf0e10cSrcweir #define BORDERWINDOW_STYLE_APP				((sal_uInt16)0x0010)
45*cdf0e10cSrcweir 
46*cdf0e10cSrcweir #define BORDERWINDOW_HITTEST_TITLE			((sal_uInt16)0x0001)
47*cdf0e10cSrcweir #define BORDERWINDOW_HITTEST_LEFT			((sal_uInt16)0x0002)
48*cdf0e10cSrcweir #define BORDERWINDOW_HITTEST_MENU			((sal_uInt16)0x0004)
49*cdf0e10cSrcweir #define BORDERWINDOW_HITTEST_TOP			((sal_uInt16)0x0008)
50*cdf0e10cSrcweir #define BORDERWINDOW_HITTEST_RIGHT			((sal_uInt16)0x0010)
51*cdf0e10cSrcweir #define BORDERWINDOW_HITTEST_BOTTOM 		((sal_uInt16)0x0020)
52*cdf0e10cSrcweir #define BORDERWINDOW_HITTEST_TOPLEFT		((sal_uInt16)0x0040)
53*cdf0e10cSrcweir #define BORDERWINDOW_HITTEST_TOPRIGHT		((sal_uInt16)0x0080)
54*cdf0e10cSrcweir #define BORDERWINDOW_HITTEST_BOTTOMLEFT 	((sal_uInt16)0x0100)
55*cdf0e10cSrcweir #define BORDERWINDOW_HITTEST_BOTTOMRIGHT	((sal_uInt16)0x0200)
56*cdf0e10cSrcweir #define BORDERWINDOW_HITTEST_CLOSE			((sal_uInt16)0x0400)
57*cdf0e10cSrcweir #define BORDERWINDOW_HITTEST_ROLL			((sal_uInt16)0x0800)
58*cdf0e10cSrcweir #define BORDERWINDOW_HITTEST_DOCK			((sal_uInt16)0x1000)
59*cdf0e10cSrcweir #define BORDERWINDOW_HITTEST_HIDE			((sal_uInt16)0x2000)
60*cdf0e10cSrcweir #define BORDERWINDOW_HITTEST_HELP			((sal_uInt16)0x4000)
61*cdf0e10cSrcweir #define BORDERWINDOW_HITTEST_PIN			((sal_uInt16)0x8000)
62*cdf0e10cSrcweir 
63*cdf0e10cSrcweir #define BORDERWINDOW_DRAW_TITLE 			((sal_uInt16)0x0001)
64*cdf0e10cSrcweir #define BORDERWINDOW_DRAW_BORDER			((sal_uInt16)0x0002)
65*cdf0e10cSrcweir #define BORDERWINDOW_DRAW_FRAME 			((sal_uInt16)0x0004)
66*cdf0e10cSrcweir #define BORDERWINDOW_DRAW_CLOSE 			((sal_uInt16)0x0008)
67*cdf0e10cSrcweir #define BORDERWINDOW_DRAW_ROLL				((sal_uInt16)0x0010)
68*cdf0e10cSrcweir #define BORDERWINDOW_DRAW_DOCK				((sal_uInt16)0x0020)
69*cdf0e10cSrcweir #define BORDERWINDOW_DRAW_HIDE				((sal_uInt16)0x0040)
70*cdf0e10cSrcweir #define BORDERWINDOW_DRAW_HELP				((sal_uInt16)0x0080)
71*cdf0e10cSrcweir #define BORDERWINDOW_DRAW_PIN				((sal_uInt16)0x0100)
72*cdf0e10cSrcweir #define BORDERWINDOW_DRAW_MENU				((sal_uInt16)0x0200)
73*cdf0e10cSrcweir #define BORDERWINDOW_DRAW_ALL				(BORDERWINDOW_DRAW_TITLE |		\
74*cdf0e10cSrcweir 											 BORDERWINDOW_DRAW_BORDER | 	\
75*cdf0e10cSrcweir 											 BORDERWINDOW_DRAW_FRAME |		\
76*cdf0e10cSrcweir 											 BORDERWINDOW_DRAW_CLOSE |		\
77*cdf0e10cSrcweir 											 BORDERWINDOW_DRAW_ROLL |		\
78*cdf0e10cSrcweir 											 BORDERWINDOW_DRAW_DOCK |		\
79*cdf0e10cSrcweir 											 BORDERWINDOW_DRAW_HIDE |		\
80*cdf0e10cSrcweir 											 BORDERWINDOW_DRAW_HELP |		\
81*cdf0e10cSrcweir 											 BORDERWINDOW_DRAW_PIN  |		\
82*cdf0e10cSrcweir 											 BORDERWINDOW_DRAW_MENU)
83*cdf0e10cSrcweir 
84*cdf0e10cSrcweir #define BORDERWINDOW_TITLE_NORMAL			((sal_uInt16)0x0001)
85*cdf0e10cSrcweir #define BORDERWINDOW_TITLE_SMALL			((sal_uInt16)0x0002)
86*cdf0e10cSrcweir #define BORDERWINDOW_TITLE_TEAROFF			((sal_uInt16)0x0004)
87*cdf0e10cSrcweir #define BORDERWINDOW_TITLE_NONE 			((sal_uInt16)0x0008)
88*cdf0e10cSrcweir 
89*cdf0e10cSrcweir // --------------------
90*cdf0e10cSrcweir // - ImplBorderWindow -
91*cdf0e10cSrcweir // --------------------
92*cdf0e10cSrcweir 
93*cdf0e10cSrcweir class ImplBorderWindow : public Window
94*cdf0e10cSrcweir {
95*cdf0e10cSrcweir 	friend class Window;
96*cdf0e10cSrcweir 	friend class ImplBorderWindowView;
97*cdf0e10cSrcweir 	friend class ImplSmallBorderWindowView;
98*cdf0e10cSrcweir 	friend class ImplStdBorderWindowView;
99*cdf0e10cSrcweir 
100*cdf0e10cSrcweir private:
101*cdf0e10cSrcweir 	ImplBorderWindowView*	mpBorderView;
102*cdf0e10cSrcweir 	Window* 				mpMenuBarWindow;
103*cdf0e10cSrcweir 	long					mnMinWidth;
104*cdf0e10cSrcweir 	long					mnMinHeight;
105*cdf0e10cSrcweir 	long					mnMaxWidth;
106*cdf0e10cSrcweir 	long					mnMaxHeight;
107*cdf0e10cSrcweir 	long					mnRollHeight;
108*cdf0e10cSrcweir 	long					mnOrgMenuHeight;
109*cdf0e10cSrcweir 	sal_uInt16					mnTitleType;
110*cdf0e10cSrcweir 	sal_uInt16					mnBorderStyle;
111*cdf0e10cSrcweir 	sal_Bool					mbFloatWindow;
112*cdf0e10cSrcweir 	sal_Bool					mbSmallOutBorder;
113*cdf0e10cSrcweir 	sal_Bool					mbFrameBorder;
114*cdf0e10cSrcweir 	sal_Bool					mbPined;
115*cdf0e10cSrcweir 	sal_Bool					mbRollUp;
116*cdf0e10cSrcweir 	sal_Bool					mbMenuHide;
117*cdf0e10cSrcweir 	sal_Bool					mbDockBtn;
118*cdf0e10cSrcweir 	sal_Bool					mbHideBtn;
119*cdf0e10cSrcweir 	sal_Bool					mbHelpBtn;
120*cdf0e10cSrcweir     sal_Bool                    mbMenuBtn;
121*cdf0e10cSrcweir 	sal_Bool					mbDisplayActive;
122*cdf0e10cSrcweir 
123*cdf0e10cSrcweir     using Window::ImplInit;
124*cdf0e10cSrcweir 	void					ImplInit( Window* pParent,
125*cdf0e10cSrcweir 									  WinBits nStyle, sal_uInt16 nTypeStyle,
126*cdf0e10cSrcweir 									  SystemParentData* pParentData );
127*cdf0e10cSrcweir 	void					ImplInit( Window* pParent,
128*cdf0e10cSrcweir 									  WinBits nStyle, sal_uInt16 nTypeStyle,
129*cdf0e10cSrcweir 									  const ::com::sun::star::uno::Any& );
130*cdf0e10cSrcweir 
131*cdf0e10cSrcweir                             // Copy assignment is forbidden and not implemented.
132*cdf0e10cSrcweir 	                        ImplBorderWindow (const ImplBorderWindow &);
133*cdf0e10cSrcweir                             ImplBorderWindow& operator= (const ImplBorderWindow &);
134*cdf0e10cSrcweir 
135*cdf0e10cSrcweir public:
136*cdf0e10cSrcweir 							ImplBorderWindow( Window* pParent,
137*cdf0e10cSrcweir 											  SystemParentData* pParentData,
138*cdf0e10cSrcweir 											  WinBits nStyle = 0,
139*cdf0e10cSrcweir 											  sal_uInt16 nTypeStyle = 0 );
140*cdf0e10cSrcweir 							ImplBorderWindow( Window* pParent, WinBits nStyle = 0,
141*cdf0e10cSrcweir 											  sal_uInt16 nTypeStyle = 0 );
142*cdf0e10cSrcweir 							ImplBorderWindow( Window* pParent,
143*cdf0e10cSrcweir 											  WinBits nStyle, sal_uInt16 nTypeStyle,
144*cdf0e10cSrcweir 											  const ::com::sun::star::uno::Any& );
145*cdf0e10cSrcweir 							~ImplBorderWindow();
146*cdf0e10cSrcweir 
147*cdf0e10cSrcweir 	virtual void			MouseMove( const MouseEvent& rMEvt );
148*cdf0e10cSrcweir 	virtual void			MouseButtonDown( const MouseEvent& rMEvt );
149*cdf0e10cSrcweir 	virtual void			Tracking( const TrackingEvent& rTEvt );
150*cdf0e10cSrcweir 	virtual void			Paint( const Rectangle& rRect );
151*cdf0e10cSrcweir 	virtual void			Activate();
152*cdf0e10cSrcweir 	virtual void			Deactivate();
153*cdf0e10cSrcweir 	virtual void			Resize();
154*cdf0e10cSrcweir 	virtual void			RequestHelp( const HelpEvent& rHEvt );
155*cdf0e10cSrcweir 	virtual void			StateChanged( StateChangedType nType );
156*cdf0e10cSrcweir 	virtual void			DataChanged( const DataChangedEvent& rDCEvt );
157*cdf0e10cSrcweir 
158*cdf0e10cSrcweir 	void					InitView();
159*cdf0e10cSrcweir 	void					UpdateView( sal_Bool bNewView, const Size& rNewOutSize );
160*cdf0e10cSrcweir 	void					InvalidateBorder();
161*cdf0e10cSrcweir 
162*cdf0e10cSrcweir     using Window::Draw;
163*cdf0e10cSrcweir 	void					Draw( const Rectangle& rRect, OutputDevice* pDev, const Point& rPos );
164*cdf0e10cSrcweir 
165*cdf0e10cSrcweir 	void					SetDisplayActive( sal_Bool bActive );
166*cdf0e10cSrcweir 	sal_Bool					IsDisplayActive() const { return mbDisplayActive; }
167*cdf0e10cSrcweir 	void					SetTitleType( sal_uInt16 nTitleType, const Size& rSize );
168*cdf0e10cSrcweir 	void					SetBorderStyle( sal_uInt16 nStyle );
169*cdf0e10cSrcweir 	sal_uInt16					GetBorderStyle() const { return mnBorderStyle; }
170*cdf0e10cSrcweir 	void					SetPin( sal_Bool bPin );
171*cdf0e10cSrcweir 	void					SetRollUp( sal_Bool bRollUp, const Size& rSize );
172*cdf0e10cSrcweir 	void					SetCloser();
173*cdf0e10cSrcweir 	void					SetDockButton( sal_Bool bDockButton );
174*cdf0e10cSrcweir 	void					SetHideButton( sal_Bool bHideButton );
175*cdf0e10cSrcweir 	void					SetHelpButton( sal_Bool bHelpButton );
176*cdf0e10cSrcweir 	void					SetMenuButton( sal_Bool bMenuButton );
177*cdf0e10cSrcweir 
178*cdf0e10cSrcweir 	void					UpdateMenuHeight();
179*cdf0e10cSrcweir 	void					SetMenuBarWindow( Window* pWindow );
180*cdf0e10cSrcweir 	void					SetMenuBarMode( sal_Bool bHide );
181*cdf0e10cSrcweir 
182*cdf0e10cSrcweir 	void					SetMinOutputSize( long nWidth, long nHeight )
183*cdf0e10cSrcweir 								{ mnMinWidth = nWidth; mnMinHeight = nHeight; }
184*cdf0e10cSrcweir 	void					SetMaxOutputSize( long nWidth, long nHeight )
185*cdf0e10cSrcweir 								{ mnMaxWidth = nWidth; mnMaxHeight = nHeight; }
186*cdf0e10cSrcweir 
187*cdf0e10cSrcweir 	void					GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
188*cdf0e10cSrcweir 									   sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
189*cdf0e10cSrcweir 	long					CalcTitleWidth() const;
190*cdf0e10cSrcweir 
191*cdf0e10cSrcweir     Rectangle               GetMenuRect() const;
192*cdf0e10cSrcweir };
193*cdf0e10cSrcweir 
194*cdf0e10cSrcweir // =======================================================================
195*cdf0e10cSrcweir 
196*cdf0e10cSrcweir // -----------------------
197*cdf0e10cSrcweir // - ImplBorderFrameData -
198*cdf0e10cSrcweir // -----------------------
199*cdf0e10cSrcweir 
200*cdf0e10cSrcweir struct ImplBorderFrameData
201*cdf0e10cSrcweir {
202*cdf0e10cSrcweir 	ImplBorderWindow*		mpBorderWindow;
203*cdf0e10cSrcweir 	OutputDevice*			mpOutDev;
204*cdf0e10cSrcweir 	Rectangle				maTitleRect;
205*cdf0e10cSrcweir 	Rectangle				maPinRect;
206*cdf0e10cSrcweir 	Rectangle				maCloseRect;
207*cdf0e10cSrcweir 	Rectangle				maRollRect;
208*cdf0e10cSrcweir 	Rectangle				maDockRect;
209*cdf0e10cSrcweir 	Rectangle				maMenuRect;
210*cdf0e10cSrcweir 	Rectangle				maHideRect;
211*cdf0e10cSrcweir 	Rectangle				maHelpRect;
212*cdf0e10cSrcweir 	Point					maMouseOff;
213*cdf0e10cSrcweir 	long					mnWidth;
214*cdf0e10cSrcweir 	long					mnHeight;
215*cdf0e10cSrcweir 	long					mnTrackX;
216*cdf0e10cSrcweir 	long					mnTrackY;
217*cdf0e10cSrcweir 	long					mnTrackWidth;
218*cdf0e10cSrcweir 	long					mnTrackHeight;
219*cdf0e10cSrcweir 	sal_Int32				mnLeftBorder;
220*cdf0e10cSrcweir 	sal_Int32				mnTopBorder;
221*cdf0e10cSrcweir 	sal_Int32				mnRightBorder;
222*cdf0e10cSrcweir 	sal_Int32				mnBottomBorder;
223*cdf0e10cSrcweir 	long					mnNoTitleTop;
224*cdf0e10cSrcweir 	long					mnBorderSize;
225*cdf0e10cSrcweir 	long					mnTitleHeight;
226*cdf0e10cSrcweir 	long					mnTitleOff;
227*cdf0e10cSrcweir 	sal_uInt16					mnHitTest;
228*cdf0e10cSrcweir 	sal_uInt16					mnPinState;
229*cdf0e10cSrcweir 	sal_uInt16					mnCloseState;
230*cdf0e10cSrcweir 	sal_uInt16					mnRollState;
231*cdf0e10cSrcweir 	sal_uInt16					mnDockState;
232*cdf0e10cSrcweir 	sal_uInt16					mnMenuState;
233*cdf0e10cSrcweir 	sal_uInt16					mnHideState;
234*cdf0e10cSrcweir 	sal_uInt16					mnHelpState;
235*cdf0e10cSrcweir 	sal_uInt16					mnTitleType;
236*cdf0e10cSrcweir 	sal_Bool					mbFloatWindow;
237*cdf0e10cSrcweir 	sal_Bool					mbDragFull;
238*cdf0e10cSrcweir     sal_Bool                    mbTitleClipped;
239*cdf0e10cSrcweir };
240*cdf0e10cSrcweir 
241*cdf0e10cSrcweir // =======================================================================
242*cdf0e10cSrcweir 
243*cdf0e10cSrcweir // ------------------------
244*cdf0e10cSrcweir // - ImplBorderWindowView -
245*cdf0e10cSrcweir // ------------------------
246*cdf0e10cSrcweir 
247*cdf0e10cSrcweir class ImplBorderWindowView
248*cdf0e10cSrcweir {
249*cdf0e10cSrcweir public:
250*cdf0e10cSrcweir 	virtual 				~ImplBorderWindowView();
251*cdf0e10cSrcweir 
252*cdf0e10cSrcweir 	virtual sal_Bool			MouseMove( const MouseEvent& rMEvt );
253*cdf0e10cSrcweir 	virtual sal_Bool			MouseButtonDown( const MouseEvent& rMEvt );
254*cdf0e10cSrcweir 	virtual sal_Bool			Tracking( const TrackingEvent& rTEvt );
255*cdf0e10cSrcweir 	virtual String  		RequestHelp( const Point& rPos, Rectangle& rHelpRect );
256*cdf0e10cSrcweir 
257*cdf0e10cSrcweir 	virtual void			Init( OutputDevice* pDev, long nWidth, long nHeight ) = 0;
258*cdf0e10cSrcweir 	virtual void			GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
259*cdf0e10cSrcweir 									   sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const = 0;
260*cdf0e10cSrcweir 	virtual long			CalcTitleWidth() const = 0;
261*cdf0e10cSrcweir 	virtual void			DrawWindow( sal_uInt16 nDrawFlags, OutputDevice* pOutDev = NULL, const Point* pOffset = NULL ) = 0;
262*cdf0e10cSrcweir 	virtual Rectangle       GetMenuRect() const;
263*cdf0e10cSrcweir 
264*cdf0e10cSrcweir 	void					ImplInitTitle( ImplBorderFrameData* pData );
265*cdf0e10cSrcweir 	sal_uInt16					ImplHitTest( ImplBorderFrameData* pData, const Point& rPos );
266*cdf0e10cSrcweir 	sal_Bool					ImplMouseMove( ImplBorderFrameData* pData, const MouseEvent& rMEvt );
267*cdf0e10cSrcweir 	sal_Bool					ImplMouseButtonDown( ImplBorderFrameData* pData, const MouseEvent& rMEvt );
268*cdf0e10cSrcweir 	sal_Bool					ImplTracking( ImplBorderFrameData* pData, const TrackingEvent& rTEvt );
269*cdf0e10cSrcweir 	String					ImplRequestHelp( ImplBorderFrameData* pData, const Point& rPos, Rectangle& rHelpRect );
270*cdf0e10cSrcweir 	long					ImplCalcTitleWidth( const ImplBorderFrameData* pData ) const;
271*cdf0e10cSrcweir };
272*cdf0e10cSrcweir 
273*cdf0e10cSrcweir // =======================================================================
274*cdf0e10cSrcweir 
275*cdf0e10cSrcweir // --------------------------
276*cdf0e10cSrcweir // - ImplNoBorderWindowView -
277*cdf0e10cSrcweir // --------------------------
278*cdf0e10cSrcweir 
279*cdf0e10cSrcweir class ImplNoBorderWindowView : public ImplBorderWindowView
280*cdf0e10cSrcweir {
281*cdf0e10cSrcweir public:
282*cdf0e10cSrcweir 							ImplNoBorderWindowView( ImplBorderWindow* pBorderWindow );
283*cdf0e10cSrcweir 
284*cdf0e10cSrcweir 	virtual void			Init( OutputDevice* pDev, long nWidth, long nHeight );
285*cdf0e10cSrcweir 	virtual void			GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
286*cdf0e10cSrcweir 									   sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
287*cdf0e10cSrcweir 	virtual long			CalcTitleWidth() const;
288*cdf0e10cSrcweir 	virtual void			DrawWindow( sal_uInt16 nDrawFlags, OutputDevice* pOutDev, const Point* pOffset );
289*cdf0e10cSrcweir };
290*cdf0e10cSrcweir 
291*cdf0e10cSrcweir 
292*cdf0e10cSrcweir // =======================================================================
293*cdf0e10cSrcweir 
294*cdf0e10cSrcweir // -----------------------------
295*cdf0e10cSrcweir // - ImplSmallBorderWindowView -
296*cdf0e10cSrcweir // -----------------------------
297*cdf0e10cSrcweir 
298*cdf0e10cSrcweir class ImplSmallBorderWindowView : public ImplBorderWindowView
299*cdf0e10cSrcweir {
300*cdf0e10cSrcweir 	ImplBorderWindow*		mpBorderWindow;
301*cdf0e10cSrcweir 	OutputDevice*			mpOutDev;
302*cdf0e10cSrcweir 	long					mnWidth;
303*cdf0e10cSrcweir 	long					mnHeight;
304*cdf0e10cSrcweir 	sal_Int32				mnLeftBorder;
305*cdf0e10cSrcweir 	sal_Int32				mnTopBorder;
306*cdf0e10cSrcweir 	sal_Int32				mnRightBorder;
307*cdf0e10cSrcweir 	sal_Int32				mnBottomBorder;
308*cdf0e10cSrcweir     bool                    mbNWFBorder;
309*cdf0e10cSrcweir 
310*cdf0e10cSrcweir public:
311*cdf0e10cSrcweir 							ImplSmallBorderWindowView( ImplBorderWindow* pBorderWindow );
312*cdf0e10cSrcweir 
313*cdf0e10cSrcweir 	virtual void			Init( OutputDevice* pOutDev, long nWidth, long nHeight );
314*cdf0e10cSrcweir 	virtual void			GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
315*cdf0e10cSrcweir 									   sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
316*cdf0e10cSrcweir 	virtual long			CalcTitleWidth() const;
317*cdf0e10cSrcweir 	virtual void			DrawWindow( sal_uInt16 nDrawFlags, OutputDevice* pOutDev, const Point* pOffset );
318*cdf0e10cSrcweir };
319*cdf0e10cSrcweir 
320*cdf0e10cSrcweir 
321*cdf0e10cSrcweir // =======================================================================
322*cdf0e10cSrcweir 
323*cdf0e10cSrcweir // ---------------------------
324*cdf0e10cSrcweir // - ImplStdBorderWindowView -
325*cdf0e10cSrcweir // ---------------------------
326*cdf0e10cSrcweir 
327*cdf0e10cSrcweir 
328*cdf0e10cSrcweir class ImplStdBorderWindowView : public ImplBorderWindowView
329*cdf0e10cSrcweir {
330*cdf0e10cSrcweir 	ImplBorderFrameData 	maFrameData;
331*cdf0e10cSrcweir 	VirtualDevice*			mpATitleVirDev;
332*cdf0e10cSrcweir 	VirtualDevice*			mpDTitleVirDev;
333*cdf0e10cSrcweir 
334*cdf0e10cSrcweir public:
335*cdf0e10cSrcweir 							ImplStdBorderWindowView( ImplBorderWindow* pBorderWindow );
336*cdf0e10cSrcweir 							~ImplStdBorderWindowView();
337*cdf0e10cSrcweir 
338*cdf0e10cSrcweir 	virtual sal_Bool			MouseMove( const MouseEvent& rMEvt );
339*cdf0e10cSrcweir 	virtual sal_Bool			MouseButtonDown( const MouseEvent& rMEvt );
340*cdf0e10cSrcweir 	virtual sal_Bool			Tracking( const TrackingEvent& rTEvt );
341*cdf0e10cSrcweir 	virtual String  		RequestHelp( const Point& rPos, Rectangle& rHelpRect );
342*cdf0e10cSrcweir 	virtual Rectangle       GetMenuRect() const;
343*cdf0e10cSrcweir 
344*cdf0e10cSrcweir 	virtual void			Init( OutputDevice* pDev, long nWidth, long nHeight );
345*cdf0e10cSrcweir 	virtual void			GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder,
346*cdf0e10cSrcweir 									   sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const;
347*cdf0e10cSrcweir 	virtual long			CalcTitleWidth() const;
348*cdf0e10cSrcweir 	virtual void			DrawWindow( sal_uInt16 nDrawFlags, OutputDevice* pOutDev, const Point* pOffset );
349*cdf0e10cSrcweir };
350*cdf0e10cSrcweir 
351*cdf0e10cSrcweir 
352*cdf0e10cSrcweir #endif	// _SV_BRDWIN_HXX
353