1d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed/*
2d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed * Copyright 2014 Google Inc.
3d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed *
4d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed * Use of this source code is governed by a BSD-style license that can be
5d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed * found in the LICENSE file.
6d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed */
7d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed
8d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed#ifndef SkCanvasPriv_DEFINED
9d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed#define SkCanvasPriv_DEFINED
10d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed
11d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed#include "SkCanvas.h"
12d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed
137c9c9e4239b6e9dfec3469326312e4c9a2c164f9Mike Reedclass SkReadBuffer;
147c9c9e4239b6e9dfec3469326312e4c9a2c164f9Mike Reedclass SkWriteBuffer;
157c9c9e4239b6e9dfec3469326312e4c9a2c164f9Mike Reed
16d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reedclass SkAutoCanvasMatrixPaint : SkNoncopyable {
17d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reedpublic:
18a8d7f0b13cd4c6d773fcf055fe17db75d260fa05robertphillips    SkAutoCanvasMatrixPaint(SkCanvas*, const SkMatrix*, const SkPaint*, const SkRect& bounds);
19d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed    ~SkAutoCanvasMatrixPaint();
20d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed
21d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reedprivate:
22d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed    SkCanvas*   fCanvas;
23d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed    int         fSaveCount;
24d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed};
25d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed
267c9c9e4239b6e9dfec3469326312e4c9a2c164f9Mike Reedclass SkCanvasPriv {
277c9c9e4239b6e9dfec3469326312e4c9a2c164f9Mike Reedpublic:
287c9c9e4239b6e9dfec3469326312e4c9a2c164f9Mike Reed    // The lattice has pointers directly into the readbuffer
297c9c9e4239b6e9dfec3469326312e4c9a2c164f9Mike Reed    static bool ReadLattice(SkReadBuffer&, SkCanvas::Lattice*);
307c9c9e4239b6e9dfec3469326312e4c9a2c164f9Mike Reed
317c9c9e4239b6e9dfec3469326312e4c9a2c164f9Mike Reed    static void WriteLattice(SkWriteBuffer&, const SkCanvas::Lattice&);
327c9c9e4239b6e9dfec3469326312e4c9a2c164f9Mike Reed
337c9c9e4239b6e9dfec3469326312e4c9a2c164f9Mike Reed    // return the byte-size of the lattice, even if the buffer is null
347c9c9e4239b6e9dfec3469326312e4c9a2c164f9Mike Reed    // storage must be 4-byte aligned
357c9c9e4239b6e9dfec3469326312e4c9a2c164f9Mike Reed    static size_t WriteLattice(void* storage, const SkCanvas::Lattice&);
367c9c9e4239b6e9dfec3469326312e4c9a2c164f9Mike Reed};
377c9c9e4239b6e9dfec3469326312e4c9a2c164f9Mike Reed
38d5fa1a455aad61f3e99081fe7a9b065cb3b115c6reed#endif
39