supporting content size scaling (retina display)
[wxWidgets.git] / include / wx / osx / iphone / private.h
1 /////////////////////////////////////////////////////////////////////////////
2 // Name: wx/osx/iphone/private.h
3 // Purpose: Private declarations: as this header is only included by
4 // wxWidgets itself, it may contain identifiers which don't start
5 // with "wx".
6 // Author: Stefan Csomor
7 // Modified by:
8 // Created: 1998-01-01
9 // RCS-ID: $Id: private.h 53819 2008-05-29 14:11:45Z SC $
10 // Copyright: (c) Stefan Csomor
11 // Licence: wxWindows licence
12 /////////////////////////////////////////////////////////////////////////////
13
14 #ifndef _WX_PRIVATE_IPHONE_H_
15 #define _WX_PRIVATE_IPHONE_H_
16
17 #ifdef __OBJC__
18 #import <UIKit/UIKit.h>
19 #endif
20
21 #if wxUSE_GUI
22
23 OSStatus WXDLLIMPEXP_CORE wxMacDrawCGImage(
24 CGContextRef inContext,
25 const CGRect * inBounds,
26 CGImageRef inImage) ;
27
28 WX_UIImage WXDLLIMPEXP_CORE wxOSXGetUIImageFromCGImage( CGImageRef image );
29 wxBitmap WXDLLIMPEXP_CORE wxOSXCreateSystemBitmap(const wxString& id, const wxString &client, const wxSize& size);
30
31 class WXDLLIMPEXP_CORE wxWidgetIPhoneImpl : public wxWidgetImpl
32 {
33 public :
34 wxWidgetIPhoneImpl( wxWindowMac* peer , WXWidget w, bool isRootControl = false ) ;
35 wxWidgetIPhoneImpl() ;
36 ~wxWidgetIPhoneImpl();
37
38 void Init();
39
40 virtual bool IsVisible() const ;
41 virtual void SetVisibility( bool visible );
42
43 virtual void Raise();
44
45 virtual void Lower();
46
47 virtual void ScrollRect( const wxRect *rect, int dx, int dy );
48
49 virtual WXWidget GetWXWidget() const { return m_osxView; }
50
51 virtual void SetBackgroundColour( const wxColour& col ) ;
52 virtual bool SetBackgroundStyle(wxBackgroundStyle style) ;
53
54 virtual void GetContentArea( int &left , int &top , int &width , int &height ) const;
55 virtual void Move(int x, int y, int width, int height);
56 virtual void GetPosition( int &x, int &y ) const;
57 virtual void GetSize( int &width, int &height ) const;
58 virtual void SetControlSize( wxWindowVariant variant );
59 virtual float GetContentScaleFactor() const ;
60
61 virtual void SetNeedsDisplay( const wxRect* where = NULL );
62 virtual bool GetNeedsDisplay() const;
63
64 virtual bool CanFocus() const;
65 // return true if successful
66 virtual bool SetFocus();
67 virtual bool HasFocus() const;
68
69 void RemoveFromParent();
70 void Embed( wxWidgetImpl *parent );
71
72 void SetDefaultButton( bool isDefault );
73 void PerformClick();
74 virtual void SetLabel(const wxString& title, wxFontEncoding encoding);
75
76 void SetCursor( const wxCursor & cursor );
77 void CaptureMouse();
78 void ReleaseMouse();
79
80 wxInt32 GetValue() const;
81 void SetValue( wxInt32 v );
82
83 virtual wxBitmap GetBitmap() const;
84 virtual void SetBitmap( const wxBitmap& bitmap );
85 virtual void SetBitmapPosition( wxDirection dir );
86
87 void SetupTabs( const wxNotebook &notebook );
88 void GetBestRect( wxRect *r ) const;
89 bool IsEnabled() const;
90 void Enable( bool enable );
91 bool ButtonClickDidStateChange() { return true ;}
92 void SetMinimum( wxInt32 v );
93 void SetMaximum( wxInt32 v );
94 wxInt32 GetMinimum() const;
95 wxInt32 GetMaximum() const;
96 void PulseGauge();
97 void SetScrollThumb( wxInt32 value, wxInt32 thumbSize );
98
99 void SetFont( const wxFont & font , const wxColour& foreground , long windowStyle, bool ignoreBlack = true );
100
101 void InstallEventHandler( WXWidget control = NULL );
102
103 virtual void DoNotifyFocusEvent(bool receivedFocus, wxWidgetImpl* otherWindow);
104
105 // thunk connected calls
106
107 virtual void drawRect(CGRect* rect, WXWidget slf, void* _cmd);
108 virtual void touchEvent(WX_NSSet touches, WX_UIEvent event, WXWidget slf, void* _cmd);
109 virtual bool becomeFirstResponder(WXWidget slf, void* _cmd);
110 virtual bool resignFirstResponder(WXWidget slf, void* _cmd);
111
112 // action
113
114 virtual void controlAction(void* sender, wxUint32 controlEvent, WX_UIEvent rawEvent);
115 virtual void controlTextDidChange();
116 protected:
117 WXWidget m_osxView;
118 DECLARE_DYNAMIC_CLASS_NO_COPY(wxWidgetIPhoneImpl)
119 };
120
121 class wxNonOwnedWindowIPhoneImpl : public wxNonOwnedWindowImpl
122 {
123 public :
124 wxNonOwnedWindowIPhoneImpl( wxNonOwnedWindow* nonownedwnd) ;
125 wxNonOwnedWindowIPhoneImpl();
126
127 virtual ~wxNonOwnedWindowIPhoneImpl();
128
129 virtual void WillBeDestroyed() ;
130 void Create( wxWindow* parent, const wxPoint& pos, const wxSize& size,
131 long style, long extraStyle, const wxString& name ) ;
132 void Create( wxWindow* parent, WXWindow nativeWindow );
133
134 WXWindow GetWXWindow() const;
135 void Raise();
136 void Lower();
137 bool Show(bool show);
138 bool ShowWithEffect(bool show, wxShowEffect effect, unsigned timeout);
139
140 void Update();
141 bool SetTransparent(wxByte alpha);
142 bool SetBackgroundColour(const wxColour& col );
143 void SetExtraStyle( long exStyle );
144 bool SetBackgroundStyle(wxBackgroundStyle style);
145 bool CanSetTransparent();
146
147 void MoveWindow(int x, int y, int width, int height);
148 void GetPosition( int &x, int &y ) const;
149 void GetSize( int &width, int &height ) const;
150
151 void GetContentArea( int &left , int &top , int &width , int &height ) const;
152 bool SetShape(const wxRegion& region);
153
154 virtual void SetTitle( const wxString& title, wxFontEncoding encoding ) ;
155
156 virtual bool IsMaximized() const;
157
158 virtual bool IsIconized() const;
159
160 virtual void Iconize( bool iconize );
161
162 virtual void Maximize(bool maximize);
163
164 virtual bool IsFullScreen() const;
165
166 virtual bool ShowFullScreen(bool show, long style);
167
168 virtual void RequestUserAttention(int flags);
169
170 virtual void ScreenToWindow( int *x, int *y );
171
172 virtual void WindowToScreen( int *x, int *y );
173
174 // FIXME: Does iPhone have a concept of inactive windows?
175 virtual bool IsActive() { return true; }
176
177 wxNonOwnedWindow* GetWXPeer() { return m_wxPeer; }
178
179 virtual bool InitialShowEventSent() { return m_initialShowSent; }
180 protected :
181 WX_UIWindow m_macWindow;
182 void * m_macFullScreenData ;
183 bool m_initialShowSent;
184 DECLARE_DYNAMIC_CLASS_NO_COPY(wxNonOwnedWindowIPhoneImpl)
185 };
186
187 #ifdef __OBJC__
188
189 WXDLLIMPEXP_CORE CGRect wxToNSRect( UIView* parent, const wxRect& r );
190 WXDLLIMPEXP_CORE wxRect wxFromNSRect( UIView* parent, const CGRect& rect );
191 WXDLLIMPEXP_CORE CGPoint wxToNSPoint( UIView* parent, const wxPoint& p );
192 WXDLLIMPEXP_CORE wxPoint wxFromNSPoint( UIView* parent, const CGPoint& p );
193
194 CGRect WXDLLIMPEXP_CORE wxOSXGetFrameForControl( wxWindowMac* window , const wxPoint& pos , const wxSize &size ,
195 bool adjustForOrigin = true );
196
197 @interface wxUIButton : UIButton
198 {
199 }
200
201 @end
202
203 @interface wxUIView : UIView
204 {
205 }
206
207 @end // wxUIView
208
209
210 void WXDLLIMPEXP_CORE wxOSXIPhoneClassAddWXMethods(Class c);
211
212 #endif
213
214 #endif // wxUSE_GUI
215
216 #endif
217 // _WX_PRIVATE_IPHONE_H_