Chromium Code Reviews| OLD | NEW |
|---|---|
| 1 /* | 1 /* |
| 2 * Copyright 2012 Google Inc. | 2 * Copyright 2012 Google Inc. |
| 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 #include "SkRTree.h" | 8 #include "SkRTree.h" |
| 9 #include "SkTSort.h" | 9 #include "SkTSort.h" |
| 10 | 10 |
| (...skipping 429 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... | |
| 440 } | 440 } |
| 441 | 441 |
| 442 void SkRTree::rewindInserts() { | 442 void SkRTree::rewindInserts() { |
| 443 SkASSERT(this->isEmpty()); // Currently only supports deferred inserts | 443 SkASSERT(this->isEmpty()); // Currently only supports deferred inserts |
| 444 while (!fDeferredInserts.isEmpty() && | 444 while (!fDeferredInserts.isEmpty() && |
| 445 fClient->shouldRewind(fDeferredInserts.top().fChild.data)) { | 445 fClient->shouldRewind(fDeferredInserts.top().fChild.data)) { |
| 446 fDeferredInserts.pop(); | 446 fDeferredInserts.pop(); |
| 447 } | 447 } |
| 448 } | 448 } |
| 449 | 449 |
| 450 size_t SkRTree::bytesUsed() const { | |
| 451 size_t byteCount = sizeof(SkRTree); | |
| 452 | |
| 453 byteCount += fNodes.totalCapacity(); | |
| 454 byteCount += fDeferredInserts.reserved() * sizeof(Branch); | |
|
mtklein
2014/11/17 20:19:32
There probably isn't an fDeferredInserts any more.
| |
| 455 | |
| 456 return byteCount; | |
| 457 } | |
| 458 | |
| 450 //////////////////////////////////////////////////////////////////////////////// /////////////////// | 459 //////////////////////////////////////////////////////////////////////////////// /////////////////// |
| 451 | 460 |
| 452 static inline uint32_t get_area(const SkIRect& rect) { | 461 static inline uint32_t get_area(const SkIRect& rect) { |
| 453 return rect.width() * rect.height(); | 462 return rect.width() * rect.height(); |
| 454 } | 463 } |
| 455 | 464 |
| 456 static inline uint32_t get_overlap(const SkIRect& rect1, const SkIRect& rect2) { | 465 static inline uint32_t get_overlap(const SkIRect& rect1, const SkIRect& rect2) { |
| 457 // I suspect there's a more efficient way of computing this... | 466 // I suspect there's a more efficient way of computing this... |
| 458 return SkMax32(0, SkMin32(rect1.fRight, rect2.fRight) - SkMax32(rect1.fLeft, rect2.fLeft)) * | 467 return SkMax32(0, SkMin32(rect1.fRight, rect2.fRight) - SkMax32(rect1.fLeft, rect2.fLeft)) * |
| 459 SkMax32(0, SkMin32(rect1.fBottom, rect2.fBottom) - SkMax32(rect1.fTop , rect2.fTop)); | 468 SkMax32(0, SkMin32(rect1.fBottom, rect2.fBottom) - SkMax32(rect1.fTop , rect2.fTop)); |
| (...skipping 11 matching lines...) Expand all Loading... | |
| 471 | 480 |
| 472 // Expand 'out' to include 'joinWith' | 481 // Expand 'out' to include 'joinWith' |
| 473 static inline void join_no_empty_check(const SkIRect& joinWith, SkIRect* out) { | 482 static inline void join_no_empty_check(const SkIRect& joinWith, SkIRect* out) { |
| 474 // since we check for empty bounds on insert, we know we'll never have empty rects | 483 // since we check for empty bounds on insert, we know we'll never have empty rects |
| 475 // and we can save the empty check that SkIRect::join requires | 484 // and we can save the empty check that SkIRect::join requires |
| 476 if (joinWith.fLeft < out->fLeft) { out->fLeft = joinWith.fLeft; } | 485 if (joinWith.fLeft < out->fLeft) { out->fLeft = joinWith.fLeft; } |
| 477 if (joinWith.fTop < out->fTop) { out->fTop = joinWith.fTop; } | 486 if (joinWith.fTop < out->fTop) { out->fTop = joinWith.fTop; } |
| 478 if (joinWith.fRight > out->fRight) { out->fRight = joinWith.fRight; } | 487 if (joinWith.fRight > out->fRight) { out->fRight = joinWith.fRight; } |
| 479 if (joinWith.fBottom > out->fBottom) { out->fBottom = joinWith.fBottom; } | 488 if (joinWith.fBottom > out->fBottom) { out->fBottom = joinWith.fBottom; } |
| 480 } | 489 } |
| OLD | NEW |