Introduce an isCSSAnimated flag on RenderElement for performance
[WebKit-https.git] / Source / WebCore / platform / ios / wak / WKView.h
1 /*
2  * Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
3  *
4  * Redistribution and use in source and binary forms, with or without
5  * modification, are permitted provided that the following conditions
6  * are met:
7  * 1. Redistributions of source code must retain the above copyright
8  *    notice, this list of conditions and the following disclaimer.
9  * 2. Redistributions in binary form must reproduce the above copyright
10  *    notice, this list of conditions and the following disclaimer in the
11  *    documentation and/or other materials provided with the distribution.
12  *
13  * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #ifndef WKView_h
27 #define WKView_h
28
29 #if TARGET_OS_IPHONE
30
31 #import "WKUtilities.h"
32 #import <CoreGraphics/CoreGraphics.h>
33
34 #ifdef __cplusplus
35 extern "C" {
36 #endif
37
38 @class WAKWindow;
39
40 enum {
41     NSViewNotSizable = 0,
42     NSViewMinXMargin = 1,
43     NSViewWidthSizable = 2,
44     NSViewMaxXMargin = 4,
45     NSViewMinYMargin = 8,
46     NSViewHeightSizable = 16,
47     NSViewMaxYMargin = 32
48 };    
49     
50 typedef enum {
51     WKViewNotificationViewDidMoveToWindow,
52     WKViewNotificationViewFrameSizeChanged,
53     WKViewNotificationViewDidScroll
54 } WKViewNotificationType;
55
56 typedef enum {
57     WKViewResponderAcceptsFirstResponder,
58     WKViewResponderBecomeFirstResponder,
59     WKViewResponderResignFirstResponder,
60 } WKViewResponderCallbackType;
61
62 typedef void (*WKViewDrawCallback)(WKViewRef view, CGRect dirtyRect, void *userInfo); 
63 typedef void (*WKViewNotificationCallback)(WKViewRef view, WKViewNotificationType type, void *userInfo);
64 typedef bool (*WKViewResponderCallback)(WKViewRef view, WKViewResponderCallbackType type, void *userInfo);
65 typedef void (*WKViewWillRemoveSubviewCallback)(WKViewRef view, WKViewRef subview);
66 typedef void (*WKViewInvalidateGStateCallback)(WKViewRef view);
67
68 typedef struct _WKViewContext {
69     WKViewNotificationCallback notificationCallback;
70     void *notificationUserInfo;
71     WKViewResponderCallback responderCallback;
72     void *responderUserInfo;
73     WKViewWillRemoveSubviewCallback willRemoveSubviewCallback;
74     WKViewInvalidateGStateCallback invalidateGStateCallback;
75 } WKViewContext;
76
77 struct _WKView {
78     WKObject isa;
79     
80     WKViewContext *context;
81     
82     __unsafe_unretained WAKWindow *window;
83
84     WKViewRef superview;
85     CFMutableArrayRef subviews;
86
87     CGPoint origin;
88     CGRect bounds;
89     
90     unsigned int autoresizingMask;
91     
92     float scale;
93
94     // This is really a WAKView.
95     void *wrapper;
96 };
97
98 extern WKClassInfo WKViewClassInfo;
99
100 WEBCORE_EXPORT WKViewRef WKViewCreateWithFrame (CGRect rect, WKViewContext *context);
101 void WKViewInitialize (WKViewRef view, CGRect rect, WKViewContext *context);
102
103 void WKViewSetViewContext (WKViewRef view, WKViewContext *context);
104 void WKViewGetViewContext (WKViewRef view, WKViewContext *context);
105
106 WEBCORE_EXPORT CGRect WKViewGetBounds (WKViewRef view);
107
108 WEBCORE_EXPORT void WKViewSetFrameOrigin (WKViewRef view, CGPoint newPoint);
109 WEBCORE_EXPORT void WKViewSetFrameSize (WKViewRef view, CGSize newSize);
110 void WKViewSetBoundsOrigin(WKViewRef view, CGPoint newOrigin);
111 void WKViewSetBoundsSize (WKViewRef view, CGSize newSize);
112
113 WEBCORE_EXPORT CGRect WKViewGetFrame (WKViewRef view);
114
115 WEBCORE_EXPORT void WKViewSetScale (WKViewRef view, float scale);
116 WEBCORE_EXPORT float WKViewGetScale (WKViewRef view);
117 CGAffineTransform _WKViewGetTransform(WKViewRef view);
118
119 WEBCORE_EXPORT WAKWindow *WKViewGetWindow (WKViewRef view);
120
121 CFArrayRef WKViewGetSubviews (WKViewRef view);
122
123 WKViewRef WKViewGetSuperview (WKViewRef view);
124
125 WEBCORE_EXPORT void WKViewAddSubview (WKViewRef view, WKViewRef subview);
126 WEBCORE_EXPORT void WKViewRemoveFromSuperview (WKViewRef view);
127
128 CGPoint WKViewConvertPointToSuperview (WKViewRef view, CGPoint aPoint);
129 CGPoint WKViewConvertPointFromSuperview (WKViewRef view, CGPoint aPoint);
130 CGPoint WKViewConvertPointToBase(WKViewRef view, CGPoint aPoint);
131 CGPoint WKViewConvertPointFromBase(WKViewRef view, CGPoint aPoint);
132
133 CGRect WKViewConvertRectToSuperview (WKViewRef view, CGRect aRect);
134 CGRect WKViewConvertRectFromSuperview (WKViewRef view, CGRect aRect);
135 WEBCORE_EXPORT CGRect WKViewConvertRectToBase (WKViewRef view, CGRect r);
136 WEBCORE_EXPORT CGRect WKViewConvertRectFromBase (WKViewRef view, CGRect aRect);
137
138 CGRect WKViewGetVisibleRect (WKViewRef view);
139
140 WKViewRef WKViewFirstChild (WKViewRef view);
141 WKViewRef WKViewNextSibling (WKViewRef view);
142 WEBCORE_EXPORT WKViewRef WKViewTraverseNext (WKViewRef view);
143
144 WEBCORE_EXPORT bool WKViewAcceptsFirstResponder (WKViewRef view);
145 WEBCORE_EXPORT bool WKViewBecomeFirstResponder (WKViewRef view);
146 WEBCORE_EXPORT bool WKViewResignFirstResponder (WKViewRef view);
147
148 unsigned int WKViewGetAutoresizingMask(WKViewRef view);
149 void WKViewSetAutoresizingMask (WKViewRef view, unsigned int mask);
150
151 void WKViewScrollToRect(WKViewRef view, CGRect rect);
152
153 #ifdef __cplusplus
154 }
155 #endif
156
157 #endif // TARGET_OS_IPHONE
158
159 #endif // WKView_h