blob: 0bf81c6df0e218b1e902b1abd5a8b5bae6e82eb5 [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;
scroggo@google.comb073d922012-06-08 15:35:03 +000012class SkMatrix;
scroggo@google.com72c96722012-06-06 21:07:10 +000013
14class PipeController : public SkGPipeController {
15public:
16 PipeController(SkCanvas* target);
17 virtual ~PipeController();
18 virtual void* requestBlock(size_t minRequest, size_t* actual) SK_OVERRIDE;
19 virtual void notifyWritten(size_t bytes) SK_OVERRIDE;
20protected:
21 const void* getData() { return (const char*) fBlock + fBytesWritten; }
22 SkGPipeReader fReader;
23private:
24 void* fBlock;
25 size_t fBlockSize;
26 size_t fBytesWritten;
27 SkGPipeReader::Status fStatus;
28};
29
30////////////////////////////////////////////////////////////////////////////////
31
32class TiledPipeController : public PipeController {
33public:
scroggo@google.comb073d922012-06-08 15:35:03 +000034 TiledPipeController(const SkBitmap&, const SkMatrix* initialMatrix = NULL);
scroggo@google.com72c96722012-06-06 21:07:10 +000035 virtual ~TiledPipeController() {};
36 virtual void notifyWritten(size_t bytes) SK_OVERRIDE;
37private:
38 enum {
39 NumberOfTiles = 10
40 };
41 SkGPipeReader fReaders[NumberOfTiles - 1];
42 SkBitmap fBitmaps[NumberOfTiles];
43 typedef PipeController INHERITED;
44};