1/*
2 * Copyright 2014 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#ifndef SkCanvasPriv_DEFINED
9#define SkCanvasPriv_DEFINED
10
11#include "SkCanvas.h"
12
13class SkReadBuffer;
14class SkWriteBuffer;
15
16class SkAutoCanvasMatrixPaint : SkNoncopyable {
17public:
18    SkAutoCanvasMatrixPaint(SkCanvas*, const SkMatrix*, const SkPaint*, const SkRect& bounds);
19    ~SkAutoCanvasMatrixPaint();
20
21private:
22    SkCanvas*   fCanvas;
23    int         fSaveCount;
24};
25
26class SkCanvasPriv {
27public:
28    // The lattice has pointers directly into the readbuffer
29    static bool ReadLattice(SkReadBuffer&, SkCanvas::Lattice*);
30
31    static void WriteLattice(SkWriteBuffer&, const SkCanvas::Lattice&);
32
33    // return the byte-size of the lattice, even if the buffer is null
34    // storage must be 4-byte aligned
35    static size_t WriteLattice(void* storage, const SkCanvas::Lattice&);
36};
37
38#endif
39