WebCore: For continuous scrolling devices on the Mac (trackpads and Mighty/Magic
[WebKit-https.git] / WebKitLibraries / WebKitSystemInterface.h
1 /*      
2     WebKitSystemInterface.h
3     Copyright (C) 2005, 2006, 2007, 2008, 2009 Apple Inc. All rights reserved.
4
5     Public header file.
6 */
7
8 #import <Cocoa/Cocoa.h>
9 #import <Carbon/Carbon.h>
10
11 @class QTMovie;
12 @class QTMovieView;
13
14 #ifdef __cplusplus
15 extern "C" {
16 #endif
17
18 typedef enum {
19     WKCertificateParseResultSucceeded  = 0,
20     WKCertificateParseResultFailed     = 1,
21     WKCertificateParseResultPKCS7      = 2,
22 } WKCertificateParseResult;
23
24 CFStringRef WKCopyCFLocalizationPreferredName(CFStringRef localization);
25 CFStringRef WKSignedPublicKeyAndChallengeString(unsigned keySize, CFStringRef challenge, CFStringRef keyDescription);
26 WKCertificateParseResult WKAddCertificatesToKeychainFromData(const void *bytes, unsigned length);
27
28 NSString *WKGetPreferredExtensionForMIMEType(NSString *type);
29 NSArray *WKGetExtensionsForMIMEType(NSString *type);
30 NSString *WKGetMIMETypeForExtension(NSString *extension);
31
32 NSDate *WKGetNSURLResponseLastModifiedDate(NSURLResponse *response);
33 NSTimeInterval WKGetNSURLResponseFreshnessLifetime(NSURLResponse *response);
34
35 CFStringEncoding WKGetWebDefaultCFStringEncoding(void);
36
37 void WKSetMetadataURL(NSString *URLString, NSString *referrer, NSString *path);
38 void WKSetNSURLConnectionDefersCallbacks(NSURLConnection *connection, BOOL defers);
39
40 void WKShowKeyAndMain(void);
41 #ifndef __LP64__
42 OSStatus WKSyncWindowWithCGAfterMove(WindowRef);
43 unsigned WKCarbonWindowMask(void);
44 void *WKGetNativeWindowFromWindowRef(WindowRef);
45 OSType WKCarbonWindowPropertyCreator(void);
46 OSType WKCarbonWindowPropertyTag(void);
47 #endif
48
49 typedef id WKNSURLConnectionDelegateProxyPtr;
50
51 WKNSURLConnectionDelegateProxyPtr WKCreateNSURLConnectionDelegateProxy(void);
52
53 void WKDisableCGDeferredUpdates(void);
54
55 Class WKNSURLProtocolClassForRequest(NSURLRequest *request);
56 void WKSetNSURLRequestShouldContentSniff(NSMutableURLRequest *request, BOOL shouldContentSniff);
57
58 unsigned WKGetNSAutoreleasePoolCount(void);
59
60 void WKAdvanceDefaultButtonPulseAnimation(NSButtonCell *button);
61
62 NSString *WKMouseMovedNotification(void);
63 NSString *WKWindowWillOrderOnScreenNotification(void);
64 void WKSetNSWindowShouldPostEventNotifications(NSWindow *window, BOOL post);
65
66 CFTypeID WKGetAXTextMarkerTypeID(void);
67 CFTypeID WKGetAXTextMarkerRangeTypeID(void);
68 CFTypeRef WKCreateAXTextMarker(const void *bytes, size_t len);
69 BOOL WKGetBytesFromAXTextMarker(CFTypeRef textMarker, void *bytes, size_t length);
70 CFTypeRef WKCreateAXTextMarkerRange(CFTypeRef start, CFTypeRef end);
71 CFTypeRef WKCopyAXTextMarkerRangeStart(CFTypeRef range);
72 CFTypeRef WKCopyAXTextMarkerRangeEnd(CFTypeRef range);
73 void WKAccessibilityHandleFocusChanged(void);
74 AXUIElementRef WKCreateAXUIElementRef(id element);
75 void WKUnregisterUniqueIdForElement(id element);
76
77 void WKSetUpFontCache(void);
78
79 void WKSignalCFReadStreamEnd(CFReadStreamRef stream);
80 void WKSignalCFReadStreamHasBytes(CFReadStreamRef stream);
81 void WKSignalCFReadStreamError(CFReadStreamRef stream, CFStreamError *error);
82
83 CFReadStreamRef WKCreateCustomCFReadStream(void *(*formCreate)(CFReadStreamRef, void *), 
84     void (*formFinalize)(CFReadStreamRef, void *), 
85     Boolean (*formOpen)(CFReadStreamRef, CFStreamError *, Boolean *, void *), 
86     CFIndex (*formRead)(CFReadStreamRef, UInt8 *, CFIndex, CFStreamError *, Boolean *, void *), 
87     Boolean (*formCanRead)(CFReadStreamRef, void *), 
88     void (*formClose)(CFReadStreamRef, void *), 
89     void (*formSchedule)(CFReadStreamRef, CFRunLoopRef, CFStringRef, void *), 
90     void (*formUnschedule)(CFReadStreamRef, CFRunLoopRef, CFStringRef, void *),
91     void *context);
92
93 void WKDrawCapsLockIndicator(CGContextRef, CGRect);
94
95 void WKDrawFocusRing(CGContextRef context, CGColorRef color, int radius);
96     // The CG context's current path is the focus ring's path.
97     // A color of 0 means "use system focus ring color".
98     // A radius of 0 means "use default focus ring radius".
99
100 void WKSetDragImage(NSImage *image, NSPoint offset);
101
102 void WKDrawBezeledTextFieldCell(NSRect, BOOL enabled);
103 void WKDrawTextFieldCellFocusRing(NSTextFieldCell*, NSRect);
104 void WKDrawBezeledTextArea(NSRect, BOOL enabled);
105 void WKPopupMenu(NSMenu*, NSPoint location, float width, NSView*, int selectedItem, NSFont*);
106
107 void WKSendUserChangeNotifications(void);
108 #ifndef __LP64__
109 BOOL WKConvertNSEventToCarbonEvent(EventRecord *carbonEvent, NSEvent *cocoaEvent);
110 void WKSendKeyEventToTSM(NSEvent *theEvent);
111 void WKCallDrawingNotification(CGrafPtr port, Rect *bounds);
112 #endif
113
114 BOOL WKGetGlyphTransformedAdvances(CGFontRef, NSFont*, CGAffineTransform *m, ATSGlyphRef *glyph, CGSize *advance);
115 NSFont *WKGetFontInLanguageForRange(NSFont *font, NSString *string, NSRange range);
116 NSFont *WKGetFontInLanguageForCharacter(NSFont *font, UniChar ch);
117 void WKSetCGFontRenderingMode(CGContextRef cgContext, NSFont *font);
118 BOOL WKCGContextGetShouldSmoothFonts(CGContextRef cgContext);
119
120 #ifdef BUILDING_ON_TIGER
121 // CGFontGetAscent, CGFontGetDescent, CGFontGetLeading and CGFontGetUnitsPerEm were not available until Leopard
122 void WKGetFontMetrics(CGFontRef font, int *ascent, int *descent, int *lineGap, unsigned *unitsPerEm);
123 // CTFontCopyGraphicsFont was not available until Leopard
124 CGFontRef WKGetCGFontFromNSFont(NSFont *font);
125 // CTFontGetPlatformFont was not available until Leopard
126 ATSUFontID WKGetNSFontATSUFontId(NSFont *font);
127 // CGFontCopyFullName was not available until Leopard
128 CFStringRef WKCopyFullFontName(CGFontRef font);
129 #endif
130
131 void WKSetPatternBaseCTM(CGContextRef, CGAffineTransform);
132 void WKSetPatternPhaseInUserSpace(CGContextRef, CGPoint);
133 CGAffineTransform WKGetUserToBaseCTM(CGContextRef);
134
135 #ifndef BUILDING_ON_TIGER
136 void WKGetGlyphsForCharacters(CGFontRef, const UniChar[], CGGlyph[], size_t);
137 #else
138 typedef void *WKGlyphVectorRef;
139 OSStatus WKConvertCharToGlyphs(void *styleGroup, const UniChar *characters, unsigned numCharacters, WKGlyphVectorRef glyphs);
140 OSStatus WKGetATSStyleGroup(ATSUStyle fontStyle, void **styleGroup);
141 void WKReleaseStyleGroup(void *group);
142 OSStatus WKInitializeGlyphVector(int count, WKGlyphVectorRef glyphs);
143 void WKClearGlyphVector(WKGlyphVectorRef glyphs);
144
145 int WKGetGlyphVectorNumGlyphs(WKGlyphVectorRef glyphVector);
146 ATSLayoutRecord *WKGetGlyphVectorFirstRecord(WKGlyphVectorRef glyphVector);
147 size_t WKGetGlyphVectorRecordSize(WKGlyphVectorRef glyphVector);
148 #endif
149
150 #ifndef __LP64__
151 NSEvent *WKCreateNSEventWithCarbonEvent(EventRef eventRef);
152 NSEvent *WKCreateNSEventWithCarbonMouseMoveEvent(EventRef inEvent, NSWindow *window);
153 NSEvent *WKCreateNSEventWithCarbonClickEvent(EventRef inEvent, WindowRef windowRef);
154 #endif
155
156 CGContextRef WKNSWindowOverrideCGContext(NSWindow *, CGContextRef);
157 void WKNSWindowRestoreCGContext(NSWindow *, CGContextRef);
158
159 void WKNSWindowMakeBottomCornersSquare(NSWindow *);
160
161 // These constants match the ones used by ThemeScrollbarArrowStyle (some of the values are private, so we can't just
162 // use that enum directly).
163 typedef enum {
164     WKThemeScrollBarArrowsSingle     = 0,
165     WKThemeScrollBarArrowsLowerRight = 1,
166     WKThemeScrollBarArrowsDouble     = 2,
167     WKThemeScrollBarArrowsUpperLeft  = 3,
168 } WKThemeScrollBarArrowStyle;
169
170 OSStatus WKThemeDrawTrack(const HIThemeTrackDrawInfo* inDrawInfo, CGContextRef inContext, int inArrowStyle);
171
172 #ifdef BUILDING_ON_TIGER
173 // WKSupportsMultipartXMixedReplace is not required on Leopard as multipart/x-mixed-replace is always handled by NSURLRequest
174 BOOL WKSupportsMultipartXMixedReplace(NSMutableURLRequest *request);
175 #endif
176
177 BOOL WKCGContextIsBitmapContext(CGContextRef context);
178
179 void WKGetWheelEventDeltas(NSEvent *, float *deltaX, float *deltaY, float *wheelTicksX, float *wheelTicksY, BOOL *continuous);
180
181 BOOL WKAppVersionCheckLessThan(NSString *, int, double);
182
183 typedef enum {
184     WKMovieTypeUnknown,
185     WKMovieTypeDownload,
186     WKMovieTypeStoredStream,
187     WKMovieTypeLiveStream
188 } WKMovieType;
189
190 int WKQTMovieGetType(QTMovie* movie);
191
192 BOOL WKQTMovieHasClosedCaptions(QTMovie* movie);
193 void WKQTMovieSetShowClosedCaptions(QTMovie* movie, BOOL showClosedCaptions);
194
195 unsigned WKQTIncludeOnlyModernMediaFileTypes(void);
196 int WKQTMovieDataRate(QTMovie* movie);
197 float WKQTMovieMaxTimeLoaded(QTMovie* movie);
198 float WKQTMovieMaxTimeSeekable(QTMovie* movie);
199 NSString *WKQTMovieMaxTimeLoadedChangeNotification(void);
200 void WKQTMovieViewSetDrawSynchronously(QTMovieView* view, BOOL sync);
201
202 CFStringRef WKCopyFoundationCacheDirectory(void);
203
204 typedef enum {
205     WKMediaUIPartFullscreenButton   = 0,
206     WKMediaUIPartMuteButton,
207     WKMediaUIPartPlayButton,
208     WKMediaUIPartSeekBackButton,
209     WKMediaUIPartSeekForwardButton,
210     WKMediaUIPartSlider,
211     WKMediaUIPartSliderThumb,
212     WKMediaUIPartRewindButton,
213     WKMediaUIPartSeekToRealtimeButton,
214     WKMediaUIPartShowClosedCaptionsButton,
215     WKMediaUIPartHideClosedCaptionsButton,
216     WKMediaUIPartUnMuteButton,
217     WKMediaUIPartPauseButton,
218     WKMediaUIPartBackground,
219     WKMediaUIPartCurrentTimeDisplay,
220     WKMediaUIPartTimeRemainingDisplay
221 } WKMediaUIPart;
222
223 typedef enum {
224     WKMediaControllerThemeClassic   = 1,
225     WKMediaControllerThemeQuickTime = 2
226 } WKMediaControllerThemeStyle;
227
228 typedef enum {
229     WKMediaControllerFlagDisabled = 1 << 0,
230     WKMediaControllerFlagPressed = 1 << 1,
231     WKMediaControllerFlagDrawEndCaps = 1 << 3,
232     WKMediaControllerFlagFocused = 1 << 4
233 } WKMediaControllerThemeState;
234
235 BOOL WKMediaControllerThemeAvailable(int themeStyle);
236 BOOL WKHitTestMediaUIPart(int part, int themeStyle, CGRect bounds, CGPoint point);
237 void WKMeasureMediaUIPart(int part, int themeStyle, CGRect *bounds, CGSize *naturalSize);
238 void WKDrawMediaUIPart(int part, int themeStyle, CGContextRef context, CGRect rect, unsigned state);
239 void WKDrawMediaSliderTrack(int themeStyle, CGContextRef context, CGRect rect, float timeLoaded, float currentTime, float duration, unsigned state);
240 NSView *WKCreateMediaUIBackgroundView(void);
241
242 typedef enum {
243     WKMediaUIControlTimeline,
244     WKMediaUIControlSlider,
245     WKMediaUIControlPlayPauseButton,
246     WKMediaUIControlExitFullscreenButton,
247     WKMediaUIControlRewindButton,
248     WKMediaUIControlFastForwardButton,
249     WKMediaUIControlVolumeUpButton,
250     WKMediaUIControlVolumeDownButton
251
252 } WKMediaUIControlType;
253     
254 NSControl *WKCreateMediaUIControl(int controlType);
255
256 #if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD) && defined(__x86_64__)
257 mach_port_t WKInitializeRenderServer(void);
258     
259 @class CALayer;
260
261 CALayer *WKMakeRenderLayer(uint32_t contextID);
262     
263 typedef struct __WKSoftwareCARendererRef *WKSoftwareCARendererRef;
264
265 WKSoftwareCARendererRef WKSoftwareCARendererCreate(uint32_t contextID);
266 void WKSoftwareCARendererDestroy(WKSoftwareCARendererRef);
267 void WKSoftwareCARendererRender(WKSoftwareCARendererRef, CGContextRef, CGRect);
268
269 #import <mach/mig.h>
270
271 CFRunLoopSourceRef WKCreateMIGServerSource(mig_subsystem_t subsystem, mach_port_t serverPort);
272
273 NSUInteger WKGetInputPanelWindowStyle(void);
274  
275 UInt8 WKGetNSEventKeyChar(NSEvent *);
276     
277 #endif
278
279 @class CAPropertyAnimation;
280 void WKSetCAAnimationValueFunction(CAPropertyAnimation*, NSString* function);
281
282 unsigned WKInitializeMaximumHTTPConnectionCountPerHost(unsigned preferredConnectionCount);
283
284 void WKSetCONNECTProxyForStream(CFReadStreamRef, CFStringRef proxyHost, CFNumberRef proxyPort);
285 void WKSetCONNECTProxyAuthorizationForStream(CFReadStreamRef, CFStringRef proxyAuthorizationString);
286 CFHTTPMessageRef WKCopyCONNECTProxyResponse(CFReadStreamRef, CFURLRef responseURL);
287
288 BOOL WKIsLatchingWheelEvent(NSEvent *);
289
290 #ifndef BUILDING_ON_TIGER
291 void WKWindowSetAlpha(NSWindow *window, float alphaValue);
292 void WKWindowSetScaledFrame(NSWindow *window, NSRect scaleFrame, NSRect nonScaledFrame);
293 #endif
294
295 #if !defined(BUILDING_ON_TIGER) && !defined(BUILDING_ON_LEOPARD)
296 NSMutableArray *WKNoteOpenPanelFiles(NSArray *paths);
297 #endif
298
299 #ifdef __cplusplus
300 }
301 #endif