OLD | NEW |
1 // Copyright 2013 The Chromium Authors. All rights reserved. | 1 // Copyright 2013 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/lazy_pixel_ref_utils.h" | 5 #include "skia/ext/lazy_pixel_ref_utils.h" |
6 | 6 |
7 #include "skia/ext/lazy_pixel_ref.h" | 7 #include "skia/ext/lazy_pixel_ref.h" |
| 8 #include "third_party/skia/include/core/SkBitmapDevice.h" |
8 #include "third_party/skia/include/core/SkCanvas.h" | 9 #include "third_party/skia/include/core/SkCanvas.h" |
9 #include "third_party/skia/include/core/SkData.h" | 10 #include "third_party/skia/include/core/SkData.h" |
10 #include "third_party/skia/include/core/SkDevice.h" | |
11 #include "third_party/skia/include/core/SkDraw.h" | 11 #include "third_party/skia/include/core/SkDraw.h" |
12 #include "third_party/skia/include/core/SkPixelRef.h" | 12 #include "third_party/skia/include/core/SkPixelRef.h" |
13 #include "third_party/skia/include/core/SkRRect.h" | 13 #include "third_party/skia/include/core/SkRRect.h" |
14 #include "third_party/skia/include/core/SkRect.h" | 14 #include "third_party/skia/include/core/SkRect.h" |
15 #include "third_party/skia/include/core/SkShader.h" | 15 #include "third_party/skia/include/core/SkShader.h" |
16 #include "third_party/skia/src/core/SkRasterClip.h" | 16 #include "third_party/skia/src/core/SkRasterClip.h" |
17 | 17 |
18 namespace skia { | 18 namespace skia { |
19 | 19 |
20 namespace { | 20 namespace { |
(...skipping 16 matching lines...) Expand all Loading... |
37 static_cast<skia::LazyPixelRef*>(pixel_ref); | 37 static_cast<skia::LazyPixelRef*>(pixel_ref); |
38 position_pixel_ref.pixel_ref_rect = rect; | 38 position_pixel_ref.pixel_ref_rect = rect; |
39 pixel_refs_->push_back(position_pixel_ref); | 39 pixel_refs_->push_back(position_pixel_ref); |
40 } | 40 } |
41 } | 41 } |
42 | 42 |
43 private: | 43 private: |
44 std::vector<LazyPixelRefUtils::PositionLazyPixelRef>* pixel_refs_; | 44 std::vector<LazyPixelRefUtils::PositionLazyPixelRef>* pixel_refs_; |
45 }; | 45 }; |
46 | 46 |
47 class GatherPixelRefDevice : public SkDevice { | 47 class GatherPixelRefDevice : public SkBitmapDevice { |
48 public: | 48 public: |
49 GatherPixelRefDevice(const SkBitmap& bm, LazyPixelRefSet* lazy_pixel_ref_set) | 49 GatherPixelRefDevice(const SkBitmap& bm, LazyPixelRefSet* lazy_pixel_ref_set) |
50 : SkDevice(bm), lazy_pixel_ref_set_(lazy_pixel_ref_set) {} | 50 : SkBitmapDevice(bm), lazy_pixel_ref_set_(lazy_pixel_ref_set) {} |
51 | 51 |
52 virtual void clear(SkColor color) SK_OVERRIDE {} | 52 virtual void clear(SkColor color) SK_OVERRIDE {} |
53 virtual void writePixels(const SkBitmap& bitmap, | 53 virtual void writePixels(const SkBitmap& bitmap, |
54 int x, | 54 int x, |
55 int y, | 55 int y, |
56 SkCanvas::Config8888 config8888) SK_OVERRIDE {} | 56 SkCanvas::Config8888 config8888) SK_OVERRIDE {} |
57 | 57 |
58 virtual void drawPaint(const SkDraw& draw, const SkPaint& paint) SK_OVERRIDE { | 58 virtual void drawPaint(const SkDraw& draw, const SkPaint& paint) SK_OVERRIDE { |
59 SkBitmap bitmap; | 59 SkBitmap bitmap; |
60 if (GetBitmapFromPaint(paint, &bitmap)) { | 60 if (GetBitmapFromPaint(paint, &bitmap)) { |
(...skipping 247 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
308 const SkPoint texs[], | 308 const SkPoint texs[], |
309 const SkColor colors[], | 309 const SkColor colors[], |
310 SkXfermode* xmode, | 310 SkXfermode* xmode, |
311 const uint16_t indices[], | 311 const uint16_t indices[], |
312 int index_count, | 312 int index_count, |
313 const SkPaint& paint) SK_OVERRIDE { | 313 const SkPaint& paint) SK_OVERRIDE { |
314 GatherPixelRefDevice::drawPoints( | 314 GatherPixelRefDevice::drawPoints( |
315 draw, SkCanvas::kPolygon_PointMode, vertex_count, verts, paint); | 315 draw, SkCanvas::kPolygon_PointMode, vertex_count, verts, paint); |
316 } | 316 } |
317 virtual void drawDevice(const SkDraw&, | 317 virtual void drawDevice(const SkDraw&, |
318 SkDevice*, | 318 SkBaseDevice*, |
319 int x, | 319 int x, |
320 int y, | 320 int y, |
321 const SkPaint&) SK_OVERRIDE {} | 321 const SkPaint&) SK_OVERRIDE {} |
322 | 322 |
323 protected: | 323 protected: |
324 virtual bool onReadPixels(const SkBitmap& bitmap, | 324 virtual bool onReadPixels(const SkBitmap& bitmap, |
325 int x, | 325 int x, |
326 int y, | 326 int y, |
327 SkCanvas::Config8888 config8888) SK_OVERRIDE { | 327 SkCanvas::Config8888 config8888) SK_OVERRIDE { |
328 return false; | 328 return false; |
(...skipping 13 matching lines...) Expand all Loading... |
342 // of bitmaps from gradient shaders, which implement asABitmap. | 342 // of bitmaps from gradient shaders, which implement asABitmap. |
343 if (SkShader::kNone_GradientType == shader->asAGradient(NULL)) | 343 if (SkShader::kNone_GradientType == shader->asAGradient(NULL)) |
344 return shader->asABitmap(bm, NULL, NULL); | 344 return shader->asABitmap(bm, NULL, NULL); |
345 } | 345 } |
346 return false; | 346 return false; |
347 } | 347 } |
348 }; | 348 }; |
349 | 349 |
350 class NoSaveLayerCanvas : public SkCanvas { | 350 class NoSaveLayerCanvas : public SkCanvas { |
351 public: | 351 public: |
352 NoSaveLayerCanvas(SkDevice* device) : INHERITED(device) {} | 352 NoSaveLayerCanvas(SkBaseDevice* device) : INHERITED(device) {} |
353 | 353 |
354 // Turn saveLayer() into save() for speed, should not affect correctness. | 354 // Turn saveLayer() into save() for speed, should not affect correctness. |
355 virtual int saveLayer(const SkRect* bounds, | 355 virtual int saveLayer(const SkRect* bounds, |
356 const SkPaint* paint, | 356 const SkPaint* paint, |
357 SaveFlags flags) SK_OVERRIDE { | 357 SaveFlags flags) SK_OVERRIDE { |
358 | 358 |
359 // Like SkPictureRecord, we don't want to create layers, but we do need | 359 // Like SkPictureRecord, we don't want to create layers, but we do need |
360 // to respect the save and (possibly) its rect-clip. | 360 // to respect the save and (possibly) its rect-clip. |
361 int count = this->INHERITED::save(flags); | 361 int count = this->INHERITED::save(flags); |
362 if (bounds) { | 362 if (bounds) { |
(...skipping 38 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
401 GatherPixelRefDevice device(empty_bitmap, &pixel_ref_set); | 401 GatherPixelRefDevice device(empty_bitmap, &pixel_ref_set); |
402 NoSaveLayerCanvas canvas(&device); | 402 NoSaveLayerCanvas canvas(&device); |
403 | 403 |
404 canvas.clipRect(SkRect::MakeWH(picture->width(), picture->height()), | 404 canvas.clipRect(SkRect::MakeWH(picture->width(), picture->height()), |
405 SkRegion::kIntersect_Op, | 405 SkRegion::kIntersect_Op, |
406 false); | 406 false); |
407 canvas.drawPicture(*picture); | 407 canvas.drawPicture(*picture); |
408 } | 408 } |
409 | 409 |
410 } // namespace skia | 410 } // namespace skia |
OLD | NEW |