2 * Copyright 2014 Google Inc.
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
8 #ifndef SkScalarContext_win_dw_DEFINED
9 #define SkScalarContext_win_dw_DEFINED
12 #include "SkScalerContext.h"
13 #include "SkTypeface_win_dw.h"
21 class SkScalerContext_DW : public SkScalerContext {
23 SkScalerContext_DW(DWriteFontTypeface*, const SkDescriptor* desc);
24 virtual ~SkScalerContext_DW();
27 unsigned generateGlyphCount() SK_OVERRIDE;
28 uint16_t generateCharToGlyph(SkUnichar uni) SK_OVERRIDE;
29 void generateAdvance(SkGlyph* glyph) SK_OVERRIDE;
30 void generateMetrics(SkGlyph* glyph) SK_OVERRIDE;
31 void generateImage(const SkGlyph& glyph) SK_OVERRIDE;
32 void generatePath(const SkGlyph& glyph, SkPath* path) SK_OVERRIDE;
33 void generateFontMetrics(SkPaint::FontMetrics*) SK_OVERRIDE;
36 const void* drawDWMask(const SkGlyph& glyph,
37 DWRITE_RENDERING_MODE renderingMode,
38 DWRITE_TEXTURE_TYPE textureType);
40 HRESULT getBoundingBox(SkGlyph* glyph,
41 DWRITE_RENDERING_MODE renderingMode,
42 DWRITE_TEXTURE_TYPE textureType,
45 SkTDArray<uint8_t> fBits;
46 /** The total matrix without the text height scale. */
48 /** The total matrix without the text height scale. */
50 /** The non-rotational part of total matrix without the text height scale.
51 * This is used to find the magnitude of gdi compatible advances.
54 /** The inverse of the rotational part of the total matrix.
55 * This is used to find the direction of gdi compatible advances.
58 /** The text size to render with. */
59 SkScalar fTextSizeRender;
60 /** The text size to measure with. */
61 SkScalar fTextSizeMeasure;
62 SkAutoTUnref<DWriteFontTypeface> fTypeface;
64 DWRITE_RENDERING_MODE fRenderingMode;
65 DWRITE_TEXTURE_TYPE fTextureType;
66 DWRITE_MEASURING_MODE fMeasuringMode;