/* * Copyright 2018 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkDeferredDisplayListPriv_DEFINED #define SkDeferredDisplayListPriv_DEFINED #include "SkDeferredDisplayList.h" /** Class that adds methods to SkDeferredDisplayList that are only intended for use internal to Skia. This class is purely a privileged window into SkDeferredDisplayList. It should never have additional data members or virtual methods. */ class SkDeferredDisplayListPriv { public: int numOpLists() const { #if SK_SUPPORT_GPU return fDDL->fOpLists.count(); #else return 0; #endif } const SkDeferredDisplayList::LazyProxyData* lazyProxyData() const { #if SK_SUPPORT_GPU return fDDL->fLazyProxyData.get(); #else return nullptr; #endif } private: explicit SkDeferredDisplayListPriv(SkDeferredDisplayList* ddl) : fDDL(ddl) {} SkDeferredDisplayListPriv(const SkDeferredDisplayListPriv&); // unimpl SkDeferredDisplayListPriv& operator=(const SkDeferredDisplayListPriv&); // unimpl // No taking addresses of this type. const SkDeferredDisplayListPriv* operator&() const; SkDeferredDisplayListPriv* operator&(); SkDeferredDisplayList* fDDL; friend class SkDeferredDisplayList; // to construct/copy this type. }; inline SkDeferredDisplayListPriv SkDeferredDisplayList::priv() { return SkDeferredDisplayListPriv(this); } inline const SkDeferredDisplayListPriv SkDeferredDisplayList::priv () const { return SkDeferredDisplayListPriv(const_cast<SkDeferredDisplayList*>(this)); } #endif