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

Side by Side Diff: include/core/SkCanvas.h

Issue 2241473002: Delete quickRejectY() (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Inline quickRejectY logic Created 4 years, 4 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 | src/core/SkPicturePlayback.cpp » ('j') | no next file with comments »
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 /* 1 /*
2 * Copyright 2006 The Android Open Source Project 2 * Copyright 2006 The Android Open Source Project
3 * 3 *
4 * Use of this source code is governed by a BSD-style license that can be 4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file. 5 * found in the LICENSE file.
6 */ 6 */
7 7
8 #ifndef SkCanvas_DEFINED 8 #ifndef SkCanvas_DEFINED
9 #define SkCanvas_DEFINED 9 #define SkCanvas_DEFINED
10 10
(...skipping 538 matching lines...) Expand 10 before | Expand all | Expand 10 after
549 this to check if an area you intend to draw into is clipped out (and 549 this to check if an area you intend to draw into is clipped out (and
550 therefore you can skip making the draw calls). Note, for speed it may 550 therefore you can skip making the draw calls). Note, for speed it may
551 return false even if the path itself might not intersect the clip 551 return false even if the path itself might not intersect the clip
552 (i.e. the bounds of the path intersects, but the path does not). 552 (i.e. the bounds of the path intersects, but the path does not).
553 @param path The path to compare with the current clip 553 @param path The path to compare with the current clip
554 @return true if the path (transformed by the canvas' matrix) does not 554 @return true if the path (transformed by the canvas' matrix) does not
555 intersect with the canvas' clip 555 intersect with the canvas' clip
556 */ 556 */
557 bool quickReject(const SkPath& path) const; 557 bool quickReject(const SkPath& path) const;
558 558
559 /** Return true if the horizontal band specified by top and bottom is
560 completely clipped out. This is a conservative calculation, meaning
561 that it is possible that if the method returns false, the band may still
562 in fact be clipped out, but the converse is not true. If this method
563 returns true, then the band is guaranteed to be clipped out.
564 @param top The top of the horizontal band to compare with the clip
565 @param bottom The bottom of the horizontal and to compare with the clip
566 @return true if the horizontal band is completely clipped out (i.e. does
567 not intersect the current clip)
568 */
569 bool quickRejectY(SkScalar top, SkScalar bottom) const {
570 SkASSERT(top <= bottom);
571
572 #ifndef SK_WILL_NEVER_DRAW_PERSPECTIVE_TEXT
573 // TODO: add a hasPerspective method similar to getLocalClipBounds. This
574 // would cache the SkMatrix::hasPerspective result. Alternatively, have
575 // the MC stack just set a hasPerspective boolean as it is updated.
576 if (this->getTotalMatrix().hasPerspective()) {
577 // TODO: consider implementing some half-plane test between the
578 // two Y planes and the device-bounds (i.e., project the top and
579 // bottom Y planes and then determine if the clip bounds is complete ly
580 // outside either one).
581 return false;
582 }
583 #endif
584
585 const SkRect& clipR = this->getLocalClipBounds();
586 // In the case where the clip is empty and we are provided with a
587 // negative top and positive bottom parameter then this test will return
588 // false even though it will be clipped. We have chosen to exclude that
589 // check as it is rare and would result double the comparisons.
590 return top >= clipR.fBottom || bottom <= clipR.fTop;
591 }
592
593 /** Return the bounds of the current clip (in local coordinates) in the 559 /** Return the bounds of the current clip (in local coordinates) in the
594 bounds parameter, and return true if it is non-empty. This can be useful 560 bounds parameter, and return true if it is non-empty. This can be useful
595 in a way similar to quickReject, in that it tells you that drawing 561 in a way similar to quickReject, in that it tells you that drawing
596 outside of these bounds will be clipped out. 562 outside of these bounds will be clipped out.
597 */ 563 */
598 virtual bool getClipBounds(SkRect* bounds) const; 564 virtual bool getClipBounds(SkRect* bounds) const;
599 565
600 /** Return the bounds of the current clip, in device coordinates; returns 566 /** Return the bounds of the current clip, in device coordinates; returns
601 true if non-empty. Maybe faster than getting the clip explicitly and 567 true if non-empty. Maybe faster than getting the clip explicitly and
602 then taking its bounds. 568 then taking its bounds.
(...skipping 1114 matching lines...) Expand 10 before | Expand all | Expand 10 after
1717 1683
1718 class SkCanvasClipVisitor { 1684 class SkCanvasClipVisitor {
1719 public: 1685 public:
1720 virtual ~SkCanvasClipVisitor(); 1686 virtual ~SkCanvasClipVisitor();
1721 virtual void clipRect(const SkRect&, SkRegion::Op, bool antialias) = 0; 1687 virtual void clipRect(const SkRect&, SkRegion::Op, bool antialias) = 0;
1722 virtual void clipRRect(const SkRRect&, SkRegion::Op, bool antialias) = 0; 1688 virtual void clipRRect(const SkRRect&, SkRegion::Op, bool antialias) = 0;
1723 virtual void clipPath(const SkPath&, SkRegion::Op, bool antialias) = 0; 1689 virtual void clipPath(const SkPath&, SkRegion::Op, bool antialias) = 0;
1724 }; 1690 };
1725 1691
1726 #endif 1692 #endif
OLDNEW
« no previous file with comments | « no previous file | src/core/SkPicturePlayback.cpp » ('j') | no next file with comments »

Powered by Google App Engine
This is Rietveld 408576698