diff options
author | bungeman <bungeman@google.com> | 2014-06-05 13:38:45 -0700 |
---|---|---|
committer | Commit bot <commit-bot@chromium.org> | 2014-06-05 13:38:45 -0700 |
commit | 51daa25a2b16bca578e78b7ea1e5815b9abb8b0b (patch) | |
tree | 200975ffc55d044e7d22d1291152152e2423ce09 /src/ports/SkScalerContext_win_dw.h | |
parent | c3b589a24eb4d567a906189f882c259ecf5c2f58 (diff) |
Split SkFontHost_win_dw.
Split SkFontHost_win_dw into FontMgr, Typeface, and ScalerContext.
This makes working on these files easier, and moves away from the legacy
FontHost naming.
R=reed@google.com
Author: bungeman@google.com
Review URL: https://codereview.chromium.org/314193002
Diffstat (limited to 'src/ports/SkScalerContext_win_dw.h')
-rw-r--r-- | src/ports/SkScalerContext_win_dw.h | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/src/ports/SkScalerContext_win_dw.h b/src/ports/SkScalerContext_win_dw.h new file mode 100644 index 0000000000..e3dbd29543 --- /dev/null +++ b/src/ports/SkScalerContext_win_dw.h @@ -0,0 +1,63 @@ +/* + * Copyright 2014 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#ifndef SkScalarContext_win_dw_DEFINED +#define SkScalarContext_win_dw_DEFINED + +#include "SkScalar.h" +#include "SkScalerContext.h" +#include "SkTypeface_win_dw.h" +#include "SkTypes.h" + +#include <dwrite.h> + +struct SkGlyph; +class SkDescriptor; + +class SkScalerContext_DW : public SkScalerContext { +public: + SkScalerContext_DW(DWriteFontTypeface*, const SkDescriptor* desc); + virtual ~SkScalerContext_DW(); + +protected: + virtual unsigned generateGlyphCount() SK_OVERRIDE; + virtual uint16_t generateCharToGlyph(SkUnichar uni) SK_OVERRIDE; + virtual void generateAdvance(SkGlyph* glyph) SK_OVERRIDE; + virtual void generateMetrics(SkGlyph* glyph) SK_OVERRIDE; + virtual void generateImage(const SkGlyph& glyph) SK_OVERRIDE; + virtual void generatePath(const SkGlyph& glyph, SkPath* path) SK_OVERRIDE; + virtual void generateFontMetrics(SkPaint::FontMetrics* mX, + SkPaint::FontMetrics* mY) SK_OVERRIDE; + +private: + const void* drawDWMask(const SkGlyph& glyph); + + SkTDArray<uint8_t> fBits; + /** The total matrix without the text height scale. */ + SkMatrix fSkXform; + /** The total matrix without the text height scale. */ + DWRITE_MATRIX fXform; + /** The non-rotational part of total matrix without the text height scale. + * This is used to find the magnitude of gdi compatible advances. + */ + DWRITE_MATRIX fGsA; + /** The inverse of the rotational part of the total matrix. + * This is used to find the direction of gdi compatible advances. + */ + SkMatrix fG_inv; + /** The text size to render with. */ + SkScalar fTextSizeRender; + /** The text size to measure with. */ + SkScalar fTextSizeMeasure; + SkAutoTUnref<DWriteFontTypeface> fTypeface; + int fGlyphCount; + DWRITE_RENDERING_MODE fRenderingMode; + DWRITE_TEXTURE_TYPE fTextureType; + DWRITE_MEASURING_MODE fMeasuringMode; +}; + +#endif |