| Index: gm/pixelsnap.cpp
|
| diff --git a/gm/pixelsnap.cpp b/gm/pixelsnap.cpp
|
| index a9652f6f870082faeb0e65b95ccb89d6ec74b7d4..8a513f3ca5409725def3c39ea2bb0c08a6d62c3a 100644
|
| --- a/gm/pixelsnap.cpp
|
| +++ b/gm/pixelsnap.cpp
|
| @@ -23,18 +23,13 @@ protected:
|
| static const int kSubPixelSteps = 8;
|
| static const int kLabelTextSize = 9;
|
|
|
| + SK_COMPILE_ASSERT(kSubPixelSteps < 99, label_offset_too_small);
|
| + static const int kLabelOffsetX = 2 * kLabelTextSize + kLabelPad;
|
| + static const int kLabelOffsetY = kLabelTextSize + kLabelPad;
|
| +
|
| SkISize onISize() override {
|
| - SkPaint labelPaint;
|
| - labelPaint.setAntiAlias(true);
|
| - labelPaint.setColor(SK_ColorWHITE);
|
| - labelPaint.setTextSize(SkIntToScalar(kLabelTextSize));
|
| - // Assert that we only render double digit labels
|
| - SkASSERT(kSubPixelSteps < 99);
|
| - // Pick 88 as widest possible label rendered (?)
|
| - int xoffset = SkScalarCeilToInt(labelPaint.measureText("88", 2));
|
| - int yoffset = SkScalarCeilToInt(labelPaint.getTextSize());
|
| - return SkISize::Make(kLabelPad + (kSubPixelSteps + 1) * kTrans + xoffset,
|
| - kLabelPad + (kSubPixelSteps + 1) * kTrans + yoffset);
|
| + return SkISize::Make((kSubPixelSteps + 1) * kTrans + kLabelOffsetX + kLabelPad,
|
| + (kSubPixelSteps + 1) * kTrans + kLabelOffsetY + kLabelPad);
|
| }
|
|
|
| void onDraw(SkCanvas* canvas) override {
|
| @@ -51,37 +46,32 @@ protected:
|
| SkPaint linePaint;
|
| linePaint.setColor(SK_ColorWHITE);
|
|
|
| - // Draw row labels
|
| - static const SkScalar labelOffsetY = labelPaint.getTextSize() + kLabelPad;
|
| - SkScalar labelOffsetX = 0;
|
| - canvas->save();
|
| - canvas->translate(0, labelOffsetY);
|
| - for (int i = 0; i <= kSubPixelSteps; ++i) {
|
| - offset.printf("%d", i);
|
| - canvas->drawText(offset.c_str(), offset.size(),
|
| - 0, i * kTrans + labelPaint.getTextSize(),
|
| - labelPaint);
|
| - labelOffsetX = SkTMax(labelPaint.measureText(offset.c_str(), offset.size()),
|
| - labelOffsetX);
|
| - }
|
| - canvas->restore();
|
| - labelOffsetX += kLabelPad;
|
| - labelOffsetX = SkScalarCeilToScalar(labelOffsetX);
|
| -
|
| - // Draw col labels
|
| - canvas->save();
|
| - canvas->translate(labelOffsetX, 0);
|
| - for (int i = 0; i <= kSubPixelSteps; ++i) {
|
| - offset.printf("%d", i);
|
| - canvas->drawText(offset.c_str(), offset.size(),
|
| - i * SkIntToScalar(kTrans), labelPaint.getTextSize(),
|
| - labelPaint);
|
| - }
|
| - canvas->restore();
|
| + // Drawing labels is useful for debugging, but bad for baselining (x-platform txt diffs).
|
| + if (false) {
|
| + // Draw row labels
|
| + canvas->save();
|
| + canvas->translate(0, SkIntToScalar(kLabelOffsetY));
|
| + for (int i = 0; i <= kSubPixelSteps; ++i) {
|
| + offset.printf("%d", i);
|
| + canvas->drawText(offset.c_str(), offset.size(),
|
| + 0, i * kTrans + labelPaint.getTextSize(),
|
| + labelPaint);
|
| + }
|
| + canvas->restore();
|
| +
|
| + // Draw col labels
|
| + canvas->save();
|
| + canvas->translate(SkIntToScalar(kLabelOffsetX), 0);
|
| + for (int i = 0; i <= kSubPixelSteps; ++i) {
|
| + offset.printf("%d", i);
|
| + canvas->drawText(offset.c_str(), offset.size(),
|
| + i * SkIntToScalar(kTrans), labelPaint.getTextSize(),
|
| + labelPaint);
|
| + }
|
| + canvas->restore();
|
| + }
|
|
|
| - canvas->translate(labelOffsetX, labelOffsetY);
|
| - SkASSERT((SkScalar)(int)labelOffsetX == labelOffsetX);
|
| - SkASSERT((SkScalar)(int)labelOffsetY == labelOffsetY);
|
| + canvas->translate(SkIntToScalar(kLabelOffsetX), SkIntToScalar(kLabelOffsetY));
|
|
|
| // Draw test case grid lines (Draw them all at pixel centers to hopefully avoid any
|
| // snapping issues).
|
|
|