void _pushElement(ClipElement element) { ClipElement prior = this._lastElement; if (prior != null) { if (prior.isEmpty()) { ObjectPool <ClipElement> .release(element); return; } if (prior.saveCount == this._saveCount) { // can not update prior if it's cross save count. if (prior.isRect && element.isRect) { var isectRect = uiRectHelper.intersect(prior.rect.Value, element.rect.Value); if (isectRect.isEmpty) { prior.setEmpty(); ObjectPool <ClipElement> .release(element); return; } prior.setRect(isectRect); var priorprior = this.stack.Count > 1 ? this.stack[this.stack.Count - 2] : null; prior.updateBoundAndGenID(priorprior); ObjectPool <ClipElement> .release(element); return; } if (!uiRectHelper.overlaps(prior.getBound(), element.getBound())) { prior.setEmpty(); ObjectPool <ClipElement> .release(element); return; } } } this.stack.Add(element); this._lastElement = element; element.updateBoundAndGenID(prior); }
void _pushElement(ClipElement element) { ClipElement prior = this.stack.LastOrDefault(); if (prior != null) { if (prior.isEmpty()) { return; } if (prior.saveCount == this._saveCount) { // can not update prior if it's cross save count. if (prior.isRect && element.isRect) { var isectRect = prior.rect.intersect(element.rect); if (isectRect.isEmpty) { prior.setEmpty(); return; } prior.setRect(isectRect); var priorprior = this.stack.Count > 1 ? this.stack[this.stack.Count - 2] : null; prior.updateBoundAndGenID(priorprior); return; } if (!prior.getBound().overlaps(element.getBound())) { prior.setEmpty(); return; } } } this.stack.Add(element); element.updateBoundAndGenID(prior); }