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 GrFontScaler_DEFINED
1205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#define GrFontScaler_DEFINED
1305b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger
1405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#include "GrGlyph.h"
1505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#include "GrKey.h"
1605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger
170b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenbergerclass SkPath;
1805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger
1905b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger/**
2005b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger *  This is a virtual base class which Gr's interface to the host platform's
2105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger *  font scaler.
2205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger *
2305b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger *  The client is responsible for subclassing, and instantiating this. The
2405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger *  instance is create for a specific font+size+matrix.
2505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger */
2605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerclass GrFontScaler : public GrRefCnt {
2705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenbergerpublic:
2805b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger    virtual const GrKey* getKey() = 0;
29137a4ca42423bbb6d683067ea544c9a48f18f06cDerek Sollenberger    virtual GrMaskFormat getMaskFormat() = 0;
3005b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger    virtual bool getPackedGlyphBounds(GrGlyph::PackedID, GrIRect* bounds) = 0;
3105b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger    virtual bool getPackedGlyphImage(GrGlyph::PackedID, int width, int height,
3205b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger                                     int rowBytes, void* image) = 0;
330b15698a8c76bb8abc1b555c1d91892669b4118fDerek Sollenberger    virtual bool getGlyphPath(uint16_t glyphID, SkPath*) = 0;
3405b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger};
3505b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger
3605b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger#endif
3705b6b4d746867a9fb02e14edfe1bf3685abeb813Derek Sollenberger
38