aboutsummaryrefslogtreecommitdiffhomepage
path: root/src/ports/SkScalerContext_win_dw.h
diff options
context:
space:
mode:
authorGravatar bungeman <bungeman@google.com>2014-06-05 13:38:45 -0700
committerGravatar Commit bot <commit-bot@chromium.org>2014-06-05 13:38:45 -0700
commit51daa25a2b16bca578e78b7ea1e5815b9abb8b0b (patch)
tree200975ffc55d044e7d22d1291152152e2423ce09 /src/ports/SkScalerContext_win_dw.h
parentc3b589a24eb4d567a906189f882c259ecf5c2f58 (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.h63
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