Home | History | Annotate | Download | only in atlastext
      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 
      8 #ifndef SkAtlasTextContext_DEFINED
      9 #define SkAtlasTextContext_DEFINED
     10 
     11 #include "SkRefCnt.h"
     12 
     13 class SkAtlasTextRenderer;
     14 class SkInternalAtlasTextContext;
     15 
     16 SkAtlasTextRenderer* SkGetAtlasTextRendererFromInternalContext(class SkInternalAtlasTextContext&);
     17 
     18 /**
     19  * Class that Atlas Text client uses to register their SkAtlasTextRenderer implementation and
     20  * to create one or more SkAtlasTextTargets (destination surfaces for text rendering).
     21  */
     22 class SK_API SkAtlasTextContext : public SkRefCnt {
     23 public:
     24     static sk_sp<SkAtlasTextContext> Make(sk_sp<SkAtlasTextRenderer>);
     25 
     26     SkAtlasTextRenderer* renderer() const {
     27         return SkGetAtlasTextRendererFromInternalContext(*fInternalContext);
     28     }
     29 
     30     SkInternalAtlasTextContext& internal() { return *fInternalContext; }
     31 
     32 private:
     33     SkAtlasTextContext() = delete;
     34     SkAtlasTextContext(const SkAtlasTextContext&) = delete;
     35     SkAtlasTextContext& operator=(const SkAtlasTextContext&) = delete;
     36 
     37     SkAtlasTextContext(sk_sp<SkAtlasTextRenderer>);
     38 
     39     std::unique_ptr<SkInternalAtlasTextContext> fInternalContext;
     40 };
     41 
     42 #endif
     43