Don't use (Details) when exposing SPI
[WebKit-https.git] / Source / WebCore / platform / spi / cocoa / QuartzCoreSPI.h
1 /*
2  * Copyright (C) 2014 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 INC. AND ITS CONTRIBUTORS ``AS IS''
14  * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO,
15  * THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR
16  * PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL APPLE INC. OR ITS CONTRIBUTORS
17  * BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR
18  * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF
19  * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
20  * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN
21  * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE)
22  * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF
23  * THE POSSIBILITY OF SUCH DAMAGE.
24  */
25
26 #import <QuartzCore/QuartzCore.h>
27 #import <WebCore/IOSurfaceSPI.h>
28
29 #if USE(APPLE_INTERNAL_SDK)
30
31 #include <QuartzCore/CAColorMatrix.h>
32 #include <QuartzCore/CARenderServer.h>
33
34 #ifdef __OBJC__
35 #import <QuartzCore/CALayerHost.h>
36 #import <QuartzCore/CALayerPrivate.h>
37
38 #if PLATFORM(IOS)
39 #import <QuartzCore/CADisplay.h>
40 #endif
41
42 // FIXME: As a workaround for <rdar://problem/18985152>, we conditionally enclose the following
43 // headers in an extern "C" linkage block to make it suitable for Objective-C++ use. Once this
44 // bug has been fixed we can simply include header <QuartzCore/QuartzCorePrivate.h> instead of
45 // including specific QuartzCore headers.
46 #ifdef __cplusplus
47 extern "C" {
48 #endif
49
50 #import <QuartzCore/CAContext.h>
51 #import <QuartzCore/CAFilter.h>
52 #import <QuartzCore/CATiledLayerPrivate.h>
53 #import <QuartzCore/CATransactionPrivate.h>
54
55 #ifdef __cplusplus
56 }
57 #endif
58 #endif // __OBJC__
59
60 #else
61
62 #ifdef __OBJC__
63 @interface CAContext : NSObject
64 @end
65
66 @interface CAContext ()
67 + (NSArray *)allContexts;
68 + (CAContext *)remoteContextWithOptions:(NSDictionary *)dict;
69 + (id)objectForSlot:(uint32_t)name;
70 - (uint32_t)createImageSlot:(CGSize)size hasAlpha:(BOOL)flag;
71 - (void)deleteSlot:(uint32_t)name;
72 - (void)invalidate;
73 #if PLATFORM(IOS) || __MAC_OS_X_VERSION_MIN_REQUIRED >= 101000
74 - (mach_port_t)createFencePort;
75 - (void)setFencePort:(mach_port_t)port;
76 - (void)setFencePort:(mach_port_t)port commitHandler:(void(^)(void))block;
77 #endif
78 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
79 @property BOOL colorMatchUntaggedContent;
80 #endif
81 @property (readonly) uint32_t contextId;
82 @property (strong) CALayer *layer;
83 @property CGColorSpaceRef colorSpace;
84 @end
85
86 @interface CALayer ()
87 - (CAContext *)context;
88 - (CGSize)size;
89 - (void *)regionBeingDrawn;
90 - (void)setContentsChanged;
91 @property BOOL acceleratesDrawing;
92 @property BOOL allowsGroupBlending;
93 @property BOOL canDrawConcurrently;
94 @property BOOL contentsOpaque;
95 @property BOOL hitTestsAsOpaque;
96 @property BOOL needsLayoutOnGeometryChange;
97 @property BOOL shadowPathIsBounds;
98 @end
99
100 @interface CATiledLayer ()
101 - (void)displayInRect:(CGRect)rect levelOfDetail:(int)levelOfDetail options:(NSDictionary *)dictionary;
102 - (void)setNeedsDisplayInRect:(CGRect)rect levelOfDetail:(int)levelOfDetail options:(NSDictionary *)dictionary;
103 @end
104
105 #if PLATFORM(IOS)
106 @interface CADisplay : NSObject
107 @end
108
109 @interface CADisplay ()
110 @property (nonatomic, readonly) NSString *name;
111 @end
112 #endif
113
114 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
115 @interface CAOpenGLLayer ()
116 @property CGColorSpaceRef colorspace;
117 @end
118 #endif
119
120 struct CAColorMatrix {
121     float m11, m12, m13, m14, m15;
122     float m21, m22, m23, m24, m25;
123     float m31, m32, m33, m34, m35;
124     float m41, m42, m43, m44, m45;
125 };
126 typedef struct CAColorMatrix CAColorMatrix;
127
128 @interface NSValue (CADetails)
129 + (NSValue *)valueWithCAColorMatrix:(CAColorMatrix)t;
130 @end
131
132 @interface CAFilter : NSObject <NSCopying, NSMutableCopying, NSCoding>
133 @end
134
135 @interface CAFilter ()
136 + (CAFilter *)filterWithType:(NSString *)type;
137 @property (copy) NSString *name;
138 @end
139
140 #if (TARGET_OS_IPHONE && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
141 typedef enum {
142     kCATransactionPhasePreLayout,
143     kCATransactionPhasePreCommit,
144     kCATransactionPhasePostCommit,
145 } CATransactionPhase;
146
147 @interface CATransaction ()
148 + (void)addCommitHandler:(void(^)(void))block forPhase:(CATransactionPhase)phase;
149 @end
150 #endif
151
152 @interface CALayerHost : CALayer
153 @property uint32_t contextId;
154 @property BOOL inheritsSecurity;
155 @end
156
157 #endif // __OBJC__
158
159 #endif
160
161 EXTERN_C void CARenderServerCaptureLayerWithTransform(mach_port_t serverPort, uint32_t clientId, uint64_t layerId,
162                                                       uint32_t slotId, int32_t ox, int32_t oy, const CATransform3D *);
163
164 #if USE(IOSURFACE)
165 EXTERN_C void CARenderServerRenderLayerWithTransform(mach_port_t server_port, uint32_t client_id, uint64_t layer_id, IOSurfaceRef iosurface, int32_t ox, int32_t oy, const CATransform3D *matrix);
166 EXTERN_C void CARenderServerRenderDisplayLayerWithTransformAndTimeOffset(mach_port_t server_port, CFStringRef display_name, uint32_t client_id, uint64_t layer_id, IOSurfaceRef iosurface, int32_t ox, int32_t oy, const CATransform3D *matrix, CFTimeInterval offset);
167 #endif
168
169
170 // FIXME: Move this into the APPLE_INTERNAL_SDK block once it's in an SDK.
171 @interface CAContext (AdditionalDetails)
172 #if (PLATFORM(IOS) && __IPHONE_OS_VERSION_MIN_REQUIRED >= 90000) || (PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100)
173 - (void)invalidateFences;
174 #endif
175 @end
176
177 EXTERN_C NSString * const kCATiledLayerRemoveImmediately;
178
179 EXTERN_C NSString * const kCAFilterColorInvert;
180 EXTERN_C NSString * const kCAFilterColorMatrix;
181 EXTERN_C NSString * const kCAFilterColorMonochrome;
182 EXTERN_C NSString * const kCAFilterColorHueRotate;
183 EXTERN_C NSString * const kCAFilterColorSaturate;
184 EXTERN_C NSString * const kCAFilterGaussianBlur;
185 EXTERN_C NSString * const kCAFilterPlusD;
186 EXTERN_C NSString * const kCAFilterPlusL;
187
188 EXTERN_C NSString * const kCAFilterNormalBlendMode;
189 EXTERN_C NSString * const kCAFilterMultiplyBlendMode;
190 EXTERN_C NSString * const kCAFilterScreenBlendMode;
191 EXTERN_C NSString * const kCAFilterOverlayBlendMode;
192 EXTERN_C NSString * const kCAFilterDarkenBlendMode;
193 EXTERN_C NSString * const kCAFilterLightenBlendMode;
194 EXTERN_C NSString * const kCAFilterColorDodgeBlendMode;
195 EXTERN_C NSString * const kCAFilterColorBurnBlendMode;
196 EXTERN_C NSString * const kCAFilterSoftLightBlendMode;
197 EXTERN_C NSString * const kCAFilterHardLightBlendMode;
198 EXTERN_C NSString * const kCAFilterDifferenceBlendMode;
199 EXTERN_C NSString * const kCAFilterExclusionBlendMode;
200
201 EXTERN_C NSString * const kCAContextDisplayName;
202 EXTERN_C NSString * const kCAContextDisplayId;
203 EXTERN_C NSString * const kCAContextIgnoresHitTest;