Chromium Code Reviews
chromiumcodereview-hr@appspot.gserviceaccount.com (chromiumcodereview-hr) | Please choose your nickname with Settings | Help | Chromium Project | Gerrit Changes | Sign out
(379)

Side by Side Diff: skia/ext/skia_utils_mac.h

Issue 2011713003: Roll skia to 8cc209111876b7c78b5ec577c9221d8ed5e21024 (Closed) Base URL: git@github.com:domokit/mojo.git@master
Patch Set: Created 4 years, 6 months ago
Use n/p to move between diff chunks; N/P to move between comments. Draft comments are only viewable by you.
Jump to:
View unified diff | Download patch
« no previous file with comments | « skia/ext/skia_utils_ios_unittest.mm ('k') | skia/ext/skia_utils_mac.mm » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
(Empty)
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file.
4
5 #ifndef SKIA_EXT_SKIA_UTILS_MAC_H_
6 #define SKIA_EXT_SKIA_UTILS_MAC_H_
7
8 #include <ApplicationServices/ApplicationServices.h>
9 #include <vector>
10
11 #include "third_party/skia/include/core/SkBitmap.h"
12 #include "third_party/skia/include/core/SkColor.h"
13
14 struct SkIRect;
15 struct SkPoint;
16 struct SkRect;
17 class SkCanvas;
18 class SkMatrix;
19 #ifdef __LP64__
20 typedef CGSize NSSize;
21 #else
22 typedef struct _NSSize NSSize;
23 #endif
24
25 #ifdef __OBJC__
26 @class NSBitmapImageRep;
27 @class NSImage;
28 @class NSImageRep;
29 @class NSColor;
30 #else
31 class NSBitmapImageRep;
32 class NSImage;
33 class NSImageRep;
34 class NSColor;
35 #endif
36
37 namespace gfx {
38
39 // Converts a Skia point to a CoreGraphics CGPoint.
40 // Both use same in-memory format.
41 inline const CGPoint& SkPointToCGPoint(const SkPoint& point) {
42 return reinterpret_cast<const CGPoint&>(point);
43 }
44
45 // Converts a CoreGraphics point to a Skia CGPoint.
46 // Both use same in-memory format.
47 inline const SkPoint& CGPointToSkPoint(const CGPoint& point) {
48 return reinterpret_cast<const SkPoint&>(point);
49 }
50
51 // Matrix converters.
52 SK_API CGAffineTransform SkMatrixToCGAffineTransform(const SkMatrix& matrix);
53
54 // Rectangle converters.
55 SK_API SkRect CGRectToSkRect(const CGRect& rect);
56
57 // Converts a Skia rect to a CoreGraphics CGRect.
58 CGRect SkIRectToCGRect(const SkIRect& rect);
59 CGRect SkRectToCGRect(const SkRect& rect);
60
61 // Converts CGColorRef to the ARGB layout Skia expects.
62 SK_API SkColor CGColorRefToSkColor(CGColorRef color);
63
64 // Converts ARGB to CGColorRef.
65 SK_API CGColorRef CGColorCreateFromSkColor(SkColor color);
66
67 // Converts NSColor to ARGB. Returns raw rgb values and does no colorspace
68 // conversion. Only valid for colors in calibrated and device color spaces.
69 SK_API SkColor NSDeviceColorToSkColor(NSColor* color);
70
71 // Converts ARGB in the specified color space to NSColor.
72 // Prefer sRGB over calibrated colors.
73 SK_API NSColor* SkColorToCalibratedNSColor(SkColor color);
74 SK_API NSColor* SkColorToDeviceNSColor(SkColor color);
75 SK_API NSColor* SkColorToSRGBNSColor(SkColor color);
76
77 // Converts a CGImage to a SkBitmap.
78 SK_API SkBitmap CGImageToSkBitmap(CGImageRef image);
79
80 // Draws an NSImage with a given size into a SkBitmap.
81 SK_API SkBitmap NSImageToSkBitmapWithColorSpace(NSImage* image,
82 bool is_opaque,
83 CGColorSpaceRef color_space);
84
85 // Draws an NSImageRep with a given size into a SkBitmap.
86 SK_API SkBitmap NSImageRepToSkBitmapWithColorSpace(NSImageRep* image,
87 NSSize size,
88 bool is_opaque,
89 CGColorSpaceRef colorspace);
90
91 // Given an SkBitmap, return an autoreleased NSBitmapImageRep in the generic
92 // color space.
93 SK_API NSBitmapImageRep* SkBitmapToNSBitmapImageRep(const SkBitmap& image);
94
95 SK_API NSBitmapImageRep* SkBitmapToNSBitmapImageRepWithColorSpace(
96 const SkBitmap& skiaBitmap,
97 CGColorSpaceRef colorSpace);
98
99 // Given an SkBitmap and a color space, return an autoreleased NSImage.
100 SK_API NSImage* SkBitmapToNSImageWithColorSpace(const SkBitmap& icon,
101 CGColorSpaceRef colorSpace);
102
103 // Given an SkBitmap, return an autoreleased NSImage in the generic color space.
104 // DEPRECATED, use SkBitmapToNSImageWithColorSpace() instead.
105 // TODO(thakis): Remove this -- http://crbug.com/69432
106 SK_API NSImage* SkBitmapToNSImage(const SkBitmap& icon);
107
108 // Converts a SkCanvas temporarily to a CGContext
109 class SK_API SkiaBitLocker {
110 public:
111 // TODO(ccameron): delete this constructor
112 explicit SkiaBitLocker(SkCanvas* canvas);
113 SkiaBitLocker(SkCanvas* canvas,
114 const SkIRect& userClipRect,
115 SkScalar bitmapScaleFactor = 1);
116 ~SkiaBitLocker();
117 CGContextRef cgContext();
118 bool hasEmptyClipRegion() const;
119
120 private:
121 void releaseIfNeeded();
122 SkIRect computeDirtyRect();
123
124 SkCanvas* canvas_;
125
126 // If the user specified a clip rect it would draw into then the locker may
127 // skip the step of searching for a rect bounding the pixels that the user
128 // has drawn into.
129 bool userClipRectSpecified_;
130
131 CGContextRef cgContext_;
132 SkBitmap bitmap_;
133 SkIPoint bitmapOffset_;
134 SkScalar bitmapScaleFactor_;
135
136 // True if we are drawing to |canvas_|'s SkBaseDevice's bits directly through
137 // |bitmap_|. Otherwise, the bits in |bitmap_| are our allocation and need to
138 // be copied over to |canvas_|.
139 bool useDeviceBits_;
140
141 // True if |bitmap_| is a dummy 1x1 bitmap allocated for the sake of creating
142 // a non-NULL CGContext (it is invalid to use a NULL CGContext), and will not
143 // be copied to |canvas_|. This will happen if |canvas_|'s clip region is
144 // empty.
145 bool bitmapIsDummy_;
146 };
147
148
149 } // namespace gfx
150
151 #endif // SKIA_EXT_SKIA_UTILS_MAC_H_
OLDNEW
« no previous file with comments | « skia/ext/skia_utils_ios_unittest.mm ('k') | skia/ext/skia_utils_mac.mm » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698