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

Side by Side Diff: skia/ext/bitmap_platform_device_mac.cc

Issue 11418217: Add skia::RefPtr class to wrap ref counted classes from Skia. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src
Patch Set: nit+rebase Created 8 years 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 | Annotate | Revision Log
« no previous file with comments | « skia/ext/bitmap_platform_device_mac.h ('k') | skia/ext/bitmap_platform_device_win.h » ('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) 2012 The Chromium Authors. All rights reserved. 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 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 #include "skia/ext/bitmap_platform_device_mac.h" 5 #include "skia/ext/bitmap_platform_device_mac.h"
6 6
7 #import <ApplicationServices/ApplicationServices.h> 7 #import <ApplicationServices/ApplicationServices.h>
8 #include <time.h> 8 #include <time.h>
9 9
10 #include "base/mac/mac_util.h" 10 #include "base/mac/mac_util.h"
(...skipping 138 matching lines...) Expand 10 before | Expand all | Expand 10 after
149 #endif 149 #endif
150 150
151 if (!context) { 151 if (!context) {
152 context = CGContextForData(data, width, height); 152 context = CGContextForData(data, width, height);
153 if (!context) 153 if (!context)
154 return NULL; 154 return NULL;
155 } else 155 } else
156 CGContextRetain(context); 156 CGContextRetain(context);
157 157
158 BitmapPlatformDevice* rv = new BitmapPlatformDevice( 158 BitmapPlatformDevice* rv = new BitmapPlatformDevice(
159 new BitmapPlatformDeviceData(context), bitmap); 159 skia::AdoptRef(new BitmapPlatformDeviceData(context)), bitmap);
160 160
161 // The device object took ownership of the graphics context with its own 161 // The device object took ownership of the graphics context with its own
162 // CGContextRetain call. 162 // CGContextRetain call.
163 CGContextRelease(context); 163 CGContextRelease(context);
164 164
165 return rv; 165 return rv;
166 } 166 }
167 167
168 BitmapPlatformDevice* BitmapPlatformDevice::CreateAndClear(int width, 168 BitmapPlatformDevice* BitmapPlatformDevice::CreateAndClear(int width,
169 int height, 169 int height,
(...skipping 18 matching lines...) Expand all
188 // CGContextRetain call. 188 // CGContextRetain call.
189 if (context) 189 if (context)
190 CGContextRelease(context); 190 CGContextRelease(context);
191 191
192 return rv; 192 return rv;
193 } 193 }
194 194
195 // The device will own the bitmap, which corresponds to also owning the pixel 195 // The device will own the bitmap, which corresponds to also owning the pixel
196 // data. Therefore, we do not transfer ownership to the SkDevice's bitmap. 196 // data. Therefore, we do not transfer ownership to the SkDevice's bitmap.
197 BitmapPlatformDevice::BitmapPlatformDevice( 197 BitmapPlatformDevice::BitmapPlatformDevice(
198 BitmapPlatformDeviceData* data, const SkBitmap& bitmap) 198 const skia::RefPtr<BitmapPlatformDeviceData>& data, const SkBitmap& bitmap)
199 : SkDevice(bitmap), 199 : SkDevice(bitmap),
200 data_(data) { 200 data_(data) {
201 SetPlatformDevice(this, this); 201 SetPlatformDevice(this, this);
202 } 202 }
203 203
204 BitmapPlatformDevice::~BitmapPlatformDevice() { 204 BitmapPlatformDevice::~BitmapPlatformDevice() {
205 data_->unref();
206 } 205 }
207 206
208 CGContextRef BitmapPlatformDevice::GetBitmapContext() { 207 CGContextRef BitmapPlatformDevice::GetBitmapContext() {
209 data_->LoadConfig(); 208 data_->LoadConfig();
210 return data_->bitmap_context(); 209 return data_->bitmap_context();
211 } 210 }
212 211
213 void BitmapPlatformDevice::setMatrixClip(const SkMatrix& transform, 212 void BitmapPlatformDevice::setMatrixClip(const SkMatrix& transform,
214 const SkRegion& region, 213 const SkRegion& region,
215 const SkClipStack&) { 214 const SkClipStack&) {
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after
258 SkASSERT(config == SkBitmap::kARGB_8888_Config); 257 SkASSERT(config == SkBitmap::kARGB_8888_Config);
259 SkDevice* bitmap_device = BitmapPlatformDevice::CreateAndClear(width, height, 258 SkDevice* bitmap_device = BitmapPlatformDevice::CreateAndClear(width, height,
260 isOpaque); 259 isOpaque);
261 return bitmap_device; 260 return bitmap_device;
262 } 261 }
263 262
264 // PlatformCanvas impl 263 // PlatformCanvas impl
265 264
266 SkCanvas* CreatePlatformCanvas(CGContextRef ctx, int width, int height, 265 SkCanvas* CreatePlatformCanvas(CGContextRef ctx, int width, int height,
267 bool is_opaque, OnFailureType failureType) { 266 bool is_opaque, OnFailureType failureType) {
268 SkDevice* dev = BitmapPlatformDevice::Create(ctx, width, height, is_opaque); 267 skia::RefPtr<SkDevice> dev = skia::AdoptRef(
268 BitmapPlatformDevice::Create(ctx, width, height, is_opaque));
269 return CreateCanvas(dev, failureType); 269 return CreateCanvas(dev, failureType);
270 } 270 }
271 271
272 SkCanvas* CreatePlatformCanvas(int width, int height, bool is_opaque, 272 SkCanvas* CreatePlatformCanvas(int width, int height, bool is_opaque,
273 uint8_t* data, OnFailureType failureType) { 273 uint8_t* data, OnFailureType failureType) {
274 SkDevice* dev = BitmapPlatformDevice::CreateWithData(data, width, height, 274 skia::RefPtr<SkDevice> dev = skia::AdoptRef(
275 is_opaque); 275 BitmapPlatformDevice::CreateWithData(data, width, height, is_opaque));
276 return CreateCanvas(dev, failureType); 276 return CreateCanvas(dev, failureType);
277 } 277 }
278 278
279 // Port of PlatformBitmap to mac 279 // Port of PlatformBitmap to mac
280 280
281 PlatformBitmap::~PlatformBitmap() { 281 PlatformBitmap::~PlatformBitmap() {
282 if (surface_) 282 if (surface_)
283 CGContextRelease(surface_); 283 CGContextRelease(surface_);
284 } 284 }
285 285
286 bool PlatformBitmap::Allocate(int width, int height, bool is_opaque) { 286 bool PlatformBitmap::Allocate(int width, int height, bool is_opaque) {
287 if (RasterDeviceTooBigToAllocate(width, height)) 287 if (RasterDeviceTooBigToAllocate(width, height))
288 return false; 288 return false;
289 289
290 bitmap_.setConfig(SkBitmap::kARGB_8888_Config, width, height, width * 4); 290 bitmap_.setConfig(SkBitmap::kARGB_8888_Config, width, height, width * 4);
291 if (!bitmap_.allocPixels()) 291 if (!bitmap_.allocPixels())
292 return false; 292 return false;
293 293
294 if (!is_opaque) 294 if (!is_opaque)
295 bitmap_.eraseColor(0); 295 bitmap_.eraseColor(0);
296 bitmap_.setIsOpaque(is_opaque); 296 bitmap_.setIsOpaque(is_opaque);
297 297
298 surface_ = CGContextForData(bitmap_.getPixels(), bitmap_.width(), 298 surface_ = CGContextForData(bitmap_.getPixels(), bitmap_.width(),
299 bitmap_.height()); 299 bitmap_.height());
300 return true; 300 return true;
301 } 301 }
302 302
303 } // namespace skia 303 } // namespace skia
OLDNEW
« no previous file with comments | « skia/ext/bitmap_platform_device_mac.h ('k') | skia/ext/bitmap_platform_device_win.h » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698