bce8a8db46dad90cb3468c6b957bade1e9af0d61
[WebKit-https.git] / Source / WebCore / platform / spi / cg / CoreGraphicsSPI.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. ``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 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 CoreGraphicsSPI_h
27 #define CoreGraphicsSPI_h
28
29 #include <CoreFoundation/CoreFoundation.h>
30 #include <CoreGraphics/CoreGraphics.h>
31
32 #if USE(APPLE_INTERNAL_SDK)
33
34 #include <CoreGraphics/CGFontCache.h>
35 #include <CoreGraphics/CoreGraphicsPrivate.h>
36
37 #else
38 struct CGFontHMetrics {
39     int ascent;
40     int descent;
41     int lineGap;
42     int maxAdvanceWidth;
43     int minLeftSideBearing;
44     int minRightSideBearing;
45 };
46
47 struct CGFontDescriptor {
48     CGRect bbox;
49     CGFloat ascent;
50     CGFloat descent;
51     CGFloat capHeight;
52     CGFloat italicAngle;
53     CGFloat stemV;
54     CGFloat stemH;
55     CGFloat avgWidth;
56     CGFloat maxWidth;
57     CGFloat missingWidth;
58     CGFloat leading;
59     CGFloat xHeight;
60 };
61
62 typedef const struct CGColorTransform* CGColorTransformRef;
63
64 typedef enum {
65     kCGCompositeCopy = 1,
66     kCGCompositeSover = 2,
67 } CGCompositeOperation;
68
69 enum {
70     kCGFontRenderingStyleAntialiasing = 1 << 0,
71     kCGFontRenderingStyleSmoothing = 1 << 1,
72     kCGFontRenderingStyleSubpixelPositioning = 1 << 2,
73     kCGFontRenderingStyleSubpixelQuantization = 1 << 3,
74     kCGFontRenderingStylePlatformNative = 1 << 9,
75     kCGFontRenderingStyleMask = 0x20F,
76 };
77 typedef uint32_t CGFontRenderingStyle;
78
79 enum {
80     kCGFontAntialiasingStyleUnfiltered = 0 << 7,
81     kCGFontAntialiasingStyleFilterLight = 1 << 7,
82 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
83     kCGFontAntialiasingStyleUnfilteredCustomDilation = (8 << 7),
84 #endif
85 };
86 typedef uint32_t CGFontAntialiasingStyle;
87
88 enum {
89     kCGImageCachingTransient = 1,
90     kCGImageCachingTemporary = 3,
91 };
92 typedef uint32_t CGImageCachingFlags;
93
94 #if PLATFORM(COCOA)
95 typedef struct CGSRegionEnumeratorObject* CGSRegionEnumeratorObj;
96 typedef struct CGSRegionObject* CGSRegionObj;
97 typedef struct CGSRegionObject* CGRegionRef;
98 #endif
99
100 #ifdef CGFLOAT_IS_DOUBLE
101 #define CGRound(value) round((value))
102 #define CGFloor(value) floor((value))
103 #define CGCeiling(value) ceil((value))
104 #define CGFAbs(value) fabs((value))
105 #else
106 #define CGRound(value) roundf((value))
107 #define CGFloor(value) floorf((value))
108 #define CGCeiling(value) ceilf((value))
109 #define CGFAbs(value) fabsf((value))
110 #endif
111
112 static inline CGFloat CGFloatMin(CGFloat a, CGFloat b) { return isnan(a) ? b : ((isnan(b) || a < b) ? a : b); }
113
114 typedef struct CGFontCache CGFontCache;
115
116 #endif // USE(APPLE_INTERNAL_SDK)
117
118 WTF_EXTERN_C_BEGIN
119
120 CGColorRef CGColorTransformConvertColor(CGColorTransformRef, CGColorRef, CGColorRenderingIntent);
121 CGColorTransformRef CGColorTransformCreate(CGColorSpaceRef, CFDictionaryRef attributes);
122
123 CGAffineTransform CGContextGetBaseCTM(CGContextRef);
124 CGCompositeOperation CGContextGetCompositeOperation(CGContextRef);
125 CGColorRef CGContextGetFillColorAsColor(CGContextRef);
126 CGFloat CGContextGetLineWidth(CGContextRef);
127 bool CGContextGetShouldSmoothFonts(CGContextRef);
128 void CGContextSetBaseCTM(CGContextRef, CGAffineTransform);
129 void CGContextSetCTM(CGContextRef, CGAffineTransform);
130 void CGContextSetCompositeOperation(CGContextRef, CGCompositeOperation);
131 void CGContextSetShouldAntialiasFonts(CGContextRef, bool shouldAntialiasFonts);
132 #if PLATFORM(MAC) && __MAC_OS_X_VERSION_MIN_REQUIRED >= 101100
133 void CGContextSetFontDilation(CGContextRef, CGSize);
134 #endif
135
136 CFStringRef CGFontCopyFamilyName(CGFontRef);
137 bool CGFontGetDescriptor(CGFontRef, CGFontDescriptor*);
138 bool CGFontGetGlyphAdvancesForStyle(CGFontRef, const CGAffineTransform* , CGFontRenderingStyle, const CGGlyph[], size_t count, CGSize advances[]);
139 void CGFontGetGlyphsForUnichars(CGFontRef, const UniChar[], CGGlyph[], size_t count);
140 const CGFontHMetrics* CGFontGetHMetrics(CGFontRef);
141 const char* CGFontGetPostScriptName(CGFontRef);
142 bool CGFontIsFixedPitch(CGFontRef);
143 void CGFontSetShouldUseMulticache(bool);
144
145 void CGImageSetCachingFlags(CGImageRef, CGImageCachingFlags);
146 CGImageCachingFlags CGImageGetCachingFlags(CGImageRef);
147
148 CGDataProviderRef CGPDFDocumentGetDataProvider(CGPDFDocumentRef);
149
150 CGFontAntialiasingStyle CGContextGetFontAntialiasingStyle(CGContextRef);
151 void CGContextSetFontAntialiasingStyle(CGContextRef, CGFontAntialiasingStyle);
152
153 #if PLATFORM(COCOA)
154 CGSRegionEnumeratorObj CGSRegionEnumerator(CGRegionRef);
155 CGRect* CGSNextRect(const CGSRegionEnumeratorObj);
156 CGError CGSReleaseRegionEnumerator(const CGSRegionEnumeratorObj);
157 #endif
158
159 #if PLATFORM(WIN)
160 CGFontCache* CGFontCacheGetLocalCache();
161 void CGFontCacheSetShouldAutoExpire(CGFontCache*, bool);
162 void CGFontCacheSetMaxSize(CGFontCache*, size_t);
163 #endif
164
165 WTF_EXTERN_C_END
166
167 #endif // CoreGraphicsSPI_h