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 159 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
170 } | 170 } |
171 | 171 |
172 // The device will own the HBITMAP, which corresponds to also owning the pixel | 172 // The device will own the HBITMAP, which corresponds to also owning the pixel |
173 // data. Therefore, we do not transfer ownership to the SkDevice's bitmap. | 173 // data. Therefore, we do not transfer ownership to the SkDevice's bitmap. |
174 BitmapPlatformDevice::BitmapPlatformDevice( | 174 BitmapPlatformDevice::BitmapPlatformDevice( |
175 BitmapPlatformDeviceData* data, | 175 BitmapPlatformDeviceData* data, |
176 const SkBitmap& bitmap) | 176 const SkBitmap& bitmap) |
177 : PlatformDevice(bitmap), | 177 : PlatformDevice(bitmap), |
178 data_(data) { | 178 data_(data) { |
179 // The data object is already ref'ed for us by create(). | 179 // The data object is already ref'ed for us by create(). |
| 180 SkDEBUGCODE(begin_paint_count_ = 0); |
180 } | 181 } |
181 | 182 |
182 // The copy constructor just adds another reference to the underlying data. | 183 // The copy constructor just adds another reference to the underlying data. |
183 // We use a const cast since the default Skia definitions don't define the | 184 // We use a const cast since the default Skia definitions don't define the |
184 // proper constedness that we expect (accessBitmap should really be const). | 185 // proper constedness that we expect (accessBitmap should really be const). |
185 BitmapPlatformDevice::BitmapPlatformDevice( | 186 BitmapPlatformDevice::BitmapPlatformDevice( |
186 const BitmapPlatformDevice& other) | 187 const BitmapPlatformDevice& other) |
187 : PlatformDevice( | 188 : PlatformDevice( |
188 const_cast<BitmapPlatformDevice&>(other).accessBitmap(true)), | 189 const_cast<BitmapPlatformDevice&>(other).accessBitmap(true)), |
189 data_(other.data_) { | 190 data_(other.data_) { |
190 data_->ref(); | 191 data_->ref(); |
| 192 SkDEBUGCODE(begin_paint_count_ = 0); |
191 } | 193 } |
192 | 194 |
193 BitmapPlatformDevice::~BitmapPlatformDevice() { | 195 BitmapPlatformDevice::~BitmapPlatformDevice() { |
| 196 SkASSERT(begin_paint_count_ == 0); |
194 data_->unref(); | 197 data_->unref(); |
195 } | 198 } |
196 | 199 |
197 BitmapPlatformDevice& BitmapPlatformDevice::operator=( | 200 BitmapPlatformDevice& BitmapPlatformDevice::operator=( |
198 const BitmapPlatformDevice& other) { | 201 const BitmapPlatformDevice& other) { |
199 data_ = other.data_; | 202 data_ = other.data_; |
200 data_->ref(); | 203 data_->ref(); |
201 return *this; | 204 return *this; |
202 } | 205 } |
203 | 206 |
204 HDC BitmapPlatformDevice::BeginPlatformPaint() { | 207 HDC BitmapPlatformDevice::BeginPlatformPaint() { |
| 208 SkDEBUGCODE(begin_paint_count_++); |
205 return data_->GetBitmapDC(); | 209 return data_->GetBitmapDC(); |
206 } | 210 } |
207 | 211 |
| 212 void BitmapPlatformDevice::EndPlatformPaint() { |
| 213 SkASSERT(begin_paint_count_--); |
| 214 PlatformDevice::EndPlatformPaint(); |
| 215 } |
| 216 |
208 void BitmapPlatformDevice::setMatrixClip(const SkMatrix& transform, | 217 void BitmapPlatformDevice::setMatrixClip(const SkMatrix& transform, |
209 const SkRegion& region, | 218 const SkRegion& region, |
210 const SkClipStack&) { | 219 const SkClipStack&) { |
211 data_->SetMatrixClip(transform, region); | 220 data_->SetMatrixClip(transform, region); |
212 } | 221 } |
213 | 222 |
214 void BitmapPlatformDevice::drawToHDC(HDC dc, int x, int y, | 223 void BitmapPlatformDevice::drawToHDC(HDC dc, int x, int y, |
215 const RECT* src_rect) { | 224 const RECT* src_rect) { |
216 bool created_dc = !data_->IsBitmapDCCreated(); | 225 bool created_dc = !data_->IsBitmapDCCreated(); |
217 HDC source_dc = BeginPlatformPaint(); | 226 HDC source_dc = BeginPlatformPaint(); |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
280 if (data_->IsBitmapDCCreated()) | 289 if (data_->IsBitmapDCCreated()) |
281 GdiFlush(); | 290 GdiFlush(); |
282 } | 291 } |
283 | 292 |
284 SkDeviceFactory* BitmapPlatformDevice::onNewDeviceFactory() { | 293 SkDeviceFactory* BitmapPlatformDevice::onNewDeviceFactory() { |
285 return SkNEW(BitmapPlatformDeviceFactory); | 294 return SkNEW(BitmapPlatformDeviceFactory); |
286 } | 295 } |
287 | 296 |
288 } // namespace skia | 297 } // namespace skia |
289 | 298 |
OLD | NEW |