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

Unified Diff: skia/ext/bitmap_platform_device_win.cc

Issue 9416017: Optionally clear PlatformCanvas instances. (Closed) Base URL: svn://svn.chromium.org/chrome/trunk/src/
Patch Set: Address comments & add BitmapPlatformDevice::CreateAndClear. Created 8 years, 9 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 side-by-side diff with in-line comments
Download patch
Index: skia/ext/bitmap_platform_device_win.cc
===================================================================
--- skia/ext/bitmap_platform_device_win.cc (revision 126621)
+++ skia/ext/bitmap_platform_device_win.cc (working copy)
@@ -87,7 +87,7 @@
// that we can create the pixel data before calling the constructor. This is
// required so that we can call the base class' constructor with the pixel
// data.
-BitmapPlatformDevice* BitmapPlatformDevice::create(
+BitmapPlatformDevice* BitmapPlatformDevice::Create(
HDC screen_dc,
int width,
int height,
@@ -136,8 +136,6 @@
// obviously wrong so it will be noticable when it is not cleared
bitmap.eraseARGB(255, 0, 255, 128); // bright bluish green
#endif
- } else {
- bitmap.eraseARGB(0, 0, 0, 0);
}
}
@@ -148,17 +146,34 @@
}
// static
-BitmapPlatformDevice* BitmapPlatformDevice::create(int width,
+BitmapPlatformDevice* BitmapPlatformDevice::Create(int width,
int height,
bool is_opaque,
HANDLE shared_section) {
HDC screen_dc = GetDC(NULL);
- BitmapPlatformDevice* device = BitmapPlatformDevice::create(
+ BitmapPlatformDevice* device = BitmapPlatformDevice::Create(
screen_dc, width, height, is_opaque, shared_section);
ReleaseDC(NULL, screen_dc);
return device;
}
+// static
+BitmapPlatformDevice* BitmapPlatformDevice::Create(int width, int height,
+ bool is_opaque) {
+ return Create(width, height, is_opaque, NULL);
+}
+
+// static
+BitmapPlatformDevice* BitmapPlatformDevice::CreateAndClear(int width,
+ int height,
+ bool is_opaque) {
+ BitmapPlatformDevice* device = BitmapPlatformDevice::Create(width, height,
+ is_opaque);
+ if (!is_opaque)
+ device->accessBitmap(true).eraseARGB(0, 0, 0, 0);
+ return device;
+}
+
// The device will own the HBITMAP, which corresponds to also owning the pixel
// data. Therefore, we do not transfer ownership to the SkDevice's bitmap.
BitmapPlatformDevice::BitmapPlatformDevice(
@@ -259,7 +274,9 @@
SkBitmap::Config config, int width, int height, bool isOpaque,
Usage /*usage*/) {
SkASSERT(config == SkBitmap::kARGB_8888_Config);
- return BitmapPlatformDevice::create(width, height, isOpaque, NULL);
+ SkDevice* bitmap_device = BitmapPlatformDevice::CreateAndClear(width, height,
+ isOpaque);
+ return bitmap_device;
}
} // namespace skia

Powered by Google App Engine
This is Rietveld 408576698