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 CanvasStateHelpers_DEFINED
9#define CanvasStateHelpers_DEFINED
10
11#include "SkTypes.h"
12
13#ifdef SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG
14class SkCanvas;
15class SkCanvasState;
16class SkRegion;
17
18/*
19 *  Helper function to perform drawing to an SkCanvas. Used by both
20 *  test_complex_layers and complex_layers_draw_from_canvas_state.
21 */
22void complex_layers_draw(SkCanvas* canvas, float left, float top,
23                         float right, float bottom, int32_t spacer);
24
25/*
26 *  Create an SkCanvas from state and draw to it. Return true on success.
27 *
28 *  Used by test_complex_layers test in CanvasStateTest. Marked as extern
29 *  so it can be called from a separate library.
30 */
31extern "C" bool complex_layers_draw_from_canvas_state(SkCanvasState* state,
32        float left, float top, float right, float bottom, int32_t spacer);
33
34/*
35 *  Helper function to perform drawing to an SkCanvas. Used both by test_complex_clips
36 *  and complex_clips_draw_from_canvas_state.
37 */
38void complex_clips_draw(SkCanvas* canvas, int32_t left, int32_t top,
39        int32_t right, int32_t bottom, int32_t clipOp, const SkRegion& localRegion);
40
41/*
42 *  Create an SkCanvas from state and draw to it. Return true on success.
43 *
44 *  Used by test_complex_clips test in CanvasStateTest. Marked as extern
45 *  so it can be called from a separate library.
46 */
47extern "C" bool complex_clips_draw_from_canvas_state(SkCanvasState* state,
48        int32_t left, int32_t top, int32_t right, int32_t bottom, int32_t clipOp,
49        int32_t regionRects, int32_t* rectCoords);
50
51#endif // SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG
52#endif // CanvasStateHelpers_DEFINED
53