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

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

Issue 1839113002: Limit manual control of platform painting (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: Privatize Created 4 years, 8 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/bitmap_platform_device_win.cc ('k') | skia/ext/platform_canvas.cc » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright (c) 2011 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2011 The Chromium Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style license that can be 2 // Use of this source code is governed by a BSD-style license that can be
3 // found in the LICENSE file. 3 // found in the LICENSE file.
4 4
5 #ifndef SKIA_EXT_PLATFORM_CANVAS_H_ 5 #ifndef SKIA_EXT_PLATFORM_CANVAS_H_
6 #define SKIA_EXT_PLATFORM_CANVAS_H_ 6 #define SKIA_EXT_PLATFORM_CANVAS_H_
7 7
8 #include <stddef.h> 8 #include <stddef.h>
9 #include <stdint.h> 9 #include <stdint.h>
10 10
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after
138 // Returns false on failure: if either argument is nullptr, or if the 138 // Returns false on failure: if either argument is nullptr, or if the
139 // pixels can not be retrieved from the canvas. In the latter case resets 139 // pixels can not be retrieved from the canvas. In the latter case resets
140 // the pixmap to empty. 140 // the pixmap to empty.
141 SK_API bool GetWritablePixels(SkCanvas* canvas, SkPixmap* pixmap); 141 SK_API bool GetWritablePixels(SkCanvas* canvas, SkPixmap* pixmap);
142 142
143 // Returns true if native platform routines can be used to draw on the 143 // Returns true if native platform routines can be used to draw on the
144 // given canvas. If this function returns false, BeginPlatformPaint will 144 // given canvas. If this function returns false, BeginPlatformPaint will
145 // return NULL PlatformSurface. 145 // return NULL PlatformSurface.
146 SK_API bool SupportsPlatformPaint(const SkCanvas* canvas); 146 SK_API bool SupportsPlatformPaint(const SkCanvas* canvas);
147 147
148 // These calls should surround calls to platform drawing routines, the 148 // This object guards calls to platform drawing routines. The surface
149 // surface returned here can be used with the native platform routines. 149 // returned from GetPlatformSurface() can be used with the native platform
150 // 150 // routines.
151 // Call EndPlatformPaint when you are done and want to use skia operations
152 // after calling the platform-specific BeginPlatformPaint; this will
153 // synchronize the bitmap to OS if necessary.
154 SK_API PlatformSurface BeginPlatformPaint(SkCanvas* canvas);
155 SK_API void EndPlatformPaint(SkCanvas* canvas);
156
157 // Helper class for pairing calls to BeginPlatformPaint and EndPlatformPaint.
158 // Upon construction invokes BeginPlatformPaint, and upon destruction invokes
159 // EndPlatformPaint.
160 class SK_API ScopedPlatformPaint { 151 class SK_API ScopedPlatformPaint {
161 public: 152 public:
162 explicit ScopedPlatformPaint(SkCanvas* canvas) : canvas_(canvas) { 153 explicit ScopedPlatformPaint(SkCanvas* canvas);
163 platform_surface_ = BeginPlatformPaint(canvas);
164 }
165 ~ScopedPlatformPaint() { EndPlatformPaint(canvas_); }
166 154
167 // Returns the PlatformSurface to use for native platform drawing calls. 155 // Returns the PlatformSurface to use for native platform drawing calls.
168 PlatformSurface GetPlatformSurface() { return platform_surface_; } 156 PlatformSurface GetPlatformSurface() { return platform_surface_; }
157
169 private: 158 private:
170 SkCanvas* canvas_; 159 SkCanvas* canvas_;
171 PlatformSurface platform_surface_; 160 PlatformSurface platform_surface_;
172 161
173 // Disallow copy and assign 162 // Disallow copy and assign
174 ScopedPlatformPaint(const ScopedPlatformPaint&); 163 ScopedPlatformPaint(const ScopedPlatformPaint&);
175 ScopedPlatformPaint& operator=(const ScopedPlatformPaint&); 164 ScopedPlatformPaint& operator=(const ScopedPlatformPaint&);
176 }; 165 };
177 166
178 // Following routines are used in print preview workflow to mark the 167 // Following routines are used in print preview workflow to mark the
179 // preview metafile. 168 // preview metafile.
180 SK_API SkMetaData& GetMetaData(const SkCanvas& canvas); 169 SK_API SkMetaData& GetMetaData(const SkCanvas& canvas);
181 170
182 #if defined(OS_MACOSX) 171 #if defined(OS_MACOSX)
183 SK_API void SetIsPreviewMetafile(const SkCanvas& canvas, bool is_preview); 172 SK_API void SetIsPreviewMetafile(const SkCanvas& canvas, bool is_preview);
184 SK_API bool IsPreviewMetafile(const SkCanvas& canvas); 173 SK_API bool IsPreviewMetafile(const SkCanvas& canvas);
185 174
186 // Returns the CGContext that backing the SkCanvas. 175 // Returns the CGContext that backing the SkCanvas.
187 // Returns NULL if none is bound. 176 // Returns NULL if none is bound.
188 SK_API CGContextRef GetBitmapContext(const SkCanvas& canvas); 177 SK_API CGContextRef GetBitmapContext(const SkCanvas& canvas);
189 #endif 178 #endif
190 179
191 } // namespace skia 180 } // namespace skia
192 181
193 #endif // SKIA_EXT_PLATFORM_CANVAS_H_ 182 #endif // SKIA_EXT_PLATFORM_CANVAS_H_
OLDNEW
« no previous file with comments | « skia/ext/bitmap_platform_device_win.cc ('k') | skia/ext/platform_canvas.cc » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698