| /* |
| * Copyright (C) 2014-2016 Apple Inc. All rights reserved. |
| * |
| * Redistribution and use in source and binary forms, with or without |
| * modification, are permitted provided that the following conditions |
| * are met: |
| * 1. Redistributions of source code must retain the above copyright |
| * notice, this list of conditions and the following disclaimer. |
| * 2. Redistributions in binary form must reproduce the above copyright |
| * notice, this list of conditions and the following disclaimer in the |
| * documentation and/or other materials provided with the distribution. |
| * |
| * THIS SOFTWARE IS PROVIDED BY APPLE INC. AND ITS CONTRIBUTORS ``AS IS'' |
| * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, |
| * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR |
| * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS |
| * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR |
| * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF |
| * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS |
| * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN |
| * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) |
| * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF |
| * THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| |
| #pragma once |
| |
| #import <CoreVideo/CoreVideo.h> |
| #import <QuartzCore/QuartzCore.h> |
| #import <pal/spi/cg/CoreGraphicsSPI.h> |
| #import <pal/spi/cocoa/IOSurfaceSPI.h> |
| |
| #if USE(APPLE_INTERNAL_SDK) |
| |
| #import <QuartzCore/CABackingStore.h> |
| #import <QuartzCore/CAColorMatrix.h> |
| #import <QuartzCore/CARenderServer.h> |
| |
| #ifdef __OBJC__ |
| |
| #import <QuartzCore/CAContext.h> |
| #import <QuartzCore/CALayerHost.h> |
| #import <QuartzCore/CALayerPrivate.h> |
| #import <QuartzCore/CAMediaTimingFunctionPrivate.h> |
| #import <QuartzCore/QuartzCorePrivate.h> |
| |
| #if PLATFORM(MAC) |
| #import <QuartzCore/CARenderCG.h> |
| #endif |
| |
| #endif // __OBJC__ |
| |
| #else |
| |
| #ifdef __OBJC__ |
| typedef struct _CARenderContext CARenderContext; |
| |
| @interface CAContext : NSObject |
| @end |
| |
| @interface CAContext () |
| + (NSArray *)allContexts; |
| + (CAContext *)currentContext; |
| + (CAContext *)localContext; |
| + (CAContext *)remoteContextWithOptions:(NSDictionary *)dict; |
| #if PLATFORM(MAC) |
| + (CAContext *)contextWithCGSConnection:(CGSConnectionID)cid options:(NSDictionary *)dict; |
| #endif |
| + (id)objectForSlot:(uint32_t)name; |
| - (uint32_t)createImageSlot:(CGSize)size hasAlpha:(BOOL)flag; |
| - (void)deleteSlot:(uint32_t)name; |
| - (void)invalidate; |
| - (void)invalidateFences; |
| - (mach_port_t)createFencePort; |
| - (void)setFencePort:(mach_port_t)port; |
| - (void)setFencePort:(mach_port_t)port commitHandler:(void(^)(void))block; |
| |
| #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101400 |
| + (void)setAllowsCGSConnections:(BOOL)flag; |
| #endif |
| |
| #if PLATFORM(MAC) |
| @property uint32_t commitPriority; |
| @property BOOL colorMatchUntaggedContent; |
| #endif |
| @property (readonly) uint32_t contextId; |
| @property (strong) CALayer *layer; |
| @property CGColorSpaceRef colorSpace; |
| @property (readonly) CARenderContext* renderContext; |
| @end |
| |
| @interface CALayer () |
| - (CAContext *)context; |
| - (void)setContextId:(uint32_t)contextID; |
| - (CGSize)size; |
| - (void *)regionBeingDrawn; |
| - (void)reloadValueForKeyPath:(NSString *)keyPath; |
| - (void)setCornerRadius:(CGFloat)cornerRadius; |
| @property BOOL allowsGroupBlending; |
| @property BOOL allowsHitTesting; |
| @property BOOL canDrawConcurrently; |
| @property BOOL contentsOpaque; |
| @property BOOL hitTestsAsOpaque; |
| @property BOOL needsLayoutOnGeometryChange; |
| @property BOOL shadowPathIsBounds; |
| @property BOOL continuousCorners; |
| @end |
| |
| #if ENABLE(FILTERS_LEVEL_2) |
| @interface CABackdropLayer : CALayer |
| @property BOOL windowServerAware; |
| @end |
| #endif |
| |
| struct CAColorMatrix { |
| float m11, m12, m13, m14, m15; |
| float m21, m22, m23, m24, m25; |
| float m31, m32, m33, m34, m35; |
| float m41, m42, m43, m44, m45; |
| }; |
| typedef struct CAColorMatrix CAColorMatrix; |
| |
| @interface NSValue (CADetails) |
| + (NSValue *)valueWithCAColorMatrix:(CAColorMatrix)t; |
| @end |
| |
| @interface CAFilter : NSObject <NSCopying, NSMutableCopying, NSCoding> |
| @end |
| |
| @interface CAFilter () |
| + (CAFilter *)filterWithType:(NSString *)type; |
| @property (copy) NSString *name; |
| @end |
| |
| typedef enum { |
| kCATransactionPhasePreLayout, |
| kCATransactionPhasePreCommit, |
| kCATransactionPhasePostCommit, |
| kCATransactionPhaseNull = ~0u |
| } CATransactionPhase; |
| |
| @interface CATransaction () |
| + (void)addCommitHandler:(void(^)(void))block forPhase:(CATransactionPhase)phase; |
| + (CATransactionPhase)currentPhase; |
| + (void)synchronize; |
| @end |
| |
| @interface CALayerHost : CALayer |
| @property uint32_t contextId; |
| @property BOOL inheritsSecurity; |
| @end |
| |
| @interface CASpringAnimation (Private) |
| @property CGFloat velocity; |
| @end |
| |
| @interface CAMediaTimingFunction () |
| - (float)_solveForInput:(float)t; |
| @end |
| |
| #endif // __OBJC__ |
| |
| #endif |
| |
| WTF_EXTERN_C_BEGIN |
| |
| // FIXME: Declare these functions even when USE(APPLE_INTERNAL_SDK) is true once we can fix <rdar://problem/26584828> in a better way. |
| #if !USE(APPLE_INTERNAL_SDK) |
| void CARenderServerCaptureLayerWithTransform(mach_port_t, uint32_t clientId, uint64_t layerId, uint32_t slotId, int32_t ox, int32_t oy, const CATransform3D*); |
| |
| #if HAVE(IOSURFACE) |
| void CARenderServerRenderLayerWithTransform(mach_port_t server_port, uint32_t client_id, uint64_t layer_id, IOSurfaceRef, int32_t ox, int32_t oy, const CATransform3D*); |
| void CARenderServerRenderDisplayLayerWithTransformAndTimeOffset(mach_port_t, CFStringRef display_name, uint32_t client_id, uint64_t layer_id, IOSurfaceRef, int32_t ox, int32_t oy, const CATransform3D*, CFTimeInterval); |
| #else |
| typedef struct CARenderServerBuffer* CARenderServerBufferRef; |
| CARenderServerBufferRef CARenderServerCreateBuffer(size_t, size_t); |
| void CARenderServerDestroyBuffer(CARenderServerBufferRef); |
| size_t CARenderServerGetBufferWidth(CARenderServerBufferRef); |
| size_t CARenderServerGetBufferHeight(CARenderServerBufferRef); |
| size_t CARenderServerGetBufferRowBytes(CARenderServerBufferRef); |
| uint8_t* CARenderServerGetBufferData(CARenderServerBufferRef); |
| size_t CARenderServerGetBufferDataSize(CARenderServerBufferRef); |
| |
| bool CARenderServerRenderLayerWithTransform(mach_port_t, uint32_t client_id, uint64_t layer_id, CARenderServerBufferRef, int32_t ox, int32_t oy, const CATransform3D*); |
| #endif |
| #endif // USE(APPLE_INTERNAL_SDK) |
| |
| typedef struct _CAMachPort *CAMachPortRef; |
| CAMachPortRef CAMachPortCreate(mach_port_t); |
| mach_port_t CAMachPortGetPort(CAMachPortRef); |
| CFTypeID CAMachPortGetTypeID(void); |
| |
| void CABackingStoreCollectBlocking(void); |
| |
| typedef struct _CARenderCGContext CARenderCGContext; |
| typedef struct _CARenderContext CARenderContext; |
| typedef struct _CARenderUpdate CARenderUpdate; |
| CARenderCGContext *CARenderCGNew(uint32_t feature_flags); |
| CARenderUpdate* CARenderUpdateBegin(void* buffer, size_t, CFTimeInterval, const CVTimeStamp*, uint32_t finished_seed, const CGRect* bounds); |
| bool CARenderServerStart(); |
| mach_port_t CARenderServerGetPort(); |
| void CARenderCGDestroy(CARenderCGContext*); |
| void CARenderCGRender(CARenderCGContext*, CARenderUpdate*, CGContextRef); |
| void CARenderUpdateAddContext(CARenderUpdate*, CARenderContext*); |
| void CARenderUpdateAddRect(CARenderUpdate*, const CGRect*); |
| void CARenderUpdateFinish(CARenderUpdate*); |
| |
| WTF_EXTERN_C_END |
| |
| extern NSString * const kCAFilterColorInvert; |
| extern NSString * const kCAFilterColorMatrix; |
| extern NSString * const kCAFilterColorMonochrome; |
| extern NSString * const kCAFilterColorHueRotate; |
| extern NSString * const kCAFilterColorSaturate; |
| extern NSString * const kCAFilterGaussianBlur; |
| extern NSString * const kCAFilterPlusD; |
| extern NSString * const kCAFilterPlusL; |
| |
| extern NSString * const kCAFilterNormalBlendMode; |
| extern NSString * const kCAFilterMultiplyBlendMode; |
| extern NSString * const kCAFilterScreenBlendMode; |
| extern NSString * const kCAFilterOverlayBlendMode; |
| extern NSString * const kCAFilterDarkenBlendMode; |
| extern NSString * const kCAFilterLightenBlendMode; |
| extern NSString * const kCAFilterColorDodgeBlendMode; |
| extern NSString * const kCAFilterColorBurnBlendMode; |
| extern NSString * const kCAFilterSoftLightBlendMode; |
| extern NSString * const kCAFilterHardLightBlendMode; |
| extern NSString * const kCAFilterDifferenceBlendMode; |
| extern NSString * const kCAFilterExclusionBlendMode; |
| |
| extern NSString * const kCAContextCIFilterBehavior; |
| extern NSString * const kCAContextDisplayName; |
| extern NSString * const kCAContextDisplayId; |
| extern NSString * const kCAContextIgnoresHitTest; |
| extern NSString * const kCAContextPortNumber; |
| |
| #if PLATFORM(IOS_FAMILY) |
| extern NSString * const kCAContextSecure; |
| extern NSString * const kCAContentsFormatRGBA10XR; |
| #endif |
| |
| #if PLATFORM(MAC) |
| extern NSString * const kCAContentsFormatRGBA8ColorRGBA8LinearGlyphMask; |
| #endif |