blob: ace6274baecf0578497b7dc8ea0c6d567b0910f0 [file] [log] [blame]
scroggo@google.com72c96722012-06-06 21:07:10 +00001/*
2 * Copyright 2012 Google Inc.
3 *
4 * Use of this source code is governed by a BSD-style license that can be
5 * found in the LICENSE file.
6 */
7
8#include "SkBitmap.h"
9#include "SkGPipe.h"
10
11class SkCanvas;
12
13class PipeController : public SkGPipeController {
14public:
15 PipeController(SkCanvas* target);
16 virtual ~PipeController();
17 virtual void* requestBlock(size_t minRequest, size_t* actual) SK_OVERRIDE;
18 virtual void notifyWritten(size_t bytes) SK_OVERRIDE;
19protected:
20 const void* getData() { return (const char*) fBlock + fBytesWritten; }
21 SkGPipeReader fReader;
22private:
23 void* fBlock;
24 size_t fBlockSize;
25 size_t fBytesWritten;
26 SkGPipeReader::Status fStatus;
27};
28
29////////////////////////////////////////////////////////////////////////////////
30
31class TiledPipeController : public PipeController {
32public:
33 TiledPipeController(const SkBitmap&);
34 virtual ~TiledPipeController() {};
35 virtual void notifyWritten(size_t bytes) SK_OVERRIDE;
36private:
37 enum {
38 NumberOfTiles = 10
39 };
40 SkGPipeReader fReaders[NumberOfTiles - 1];
41 SkBitmap fBitmaps[NumberOfTiles];
42 typedef PipeController INHERITED;
43};