| OLD | NEW |
| 1 | 1 |
| 2 /* | 2 /* |
| 3 * Copyright 2011 Google Inc. | 3 * Copyright 2011 Google Inc. |
| 4 * | 4 * |
| 5 * Use of this source code is governed by a BSD-style license that can be | 5 * Use of this source code is governed by a BSD-style license that can be |
| 6 * found in the LICENSE file. | 6 * found in the LICENSE file. |
| 7 */ | 7 */ |
| 8 #include "SampleCode.h" | 8 #include "SampleCode.h" |
| 9 #include "SkBlurMask.h" | 9 #include "SkBlurMask.h" |
| 10 #include "SkBlurMaskFilter.h" | 10 #include "SkBlurMaskFilter.h" |
| (...skipping 75 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 86 paint->setPathEffect(SkPath1DPathEffect::Create(path, SkIntToScalar(21), 0, | 86 paint->setPathEffect(SkPath1DPathEffect::Create(path, SkIntToScalar(21), 0, |
| 87 SkPath1DPathEffect::kRotate_
Style))->unref(); | 87 SkPath1DPathEffect::kRotate_
Style))->unref(); |
| 88 compose_pe(paint); | 88 compose_pe(paint); |
| 89 } | 89 } |
| 90 | 90 |
| 91 typedef void (*PE_Proc)(SkPaint*); | 91 typedef void (*PE_Proc)(SkPaint*); |
| 92 static const PE_Proc gPE[] = { hair_pe, hair2_pe, stroke_pe, dash_pe, one_d_pe }
; | 92 static const PE_Proc gPE[] = { hair_pe, hair2_pe, stroke_pe, dash_pe, one_d_pe }
; |
| 93 | 93 |
| 94 static void fill_pe(SkPaint* paint) { | 94 static void fill_pe(SkPaint* paint) { |
| 95 paint->setStyle(SkPaint::kFill_Style); | 95 paint->setStyle(SkPaint::kFill_Style); |
| 96 paint->setPathEffect(NULL); | 96 paint->setPathEffect(nullptr); |
| 97 } | 97 } |
| 98 | 98 |
| 99 static void discrete_pe(SkPaint* paint) { | 99 static void discrete_pe(SkPaint* paint) { |
| 100 paint->setPathEffect(SkDiscretePathEffect::Create(10, 4))->unref(); | 100 paint->setPathEffect(SkDiscretePathEffect::Create(10, 4))->unref(); |
| 101 } | 101 } |
| 102 | 102 |
| 103 static SkPathEffect* MakeTileEffect() { | 103 static SkPathEffect* MakeTileEffect() { |
| 104 SkMatrix m; | 104 SkMatrix m; |
| 105 m.setScale(SkIntToScalar(12), SkIntToScalar(12)); | 105 m.setScale(SkIntToScalar(12), SkIntToScalar(12)); |
| 106 | 106 |
| (...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 164 static const SkColor gColors[] = { | 164 static const SkColor gColors[] = { |
| 165 SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorWHITE, SK_ColorBLACK | 165 SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorWHITE, SK_ColorBLACK |
| 166 }; | 166 }; |
| 167 static const SkScalar gPos0[] = { 0, SK_Scalar1 }; | 167 static const SkScalar gPos0[] = { 0, SK_Scalar1 }; |
| 168 static const SkScalar gPos1[] = { SK_Scalar1/4, SK_Scalar1*3/4 }; | 168 static const SkScalar gPos1[] = { SK_Scalar1/4, SK_Scalar1*3/4 }; |
| 169 static const SkScalar gPos2[] = { | 169 static const SkScalar gPos2[] = { |
| 170 0, SK_Scalar1/8, SK_Scalar1/2, SK_Scalar1*7/8, SK_Scalar1 | 170 0, SK_Scalar1/8, SK_Scalar1/2, SK_Scalar1*7/8, SK_Scalar1 |
| 171 }; | 171 }; |
| 172 | 172 |
| 173 static const GradData gGradData[] = { | 173 static const GradData gGradData[] = { |
| 174 { 2, gColors, NULL }, | 174 { 2, gColors, nullptr }, |
| 175 { 2, gColors, gPos0 }, | 175 { 2, gColors, gPos0 }, |
| 176 { 2, gColors, gPos1 }, | 176 { 2, gColors, gPos1 }, |
| 177 { 5, gColors, NULL }, | 177 { 5, gColors, nullptr }, |
| 178 { 5, gColors, gPos2 } | 178 { 5, gColors, gPos2 } |
| 179 }; | 179 }; |
| 180 | 180 |
| 181 static SkShader* MakeLinear(const SkPoint pts[2], const GradData& data, SkShader
::TileMode tm) { | 181 static SkShader* MakeLinear(const SkPoint pts[2], const GradData& data, SkShader
::TileMode tm) { |
| 182 return SkGradientShader::CreateLinear(pts, data.fColors, data.fPos, data.fCo
unt, tm); | 182 return SkGradientShader::CreateLinear(pts, data.fColors, data.fPos, data.fCo
unt, tm); |
| 183 } | 183 } |
| 184 | 184 |
| 185 static SkShader* MakeRadial(const SkPoint pts[2], const GradData& data, SkShader
::TileMode tm) { | 185 static SkShader* MakeRadial(const SkPoint pts[2], const GradData& data, SkShader
::TileMode tm) { |
| 186 SkPoint center; | 186 SkPoint center; |
| 187 center.set(SkScalarAve(pts[0].fX, pts[1].fX), | 187 center.set(SkScalarAve(pts[0].fX, pts[1].fX), |
| (...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 283 len = strlen(text); | 283 len = strlen(text); |
| 284 SkScalar pathLen = getpathlen(path); | 284 SkScalar pathLen = getpathlen(path); |
| 285 SkMatrix matrix; | 285 SkMatrix matrix; |
| 286 | 286 |
| 287 paint.setColor(SK_ColorBLACK); | 287 paint.setColor(SK_ColorBLACK); |
| 288 paint.setStyle(SkPaint::kStroke_Style); | 288 paint.setStyle(SkPaint::kStroke_Style); |
| 289 canvas->drawPath(path, paint); | 289 canvas->drawPath(path, paint); |
| 290 paint.setStyle(SkPaint::kFill_Style); | 290 paint.setStyle(SkPaint::kFill_Style); |
| 291 | 291 |
| 292 paint.setTextSize(50); | 292 paint.setTextSize(50); |
| 293 canvas->drawTextOnPath(text, len, path, NULL, paint); | 293 canvas->drawTextOnPath(text, len, path, nullptr, paint); |
| 294 | 294 |
| 295 paint.setColor(SK_ColorRED); | 295 paint.setColor(SK_ColorRED); |
| 296 matrix.setScale(-SK_Scalar1, SK_Scalar1); | 296 matrix.setScale(-SK_Scalar1, SK_Scalar1); |
| 297 matrix.postTranslate(pathLen, 0); | 297 matrix.postTranslate(pathLen, 0); |
| 298 canvas->drawTextOnPath(text, len, path, &matrix, paint); | 298 canvas->drawTextOnPath(text, len, path, &matrix, paint); |
| 299 | 299 |
| 300 paint.setColor(SK_ColorBLUE); | 300 paint.setColor(SK_ColorBLUE); |
| 301 matrix.setScale(SK_Scalar1, -SK_Scalar1); | 301 matrix.setScale(SK_Scalar1, -SK_Scalar1); |
| 302 canvas->drawTextOnPath(text, len, path, &matrix, paint); | 302 canvas->drawTextOnPath(text, len, path, &matrix, paint); |
| 303 | 303 |
| (...skipping 16 matching lines...) Expand all Loading... |
| 320 SkImageDecoder::DecodeFile("/skimages/logo.gif", &bm); | 320 SkImageDecoder::DecodeFile("/skimages/logo.gif", &bm); |
| 321 size->set(bm.width(), bm.height()); | 321 size->set(bm.width(), bm.height()); |
| 322 return SkShader::CreateBitmapShader(bm, SkShader::kClamp_TileMode, | 322 return SkShader::CreateBitmapShader(bm, SkShader::kClamp_TileMode, |
| 323 SkShader::kClamp_TileMode); | 323 SkShader::kClamp_TileMode); |
| 324 } | 324 } |
| 325 | 325 |
| 326 static SkShader* make_shader1(const SkIPoint& size) { | 326 static SkShader* make_shader1(const SkIPoint& size) { |
| 327 SkPoint pts[] = { { 0, 0 }, | 327 SkPoint pts[] = { { 0, 0 }, |
| 328 { SkIntToScalar(size.fX), SkIntToScalar(size.fY) } }; | 328 { SkIntToScalar(size.fX), SkIntToScalar(size.fY) } }; |
| 329 SkColor colors[] = { SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorRED }
; | 329 SkColor colors[] = { SK_ColorRED, SK_ColorGREEN, SK_ColorBLUE, SK_ColorRED }
; |
| 330 return SkGradientShader::CreateLinear(pts, colors, NULL, | 330 return SkGradientShader::CreateLinear(pts, colors, nullptr, |
| 331 SK_ARRAY_COUNT(colors), SkShader::kMir
ror_TileMode); | 331 SK_ARRAY_COUNT(colors), SkShader::kMir
ror_TileMode); |
| 332 } | 332 } |
| 333 | 333 |
| 334 class Rec { | 334 class Rec { |
| 335 public: | 335 public: |
| 336 SkCanvas::VertexMode fMode; | 336 SkCanvas::VertexMode fMode; |
| 337 int fCount; | 337 int fCount; |
| 338 SkPoint* fVerts; | 338 SkPoint* fVerts; |
| 339 SkPoint* fTexs; | 339 SkPoint* fTexs; |
| 340 | 340 |
| 341 Rec() : fCount(0), fVerts(NULL), fTexs(NULL) {} | 341 Rec() : fCount(0), fVerts(nullptr), fTexs(nullptr) {} |
| 342 ~Rec() { delete[] fVerts; delete[] fTexs; } | 342 ~Rec() { delete[] fVerts; delete[] fTexs; } |
| 343 }; | 343 }; |
| 344 | 344 |
| 345 static void make_tris(Rec* rec) { | 345 static void make_tris(Rec* rec) { |
| 346 int n = 10; | 346 int n = 10; |
| 347 SkRandom rand; | 347 SkRandom rand; |
| 348 | 348 |
| 349 rec->fMode = SkCanvas::kTriangles_VertexMode; | 349 rec->fMode = SkCanvas::kTriangles_VertexMode; |
| 350 rec->fCount = n * 3; | 350 rec->fCount = n * 3; |
| 351 rec->fVerts = new SkPoint[rec->fCount]; | 351 rec->fVerts = new SkPoint[rec->fCount]; |
| (...skipping 84 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 436 make_fan(&fRecs[1], size.fX, size.fY); | 436 make_fan(&fRecs[1], size.fX, size.fY); |
| 437 make_tris(&fRecs[2]); | 437 make_tris(&fRecs[2]); |
| 438 | 438 |
| 439 SkPaint paint; | 439 SkPaint paint; |
| 440 paint.setDither(true); | 440 paint.setDither(true); |
| 441 paint.setFilterQuality(kLow_SkFilterQuality); | 441 paint.setFilterQuality(kLow_SkFilterQuality); |
| 442 | 442 |
| 443 for (size_t i = 0; i < SK_ARRAY_COUNT(fRecs); i++) { | 443 for (size_t i = 0; i < SK_ARRAY_COUNT(fRecs); i++) { |
| 444 canvas->save(); | 444 canvas->save(); |
| 445 | 445 |
| 446 paint.setShader(NULL); | 446 paint.setShader(nullptr); |
| 447 canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount, | 447 canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount, |
| 448 fRecs[i].fVerts, fRecs[i].fTexs, | 448 fRecs[i].fVerts, fRecs[i].fTexs, |
| 449 NULL, NULL, NULL, 0, paint); | 449 nullptr, nullptr, nullptr, 0, paint); |
| 450 | 450 |
| 451 canvas->translate(SkIntToScalar(210), 0); | 451 canvas->translate(SkIntToScalar(210), 0); |
| 452 | 452 |
| 453 paint.setShader(fShader0); | 453 paint.setShader(fShader0); |
| 454 canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount, | 454 canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount, |
| 455 fRecs[i].fVerts, fRecs[i].fTexs, | 455 fRecs[i].fVerts, fRecs[i].fTexs, |
| 456 NULL, NULL, NULL, 0, paint); | 456 nullptr, nullptr, nullptr, 0, paint); |
| 457 | 457 |
| 458 canvas->translate(SkIntToScalar(210), 0); | 458 canvas->translate(SkIntToScalar(210), 0); |
| 459 | 459 |
| 460 paint.setShader(fShader1); | 460 paint.setShader(fShader1); |
| 461 canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount, | 461 canvas->drawVertices(fRecs[i].fMode, fRecs[i].fCount, |
| 462 fRecs[i].fVerts, fRecs[i].fTexs, | 462 fRecs[i].fVerts, fRecs[i].fTexs, |
| 463 NULL, NULL, NULL, 0, paint); | 463 nullptr, nullptr, nullptr, 0, paint); |
| 464 canvas->restore(); | 464 canvas->restore(); |
| 465 | 465 |
| 466 canvas->translate(0, SkIntToScalar(250)); | 466 canvas->translate(0, SkIntToScalar(250)); |
| 467 } | 467 } |
| 468 } | 468 } |
| 469 | 469 |
| 470 /////////////////////////////////////////////////////////////////////////////// | 470 /////////////////////////////////////////////////////////////////////////////// |
| 471 | 471 |
| 472 static void r0(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) | 472 static void r0(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) |
| 473 { | 473 { |
| 474 p.setMaskFilter(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, | 474 p.setMaskFilter(SkBlurMaskFilter::Create(kNormal_SkBlurStyle, |
| 475 SkBlurMask::ConvertRadiusToSigma(Sk
IntToScalar(3))))->unref(); | 475 SkBlurMask::ConvertRadiusToSigma(Sk
IntToScalar(3))))->unref(); |
| 476 rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3)); | 476 rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3)); |
| 477 | 477 |
| 478 p.setMaskFilter(NULL); | 478 p.setMaskFilter(nullptr); |
| 479 p.setStyle(SkPaint::kStroke_Style); | 479 p.setStyle(SkPaint::kStroke_Style); |
| 480 p.setStrokeWidth(SK_Scalar1); | 480 p.setStrokeWidth(SK_Scalar1); |
| 481 rastBuilder->addLayer(p); | 481 rastBuilder->addLayer(p); |
| 482 | 482 |
| 483 p.setAlpha(0x11); | 483 p.setAlpha(0x11); |
| 484 p.setStyle(SkPaint::kFill_Style); | 484 p.setStyle(SkPaint::kFill_Style); |
| 485 p.setXfermodeMode(SkXfermode::kSrc_Mode); | 485 p.setXfermodeMode(SkXfermode::kSrc_Mode); |
| 486 rastBuilder->addLayer(p); | 486 rastBuilder->addLayer(p); |
| 487 } | 487 } |
| 488 | 488 |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 523 | 523 |
| 524 static void r4(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) | 524 static void r4(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) |
| 525 { | 525 { |
| 526 p.setAlpha(0x60); | 526 p.setAlpha(0x60); |
| 527 rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3)); | 527 rastBuilder->addLayer(p, SkIntToScalar(3), SkIntToScalar(3)); |
| 528 | 528 |
| 529 p.setAlpha(0xFF); | 529 p.setAlpha(0xFF); |
| 530 p.setXfermodeMode(SkXfermode::kClear_Mode); | 530 p.setXfermodeMode(SkXfermode::kClear_Mode); |
| 531 rastBuilder->addLayer(p, SK_Scalar1*3/2, SK_Scalar1*3/2); | 531 rastBuilder->addLayer(p, SK_Scalar1*3/2, SK_Scalar1*3/2); |
| 532 | 532 |
| 533 p.setXfermode(NULL); | 533 p.setXfermode(nullptr); |
| 534 rastBuilder->addLayer(p); | 534 rastBuilder->addLayer(p); |
| 535 } | 535 } |
| 536 | 536 |
| 537 #include "SkDiscretePathEffect.h" | 537 #include "SkDiscretePathEffect.h" |
| 538 | 538 |
| 539 static void r5(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) | 539 static void r5(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) |
| 540 { | 540 { |
| 541 rastBuilder->addLayer(p); | 541 rastBuilder->addLayer(p); |
| 542 | 542 |
| 543 p.setPathEffect(SkDiscretePathEffect::Create(SK_Scalar1*4, SK_Scalar1*3))->u
nref(); | 543 p.setPathEffect(SkDiscretePathEffect::Create(SK_Scalar1*4, SK_Scalar1*3))->u
nref(); |
| (...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 578 { | 578 { |
| 579 rastBuilder->addLayer(p); | 579 rastBuilder->addLayer(p); |
| 580 | 580 |
| 581 SkMatrix lattice; | 581 SkMatrix lattice; |
| 582 lattice.setScale(SK_Scalar1*6, SK_Scalar1*6, 0, 0); | 582 lattice.setScale(SK_Scalar1*6, SK_Scalar1*6, 0, 0); |
| 583 lattice.postSkew(SK_Scalar1/3, 0, 0, 0); | 583 lattice.postSkew(SK_Scalar1/3, 0, 0, 0); |
| 584 p.setPathEffect(MakeDotEffect(SK_Scalar1*2, lattice))->unref(); | 584 p.setPathEffect(MakeDotEffect(SK_Scalar1*2, lattice))->unref(); |
| 585 p.setXfermodeMode(SkXfermode::kClear_Mode); | 585 p.setXfermodeMode(SkXfermode::kClear_Mode); |
| 586 rastBuilder->addLayer(p); | 586 rastBuilder->addLayer(p); |
| 587 | 587 |
| 588 p.setPathEffect(NULL); | 588 p.setPathEffect(nullptr); |
| 589 p.setXfermode(NULL); | 589 p.setXfermode(nullptr); |
| 590 p.setStyle(SkPaint::kStroke_Style); | 590 p.setStyle(SkPaint::kStroke_Style); |
| 591 p.setStrokeWidth(SK_Scalar1); | 591 p.setStrokeWidth(SK_Scalar1); |
| 592 rastBuilder->addLayer(p); | 592 rastBuilder->addLayer(p); |
| 593 } | 593 } |
| 594 | 594 |
| 595 static void r9(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) | 595 static void r9(SkLayerRasterizer::Builder* rastBuilder, SkPaint& p) |
| 596 { | 596 { |
| 597 rastBuilder->addLayer(p); | 597 rastBuilder->addLayer(p); |
| 598 | 598 |
| 599 SkMatrix lattice; | 599 SkMatrix lattice; |
| 600 lattice.setScale(SK_Scalar1, SK_Scalar1*6, 0, 0); | 600 lattice.setScale(SK_Scalar1, SK_Scalar1*6, 0, 0); |
| 601 lattice.postRotate(SkIntToScalar(30), 0, 0); | 601 lattice.postRotate(SkIntToScalar(30), 0, 0); |
| 602 p.setPathEffect(SkLine2DPathEffect::Create(SK_Scalar1*2, lattice))->unref(); | 602 p.setPathEffect(SkLine2DPathEffect::Create(SK_Scalar1*2, lattice))->unref(); |
| 603 p.setXfermodeMode(SkXfermode::kClear_Mode); | 603 p.setXfermodeMode(SkXfermode::kClear_Mode); |
| 604 rastBuilder->addLayer(p); | 604 rastBuilder->addLayer(p); |
| 605 | 605 |
| 606 p.setPathEffect(NULL); | 606 p.setPathEffect(nullptr); |
| 607 p.setXfermode(NULL); | 607 p.setXfermode(nullptr); |
| 608 p.setStyle(SkPaint::kStroke_Style); | 608 p.setStyle(SkPaint::kStroke_Style); |
| 609 p.setStrokeWidth(SK_Scalar1); | 609 p.setStrokeWidth(SK_Scalar1); |
| 610 rastBuilder->addLayer(p); | 610 rastBuilder->addLayer(p); |
| 611 } | 611 } |
| 612 | 612 |
| 613 typedef void (*raster_proc)(SkLayerRasterizer::Builder*, SkPaint&); | 613 typedef void (*raster_proc)(SkLayerRasterizer::Builder*, SkPaint&); |
| 614 | 614 |
| 615 static const raster_proc gRastProcs[] = { | 615 static const raster_proc gRastProcs[] = { |
| 616 r0, r1, r2, r3, r4, r5, r6, r7, r8, r9 | 616 r0, r1, r2, r3, r4, r5, r6, r7, r8, r9 |
| 617 }; | 617 }; |
| (...skipping 88 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 706 } | 706 } |
| 707 | 707 |
| 708 void onDrawContent(SkCanvas* canvas) override { | 708 void onDrawContent(SkCanvas* canvas) override { |
| 709 this->init(); | 709 this->init(); |
| 710 gProc[fIndex](canvas); | 710 gProc[fIndex](canvas); |
| 711 } | 711 } |
| 712 | 712 |
| 713 SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override
{ | 713 SkView::Click* onFindClickHandler(SkScalar x, SkScalar y, unsigned) override
{ |
| 714 this->init(); | 714 this->init(); |
| 715 fIndex = (fIndex + 1) % SK_ARRAY_COUNT(gProc); | 715 fIndex = (fIndex + 1) % SK_ARRAY_COUNT(gProc); |
| 716 this->inval(NULL); | 716 this->inval(nullptr); |
| 717 return NULL; | 717 return nullptr; |
| 718 } | 718 } |
| 719 | 719 |
| 720 private: | 720 private: |
| 721 typedef SampleView INHERITED; | 721 typedef SampleView INHERITED; |
| 722 }; | 722 }; |
| 723 | 723 |
| 724 ////////////////////////////////////////////////////////////////////////////// | 724 ////////////////////////////////////////////////////////////////////////////// |
| 725 | 725 |
| 726 static SkView* MyFactory() { return new SlideView; } | 726 static SkView* MyFactory() { return new SlideView; } |
| 727 static SkViewRegister reg(MyFactory); | 727 static SkViewRegister reg(MyFactory); |
| OLD | NEW |