158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger/*
258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * Copyright 2013 Google Inc.
358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger *
458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * Use of this source code is governed by a BSD-style license that can be
558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger * found in the LICENSE file.
658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger */
758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger
858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#ifndef SkGScalerContext_DEFINED
958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#define SkGScalerContext_DEFINED
1058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger
1158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#include "SkScalerContext.h"
1258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#include "SkTypeface.h"
1358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger
1458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerclass SkGTypeface : public SkTypeface {
1558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerpublic:
1658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger    SkGTypeface(SkTypeface* proxy, const SkPaint&);
1758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger    virtual ~SkGTypeface();
1858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger
1958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger    SkTypeface* proxy() const { return fProxy; }
2058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger    const SkPaint& paint() const { return fPaint; }
2158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger
2258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerprotected:
2358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger    virtual SkScalerContext* onCreateScalerContext(const SkDescriptor*) const SK_OVERRIDE;
2458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger    virtual void onFilterRec(SkScalerContextRec*) const SK_OVERRIDE;
2558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger    virtual SkAdvancedTypefaceMetrics* onGetAdvancedTypefaceMetrics(
2658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger                                    SkAdvancedTypefaceMetrics::PerGlyphInfo,
2758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger                                    const uint32_t* glyphIDs,
2858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger                                    uint32_t glyphIDsCount) const SK_OVERRIDE;
2958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger    virtual SkStream* onOpenStream(int* ttcIndex) const SK_OVERRIDE;
3058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger    virtual void onGetFontDescriptor(SkFontDescriptor*, bool* isLocal) const SK_OVERRIDE;
3158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger
320a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger    virtual int onCharsToGlyphs(const void* chars, Encoding encoding,
330a657bbc2c6fc9daf699942e023050536d5ec95fDerek Sollenberger                                uint16_t glyphs[], int glyphCount) const SK_OVERRIDE;
3458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger    virtual int onCountGlyphs() const SK_OVERRIDE;
3558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger    virtual int onGetUPEM() const SK_OVERRIDE;
3658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger
37e27eefc4844477cee5d32f51ab45ff62020cdb36Derek Sollenberger    virtual SkTypeface::LocalizedStrings* onCreateFamilyNameIterator() const SK_OVERRIDE;
38e27eefc4844477cee5d32f51ab45ff62020cdb36Derek Sollenberger
3958190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger    virtual int onGetTableTags(SkFontTableTag tags[]) const SK_OVERRIDE;
4058190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger    virtual size_t onGetTableData(SkFontTableTag, size_t offset,
4158190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger                                  size_t length, void* data) const SK_OVERRIDE;
4258190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger
4358190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenbergerprivate:
4458190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger    SkTypeface* fProxy;
4558190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger    SkPaint     fPaint;
4658190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger};
4758190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger
4858190644c30e1c4aa8e527f3503c58f841e0fcf3Derek Sollenberger#endif
49