SkRunFont is gone, there is only SkFont
Bug: skia:
Change-Id: I720fd5d8b3755d4f19767db4077e0f3c43167cae
Reviewed-on: https://skia-review.googlesource.com/c/174850
Reviewed-by: Herb Derby <herb@google.com>
Commit-Queue: Mike Reed <reed@google.com>
diff --git a/include/core/SkPaint.h b/include/core/SkPaint.h
index 3379260..7365417 100644
--- a/include/core/SkPaint.h
+++ b/include/core/SkPaint.h
@@ -47,7 +47,7 @@
class SkPath;
class SkPathEffect;
struct SkPoint;
-class SkRunFont;
+class SkFont;
class SkShader;
class SkSurfaceProps;
class SkTextBlob;
@@ -1279,7 +1279,7 @@
private:
friend class SkGlyphRun;
friend class SkGlyphRunBuilder;
- SkPaint(const SkPaint&, const SkRunFont&);
+ SkPaint(const SkPaint&, const SkFont&);
sk_sp<SkTypeface> fTypeface;
sk_sp<SkPathEffect> fPathEffect;
diff --git a/src/core/SkGlyphRun.cpp b/src/core/SkGlyphRun.cpp
index 8449756..383837c 100644
--- a/src/core/SkGlyphRun.cpp
+++ b/src/core/SkGlyphRun.cpp
@@ -29,7 +29,7 @@
// -- SkGlyphRun -----------------------------------------------------------------------------------
SkGlyphRun::SkGlyphRun(const SkPaint& basePaint,
- const SkRunFont& runFont,
+ const SkFont& runFont,
SkSpan<const SkPoint> positions,
SkSpan<const SkGlyphID> glyphIDs,
SkSpan<const char> text,
@@ -52,7 +52,7 @@
SkGlyphID glyphID;
SkGlyphRun run{
fRunPaint,
- SkRunFont{fRunPaint},
+ SkFont::LEGACY_ExtractFromPaint(fRunPaint),
SkSpan<const SkPoint>{&point, 1},
SkSpan<const SkGlyphID>{&glyphID, 1},
SkSpan<const char>{},
@@ -195,7 +195,7 @@
this->makeGlyphRun(
paint,
- SkRunFont{paint},
+ SkFont::LEGACY_ExtractFromPaint(paint),
glyphIDs,
positions,
SkSpan<const char>{},
@@ -208,7 +208,8 @@
auto glyphIDs = textToGlyphIDs(paint, bytes, byteLength);
if (!glyphIDs.empty()) {
this->initialize(glyphIDs.size());
- this->simplifyDrawText(paint, SkRunFont{paint}, glyphIDs, origin, fPositions);
+ this->simplifyDrawText(paint, SkFont::LEGACY_ExtractFromPaint(paint),
+ glyphIDs, origin, fPositions);
}
this->makeGlyphRunList(paint, nullptr, SkPoint::Make(0, 0));
@@ -221,7 +222,7 @@
if (!glyphIDs.empty()) {
this->initialize(glyphIDs.size());
this->simplifyDrawPosTextH(
- paint, SkRunFont{paint}, glyphIDs, xpos, constY, fPositions);
+ paint, SkFont::LEGACY_ExtractFromPaint(paint), glyphIDs, xpos, constY, fPositions);
}
this->makeGlyphRunList(paint, nullptr, SkPoint::Make(0, 0));
@@ -232,7 +233,7 @@
auto glyphIDs = textToGlyphIDs(paint, bytes, byteLength);
if (!glyphIDs.empty()) {
this->initialize(glyphIDs.size());
- this->simplifyDrawPosText(paint, SkRunFont{paint}, glyphIDs, pos);
+ this->simplifyDrawPosText(paint, SkFont::LEGACY_ExtractFromPaint(paint), glyphIDs, pos);
}
this->makeGlyphRunList(paint, nullptr, SkPoint::Make(0, 0));
@@ -263,18 +264,18 @@
switch (it.positioning()) {
case SkTextBlobRunIterator::kDefault_Positioning: {
this->simplifyDrawText(
- paint, it.runFont(), glyphIDs, offset, positions, text, clusters);
+ paint, it.font(), glyphIDs, offset, positions, text, clusters);
}
break;
case SkTextBlobRunIterator::kHorizontal_Positioning: {
auto constY = offset.y();
this->simplifyDrawPosTextH(
- paint, it.runFont(), glyphIDs, it.pos(), constY, positions, text, clusters);
+ paint, it.font(), glyphIDs, it.pos(), constY, positions, text, clusters);
}
break;
case SkTextBlobRunIterator::kFull_Positioning:
this->simplifyDrawPosText(
- paint, it.runFont(), glyphIDs, (const SkPoint*)it.pos(), text, clusters);
+ paint, it.font(), glyphIDs, (const SkPoint*)it.pos(), text, clusters);
break;
}
@@ -288,7 +289,7 @@
const SkPaint& paint, SkSpan<const SkGlyphID> glyphIDs, const SkPoint* pos) {
if (!glyphIDs.empty()) {
this->initialize(glyphIDs.size());
- this->simplifyDrawPosText(paint, SkRunFont{paint}, glyphIDs, pos);
+ this->simplifyDrawPosText(paint, SkFont::LEGACY_ExtractFromPaint(paint), glyphIDs, pos);
this->makeGlyphRunList(paint, nullptr, SkPoint::Make(0, 0));
}
}
@@ -329,7 +330,7 @@
void SkGlyphRunBuilder::makeGlyphRun(
const SkPaint& basePaint,
- const SkRunFont& runFont,
+ const SkFont& runFont,
SkSpan<const SkGlyphID> glyphIDs,
SkSpan<const SkPoint> positions,
SkSpan<const char> text,
@@ -356,14 +357,16 @@
}
void SkGlyphRunBuilder::simplifyDrawText(
- const SkPaint& paint, const SkRunFont& runFont, SkSpan<const SkGlyphID> glyphIDs,
+ const SkPaint& paint, const SkFont& runFont, SkSpan<const SkGlyphID> glyphIDs,
SkPoint origin, SkPoint* positions,
SkSpan<const char> text, SkSpan<const uint32_t> clusters) {
SkASSERT(!glyphIDs.empty());
auto runSize = glyphIDs.size();
- SkPaint runPaint{paint, runFont};
+ SkPaint runPaint(paint);
+ runFont.LEGACY_applyToPaint(&runPaint);
+ runPaint.setTextEncoding(kGlyphID_SkTextEncoding);
if (!glyphIDs.empty()) {
fScratchAdvances.resize(runSize);
@@ -391,7 +394,7 @@
}
void SkGlyphRunBuilder::simplifyDrawPosTextH(
- const SkPaint& paint, const SkRunFont& runFont, SkSpan<const SkGlyphID> glyphIDs,
+ const SkPaint& paint, const SkFont& runFont, SkSpan<const SkGlyphID> glyphIDs,
const SkScalar* xpos, SkScalar constY, SkPoint* positions,
SkSpan<const char> text, SkSpan<const uint32_t> clusters) {
@@ -404,7 +407,7 @@
}
void SkGlyphRunBuilder::simplifyDrawPosText(
- const SkPaint& paint, const SkRunFont& runFont, SkSpan<const SkGlyphID> glyphIDs,
+ const SkPaint& paint, const SkFont& runFont, SkSpan<const SkGlyphID> glyphIDs,
const SkPoint* pos,
SkSpan<const char> text, SkSpan<const uint32_t> clusters) {
auto runSize = glyphIDs.size();
diff --git a/src/core/SkGlyphRun.h b/src/core/SkGlyphRun.h
index 703b1d0..b91c480 100644
--- a/src/core/SkGlyphRun.h
+++ b/src/core/SkGlyphRun.h
@@ -17,14 +17,14 @@
#include "SkTemplates.h"
#include "SkTypes.h"
+class SkFont;
class SkGlyph;
-class SkRunFont;
class SkGlyphRun {
public:
SkGlyphRun() = default;
SkGlyphRun(const SkPaint& basePaint,
- const SkRunFont& runFont,
+ const SkFont& runFont,
SkSpan<const SkPoint> positions,
SkSpan<const SkGlyphID> glyphIDs,
SkSpan<const char> text,
@@ -137,7 +137,7 @@
void makeGlyphRun(
const SkPaint& basePaint,
- const SkRunFont& runFont,
+ const SkFont& runFont,
SkSpan<const SkGlyphID> glyphIDs,
SkSpan<const SkPoint> positions,
SkSpan<const char> text,
@@ -146,17 +146,17 @@
void makeGlyphRunList(const SkPaint& paint, const SkTextBlob* blob, SkPoint origin);
void simplifyDrawText(
- const SkPaint& paint, const SkRunFont& runFont, SkSpan<const SkGlyphID> glyphIDs,
+ const SkPaint& paint, const SkFont& runFont, SkSpan<const SkGlyphID> glyphIDs,
SkPoint origin, SkPoint* positions,
SkSpan<const char> text = SkSpan<const char>{},
SkSpan<const uint32_t> clusters = SkSpan<const uint32_t>{});
void simplifyDrawPosTextH(
- const SkPaint& paint, const SkRunFont& runFont, SkSpan<const SkGlyphID> glyphIDs,
+ const SkPaint& paint, const SkFont& runFont, SkSpan<const SkGlyphID> glyphIDs,
const SkScalar* xpos, SkScalar constY, SkPoint* positions,
SkSpan<const char> text = SkSpan<const char>{},
SkSpan<const uint32_t> clusters = SkSpan<const uint32_t>{});
void simplifyDrawPosText(
- const SkPaint& paint, const SkRunFont& runFont, SkSpan<const SkGlyphID> glyphIDs,
+ const SkPaint& paint, const SkFont& runFont, SkSpan<const SkGlyphID> glyphIDs,
const SkPoint* pos,
SkSpan<const char> text = SkSpan<const char>{},
SkSpan<const uint32_t> clusters = SkSpan<const uint32_t>{});
diff --git a/src/core/SkTextBlob.cpp b/src/core/SkTextBlob.cpp
index ab2d582..2e6b427 100644
--- a/src/core/SkTextBlob.cpp
+++ b/src/core/SkTextBlob.cpp
@@ -23,13 +23,6 @@
#include "text/GrTextBlobCache.h"
#endif
-SkRunFont::SkRunFont(const SkPaint& paint) : SkFont(SkFont::LEGACY_ExtractFromPaint(paint)) {}
-
-void SkRunFont::applyToPaint(SkPaint* paint) const {
- this->LEGACY_applyToPaint(paint);
- paint->setTextEncoding(kGlyphID_SkTextEncoding);
-}
-
namespace {
struct RunFontStorageEquivalent {
SkScalar fSize, fScaleX;
@@ -37,7 +30,7 @@
SkScalar fSkewX;
uint32_t fFlags;
};
-static_assert(sizeof(SkRunFont) == sizeof(RunFontStorageEquivalent), "runfont_should_stay_packed");
+static_assert(sizeof(SkFont) == sizeof(RunFontStorageEquivalent), "runfont_should_stay_packed");
}
size_t SkTextBlob::RunRecord::StorageSize(uint32_t glyphCount, uint32_t textSize,
@@ -74,7 +67,7 @@
namespace {
struct RunRecordStorageEquivalent {
- SkRunFont fFont;
+ SkFont fFont;
SkPoint fOffset;
uint32_t fCount;
uint32_t fFlags;
@@ -235,7 +228,8 @@
void SkTextBlobRunIterator::applyFontToPaint(SkPaint* paint) const {
SkASSERT(!this->done());
- fCurrentRun->font().applyToPaint(paint);
+ fCurrentRun->font().LEGACY_applyToPaint(paint);
+ paint->setTextEncoding(kGlyphID_SkTextEncoding);
}
bool SkTextBlobRunIterator::isLCD() const {
@@ -262,7 +256,8 @@
SkRect SkTextBlobBuilder::TightRunBounds(const SkTextBlob::RunRecord& run) {
SkRect bounds;
SkPaint paint;
- run.font().applyToPaint(&paint);
+ run.font().LEGACY_applyToPaint(&paint);
+ paint.setTextEncoding(kGlyphID_SkTextEncoding);
if (SkTextBlob::kDefault_Positioning == run.positioning()) {
paint.measureText(run.glyphBuffer(), run.glyphCount() * sizeof(uint16_t), &bounds);
diff --git a/src/core/SkTextBlobPriv.h b/src/core/SkTextBlobPriv.h
index 3710afb..2bd9178 100644
--- a/src/core/SkTextBlobPriv.h
+++ b/src/core/SkTextBlobPriv.h
@@ -59,21 +59,6 @@
}
};
-// TODO(fmalita): replace with SkFont.
-class SkRunFont : public SkFont {
-public:
- SkRunFont(const SkFont& font) : SkFont(font) {}
- SkRunFont(const SkPaint& paint);
-
- void applyToPaint(SkPaint* paint) const;
-
- bool operator==(const SkRunFont& other) const { return SkFont::operator==(other); }
-
- bool operator!=(const SkRunFont& other) const {
- return !(*this == other);
- }
-};
-
//
// Textblob data is laid out into externally-managed storage as follows:
//
@@ -120,7 +105,7 @@
return fOffset;
}
- const SkRunFont& font() const {
+ const SkFont& font() const {
return fFont;
}
@@ -186,7 +171,7 @@
return fFlags & kExtended_Flag;
}
- SkRunFont fFont;
+ SkFont fFont;
uint32_t fCount;
SkPoint fOffset;
uint32_t fFlags;
@@ -195,9 +180,9 @@
};
// (paint->getFlags() & ~kFlagsMask) | fFlags
-inline SkPaint::SkPaint(const SkPaint& basePaint, const SkRunFont& runFont) : SkPaint(basePaint) {
+inline SkPaint::SkPaint(const SkPaint& basePaint, const SkFont& runFont) : SkPaint(basePaint) {
fBitfields.fTextEncoding = (unsigned)kGlyphID_SkTextEncoding;
- runFont.applyToPaint(this);
+ runFont.LEGACY_applyToPaint(this);
}
/**
@@ -241,10 +226,6 @@
SkASSERT(!this->done());
return fCurrentRun->font();
}
- const SkRunFont& runFont() const {
- SkASSERT(!this->done());
- return fCurrentRun->font();
- }
void applyFontToPaint(SkPaint*) const;
GlyphPositioning positioning() const;
uint32_t* clusters() const {
diff --git a/tests/PDFPrimitivesTest.cpp b/tests/PDFPrimitivesTest.cpp
index 91e64e0..cd70d36 100644
--- a/tests/PDFPrimitivesTest.cpp
+++ b/tests/PDFPrimitivesTest.cpp
@@ -488,7 +488,7 @@
static SkGlyphRun make_run(size_t len, const SkGlyphID* glyphs, SkPoint* pos,
SkPaint paint, const uint32_t* clusters,
size_t utf8TextByteLength, const char* utf8Text) {
- return SkGlyphRun(paint, SkRunFont{paint},
+ return SkGlyphRun(paint, SkFont::LEGACY_ExtractFromPaint(paint),
SkSpan<const SkPoint>{pos, len},
SkSpan<const SkGlyphID>{glyphs, len},
SkSpan<const char>{utf8Text, utf8TextByteLength},