Index: third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp |
diff --git a/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp b/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp |
index e98f0bedae560d1df487c5a4541b7a77c8b2a0e3..8ad7c16893aa134ac131ba1958df40e5d137931a 100644 |
--- a/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp |
+++ b/third_party/WebKit/Source/core/paint/InlineTextBoxPainter.cpp |
@@ -706,6 +706,9 @@ namespace { |
#if !OS(MACOSX) |
+static const float kMarkerWidth = 4; |
+static const float kMarkerHeight = 2; |
+ |
sk_sp<PaintRecord> RecordMarker(DocumentMarker::MarkerType marker_type) { |
SkColor color = (marker_type == DocumentMarker::kGrammar) |
? SkColorSetRGB(0xC0, 0xC0, 0xC0) |
@@ -715,31 +718,28 @@ sk_sp<PaintRecord> RecordMarker(DocumentMarker::MarkerType marker_type) { |
// X o o X o o X |
// o X o o X o |
- static const float kW = 4; |
- static const float kH = 2; |
- |
// Adjust the phase such that f' == 0 is "pixel"-centered |
// (for optimal rasterization at native rez). |
SkPath path; |
- path.moveTo(kW * -3 / 8, kH * 3 / 4); |
- path.cubicTo(kW * -1 / 8, kH * 3 / 4, |
- kW * -1 / 8, kH * 1 / 4, |
- kW * 1 / 8, kH * 1 / 4); |
- path.cubicTo(kW * 3 / 8, kH * 1 / 4, |
- kW * 3 / 8, kH * 3 / 4, |
- kW * 5 / 8, kH * 3 / 4); |
- path.cubicTo(kW * 7 / 8, kH * 3 / 4, |
- kW * 7 / 8, kH * 1 / 4, |
- kW * 9 / 8, kH * 1 / 4); |
+ path.moveTo(kMarkerWidth * -3 / 8, kMarkerHeight * 3 / 4); |
+ path.cubicTo(kMarkerWidth * -1 / 8, kMarkerHeight * 3 / 4, |
+ kMarkerWidth * -1 / 8, kMarkerHeight * 1 / 4, |
+ kMarkerWidth * 1 / 8, kMarkerHeight * 1 / 4); |
+ path.cubicTo(kMarkerWidth * 3 / 8, kMarkerHeight * 1 / 4, |
+ kMarkerWidth * 3 / 8, kMarkerHeight * 3 / 4, |
+ kMarkerWidth * 5 / 8, kMarkerHeight * 3 / 4); |
+ path.cubicTo(kMarkerWidth * 7 / 8, kMarkerHeight * 3 / 4, |
+ kMarkerWidth * 7 / 8, kMarkerHeight * 1 / 4, |
+ kMarkerWidth * 9 / 8, kMarkerHeight * 1 / 4); |
PaintFlags flags; |
flags.setAntiAlias(true); |
flags.setColor(color); |
flags.setStyle(PaintFlags::kStroke_Style); |
- flags.setStrokeWidth(kH * 1 / 2); |
+ flags.setStrokeWidth(kMarkerHeight * 1 / 2); |
PaintRecorder recorder; |
- recorder.beginRecording(kW, kH); |
+ recorder.beginRecording(kMarkerWidth, kMarkerHeight); |
recorder.getRecordingCanvas()->drawPath(path, flags); |
return recorder.finishRecordingAsPicture(); |
@@ -747,14 +747,15 @@ sk_sp<PaintRecord> RecordMarker(DocumentMarker::MarkerType marker_type) { |
#else // OS(MACOSX) |
+static const float kMarkerWidth = 4; |
+static const float kMarkerHeight = 3; |
+ |
sk_sp<PaintRecord> RecordMarker(DocumentMarker::MarkerType marker_type) { |
SkColor color = (marker_type == DocumentMarker::kGrammar) |
? SkColorSetRGB(0x6B, 0x6B, 0x6B) |
: SkColorSetRGB(0xFB, 0x2D, 0x1D); |
// Match the artwork used by the Mac. |
- static const float kW = 4; |
- static const float kH = 3; |
static const float kR = 1.5f; |
// top->bottom translucent gradient. |
@@ -776,7 +777,7 @@ sk_sp<PaintRecord> RecordMarker(DocumentMarker::MarkerType marker_type) { |
flags.setShader(SkGradientShader::MakeLinear( |
pts, colors, nullptr, ARRAY_SIZE(colors), SkShader::kClamp_TileMode)); |
PaintRecorder recorder; |
- recorder.beginRecording(kW, kH); |
+ recorder.beginRecording(kMarkerWidth, kMarkerHeight); |
recorder.getRecordingCanvas()->drawCircle(kR, kR, kR, flags); |
return recorder.finishRecordingAsPicture(); |
@@ -806,20 +807,20 @@ void DrawDocumentMarker(GraphicsContext& context, |
#if OS(MACOSX) |
// Make sure to draw only complete dots, and finish inside the marked text. |
- width -= fmodf(width, marker->cullRect().width() * zoom); |
+ width -= fmodf(width, kMarkerWidth * zoom); |
#else |
// Offset it vertically by 1 so that there's some space under the text. |
origin_y += 1; |
#endif |
- const auto rect = SkRect::MakeWH(width, marker->cullRect().height() * zoom); |
+ const auto rect = SkRect::MakeWH(width, kMarkerHeight * zoom); |
const auto local_matrix = SkMatrix::MakeScale(zoom, zoom); |
PaintFlags flags; |
flags.setAntiAlias(true); |
flags.setShader(WrapSkShader(MakePaintShaderRecord( |
- sk_ref_sp(marker), SkShader::kRepeat_TileMode, SkShader::kClamp_TileMode, |
- &local_matrix, nullptr))); |
+ sk_ref_sp(marker), FloatRect(0, 0, kMarkerWidth, kMarkerHeight), |
+ SkShader::kRepeat_TileMode, SkShader::kClamp_TileMode, &local_matrix))); |
// Apply the origin translation as a global transform. This ensures that the |
// shader local matrix depends solely on zoom => Skia can reuse the same |