Home | History | Annotate | Download | only in WebKitSystemInterface
      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