diff options
author | Greg Daniel <egdaniel@google.com> | 2017-11-18 13:31:59 +0000 |
---|---|---|
committer | Skia Commit-Bot <skia-commit-bot@chromium.org> | 2017-11-18 13:32:08 +0000 |
commit | 9c2202ffc22b4293b48a4edeafa1b5d2bab8bb83 (patch) | |
tree | 6667b8892e760ba70baa81f55a36c974eeb31761 /include/atlastext | |
parent | c12853ae42c30ef1cffb77c7777b330a7bbdb603 (diff) |
Revert "Add Atlas Text interface for rendering SDF glyphs."
This reverts commit 39631f3df172feb385527a5d125bc53b0bded7e6.
Reason for revert: break google3 rool
Original change's description:
> Add Atlas Text interface for rendering SDF glyphs.
>
> This new API is built upon SDF text atlas code from the GPU backend. Unlike using the GPU
> backend to draw text, this set of interfaces allows the client to render the SDF glyphs. The
> client issues text draws to potentially multiple targets and then the client flushes. The
> client then gets commands from Skia with data to put into a texture atlas and vertices to
> draw that reference the texture. The client is responsible for creating the texture, uploading
> the SDF data to the texture, and drawing the vertices provided by Skia.
>
> Change-Id: Ie9447e19b85f0ce1c2b942e5216c787a74f335d3
> Reviewed-on: https://skia-review.googlesource.com/59360
> Commit-Queue: Brian Salomon <bsalomon@google.com>
> Reviewed-by: Robert Phillips <robertphillips@google.com>
TBR=jvanverth@google.com,bsalomon@google.com,robertphillips@google.com
Change-Id: I4aad0c99e645b476fd8ba25731f2a10e8802bb25
No-Presubmit: true
No-Tree-Checks: true
No-Try: true
Reviewed-on: https://skia-review.googlesource.com/73420
Reviewed-by: Greg Daniel <egdaniel@google.com>
Commit-Queue: Greg Daniel <egdaniel@google.com>
Diffstat (limited to 'include/atlastext')
-rw-r--r-- | include/atlastext/SkAtlasTextContext.h | 42 | ||||
-rw-r--r-- | include/atlastext/SkAtlasTextFont.h | 35 | ||||
-rw-r--r-- | include/atlastext/SkAtlasTextRenderer.h | 71 | ||||
-rw-r--r-- | include/atlastext/SkAtlasTextTarget.h | 61 |
4 files changed, 0 insertions, 209 deletions
diff --git a/include/atlastext/SkAtlasTextContext.h b/include/atlastext/SkAtlasTextContext.h deleted file mode 100644 index bb5de52992..0000000000 --- a/include/atlastext/SkAtlasTextContext.h +++ /dev/null @@ -1,42 +0,0 @@ -/* - * 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<SkAtlasTextContext> Make(sk_sp<SkAtlasTextRenderer>); - - 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<SkAtlasTextRenderer>); - - std::unique_ptr<SkInternalAtlasTextContext> fInternalContext; -}; - -#endif diff --git a/include/atlastext/SkAtlasTextFont.h b/include/atlastext/SkAtlasTextFont.h deleted file mode 100644 index a9e641f7ad..0000000000 --- a/include/atlastext/SkAtlasTextFont.h +++ /dev/null @@ -1,35 +0,0 @@ -/* - * 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 SkAtlasTextFont_DEFINED -#define SkAtlasTextFont_DEFINED - -#include "SkRefCnt.h" -#include "SkTypeface.h" - -/** Represents a font at a size. TODO: What else do we need here (skewX, scaleX, vertical, ...)? */ -class SK_API SkAtlasTextFont : public SkRefCnt { -public: - static sk_sp<SkAtlasTextFont> Make(sk_sp<SkTypeface> typeface, SkScalar size) { - return sk_sp<SkAtlasTextFont>(new SkAtlasTextFont(std::move(typeface), size)); - } - - SkTypeface* typeface() const { return fTypeface.get(); } - - sk_sp<SkTypeface> refTypeface() const { return fTypeface; } - - SkScalar size() const { return fSize; } - -private: - SkAtlasTextFont(sk_sp<SkTypeface> typeface, SkScalar size) - : fTypeface(std::move(typeface)), fSize(size) {} - - sk_sp<SkTypeface> fTypeface; - SkScalar fSize; -}; - -#endif diff --git a/include/atlastext/SkAtlasTextRenderer.h b/include/atlastext/SkAtlasTextRenderer.h deleted file mode 100644 index a78e270edb..0000000000 --- a/include/atlastext/SkAtlasTextRenderer.h +++ /dev/null @@ -1,71 +0,0 @@ -/* - * Copyright 2017 Google Inc. - * - * Use of this source code is governed by a BSD-style license that can be - * found in the LICENSE file. - */ - -#include "SkPoint.h" -#include "SkRefCnt.h" - -#ifndef SkAtlasTextRenderer_DEFINED -#define SkAtlasTextRenderer_DEFINED - -/** - * This is the base class for a renderer implemented by the SkAtlasText client. The - * SkAtlasTextContext issues texture creations, deletions, uploads, and vertex draws to the - * renderer. The renderer must perform those actions in the order called to correctly render - * the text drawn to SkAtlasTextTargets. - */ -class SK_API SkAtlasTextRenderer : public SkRefCnt { -public: - enum class AtlasFormat { - /** Unsigned normalized 8 bit single channel format. */ - kA8 - }; - - struct SDFVertex { - /** Position in device space (not normalized). */ - SkPoint fPosition; - /** Color, same value for all four corners of a glyph quad. */ - uint32_t fColor; - /** Texture coordinate (in texel units, not normalized). */ - SkIPoint16 fTextureCoord; - }; - - virtual ~SkAtlasTextRenderer() = default; - - /** - * Create a texture of the provided format with dimensions 'width' x 'height' - * and return a unique handle. - */ - virtual void* createTexture(AtlasFormat, int width, int height) = 0; - - /** - * Delete the texture with the passed handle. - */ - virtual void deleteTexture(void* textureHandle) = 0; - - /** - * Place the pixel data specified by 'data' in the texture with handle - * 'textureHandle' in the rectangle ['x', 'x' + 'width') x ['y', 'y' + 'height'). - * 'rowBytes' specifies the byte offset between successive rows in 'data' and will always be - * a multiple of the number of bytes per pixel. - * The pixel format of data is the same as that of 'textureHandle'. - */ - virtual void setTextureData(void* textureHandle, const void* data, int x, int y, int width, - int height, size_t rowBytes) = 0; - - /** - * Draws glyphs using SDFs. The SDF data resides in 'textureHandle'. The array - * 'vertices' provides interleaved device-space positions, colors, and - * texture coordinates. There are are 4 * 'quadCnt' entries in 'vertices'. - */ - virtual void drawSDFGlyphs(void* targetHandle, void* textureHandle, const SDFVertex vertices[], - int quadCnt) = 0; - - /** Called when a SkAtlasTextureTarget is destroyed. */ - virtual void targetDeleted(void* targetHandle) = 0; -}; - -#endif diff --git a/include/atlastext/SkAtlasTextTarget.h b/include/atlastext/SkAtlasTextTarget.h deleted file mode 100644 index 0859afde39..0000000000 --- a/include/atlastext/SkAtlasTextTarget.h +++ /dev/null @@ -1,61 +0,0 @@ -/* - * 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 |