1*c8dee2aaSAndroid Build Coastguard Worker /* 2*c8dee2aaSAndroid Build Coastguard Worker * Copyright 2017 Google Inc. 3*c8dee2aaSAndroid Build Coastguard Worker * 4*c8dee2aaSAndroid Build Coastguard Worker * Use of this source code is governed by a BSD-style license that can be 5*c8dee2aaSAndroid Build Coastguard Worker * found in the LICENSE file. 6*c8dee2aaSAndroid Build Coastguard Worker */ 7*c8dee2aaSAndroid Build Coastguard Worker 8*c8dee2aaSAndroid Build Coastguard Worker #include "modules/sksg/include/SkSGInvalidationController.h" 9*c8dee2aaSAndroid Build Coastguard Worker 10*c8dee2aaSAndroid Build Coastguard Worker #include "include/core/SkRect.h" 11*c8dee2aaSAndroid Build Coastguard Worker #include "src/base/SkTLazy.h" 12*c8dee2aaSAndroid Build Coastguard Worker 13*c8dee2aaSAndroid Build Coastguard Worker namespace sksg { 14*c8dee2aaSAndroid Build Coastguard Worker InvalidationController()15*c8dee2aaSAndroid Build Coastguard WorkerInvalidationController::InvalidationController() : fBounds(SkRect::MakeEmpty()) {} 16*c8dee2aaSAndroid Build Coastguard Worker inval(const SkRect & r,const SkMatrix & ctm)17*c8dee2aaSAndroid Build Coastguard Workervoid InvalidationController::inval(const SkRect& r, const SkMatrix& ctm) { 18*c8dee2aaSAndroid Build Coastguard Worker if (r.isEmpty()) { 19*c8dee2aaSAndroid Build Coastguard Worker return; 20*c8dee2aaSAndroid Build Coastguard Worker } 21*c8dee2aaSAndroid Build Coastguard Worker 22*c8dee2aaSAndroid Build Coastguard Worker SkTCopyOnFirstWrite<SkRect> rect(r); 23*c8dee2aaSAndroid Build Coastguard Worker 24*c8dee2aaSAndroid Build Coastguard Worker if (!ctm.isIdentity()) { 25*c8dee2aaSAndroid Build Coastguard Worker ctm.mapRect(rect.writable()); 26*c8dee2aaSAndroid Build Coastguard Worker } 27*c8dee2aaSAndroid Build Coastguard Worker 28*c8dee2aaSAndroid Build Coastguard Worker fRects.push_back(*rect); 29*c8dee2aaSAndroid Build Coastguard Worker fBounds.join(*rect); 30*c8dee2aaSAndroid Build Coastguard Worker } 31*c8dee2aaSAndroid Build Coastguard Worker reset()32*c8dee2aaSAndroid Build Coastguard Workervoid InvalidationController::reset() { 33*c8dee2aaSAndroid Build Coastguard Worker fRects.clear(); 34*c8dee2aaSAndroid Build Coastguard Worker fBounds.setEmpty(); 35*c8dee2aaSAndroid Build Coastguard Worker } 36*c8dee2aaSAndroid Build Coastguard Worker 37*c8dee2aaSAndroid Build Coastguard Worker } // namespace sksg 38