From 5d463c719bb2881d63da68d0752e4086c265876d Mon Sep 17 00:00:00 2001 From: "Philipp Lohmann [pl]" Date: Mon, 24 Jan 2011 16:34:14 +0100 Subject: vcl2gnumake: #i116589# header cleanup: linux,solaris,macos --- vcl/inc/brdwin.hxx | 352 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 352 insertions(+) create mode 100644 vcl/inc/brdwin.hxx (limited to 'vcl/inc/brdwin.hxx') diff --git a/vcl/inc/brdwin.hxx b/vcl/inc/brdwin.hxx new file mode 100644 index 000000000000..bf76174150e2 --- /dev/null +++ b/vcl/inc/brdwin.hxx @@ -0,0 +1,352 @@ +/************************************************************************* + * + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * Copyright 2000, 2010 Oracle and/or its affiliates. + * + * OpenOffice.org - a multi-platform office productivity suite + * + * 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 + * + * for a copy of the LGPLv3 License. + * + ************************************************************************/ + +#ifndef _SV_BRDWIN_HXX +#define _SV_BRDWIN_HXX + +#include +#include + +class ImplBorderWindowView; + +// -------------------------- +// - ImplBorderWindow-Types - +// -------------------------- + +#define BORDERWINDOW_STYLE_OVERLAP ((USHORT)0x0001) +#define BORDERWINDOW_STYLE_BORDER ((USHORT)0x0002) +#define BORDERWINDOW_STYLE_FLOAT ((USHORT)0x0004) +#define BORDERWINDOW_STYLE_FRAME ((USHORT)0x0008) +#define BORDERWINDOW_STYLE_APP ((USHORT)0x0010) + +#define BORDERWINDOW_HITTEST_TITLE ((USHORT)0x0001) +#define BORDERWINDOW_HITTEST_LEFT ((USHORT)0x0002) +#define BORDERWINDOW_HITTEST_MENU ((USHORT)0x0004) +#define BORDERWINDOW_HITTEST_TOP ((USHORT)0x0008) +#define BORDERWINDOW_HITTEST_RIGHT ((USHORT)0x0010) +#define BORDERWINDOW_HITTEST_BOTTOM ((USHORT)0x0020) +#define BORDERWINDOW_HITTEST_TOPLEFT ((USHORT)0x0040) +#define BORDERWINDOW_HITTEST_TOPRIGHT ((USHORT)0x0080) +#define BORDERWINDOW_HITTEST_BOTTOMLEFT ((USHORT)0x0100) +#define BORDERWINDOW_HITTEST_BOTTOMRIGHT ((USHORT)0x0200) +#define BORDERWINDOW_HITTEST_CLOSE ((USHORT)0x0400) +#define BORDERWINDOW_HITTEST_ROLL ((USHORT)0x0800) +#define BORDERWINDOW_HITTEST_DOCK ((USHORT)0x1000) +#define BORDERWINDOW_HITTEST_HIDE ((USHORT)0x2000) +#define BORDERWINDOW_HITTEST_HELP ((USHORT)0x4000) +#define BORDERWINDOW_HITTEST_PIN ((USHORT)0x8000) + +#define BORDERWINDOW_DRAW_TITLE ((USHORT)0x0001) +#define BORDERWINDOW_DRAW_BORDER ((USHORT)0x0002) +#define BORDERWINDOW_DRAW_FRAME ((USHORT)0x0004) +#define BORDERWINDOW_DRAW_CLOSE ((USHORT)0x0008) +#define BORDERWINDOW_DRAW_ROLL ((USHORT)0x0010) +#define BORDERWINDOW_DRAW_DOCK ((USHORT)0x0020) +#define BORDERWINDOW_DRAW_HIDE ((USHORT)0x0040) +#define BORDERWINDOW_DRAW_HELP ((USHORT)0x0080) +#define BORDERWINDOW_DRAW_PIN ((USHORT)0x0100) +#define BORDERWINDOW_DRAW_MENU ((USHORT)0x0200) +#define BORDERWINDOW_DRAW_ALL (BORDERWINDOW_DRAW_TITLE | \ + BORDERWINDOW_DRAW_BORDER | \ + BORDERWINDOW_DRAW_FRAME | \ + BORDERWINDOW_DRAW_CLOSE | \ + BORDERWINDOW_DRAW_ROLL | \ + BORDERWINDOW_DRAW_DOCK | \ + BORDERWINDOW_DRAW_HIDE | \ + BORDERWINDOW_DRAW_HELP | \ + BORDERWINDOW_DRAW_PIN | \ + BORDERWINDOW_DRAW_MENU) + +#define BORDERWINDOW_TITLE_NORMAL ((USHORT)0x0001) +#define BORDERWINDOW_TITLE_SMALL ((USHORT)0x0002) +#define BORDERWINDOW_TITLE_TEAROFF ((USHORT)0x0004) +#define BORDERWINDOW_TITLE_NONE ((USHORT)0x0008) + +// -------------------- +// - ImplBorderWindow - +// -------------------- + +class ImplBorderWindow : public Window +{ + friend class Window; + friend class ImplBorderWindowView; + friend class ImplSmallBorderWindowView; + friend class ImplStdBorderWindowView; + +private: + ImplBorderWindowView* mpBorderView; + Window* mpMenuBarWindow; + long mnMinWidth; + long mnMinHeight; + long mnMaxWidth; + long mnMaxHeight; + long mnRollHeight; + long mnOrgMenuHeight; + USHORT mnTitleType; + USHORT mnBorderStyle; + BOOL mbFloatWindow; + BOOL mbSmallOutBorder; + BOOL mbFrameBorder; + BOOL mbPined; + BOOL mbRollUp; + BOOL mbMenuHide; + BOOL mbDockBtn; + BOOL mbHideBtn; + BOOL mbHelpBtn; + BOOL mbMenuBtn; + BOOL mbDisplayActive; + + using Window::ImplInit; + void ImplInit( Window* pParent, + WinBits nStyle, USHORT nTypeStyle, + SystemParentData* pParentData ); + void ImplInit( Window* pParent, + WinBits nStyle, USHORT nTypeStyle, + const ::com::sun::star::uno::Any& ); + + // Copy assignment is forbidden and not implemented. + ImplBorderWindow (const ImplBorderWindow &); + ImplBorderWindow& operator= (const ImplBorderWindow &); + +public: + ImplBorderWindow( Window* pParent, + SystemParentData* pParentData, + WinBits nStyle = 0, + USHORT nTypeStyle = 0 ); + ImplBorderWindow( Window* pParent, WinBits nStyle = 0, + USHORT nTypeStyle = 0 ); + ImplBorderWindow( Window* pParent, + WinBits nStyle, USHORT nTypeStyle, + const ::com::sun::star::uno::Any& ); + ~ImplBorderWindow(); + + virtual void MouseMove( const MouseEvent& rMEvt ); + virtual void MouseButtonDown( const MouseEvent& rMEvt ); + virtual void Tracking( const TrackingEvent& rTEvt ); + virtual void Paint( const Rectangle& rRect ); + virtual void Activate(); + virtual void Deactivate(); + virtual void Resize(); + virtual void RequestHelp( const HelpEvent& rHEvt ); + virtual void StateChanged( StateChangedType nType ); + virtual void DataChanged( const DataChangedEvent& rDCEvt ); + + void InitView(); + void UpdateView( BOOL bNewView, const Size& rNewOutSize ); + void InvalidateBorder(); + + using Window::Draw; + void Draw( const Rectangle& rRect, OutputDevice* pDev, const Point& rPos ); + + void SetDisplayActive( BOOL bActive ); + BOOL IsDisplayActive() const { return mbDisplayActive; } + void SetTitleType( USHORT nTitleType, const Size& rSize ); + void SetBorderStyle( USHORT nStyle ); + USHORT GetBorderStyle() const { return mnBorderStyle; } + void SetPin( BOOL bPin ); + void SetRollUp( BOOL bRollUp, const Size& rSize ); + void SetCloser(); + void SetDockButton( BOOL bDockButton ); + void SetHideButton( BOOL bHideButton ); + void SetHelpButton( BOOL bHelpButton ); + void SetMenuButton( BOOL bMenuButton ); + + void UpdateMenuHeight(); + void SetMenuBarWindow( Window* pWindow ); + void SetMenuBarMode( BOOL bHide ); + + void SetMinOutputSize( long nWidth, long nHeight ) + { mnMinWidth = nWidth; mnMinHeight = nHeight; } + void SetMaxOutputSize( long nWidth, long nHeight ) + { mnMaxWidth = nWidth; mnMaxHeight = nHeight; } + + void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder, + sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const; + long CalcTitleWidth() const; + + Rectangle GetMenuRect() const; +}; + +// ======================================================================= + +// ----------------------- +// - ImplBorderFrameData - +// ----------------------- + +struct ImplBorderFrameData +{ + ImplBorderWindow* mpBorderWindow; + OutputDevice* mpOutDev; + Rectangle maTitleRect; + Rectangle maPinRect; + Rectangle maCloseRect; + Rectangle maRollRect; + Rectangle maDockRect; + Rectangle maMenuRect; + Rectangle maHideRect; + Rectangle maHelpRect; + Point maMouseOff; + long mnWidth; + long mnHeight; + long mnTrackX; + long mnTrackY; + long mnTrackWidth; + long mnTrackHeight; + sal_Int32 mnLeftBorder; + sal_Int32 mnTopBorder; + sal_Int32 mnRightBorder; + sal_Int32 mnBottomBorder; + long mnNoTitleTop; + long mnBorderSize; + long mnTitleHeight; + long mnTitleOff; + USHORT mnHitTest; + USHORT mnPinState; + USHORT mnCloseState; + USHORT mnRollState; + USHORT mnDockState; + USHORT mnMenuState; + USHORT mnHideState; + USHORT mnHelpState; + USHORT mnTitleType; + BOOL mbFloatWindow; + BOOL mbDragFull; + BOOL mbTitleClipped; +}; + +// ======================================================================= + +// ------------------------ +// - ImplBorderWindowView - +// ------------------------ + +class ImplBorderWindowView +{ +public: + virtual ~ImplBorderWindowView(); + + virtual BOOL MouseMove( const MouseEvent& rMEvt ); + virtual BOOL MouseButtonDown( const MouseEvent& rMEvt ); + virtual BOOL Tracking( const TrackingEvent& rTEvt ); + virtual String RequestHelp( const Point& rPos, Rectangle& rHelpRect ); + + virtual void Init( OutputDevice* pDev, long nWidth, long nHeight ) = 0; + virtual void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder, + sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const = 0; + virtual long CalcTitleWidth() const = 0; + virtual void DrawWindow( USHORT nDrawFlags, OutputDevice* pOutDev = NULL, const Point* pOffset = NULL ) = 0; + virtual Rectangle GetMenuRect() const; + + void ImplInitTitle( ImplBorderFrameData* pData ); + USHORT ImplHitTest( ImplBorderFrameData* pData, const Point& rPos ); + BOOL ImplMouseMove( ImplBorderFrameData* pData, const MouseEvent& rMEvt ); + BOOL ImplMouseButtonDown( ImplBorderFrameData* pData, const MouseEvent& rMEvt ); + BOOL ImplTracking( ImplBorderFrameData* pData, const TrackingEvent& rTEvt ); + String ImplRequestHelp( ImplBorderFrameData* pData, const Point& rPos, Rectangle& rHelpRect ); + long ImplCalcTitleWidth( const ImplBorderFrameData* pData ) const; +}; + +// ======================================================================= + +// -------------------------- +// - ImplNoBorderWindowView - +// -------------------------- + +class ImplNoBorderWindowView : public ImplBorderWindowView +{ +public: + ImplNoBorderWindowView( ImplBorderWindow* pBorderWindow ); + + virtual void Init( OutputDevice* pDev, long nWidth, long nHeight ); + virtual void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder, + sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const; + virtual long CalcTitleWidth() const; + virtual void DrawWindow( USHORT nDrawFlags, OutputDevice* pOutDev, const Point* pOffset ); +}; + + +// ======================================================================= + +// ----------------------------- +// - ImplSmallBorderWindowView - +// ----------------------------- + +class ImplSmallBorderWindowView : public ImplBorderWindowView +{ + ImplBorderWindow* mpBorderWindow; + OutputDevice* mpOutDev; + long mnWidth; + long mnHeight; + sal_Int32 mnLeftBorder; + sal_Int32 mnTopBorder; + sal_Int32 mnRightBorder; + sal_Int32 mnBottomBorder; + bool mbNWFBorder; + +public: + ImplSmallBorderWindowView( ImplBorderWindow* pBorderWindow ); + + virtual void Init( OutputDevice* pOutDev, long nWidth, long nHeight ); + virtual void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder, + sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const; + virtual long CalcTitleWidth() const; + virtual void DrawWindow( USHORT nDrawFlags, OutputDevice* pOutDev, const Point* pOffset ); +}; + + +// ======================================================================= + +// --------------------------- +// - ImplStdBorderWindowView - +// --------------------------- + + +class ImplStdBorderWindowView : public ImplBorderWindowView +{ + ImplBorderFrameData maFrameData; + VirtualDevice* mpATitleVirDev; + VirtualDevice* mpDTitleVirDev; + +public: + ImplStdBorderWindowView( ImplBorderWindow* pBorderWindow ); + ~ImplStdBorderWindowView(); + + virtual BOOL MouseMove( const MouseEvent& rMEvt ); + virtual BOOL MouseButtonDown( const MouseEvent& rMEvt ); + virtual BOOL Tracking( const TrackingEvent& rTEvt ); + virtual String RequestHelp( const Point& rPos, Rectangle& rHelpRect ); + virtual Rectangle GetMenuRect() const; + + virtual void Init( OutputDevice* pDev, long nWidth, long nHeight ); + virtual void GetBorder( sal_Int32& rLeftBorder, sal_Int32& rTopBorder, + sal_Int32& rRightBorder, sal_Int32& rBottomBorder ) const; + virtual long CalcTitleWidth() const; + virtual void DrawWindow( USHORT nDrawFlags, OutputDevice* pOutDev, const Point* pOffset ); +}; + + +#endif // _SV_BRDWIN_HXX -- cgit v1.2.3