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

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

Issue 2263373002: check for wide-open inside quickContains (Closed) Base URL: https://skia.googlesource.com/skia.git@master
Patch Set: Created 4 years, 3 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/SkClipStack.cpp » ('j') | src/gpu/GrClipStackClip.cpp » ('J')
Toggle Intra-line Diffs ('i') | Expand Comments ('e') | Collapse Comments ('c') | Show Comments Hide Comments ('s')
OLDNEW
1 1
2 /* 2 /*
3 * Copyright 2011 Google Inc. 3 * Copyright 2011 Google Inc.
4 * 4 *
5 * Use of this source code is governed by a BSD-style license that can be 5 * Use of this source code is governed by a BSD-style license that can be
6 * found in the LICENSE file. 6 * found in the LICENSE file.
7 */ 7 */
8 #ifndef SkClipStack_DEFINED 8 #ifndef SkClipStack_DEFINED
9 #define SkClipStack_DEFINED 9 #define SkClipStack_DEFINED
10 10
(...skipping 315 matching lines...) Expand 10 before | Expand all | Expand 10 after
326 */ 326 */
327 void getBounds(SkRect* canvFiniteBound, 327 void getBounds(SkRect* canvFiniteBound,
328 BoundsType* boundType, 328 BoundsType* boundType,
329 bool* isIntersectionOfRects = NULL) const; 329 bool* isIntersectionOfRects = NULL) const;
330 330
331 /** 331 /**
332 * Returns true if the input (r)rect in device space is entirely contained 332 * Returns true if the input (r)rect in device space is entirely contained
333 * by the clip. A return value of false does not guarantee that the (r)rect 333 * by the clip. A return value of false does not guarantee that the (r)rect
334 * is not contained by the clip. 334 * is not contained by the clip.
335 */ 335 */
336 bool quickContains(const SkRect& devRect) const; 336 bool quickContains(const SkRect& devRect) const {
337 bool quickContains(const SkRRect& devRRect) const; 337 return this->isWideOpen() || this->internalQuickContains(devRect);
338 }
339
340 bool quickContains(const SkRRect& devRRect) const {
341 return this->isWideOpen() || this->internalQuickContains(devRRect);
342 }
338 343
339 /** 344 /**
340 * Flattens the clip stack into a single SkPath. Returns true if any of 345 * Flattens the clip stack into a single SkPath. Returns true if any of
341 * the clip stack components requires anti-aliasing. 346 * the clip stack components requires anti-aliasing.
342 */ 347 */
343 bool asPath(SkPath* path) const; 348 bool asPath(SkPath* path) const;
344 349
345 void clipDevRect(const SkIRect& ir, SkRegion::Op op) { 350 void clipDevRect(const SkIRect& ir, SkRegion::Op op) {
346 SkRect r; 351 SkRect r;
347 r.set(ir); 352 r.set(ir);
348 this->clipDevRect(r, op, false); 353 this->clipDevRect(r, op, false);
349 } 354 }
350 void clipDevRect(const SkRect&, SkRegion::Op, bool doAA); 355 void clipDevRect(const SkRect&, SkRegion::Op, bool doAA);
351 void clipDevRRect(const SkRRect&, SkRegion::Op, bool doAA); 356 void clipDevRRect(const SkRRect&, SkRegion::Op, bool doAA);
352 void clipDevPath(const SkPath&, SkRegion::Op, bool doAA); 357 void clipDevPath(const SkPath&, SkRegion::Op, bool doAA);
353 // An optimized version of clipDevRect(emptyRect, kIntersect, ...) 358 // An optimized version of clipDevRect(emptyRect, kIntersect, ...)
354 void clipEmpty(); 359 void clipEmpty();
355 360
356 /** 361 /**
357 * isWideOpen returns true if the clip state corresponds to the infinite 362 * isWideOpen returns true if the clip state corresponds to the infinite
358 * plane (i.e., draws are not limited at all) 363 * plane (i.e., draws are not limited at all)
359 */ 364 */
360 bool isWideOpen() const; 365 bool isWideOpen() const { return this->getTopmostGenID() == kWideOpenGenID; }
361 366
362 /** 367 /**
363 * The generation ID has three reserved values to indicate special 368 * The generation ID has three reserved values to indicate special
364 * (potentially ignorable) cases 369 * (potentially ignorable) cases
365 */ 370 */
366 static const int32_t kInvalidGenID = 0; //!< Invalid id that is never re turned by 371 static const int32_t kInvalidGenID = 0; //!< Invalid id that is never re turned by
367 //!< SkClipStack. Useful when ca ching clips 372 //!< SkClipStack. Useful when ca ching clips
368 //!< based on GenID. 373 //!< based on GenID.
369 static const int32_t kEmptyGenID = 1; // no pixels writeable 374 static const int32_t kEmptyGenID = 1; // no pixels writeable
370 static const int32_t kWideOpenGenID = 2; // all pixels writeable 375 static const int32_t kWideOpenGenID = 2; // all pixels writeable
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after
472 friend class Iter; 477 friend class Iter;
473 478
474 SkDeque fDeque; 479 SkDeque fDeque;
475 int fSaveCount; 480 int fSaveCount;
476 481
477 // Generation ID for the clip stack. This is incremented for each 482 // Generation ID for the clip stack. This is incremented for each
478 // clipDevRect and clipDevPath call. 0 is reserved to indicate an 483 // clipDevRect and clipDevPath call. 0 is reserved to indicate an
479 // invalid ID. 484 // invalid ID.
480 static int32_t gGenID; 485 static int32_t gGenID;
481 486
487 bool internalQuickContains(const SkRect& devRect) const;
488 bool internalQuickContains(const SkRRect& devRRect) const;
489
482 /** 490 /**
483 * Helper for clipDevPath, etc. 491 * Helper for clipDevPath, etc.
484 */ 492 */
485 void pushElement(const Element& element); 493 void pushElement(const Element& element);
486 494
487 /** 495 /**
488 * Restore the stack back to the specified save count. 496 * Restore the stack back to the specified save count.
489 */ 497 */
490 void restoreTo(int saveCount); 498 void restoreTo(int saveCount);
491 499
492 /** 500 /**
493 * Return the next unique generation ID. 501 * Return the next unique generation ID.
494 */ 502 */
495 static int32_t GetNextGenID(); 503 static int32_t GetNextGenID();
496 }; 504 };
497 505
498 #endif 506 #endif
OLDNEW
« no previous file with comments | « no previous file | src/core/SkClipStack.cpp » ('j') | src/gpu/GrClipStackClip.cpp » ('J')

Powered by Google App Engine
This is Rietveld 408576698