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

Side by Side Diff: cc/playback/image_hijack_canvas.cc

Issue 1925433002: Replace SkTLazy with base::Optional (Closed) Base URL: https://chromium.googlesource.com/chromium/src.git@master
Patch Set: No Optional Created 4 years, 7 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 unified diff | Download patch
« no previous file with comments | « no previous file | cc/playback/raster_source.cc » ('j') | skia/ext/benchmarking_canvas.cc » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 // Copyright 2016 The Chromium Authors. All rights reserved. 1 // Copyright 2016 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 "cc/playback/image_hijack_canvas.h" 5 #include "cc/playback/image_hijack_canvas.h"
6 6
7 #include "base/optional.h"
7 #include "cc/playback/discardable_image_map.h" 8 #include "cc/playback/discardable_image_map.h"
8 #include "cc/tiles/image_decode_controller.h" 9 #include "cc/tiles/image_decode_controller.h"
9 #include "third_party/skia/include/core/SkTLazy.h"
10 10
11 namespace cc { 11 namespace cc {
12 namespace { 12 namespace {
13 13
14 SkIRect RoundOutRect(const SkRect& rect) { 14 SkIRect RoundOutRect(const SkRect& rect) {
15 SkIRect result; 15 SkIRect result;
16 rect.roundOut(&result); 16 rect.roundOut(&result);
17 return result; 17 return result;
18 } 18 }
19 19
20 class ScopedDecodedImageLock { 20 class ScopedDecodedImageLock {
21 public: 21 public:
22 ScopedDecodedImageLock(ImageDecodeController* image_decode_controller, 22 ScopedDecodedImageLock(ImageDecodeController* image_decode_controller,
23 sk_sp<const SkImage> image, 23 sk_sp<const SkImage> image,
24 const SkRect& src_rect, 24 const SkRect& src_rect,
25 const SkMatrix& matrix, 25 const SkMatrix& matrix,
26 const SkPaint* paint) 26 const SkPaint* paint)
27 : image_decode_controller_(image_decode_controller), 27 : image_decode_controller_(image_decode_controller),
28 draw_image_(std::move(image), 28 draw_image_(std::move(image),
29 RoundOutRect(src_rect), 29 RoundOutRect(src_rect),
30 paint ? paint->getFilterQuality() : kNone_SkFilterQuality, 30 paint ? paint->getFilterQuality() : kNone_SkFilterQuality,
31 matrix), 31 matrix),
32 decoded_draw_image_( 32 decoded_draw_image_(
33 image_decode_controller_->GetDecodedImageForDraw(draw_image_)) { 33 image_decode_controller_->GetDecodedImageForDraw(draw_image_)) {
34 DCHECK(draw_image_.image()->isLazyGenerated()); 34 DCHECK(draw_image_.image()->isLazyGenerated());
35 if (paint) 35 if (paint) {
36 decoded_paint_.set(*paint)->setFilterQuality( 36 decoded_paint_ = *paint;
37 decoded_draw_image_.filter_quality()); 37 decoded_paint_->setFilterQuality(decoded_draw_image_.filter_quality());
38 }
38 } 39 }
39 40
40 ~ScopedDecodedImageLock() { 41 ~ScopedDecodedImageLock() {
41 image_decode_controller_->DrawWithImageFinished(draw_image_, 42 image_decode_controller_->DrawWithImageFinished(draw_image_,
42 decoded_draw_image_); 43 decoded_draw_image_);
43 } 44 }
44 45
45 const DecodedDrawImage& decoded_image() const { return decoded_draw_image_; } 46 const DecodedDrawImage& decoded_image() const { return decoded_draw_image_; }
46 const SkPaint* decoded_paint() const { return decoded_paint_.getMaybeNull(); } 47 const SkPaint* decoded_paint() const {
48 return decoded_paint_ ? &(*decoded_paint_) : nullptr;
bungeman-chromium 2016/04/27 19:59:34 danakj wanted this to just look like &*decoded_pai
49 }
47 50
48 private: 51 private:
49 ImageDecodeController* image_decode_controller_; 52 ImageDecodeController* image_decode_controller_;
50 DrawImage draw_image_; 53 DrawImage draw_image_;
51 DecodedDrawImage decoded_draw_image_; 54 DecodedDrawImage decoded_draw_image_;
52 // TODO(fmalita): use base::Optional when it becomes available 55 base::Optional<SkPaint> decoded_paint_;
53 SkTLazy<SkPaint> decoded_paint_;
54 }; 56 };
55 57
56 } // namespace 58 } // namespace
57 59
58 ImageHijackCanvas::ImageHijackCanvas( 60 ImageHijackCanvas::ImageHijackCanvas(
59 int width, 61 int width,
60 int height, 62 int height,
61 ImageDecodeController* image_decode_controller) 63 ImageDecodeController* image_decode_controller)
62 : SkNWayCanvas(width, height), 64 : SkNWayCanvas(width, height),
63 image_decode_controller_(image_decode_controller) {} 65 image_decode_controller_(image_decode_controller) {}
(...skipping 82 matching lines...) Expand 10 before | Expand all | Expand 10 after
146 148
147 void ImageHijackCanvas::onDrawImageNine(const SkImage* image, 149 void ImageHijackCanvas::onDrawImageNine(const SkImage* image,
148 const SkIRect& center, 150 const SkIRect& center,
149 const SkRect& dst, 151 const SkRect& dst,
150 const SkPaint* paint) { 152 const SkPaint* paint) {
151 // No cc embedder issues image nine calls. 153 // No cc embedder issues image nine calls.
152 NOTREACHED(); 154 NOTREACHED();
153 } 155 }
154 156
155 } // namespace cc 157 } // namespace cc
OLDNEW
« no previous file with comments | « no previous file | cc/playback/raster_source.cc » ('j') | skia/ext/benchmarking_canvas.cc » ('J')

Powered by Google App Engine
This is Rietveld 408576698