| OLD | NEW |
| 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 #include <windows.h> | 5 #include <windows.h> |
| 6 #include <psapi.h> | 6 #include <psapi.h> |
| 7 | 7 |
| 8 #include "skia/ext/bitmap_platform_device_win.h" | 8 #include "skia/ext/bitmap_platform_device_win.h" |
| 9 | 9 |
| 10 #include "skia/ext/bitmap_platform_device_data.h" | 10 #include "skia/ext/bitmap_platform_device_data.h" |
| (...skipping 202 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 213 SkASSERT(begin_paint_count_--); | 213 SkASSERT(begin_paint_count_--); |
| 214 PlatformDevice::EndPlatformPaint(); | 214 PlatformDevice::EndPlatformPaint(); |
| 215 } | 215 } |
| 216 | 216 |
| 217 void BitmapPlatformDevice::setMatrixClip(const SkMatrix& transform, | 217 void BitmapPlatformDevice::setMatrixClip(const SkMatrix& transform, |
| 218 const SkRegion& region, | 218 const SkRegion& region, |
| 219 const SkClipStack&) { | 219 const SkClipStack&) { |
| 220 data_->SetMatrixClip(transform, region); | 220 data_->SetMatrixClip(transform, region); |
| 221 } | 221 } |
| 222 | 222 |
| 223 void BitmapPlatformDevice::drawToHDC(HDC dc, int x, int y, | 223 void BitmapPlatformDevice::DrawToNativeContext(HDC dc, int x, int y, |
| 224 const RECT* src_rect) { | 224 const RECT* src_rect) { |
| 225 bool created_dc = !data_->IsBitmapDCCreated(); | 225 bool created_dc = !data_->IsBitmapDCCreated(); |
| 226 HDC source_dc = BeginPlatformPaint(); | 226 HDC source_dc = BeginPlatformPaint(); |
| 227 | 227 |
| 228 RECT temp_rect; | 228 RECT temp_rect; |
| 229 if (!src_rect) { | 229 if (!src_rect) { |
| 230 temp_rect.left = 0; | 230 temp_rect.left = 0; |
| 231 temp_rect.right = width(); | 231 temp_rect.right = width(); |
| 232 temp_rect.top = 0; | 232 temp_rect.top = 0; |
| 233 temp_rect.bottom = height(); | 233 temp_rect.bottom = height(); |
| 234 src_rect = &temp_rect; | 234 src_rect = &temp_rect; |
| (...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 268 copy_height, | 268 copy_height, |
| 269 blend_function); | 269 blend_function); |
| 270 } | 270 } |
| 271 LoadTransformToDC(source_dc, data_->transform()); | 271 LoadTransformToDC(source_dc, data_->transform()); |
| 272 | 272 |
| 273 EndPlatformPaint(); | 273 EndPlatformPaint(); |
| 274 if (created_dc) | 274 if (created_dc) |
| 275 data_->ReleaseBitmapDC(); | 275 data_->ReleaseBitmapDC(); |
| 276 } | 276 } |
| 277 | 277 |
| 278 // Returns the color value at the specified location. | |
| 279 SkColor BitmapPlatformDevice::getColorAt(int x, int y) { | |
| 280 const SkBitmap& bitmap = accessBitmap(false); | |
| 281 SkAutoLockPixels lock(bitmap); | |
| 282 uint32_t* data = bitmap.getAddr32(0, 0); | |
| 283 return static_cast<SkColor>(data[x + y * width()]); | |
| 284 } | |
| 285 | |
| 286 void BitmapPlatformDevice::onAccessBitmap(SkBitmap* bitmap) { | 278 void BitmapPlatformDevice::onAccessBitmap(SkBitmap* bitmap) { |
| 287 // FIXME(brettw) OPTIMIZATION: We should only flush if we know a GDI | 279 // FIXME(brettw) OPTIMIZATION: We should only flush if we know a GDI |
| 288 // operation has occurred on our DC. | 280 // operation has occurred on our DC. |
| 289 if (data_->IsBitmapDCCreated()) | 281 if (data_->IsBitmapDCCreated()) |
| 290 GdiFlush(); | 282 GdiFlush(); |
| 291 } | 283 } |
| 292 | 284 |
| 293 SkDeviceFactory* BitmapPlatformDevice::onNewDeviceFactory() { | 285 SkDeviceFactory* BitmapPlatformDevice::onNewDeviceFactory() { |
| 294 return SkNEW(BitmapPlatformDeviceFactory); | 286 return SkNEW(BitmapPlatformDeviceFactory); |
| 295 } | 287 } |
| 296 | 288 |
| 297 } // namespace skia | 289 } // namespace skia |
| 298 | 290 |
| OLD | NEW |