/* * Copyright 2016 Google Inc. * * Use of this source code is governed by a BSD-style license that can be * found in the LICENSE file. */ #ifndef SkRasterHandleAllocator_DEFINED #define SkRasterHandleAllocator_DEFINED #include "include/core/SkImageInfo.h" class SkBitmap; class SkCanvas; class SkMatrix; class SkSurfaceProps; /** * If a client wants to control the allocation of raster layers in a canvas, it should subclass * SkRasterHandleAllocator. This allocator performs two tasks: * 1. controls how the memory for the pixels is allocated * 2. associates a "handle" to a private object that can track the matrix/clip of the SkCanvas * * This example allocates a canvas, and defers to the allocator to create the base layer. * * std::unique_ptr<SkCanvas> canvas = SkRasterHandleAllocator::MakeCanvas( * SkImageInfo::Make(...), * std::make_unique<MySubclassRasterHandleAllocator>(...), * nullptr); * * If you have already allocated the base layer (and its handle, release-proc etc.) then you * can pass those in using the last parameter to MakeCanvas(). * * Regardless of how the base layer is allocated, each time canvas->saveLayer() is called, * your allocator's allocHandle() will be called. */ class SK_API SkRasterHandleAllocator { … }; #endif