diff options
Diffstat (limited to 'src/pipe/utils/SamplePipeControllers.h')
-rw-r--r-- | src/pipe/utils/SamplePipeControllers.h | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/src/pipe/utils/SamplePipeControllers.h b/src/pipe/utils/SamplePipeControllers.h new file mode 100644 index 0000000000..ace6274bae --- /dev/null +++ b/src/pipe/utils/SamplePipeControllers.h @@ -0,0 +1,43 @@ +/* + * Copyright 2012 Google Inc. + * + * Use of this source code is governed by a BSD-style license that can be + * found in the LICENSE file. + */ + +#include "SkBitmap.h" +#include "SkGPipe.h" + +class SkCanvas; + +class PipeController : public SkGPipeController { +public: + PipeController(SkCanvas* target); + virtual ~PipeController(); + virtual void* requestBlock(size_t minRequest, size_t* actual) SK_OVERRIDE; + virtual void notifyWritten(size_t bytes) SK_OVERRIDE; +protected: + const void* getData() { return (const char*) fBlock + fBytesWritten; } + SkGPipeReader fReader; +private: + void* fBlock; + size_t fBlockSize; + size_t fBytesWritten; + SkGPipeReader::Status fStatus; +}; + +//////////////////////////////////////////////////////////////////////////////// + +class TiledPipeController : public PipeController { +public: + TiledPipeController(const SkBitmap&); + virtual ~TiledPipeController() {}; + virtual void notifyWritten(size_t bytes) SK_OVERRIDE; +private: + enum { + NumberOfTiles = 10 + }; + SkGPipeReader fReaders[NumberOfTiles - 1]; + SkBitmap fBitmaps[NumberOfTiles]; + typedef PipeController INHERITED; +}; |