1cb93a386Sopenharmony_ci/* 2cb93a386Sopenharmony_ci * Copyright 2017 Google Inc. 3cb93a386Sopenharmony_ci * 4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be 5cb93a386Sopenharmony_ci * found in the LICENSE file. 6cb93a386Sopenharmony_ci */ 7cb93a386Sopenharmony_ci 8cb93a386Sopenharmony_ci#ifndef SkSGInvalidationController_DEFINED 9cb93a386Sopenharmony_ci#define SkSGInvalidationController_DEFINED 10cb93a386Sopenharmony_ci 11cb93a386Sopenharmony_ci#include "include/core/SkMatrix.h" 12cb93a386Sopenharmony_ci#include "include/core/SkTypes.h" 13cb93a386Sopenharmony_ci 14cb93a386Sopenharmony_ci#include <vector> 15cb93a386Sopenharmony_ci 16cb93a386Sopenharmony_cistruct SkRect; 17cb93a386Sopenharmony_ci 18cb93a386Sopenharmony_cinamespace sksg { 19cb93a386Sopenharmony_ci 20cb93a386Sopenharmony_ci/** 21cb93a386Sopenharmony_ci * Receiver for invalidation events. 22cb93a386Sopenharmony_ci * 23cb93a386Sopenharmony_ci * Tracks dirty regions for repaint. 24cb93a386Sopenharmony_ci */ 25cb93a386Sopenharmony_ciclass InvalidationController { 26cb93a386Sopenharmony_cipublic: 27cb93a386Sopenharmony_ci InvalidationController(); 28cb93a386Sopenharmony_ci InvalidationController(const InvalidationController&) = delete; 29cb93a386Sopenharmony_ci InvalidationController& operator=(const InvalidationController&) = delete; 30cb93a386Sopenharmony_ci 31cb93a386Sopenharmony_ci void inval(const SkRect&, const SkMatrix& ctm = SkMatrix::I()); 32cb93a386Sopenharmony_ci 33cb93a386Sopenharmony_ci const SkRect& bounds() const { return fBounds; } 34cb93a386Sopenharmony_ci 35cb93a386Sopenharmony_ci auto begin() const { return fRects.cbegin(); } 36cb93a386Sopenharmony_ci auto end() const { return fRects.cend(); } 37cb93a386Sopenharmony_ci 38cb93a386Sopenharmony_ci void reset(); 39cb93a386Sopenharmony_ci 40cb93a386Sopenharmony_ciprivate: 41cb93a386Sopenharmony_ci std::vector<SkRect> fRects; 42cb93a386Sopenharmony_ci SkRect fBounds; 43cb93a386Sopenharmony_ci}; 44cb93a386Sopenharmony_ci 45cb93a386Sopenharmony_ci} // namespace sksg 46cb93a386Sopenharmony_ci 47cb93a386Sopenharmony_ci#endif // SkSGInvalidationController_DEFINED 48