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 __CFArray* CFArrayRef; 39 typedef const struct __CFData* CFDataRef; 40 typedef const struct __CFString* CFStringRef; 41 typedef double CFTimeInterval; 42 typedef struct CGColor* CGColorRef; 43 typedef struct CGContext* CGContextRef; 44 typedef unsigned short CGFontIndex; 45 typedef struct CGFont* CGFontRef; 46 typedef CGFontIndex CGGlyph; 47 typedef wchar_t UChar; 48 typedef struct _CFURLResponse* CFURLResponseRef; 49 typedef struct OpaqueCFHTTPCookieStorage* CFHTTPCookieStorageRef; 50 typedef struct __CFDictionary* CFMutableDictionaryRef; 51 typedef struct _CFURLRequest* CFMutableURLRequestRef; 52 typedef const struct _CFURLRequest* CFURLRequestRef; 53 typedef struct __CFHTTPMessage* CFHTTPMessageRef; 54 typedef const struct __CFNumber* CFNumberRef; 55 typedef struct __CFReadStream* CFReadStreamRef; 56 typedef const struct __CFURL* CFURLRef; 57 typedef struct _CFURLProtectionSpace* CFURLProtectionSpaceRef; 58 typedef struct tagLOGFONTW LOGFONTW; 59 typedef LOGFONTW LOGFONT; 60 typedef struct _CACFLayer *CACFLayerRef; 61 typedef struct __CVBuffer *CVBufferRef; 62 typedef CVBufferRef CVImageBufferRef; 63 typedef CVImageBufferRef CVPixelBufferRef; 64 typedef struct _CAImageQueue *CAImageQueueRef; 65 typedef unsigned long CFTypeID; 66 typedef struct _CFURLCredential* WKCFURLCredentialRef; 67 typedef const struct __CFURLStorageSession* CFURLStorageSessionRef; 68 typedef const struct _CFURLCache* CFURLCacheRef; 69 70 void wkSetFontSmoothingLevel(int type); 71 int wkGetFontSmoothingLevel(); 72 void wkSetFontSmoothingContrast(CGFloat); 73 CGFloat wkGetFontSmoothingContrast(); 74 void wkSystemFontSmoothingChanged(); 75 uint32_t wkSetFontSmoothingStyle(CGContextRef cg, bool fontAllowsSmoothing); 76 void wkRestoreFontSmoothingStyle(CGContextRef cg, uint32_t oldStyle); 77 void wkSetCGContextFontRenderingStyle(CGContextRef, bool isSystemFont, bool isPrinterFont, bool usePlatformNativeGlyphs); 78 void wkGetGlyphAdvances(CGFontRef, const CGAffineTransform&, bool isSystemFont, bool isPrinterFont, CGGlyph, CGSize& advance); 79 void wkGetGlyphs(CGFontRef, const UChar[], CGGlyph[], size_t count); 80 void wkSetUpFontCache(size_t s); 81 82 void wkSetPatternBaseCTM(CGContextRef, CGAffineTransform); 83 void wkSetPatternPhaseInUserSpace(CGContextRef, CGPoint phasePoint); 84 CGAffineTransform wkGetUserToBaseCTM(CGContextRef); 85 86 void wkDrawFocusRing(CGContextRef, CGColorRef, float radius); 87 88 CFDictionaryRef wkGetSSLCertificateInfo(CFURLResponseRef); 89 CFDataRef wkGetSSLPeerCertificateData(CFDictionaryRef); 90 void* wkGetSSLPeerCertificateDataBytePtr(CFDictionaryRef); 91 void wkSetSSLPeerCertificateData(CFMutableDictionaryRef, CFDataRef); 92 void* wkGetSSLCertificateChainContext(CFDictionaryRef); 93 CFHTTPCookieStorageRef wkGetDefaultHTTPCookieStorage(); 94 CFHTTPCookieStorageRef wkCreateInMemoryHTTPCookieStorage(); 95 void wkSetCFURLRequestShouldContentSniff(CFMutableURLRequestRef, bool); 96 CFStringRef wkCopyFoundationCacheDirectory(); 97 void wkSetClientCertificateInSSLProperties(CFMutableDictionaryRef, CFDataRef); 98 99 CFArrayRef wkCFURLRequestCopyHTTPRequestBodyParts(CFURLRequestRef); 100 void wkCFURLRequestSetHTTPRequestBodyParts(CFMutableURLRequestRef, CFArrayRef bodyParts); 101 102 CFURLStorageSessionRef wkCreatePrivateStorageSession(CFStringRef identifier); 103 void wkSetRequestStorageSession(CFURLStorageSessionRef, CFMutableURLRequestRef); 104 CFURLCacheRef wkCopyURLCache(CFURLStorageSessionRef); 105 CFHTTPCookieStorageRef wkCopyHTTPCookieStorage(CFURLStorageSessionRef); 106 107 CFArrayRef wkCFURLCacheCopyAllHostNamesInPersistentStore(); 108 void wkCFURLCacheDeleteHostNamesInPersistentStore(CFArrayRef hostNames); 109 110 unsigned wkInitializeMaximumHTTPConnectionCountPerHost(unsigned preferredConnectionCount); 111 112 void wkSetCONNECTProxyForStream(CFReadStreamRef, CFStringRef proxyHost, CFNumberRef proxyPort); 113 void wkSetCONNECTProxyAuthorizationForStream(CFReadStreamRef, CFStringRef proxyAuthorizationString); 114 CFHTTPMessageRef wkCopyCONNECTProxyResponse(CFReadStreamRef, CFURLRef responseURL); 115 116 WKCFURLCredentialRef wkCopyCredentialFromCFPersistentStorage(CFURLProtectionSpaceRef protectionSpace); 117 118 CFStringRef wkCFNetworkErrorGetLocalizedDescription(CFIndex errorCode); 119 120 121 enum wkCAImageQueueFlags { 122 kWKCAImageQueueAsync = 1U << 0, 123 kWKCAImageQueueFill = 1U << 1, 124 kWKCAImageQueueProtected = 1U << 2, 125 kWKCAImageQueueUseCleanAperture = 1U << 3, 126 kWKCAImageQueueUseAspectRatio = 1U << 4, 127 kWKCAImageQueueLowQualityColor = 1U << 5, 128 }; 129 130 enum wkWKCAImageQueueImageType { 131 kWKCAImageQueueNil = 1, 132 kWKCAImageQueueSurface, 133 kWKCAImageQueueBuffer, 134 kWKCAImageQueueIOSurface, 135 }; 136 137 enum wkWKCAImageQueueImageFlags { 138 kWKCAImageQueueOpaque = 1U << 0, 139 kWKCAImageQueueFlush = 1U << 1, 140 kWKCAImageQueueWillFlush = 1U << 2, 141 kWKCAImageQueueFlipped = 1U << 3, 142 kWKCAImageQueueWaitGPU = 1U << 4, 143 }; 144 145 typedef void (*wkCAImageQueueReleaseCallback)(unsigned int type, uint64_t id, void *info); 146 CAImageQueueRef wkCAImageQueueCreate(uint32_t width, uint32_t height, uint32_t capacity); 147 void wkCAImageQueueInvalidate(CAImageQueueRef iq); 148 size_t wkCAImageQueueCollect(CAImageQueueRef iq); 149 bool wkCAImageQueueInsertImage(CAImageQueueRef iq, CFTimeInterval t, unsigned int type, uint64_t id, uint32_t flags, wkCAImageQueueReleaseCallback release, void *info); 150 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); 151 void wkCAImageQueueSetFlags(CAImageQueueRef iq, uint32_t mask, uint32_t flags); 152 uint32_t wkCAImageQueueGetFlags(CAImageQueueRef iq); 153 CFTypeID wkCAImageQueueGetTypeID(void); 154 155 WKCACFContext* wkCACFContextCreate(); 156 void wkCACFContextDestroy(WKCACFContext*); 157 158 void wkCACFContextSetLayer(WKCACFContext*, CACFLayerRef); 159 void wkCACFContextFlush(WKCACFContext*); 160 161 CFTimeInterval wkCACFContextGetLastCommitTime(WKCACFContext*); 162 CFTimeInterval wkCACFContextGetNextUpdateTime(WKCACFContext*); 163 164 void* wkCACFContextGetUserData(WKCACFContext*); 165 void wkCACFContextSetUserData(WKCACFContext*, void*); 166 167 void* wkCACFLayerGetContextUserData(CACFLayerRef); 168 169 void wkCACFContextSetD3DDevice(WKCACFContext*, IDirect3DDevice9*); 170 void wkCACFContextReleaseD3DResources(WKCACFContext*); 171 172 bool wkCACFContextBeginUpdate(WKCACFContext*, void* buffer, size_t bufferSize, CFTimeInterval time, const CGRect& bounds, const CGRect dirtyRects[], size_t dirtyRectCount); 173 void wkCACFContextRenderUpdate(WKCACFContext*); 174 void wkCACFContextFinishUpdate(WKCACFContext*); 175 void wkCACFContextAddUpdateRect(WKCACFContext*, const CGRect&); 176 177 WKCACFUpdateRectEnumerator* wkCACFContextCopyUpdateRectEnumerator(WKCACFContext*); 178 const CGRect* wkCACFUpdateRectEnumeratorNextRect(WKCACFUpdateRectEnumerator*); 179 void wkCACFUpdateRectEnumeratorRelease(WKCACFUpdateRectEnumerator*); 180 181 CFDictionaryRef wkCFURLRequestCreateSerializableRepresentation(CFURLRequestRef cfRequest, CFTypeRef tokenNull); 182 CFURLRequestRef wkCFURLRequestCreateFromSerializableRepresentation(CFDictionaryRef representation, CFTypeRef tokenNull); 183 CFDictionaryRef wkCFURLResponseCreateSerializableRepresentation(CFURLResponseRef cfResponse, CFTypeRef tokenNull); 184 CFURLResponseRef wkCFURLResponseCreateFromSerializableRepresentation(CFDictionaryRef representation, CFTypeRef tokenNull); 185 186 typedef void (*wkQuickTimeMIMETypeCallBack)(const char* mimeType); 187 void wkGetQuickTimeMIMETypeList(wkQuickTimeMIMETypeCallBack); 188 189 typedef enum { 190 WKMediaUIPartFullscreenButton = 0, 191 WKMediaUIPartMuteButton, 192 WKMediaUIPartPlayButton, 193 WKMediaUIPartSeekBackButton, 194 WKMediaUIPartSeekForwardButton, 195 WKMediaUIPartTimelineSlider, 196 WKMediaUIPartTimelineSliderThumb, 197 WKMediaUIPartRewindButton, 198 WKMediaUIPartSeekToRealtimeButton, 199 WKMediaUIPartShowClosedCaptionsButton, 200 WKMediaUIPartHideClosedCaptionsButton, 201 WKMediaUIPartUnMuteButton, 202 WKMediaUIPartPauseButton, 203 WKMediaUIPartBackground, 204 WKMediaUIPartCurrentTimeDisplay, 205 WKMediaUIPartTimeRemainingDisplay, 206 WKMediaUIPartStatusDisplay, 207 WKMediaUIPartControlsPanel, 208 WKMediaUIPartVolumeSliderContainer, 209 WKMediaUIPartVolumeSlider, 210 WKMediaUIPartVolumeSliderThumb 211 } WKMediaUIPart; 212 213 typedef enum { 214 WKMediaControllerThemeClassic = 1, 215 WKMediaControllerThemeQuickTime = 2 216 } WKMediaControllerThemeStyle; 217 218 typedef enum { 219 WKMediaControllerFlagDisabled = 1 << 0, 220 WKMediaControllerFlagPressed = 1 << 1, 221 WKMediaControllerFlagDrawEndCaps = 1 << 3, 222 WKMediaControllerFlagFocused = 1 << 4 223 } WKMediaControllerThemeState; 224 225 #ifdef __cplusplus 226 extern "C" { 227 #endif 228 229 bool WKMediaControllerThemeAvailable(int themeStyle); 230 bool WKHitTestMediaUIPart(int part, int themeStyle, CGRect bounds, CGPoint point); 231 void WKMeasureMediaUIPart(int part, int themeStyle, CGRect *bounds, CGSize *naturalSize); 232 void WKDrawMediaUIPart(int part, int themeStyle, CGContextRef context, CGRect rect, unsigned state); 233 void WKDrawMediaSliderTrack(int themeStyle, CGContextRef context, CGRect rect, float timeLoaded, float currentTime, float duration, unsigned state); 234 235 #ifdef __cplusplus 236 } 237 #endif 238 239 #endif // WebKitSystemInterface_h 240