Home | History | Annotate | Download | only in core

Lines Matching refs:Element

21 SkClipStack::Element::Element(const Element& that) {
46 bool SkClipStack::Element::operator== (const Element& element) const {
47 if (this == &element) {
50 if (fOp != element.fOp ||
51 fType != element.fType ||
52 fDoAA != element.fDoAA ||
53 fSaveCount != element.fSaveCount) {
58 return this->getPath() == element.getPath();
60 return fRRect == element.fRRect;
62 return this->getRect() == element.getRect();
71 void SkClipStack::Element::replay(SkCanvasClipVisitor* visitor) const {
90 void SkClipStack::Element::invertShapeFillType() {
113 void SkClipStack::Element::initPath(int saveCount, const SkPath& path, SkRegion::Op op,
135 void SkClipStack::Element::asPath(SkPath* path) const {
158 void SkClipStack::Element::setEmpty() {
169 void SkClipStack::Element::checkEmpty() const {
177 bool SkClipStack::Element::canBeIntersectedInPlace(int saveCount, SkRegion::Op op) const {
189 bool SkClipStack::Element::rectRectIntersectAllowed(const SkRect& newR, bool newAA) const {
217 void SkClipStack::Element::combineBoundsDiff(FillCombo combination, const SkRect& prevFinite) {
254 SkDEBUGFAIL("SkClipStack::Element::combineBoundsDiff Invalid fill combination");
259 void SkClipStack::Element::combineBoundsXOR(int combination, const SkRect& prevFinite) {
286 SkDEBUGFAIL("SkClipStack::Element::combineBoundsXOR Invalid fill combination");
292 void SkClipStack::Element::combineBoundsUnion(int combination, const SkRect& prevFinite) {
316 SkDEBUGFAIL("SkClipStack::Element::combineBoundsUnion Invalid fill combination");
322 void SkClipStack::Element::combineBoundsIntersection(int combination, const SkRect& prevFinite) {
347 SkDEBUGFAIL("SkClipStack::Element::combineBoundsIntersection Invalid fill combination");
353 void SkClipStack::Element::combineBoundsRevDiff(int combination, const SkRect& prevFinite) {
382 SkDEBUGFAIL("SkClipStack::Element::combineBoundsRevDiff Invalid fill combination");
387 void SkClipStack::Element::updateBoundAndGenID(const Element* prior) {
392 // First, optimistically update the current Element's bound information
421 SkDEBUGFAIL("We shouldn't get here with an empty element.");
432 // Now determine the previous Element's bound information taking into
488 // This constant determines how many Element's are allocated together as a block in
495 : fDeque(sizeof(Element), kDefaultElementAllocCnt)
500 : fDeque(sizeof(Element), kDefaultElementAllocCnt) {
505 : fDeque(sizeof(Element), kDefaultElementAllocCnt)
513 : fDeque(sizeof(Element), kDefaultElementAllocCnt)
534 for (const Element* element = (const Element*)recIter.next();
535 element != nullptr;
536 element = (const Element*)recIter.next()) {
537 new (fDeque.push_back()) Element(*element);
553 const Element* myElement = (const Element*)myIter.next();
554 const Element* bElement = (const Element*)bIter.next();
560 myElement = (const Element*)myIter.next();
561 bElement = (const Element*)bIter.next();
570 Element* element = (Element*)fDeque.back();
571 element->~Element();
589 Element* element = (Element*)fDeque.back();
590 if (element->fSaveCount <= saveCount) {
593 element->~Element();
603 Element* element = (Element*)fDeque.back();
605 if (nullptr == element) {
615 *canvFiniteBound = element->fFiniteBound;
616 *boundType = element->fFiniteBoundType;
618 *isIntersectionOfRects = element->fIsIntersectionOfRects;
625 const Element* element = iter.prev();
626 while (element != nullptr) {
627 if (SkRegion::kIntersect_Op != element->getOp() && SkRegion::kReplace_Op != element->getOp())
629 if (element->isInverseFilled()) {
630 // Part of 'rect' could be trimmed off by the inverse-filled clip element
631 if (SkRect::Intersects(element->getBounds(), rect)) {
635 if (!element->contains(rect)) {
639 if (SkRegion::kReplace_Op == element->getOp()) {
642 element = iter.prev();
654 while (const SkClipStack::Element* element = iter.next()) {
656 if (element->getType() != SkClipStack::Element::kEmpty_Type) {
657 element->asPath(&operand);
660 SkRegion::Op elementOp = element->getOp();
670 isAA = (isAA || element->isAA());
676 void SkClipStack::pushElement(const Element& element) {
679 Element* prior = (Element*) iter.prev();
682 if (prior->canBeIntersectedInPlace(fSaveCount, element.getOp())) {
684 case Element::kEmpty_Type:
687 case Element::kRect_Type:
688 if (Element::kRect_Type == element.getType()) {
689 if (prior->rectRectIntersectAllowed(element.getRect(), element.isAA())) {
691 if (!isectRect.intersect(prior->getRect(), element.getRect())) {
697 prior->fDoAA = element.isAA();
698 Element* priorPrior = (Element*) iter.prev();
706 if (!SkRect::Intersects(prior->getBounds(), element.getBounds())) {
712 } else if (SkRegion::kReplace_Op == element.getOp()) {
714 prior = (Element*) fDeque.back();
717 Element* newElement = new (fDeque.push_back()) Element(element);
722 Element element(fSaveCount, rrect, op, doAA);
723 this->pushElement(element);
727 Element element(fSaveCount, rect, op, doAA);
728 this->pushElement(element);
732 Element element(fSaveCount, path, op, doAA);
733 this->pushElement(element);
737 Element* element = (Element*) fDeque.back();
739 if (element && element->canBeIntersectedInPlace(fSaveCount, SkRegion::kIntersect_Op)) {
740 element->setEmpty();
742 new (fDeque.push_back()) Element(fSaveCount);
744 ((Element*)fDeque.back())->fGenID = kEmptyGenID;
761 const SkClipStack::Element* SkClipStack::Iter::next() {
762 return (const SkClipStack::Element*)fIter.next();
765 const SkClipStack::Element* SkClipStack::Iter::prev() {
766 return (const SkClipStack::Element*)fIter.prev();
769 const SkClipStack::Element* SkClipStack::Iter::skipToTopmost(SkRegion::Op op) {
777 const SkClipStack::Element* element = nullptr;
779 for (element = (const SkClipStack::Element*) fIter.prev();
780 element;
781 element = (const SkClipStack::Element*) fIter.prev()) {
783 if (op == element->fOp) {
785 // returned value. So while "element" is the element we want to
787 // return on the next "next" or "prev" call) the element
800 if (nullptr == element) {
852 const Element* back = static_cast<const Element*>(fDeque.back());
861 void SkClipStack::Element::dump() const {
912 const Element* e;