141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com/* 241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com * Copyright 2011 Google Inc. 341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com * 441fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com * Use of this source code is governed by a BSD-style license that can be 541fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com * found in the LICENSE file. 641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com */ 741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com#include "gm.h" 841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com#include "SkCanvas.h" 941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com#include "SkGradientShader.h" 1041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 1141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.comnamespace skiagm { 1241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 13dac522589e9395b4654a1a708f1bd971f37f95a5commit-bot@chromium.orgstatic void makebm(SkBitmap* bm, int w, int h) { 14dac522589e9395b4654a1a708f1bd971f37f95a5commit-bot@chromium.org bm->allocN32Pixels(w, h); 15dbfac8a72393eaf01670aeb3244de0e18d8faf98junov@google.com bm->eraseColor(SK_ColorTRANSPARENT); 1641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 1741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkCanvas canvas(*bm); 1841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkScalar s = SkIntToScalar(SkMin32(w, h)); 1941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com static const SkPoint kPts0[] = { { 0, 0 }, { s, s } }; 2041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com static const SkPoint kPts1[] = { { s, 0 }, { 0, s } }; 2141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com static const SkScalar kPos[] = { 0, SK_Scalar1/2, SK_Scalar1 }; 2241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com static const SkColor kColors0[] = {0x40FF00FF, 0xF0FFFF00, 0x4000FFFF }; 2341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com static const SkColor kColors1[] = {0xF0FF00FF, 0x80FFFF00, 0xF000FFFF }; 24fc84359aa920567e72742877a1249f52d076ad35skia.committer@gmail.com 2541fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 2641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkPaint paint; 2741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 2841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com paint.setShader(SkGradientShader::CreateLinear(kPts0, kColors0, kPos, 2983f23d87f1d67e6e73873e1ef7cda621c43703a0commit-bot@chromium.org SK_ARRAY_COUNT(kColors0), SkShader::kClamp_TileMode))->unref(); 3041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas.drawPaint(paint); 3141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com paint.setShader(SkGradientShader::CreateLinear(kPts1, kColors1, kPos, 3241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SK_ARRAY_COUNT(kColors1), SkShader::kClamp_TileMode))->unref(); 3341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas.drawPaint(paint); 3441fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com} 3541fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 3641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com/////////////////////////////////////////////////////////////////////////////// 3741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 3841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.comstruct LabeledMatrix { 3941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkMatrix fMatrix; 4041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com const char* fLabel; 4141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com}; 4241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 4341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.comclass ShaderText2GM : public GM { 4441fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.compublic: 4541fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com ShaderText2GM() { 4641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com this->setBGColor(0xFFDDDDDD); 4741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com } 4841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 4941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.comprotected: 5041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 5141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkString onShortName() { 5241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com return SkString("shadertext2"); 5341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com } 5441fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 55f539318f0d3dba743ec1886d5d9df0fb1be628a1tfarina SkISize onISize() { return SkISize::Make(1800, 900); } 5641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 5741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com virtual void onDraw(SkCanvas* canvas) { 5841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com static const char kText[] = "SKIA"; 5941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com static const int kTextLen = SK_ARRAY_COUNT(kText) - 1; 6041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com static const int kPointSize = 55; 6141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 6241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkTDArray<LabeledMatrix> matrices; 6341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com matrices.append()->fMatrix.reset(); 6441fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com matrices.top().fLabel = "Identity"; 6541fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com matrices.append()->fMatrix.setScale(1.2f, 0.8f); 6641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com matrices.top().fLabel = "Scale"; 6741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com matrices.append()->fMatrix.setRotate(10.f); 6841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com matrices.top().fLabel = "Rotate"; 6941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com matrices.append()->fMatrix.reset(); 7041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com matrices.top().fMatrix.setPerspX(-0.0015f); 7141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com matrices.top().fMatrix.setPerspY(+0.0015f); 7241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com matrices.top().fLabel = "Persp"; 7341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 7441fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkTDArray<LabeledMatrix> localMatrices; 7541fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com localMatrices.append()->fMatrix.reset(); 7641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com localMatrices.top().fLabel = "Identity"; 7741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com localMatrices.append()->fMatrix.setScale(2.5f, 0.2f); 7841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com localMatrices.top().fLabel = "Scale"; 7941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com localMatrices.append()->fMatrix.setRotate(45.f); 8041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com localMatrices.top().fLabel = "Rotate"; 8141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com localMatrices.append()->fMatrix.reset(); 8241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com localMatrices.top().fMatrix.setPerspX(-0.007f); 8341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com localMatrices.top().fMatrix.setPerspY(+0.008f); 8441fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com localMatrices.top().fLabel = "Persp"; 8541fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 8641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com static SkBitmap bmp; 8741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com if (bmp.isNull()) { 88dac522589e9395b4654a1a708f1bd971f37f95a5commit-bot@chromium.org makebm(&bmp, kPointSize / 2, kPointSize / 2); 8941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com } 90fc84359aa920567e72742877a1249f52d076ad35skia.committer@gmail.com 9141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkPaint fillPaint; 9241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com fillPaint.setAntiAlias(true); 93992c7b03ef7914a18bfd78e965b0b4c99a5f5672Cary Clark sk_tool_utils::set_portable_typeface(&fillPaint); 9441fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com fillPaint.setTextSize(SkIntToScalar(kPointSize)); 954469938e92d779dff05e745559e67907bbf21e78reed@google.com fillPaint.setFilterLevel(SkPaint::kLow_FilterLevel); 9641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 9741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkPaint outlinePaint; 9841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com outlinePaint.setAntiAlias(true); 99992c7b03ef7914a18bfd78e965b0b4c99a5f5672Cary Clark sk_tool_utils::set_portable_typeface(&outlinePaint); 10041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com outlinePaint.setTextSize(SkIntToScalar(kPointSize)); 10141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com outlinePaint.setStyle(SkPaint::kStroke_Style); 10241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com outlinePaint.setStrokeWidth(0.f); 10341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 10441fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkScalar w = fillPaint.measureText(kText, kTextLen); 10541fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com static SkScalar kPadY = 0.5f * kPointSize; 10641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com static SkScalar kPadX = 1.5f * kPointSize; 10741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 10841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkPaint strokePaint(fillPaint); 10941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com strokePaint.setStyle(SkPaint::kStroke_Style); 11041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com strokePaint.setStrokeWidth(kPointSize * 0.1f); 11141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 11241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkPaint labelPaint; 11341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com labelPaint.setColor(0xff000000); 11441fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com labelPaint.setAntiAlias(true); 115992c7b03ef7914a18bfd78e965b0b4c99a5f5672Cary Clark sk_tool_utils::set_portable_typeface(&labelPaint); 11641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com labelPaint.setTextSize(12.f); 11741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 11841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->translate(15.f, 15.f); 11941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->drawBitmap(bmp, 0, 0); 12041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->translate(0, bmp.height() + labelPaint.getTextSize() + 15.f); 12141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 12241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com static const char kLabelLabel[] = "localM / canvasM"; 12341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->drawText(kLabelLabel, strlen(kLabelLabel), 0, 0, labelPaint); 12441fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->translate(0, 15.f); 12541fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 12641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->save(); 12741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkScalar maxLabelW = 0; 12841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->translate(0, kPadY / 2 + kPointSize); 12941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com for (int lm = 0; lm < localMatrices.count(); ++lm) { 13041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->drawText(matrices[lm].fLabel, strlen(matrices[lm].fLabel), 13141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 0, labelPaint.getTextSize() - 1, labelPaint); 13241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkScalar labelW = labelPaint.measureText(matrices[lm].fLabel, 13341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com strlen(matrices[lm].fLabel)); 13441fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com maxLabelW = SkMaxScalar(maxLabelW, labelW); 13541fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->translate(0.f, 2 * kPointSize + 2.5f * kPadY); 13641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com } 13741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->restore(); 13841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 13941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->translate(maxLabelW + kPadX / 2.f, 0.f); 14041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 14141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com for (int s = 0; s < 2; ++s) { 14241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkPaint& paint = s ? strokePaint : fillPaint; 14341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 14435d4872f9a4d49395dd387677eb828ce0e8176bfcommit-bot@chromium.org SkScalar columnH = 0; 14541fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com for (int m = 0; m < matrices.count(); ++m) { 14641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com columnH = 0; 14741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->save(); 14841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->drawText(matrices[m].fLabel, strlen(matrices[m].fLabel), 14941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 0, labelPaint.getTextSize() - 1, labelPaint); 15041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->translate(0, kPadY / 2 + kPointSize); 15141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com columnH += kPadY / 2 + kPointSize; 15241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com for (int lm = 0; lm < localMatrices.count(); ++lm) { 153bd090452530d2de98e1601de36be9ce3c91d1bdccommit-bot@chromium.org paint.setShader( 154bd090452530d2de98e1601de36be9ce3c91d1bdccommit-bot@chromium.org SkShader::CreateBitmapShader(bmp, 155bd090452530d2de98e1601de36be9ce3c91d1bdccommit-bot@chromium.org SkShader::kMirror_TileMode, 156bd090452530d2de98e1601de36be9ce3c91d1bdccommit-bot@chromium.org SkShader::kRepeat_TileMode, 157bd090452530d2de98e1601de36be9ce3c91d1bdccommit-bot@chromium.org &localMatrices[lm].fMatrix))->unref(); 15841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 15941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->save(); 16041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->concat(matrices[m].fMatrix); 16141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->drawText(kText, kTextLen, 0, 0, paint); 16241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->drawText(kText, kTextLen, 0, 0, outlinePaint); 16341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->restore(); 16441fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 16541fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkPath path; 16641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com path.arcTo(SkRect::MakeXYWH(-0.1f * w, 0.f, 16741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 1.2f * w, 2.f * kPointSize), 16841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 225.f, 359.f, 16941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com false); 17041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com path.close(); 17141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 17241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->translate(0.f, kPointSize + kPadY); 17341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com columnH += kPointSize + kPadY; 17441fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 17541fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->save(); 17641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->concat(matrices[m].fMatrix); 17741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->drawTextOnPath(kText, kTextLen, path, NULL, paint); 17841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->drawTextOnPath(kText, kTextLen, path, NULL, outlinePaint); 17941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->restore(); 18041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkPaint stroke; 18141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com stroke.setStyle(SkPaint::kStroke_Style); 18241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->translate(0.f, kPointSize + kPadY); 18341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com columnH += kPointSize + kPadY; 18441fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com } 18541fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->restore(); 18641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->translate(w + kPadX, 0.f); 18741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com } 18841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com if (0 == s) { 18941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->drawLine(0.f, -kPadY, 0.f, columnH + kPadY, outlinePaint); 19041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->translate(kPadX / 2, 0.f); 19141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com static const char kFillLabel[] = "Filled"; 19241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com static const char kStrokeLabel[] = "Stroked"; 19341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkScalar y = columnH + kPadY / 2; 19441fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkScalar fillX = -outlinePaint.measureText(kFillLabel, strlen(kFillLabel)) - kPadX; 19541fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com SkScalar strokeX = kPadX; 19641fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->drawText(kFillLabel, strlen(kFillLabel), fillX, y, labelPaint); 19741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com canvas->drawText(kStrokeLabel, strlen(kStrokeLabel), strokeX, y, labelPaint); 19841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com } 19941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com } 20041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com } 20141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 2021b6c73d67a8a7666e13fe774cfed3bc6f38538f5reed@google.com virtual uint32_t onGetFlags() const SK_OVERRIDE { 2031b6c73d67a8a7666e13fe774cfed3bc6f38538f5reed@google.com // disable 565 for now, til mike fixes the debug assert 204a90c6803865766d28e92091f56f718f5e41fe80fcommit-bot@chromium.org return kSkip565_Flag | kSkipTiled_Flag; 2051b6c73d67a8a7666e13fe774cfed3bc6f38538f5reed@google.com } 2061b6c73d67a8a7666e13fe774cfed3bc6f38538f5reed@google.com 20741fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.comprivate: 20841fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com typedef GM INHERITED; 20941fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com}; 21041fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 21141fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com/////////////////////////////////////////////////////////////////////////////// 21241fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com 21341fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.comstatic GM* MyFactory(void*) { return new ShaderText2GM; } 21441fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.comstatic GMRegistry reg(MyFactory); 21541fe45b955dc2f572bb1b6598d3b2f9d0c0447a4bsalomon@google.com} 216