diff options
author | Brian Salomon <bsalomon@google.com> | 2017-11-19 13:20:13 -0500 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-11-19 18:55:18 +0000 |
commit | cbcb0a12ad0068b820c28178e8aa141166febd1f (patch) | |
tree | 120917b5961b8a043894b95811eec1f8f6379b25 /include/atlastext/SkAtlasTextTarget.h | |
parent | b07b06e14819c7bfb9da87dd754aca1239045af4 (diff) |
Revert "Revert "Add Atlas Text interface for rendering SDF glyphs.""
This reverts commit 9c2202ffc22b4293b48a4edeafa1b5d2bab8bb83.
Bug: skia:
Change-Id: I482ddf74f8e40d3d0908c840ba5c6ff981ccefbd
Reviewed-on: https://skia-review.googlesource.com/73345
Reviewed-by: Brian Salomon <bsalomon@google.com>
Commit-Queue: Brian Salomon <bsalomon@google.com>
Diffstat (limited to 'include/atlastext/SkAtlasTextTarget.h')
-rw-r--r-- | include/atlastext/SkAtlasTextTarget.h | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/include/atlastext/SkAtlasTextTarget.h b/include/atlastext/SkAtlasTextTarget.h new file mode 100644 index 0000000000..0859afde39 --- /dev/null +++ b/include/atlastext/SkAtlasTextTarget.h @@ -0,0 +1,61 @@ +/* + * 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 SkAtlasTextTarget_DEFINED +#define SkAtlasTextTarget_DEFINED + +#include <memory> +#include "SkRefCnt.h" +#include "SkScalar.h" + +class SkAtlasTextContext; +class SkAtlasTextFont; + +/** Represents a client-created renderable surface and is used to draw text into the surface. */ +class SK_API SkAtlasTextTarget { +public: + virtual ~SkAtlasTextTarget(); + + /** + * Creates a text drawing target. ‘handle’ is used to identify this rendering surface when + * draws are flushed to the SkAtlasTextContext's SkAtlasTextRenderer. + */ + static std::unique_ptr<SkAtlasTextTarget> Make(sk_sp<SkAtlasTextContext>, int width, int height, + void* handle); + + /** + * Enqueues a text draw in the target. The meaning of 'color' here is interpreted by the + * client's SkAtlasTextRenderer when it actually renders the text. + */ + virtual void drawText(const void* text, size_t byteLength, SkScalar x, SkScalar y, + uint32_t color, const SkAtlasTextFont& font) = 0; + + /** Issues all queued text draws to SkAtlasTextRenderer. */ + virtual void flush() = 0; + + int width() const { return fWidth; } + int height() const { return fHeight; } + + void* handle() const { return fHandle; } + + SkAtlasTextContext* context() const { return fContext.get(); } + +protected: + SkAtlasTextTarget(sk_sp<SkAtlasTextContext>, int width, int height, void* handle); + + void* const fHandle; + const sk_sp<SkAtlasTextContext> fContext; + const int fWidth; + const int fHeight; + +private: + SkAtlasTextTarget() = delete; + SkAtlasTextTarget(const SkAtlasTextContext&) = delete; + SkAtlasTextTarget& operator=(const SkAtlasTextContext&) = delete; +}; + +#endif |