124519371cb541db6f59d903d21878ed9c45eb549scroggo/*
224519371cb541db6f59d903d21878ed9c45eb549scroggo * Copyright 2014 Google Inc.
324519371cb541db6f59d903d21878ed9c45eb549scroggo *
424519371cb541db6f59d903d21878ed9c45eb549scroggo * Use of this source code is governed by a BSD-style license that can be
524519371cb541db6f59d903d21878ed9c45eb549scroggo * found in the LICENSE file.
624519371cb541db6f59d903d21878ed9c45eb549scroggo */
724519371cb541db6f59d903d21878ed9c45eb549scroggo
824519371cb541db6f59d903d21878ed9c45eb549scroggo#ifndef CanvasStateHelpers_DEFINED
924519371cb541db6f59d903d21878ed9c45eb549scroggo#define CanvasStateHelpers_DEFINED
1024519371cb541db6f59d903d21878ed9c45eb549scroggo
1124519371cb541db6f59d903d21878ed9c45eb549scroggo#include "SkTypes.h"
1224519371cb541db6f59d903d21878ed9c45eb549scroggo
1324519371cb541db6f59d903d21878ed9c45eb549scroggo#ifdef SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG
1424519371cb541db6f59d903d21878ed9c45eb549scroggoclass SkCanvas;
1524519371cb541db6f59d903d21878ed9c45eb549scroggoclass SkCanvasState;
1624519371cb541db6f59d903d21878ed9c45eb549scroggoclass SkRegion;
1724519371cb541db6f59d903d21878ed9c45eb549scroggo
1824519371cb541db6f59d903d21878ed9c45eb549scroggo/*
1924519371cb541db6f59d903d21878ed9c45eb549scroggo *  Helper function to perform drawing to an SkCanvas. Used by both
2024519371cb541db6f59d903d21878ed9c45eb549scroggo *  test_complex_layers and complex_layers_draw_from_canvas_state.
2124519371cb541db6f59d903d21878ed9c45eb549scroggo */
2224519371cb541db6f59d903d21878ed9c45eb549scroggovoid complex_layers_draw(SkCanvas* canvas, float left, float top,
2324519371cb541db6f59d903d21878ed9c45eb549scroggo                         float right, float bottom, int32_t spacer);
2424519371cb541db6f59d903d21878ed9c45eb549scroggo
2524519371cb541db6f59d903d21878ed9c45eb549scroggo/*
2624519371cb541db6f59d903d21878ed9c45eb549scroggo *  Create an SkCanvas from state and draw to it. Return true on success.
2724519371cb541db6f59d903d21878ed9c45eb549scroggo *
2824519371cb541db6f59d903d21878ed9c45eb549scroggo *  Used by test_complex_layers test in CanvasStateTest. Marked as extern
2924519371cb541db6f59d903d21878ed9c45eb549scroggo *  so it can be called from a separate library.
3024519371cb541db6f59d903d21878ed9c45eb549scroggo */
3124519371cb541db6f59d903d21878ed9c45eb549scroggoextern "C" bool complex_layers_draw_from_canvas_state(SkCanvasState* state,
3224519371cb541db6f59d903d21878ed9c45eb549scroggo        float left, float top, float right, float bottom, int32_t spacer);
3324519371cb541db6f59d903d21878ed9c45eb549scroggo
3424519371cb541db6f59d903d21878ed9c45eb549scroggo/*
3524519371cb541db6f59d903d21878ed9c45eb549scroggo *  Helper function to perform drawing to an SkCanvas. Used both by test_complex_clips
3624519371cb541db6f59d903d21878ed9c45eb549scroggo *  and complex_clips_draw_from_canvas_state.
3724519371cb541db6f59d903d21878ed9c45eb549scroggo */
3824519371cb541db6f59d903d21878ed9c45eb549scroggovoid complex_clips_draw(SkCanvas* canvas, int32_t left, int32_t top,
3924519371cb541db6f59d903d21878ed9c45eb549scroggo        int32_t right, int32_t bottom, int32_t clipOp, const SkRegion& localRegion);
4024519371cb541db6f59d903d21878ed9c45eb549scroggo
4124519371cb541db6f59d903d21878ed9c45eb549scroggo/*
4224519371cb541db6f59d903d21878ed9c45eb549scroggo *  Create an SkCanvas from state and draw to it. Return true on success.
4324519371cb541db6f59d903d21878ed9c45eb549scroggo *
4424519371cb541db6f59d903d21878ed9c45eb549scroggo *  Used by test_complex_clips test in CanvasStateTest. Marked as extern
4524519371cb541db6f59d903d21878ed9c45eb549scroggo *  so it can be called from a separate library.
4624519371cb541db6f59d903d21878ed9c45eb549scroggo */
4724519371cb541db6f59d903d21878ed9c45eb549scroggoextern "C" bool complex_clips_draw_from_canvas_state(SkCanvasState* state,
4824519371cb541db6f59d903d21878ed9c45eb549scroggo        int32_t left, int32_t top, int32_t right, int32_t bottom, int32_t clipOp,
4924519371cb541db6f59d903d21878ed9c45eb549scroggo        int32_t regionRects, int32_t* rectCoords);
5024519371cb541db6f59d903d21878ed9c45eb549scroggo
5124519371cb541db6f59d903d21878ed9c45eb549scroggo#endif // SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG
5224519371cb541db6f59d903d21878ed9c45eb549scroggo#endif // CanvasStateHelpers_DEFINED
53