105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 21cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger/* 31cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Copyright 2010 Google Inc. 41cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * 51cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be 61cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger * found in the LICENSE file. 705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger */ 805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 905b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 101cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger 1105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#ifndef GrTextContext_DEFINED 1205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#define GrTextContext_DEFINED 1305b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 1405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#include "GrGlyph.h" 1505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#include "GrPaint.h" 1635e2e62b55598210f6999fc2ea26ff8f41446ffeDerek Sollenberger#include "GrMatrix.h" 1705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 1805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerstruct GrGpuTextVertex; 1905b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerclass GrContext; 2005b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerclass GrTextStrike; 2105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerclass GrFontScaler; 2205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerclass GrDrawTarget; 2305b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 2405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerclass GrTextContext { 2505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerpublic: 2605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger GrTextContext(GrContext*, 2705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger const GrPaint& paint, 2805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger const GrMatrix* extMatrix = NULL); 2905b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger ~GrTextContext(); 3005b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 3105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger void drawPackedGlyph(GrGlyph::PackedID, GrFixed left, GrFixed top, 3205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger GrFontScaler*); 3305b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 3405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger void flush(); // optional; automatically called by destructor 3505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 3605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerprivate: 3705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger GrPaint fPaint; 3805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger GrVertexLayout fVertexLayout; 3905b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger GrContext* fContext; 4005b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger GrDrawTarget* fDrawTarget; 4105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 4205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger GrMatrix fExtMatrix; 4305b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger GrFontScaler* fScaler; 4405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger GrTextStrike* fStrike; 4505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 4605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger inline void flushGlyphs(); 471cab2921ab279367f8206cdadc9259d12e603548Derek Sollenberger void setupDrawTarget(); 4805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 4905b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger enum { 5005b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger kMinRequestedGlyphs = 1, 5105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger kDefaultRequestedGlyphs = 64, 5205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger kMinRequestedVerts = kMinRequestedGlyphs * 4, 5305b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger kDefaultRequestedVerts = kDefaultRequestedGlyphs * 4, 5405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger }; 5505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 5605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger GrGpuTextVertex* fVertices; 5705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 5805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger int32_t fMaxVertices; 5905b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger GrTexture* fCurrTexture; 6005b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger int fCurrVertex; 6105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 6205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger GrIRect fClipRect; 6305b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger GrMatrix fOrigViewMatrix; // restore previous viewmatrix 6405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger}; 6505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 6605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#endif 6705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 6805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger 69