deno.land / x / skia_canvas@0.5.8 / native / src / pattern.cpp

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
#include "include/pattern.hpp"
extern "C" { SKIA_EXPORT sk_pattern* sk_pattern_new_image(SkImage* image, int repeat) { sk_pattern* pattern = new sk_pattern(); auto bitmap = new SkBitmap(); bitmap->allocPixels(SkImageInfo::MakeN32Premul(image->width(), image->height())); image->readPixels(bitmap->pixmap(), 0, 0); pattern->bitmap = bitmap; SkTileMode tmx, tmy; switch ((PatternRepeat)repeat) { case PatternRepeat::kRepeat: tmx = SkTileMode::kRepeat; tmy = SkTileMode::kRepeat; break; case PatternRepeat::kRepeatX: tmx = SkTileMode::kRepeat; tmy = SkTileMode::kClamp; break; case PatternRepeat::kRepeatY: tmx = SkTileMode::kClamp; tmy = SkTileMode::kRepeat; break; case PatternRepeat::kNoRepeat: tmx = SkTileMode::kClamp; tmy = SkTileMode::kClamp; break; } pattern->tmx = tmx; pattern->tmy = tmy; pattern->ts = SkMatrix::I(); return pattern; } SKIA_EXPORT void sk_pattern_set_transform( sk_pattern* pattern, double a, double b, double c, double d, double e, double f ) { pattern->ts = SkMatrix::MakeAll(a, b, c, d, e, f, 0, 0, 1); } SKIA_EXPORT void sk_pattern_destroy(sk_pattern* pattern) { delete pattern->bitmap; delete pattern; } sk_sp<SkShader> sk_pattern_to_shader(sk_pattern* pattern) { auto shader = pattern->bitmap->makeShader(pattern->tmx, pattern->tmy, SkSamplingOptions({1.0f / 3.0f, 1.0f / 3.0f}), &pattern->ts); shader->ref(); return shader; }}
skia_canvas

Version Info

Tagged at
8 months ago