3021795041
Several things are accomplished as part of this: 1. The canvas_state_lib build target is brought back so that we can actually test the canvas state sharing across library boundaries. 2. The canvas state helper functions are updated to work with DLLs (confirmed tests pass on Windows in cross library mode) 3. The tests now always run, and the cross-state define only changes what version of the helper functions are used 4. Updated the dlopen code in the test to use the SkOSLibrary ports instead of calling dlopen/dlclose directly. 5. Fix bugs in SkCanvasStateUtils that were uncovered as part of always running these tests. 6. Switches the define away from SK_SUPPORT_LEGACY_CLIPTOLAYERFLAG to SK_TEST_CANVAS_STATE_CROSS_LIBRARY, since these tests are not strictly speaking testing the unclipped layer feature. Change-Id: Id4ae41e4bc3fb8227367deac899878ecf9d7b98e Reviewed-on: https://skia-review.googlesource.com/c/skia/+/341003 Reviewed-by: Derek Sollenberger <djsollen@google.com> Commit-Queue: Michael Ludwig <michaelludwig@google.com>
64 lines
2.2 KiB
C++
64 lines
2.2 KiB
C++
/*
|
|
* 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 CanvasStateHelpers_DEFINED
|
|
#define CanvasStateHelpers_DEFINED
|
|
|
|
#include "include/core/SkTypes.h"
|
|
|
|
// See CanvasStateTest. These functions are either linked in to 'dm' directly (when this flag is
|
|
// not defined), or built in a shared library that is dlopened by the test. In that case, they
|
|
// should not be visible in 'dm', but the shared library will not have this flag set and compiles
|
|
// them as expected.
|
|
#if !defined(SK_TEST_CANVAS_STATE_CROSS_LIBRARY)
|
|
|
|
class SkCanvas;
|
|
class SkCanvasState;
|
|
class SkRegion;
|
|
|
|
#if defined(SK_BUILD_FOR_WIN)
|
|
#define EXPORT _declspec(dllexport)
|
|
#else
|
|
#define EXPORT
|
|
#endif
|
|
|
|
/*
|
|
* Helper function to perform drawing to an SkCanvas. Used by both
|
|
* test_complex_layers and complex_layers_draw_from_canvas_state.
|
|
*/
|
|
void complex_layers_draw(SkCanvas* canvas, float left, float top,
|
|
float right, float bottom, int32_t spacer);
|
|
|
|
/*
|
|
* Create an SkCanvas from state and draw to it. Return true on success.
|
|
*
|
|
* Used by test_complex_layers test in CanvasStateTest. Marked as extern
|
|
* so it can be called from a separate library.
|
|
*/
|
|
extern "C" bool EXPORT complex_layers_draw_from_canvas_state(SkCanvasState* state,
|
|
float left, float top, float right, float bottom, int32_t spacer);
|
|
|
|
/*
|
|
* Helper function to perform drawing to an SkCanvas. Used both by test_complex_clips
|
|
* and complex_clips_draw_from_canvas_state.
|
|
*/
|
|
void complex_clips_draw(SkCanvas* canvas, int32_t left, int32_t top,
|
|
int32_t right, int32_t bottom, int32_t clipOp, const SkRegion& localRegion);
|
|
|
|
/*
|
|
* Create an SkCanvas from state and draw to it. Return true on success.
|
|
*
|
|
* Used by test_complex_clips test in CanvasStateTest. Marked as extern
|
|
* so it can be called from a separate library.
|
|
*/
|
|
extern "C" bool EXPORT complex_clips_draw_from_canvas_state(SkCanvasState* state,
|
|
int32_t left, int32_t top, int32_t right, int32_t bottom, int32_t clipOp,
|
|
int32_t regionRects, int32_t* rectCoords);
|
|
|
|
#endif // SK_TEST_CANVAS_STATE_CROSS_LIBRARY
|
|
#endif // CanvasStateHelpers_DEFINED
|