Flutter Engine
The Flutter Engine
Loading...
Searching...
No Matches
Functions
Image.cpp File Reference
#include "include/core/SkCanvas.h"
#include "include/core/SkStream.h"
#include "include/core/SkSurface.h"
#include "modules/skottie/include/Skottie.h"
#include "tests/Test.h"

Go to the source code of this file.

Functions

 DEF_TEST (Skottie_Image_CustomTransform, r)
 

Function Documentation

◆ DEF_TEST()

DEF_TEST ( Skottie_Image_CustomTransform  ,
 
)

Definition at line 16 of file Image.cpp.

16 {
17 static constexpr char json[] =
18 R"({
19 "v": "5.2.1",
20 "w": 100,
21 "h": 100,
22 "fr": 10,
23 "ip": 0,
24 "op": 100,
25 "assets": [{
26 "id": "img_0",
27 "p" : "img_0.png",
28 "u" : "images/",
29 "w" : 100,
30 "h" : 50
31 }],
32 "layers": [
33 {
34 "ip": 0,
35 "op": 100,
36 "ty": 2,
37 "refId": "img_0",
38 "ks": {
39 "p": { "a": 0, "k": [0,25] }
40 }
41 }
42 ]
43 })";
44
45 SkMemoryStream stream(json, strlen(json));
46
47 static const struct TestData {
48 float t;
49 SkMatrix m;
50 SkColor c[5]; // expected color samples at center/L/T/R/B
51 } tests[] {
52 { 0, SkMatrix::I(),
53 {0xffff0000, 0xffff0000, 0xff00ff00, 0xffff0000, 0xff00ff00}},
54 { 1, SkMatrix::Translate(50,25) * SkMatrix::Scale(.5f,.5f) * SkMatrix::Translate(-50,-25),
55 {0xffff0000, 0xff00ff00, 0xff00ff00, 0xff00ff00, 0xff00ff00}},
56 { 2, SkMatrix::Translate(-50, 0),
57 {0xff00ff00, 0xffff0000, 0xff00ff00, 0xff00ff00, 0xff00ff00}},
58 { 3, SkMatrix::Translate(0, -25),
59 {0xff00ff00, 0xff00ff00, 0xffff0000, 0xff00ff00, 0xff00ff00}},
60 { 4, SkMatrix::Translate(50, 0),
61 {0xffff0000, 0xff00ff00, 0xff00ff00, 0xffff0000, 0xff00ff00}},
62 { 5, SkMatrix::Translate(0, 25),
63 {0xffff0000, 0xffff0000, 0xff00ff00, 0xffff0000, 0xffff0000}},
64 };
65
66 class TestImageAsset final : public ImageAsset {
67 public:
68 TestImageAsset(const TestData* tst, skiatest::Reporter* r)
69 : fTest(tst)
70 , fReporter(r) {
72 surf->getCanvas()->drawColor(0xffff0000);
73 fImage = surf->makeImageSnapshot();
74 }
75
76 private:
77 bool isMultiFrame() override { return true; }
78
79 FrameData getFrameData(float t) override {
80 REPORTER_ASSERT(fReporter, t == fTest->t);
81
82 return { fImage, SkSamplingOptions(), fTest++->m };
83 }
84
85 sk_sp<SkImage> fImage;
86 const TestData* fTest;
87 skiatest::Reporter* fReporter;
88 };
89
90 class TestResourceProvider final : public ResourceProvider {
91 public:
92 TestResourceProvider(const TestData* tst, skiatest::Reporter* r)
93 : fTest(tst)
94 , fReporter(r) {}
95
96 private:
97 sk_sp<ImageAsset> loadImageAsset(const char[], const char[], const char[]) const override {
98 return sk_make_sp<TestImageAsset>(fTest, fReporter);
99 }
100
101 const TestData* fTest;
102 skiatest::Reporter* fReporter;
103 };
104
105 auto anim = Animation::Builder()
106 .setResourceProvider(sk_make_sp<TestResourceProvider>(tests, r))
107 .make(&stream);
108
109 REPORTER_ASSERT(r, anim);
110
static BlurTest tests[]
Definition BlurTest.cpp:84
uint32_t SkColor
Definition SkColor.h:37
#define REPORTER_ASSERT(r, cond,...)
Definition Test.h:286
static SkMatrix Scale(SkScalar sx, SkScalar sy)
Definition SkMatrix.h:75
static SkMatrix Translate(SkScalar dx, SkScalar dy)
Definition SkMatrix.h:91
static const SkMatrix & I()
Builder & setResourceProvider(sk_sp< ResourceProvider >)
Definition Skottie.cpp:309
sk_sp< Animation > make(SkStream *)
Definition Skottie.cpp:349
virtual FrameData getFrameData(float t)
virtual bool isMultiFrame()=0
virtual sk_sp< ImageAsset > loadImageAsset(const char[], const char[], const char[]) const
SK_API sk_sp< SkSurface > Raster(const SkImageInfo &imageInfo, size_t rowBytes, const SkSurfaceProps *surfaceProps)
static SkImageInfo MakeN32Premul(int width, int height)