зеркало из https://github.com/mozilla/gecko-dev.git
Bug 1308394 - In CopyGlyphsToBuilder, use PathBuilder's backend instead of DrawTarget's. r=bas
--HG-- extra : rebase_source : 27d283fe8fecf613bdc4cc7c0492a0d3e97a3253
This commit is contained in:
Родитель
24632186f9
Коммит
68f7c140b8
|
@ -694,7 +694,7 @@ public:
|
||||||
* implementation in some backends, and more efficient implementation in
|
* implementation in some backends, and more efficient implementation in
|
||||||
* others.
|
* others.
|
||||||
*/
|
*/
|
||||||
virtual void CopyGlyphsToBuilder(const GlyphBuffer &aBuffer, PathBuilder *aBuilder, BackendType aBackendType, const Matrix *aTransformHint = nullptr) = 0;
|
virtual void CopyGlyphsToBuilder(const GlyphBuffer &aBuffer, PathBuilder *aBuilder, const Matrix *aTransformHint = nullptr) = 0;
|
||||||
|
|
||||||
/* This gets the metrics of a set of glyphs for the current font face.
|
/* This gets the metrics of a set of glyphs for the current font face.
|
||||||
*/
|
*/
|
||||||
|
|
|
@ -151,17 +151,18 @@ ScaledFontBase::GetPathForGlyphs(const GlyphBuffer &aBuffer, const DrawTarget *a
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
ScaledFontBase::CopyGlyphsToBuilder(const GlyphBuffer &aBuffer, PathBuilder *aBuilder, BackendType aBackendType, const Matrix *aTransformHint)
|
ScaledFontBase::CopyGlyphsToBuilder(const GlyphBuffer &aBuffer, PathBuilder *aBuilder, const Matrix *aTransformHint)
|
||||||
{
|
{
|
||||||
|
BackendType backendType = aBuilder->GetBackendType();
|
||||||
#ifdef USE_SKIA
|
#ifdef USE_SKIA
|
||||||
if (aBackendType == BackendType::SKIA) {
|
if (backendType == BackendType::SKIA) {
|
||||||
PathBuilderSkia *builder = static_cast<PathBuilderSkia*>(aBuilder);
|
PathBuilderSkia *builder = static_cast<PathBuilderSkia*>(aBuilder);
|
||||||
builder->AppendPath(GetSkiaPathForGlyphs(aBuffer));
|
builder->AppendPath(GetSkiaPathForGlyphs(aBuffer));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
#ifdef USE_CAIRO
|
#ifdef USE_CAIRO
|
||||||
if (aBackendType == BackendType::CAIRO) {
|
if (backendType == BackendType::CAIRO) {
|
||||||
MOZ_ASSERT(mScaledFont);
|
MOZ_ASSERT(mScaledFont);
|
||||||
|
|
||||||
PathBuilderCairo* builder = static_cast<PathBuilderCairo*>(aBuilder);
|
PathBuilderCairo* builder = static_cast<PathBuilderCairo*>(aBuilder);
|
||||||
|
@ -191,8 +192,6 @@ ScaledFontBase::CopyGlyphsToBuilder(const GlyphBuffer &aBuffer, PathBuilder *aBu
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
MOZ_CRASH("GFX: The specified backend type is not supported by CopyGlyphsToBuilder");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void
|
void
|
||||||
|
|
|
@ -33,7 +33,7 @@ public:
|
||||||
|
|
||||||
virtual already_AddRefed<Path> GetPathForGlyphs(const GlyphBuffer &aBuffer, const DrawTarget *aTarget);
|
virtual already_AddRefed<Path> GetPathForGlyphs(const GlyphBuffer &aBuffer, const DrawTarget *aTarget);
|
||||||
|
|
||||||
virtual void CopyGlyphsToBuilder(const GlyphBuffer &aBuffer, PathBuilder *aBuilder, BackendType aBackendType, const Matrix *aTransformHint);
|
virtual void CopyGlyphsToBuilder(const GlyphBuffer &aBuffer, PathBuilder *aBuilder, const Matrix *aTransformHint);
|
||||||
|
|
||||||
virtual void GetGlyphDesignMetrics(const uint16_t* aGlyphIndices, uint32_t aNumGlyphs, GlyphMetrics* aGlyphMetrics);
|
virtual void GetGlyphDesignMetrics(const uint16_t* aGlyphIndices, uint32_t aNumGlyphs, GlyphMetrics* aGlyphMetrics);
|
||||||
|
|
||||||
|
|
|
@ -151,10 +151,11 @@ ScaledFontDWrite::GetSkTypeface()
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
void
|
void
|
||||||
ScaledFontDWrite::CopyGlyphsToBuilder(const GlyphBuffer &aBuffer, PathBuilder *aBuilder, BackendType aBackendType, const Matrix *aTransformHint)
|
ScaledFontDWrite::CopyGlyphsToBuilder(const GlyphBuffer &aBuffer, PathBuilder *aBuilder, const Matrix *aTransformHint)
|
||||||
{
|
{
|
||||||
if (aBackendType != BackendType::DIRECT2D && aBackendType != BackendType::DIRECT2D1_1) {
|
BackendType backendType = aBuilder->GetBackendType();
|
||||||
ScaledFontBase::CopyGlyphsToBuilder(aBuffer, aBuilder, aBackendType, aTransformHint);
|
if (backendType != BackendType::DIRECT2D && backendType != BackendType::DIRECT2D1_1) {
|
||||||
|
ScaledFontBase::CopyGlyphsToBuilder(aBuffer, aBuilder, aTransformHint);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,7 @@ public:
|
||||||
virtual FontType GetType() const { return FontType::DWRITE; }
|
virtual FontType GetType() const { return FontType::DWRITE; }
|
||||||
|
|
||||||
virtual already_AddRefed<Path> GetPathForGlyphs(const GlyphBuffer &aBuffer, const DrawTarget *aTarget);
|
virtual already_AddRefed<Path> GetPathForGlyphs(const GlyphBuffer &aBuffer, const DrawTarget *aTarget);
|
||||||
virtual void CopyGlyphsToBuilder(const GlyphBuffer &aBuffer, PathBuilder *aBuilder, BackendType aBackendType, const Matrix *aTransformHint);
|
virtual void CopyGlyphsToBuilder(const GlyphBuffer &aBuffer, PathBuilder *aBuilder, const Matrix *aTransformHint);
|
||||||
|
|
||||||
void CopyGlyphsToSink(const GlyphBuffer &aBuffer, ID2D1GeometrySink *aSink);
|
void CopyGlyphsToSink(const GlyphBuffer &aBuffer, ID2D1GeometrySink *aSink);
|
||||||
|
|
||||||
|
|
|
@ -1736,8 +1736,7 @@ private:
|
||||||
mRunParams.context->EnsurePathBuilder();
|
mRunParams.context->EnsurePathBuilder();
|
||||||
Matrix mat = mRunParams.dt->GetTransform();
|
Matrix mat = mRunParams.dt->GetTransform();
|
||||||
mFontParams.scaledFont->CopyGlyphsToBuilder(
|
mFontParams.scaledFont->CopyGlyphsToBuilder(
|
||||||
buf, mRunParams.context->mPathBuilder,
|
buf, mRunParams.context->mPathBuilder, &mat);
|
||||||
mRunParams.dt->GetBackendType(), &mat);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
mNumGlyphs = 0;
|
mNumGlyphs = 0;
|
||||||
|
|
Загрузка…
Ссылка в новой задаче