blob: 715693cce54bc24ad4e7746abb171e542cef3c63 [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;
scroggo@google.com284bf502012-07-17 16:10:34 +000037 virtual int numberOfReaders() const SK_OVERRIDE { return NumberOfTiles; }
scroggo@google.com72c96722012-06-06 21:07:10 +000038private:
39 enum {
40 NumberOfTiles = 10
41 };
42 SkGPipeReader fReaders[NumberOfTiles - 1];
43 SkBitmap fBitmaps[NumberOfTiles];
44 typedef PipeController INHERITED;
45};