1cb93a386Sopenharmony_ci/*
2cb93a386Sopenharmony_ci * Copyright 2014 Google Inc.
3cb93a386Sopenharmony_ci *
4cb93a386Sopenharmony_ci * Use of this source code is governed by a BSD-style license that can be
5cb93a386Sopenharmony_ci * found in the LICENSE file.
6cb93a386Sopenharmony_ci */
7cb93a386Sopenharmony_ci
8cb93a386Sopenharmony_ci#ifndef CanvasStateHelpers_DEFINED
9cb93a386Sopenharmony_ci#define CanvasStateHelpers_DEFINED
10cb93a386Sopenharmony_ci
11cb93a386Sopenharmony_ci#include "include/core/SkTypes.h"
12cb93a386Sopenharmony_ci
13cb93a386Sopenharmony_ci// See CanvasStateTest. These functions are either linked in to 'dm' directly (when this flag is
14cb93a386Sopenharmony_ci// not defined), or built in a shared library that is dlopened by the test. In that case, they
15cb93a386Sopenharmony_ci// should not be visible in 'dm', but the shared library will not have this flag set and compiles
16cb93a386Sopenharmony_ci// them as expected.
17cb93a386Sopenharmony_ci#if !defined(SK_TEST_CANVAS_STATE_CROSS_LIBRARY)
18cb93a386Sopenharmony_ci
19cb93a386Sopenharmony_ciclass SkCanvas;
20cb93a386Sopenharmony_ciclass SkCanvasState;
21cb93a386Sopenharmony_ciclass SkRegion;
22cb93a386Sopenharmony_ci
23cb93a386Sopenharmony_ci// #if defined(SK_BUILD_FOR_WIN)
24cb93a386Sopenharmony_ci// #define EXPORT _declspec(dllexport)
25cb93a386Sopenharmony_ci// #else
26cb93a386Sopenharmony_ci#define EXPORT
27cb93a386Sopenharmony_ci// #endif
28cb93a386Sopenharmony_ci
29cb93a386Sopenharmony_ci/*
30cb93a386Sopenharmony_ci *  Helper function to perform drawing to an SkCanvas. Used by both
31cb93a386Sopenharmony_ci *  test_complex_layers and complex_layers_draw_from_canvas_state.
32cb93a386Sopenharmony_ci */
33cb93a386Sopenharmony_civoid complex_layers_draw(SkCanvas* canvas, float left, float top,
34cb93a386Sopenharmony_ci                         float right, float bottom, int32_t spacer);
35cb93a386Sopenharmony_ci
36cb93a386Sopenharmony_ci/*
37cb93a386Sopenharmony_ci *  Create an SkCanvas from state and draw to it. Return true on success.
38cb93a386Sopenharmony_ci *
39cb93a386Sopenharmony_ci *  Used by test_complex_layers test in CanvasStateTest. Marked as extern
40cb93a386Sopenharmony_ci *  so it can be called from a separate library.
41cb93a386Sopenharmony_ci */
42cb93a386Sopenharmony_ciextern "C" bool EXPORT complex_layers_draw_from_canvas_state(SkCanvasState* state,
43cb93a386Sopenharmony_ci        float left, float top, float right, float bottom, int32_t spacer);
44cb93a386Sopenharmony_ci
45cb93a386Sopenharmony_ci/*
46cb93a386Sopenharmony_ci *  Helper function to perform drawing to an SkCanvas. Used both by test_complex_clips
47cb93a386Sopenharmony_ci *  and complex_clips_draw_from_canvas_state.
48cb93a386Sopenharmony_ci */
49cb93a386Sopenharmony_civoid complex_clips_draw(SkCanvas* canvas, int32_t left, int32_t top,
50cb93a386Sopenharmony_ci        int32_t right, int32_t bottom, int32_t clipOp, const SkRegion& localRegion);
51cb93a386Sopenharmony_ci
52cb93a386Sopenharmony_ci/*
53cb93a386Sopenharmony_ci *  Create an SkCanvas from state and draw to it. Return true on success.
54cb93a386Sopenharmony_ci *
55cb93a386Sopenharmony_ci *  Used by test_complex_clips test in CanvasStateTest. Marked as extern
56cb93a386Sopenharmony_ci *  so it can be called from a separate library.
57cb93a386Sopenharmony_ci */
58cb93a386Sopenharmony_ciextern "C" bool EXPORT complex_clips_draw_from_canvas_state(SkCanvasState* state,
59cb93a386Sopenharmony_ci        int32_t left, int32_t top, int32_t right, int32_t bottom, int32_t clipOp,
60cb93a386Sopenharmony_ci        int32_t regionRects, int32_t* rectCoords);
61cb93a386Sopenharmony_ci
62cb93a386Sopenharmony_ci#endif // SK_TEST_CANVAS_STATE_CROSS_LIBRARY
63cb93a386Sopenharmony_ci#endif // CanvasStateHelpers_DEFINED
64