summaryrefslogtreecommitdiffstats
path: root/gfx/2d/ScaledFontDWrite.h
diff options
context:
space:
mode:
Diffstat (limited to 'gfx/2d/ScaledFontDWrite.h')
-rw-r--r--gfx/2d/ScaledFontDWrite.h84
1 files changed, 84 insertions, 0 deletions
diff --git a/gfx/2d/ScaledFontDWrite.h b/gfx/2d/ScaledFontDWrite.h
new file mode 100644
index 000000000..fc9a26c42
--- /dev/null
+++ b/gfx/2d/ScaledFontDWrite.h
@@ -0,0 +1,84 @@
+/* -*- Mode: C++; tab-width: 20; indent-tabs-mode: nil; c-basic-offset: 2 -*-
+ * This Source Code Form is subject to the terms of the Mozilla Public
+ * License, v. 2.0. If a copy of the MPL was not distributed with this
+ * file, You can obtain one at http://mozilla.org/MPL/2.0/. */
+
+#ifndef MOZILLA_GFX_SCALEDFONTDWRITE_H_
+#define MOZILLA_GFX_SCALEDFONTDWRITE_H_
+
+#include <dwrite.h>
+#include "ScaledFontBase.h"
+
+struct ID2D1GeometrySink;
+struct gfxFontStyle;
+
+namespace mozilla {
+namespace gfx {
+
+class ScaledFontDWrite final : public ScaledFontBase
+{
+public:
+ MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(ScaledFontDwrite)
+ ScaledFontDWrite(IDWriteFontFace *aFont, Float aSize)
+ : ScaledFontBase(aSize)
+ , mFontFace(aFont)
+ , mUseEmbeddedBitmap(false)
+ , mForceGDIMode(false)
+ {}
+
+ ScaledFontDWrite(IDWriteFontFace *aFontFace, Float aSize, bool aUseEmbeddedBitmap,
+ bool aForceGDIMode, const gfxFontStyle* aStyle);
+
+ virtual FontType GetType() const { return FontType::DWRITE; }
+
+ virtual already_AddRefed<Path> GetPathForGlyphs(const GlyphBuffer &aBuffer, const DrawTarget *aTarget);
+ virtual void CopyGlyphsToBuilder(const GlyphBuffer &aBuffer, PathBuilder *aBuilder, const Matrix *aTransformHint);
+
+ void CopyGlyphsToSink(const GlyphBuffer &aBuffer, ID2D1GeometrySink *aSink);
+
+ virtual void GetGlyphDesignMetrics(const uint16_t* aGlyphIndices, uint32_t aNumGlyphs, GlyphMetrics* aGlyphMetrics);
+
+ virtual bool GetFontFileData(FontFileDataOutput aDataCallback, void *aBaton);
+
+ virtual AntialiasMode GetDefaultAAMode() override;
+
+ bool UseEmbeddedBitmaps() { return mUseEmbeddedBitmap; }
+ bool ForceGDIMode() { return mForceGDIMode; }
+
+#ifdef USE_SKIA
+ virtual SkTypeface* GetSkTypeface();
+ SkFontStyle mStyle;
+#endif
+
+ RefPtr<IDWriteFontFace> mFontFace;
+ bool mUseEmbeddedBitmap;
+ bool mForceGDIMode;
+
+protected:
+#ifdef USE_CAIRO_SCALED_FONT
+ cairo_font_face_t* GetCairoFontFace() override;
+#endif
+};
+
+class GlyphRenderingOptionsDWrite : public GlyphRenderingOptions
+{
+public:
+ MOZ_DECLARE_REFCOUNTED_VIRTUAL_TYPENAME(GlyphRenderingOptionsDWrite)
+ GlyphRenderingOptionsDWrite(IDWriteRenderingParams *aParams)
+ : mParams(aParams)
+ {
+ }
+
+ virtual FontType GetType() const { return FontType::DWRITE; }
+
+private:
+ friend class DrawTargetD2D;
+ friend class DrawTargetD2D1;
+
+ RefPtr<IDWriteRenderingParams> mParams;
+};
+
+}
+}
+
+#endif /* MOZILLA_GFX_SCALEDFONTDWRITE_H_ */