| /* |
| * Copyright 2014 Google Inc. |
| * |
| * Use of this source code is governed by a BSD-style license that can be |
| * found in the LICENSE file. |
| */ |
| |
| #ifndef SkCanvasPriv_DEFINED |
| #define SkCanvasPriv_DEFINED |
| |
| #include "include/core/SkCanvas.h" |
| #include "include/private/SkNoncopyable.h" |
| |
| class SkReadBuffer; |
| class SkWriteBuffer; |
| |
| class SkAutoCanvasMatrixPaint : SkNoncopyable { |
| public: |
| SkAutoCanvasMatrixPaint(SkCanvas*, const SkMatrix*, const SkPaint*, const SkRect& bounds); |
| ~SkAutoCanvasMatrixPaint(); |
| |
| private: |
| SkCanvas* fCanvas; |
| int fSaveCount; |
| }; |
| |
| class SkCanvasPriv { |
| public: |
| enum { |
| kDontClipToLayer_SaveLayerFlag = SkCanvas::kDontClipToLayer_PrivateSaveLayerFlag, |
| }; |
| |
| // The lattice has pointers directly into the readbuffer |
| static bool ReadLattice(SkReadBuffer&, SkCanvas::Lattice*); |
| |
| static void WriteLattice(SkWriteBuffer&, const SkCanvas::Lattice&); |
| |
| // return the byte-size of the lattice, even if the buffer is null |
| // storage must be 4-byte aligned |
| static size_t WriteLattice(void* storage, const SkCanvas::Lattice&); |
| |
| static SkCanvas::SaveLayerFlags LegacySaveFlagsToSaveLayerFlags(uint32_t legacySaveFlags); |
| |
| static int SaveBehind(SkCanvas* canvas, const SkRect* subset) { |
| return canvas->only_axis_aligned_saveBehind(subset); |
| } |
| static void DrawBehind(SkCanvas* canvas, const SkPaint& paint) { |
| canvas->drawClippedToSaveBehind(paint); |
| } |
| |
| // The experimental_DrawEdgeAAImageSet API accepts separate dstClips and preViewMatrices arrays, |
| // where entries refer into them, but no explicit size is provided. Given a set of entries, |
| // computes the minimum length for these arrays that would provide index access errors. |
| static void GetDstClipAndMatrixCounts(const SkCanvas::ImageSetEntry set[], int count, |
| int* totalDstClipCount, int* totalMatrixCount); |
| }; |
| |
| #endif |