skia2/include/gpu/GrFontScaler.h
commit-bot@chromium.org 762cd80437 Move distance field generation to the glyph cache.
Distance fields are currently created in GrTextStrike, which is the wrong place. This moves that to the glyph cache where it belongs.

As part of my testing, I found that when we fall back to paths in the GrDistanceFieldTextContext it was not scaling them properly, so that's fixed in here too.

R=robertphillips@google.com, reed@google.com

Author: jvanverth@google.com

Review URL: https://codereview.chromium.org/227593010

git-svn-id: http://skia.googlecode.com/svn/trunk@14193 2bbb7eff-a529-9590-31e7-b0007b416f81
2014-04-14 22:05:07 +00:00

45 lines
1.4 KiB
C++

/*
* 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 GrFontScaler_DEFINED
#define GrFontScaler_DEFINED
#include "GrGlyph.h"
#include "GrKey.h"
class SkPath;
/**
* This is a virtual base class which Gr's interface to the host platform's
* font scaler.
*
* The client is responsible for subclassing, and instantiating this. The
* instance is created for a specific font+size+matrix.
*/
class GrFontScaler : public SkRefCnt {
public:
SK_DECLARE_INST_COUNT(GrFontScaler)
virtual const GrKey* getKey() = 0;
virtual GrMaskFormat getMaskFormat() = 0;
virtual bool getPackedGlyphBounds(GrGlyph::PackedID, SkIRect* bounds) = 0;
virtual bool getPackedGlyphImage(GrGlyph::PackedID, int width, int height,
int rowBytes, void* image) = 0;
// get bounds for distance field associated with packed ID
virtual bool getPackedGlyphDFBounds(GrGlyph::PackedID, SkIRect* bounds) = 0;
// copies distance field bytes into pre-allocated dfImage
// (should be width*height bytes in size)
virtual bool getPackedGlyphDFImage(GrGlyph::PackedID, int width, int height,
void* dfImage) = 0;
virtual bool getGlyphPath(uint16_t glyphID, SkPath*) = 0;
private:
typedef SkRefCnt INHERITED;
};
#endif