Index: skia/ext/bitmap_platform_device_win.cc |
=================================================================== |
--- skia/ext/bitmap_platform_device_win.cc (revision 96545) |
+++ skia/ext/bitmap_platform_device_win.cc (working copy) |
@@ -88,7 +88,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( |
+SkDevice* BitmapPlatformDevice::create( |
HDC screen_dc, |
int width, |
int height, |
@@ -142,20 +142,27 @@ |
} |
} |
+ SkDevice* new_device = new SkDevice(bitmap); |
// The device object will take ownership of the HBITMAP. The initial refcount |
// of the data object will be 1, which is what the constructor expects. |
- return new BitmapPlatformDevice(new BitmapPlatformDeviceData(hbitmap), |
- bitmap); |
+ BitmapPlatformDevice* bitmap_platform_device = |
+ new BitmapPlatformDevice(new BitmapPlatformDeviceData(hbitmap), |
+ new_device); |
+ return new_device; |
} |
// static |
-BitmapPlatformDevice* BitmapPlatformDevice::create(int width, |
- int height, |
- bool is_opaque, |
- HANDLE shared_section) { |
+SkDevice* BitmapPlatformDevice::create(int width, |
+ int height, |
+ bool is_opaque, |
+ HANDLE shared_section) { |
HDC screen_dc = GetDC(NULL); |
+#if 0 |
BitmapPlatformDevice* device = BitmapPlatformDevice::create( |
screen_dc, width, height, is_opaque, shared_section); |
+#endif |
+ SkDevice* device = BitmapPlatformDevice::create(screen_dc, width, height, |
+ is_opaque, shared_section); |
ReleaseDC(NULL, screen_dc); |
return device; |
} |
@@ -164,11 +171,15 @@ |
// data. Therefore, we do not transfer ownership to the SkDevice's bitmap. |
BitmapPlatformDevice::BitmapPlatformDevice( |
BitmapPlatformDeviceData* data, |
- const SkBitmap& bitmap) |
- : PlatformDevice(bitmap), |
+ SkDevice* device |
+ /*const SkBitmap& bitmap*/) |
+ : /*PlatformDevice(bitmap),*/ |
+ PlatformDevice(device), |
data_(data) { |
// The data object is already ref'ed for us by create(). |
SkDEBUGCODE(begin_paint_count_ = 0); |
+ |
+ GetOwningDevice()->setMatrixClipObserver(this); |
} |
BitmapPlatformDevice::~BitmapPlatformDevice() { |
@@ -183,14 +194,24 @@ |
void BitmapPlatformDevice::EndPlatformPaint() { |
SkASSERT(begin_paint_count_--); |
+ if (data_->IsBitmapDCCreated()) |
+ GdiFlush(); |
PlatformDevice::EndPlatformPaint(); |
} |
+void BitmapPlatformDevice::matrixClipChanged(const SkMatrix& transform, |
+ const SkRegion& region, |
+ const SkClipStack&) { |
+ data_->SetMatrixClip(transform, region); |
+} |
+ |
+#if 0 |
void BitmapPlatformDevice::setMatrixClip(const SkMatrix& transform, |
const SkRegion& region, |
const SkClipStack&) { |
data_->SetMatrixClip(transform, region); |
} |
+#endif |
void BitmapPlatformDevice::DrawToNativeContext(HDC dc, int x, int y, |
const RECT* src_rect) { |
@@ -200,9 +221,9 @@ |
RECT temp_rect; |
if (!src_rect) { |
temp_rect.left = 0; |
- temp_rect.right = width(); |
+ temp_rect.right = GetOwningDevice()->width(); |
temp_rect.top = 0; |
- temp_rect.bottom = height(); |
+ temp_rect.bottom = GetOwningDevice()->height(); |
src_rect = &temp_rect; |
} |
@@ -215,7 +236,7 @@ |
identity.reset(); |
LoadTransformToDC(source_dc, identity); |
- if (isOpaque()) { |
+ if (GetOwningDevice()->isOpaque()) { |
BitBlt(dc, |
x, |
y, |
@@ -247,19 +268,23 @@ |
data_->ReleaseBitmapDC(); |
} |
+#if 0 |
void BitmapPlatformDevice::onAccessBitmap(SkBitmap* bitmap) { |
// FIXME(brettw) OPTIMIZATION: We should only flush if we know a GDI |
// operation has occurred on our DC. |
if (data_->IsBitmapDCCreated()) |
GdiFlush(); |
} |
+#endif |
+#if 0 |
SkDevice* BitmapPlatformDevice::onCreateCompatibleDevice( |
SkBitmap::Config config, int width, int height, bool isOpaque, |
Usage /*usage*/) { |
SkASSERT(config == SkBitmap::kARGB_8888_Config); |
return BitmapPlatformDevice::create(width, height, isOpaque, NULL); |
} |
+#endif |
} // namespace skia |