Index: include/gpu/GrTextContext.h |
diff --git a/include/gpu/GrTextContext.h b/include/gpu/GrTextContext.h |
index 3c61cbc80e25821405ba9dddb29135ae314c3f76..b367cf228d57fd5c0103cbb77332bc7b7a0dd4ae 100644 |
--- a/include/gpu/GrTextContext.h |
+++ b/include/gpu/GrTextContext.h |
@@ -12,8 +12,6 @@ |
#include "GrGlyph.h" |
#include "GrPaint.h" |
-#include "SkPostConfig.h" |
- |
class GrContext; |
class GrDrawTarget; |
class GrFontScaler; |
@@ -23,88 +21,20 @@ |
*/ |
class GrTextContext { |
public: |
- virtual ~GrTextContext() {} |
virtual void drawPackedGlyph(GrGlyph::PackedID, GrFixed left, GrFixed top, |
GrFontScaler*) = 0; |
protected: |
- GrTextContext(GrContext*, const GrPaint&, const SkPaint&); |
+ GrTextContext(GrContext*, const GrPaint&); |
+ virtual ~GrTextContext() {} |
GrPaint fPaint; |
- SkPaint fSkPaint; |
GrContext* fContext; |
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* context, const GrPaint& grPaint, |
- const SkPaint& skPaint) = 0; |
-}; |
- |
-template <class TextContextClass> |
-class GrTTextContextManager : public GrTextContextManager { |
-private: |
- class ManagedTextContext : public TextContextClass { |
- public: |
- ~ManagedTextContext() {} |
- |
- ManagedTextContext(GrContext* context, |
- const GrPaint& grPaint, |
- const SkPaint& skPaint, |
- GrTTextContextManager<TextContextClass>* manager) : |
- TextContextClass(context, grPaint, skPaint) { |
- fManager = manager; |
- } |
- |
- static void operator delete(void* ptr) { |
- if (ptr == NULL) { |
- return; |
- } |
- ManagedTextContext* context = reinterpret_cast<ManagedTextContext*>(ptr); |
- context->fManager->recycle(context); |
- } |
- |
- GrTTextContextManager<TextContextClass>* fManager; |
- }; |
- |
-public: |
- GrTTextContextManager() { |
- fAllocation = sk_malloc_throw(sizeof(ManagedTextContext)); |
- fUsed = false; |
- } |
- |
- ~GrTTextContextManager() { |
- SkASSERT(!fUsed); |
- sk_free(fAllocation); |
- } |
- |
- GrTextContext* create(GrContext* context, const GrPaint& grPaint, |
- const SkPaint& skPaint) { |
- // add check for usePath here? |
- SkASSERT(!fUsed); |
- ManagedTextContext* obj = SkNEW_PLACEMENT_ARGS(fAllocation, ManagedTextContext, |
- (context, grPaint, skPaint, this)); |
- fUsed = true; |
- return obj; |
- } |
private: |
- void recycle(GrTextContext* textContext) { |
- SkASSERT((void*)textContext == fAllocation); |
- SkASSERT(fUsed); |
- fUsed = false; |
- } |
- |
- void* fAllocation; |
- bool fUsed; |
}; |
#endif |