SkAtlasTextContext.h 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. /*
  2. * Copyright 2017 Google Inc.
  3. *
  4. * Use of this source code is governed by a BSD-style license that can be
  5. * found in the LICENSE file.
  6. */
  7. #ifndef SkAtlasTextContext_DEFINED
  8. #define SkAtlasTextContext_DEFINED
  9. #include "SkRefCnt.h"
  10. class SkAtlasTextRenderer;
  11. class SkInternalAtlasTextContext;
  12. SkAtlasTextRenderer* SkGetAtlasTextRendererFromInternalContext(class SkInternalAtlasTextContext&);
  13. /**
  14. * Class that Atlas Text client uses to register their SkAtlasTextRenderer implementation and
  15. * to create one or more SkAtlasTextTargets (destination surfaces for text rendering).
  16. */
  17. class SK_API SkAtlasTextContext : public SkRefCnt {
  18. public:
  19. static sk_sp<SkAtlasTextContext> Make(sk_sp<SkAtlasTextRenderer>);
  20. SkAtlasTextRenderer* renderer() const {
  21. return SkGetAtlasTextRendererFromInternalContext(*fInternalContext);
  22. }
  23. SkInternalAtlasTextContext& internal() { return *fInternalContext; }
  24. private:
  25. SkAtlasTextContext() = delete;
  26. SkAtlasTextContext(const SkAtlasTextContext&) = delete;
  27. SkAtlasTextContext& operator=(const SkAtlasTextContext&) = delete;
  28. SkAtlasTextContext(sk_sp<SkAtlasTextRenderer>);
  29. std::unique_ptr<SkInternalAtlasTextContext> fInternalContext;
  30. };
  31. #endif