hide the SkPaint::Align enum entirely
Bug: skia:2664
Change-Id: I080b015dbcb3a3cd73bb6847f3243a996d5f7b7d
Reviewed-on: https://skia-review.googlesource.com/c/166282
Commit-Queue: Mike Reed <reed@google.com>
Reviewed-by: Florin Malita <fmalita@chromium.org>
diff --git a/gm/aaxfermodes.cpp b/gm/aaxfermodes.cpp
index 19add75..1db4c1c 100644
--- a/gm/aaxfermodes.cpp
+++ b/gm/aaxfermodes.cpp
@@ -110,11 +110,11 @@
SkTextUtils::DrawString(canvas, "Src Unknown",
kLabelSpacing + kShapeTypeSpacing * 1.5f + kShapeSpacing / 2,
kSubtitleSpacing / 2 + fLabelPaint.getTextSize() / 3, fLabelPaint,
- SkPaint::kCenter_Align);
+ SkTextUtils::kCenter_Align);
SkTextUtils::DrawString(canvas, "Src Opaque",
kLabelSpacing + kShapeTypeSpacing * 1.5f + kShapeSpacing / 2 +
kPaintSpacing, kSubtitleSpacing / 2 + fLabelPaint.getTextSize() / 3,
- fLabelPaint, SkPaint::kCenter_Align);
+ fLabelPaint, SkTextUtils::kCenter_Align);
}
canvas->translate(0, kSubtitleSpacing + kShapeSpacing/2);
@@ -183,11 +183,11 @@
SkTextUtils::DrawString(canvas, "Porter Duff",
kLabelSpacing + 4 * kShapeTypeSpacing,
kTitleSpacing / 2 + titlePaint.getTextSize() / 3, titlePaint,
- SkPaint::kCenter_Align);
+ SkTextUtils::kCenter_Align);
SkTextUtils::DrawString(canvas, "Advanced",
kXfermodeTypeSpacing + kLabelSpacing + 4 * kShapeTypeSpacing,
kTitleSpacing / 2 + titlePaint.getTextSize() / 3, titlePaint,
- SkPaint::kCenter_Align);
+ SkTextUtils::kCenter_Align);
draw_pass(canvas, kShape_Pass);
canvas->restore();
@@ -197,7 +197,7 @@
const char* modeName = SkBlendMode_Name(mode);
SkTextUtils::DrawString(canvas, modeName, kLabelSpacing - kShapeSize / 4,
fLabelPaint.getTextSize() / 4, fLabelPaint,
- SkPaint::kRight_Align);
+ SkTextUtils::kRight_Align);
}
void setupShapePaint(SkCanvas* canvas, SkColor color, SkBlendMode mode, SkPaint* paint) {
diff --git a/gm/androidblendmodes.cpp b/gm/androidblendmodes.cpp
index db6a65f..359b78e 100644
--- a/gm/androidblendmodes.cpp
+++ b/gm/androidblendmodes.cpp
@@ -97,7 +97,7 @@
SkTextUtils::DrawString(canvas, SkBlendMode_Name(mode),
xOffset + kBitmapSize/2.0f,
yOffset + kBitmapSize,
- textPaint, SkPaint::kCenter_Align);
+ textPaint, SkTextUtils::kCenter_Align);
xOffset += 256;
if (xOffset >= 1024) {
diff --git a/gm/coloremoji_blendmodes.cpp b/gm/coloremoji_blendmodes.cpp
index fb9e29e..e0f396d 100644
--- a/gm/coloremoji_blendmodes.cpp
+++ b/gm/coloremoji_blendmodes.cpp
@@ -155,7 +155,7 @@
#if 1
const char* label = SkBlendMode_Name(gModes[i]);
SkTextUtils::DrawString(canvas, label, x + w/2, y - labelP.getTextSize()/2, labelP,
- SkPaint::kCenter_Align);
+ SkTextUtils::kCenter_Align);
#endif
x += w + SkIntToScalar(10);
if ((i % W) == W - 1) {
diff --git a/gm/dropshadowimagefilter.cpp b/gm/dropshadowimagefilter.cpp
index 253e82f..f1dfb6d 100644
--- a/gm/dropshadowimagefilter.cpp
+++ b/gm/dropshadowimagefilter.cpp
@@ -45,7 +45,7 @@
canvas->save();
canvas->clipRect(r);
SkTextUtils::DrawString(canvas, "Text", r.centerX(), r.centerY(), paint,
- SkPaint::kCenter_Align);
+ SkTextUtils::kCenter_Align);
canvas->restore();
}
diff --git a/gm/imagefiltersbase.cpp b/gm/imagefiltersbase.cpp
index 4cad5c1..83b62f4 100644
--- a/gm/imagefiltersbase.cpp
+++ b/gm/imagefiltersbase.cpp
@@ -131,7 +131,7 @@
sk_tool_utils::set_portable_typeface(&paint);
paint.setTextSize(r.height()/2);
SkTextUtils::DrawString(canvas, "Text", r.centerX(), r.centerY(), paint,
- SkPaint::kCenter_Align);
+ SkTextUtils::kCenter_Align);
}
static void draw_bitmap(SkCanvas* canvas, const SkRect& r, sk_sp<SkImageFilter> imf) {
diff --git a/gm/imagefilterscropped.cpp b/gm/imagefilterscropped.cpp
index 4a5878c..225e881 100644
--- a/gm/imagefilterscropped.cpp
+++ b/gm/imagefilterscropped.cpp
@@ -47,7 +47,7 @@
sk_tool_utils::set_portable_typeface(&paint);
paint.setTextSize(r.height()/2);
SkTextUtils::DrawString(canvas, "Text", r.centerX(), r.centerY(), paint,
- SkPaint::kCenter_Align);
+ SkTextUtils::kCenter_Align);
}
static void draw_bitmap(SkCanvas* canvas, const SkRect& r, sk_sp<SkImageFilter> imf) {
diff --git a/gm/poly2poly.cpp b/gm/poly2poly.cpp
index 902609e..f89e57a 100644
--- a/gm/poly2poly.cpp
+++ b/gm/poly2poly.cpp
@@ -221,7 +221,7 @@
SkScalar y = D/2 - (fm.fAscent + fm.fDescent)/2;
uint16_t glyphID = 3; // X
SkTextUtils::DrawText(canvas, &glyphID, sizeof(glyphID), x, y, *paint,
- SkPaint::kCenter_Align);
+ SkTextUtils::kCenter_Align);
canvas->restore();
}
diff --git a/gm/shadermaskfilter.cpp b/gm/shadermaskfilter.cpp
index f306018..a46346c 100644
--- a/gm/shadermaskfilter.cpp
+++ b/gm/shadermaskfilter.cpp
@@ -140,7 +140,7 @@
canvas->save();
for (int i = 0; i < 5; ++i) {
SkTextUtils::DrawString(canvas, gCoverageName[i], r.width()*0.5f, -10, labelP,
- SkPaint::kCenter_Align);
+ SkTextUtils::kCenter_Align);
SkCoverageMode cmode = static_cast<SkCoverageMode>(i);
canvas->save();
diff --git a/gm/surface.cpp b/gm/surface.cpp
index dad3814..80c23c8 100644
--- a/gm/surface.cpp
+++ b/gm/surface.cpp
@@ -46,7 +46,7 @@
paint.setColor(SK_ColorWHITE);
paint.setTextSize(32);
sk_tool_utils::set_portable_typeface(&paint);
- SkTextUtils::DrawString(canvas, label, W / 2, H * 3 / 4, paint, SkPaint::kCenter_Align);
+ SkTextUtils::DrawString(canvas, label, W / 2, H * 3 / 4, paint, SkTextUtils::kCenter_Align);
}
class SurfacePropsGM : public skiagm::GM {
diff --git a/gm/text_scale_skew.cpp b/gm/text_scale_skew.cpp
index b48a8d5..992bc6e 100644
--- a/gm/text_scale_skew.cpp
+++ b/gm/text_scale_skew.cpp
@@ -20,7 +20,7 @@
float x = 50.0f;
for (float skew : { -0.5f, 0.0f, 0.5f }) {
p.setTextSkewX(skew);
- SkTextUtils::DrawString(canvas, "Skia", x, y, p, SkPaint::kCenter_Align);
+ SkTextUtils::DrawString(canvas, "Skia", x, y, p, SkTextUtils::kCenter_Align);
x += 78.0f;
}
}
diff --git a/gm/tilemodes.cpp b/gm/tilemodes.cpp
index 5c48d07..5f02d79 100644
--- a/gm/tilemodes.cpp
+++ b/gm/tilemodes.cpp
@@ -105,7 +105,8 @@
p.setDither(true);
str.printf("[%s,%s]", gModeNames[kx], gModeNames[ky]);
- SkTextUtils::DrawString(canvas, str, x + r.width()/2, y, p, SkPaint::kCenter_Align);
+ SkTextUtils::DrawString(canvas, str, x + r.width()/2, y, p,
+ SkTextUtils::kCenter_Align);
x += r.width() * 4 / 3;
}
@@ -226,7 +227,7 @@
for (size_t kx = 0; kx < SK_ARRAY_COUNT(gModes); kx++) {
SkString str(gModeNames[kx]);
- SkTextUtils::DrawString(canvas, str, x + r.width()/2, y, p, SkPaint::kCenter_Align);
+ SkTextUtils::DrawString(canvas, str, x + r.width()/2, y, p, SkTextUtils::kCenter_Align);
x += r.width() * 4 / 3;
}
@@ -236,7 +237,7 @@
x = SkIntToScalar(16) + w;
SkString str(gModeNames[ky]);
- SkTextUtils::DrawString(canvas, str, x, y + h/2, p, SkPaint::kRight_Align);
+ SkTextUtils::DrawString(canvas, str, x, y + h/2, p, SkTextUtils::kRight_Align);
x += SkIntToScalar(50);
for (size_t kx = 0; kx < SK_ARRAY_COUNT(gModes); kx++) {
diff --git a/gm/tilemodes_scaled.cpp b/gm/tilemodes_scaled.cpp
index 4a4e494..093cb34 100644
--- a/gm/tilemodes_scaled.cpp
+++ b/gm/tilemodes_scaled.cpp
@@ -108,7 +108,7 @@
str.printf("[%s,%s]", gModeNames[kx], gModeNames[ky]);
SkTextUtils::DrawString(canvas, str, scale*(x + r.width()/2), y, p,
- SkPaint::kCenter_Align);
+ SkTextUtils::kCenter_Align);
x += r.width() * 4 / 3;
}
@@ -228,7 +228,7 @@
for (size_t kx = 0; kx < SK_ARRAY_COUNT(gModes); kx++) {
SkString str(gModeNames[kx]);
- SkTextUtils::DrawString(canvas, str, x + r.width()/2, y, p, SkPaint::kCenter_Align);
+ SkTextUtils::DrawString(canvas, str, x + r.width()/2, y, p, SkTextUtils::kCenter_Align);
x += r.width() * 4 / 3;
}
@@ -238,7 +238,7 @@
x = SkIntToScalar(16) + w;
SkString str(gModeNames[ky]);
- SkTextUtils::DrawString(canvas, str, x, y + h/2, p, SkPaint::kRight_Align);
+ SkTextUtils::DrawString(canvas, str, x, y + h/2, p, SkTextUtils::kRight_Align);
x += SkIntToScalar(50);
for (size_t kx = 0; kx < SK_ARRAY_COUNT(gModes); kx++) {
diff --git a/gm/wacky_yuv_formats.cpp b/gm/wacky_yuv_formats.cpp
index 8d7bec5..d1c65f9 100644
--- a/gm/wacky_yuv_formats.cpp
+++ b/gm/wacky_yuv_formats.cpp
@@ -632,14 +632,14 @@
textPaint.measureText(colLabel.c_str(), colLabel.size(), &textRect);
int y = textRect.height();
- SkTextUtils::DrawString(canvas, colLabel, x, y, textPaint, SkPaint::kCenter_Align);
+ SkTextUtils::DrawString(canvas, colLabel, x, y, textPaint, SkTextUtils::kCenter_Align);
colLabel.printf("%s", opaque ? "Opaque" : "Transparent");
textPaint.measureText(colLabel.c_str(), colLabel.size(), &textRect);
y += textRect.height();
- SkTextUtils::DrawString(canvas, colLabel, x, y, textPaint, SkPaint::kCenter_Align);
+ SkTextUtils::DrawString(canvas, colLabel, x, y, textPaint, SkTextUtils::kCenter_Align);
}
static void draw_row_label(SkCanvas* canvas, int y, int yuvFormat) {
diff --git a/gm/windowrectangles.cpp b/gm/windowrectangles.cpp
index 62dd51c..f539367 100644
--- a/gm/windowrectangles.cpp
+++ b/gm/windowrectangles.cpp
@@ -277,7 +277,7 @@
SkTextUtils::DrawString(canvas, errorMsg, SkIntToScalar((kCoverRect.left() + kCoverRect.right())/2),
SkIntToScalar((kCoverRect.top() + kCoverRect.bottom())/2 - 10), paint,
- SkPaint::kCenter_Align);
+ SkTextUtils::kCenter_Align);
}
DEF_GM( return new WindowRectanglesMaskGM(); )
diff --git a/gm/xfermodes.cpp b/gm/xfermodes.cpp
index 4f1b7aa..c8b1824 100644
--- a/gm/xfermodes.cpp
+++ b/gm/xfermodes.cpp
@@ -259,7 +259,7 @@
#if 1
const char* label = SkBlendMode_Name(gModes[i].fMode);
SkTextUtils::DrawString(canvas, label, x + w/2, y - labelP.getTextSize()/2,
- labelP, SkPaint::kCenter_Align);
+ labelP, SkTextUtils::kCenter_Align);
#endif
x += w + SkIntToScalar(10);
if ((i % W) == W - 1) {
diff --git a/gm/xfermodes2.cpp b/gm/xfermodes2.cpp
index ebec00b..21e6f2e 100644
--- a/gm/xfermodes2.cpp
+++ b/gm/xfermodes2.cpp
@@ -74,7 +74,7 @@
#if 1
SkTextUtils::DrawString(canvas, SkBlendMode_Name(mode),
x + w/2, y - labelP.getTextSize()/2, labelP,
- SkPaint::kCenter_Align);
+ SkTextUtils::kCenter_Align);
#endif
x += w + SkIntToScalar(10);
if ((m % W) == W - 1) {
diff --git a/include/core/SkPaint.h b/include/core/SkPaint.h
index f33604c..971113d 100644
--- a/include/core/SkPaint.h
+++ b/include/core/SkPaint.h
@@ -50,6 +50,8 @@
class SkTextBlobRunIterator;
class SkTypeface;
+#define SK_SUPPORT_LEGACY_PAINTALIGNENUM
+
/** \class SkPaint
SkPaint controls options applied when drawing and measuring. SkPaint collects all
options outside of the SkCanvas clip and SkCanvas matrix.
@@ -846,6 +848,7 @@
*/
void setLooper(sk_sp<SkDrawLooper> drawLooper);
+#ifdef SK_SUPPORT_LEGACY_PAINTALIGNENUM
/** \enum SkPaint::Align
Align adjusts the text relative to the text position.
Align affects glyphs drawn with: SkCanvas::drawText, SkCanvas::drawPosText,
@@ -867,6 +870,7 @@
kCenter_Align, //!< centers line of glyphs by its width or height
kRight_Align, //!< moves lines of glyphs by its width or height
};
+#endif
/** May be used to verify that align is a legal value.
*/
diff --git a/include/utils/SkTextUtils.h b/include/utils/SkTextUtils.h
index 33bfd56..30a66a7 100644
--- a/include/utils/SkTextUtils.h
+++ b/include/utils/SkTextUtils.h
@@ -15,15 +15,21 @@
class SkTextUtils {
public:
+ enum Align {
+ kLeft_Align,
+ kCenter_Align,
+ kRight_Align,
+ };
+
static void DrawText(SkCanvas*, const void* text, size_t size, SkScalar x, SkScalar y,
- const SkPaint&, SkPaint::Align = SkPaint::kLeft_Align);
+ const SkPaint&, Align = kLeft_Align);
static void DrawString(SkCanvas* canvas, const char text[], SkScalar x, SkScalar y,
- const SkPaint& paint, SkPaint::Align align = SkPaint::kLeft_Align) {
+ const SkPaint& paint, Align align = kLeft_Align) {
DrawText(canvas, text, strlen(text), x, y, paint, align);
}
static void DrawString(SkCanvas* canvas, const SkString& str, SkScalar x, SkScalar y,
- const SkPaint& paint, SkPaint::Align align = SkPaint::kLeft_Align) {
+ const SkPaint& paint, Align align = kLeft_Align) {
DrawText(canvas, str.c_str(), str.size(), x, y, paint, align);
}
};
diff --git a/modules/skottie/src/SkottieValue.cpp b/modules/skottie/src/SkottieValue.cpp
index dd37a53..7e80377 100644
--- a/modules/skottie/src/SkottieValue.cpp
+++ b/modules/skottie/src/SkottieValue.cpp
@@ -263,10 +263,10 @@
v->fText.set(text->begin(), text->size());
v->fTextSize = **text_size;
- static constexpr SkPaint::Align gAlignMap[] = {
- SkPaint::kLeft_Align, // 'j': 0
- SkPaint::kRight_Align, // 'j': 1
- SkPaint::kCenter_Align // 'j': 2
+ static constexpr SkTextUtils::Align gAlignMap[] = {
+ SkTextUtils::kLeft_Align, // 'j': 0
+ SkTextUtils::kRight_Align, // 'j': 1
+ SkTextUtils::kCenter_Align // 'j': 2
};
v->fAlign = gAlignMap[SkTMin<size_t>(ParseDefault<size_t>((*jtxt)["j"], 0),
SK_ARRAY_COUNT(gAlignMap))];
diff --git a/modules/skottie/src/SkottieValue.h b/modules/skottie/src/SkottieValue.h
index cb9dac8..1c14568 100644
--- a/modules/skottie/src/SkottieValue.h
+++ b/modules/skottie/src/SkottieValue.h
@@ -13,6 +13,7 @@
#include "SkPath.h"
#include "SkScalar.h"
#include "SkString.h"
+#include "SkTextUtils.h"
#include "SkTypeface.h"
#include <vector>
@@ -74,7 +75,7 @@
SkString fText;
float fTextSize = 0,
fStrokeWidth = 0;
- SkPaint::Align fAlign = SkPaint::kLeft_Align;
+ SkTextUtils::Align fAlign = SkTextUtils::kLeft_Align;
SkColor fFillColor = SK_ColorTRANSPARENT,
fStrokeColor = SK_ColorTRANSPARENT;
bool fHasFill : 1,
diff --git a/modules/sksg/include/SkSGText.h b/modules/sksg/include/SkSGText.h
index c1f3ee1..09683e9 100644
--- a/modules/sksg/include/SkSGText.h
+++ b/modules/sksg/include/SkSGText.h
@@ -13,6 +13,7 @@
#include "SkPaintDefaults.h"
#include "SkPoint.h"
#include "SkString.h"
+#include "SkTextUtils.h"
class SkCanvas;
class SkPaint;
@@ -36,7 +37,7 @@
SG_ATTRIBUTE(Size , SkScalar , fSize )
SG_ATTRIBUTE(ScaleX , SkScalar , fScaleX )
SG_ATTRIBUTE(SkewX , SkScalar , fSkewX )
- SG_ATTRIBUTE(Align , SkPaint::Align , fAlign )
+ SG_ATTRIBUTE(Align , SkTextUtils::Align , fAlign )
SG_ATTRIBUTE(Hinting , SkPaint::Hinting , fHinting )
// TODO: add shaping functionality.
@@ -60,7 +61,7 @@
SkScalar fSize = SkPaintDefaults_TextSize;
SkScalar fScaleX = 1;
SkScalar fSkewX = 0;
- SkPaint::Align fAlign = SkPaint::kLeft_Align;
+ SkTextUtils::Align fAlign = SkTextUtils::kLeft_Align;
SkPaint::Hinting fHinting = SkPaintDefaults_Hinting;
sk_sp<SkTextBlob> fBlob; // cached text blob
diff --git a/modules/sksg/src/SkSGText.cpp b/modules/sksg/src/SkSGText.cpp
index 1451c38..f63fcf0 100644
--- a/modules/sksg/src/SkSGText.cpp
+++ b/modules/sksg/src/SkSGText.cpp
@@ -30,12 +30,12 @@
auto aligned = fPosition;
switch (fAlign) {
- case SkPaint::kLeft_Align:
+ case SkTextUtils::kLeft_Align:
break;
- case SkPaint::kCenter_Align:
+ case SkTextUtils::kCenter_Align:
aligned.offset(-advance / 2, 0);
break;
- case SkPaint::kRight_Align:
+ case SkTextUtils::kRight_Align:
aligned.offset(-advance, 0);
break;
}
diff --git a/samplecode/SampleAAGeometry.cpp b/samplecode/SampleAAGeometry.cpp
index abca6db..9e60891 100644
--- a/samplecode/SampleAAGeometry.cpp
+++ b/samplecode/SampleAAGeometry.cpp
@@ -543,7 +543,7 @@
}
canvas->drawRect(fBounds, paints.fStates[fState]);
SkTextUtils::DrawText(canvas, &fLabel, 1, fBounds.centerX(), fBounds.fBottom - 5,
- paints.fLabel, SkPaint::kCenter_Align);
+ paints.fLabel, SkTextUtils::kCenter_Align);
}
void toggle() {
@@ -1816,7 +1816,7 @@
fLegendLeftPaint);
SkTextUtils::DrawString(canvas, kKeyCommandList[index].fDescriptionR,
this->width() - 20, bottomOffset,
- fLegendRightPaint, SkPaint::kRight_Align);
+ fLegendRightPaint, SkTextUtils::kRight_Align);
}
}
diff --git a/samplecode/SampleArc.cpp b/samplecode/SampleArc.cpp
index acf0cf7..a64c47f 100644
--- a/samplecode/SampleArc.cpp
+++ b/samplecode/SampleArc.cpp
@@ -124,7 +124,8 @@
str.append(", ");
str.appendScalar(sweep);
SkTextUtils::DrawString(canvas, str, rect.centerX(),
- rect.fBottom + paint.getTextSize() * 5/4, paint, SkPaint::kCenter_Align);
+ rect.fBottom + paint.getTextSize() * 5/4, paint,
+ SkTextUtils::kCenter_Align);
}
static void DrawArcs(SkCanvas* canvas) {
diff --git a/samplecode/SampleAtlas.cpp b/samplecode/SampleAtlas.cpp
index 28508cd..652ef14 100644
--- a/samplecode/SampleAtlas.cpp
+++ b/samplecode/SampleAtlas.cpp
@@ -58,7 +58,7 @@
paint.setAlpha(0xFF);
int index = i % strlen(s);
SkTextUtils::DrawText(canvas, &s[index], 1, x + half, y + half + half/2, paint,
- SkPaint::kCenter_Align);
+ SkTextUtils::kCenter_Align);
i += 1;
}
}
diff --git a/samplecode/SampleFilter2.cpp b/samplecode/SampleFilter2.cpp
index c68b69c..e4a43ca 100644
--- a/samplecode/SampleFilter2.cpp
+++ b/samplecode/SampleFilter2.cpp
@@ -89,7 +89,7 @@
s.append(" filter=");
s.appendS32(paint.getFilterQuality() != kNone_SkFilterQuality);
SkTextUtils::DrawString(canvas, s, x + W/2, y - p.getTextSize(), p,
- SkPaint::kCenter_Align);
+ SkTextUtils::kCenter_Align);
}
if (k+j == 2) {
SkPaint p;
diff --git a/samplecode/SamplePolyToPoly.cpp b/samplecode/SamplePolyToPoly.cpp
index 13baafa..08d3c79 100644
--- a/samplecode/SamplePolyToPoly.cpp
+++ b/samplecode/SamplePolyToPoly.cpp
@@ -104,7 +104,7 @@
float y = D/2 - (fm.fAscent + fm.fDescent)/2;
SkString str;
str.appendS32(count);
- SkTextUtils::DrawString(canvas, str, x, y, *paint, SkPaint::kCenter_Align);
+ SkTextUtils::DrawString(canvas, str, x, y, *paint, SkTextUtils::kCenter_Align);
canvas->restore();
}
diff --git a/samplecode/SampleQuadStroker.cpp b/samplecode/SampleQuadStroker.cpp
index ce52452..2eb6070 100644
--- a/samplecode/SampleQuadStroker.cpp
+++ b/samplecode/SampleQuadStroker.cpp
@@ -507,7 +507,7 @@
paint.setColor(button.fEnabled ? 0xFF3F0000 : 0x6F3F0000);
paint.setStyle(SkPaint::kFill_Style);
SkTextUtils::DrawText(canvas, &button.fLabel, 1, button.fBounds.centerX(), button.fBounds.fBottom - 5,
- paint, SkPaint::kCenter_Align);
+ paint, SkTextUtils::kCenter_Align);
}
void draw_control(SkCanvas* canvas, const SkRect& bounds, SkScalar value,
diff --git a/samplecode/SampleTiling.cpp b/samplecode/SampleTiling.cpp
index b2a5460..fc4a5fd 100644
--- a/samplecode/SampleTiling.cpp
+++ b/samplecode/SampleTiling.cpp
@@ -112,7 +112,7 @@
str.printf("[%s,%s]", gModeNames[kx], gModeNames[ky]);
SkTextUtils::DrawString(textCanvas, str, x + r.width()/2, y, p,
- SkPaint::kCenter_Align);
+ SkTextUtils::kCenter_Align);
x += r.width() * 4 / 3;
}
diff --git a/samplecode/SampleXfer.cpp b/samplecode/SampleXfer.cpp
index f87d60c..6832e8d 100644
--- a/samplecode/SampleXfer.cpp
+++ b/samplecode/SampleXfer.cpp
@@ -55,7 +55,7 @@
paint.setTextSize(16);
paint.setLCDRenderText(true);
SkTextUtils::DrawString(canvas, fLabel, fRect.centerX(), fRect.fTop + 0.68f * fRect.height(),
- paint, SkPaint::kCenter_Align);
+ paint, SkTextUtils::kCenter_Align);
}
bool hitTest(SkScalar x, SkScalar y) {
diff --git a/samplecode/SampleXfermodesBlur.cpp b/samplecode/SampleXfermodesBlur.cpp
index ae8d6d57..0eeab5b 100644
--- a/samplecode/SampleXfermodesBlur.cpp
+++ b/samplecode/SampleXfermodesBlur.cpp
@@ -159,7 +159,7 @@
const char* label = SkBlendMode_Name(gModes[i]);
SkTextUtils::DrawString(canvas, label, x + w/2, y - labelP.getTextSize()/2, labelP,
- SkPaint::kCenter_Align);
+ SkTextUtils::kCenter_Align);
x += w + SkIntToScalar(10);
if ((i % W) == W - 1) {
x = x0;
diff --git a/src/core/SkDrawProcs.h b/src/core/SkDrawProcs.h
index 15c5cf8..82fb699 100644
--- a/src/core/SkDrawProcs.h
+++ b/src/core/SkDrawProcs.h
@@ -39,28 +39,4 @@
return SkDrawTreatAAStrokeAsHairline(strokeWidth, matrix, coverage);
}
-class SkTextAlignProc {
-public:
- SkTextAlignProc(SkPaint::Align align)
- : fAlign(align) {
- }
-
- // Returns the glyph position, which may be rounded or not by the caller
- // e.g. subpixel doesn't round.
- void operator()(const SkPoint& loc, const SkGlyph& glyph, SkPoint* dst) {
- if (SkPaint::kLeft_Align == fAlign) {
- dst->set(loc.fX, loc.fY);
- } else if (SkPaint::kCenter_Align == fAlign) {
- dst->set(loc.fX - SkFloatToScalar(glyph.fAdvanceX) / 2,
- loc.fY - SkFloatToScalar(glyph.fAdvanceY) / 2);
- } else {
- SkASSERT(SkPaint::kRight_Align == fAlign);
- dst->set(loc.fX - SkFloatToScalar(glyph.fAdvanceX),
- loc.fY - SkFloatToScalar(glyph.fAdvanceY));
- }
- }
-private:
- const SkPaint::Align fAlign;
-};
-
#endif
diff --git a/src/core/SkPaint.cpp b/src/core/SkPaint.cpp
index 83fcf02..a0bdc6a 100644
--- a/src/core/SkPaint.cpp
+++ b/src/core/SkPaint.cpp
@@ -57,7 +57,7 @@
fBitfields.fFlags = SkPaintDefaults_Flags;
fBitfields.fCapType = kDefault_Cap;
fBitfields.fJoinType = kDefault_Join;
- fBitfields.fTextAlign = kLeft_Align;
+ fBitfields.fTextAlign = 0; // kLeft_Align
fBitfields.fStyle = kFill_Style;
fBitfields.fTextEncoding = kUTF8_TextEncoding;
fBitfields.fHinting = SkPaintDefaults_Hinting;
@@ -399,7 +399,6 @@
enum BitsPerField {
kFlags_BPF = 16,
kHint_BPF = 2,
- kAlign_BPF = 2,
kFilter_BPF = 2,
kFlatFlags_BPF = 3,
};
@@ -408,25 +407,22 @@
return (1 << bits) - 1;
}
-static uint32_t pack_paint_flags(unsigned flags, unsigned hint, unsigned align,
- unsigned filter, unsigned flatFlags) {
+static uint32_t pack_paint_flags(unsigned flags, unsigned hint, unsigned filter, unsigned flatFlags) {
ASSERT_FITS_IN(flags, kFlags_BPF);
ASSERT_FITS_IN(hint, kHint_BPF);
- ASSERT_FITS_IN(align, kAlign_BPF);
ASSERT_FITS_IN(filter, kFilter_BPF);
ASSERT_FITS_IN(flatFlags, kFlatFlags_BPF);
+ unsigned was_align = 0; // used to be textalign [0..2]
+
// left-align the fields of "known" size, and right-align the last (flatFlags) so it can easly
// add more bits in the future.
- return (flags << 16) | (hint << 14) | (align << 12) | (filter << 10) | flatFlags;
+ return (flags << 16) | (hint << 14) | (was_align << 12) | (filter << 10) | flatFlags;
}
static FlatFlags unpack_paint_flags(SkPaint* paint, uint32_t packed) {
paint->setFlags(packed >> 16);
paint->setHinting((SkPaint::Hinting)((packed >> 14) & BPF_Mask(kHint_BPF)));
-#ifdef SK_SUPPORT_LEGACY_SETTEXTALIGN
- paint->setTextAlign((SkPaint::Align)((packed >> 12) & BPF_Mask(kAlign_BPF)));
-#endif
paint->setFilterQuality((SkFilterQuality)((packed >> 10) & BPF_Mask(kFilter_BPF)));
return (FlatFlags)(packed & kFlatFlagMask);
}
@@ -459,11 +455,6 @@
buffer.writeColor4f(paint.getColor4f());
buffer.writeUInt(pack_paint_flags(paint.getFlags(), paint.getHinting(),
-#ifdef SK_SUPPORT_LEGACY_SETTEXTALIGN
- paint.getTextAlign(),
-#else
- SkPaint::kLeft_Align,
-#endif
paint.getFilterQuality(), flatFlags));
buffer.writeUInt(pack_4(paint.getStrokeCap(), paint.getStrokeJoin(),
(paint.getStyle() << 4) | paint.getTextEncoding(),
diff --git a/src/core/SkTextBlob.cpp b/src/core/SkTextBlob.cpp
index 87cd2b2..2230820 100644
--- a/src/core/SkTextBlob.cpp
+++ b/src/core/SkTextBlob.cpp
@@ -29,7 +29,7 @@
, fSkewX(paint.getTextSkewX())
#ifdef SK_SUPPORT_LEGACY_SETTEXTALIGN
, fAlign(paint.getTextAlign())
-#else
+#elif defined(SK_SUPPORT_LEGACY_PAINTALIGNENUM)
, fAlign(SkPaint::kLeft_Align)
#endif
, fHinting(paint.getHinting())
@@ -54,7 +54,9 @@
&& fSize == other.fSize
&& fScaleX == other.fScaleX
&& fSkewX == other.fSkewX
+#ifdef SK_SUPPORT_LEGACY_PAINTALIGNENUM
&& fAlign == other.fAlign
+#endif
&& fHinting == other.fHinting
&& fFlags == other.fFlags;
}
diff --git a/src/core/SkTextBlobPriv.h b/src/core/SkTextBlobPriv.h
index 9a4abd6..ddce76d 100644
--- a/src/core/SkTextBlobPriv.h
+++ b/src/core/SkTextBlobPriv.h
@@ -92,8 +92,10 @@
sk_sp<SkTypeface> fTypeface;
SkScalar fSkewX;
+#ifdef SK_SUPPORT_LEGACY_PAINTALIGNENUM
static_assert(SkPaint::kAlignCount < 4, "insufficient_align_bits");
uint32_t fAlign : 2;
+#endif
static_assert(SkPaint::kFull_Hinting < 4, "insufficient_hinting_bits");
uint32_t fHinting : 2;
static_assert((kFlagsMask & 0xffff) == kFlagsMask, "insufficient_flags_bits");
@@ -241,7 +243,9 @@
, fBitfieldsUInt{(basePaint.fBitfieldsUInt & ~SkRunFont::kFlagsMask) | runFont.fFlags} {
fBitfields.fTextEncoding = kGlyphID_TextEncoding;
fBitfields.fHinting = runFont.fHinting;
+#ifdef SK_SUPPORT_LEGACY_PAINTALIGNENUM
fBitfields.fTextAlign = runFont.fAlign;
+#endif
}
/**
diff --git a/src/utils/SkTextUtils.cpp b/src/utils/SkTextUtils.cpp
index 784cf7d..cc1b48e 100644
--- a/src/utils/SkTextUtils.cpp
+++ b/src/utils/SkTextUtils.cpp
@@ -8,7 +8,7 @@
#include "SkTextUtils.h"
void SkTextUtils::DrawText(SkCanvas* canvas, const void* text, size_t size, SkScalar x, SkScalar y,
- const SkPaint& origPaint, SkPaint::Align align) {
+ const SkPaint& origPaint, Align align) {
int count = origPaint.countText(text, size);
if (!count) {
return;
@@ -31,12 +31,12 @@
SkScalar* widths = widthStorage.get();
paint.getTextWidths(glyphs, count * sizeof(uint16_t), widths);
- if (align != SkPaint::kLeft_Align) {
+ if (align != kLeft_Align) {
SkScalar offset = 0;
for (int i = 0; i < count; ++i) {
offset += widths[i];
}
- if (align == SkPaint::kCenter_Align) {
+ if (align == kCenter_Align) {
offset *= 0.5f;
}
x -= offset;
diff --git a/tools/viewer/SlideDir.cpp b/tools/viewer/SlideDir.cpp
index 5ee46dd..a776bbd 100644
--- a/tools/viewer/SlideDir.cpp
+++ b/tools/viewer/SlideDir.cpp
@@ -262,7 +262,7 @@
auto text = sksg::Text::Make(nullptr, txt);
text->setFlags(SkPaint::kAntiAlias_Flag);
text->setSize(size);
- text->setAlign(SkPaint::kCenter_Align);
+ text->setAlign(SkTextUtils::kCenter_Align);
text->setPosition(pos + SkPoint::Make(0, size));
return sksg::Draw::Make(std::move(text), sksg::Color::Make(SK_ColorBLACK));