Move GrTextContext to private interface
NOTRY=true
R=bsalomon@google.com, reed@google.com
Author: jvanverth@google.com
Review URL: https://codereview.chromium.org/145073005
git-svn-id: http://skia.googlecode.com/svn/trunk@13239 2bbb7eff-a529-9590-31e7-b0007b416f81
diff --git a/include/gpu/GrBitmapTextContext.h b/include/gpu/GrBitmapTextContext.h
deleted file mode 100755
index 6550e3c..0000000
--- a/include/gpu/GrBitmapTextContext.h
+++ /dev/null
@@ -1,49 +0,0 @@
-/*
- * Copyright 2013 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef GrBitmapTextContext_DEFINED
-#define GrBitmapTextContext_DEFINED
-
-#include "GrTextContext.h"
-
-class GrTextStrike;
-
-/*
- * This class implements GrTextContext using standard bitmap fonts
- */
-class GrBitmapTextContext : public GrTextContext {
-public:
- GrBitmapTextContext(GrContext*, const GrPaint&, const SkPaint&, const SkDeviceProperties&);
- virtual ~GrBitmapTextContext();
-
- virtual void drawText(const char text[], size_t byteLength, SkScalar x, SkScalar y) SK_OVERRIDE;
- virtual void drawPosText(const char text[], size_t byteLength,
- const SkScalar pos[], SkScalar constY,
- int scalarsPerPosition) SK_OVERRIDE;
-
- static bool CanDraw(const SkPaint& paint, const SkMatrix& ctm);
-
-private:
- GrTextStrike* fStrike;
-
- void drawPackedGlyph(GrGlyph::PackedID, GrFixed left, GrFixed top, GrFontScaler*);
- void flushGlyphs(); // automatically called by destructor
-
- enum {
- kMinRequestedGlyphs = 1,
- kDefaultRequestedGlyphs = 64,
- kMinRequestedVerts = kMinRequestedGlyphs * 4,
- kDefaultRequestedVerts = kDefaultRequestedGlyphs * 4,
- };
-
- SkPoint* fVertices;
- int32_t fMaxVertices;
- GrTexture* fCurrTexture;
- int fCurrVertex;
-};
-
-#endif
diff --git a/include/gpu/GrDistanceFieldTextContext.h b/include/gpu/GrDistanceFieldTextContext.h
deleted file mode 100755
index 8b94038..0000000
--- a/include/gpu/GrDistanceFieldTextContext.h
+++ /dev/null
@@ -1,52 +0,0 @@
-/*
- * Copyright 2013 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef GrDistanceFieldTextContext_DEFINED
-#define GrDistanceFieldTextContext_DEFINED
-
-#include "GrTextContext.h"
-
-class GrTextStrike;
-
-/*
- * This class implements GrTextContext using distance field fonts
- */
-class GrDistanceFieldTextContext : public GrTextContext {
-public:
- virtual void drawText(const char text[], size_t byteLength, SkScalar x, SkScalar y) SK_OVERRIDE;
- virtual void drawPosText(const char text[], size_t byteLength,
- const SkScalar pos[], SkScalar constY,
- int scalarsPerPosition) SK_OVERRIDE;
-
- static bool CanDraw(const SkPaint& paint, const SkMatrix& ctm);
-
-private:
- GrDistanceFieldTextContext(GrContext*, const GrPaint&, const SkPaint&,
- const SkDeviceProperties&);
- virtual ~GrDistanceFieldTextContext();
- friend class GrTTextContextManager<GrDistanceFieldTextContext>;
-
- GrTextStrike* fStrike;
- SkScalar fTextRatio;
-
- void drawPackedGlyph(GrGlyph::PackedID, GrFixed left, GrFixed top, GrFontScaler*);
- void flushGlyphs(); // automatically called by destructor
-
- enum {
- kMinRequestedGlyphs = 1,
- kDefaultRequestedGlyphs = 64,
- kMinRequestedVerts = kMinRequestedGlyphs * 4,
- kDefaultRequestedVerts = kDefaultRequestedGlyphs * 4,
- };
-
- SkPoint* fVertices;
- int32_t fMaxVertices;
- GrTexture* fCurrTexture;
- int fCurrVertex;
-};
-
-#endif
diff --git a/include/gpu/GrTextContext.h b/include/gpu/GrTextContext.h
deleted file mode 100644
index c572d0d..0000000
--- a/include/gpu/GrTextContext.h
+++ /dev/null
@@ -1,129 +0,0 @@
-/*
- * Copyright 2010 Google Inc.
- *
- * Use of this source code is governed by a BSD-style license that can be
- * found in the LICENSE file.
- */
-
-#ifndef GrTextContext_DEFINED
-#define GrTextContext_DEFINED
-
-#include "GrPoint.h"
-#include "GrGlyph.h"
-#include "GrPaint.h"
-#include "SkDeviceProperties.h"
-
-#include "SkPostConfig.h"
-
-class GrContext;
-class GrDrawTarget;
-class GrFontScaler;
-
-/*
- * This class wraps the state for a single text render
- */
-class GrTextContext {
-public:
- virtual ~GrTextContext() {}
- virtual void drawText(const char text[], size_t byteLength, SkScalar x, SkScalar y) = 0;
- virtual void drawPosText(const char text[], size_t byteLength,
- const SkScalar pos[], SkScalar constY,
- int scalarsPerPosition) = 0;
-
-protected:
- GrTextContext(GrContext*, const GrPaint&, const SkPaint&, const SkDeviceProperties&);
-
- static GrFontScaler* GetGrFontScaler(SkGlyphCache* cache);
- static void MeasureText(SkGlyphCache* cache, SkDrawCacheProc glyphCacheProc,
- const char text[], size_t byteLength, SkVector* stopVector);
-
- GrContext* fContext;
- GrPaint fPaint;
- SkPaint fSkPaint;
- SkDeviceProperties fDeviceProperties;
- GrDrawTarget* fDrawTarget;
-
- SkIRect fClipRect;
-};
-
-/*
- * These classes wrap the creation of a single text context for a given GPU device. The
- * assumption is that we'll only be using one text context at a time for that device.
- */
-class GrTextContextManager {
-public:
- virtual ~GrTextContextManager() {}
- virtual GrTextContext* create(GrContext* grContext, const GrPaint& grPaint,
- const SkPaint& skPaint, const SkDeviceProperties& props) = 0;
- virtual bool canDraw(const SkPaint& paint, const SkMatrix& ctm) = 0;
-};
-
-template <class TextContextClass>
-class GrTTextContextManager : public GrTextContextManager {
-private:
- class ManagedTextContext : public TextContextClass {
- public:
- virtual ~ManagedTextContext() {}
-
- ManagedTextContext(GrContext* grContext,
- const GrPaint& grPaint,
- const SkPaint& skPaint,
- const SkDeviceProperties& properties,
- GrTTextContextManager<TextContextClass>* manager) :
- TextContextClass(grContext, grPaint, skPaint, properties) {
- fManager = manager;
- }
-
- static void operator delete(void* ptr) {
- if (ptr == NULL) {
- return;
- }
- ManagedTextContext* context = reinterpret_cast<ManagedTextContext*>(ptr);
- context->fManager->recycle(context);
- }
-
- static void operator delete(void*, void*) {
- }
-
- GrTTextContextManager<TextContextClass>* fManager;
- };
-
-public:
- GrTTextContextManager() {
- fAllocation = sk_malloc_throw(sizeof(ManagedTextContext));
- fUsed = false;
- }
-
- virtual ~GrTTextContextManager() {
- SkASSERT(!fUsed);
- sk_free(fAllocation);
- }
-
- virtual GrTextContext* create(GrContext* grContext, const GrPaint& grPaint,
- const SkPaint& skPaint, const SkDeviceProperties& properties)
- SK_OVERRIDE {
- // add check for usePath here?
- SkASSERT(!fUsed);
- ManagedTextContext* obj = SkNEW_PLACEMENT_ARGS(fAllocation, ManagedTextContext,
- (grContext, grPaint, skPaint, properties,
- this));
- fUsed = true;
- return obj;
- }
-
- virtual bool canDraw(const SkPaint& paint, const SkMatrix& ctm) SK_OVERRIDE {
- return TextContextClass::CanDraw(paint, ctm);
- }
-
-private:
- void recycle(GrTextContext* textContext) {
- SkASSERT((void*)textContext == fAllocation);
- SkASSERT(fUsed);
- fUsed = false;
- }
-
- void* fAllocation;
- bool fUsed;
-};
-
-#endif
diff --git a/include/gpu/SkGpuDevice.h b/include/gpu/SkGpuDevice.h
index addf678..bfcdba3 100644
--- a/include/gpu/SkGpuDevice.h
+++ b/include/gpu/SkGpuDevice.h
@@ -16,11 +16,12 @@
#include "SkBitmapDevice.h"
#include "SkRegion.h"
#include "GrContext.h"
-#include "GrTextContext.h"
struct SkDrawProcs;
struct GrSkDrawProcs;
+class GrTextContextManager;
+
/**
* Subclass of SkBitmapDevice, which directs all drawing to the GrGpu owned by the
* canvas.
@@ -208,11 +209,6 @@
int tileSize,
bool bicubic);
- /**
- * Returns non-initialized instance.
- */
- GrTextContext* getTextContext();
-
typedef SkBitmapDevice INHERITED;
};