| OLD | NEW |
| 1 SkPaint | 1 SkPaint |
| 2 ======= | 2 ======= |
| 3 | 3 |
| 4 *color, stroke, font, effects* | 4 *color, stroke, font, effects* |
| 5 | 5 |
| 6 - [SkXfermode](#SkXfermode) - transfer modes | 6 - [SkXfermode](#SkXfermode) - transfer modes |
| 7 - [ShShader](#ShShader) - gradients and patterns | 7 - [ShShader](#ShShader) - gradients and patterns |
| 8 - [SkMaskFilter](#SkMaskFilter) - modifications to the alpha mask | 8 - [SkMaskFilter](#SkMaskFilter) - modifications to the alpha mask |
| 9 - [SkColorFilter](#SkColorFilter) - modify the source color before applying th
e | 9 - [SkColorFilter](#SkColorFilter) - modify the source color before applying th
e |
| 10 - [SkPathEffect](#SkPathEffect) - modify to the geometry before it | 10 - [SkPathEffect](#SkPathEffect) - modify to the geometry before it |
| (...skipping 81 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 92 | 92 |
| 93 <!--?prettify lang=cc?--> | 93 <!--?prettify lang=cc?--> |
| 94 | 94 |
| 95 SkPoint points[2] = { | 95 SkPoint points[2] = { |
| 96 SkPoint::Make(0.0f, 0.0f), | 96 SkPoint::Make(0.0f, 0.0f), |
| 97 SkPoint::Make(256.0f, 256.0f) | 97 SkPoint::Make(256.0f, 256.0f) |
| 98 }; | 98 }; |
| 99 SkColor colors[2] = {SK_ColorBLUE, SK_ColorYELLOW}; | 99 SkColor colors[2] = {SK_ColorBLUE, SK_ColorYELLOW}; |
| 100 SkShader* shader = | 100 SkShader* shader = |
| 101 SkGradientShader::CreateLinear( | 101 SkGradientShader::CreateLinear( |
| 102 points, colors, NULL, 2, | 102 points, colors, nullptr, 2, |
| 103 SkShader::kClamp_TileMode, 0, NULL); | 103 SkShader::kClamp_TileMode, 0, nullptr); |
| 104 SkPaint paint; | 104 SkPaint paint; |
| 105 paint.setShader(shader); | 105 paint.setShader(shader); |
| 106 shader->unref(); | 106 shader->unref(); |
| 107 canvas->drawPaint(paint); | 107 canvas->drawPaint(paint); |
| 108 | 108 |
| 109 <a href="https://fiddle.skia.org/c/f91b5310d57744a5a1475b7e47d4a172"> | 109 <a href="https://fiddle.skia.org/c/f91b5310d57744a5a1475b7e47d4a172"> |
| 110 <img src="https://fiddle.skia.org/i/f91b5310d57744a5a1475b7e47d4a172_raster.png"
></a> | 110 <img src="https://fiddle.skia.org/i/f91b5310d57744a5a1475b7e47d4a172_raster.png"
></a> |
| 111 | 111 |
| 112 Now, anything drawn with that paint will be drawn with the gradient | 112 Now, anything drawn with that paint will be drawn with the gradient |
| 113 specified in the call to `CreateLinear()`. The shader object that is | 113 specified in the call to `CreateLinear()`. The shader object that is |
| (...skipping 80 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 194 text.setAntiAlias(true); | 194 text.setAntiAlias(true); |
| 195 SkPoint srcPoints[2] = { | 195 SkPoint srcPoints[2] = { |
| 196 SkPoint::Make(0.0f, 0.0f), | 196 SkPoint::Make(0.0f, 0.0f), |
| 197 SkPoint::Make(64.0f, 0.0f) | 197 SkPoint::Make(64.0f, 0.0f) |
| 198 }; | 198 }; |
| 199 SkColor srcColors[2] = { | 199 SkColor srcColors[2] = { |
| 200 SK_ColorMAGENTA & 0x00FFFFFF, | 200 SK_ColorMAGENTA & 0x00FFFFFF, |
| 201 SK_ColorMAGENTA}; | 201 SK_ColorMAGENTA}; |
| 202 SkAutoTUnref<SkShader> srcShader( | 202 SkAutoTUnref<SkShader> srcShader( |
| 203 SkGradientShader::CreateLinear( | 203 SkGradientShader::CreateLinear( |
| 204 srcPoints, srcColors, NULL, 2, | 204 srcPoints, srcColors, nullptr, 2, |
| 205 SkShader::kClamp_TileMode, 0, NULL)); | 205 SkShader::kClamp_TileMode, 0, nullptr)); |
| 206 src.setShader(srcShader); | 206 src.setShader(srcShader); |
| 207 | 207 |
| 208 SkPoint dstPoints[2] = { | 208 SkPoint dstPoints[2] = { |
| 209 SkPoint::Make(0.0f, 0.0f), | 209 SkPoint::Make(0.0f, 0.0f), |
| 210 SkPoint::Make(0.0f, 64.0f) | 210 SkPoint::Make(0.0f, 64.0f) |
| 211 }; | 211 }; |
| 212 SkColor dstColors[2] = { | 212 SkColor dstColors[2] = { |
| 213 SK_ColorCYAN & 0x00FFFFFF, | 213 SK_ColorCYAN & 0x00FFFFFF, |
| 214 SK_ColorCYAN}; | 214 SK_ColorCYAN}; |
| 215 SkAutoTUnref<SkShader> dstShader( | 215 SkAutoTUnref<SkShader> dstShader( |
| 216 SkGradientShader::CreateLinear( | 216 SkGradientShader::CreateLinear( |
| 217 dstPoints, dstColors, NULL, 2, | 217 dstPoints, dstColors, nullptr, 2, |
| 218 SkShader::kClamp_TileMode, 0, NULL)); | 218 SkShader::kClamp_TileMode, 0, nullptr)); |
| 219 dst.setShader(dstShader); | 219 dst.setShader(dstShader); |
| 220 canvas->clear(SK_ColorWHITE); | 220 canvas->clear(SK_ColorWHITE); |
| 221 size_t N = sizeof(modes) / sizeof(modes[0]); | 221 size_t N = sizeof(modes) / sizeof(modes[0]); |
| 222 size_t K = (N - 1) / 3 + 1; | 222 size_t K = (N - 1) / 3 + 1; |
| 223 SkASSERT(K * 64 == 640); // tall enough | 223 SkASSERT(K * 64 == 640); // tall enough |
| 224 for (size_t i = 0; i < N; ++i) { | 224 for (size_t i = 0; i < N; ++i) { |
| 225 SkAutoCanvasRestore autoCanvasRestore(canvas, true); | 225 SkAutoCanvasRestore autoCanvasRestore(canvas, true); |
| 226 canvas->translate(192.0f * (i / K), 64.0f * (i % K)); | 226 canvas->translate(192.0f * (i / K), 64.0f * (i % K)); |
| 227 const char* desc = SkXfermode::ModeName(modes[i]); | 227 const char* desc = SkXfermode::ModeName(modes[i]); |
| 228 canvas->drawText(desc, strlen(desc), 68.0f, 30.0f, text); | 228 canvas->drawText(desc, strlen(desc), 68.0f, 30.0f, text); |
| 229 canvas->clipRect(SkRect::MakeWH(64.0f, 64.0f)); | 229 canvas->clipRect(SkRect::MakeWH(64.0f, 64.0f)); |
| 230 canvas->drawColor(SK_ColorLTGRAY); | 230 canvas->drawColor(SK_ColorLTGRAY); |
| 231 (void)canvas->saveLayer(NULL, NULL); | 231 (void)canvas->saveLayer(nullptr, nullptr); |
| 232 canvas->clear(SK_ColorTRANSPARENT); | 232 canvas->clear(SK_ColorTRANSPARENT); |
| 233 canvas->drawPaint(dst); | 233 canvas->drawPaint(dst); |
| 234 src.setXfermodeMode(modes[i]); | 234 src.setXfermodeMode(modes[i]); |
| 235 canvas->drawPaint(src); | 235 canvas->drawPaint(src); |
| 236 canvas->drawRect(rect, stroke); | 236 canvas->drawRect(rect, stroke); |
| 237 } | 237 } |
| 238 | 238 |
| 239 <a href="https://fiddle.skia.org/c/0a2392be5adf339ce6537799f2807f3c"><img src="h
ttps://fiddle.skia.org/i/0a2392be5adf339ce6537799f2807f3c_raster.png" alt=""></a
> | 239 <a href="https://fiddle.skia.org/c/0a2392be5adf339ce6537799f2807f3c"><img src="h
ttps://fiddle.skia.org/i/0a2392be5adf339ce6537799f2807f3c_raster.png" alt=""></a
> |
| 240 | 240 |
| 241 <span id="ShShader"></span> | 241 <span id="ShShader"></span> |
| (...skipping 26 matching lines...) Expand all Loading... |
| 268 <img src="https://fiddle.skia.org/i/0e8d08e0a0b342e9e45c364d0e5cea8a_raster.
png"></a> | 268 <img src="https://fiddle.skia.org/i/0e8d08e0a0b342e9e45c364d0e5cea8a_raster.
png"></a> |
| 269 | 269 |
| 270 * Radial Gradient Shader | 270 * Radial Gradient Shader |
| 271 | 271 |
| 272 <!--?prettify lang=cc?--> | 272 <!--?prettify lang=cc?--> |
| 273 | 273 |
| 274 SkColor colors[2] = {SK_ColorBLUE, SK_ColorYELLOW}; | 274 SkColor colors[2] = {SK_ColorBLUE, SK_ColorYELLOW}; |
| 275 SkShader* shader = | 275 SkShader* shader = |
| 276 SkGradientShader::CreateRadial( | 276 SkGradientShader::CreateRadial( |
| 277 SkPoint::Make(128.0f, 128.0f), 180.0f, | 277 SkPoint::Make(128.0f, 128.0f), 180.0f, |
| 278 colors, NULL, 2, SkShader::kClamp_TileMode, 0, NULL); | 278 colors, nullptr, 2, SkShader::kClamp_TileMode, 0, nullpt
r); |
| 279 SkPaint paint; | 279 SkPaint paint; |
| 280 paint.setShader(shader); | 280 paint.setShader(shader); |
| 281 shader->unref(); | 281 shader->unref(); |
| 282 canvas->drawPaint(paint); | 282 canvas->drawPaint(paint); |
| 283 | 283 |
| 284 <a href="https://fiddle.skia.org/c/601abd2819e38365900bf62286986024"> | 284 <a href="https://fiddle.skia.org/c/601abd2819e38365900bf62286986024"> |
| 285 <img src="https://fiddle.skia.org/i/601abd2819e38365900bf62286986024_raster.
png"></a> | 285 <img src="https://fiddle.skia.org/i/601abd2819e38365900bf62286986024_raster.
png"></a> |
| 286 | 286 |
| 287 * Two-Point Conical Gradient Shader | 287 * Two-Point Conical Gradient Shader |
| 288 | 288 |
| 289 <!--?prettify lang=cc?--> | 289 <!--?prettify lang=cc?--> |
| 290 | 290 |
| 291 SkColor colors[2] = {SK_ColorBLUE, SK_ColorYELLOW}; | 291 SkColor colors[2] = {SK_ColorBLUE, SK_ColorYELLOW}; |
| 292 SkShader* shader = | 292 SkShader* shader = |
| 293 SkGradientShader::CreateTwoPointConical( | 293 SkGradientShader::CreateTwoPointConical( |
| 294 SkPoint::Make(128.0f, 128.0f), 128.0f, | 294 SkPoint::Make(128.0f, 128.0f), 128.0f, |
| 295 SkPoint::Make(128.0f, 16.0f), 16.0f, | 295 SkPoint::Make(128.0f, 16.0f), 16.0f, |
| 296 colors, NULL, 2, SkShader::kClamp_TileMode, 0, NULL); | 296 colors, nullptr, 2, SkShader::kClamp_TileMode, 0, nullp
tr); |
| 297 SkPaint paint; | 297 SkPaint paint; |
| 298 paint.setShader(shader); | 298 paint.setShader(shader); |
| 299 shader->unref(); | 299 shader->unref(); |
| 300 canvas->drawPaint(paint); | 300 canvas->drawPaint(paint); |
| 301 | 301 |
| 302 <a href="https://fiddle.skia.org/c/991f7d67ff1ccebd6c2c4fab18a76edc"> | 302 <a href="https://fiddle.skia.org/c/991f7d67ff1ccebd6c2c4fab18a76edc"> |
| 303 <img src="https://fiddle.skia.org/i/991f7d67ff1ccebd6c2c4fab18a76edc_raster.
png"></a> | 303 <img src="https://fiddle.skia.org/i/991f7d67ff1ccebd6c2c4fab18a76edc_raster.
png"></a> |
| 304 | 304 |
| 305 | 305 |
| 306 * Sweep Gradient Shader | 306 * Sweep Gradient Shader |
| 307 | 307 |
| 308 <!--?prettify lang=cc?--> | 308 <!--?prettify lang=cc?--> |
| 309 | 309 |
| 310 SkColor colors[4] = { | 310 SkColor colors[4] = { |
| 311 SK_ColorCYAN, SK_ColorMAGENTA, SK_ColorYELLOW, SK_ColorCYAN}; | 311 SK_ColorCYAN, SK_ColorMAGENTA, SK_ColorYELLOW, SK_ColorCYAN}; |
| 312 SkShader* shader = | 312 SkShader* shader = |
| 313 SkGradientShader::CreateSweep( | 313 SkGradientShader::CreateSweep( |
| 314 128.0f, 128.0f, colors, NULL, 4, 0, NULL); | 314 128.0f, 128.0f, colors, nullptr, 4, 0, nullptr); |
| 315 SkPaint paint; | 315 SkPaint paint; |
| 316 paint.setShader(shader); | 316 paint.setShader(shader); |
| 317 shader->unref(); | 317 shader->unref(); |
| 318 canvas->drawPaint(paint); | 318 canvas->drawPaint(paint); |
| 319 | 319 |
| 320 <a href="https://fiddle.skia.org/c/cee9d1831f6679c3d88170f857995d12"> | 320 <a href="https://fiddle.skia.org/c/cee9d1831f6679c3d88170f857995d12"> |
| 321 <img src="https://fiddle.skia.org/i/cee9d1831f6679c3d88170f857995d12_raster.
png"></a> | 321 <img src="https://fiddle.skia.org/i/cee9d1831f6679c3d88170f857995d12_raster.
png"></a> |
| 322 | 322 |
| 323 * Fractal Perlin Noise Shader | 323 * Fractal Perlin Noise Shader |
| 324 | 324 |
| 325 <!--?prettify lang=cc?--> | 325 <!--?prettify lang=cc?--> |
| 326 | 326 |
| 327 canvas->clear(SK_ColorWHITE); | 327 canvas->clear(SK_ColorWHITE); |
| 328 SkShader* shader = SkPerlinNoiseShader::CreateFractalNoise( | 328 SkShader* shader = SkPerlinNoiseShader::CreateFractalNoise( |
| 329 0.05f, 0.05f, 4, 0.0f, NULL); | 329 0.05f, 0.05f, 4, 0.0f, nullptr); |
| 330 SkPaint paint; | 330 SkPaint paint; |
| 331 paint.setShader(shader); | 331 paint.setShader(shader); |
| 332 shader->unref(); | 332 shader->unref(); |
| 333 canvas->drawPaint(paint); | 333 canvas->drawPaint(paint); |
| 334 | 334 |
| 335 <a href="https://fiddle.skia.org/c/cc45c5349c3b31f97da7c1af7f84162a"> | 335 <a href="https://fiddle.skia.org/c/cc45c5349c3b31f97da7c1af7f84162a"> |
| 336 <img src="https://fiddle.skia.org/i/cc45c5349c3b31f97da7c1af7f84162a_raster.
png"></a> | 336 <img src="https://fiddle.skia.org/i/cc45c5349c3b31f97da7c1af7f84162a_raster.
png"></a> |
| 337 | 337 |
| 338 * Turbulence Perlin Noise Shader | 338 * Turbulence Perlin Noise Shader |
| 339 | 339 |
| 340 <!--?prettify lang=cc?--> | 340 <!--?prettify lang=cc?--> |
| 341 | 341 |
| 342 canvas->clear(SK_ColorWHITE); | 342 canvas->clear(SK_ColorWHITE); |
| 343 SkShader* shader = SkPerlinNoiseShader::CreateTurbulence( | 343 SkShader* shader = SkPerlinNoiseShader::CreateTurbulence( |
| 344 0.05f, 0.05f, 4, 0.0f, NULL); | 344 0.05f, 0.05f, 4, 0.0f, nullptr); |
| 345 SkPaint paint; | 345 SkPaint paint; |
| 346 paint.setShader(shader); | 346 paint.setShader(shader); |
| 347 shader->unref(); | 347 shader->unref(); |
| 348 canvas->drawPaint(paint); | 348 canvas->drawPaint(paint); |
| 349 | 349 |
| 350 <a href="https://fiddle.skia.org/c/52729ed3a71b89a6dba4f60e8eb67727"> | 350 <a href="https://fiddle.skia.org/c/52729ed3a71b89a6dba4f60e8eb67727"> |
| 351 <img src="https://fiddle.skia.org/i/52729ed3a71b89a6dba4f60e8eb67727_raster.
png"></a> | 351 <img src="https://fiddle.skia.org/i/52729ed3a71b89a6dba4f60e8eb67727_raster.
png"></a> |
| 352 | 352 |
| 353 * Compose Shader | 353 * Compose Shader |
| 354 | 354 |
| 355 <!--?prettify lang=cc?--> | 355 <!--?prettify lang=cc?--> |
| 356 | 356 |
| 357 SkColor colors[2] = {SK_ColorBLUE, SK_ColorYELLOW}; | 357 SkColor colors[2] = {SK_ColorBLUE, SK_ColorYELLOW}; |
| 358 SkShader* shader1 = | 358 SkShader* shader1 = |
| 359 SkGradientShader::CreateRadial( | 359 SkGradientShader::CreateRadial( |
| 360 SkPoint::Make(128.0f, 128.0f), 180.0f, | 360 SkPoint::Make(128.0f, 128.0f), 180.0f, |
| 361 colors, NULL, 2, SkShader::kClamp_TileMode, 0, NULL); | 361 colors, nullptr, 2, SkShader::kClamp_TileMode, 0, nullptr); |
| 362 SkShader* shader2 = SkPerlinNoiseShader::CreateTurbulence( | 362 SkShader* shader2 = SkPerlinNoiseShader::CreateTurbulence( |
| 363 0.025f, 0.025f, 2, 0.0f, NULL); | 363 0.025f, 0.025f, 2, 0.0f, nullptr); |
| 364 SkShader* shader = | 364 SkShader* shader = |
| 365 new SkComposeShader(shader1, shader2); | 365 new SkComposeShader(shader1, shader2); |
| 366 SkPaint paint; | 366 SkPaint paint; |
| 367 paint.setShader(shader); | 367 paint.setShader(shader); |
| 368 shader->unref(); | 368 shader->unref(); |
| 369 shader2->unref(); | 369 shader2->unref(); |
| 370 shader1->unref(); | 370 shader1->unref(); |
| 371 canvas->drawPaint(paint); | 371 canvas->drawPaint(paint); |
| 372 | 372 |
| 373 <a href="https://fiddle.skia.org/c/1209b7a29d870302edcc43dc0916e8d5"> | 373 <a href="https://fiddle.skia.org/c/1209b7a29d870302edcc43dc0916e8d5"> |
| (...skipping 126 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 500 * Color Table Color Filter | 500 * Color Table Color Filter |
| 501 | 501 |
| 502 <!--?prettify lang=cc?--> | 502 <!--?prettify lang=cc?--> |
| 503 | 503 |
| 504 canvas->scale(0.5, 0.5); | 504 canvas->scale(0.5, 0.5); |
| 505 uint8_t ct[256]; | 505 uint8_t ct[256]; |
| 506 for (int i = 0; i < 256; ++i) { | 506 for (int i = 0; i < 256; ++i) { |
| 507 int x = (i - 96) * 255 / 64; | 507 int x = (i - 96) * 255 / 64; |
| 508 ct[i] = x < 0 ? 0 : x > 255 ? 255 : x; | 508 ct[i] = x < 0 ? 0 : x > 255 ? 255 : x; |
| 509 } | 509 } |
| 510 SkColorFilter* cf = SkTableColorFilter::CreateARGB(NULL, ct, ct, ct); | 510 SkColorFilter* cf = SkTableColorFilter::CreateARGB(nullptr, ct, ct, ct); |
| 511 SkPaint paint; | 511 SkPaint paint; |
| 512 paint.setColorFilter(cf); | 512 paint.setColorFilter(cf); |
| 513 cf->unref(); | 513 cf->unref(); |
| 514 canvas->drawBitmap(source, 0, 0, &paint); | 514 canvas->drawBitmap(source, 0, 0, &paint); |
| 515 | 515 |
| 516 <a href="https://fiddle.skia.org/c/0d3d339543afa1b10c60f9826f264c3f"> | 516 <a href="https://fiddle.skia.org/c/0d3d339543afa1b10c60f9826f264c3f"> |
| 517 <img src="https://fiddle.skia.org/i/0d3d339543afa1b10c60f9826f264c3f_raster.
png"></a> | 517 <img src="https://fiddle.skia.org/i/0d3d339543afa1b10c60f9826f264c3f_raster.
png"></a> |
| 518 | 518 |
| 519 | 519 |
| 520 <span id="SkPathEffect"></span> | 520 <span id="SkPathEffect"></span> |
| (...skipping 215 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
| 736 SkPath path(star()); | 736 SkPath path(star()); |
| 737 canvas->drawPath(path, paint); | 737 canvas->drawPath(path, paint); |
| 738 } | 738 } |
| 739 | 739 |
| 740 <a href="https://fiddle.skia.org/c/e5f7861072893bd08c305a076bf32958"><img sr
c="https://fiddle.skia.org/i/e5f7861072893bd08c305a076bf32958_raster.png" alt=""
></a> | 740 <a href="https://fiddle.skia.org/c/e5f7861072893bd08c305a076bf32958"><img sr
c="https://fiddle.skia.org/i/e5f7861072893bd08c305a076bf32958_raster.png" alt=""
></a> |
| 741 | 741 |
| 742 <!-- | 742 <!-- |
| 743 <a href="https://fiddle.skia.org/c/"><img src="https://fiddle.skia.org/i/_ra
ster.png" alt=""></a> | 743 <a href="https://fiddle.skia.org/c/"><img src="https://fiddle.skia.org/i/_ra
ster.png" alt=""></a> |
| 744 --> | 744 --> |
| 745 | 745 |
| OLD | NEW |