2011-01-07 Chris Marrin <cmarrin@apple.com>
[WebKit-https.git] / WebKitLibraries / win / include / WebKitSystemInterface / WebKitSystemInterface.h
1 /*
2  * Copyright (C) 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 COMPUTER, INC. ``AS IS'' AND ANY
14  * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
15  * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED.  IN NO EVENT SHALL APPLE COMPUTER, INC. OR
17  * CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL,
18  * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO,
19  * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
20  * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY
21  * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
22  * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
23  * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. 
24  */
25
26 #ifndef WebKitSystemInterface_h
27 #define WebKitSystemInterface_h
28
29 struct CGAffineTransform;
30 struct CGPoint;
31 struct CGRect;
32 struct CGSize;
33 struct IDirect3DDevice9;
34 struct WKCACFContext;
35 struct WKCACFUpdateRectEnumerator;
36
37 typedef struct _CACFLayer* CACFLayerRef;
38 typedef const struct __CFData* CFDataRef;
39 typedef const struct __CFString* CFStringRef;
40 typedef double CFTimeInterval;
41 typedef struct CGColor* CGColorRef;
42 typedef struct CGContext* CGContextRef;
43 typedef unsigned short CGFontIndex;
44 typedef struct CGFont* CGFontRef;
45 typedef CGFontIndex CGGlyph;
46 typedef wchar_t UChar;
47 typedef struct _CFURLResponse* CFURLResponseRef;
48 typedef struct OpaqueCFHTTPCookieStorage*  CFHTTPCookieStorageRef;
49 typedef struct _CFURLRequest* CFMutableURLRequestRef;
50 typedef const struct _CFURLRequest* CFURLRequestRef;
51 typedef struct __CFHTTPMessage* CFHTTPMessageRef;
52 typedef const struct __CFNumber* CFNumberRef;
53 typedef struct __CFReadStream* CFReadStreamRef;
54 typedef const struct __CFURL* CFURLRef;
55 typedef struct _CFURLProtectionSpace* CFURLProtectionSpaceRef;
56 typedef struct tagLOGFONTW LOGFONTW;
57 typedef LOGFONTW LOGFONT;
58 typedef struct _CACFLayer *CACFLayerRef;
59 typedef struct __CVBuffer *CVBufferRef;
60 typedef CVBufferRef CVImageBufferRef;
61 typedef CVImageBufferRef CVPixelBufferRef;
62 typedef struct _CAImageQueue *CAImageQueueRef;
63 typedef unsigned long CFTypeID;
64 typedef struct _CFURLCredential* WKCFURLCredentialRef;
65
66 void wkSetFontSmoothingLevel(int type);
67 int wkGetFontSmoothingLevel();
68 void wkSetFontSmoothingContrast(CGFloat);
69 CGFloat wkGetFontSmoothingContrast();
70 void wkSystemFontSmoothingChanged();
71 uint32_t wkSetFontSmoothingStyle(CGContextRef cg, bool fontAllowsSmoothing);
72 void wkRestoreFontSmoothingStyle(CGContextRef cg, uint32_t oldStyle);
73 void wkSetCGContextFontRenderingStyle(CGContextRef, bool isSystemFont, bool isPrinterFont, bool usePlatformNativeGlyphs);
74 void wkGetGlyphAdvances(CGFontRef, const CGAffineTransform&, bool isSystemFont, bool isPrinterFont, CGGlyph, CGSize& advance);
75 void wkGetGlyphs(CGFontRef, const UChar[], CGGlyph[], size_t count);
76 void wkSetUpFontCache(size_t s);
77
78 void wkSetPatternBaseCTM(CGContextRef, CGAffineTransform);
79 void wkSetPatternPhaseInUserSpace(CGContextRef, CGPoint phasePoint);
80 CGAffineTransform wkGetUserToBaseCTM(CGContextRef);
81
82 void wkDrawFocusRing(CGContextRef, CGColorRef, float radius);
83
84 CFDictionaryRef wkGetSSLCertificateInfo(CFURLResponseRef);
85 void* wkGetSSLPeerCertificateData(CFDictionaryRef);
86 void* wkGetSSLCertificateChainContext(CFDictionaryRef);
87 CFHTTPCookieStorageRef wkGetDefaultHTTPCookieStorage();
88 CFHTTPCookieStorageRef wkCreatePrivateHTTPCookieStorage();
89 void wkSetCFURLRequestShouldContentSniff(CFMutableURLRequestRef, bool);
90 CFStringRef wkCopyFoundationCacheDirectory();
91 void wkSetClientCertificateInSSLProperties(CFMutableDictionaryRef, CFDataRef);
92
93 CFArrayRef wkCFURLRequestCopyHTTPRequestBodyParts(CFURLRequestRef);
94 void wkCFURLRequestSetHTTPRequestBodyParts(CFMutableURLRequestRef, CFArrayRef bodyParts);
95
96 unsigned wkInitializeMaximumHTTPConnectionCountPerHost(unsigned preferredConnectionCount);
97
98 void wkSetCONNECTProxyForStream(CFReadStreamRef, CFStringRef proxyHost, CFNumberRef proxyPort);
99 void wkSetCONNECTProxyAuthorizationForStream(CFReadStreamRef, CFStringRef proxyAuthorizationString);
100 CFHTTPMessageRef wkCopyCONNECTProxyResponse(CFReadStreamRef, CFURLRef responseURL);
101
102 WKCFURLCredentialRef wkCopyCredentialFromCFPersistentStorage(CFURLProtectionSpaceRef protectionSpace);
103
104 CFStringRef wkCFNetworkErrorGetLocalizedDescription(CFIndex errorCode);
105
106
107 enum wkCAImageQueueFlags {
108     kWKCAImageQueueAsync = 1U << 0,
109     kWKCAImageQueueFill = 1U << 1,
110     kWKCAImageQueueProtected = 1U << 2,
111     kWKCAImageQueueUseCleanAperture = 1U << 3,
112     kWKCAImageQueueUseAspectRatio = 1U << 4,
113     kWKCAImageQueueLowQualityColor = 1U << 5,
114 };
115
116 enum wkWKCAImageQueueImageType {
117     kWKCAImageQueueNil = 1,
118     kWKCAImageQueueSurface,
119     kWKCAImageQueueBuffer,
120     kWKCAImageQueueIOSurface,
121 };
122
123 enum wkWKCAImageQueueImageFlags {
124     kWKCAImageQueueOpaque = 1U << 0,
125     kWKCAImageQueueFlush = 1U << 1,
126     kWKCAImageQueueWillFlush = 1U << 2,
127     kWKCAImageQueueFlipped = 1U << 3,
128     kWKCAImageQueueWaitGPU = 1U << 4,
129 };
130
131 typedef void (*wkCAImageQueueReleaseCallback)(unsigned int type, uint64_t id, void *info);
132 CAImageQueueRef wkCAImageQueueCreate(uint32_t width, uint32_t height, uint32_t capacity);
133 void wkCAImageQueueInvalidate(CAImageQueueRef iq);
134 size_t wkCAImageQueueCollect(CAImageQueueRef iq);
135 bool wkCAImageQueueInsertImage(CAImageQueueRef iq, CFTimeInterval t, unsigned int type, uint64_t id, uint32_t flags, wkCAImageQueueReleaseCallback release, void *info);
136 uint64_t wkCAImageQueueRegisterPixelBuffer(CAImageQueueRef iq, void *data, size_t data_size, size_t rowbytes, size_t width, size_t height, OSType pixel_format, CFDictionaryRef attachments, uint32_t flags);
137 void wkCAImageQueueSetFlags(CAImageQueueRef iq, uint32_t mask, uint32_t flags);
138 uint32_t wkCAImageQueueGetFlags(CAImageQueueRef iq);
139 CFTypeID wkCAImageQueueGetTypeID(void);
140
141 WKCACFContext* wkCACFContextCreate();
142 void wkCACFContextDestroy(WKCACFContext*);
143
144 void wkCACFContextSetLayer(WKCACFContext*, CACFLayerRef);
145 void wkCACFContextFlush(WKCACFContext*);
146
147 CFTimeInterval wkCACFContextGetLastCommitTime(WKCACFContext*);
148 CFTimeInterval wkCACFContextGetNextUpdateTime(WKCACFContext*);
149
150 void* wkCACFContextGetUserData(WKCACFContext*);
151 void wkCACFContextSetUserData(WKCACFContext*, void*);
152
153 void* wkCACFLayerGetContextUserData(CACFLayerRef);
154
155 void wkCACFContextInitializeD3DDevice(WKCACFContext*, IDirect3DDevice9*);
156 void wkCACFContextReleaseD3DResources(WKCACFContext*);
157
158 bool wkCACFContextBeginUpdate(WKCACFContext*, void* buffer, size_t bufferSize, CFTimeInterval time, const CGRect& bounds, const CGRect dirtyRects[], size_t dirtyRectCount);
159 void wkCACFContextRenderUpdate(WKCACFContext*);
160 void wkCACFContextFinishUpdate(WKCACFContext*);
161 void wkCACFContextAddUpdateRect(WKCACFContext*, const CGRect&);
162
163 WKCACFUpdateRectEnumerator* wkCACFContextCopyUpdateRectEnumerator(WKCACFContext*);
164 const CGRect* wkCACFUpdateRectEnumeratorNextRect(WKCACFUpdateRectEnumerator*);
165 void wkCACFUpdateRectEnumeratorRelease(WKCACFUpdateRectEnumerator*);
166
167 CFDictionaryRef wkCFURLRequestCreateSerializableRepresentation(CFURLRequestRef cfRequest, CFTypeRef tokenNull);
168 CFURLRequestRef wkCFURLRequestCreateFromSerializableRepresentation(CFDictionaryRef representation, CFTypeRef tokenNull);
169 CFDictionaryRef wkCFURLResponseCreateSerializableRepresentation(CFURLResponseRef cfResponse, CFTypeRef tokenNull);
170 CFURLResponseRef wkCFURLResponseCreateFromSerializableRepresentation(CFDictionaryRef representation, CFTypeRef tokenNull);
171
172 typedef enum {
173     WKMediaUIPartFullscreenButton   = 0,
174     WKMediaUIPartMuteButton,
175     WKMediaUIPartPlayButton,
176     WKMediaUIPartSeekBackButton,
177     WKMediaUIPartSeekForwardButton,
178     WKMediaUIPartTimelineSlider,
179     WKMediaUIPartTimelineSliderThumb,
180     WKMediaUIPartRewindButton,
181     WKMediaUIPartSeekToRealtimeButton,
182     WKMediaUIPartShowClosedCaptionsButton,
183     WKMediaUIPartHideClosedCaptionsButton,
184     WKMediaUIPartUnMuteButton,
185     WKMediaUIPartPauseButton,
186     WKMediaUIPartBackground,
187     WKMediaUIPartCurrentTimeDisplay,
188     WKMediaUIPartTimeRemainingDisplay,
189     WKMediaUIPartStatusDisplay,
190     WKMediaUIPartControlsPanel,
191     WKMediaUIPartVolumeSliderContainer,
192     WKMediaUIPartVolumeSlider,
193     WKMediaUIPartVolumeSliderThumb
194 } WKMediaUIPart;
195
196 typedef enum {
197     WKMediaControllerThemeClassic   = 1,
198     WKMediaControllerThemeQuickTime = 2
199 } WKMediaControllerThemeStyle;
200
201 typedef enum {
202     WKMediaControllerFlagDisabled = 1 << 0,
203     WKMediaControllerFlagPressed = 1 << 1,
204     WKMediaControllerFlagDrawEndCaps = 1 << 3,
205     WKMediaControllerFlagFocused = 1 << 4
206 } WKMediaControllerThemeState;
207
208 #ifdef __cplusplus
209 extern "C" {
210 #endif
211
212 bool WKMediaControllerThemeAvailable(int themeStyle);
213 bool WKHitTestMediaUIPart(int part, int themeStyle, CGRect bounds, CGPoint point);
214 void WKMeasureMediaUIPart(int part, int themeStyle, CGRect *bounds, CGSize *naturalSize);
215 void WKDrawMediaUIPart(int part, int themeStyle, CGContextRef context, CGRect rect, unsigned state);
216 void WKDrawMediaSliderTrack(int themeStyle, CGContextRef context, CGRect rect, float timeLoaded, float currentTime, float duration, unsigned state);
217
218 #ifdef __cplusplus
219 }
220 #endif
221
222 #endif // WebKitSystemInterface_h