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

Side by Side Diff: ui/gfx/canvas.h

Issue 2476113002: Change call-sites now that SkCanvas is not ref-counted (Closed)
Patch Set: no need for unique check on unique_ptr Created 4 years, 1 month 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
OLDNEW
1 // Copyright (c) 2012 The Chromium Authors. All rights reserved. 1 // Copyright (c) 2012 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 #ifndef UI_GFX_CANVAS_H_ 5 #ifndef UI_GFX_CANVAS_H_
6 #define UI_GFX_CANVAS_H_ 6 #define UI_GFX_CANVAS_H_
7 7
8 #include <stdint.h> 8 #include <stdint.h>
9 9
10 #include <memory> 10 #include <memory>
(...skipping 70 matching lines...) Expand 10 before | Expand all | Expand 10 after
81 // Creates an empty canvas with image_scale of 1x. 81 // Creates an empty canvas with image_scale of 1x.
82 Canvas(); 82 Canvas();
83 83
84 // Creates canvas with provided DIP |size| and |image_scale|. 84 // Creates canvas with provided DIP |size| and |image_scale|.
85 // If this canvas is not opaque, it's explicitly cleared to transparent before 85 // If this canvas is not opaque, it's explicitly cleared to transparent before
86 // being returned. 86 // being returned.
87 Canvas(const Size& size, float image_scale, bool is_opaque); 87 Canvas(const Size& size, float image_scale, bool is_opaque);
88 88
89 // Creates a Canvas backed by an |sk_canvas| with |image_scale_|. 89 // Creates a Canvas backed by an |sk_canvas| with |image_scale_|.
90 // |sk_canvas| is assumed to be already scaled based on |image_scale| 90 // |sk_canvas| is assumed to be already scaled based on |image_scale|
91 // so no additional scaling is applied. 91 // so no additional scaling is applied.
danakj 2016/11/14 19:35:15 Can you mention that it must outlive the Canvas?
reed1 2016/11/14 20:50:08 Done.
92 Canvas(sk_sp<SkCanvas> sk_canvas, float image_scale); 92 Canvas(SkCanvas* sk_canvas, float image_scale);
93 93
94 virtual ~Canvas(); 94 virtual ~Canvas();
95 95
96 // Recreates the backing platform canvas with DIP |size| and |image_scale_|. 96 // Recreates the backing platform canvas with DIP |size| and |image_scale_|.
97 // If the canvas is not opaque, it is explicitly cleared. 97 // If the canvas is not opaque, it is explicitly cleared.
98 // This method is public so that canvas_skia_paint can recreate the platform 98 // This method is public so that canvas_skia_paint can recreate the platform
99 // canvas after having initialized the canvas. 99 // canvas after having initialized the canvas.
100 // TODO(pkotwicz): Push the image_scale into skia::PlatformCanvas such that 100 // TODO(pkotwicz): Push the image_scale into skia::PlatformCanvas such that
101 // this method can be private. 101 // this method can be private.
102 void RecreateBackingCanvas(const Size& size, 102 void RecreateBackingCanvas(const Size& size,
(...skipping 371 matching lines...) Expand 10 before | Expand all | Expand 10 after
474 // Apply transformation on the canvas. 474 // Apply transformation on the canvas.
475 void Transform(const Transform& transform); 475 void Transform(const Transform& transform);
476 476
477 // Draws the given string with a fade gradient at the end. 477 // Draws the given string with a fade gradient at the end.
478 void DrawFadedString(const base::string16& text, 478 void DrawFadedString(const base::string16& text,
479 const FontList& font_list, 479 const FontList& font_list,
480 SkColor color, 480 SkColor color,
481 const Rect& display_rect, 481 const Rect& display_rect,
482 int flags); 482 int flags);
483 483
484 SkCanvas* sk_canvas() { return canvas_.get(); } 484 SkCanvas* sk_canvas() { return canvas_; }
485 float image_scale() const { return image_scale_; } 485 float image_scale() const { return image_scale_; }
486 486
487 private: 487 private:
488 // Tests whether the provided rectangle intersects the current clip rect. 488 // Tests whether the provided rectangle intersects the current clip rect.
489 bool IntersectsClipRect(const SkRect& rect); 489 bool IntersectsClipRect(const SkRect& rect);
490 490
491 // Helper for the DrawImageInt functions declared above. The 491 // Helper for the DrawImageInt functions declared above. The
492 // |remove_image_scale| parameter indicates if the scale of the |image_rep| 492 // |remove_image_scale| parameter indicates if the scale of the |image_rep|
493 // should be removed when drawing the image, to avoid double-scaling it. 493 // should be removed when drawing the image, to avoid double-scaling it.
494 void DrawImageIntHelper(const ImageSkiaRep& image_rep, 494 void DrawImageIntHelper(const ImageSkiaRep& image_rep,
495 int src_x, 495 int src_x,
496 int src_y, 496 int src_y,
497 int src_w, 497 int src_w,
498 int src_h, 498 int src_h,
499 int dest_x, 499 int dest_x,
500 int dest_y, 500 int dest_y,
501 int dest_w, 501 int dest_w,
502 int dest_h, 502 int dest_h,
503 bool filter, 503 bool filter,
504 const SkPaint& paint, 504 const SkPaint& paint,
505 bool remove_image_scale); 505 bool remove_image_scale);
506 506
507 // The device scale factor at which drawing on this canvas occurs. 507 // The device scale factor at which drawing on this canvas occurs.
508 // An additional scale can be applied via Canvas::Scale(). However, 508 // An additional scale can be applied via Canvas::Scale(). However,
509 // Canvas::Scale() does not affect |image_scale_|. 509 // Canvas::Scale() does not affect |image_scale_|.
510 float image_scale_; 510 float image_scale_;
511 511
512 sk_sp<SkCanvas> canvas_; 512 // canvas_ is our active canvas object. Sometimes we are also the owner,
513 // in which case canvas_owner_ will be set. Other times we are just
514 // borrowing someone else's canvas, in which case canvas_ will point there
515 // but canvas_owner_ will be null.
516 SkCanvas* canvas_;
517 std::unique_ptr<SkCanvas> canvas_owner_;
513 518
514 DISALLOW_COPY_AND_ASSIGN(Canvas); 519 DISALLOW_COPY_AND_ASSIGN(Canvas);
515 }; 520 };
516 521
517 } // namespace gfx 522 } // namespace gfx
518 523
519 #endif // UI_GFX_CANVAS_H_ 524 #endif // UI_GFX_CANVAS_H_
OLDNEW

Powered by Google App Engine
This is Rietveld 408576698