1ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com 2ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com/* 3ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Copyright 2011 Google Inc. 4ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * 5ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * Use of this source code is governed by a BSD-style license that can be 6ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com * found in the LICENSE file. 7ec3ed6a5ebf6f2c406d7bcf94b6bc34fcaeb976eepoger@google.com */ 88a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SampleCode.h" 98a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkView.h" 108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkCanvas.h" 118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkGradientShader.h" 128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkGraphics.h" 138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkImageDecoder.h" 148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkPath.h" 158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkRandom.h" 168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkRegion.h" 178a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkShader.h" 188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkUtils.h" 198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkXfermode.h" 208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkColorPriv.h" 218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkColorFilter.h" 228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkTime.h" 238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkTypeface.h" 248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkOSFile.h" 268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com#include "SkStream.h" 278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic SkShader* make_shader0(SkIPoint* size) { 298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkBitmap bm; 308295dc1474db279df08d816b2115e807c681fad5bsalomon@google.com size->set(2, 2); 318295dc1474db279df08d816b2115e807c681fad5bsalomon@google.com SkPMColor color0 = SkPreMultiplyARGB(0x80, 0x80, 0xff, 0x80); 328295dc1474db279df08d816b2115e807c681fad5bsalomon@google.com SkPMColor color1 = SkPreMultiplyARGB(0x40, 0xff, 0x00, 0xff); 33a8c183125f2861067daf432cada06d431a795cd0commit-bot@chromium.org bm.allocN32Pixels(size->fX, size->fY); 348295dc1474db279df08d816b2115e807c681fad5bsalomon@google.com bm.eraseColor(color0); 358295dc1474db279df08d816b2115e807c681fad5bsalomon@google.com bm.lockPixels(); 368295dc1474db279df08d816b2115e807c681fad5bsalomon@google.com uint32_t* pixels = (uint32_t*) bm.getPixels(); 378295dc1474db279df08d816b2115e807c681fad5bsalomon@google.com pixels[0] = pixels[2] = color0; 388295dc1474db279df08d816b2115e807c681fad5bsalomon@google.com pixels[1] = pixels[3] = color1; 398295dc1474db279df08d816b2115e807c681fad5bsalomon@google.com bm.unlockPixels(); 4082065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 418295dc1474db279df08d816b2115e807c681fad5bsalomon@google.com return SkShader::CreateBitmapShader(bm, SkShader::kRepeat_TileMode, 428295dc1474db279df08d816b2115e807c681fad5bsalomon@google.com SkShader::kRepeat_TileMode); 438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic SkShader* make_shader1(const SkIPoint& size) { 4664cc579efa7e416c7298ed159d76b074b283c0f9senorblanco@chromium.org SkPoint pts[] = { { 0, 0 }, 4764cc579efa7e416c7298ed159d76b074b283c0f9senorblanco@chromium.org { SkIntToScalar(size.fX), SkIntToScalar(size.fY) } }; 488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkColor colors[] = { SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorRED }; 498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return SkGradientShader::CreateLinear(pts, colors, NULL, 5083f23d87f1d67e6e73873e1ef7cda621c43703a0commit-bot@chromium.org SK_ARRAY_COUNT(colors), SkShader::kMirror_TileMode); 518a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com} 528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 53f21833999d90ad9c8c584cff3238797b39cfc00breed@google.comclass VerticesView : public SampleView { 548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkShader* fShader0; 558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkShader* fShader1; 568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 5782065d667f64e232bcde2ad849756a6096fcbe6freed@google.compublic: 58ae933ce0ea5fd9d21cb6ef2cee7e729d32690aacrmistry@google.com VerticesView() { 598a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkIPoint size; 6082065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fShader0 = make_shader0(&size); 628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fShader1 = make_shader1(size); 638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 648a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com make_strip(&fRecs[0], size.fX, size.fY); 658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com make_fan(&fRecs[1], size.fX, size.fY); 668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com make_tris(&fRecs[2]); 6782065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fScale = SK_Scalar1; 69f21833999d90ad9c8c584cff3238797b39cfc00breed@google.com 70f21833999d90ad9c8c584cff3238797b39cfc00breed@google.com this->setBGColor(SK_ColorGRAY); 718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 7282065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual ~VerticesView() { 7482065d667f64e232bcde2ad849756a6096fcbe6freed@google.com SkSafeUnref(fShader0); 7582065d667f64e232bcde2ad849756a6096fcbe6freed@google.com SkSafeUnref(fShader1); 768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 7782065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprotected: 798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com // overrides from SkEventSink 808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool onQuery(SkEvent* evt) { 8145369a33bb78b6b76fafd63b1334151368dc9e2atfarina@chromium.org if (SampleCode::TitleQ(*evt)) { 8245369a33bb78b6b76fafd63b1334151368dc9e2atfarina@chromium.org SampleCode::TitleR(evt, "Vertices"); 838a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return true; 848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return this->INHERITED::onQuery(evt); 868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 8782065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkScalar fScale; 8982065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 90f21833999d90ad9c8c584cff3238797b39cfc00breed@google.com virtual void onDrawContent(SkCanvas* canvas) { 918a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkPaint paint; 928a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com paint.setDither(true); 934469938e92d779dff05e745559e67907bbf21e78reed@google.com paint.setFilterLevel(SkPaint::kLow_FilterLevel); 9482065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 9564cc579efa7e416c7298ed159d76b074b283c0f9senorblanco@chromium.org for (size_t i = 0; i < SK_ARRAY_COUNT(fRecs); i++) { 968a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com canvas->save(); 9782065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 988a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com paint.setShader(NULL); 998a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount, 1008a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fRecs[i].fVerts, fRecs[i].fTexs, 1018a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com NULL, NULL, NULL, 0, paint); 10282065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 1038a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com canvas->translate(SkIntToScalar(250), 0); 10482065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 1058a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com paint.setShader(fShader0); 1068a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount, 1078a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fRecs[i].fVerts, fRecs[i].fTexs, 1088a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com NULL, NULL, NULL, 0, paint); 1098a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 1108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com canvas->translate(SkIntToScalar(250), 0); 11182065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 1128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com paint.setShader(fShader1); 1138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount, 1148a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com fRecs[i].fVerts, fRecs[i].fTexs, 1158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com NULL, NULL, NULL, 0, paint); 1168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com canvas->restore(); 11782065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 1188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com canvas->translate(0, SkIntToScalar(250)); 1198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 1208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 12182065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 1229c55f801a35b0d6c39f007fae432bd13094f3c52sugoi@google.com virtual SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) SK_OVERRIDE { 1238a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return new Click(this); 1248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 12582065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 1268a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com virtual bool onClick(Click* click) { 1278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com // fCurrX = click->fICurr.fX; 1288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com // fCurrY = click->fICurr.fY; 1298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com this->inval(NULL); 1308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com return true; 1318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 13282065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 1338a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comprivate: 1348a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com struct Rec { 1358a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkCanvas::VertexMode fMode; 1368a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com int fCount; 1378a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkPoint* fVerts; 1388a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkPoint* fTexs; 13982065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 1408a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com Rec() : fCount(0), fVerts(NULL), fTexs(NULL) {} 1418a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com ~Rec() { delete[] fVerts; delete[] fTexs; } 1428a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com }; 1438a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 1448a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void make_tris(Rec* rec) { 1458a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com int n = 10; 146e0e7cfe44bb9d66d76120a79e5275c294bacaa22commit-bot@chromium.org SkRandom rand; 14782065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 1488a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com rec->fMode = SkCanvas::kTriangles_VertexMode; 1498a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com rec->fCount = n * 3; 1508a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com rec->fVerts = new SkPoint[rec->fCount]; 15182065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 1528a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com for (int i = 0; i < n; i++) { 1538a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkPoint* v = &rec->fVerts[i*3]; 1548a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com for (int j = 0; j < 3; j++) { 1558a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com v[j].set(rand.nextUScalar1() * 250, rand.nextUScalar1() * 250); 1568a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 1578a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 1588a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 15982065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 1608a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void make_fan(Rec* rec, int texWidth, int texHeight) { 1618a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com const SkScalar tx = SkIntToScalar(texWidth); 1628a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com const SkScalar ty = SkIntToScalar(texHeight); 1638a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com const int n = 24; 16482065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 1658a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com rec->fMode = SkCanvas::kTriangleFan_VertexMode; 1668a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com rec->fCount = n + 2; 1678a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com rec->fVerts = new SkPoint[rec->fCount]; 1688a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com rec->fTexs = new SkPoint[rec->fCount]; 16982065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 1708a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkPoint* v = rec->fVerts; 1718a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkPoint* t = rec->fTexs; 1728a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 1738a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com v[0].set(0, 0); 1748a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com t[0].set(0, 0); 1758a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com for (int i = 0; i < n; i++) { 1768a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkScalar cos; 1778a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkScalar sin = SkScalarSinCos(SK_ScalarPI * 2 * i / n, &cos); 1788a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com v[i+1].set(cos, sin); 1798a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com t[i+1].set(i*tx/n, ty); 1808a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 1818a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com v[n+1] = v[1]; 1828a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com t[n+1].set(tx, ty); 18382065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 1848a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkMatrix m; 1858a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com m.setScale(SkIntToScalar(100), SkIntToScalar(100)); 1868a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com m.postTranslate(SkIntToScalar(110), SkIntToScalar(110)); 1878a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com m.mapPoints(v, rec->fCount); 1888a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 18982065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 1908a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com void make_strip(Rec* rec, int texWidth, int texHeight) { 1918a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com const SkScalar tx = SkIntToScalar(texWidth); 1928a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com const SkScalar ty = SkIntToScalar(texHeight); 1938a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com const int n = 24; 19482065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 1958a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com rec->fMode = SkCanvas::kTriangleStrip_VertexMode; 1968a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com rec->fCount = 2 * (n + 1); 1978a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com rec->fVerts = new SkPoint[rec->fCount]; 1988a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com rec->fTexs = new SkPoint[rec->fCount]; 19982065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 2008a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkPoint* v = rec->fVerts; 2018a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkPoint* t = rec->fTexs; 20282065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 2038a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com for (int i = 0; i < n; i++) { 2048a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkScalar cos; 2058a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkScalar sin = SkScalarSinCos(SK_ScalarPI * 2 * i / n, &cos); 2068a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com v[i*2 + 0].set(cos/2, sin/2); 2078a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com v[i*2 + 1].set(cos, sin); 20882065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 2098a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com t[i*2 + 0].set(tx * i / n, ty); 2108a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com t[i*2 + 1].set(tx * i / n, 0); 2118a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 2128a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com v[2*n + 0] = v[0]; 2138a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com v[2*n + 1] = v[1]; 21482065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 2158a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com t[2*n + 0].set(tx, ty); 2168a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com t[2*n + 1].set(tx, 0); 21782065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 2188a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com SkMatrix m; 2198a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com m.setScale(SkIntToScalar(100), SkIntToScalar(100)); 2208a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com m.postTranslate(SkIntToScalar(110), SkIntToScalar(110)); 2218a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com m.mapPoints(v, rec->fCount); 2228a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com } 22382065d667f64e232bcde2ad849756a6096fcbe6freed@google.com 2248a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com Rec fRecs[3]; 2258a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 226f21833999d90ad9c8c584cff3238797b39cfc00breed@google.com typedef SampleView INHERITED; 2278a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com}; 2288a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 2298a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com////////////////////////////////////////////////////////////////////////////// 2308a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.com 2318a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic SkView* MyFactory() { return new VerticesView; } 2328a1c16ff38322f0210116fa7293eb8817c7e477ereed@android.comstatic SkViewRegister reg(MyFactory); 233