Options
These globals are now defined:
double duration; // The requested duration of the animation. double frame; // A value in [0, 1] of where we are in the animation.
This global is now defined:
GrBackendRenderTarget backEndRenderTarget;
GrBackendTexture backEndTextureRenderTarget;
Optional source image
These globals are now defined:
SkBitmap source; sk_sp<SkImage> image; GrBackendTexture backEndTexture; // GPU Only.
Note:
Adding comments with SK_FOLD_START and SK_FOLD_END creates foldable code
blocks.
These blocks will be folded by default and are useful for highlighting specific lines of code.
You can also use the keyboard shortcuts Ctrl+S and Ctrl+E in the code editor to set them.
These blocks will be folded by default and are useful for highlighting specific lines of code.
You can also use the keyboard shortcuts Ctrl+S and Ctrl+E in the code editor to set them.
xxxxxxxxxx
40
void paintOctopus(float x, float y, int size_base, SkColor color, SkCanvas* canvas) {
// Set up the paint to draw the head and legs
SkPaint paint;
paint.setAntiAlias(true);
paint.setColor(color);
int radius = 3 * size_base;
// Draw the big head
canvas->drawCircle(x, y, radius, paint);
// Draw 8 small legs
for (int leg = 0; leg < 8; ++leg) {
canvas->drawCircle(x - radius + (2 * radius / 7.5 * leg),
y + radius - pow(abs(4 - leg), 2), size_base / 2 + 2, paint);
}
// Make the color a bit lighter for the eyes
paint.setColor(SkColorSetRGB(std::min(255u, SkColorGetR(color) + 20),
std::min(255u, SkColorGetG(color) + 20),
std::min(255u, SkColorGetB(color) + 20)));
// Draw the left and right eye
canvas->drawCircle(x - size_base, y + size_base, size_base / 2, paint);
canvas->drawCircle(x + size_base, y + size_base, size_base / 2, paint);
}
void draw(SkCanvas* canvas) {
// Some helper functions to create random coordinates, sizes, and colors
std::default_random_engine rng;
const auto randScalar = [&rng](SkScalar min, SkScalar max) -> SkScalar {
return std::uniform_real_distribution<SkScalar>(min, max)(rng);
};
const auto randOpaqueColor = [&rng]() -> SkColor {
return std::uniform_int_distribution<uint32_t>(0, 0xFFFFFF)(rng) | 0xFF000000;
};
constexpr int numOctopods = 400;
for (int i = 0; i < numOctopods; ++i) {
paintOctopus(randScalar(0, 256), randScalar(0, 256),
randScalar(6, 12), randOpaqueColor(), canvas);
}
}