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
26
static void DeleteCallback(void*, void* context) {
delete (char*) context;
}
class CustomAllocator : public SkRasterHandleAllocator {
public:
bool allocHandle(const SkImageInfo& info, Rec* rec) override {
char* context = new char[4]{'s', 'k', 'i', 'a'};
rec->fReleaseProc = DeleteCallback;
rec->fReleaseCtx = context;
rec->fHandle = context;
rec->fPixels = context;
rec->fRowBytes = 4;
return true;
}
void updateHandle(Handle handle, const SkMatrix& ctm, const SkIRect& clip_bounds) override {
// apply canvas matrix and clip to custom environment
}
};
void draw(SkCanvas* canvas) {
const SkImageInfo info = SkImageInfo::MakeN32Premul(1, 1);
std::unique_ptr<SkCanvas> c2 =
SkRasterHandleAllocator::MakeCanvas(std::make_unique<CustomAllocator>(), info);
char* context = (char*) c2->accessTopRasterHandle();
SkDebugf("context = %.4s\n", context);
}