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