xref: /aoo4110/main/vcl/inc/unx/gtk/gtkgdi.hxx (revision b1cdbd2c)
1*b1cdbd2cSJim Jagielski /**************************************************************
2*b1cdbd2cSJim Jagielski  *
3*b1cdbd2cSJim Jagielski  * Licensed to the Apache Software Foundation (ASF) under one
4*b1cdbd2cSJim Jagielski  * or more contributor license agreements.  See the NOTICE file
5*b1cdbd2cSJim Jagielski  * distributed with this work for additional information
6*b1cdbd2cSJim Jagielski  * regarding copyright ownership.  The ASF licenses this file
7*b1cdbd2cSJim Jagielski  * to you under the Apache License, Version 2.0 (the
8*b1cdbd2cSJim Jagielski  * "License"); you may not use this file except in compliance
9*b1cdbd2cSJim Jagielski  * with the License.  You may obtain a copy of the License at
10*b1cdbd2cSJim Jagielski  *
11*b1cdbd2cSJim Jagielski  *   http://www.apache.org/licenses/LICENSE-2.0
12*b1cdbd2cSJim Jagielski  *
13*b1cdbd2cSJim Jagielski  * Unless required by applicable law or agreed to in writing,
14*b1cdbd2cSJim Jagielski  * software distributed under the License is distributed on an
15*b1cdbd2cSJim Jagielski  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
16*b1cdbd2cSJim Jagielski  * KIND, either express or implied.  See the License for the
17*b1cdbd2cSJim Jagielski  * specific language governing permissions and limitations
18*b1cdbd2cSJim Jagielski  * under the License.
19*b1cdbd2cSJim Jagielski  *
20*b1cdbd2cSJim Jagielski  *************************************************************/
21*b1cdbd2cSJim Jagielski 
22*b1cdbd2cSJim Jagielski 
23*b1cdbd2cSJim Jagielski 
24*b1cdbd2cSJim Jagielski #ifndef _VCL_GTKGDI_HXX
25*b1cdbd2cSJim Jagielski #define _VCL_GTKGDI_HXX
26*b1cdbd2cSJim Jagielski 
27*b1cdbd2cSJim Jagielski #include <tools/prex.h>
28*b1cdbd2cSJim Jagielski #include <gtk/gtk.h>
29*b1cdbd2cSJim Jagielski #include <gdk/gdkx.h>
30*b1cdbd2cSJim Jagielski #include <gdk/gdkkeysyms.h>
31*b1cdbd2cSJim Jagielski #include <tools/postx.h>
32*b1cdbd2cSJim Jagielski 
33*b1cdbd2cSJim Jagielski #include <unx/salgdi.h>
34*b1cdbd2cSJim Jagielski 
35*b1cdbd2cSJim Jagielski class GtkSalGraphics : public X11SalGraphics
36*b1cdbd2cSJim Jagielski {
37*b1cdbd2cSJim Jagielski     GtkWidget           *m_pWindow;
38*b1cdbd2cSJim Jagielski     Region               m_aClipRegion;
39*b1cdbd2cSJim Jagielski 
40*b1cdbd2cSJim Jagielski public:
GtkSalGraphics(GtkWidget * window)41*b1cdbd2cSJim Jagielski                         GtkSalGraphics( GtkWidget *window )
42*b1cdbd2cSJim Jagielski                             : m_pWindow( window ),
43*b1cdbd2cSJim Jagielski                               m_aClipRegion(true)
44*b1cdbd2cSJim Jagielski                               {}
45*b1cdbd2cSJim Jagielski     virtual             ~GtkSalGraphics();
46*b1cdbd2cSJim Jagielski 
GetGtkWidget() const47*b1cdbd2cSJim Jagielski     inline GtkWidget*  GetGtkWidget() const { return m_pWindow; }
GetGdkWindow() const48*b1cdbd2cSJim Jagielski     inline GdkWindow*  GetGdkWindow() const { return m_pWindow->window; }
GetGtkFrame() const49*b1cdbd2cSJim Jagielski     inline GtkSalFrame* GetGtkFrame() const { return static_cast<GtkSalFrame*>(m_pFrame); }
SetWindow(GtkWidget * window)50*b1cdbd2cSJim Jagielski     void SetWindow( GtkWidget* window ) { m_pWindow = window; }
51*b1cdbd2cSJim Jagielski 
52*b1cdbd2cSJim Jagielski 
53*b1cdbd2cSJim Jagielski     // will be set when UI theme was changed
54*b1cdbd2cSJim Jagielski     static  sal_Bool        bThemeChanged;
55*b1cdbd2cSJim Jagielski     static  sal_Bool        bNeedPixmapPaint;
56*b1cdbd2cSJim Jagielski     static  sal_Bool        bGlobalNeedPixmapPaint;
57*b1cdbd2cSJim Jagielski     static  sal_Bool        bToolbarGripWorkaround;
58*b1cdbd2cSJim Jagielski     static  sal_Bool        bNeedButtonStyleAsEditBackgroundWorkaround;
59*b1cdbd2cSJim Jagielski 
60*b1cdbd2cSJim Jagielski     // native widget methods
61*b1cdbd2cSJim Jagielski     virtual sal_Bool        IsNativeControlSupported( ControlType nType, ControlPart nPart );
62*b1cdbd2cSJim Jagielski     virtual sal_Bool        hitTestNativeControl( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion,
63*b1cdbd2cSJim Jagielski                                               const Point& aPos, sal_Bool& rIsInside );
64*b1cdbd2cSJim Jagielski     virtual sal_Bool        drawNativeControl( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion,
65*b1cdbd2cSJim Jagielski                                            ControlState nState, const ImplControlValue& aValue,
66*b1cdbd2cSJim Jagielski                                            const rtl::OUString& rCaption );
67*b1cdbd2cSJim Jagielski     virtual sal_Bool        drawNativeControlText( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion,
68*b1cdbd2cSJim Jagielski                                                ControlState nState, const ImplControlValue& aValue,
69*b1cdbd2cSJim Jagielski                                                const rtl::OUString& rCaption );
70*b1cdbd2cSJim Jagielski     virtual sal_Bool        getNativeControlRegion( ControlType nType, ControlPart nPart, const Rectangle& rControlRegion, ControlState nState,
71*b1cdbd2cSJim Jagielski                                                 const ImplControlValue& aValue, const rtl::OUString& rCaption,
72*b1cdbd2cSJim Jagielski                                                 Rectangle &rNativeBoundingRegion, Rectangle &rNativeContentRegion );
73*b1cdbd2cSJim Jagielski 
74*b1cdbd2cSJim Jagielski     //helper methods for frame's UpdateSettings
75*b1cdbd2cSJim Jagielski     void updateSettings( AllSettings& rSettings );
76*b1cdbd2cSJim Jagielski 
77*b1cdbd2cSJim Jagielski     virtual bool            setClipRegion( const Region& );
78*b1cdbd2cSJim Jagielski     virtual void			ResetClipRegion();
79*b1cdbd2cSJim Jagielski 
80*b1cdbd2cSJim Jagielski     // some themes set the background pixmap of our window EVERY time
81*b1cdbd2cSJim Jagielski     // a control is painted; but presentation effects need
82*b1cdbd2cSJim Jagielski     // the background set to None; workaround: set the background
83*b1cdbd2cSJim Jagielski     // before copyBits
84*b1cdbd2cSJim Jagielski     virtual void			copyBits( const SalTwoRect& rPosAry,
85*b1cdbd2cSJim Jagielski                                       SalGraphics* pSrcGraphics );
86*b1cdbd2cSJim Jagielski 
87*b1cdbd2cSJim Jagielski protected:
88*b1cdbd2cSJim Jagielski     typedef std::list< Rectangle > clipList;
89*b1cdbd2cSJim Jagielski 
90*b1cdbd2cSJim Jagielski     GdkPixmap* NWGetPixmapFromScreen( Rectangle srcRect );
91*b1cdbd2cSJim Jagielski     sal_Bool NWRenderPixmapToScreen( GdkPixmap*	pPixmap, Rectangle dstRect );
92*b1cdbd2cSJim Jagielski 
93*b1cdbd2cSJim Jagielski     sal_Bool NWPaintGTKButton( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
94*b1cdbd2cSJim Jagielski                            const Rectangle& rControlRectangle,
95*b1cdbd2cSJim Jagielski                            const clipList& rClipList,
96*b1cdbd2cSJim Jagielski                            ControlState nState, const ImplControlValue& aValue,
97*b1cdbd2cSJim Jagielski                            const OUString& rCaption );
98*b1cdbd2cSJim Jagielski     sal_Bool NWPaintGTKRadio( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
99*b1cdbd2cSJim Jagielski 						  const Rectangle& rControlRectangle,
100*b1cdbd2cSJim Jagielski                           const clipList& rClipList,
101*b1cdbd2cSJim Jagielski                           ControlState nState, const ImplControlValue& aValue,
102*b1cdbd2cSJim Jagielski 						  const OUString& rCaption );
103*b1cdbd2cSJim Jagielski     sal_Bool NWPaintGTKCheck( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
104*b1cdbd2cSJim Jagielski 						  const Rectangle& rControlRectangle,
105*b1cdbd2cSJim Jagielski                           const clipList& rClipList,
106*b1cdbd2cSJim Jagielski                           ControlState nState, const ImplControlValue& aValue,
107*b1cdbd2cSJim Jagielski                           const OUString& rCaption );
108*b1cdbd2cSJim Jagielski     sal_Bool NWPaintGTKScrollbar( ControlType nType, ControlPart nPart,
109*b1cdbd2cSJim Jagielski 							  const Rectangle& rControlRectangle,
110*b1cdbd2cSJim Jagielski                               const clipList& rClipList,
111*b1cdbd2cSJim Jagielski                               ControlState nState, const ImplControlValue& aValue,
112*b1cdbd2cSJim Jagielski                               const OUString& rCaption );
113*b1cdbd2cSJim Jagielski     sal_Bool NWPaintGTKEditBox( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
114*b1cdbd2cSJim Jagielski 							const Rectangle& rControlRectangle,
115*b1cdbd2cSJim Jagielski                             const clipList& rClipList,
116*b1cdbd2cSJim Jagielski                             ControlState nState, const ImplControlValue& aValue,
117*b1cdbd2cSJim Jagielski 							const OUString& rCaption );
118*b1cdbd2cSJim Jagielski     sal_Bool NWPaintGTKSpinBox( ControlType nType, ControlPart nPart,
119*b1cdbd2cSJim Jagielski 							const Rectangle& rControlRectangle,
120*b1cdbd2cSJim Jagielski                             const clipList& rClipList,
121*b1cdbd2cSJim Jagielski                             ControlState nState, const ImplControlValue& aValue,
122*b1cdbd2cSJim Jagielski 							const OUString& rCaption );
123*b1cdbd2cSJim Jagielski     sal_Bool NWPaintGTKComboBox( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
124*b1cdbd2cSJim Jagielski 							 const Rectangle& rControlRectangle,
125*b1cdbd2cSJim Jagielski                              const clipList& rClipList,
126*b1cdbd2cSJim Jagielski                              ControlState nState, const ImplControlValue& aValue,
127*b1cdbd2cSJim Jagielski                              const OUString& rCaption );
128*b1cdbd2cSJim Jagielski     sal_Bool NWPaintGTKTabItem( ControlType nType, ControlPart nPart,
129*b1cdbd2cSJim Jagielski 							const Rectangle& rControlRectangle,
130*b1cdbd2cSJim Jagielski                             const clipList& rClipList,
131*b1cdbd2cSJim Jagielski                             ControlState nState, const ImplControlValue& aValue,
132*b1cdbd2cSJim Jagielski 							const OUString& rCaption );
133*b1cdbd2cSJim Jagielski     sal_Bool NWPaintGTKListBox( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
134*b1cdbd2cSJim Jagielski 							const Rectangle& rControlRectangle,
135*b1cdbd2cSJim Jagielski                             const clipList& rClipList,
136*b1cdbd2cSJim Jagielski                             ControlState nState, const ImplControlValue& aValue,
137*b1cdbd2cSJim Jagielski 							const OUString& rCaption );
138*b1cdbd2cSJim Jagielski 
139*b1cdbd2cSJim Jagielski     sal_Bool NWPaintGTKToolbar( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
140*b1cdbd2cSJim Jagielski 							const Rectangle& rControlRectangle,
141*b1cdbd2cSJim Jagielski                             const clipList& rClipList,
142*b1cdbd2cSJim Jagielski                             ControlState nState, const ImplControlValue& aValue,
143*b1cdbd2cSJim Jagielski 							const OUString& rCaption );
144*b1cdbd2cSJim Jagielski     sal_Bool NWPaintGTKMenubar( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
145*b1cdbd2cSJim Jagielski 							const Rectangle& rControlRectangle,
146*b1cdbd2cSJim Jagielski                             const clipList& rClipList,
147*b1cdbd2cSJim Jagielski                             ControlState nState, const ImplControlValue& aValue,
148*b1cdbd2cSJim Jagielski 							const OUString& rCaption );
149*b1cdbd2cSJim Jagielski     sal_Bool NWPaintGTKPopupMenu( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
150*b1cdbd2cSJim Jagielski                               const Rectangle& rControlRectangle,
151*b1cdbd2cSJim Jagielski                               const clipList& rClipList,
152*b1cdbd2cSJim Jagielski                               ControlState nState, const ImplControlValue& aValue,
153*b1cdbd2cSJim Jagielski                               const OUString& rCaption );
154*b1cdbd2cSJim Jagielski     sal_Bool NWPaintGTKTooltip( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
155*b1cdbd2cSJim Jagielski                             const Rectangle& rControlRectangle,
156*b1cdbd2cSJim Jagielski                             const clipList& rClipList,
157*b1cdbd2cSJim Jagielski                             ControlState nState, const ImplControlValue& aValue,
158*b1cdbd2cSJim Jagielski                             const OUString& rCaption );
159*b1cdbd2cSJim Jagielski     sal_Bool NWPaintGTKProgress( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
160*b1cdbd2cSJim Jagielski                             const Rectangle& rControlRectangle,
161*b1cdbd2cSJim Jagielski                             const clipList& rClipList,
162*b1cdbd2cSJim Jagielski                             ControlState nState, const ImplControlValue& aValue,
163*b1cdbd2cSJim Jagielski                             const OUString& rCaption );
164*b1cdbd2cSJim Jagielski     sal_Bool NWPaintGTKSlider( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
165*b1cdbd2cSJim Jagielski                            const Rectangle& rControlRectangle,
166*b1cdbd2cSJim Jagielski                            const clipList& rClipList,
167*b1cdbd2cSJim Jagielski                            ControlState nState, const ImplControlValue& aValue,
168*b1cdbd2cSJim Jagielski                            const OUString& rCaption );
169*b1cdbd2cSJim Jagielski     sal_Bool NWPaintGTKListNode( GdkDrawable* gdkDrawable, ControlType nType, ControlPart nPart,
170*b1cdbd2cSJim Jagielski                             const Rectangle& rControlRectangle,
171*b1cdbd2cSJim Jagielski                             const clipList& rClipList,
172*b1cdbd2cSJim Jagielski                             ControlState nState, const ImplControlValue& aValue,
173*b1cdbd2cSJim Jagielski                             const OUString& rCaption );
174*b1cdbd2cSJim Jagielski };
175*b1cdbd2cSJim Jagielski 
176*b1cdbd2cSJim Jagielski #endif // _VCL_GTKGDI_HXX
177