/* * Copyright 2017 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkAtlasTextContext_DEFINED #define SkAtlasTextContext_DEFINED #include "SkRefCnt.h" class SkAtlasTextRenderer; class SkInternalAtlasTextContext; SkAtlasTextRenderer* SkGetAtlasTextRendererFromInternalContext(class SkInternalAtlasTextContext&); /** * Class that Atlas Text client uses to register their SkAtlasTextRenderer implementation and * to create one or more SkAtlasTextTargets (destination surfaces for text rendering). */ class SK_API SkAtlasTextContext : public SkRefCnt { public: static sk_sp Make(sk_sp); SkAtlasTextRenderer* renderer() const { return SkGetAtlasTextRendererFromInternalContext(*fInternalContext); } SkInternalAtlasTextContext& internal() { return *fInternalContext; } private: SkAtlasTextContext() = delete; SkAtlasTextContext(const SkAtlasTextContext&) = delete; SkAtlasTextContext& operator=(const SkAtlasTextContext&) = delete; SkAtlasTextContext(sk_sp); std::unique_ptr fInternalContext; }; #endif