Skip to content
This repository was archived by the owner on Feb 25, 2025. It is now read-only.

Commit 49f84db

Browse files
committed
clean-up and docs
1 parent 0b8969b commit 49f84db

File tree

3 files changed

+67
-130
lines changed

3 files changed

+67
-130
lines changed

lib/web_ui/lib/src/engine/skwasm/skwasm_impl/paint.dart

Lines changed: 27 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -11,18 +11,24 @@ import 'package:ui/ui.dart' as ui;
1111
class SkwasmPaint implements ui.Paint {
1212
SkwasmPaint();
1313

14-
// TODO(yjbanov): turns this into a stack-allocated callback-based API.
14+
/// Creates the C++ side paint object based on the current state of this
15+
/// paint object, and returns it with ownership.
16+
///
17+
/// It is the responsibility of the caller to dispose of the returned handle
18+
/// when it's no longer needed.
1519
PaintHandle toRawPaint() {
16-
final rawPaint = paintCreate();
17-
paintSetAntiAlias(rawPaint, isAntiAlias);
18-
paintSetBlendMode(rawPaint, blendMode.index);
19-
paintSetStyle(rawPaint, style.index);
20-
paintSetStrokeWidth(rawPaint, strokeWidth);
21-
paintSetStrokeCap(rawPaint, strokeCap.index);
22-
paintSetStrokeJoin(rawPaint, strokeJoin.index);
23-
paintSetColorInt(rawPaint, _colorValue);
24-
paintSetMiterLimit(rawPaint, strokeMiterLimit);
25-
_setEffectiveColorFilter(rawPaint);
20+
final rawPaint = paintCreate(
21+
isAntiAlias,
22+
blendMode.index,
23+
_colorValue,
24+
style.index,
25+
strokeWidth,
26+
strokeCap.index,
27+
strokeJoin.index,
28+
strokeMiterLimit,
29+
);
30+
31+
_maybeSetEffectiveColorFilter(rawPaint);
2632

2733
final shaderHandle = _shader?.handle;
2834
if (shaderHandle != null) {
@@ -46,12 +52,18 @@ class SkwasmPaint implements ui.Paint {
4652
return rawPaint;
4753
}
4854

49-
void _setEffectiveColorFilter(Pointer<RawPaint> handle) {
50-
final SkwasmColorFilter? nativeFilter = _colorFilter != null
51-
? SkwasmColorFilter.fromEngineColorFilter(_colorFilter!) : null;
55+
/// If `invertColors` is true or `colorFilter` is not null, sets the
56+
/// appropriate Skia color filter. Otherwise, does nothing.
57+
void _maybeSetEffectiveColorFilter(Pointer<RawPaint> handle) {
58+
final nativeFilter = _colorFilter != null
59+
? SkwasmColorFilter.fromEngineColorFilter(_colorFilter!)
60+
: null;
5261
if (invertColors) {
5362
if (nativeFilter != null) {
54-
final SkwasmColorFilter composedFilter = SkwasmColorFilter.composed(_invertColorFilter, nativeFilter);
63+
final composedFilter = SkwasmColorFilter.composed(
64+
_invertColorFilter,
65+
nativeFilter,
66+
);
5567
nativeFilter.dispose();
5668
paintSetColorFilter(handle, composedFilter.handle);
5769
composedFilter.dispose();
@@ -61,8 +73,6 @@ class SkwasmPaint implements ui.Paint {
6173
} else if (nativeFilter != null) {
6274
paintSetColorFilter(handle, nativeFilter.handle);
6375
nativeFilter.dispose();
64-
} else {
65-
paintSetColorFilter(handle, nullptr);
6676
}
6777
}
6878

lib/web_ui/lib/src/engine/skwasm/skwasm_impl/raw/raw_paint.dart

Lines changed: 22 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -13,57 +13,32 @@ final class RawPaint extends Opaque {}
1313

1414
typedef PaintHandle = Pointer<RawPaint>;
1515

16-
@Native<PaintHandle Function()>(symbol: 'paint_create', isLeaf: true)
17-
external PaintHandle paintCreate();
16+
typedef _PaintCreateInitSignature = PaintHandle Function(
17+
Bool,
18+
Int,
19+
Int,
20+
Int,
21+
Float,
22+
Int,
23+
Int,
24+
Float,
25+
);
26+
27+
@Native<_PaintCreateInitSignature>(symbol: 'paint_create', isLeaf: true)
28+
external PaintHandle paintCreate(
29+
bool isAntiAlias,
30+
int blendMode,
31+
int color,
32+
int style,
33+
double strokeWidth,
34+
int strokeCap,
35+
int strokeJoin,
36+
double strokeMiterLimit,
37+
);
1838

1939
@Native<Void Function(PaintHandle)>(symbol: 'paint_dispose', isLeaf: true)
2040
external void paintDispose(PaintHandle paint);
2141

22-
@Native<Void Function(PaintHandle, Int)>(symbol: 'paint_setBlendMode', isLeaf: true)
23-
external void paintSetBlendMode(PaintHandle paint, int blendMode);
24-
25-
@Native<Void Function(PaintHandle, Int)>(symbol: 'paint_setStyle', isLeaf: true)
26-
external void paintSetStyle(PaintHandle paint, int paintStyle);
27-
28-
@Native<Int Function(PaintHandle)>(symbol: 'paint_getStyle', isLeaf: true)
29-
external int paintGetStyle(PaintHandle paint);
30-
31-
@Native<Void Function(PaintHandle, Float)>(symbol: 'paint_setStrokeWidth', isLeaf: true)
32-
external void paintSetStrokeWidth(PaintHandle paint, double strokeWidth);
33-
34-
@Native<Float Function(PaintHandle)>(symbol: 'paint_getStrokeWidth', isLeaf: true)
35-
external double paintGetStrokeWidth(PaintHandle paint);
36-
37-
@Native<Void Function(PaintHandle, Int)>(symbol: 'paint_setStrokeCap', isLeaf: true)
38-
external void paintSetStrokeCap(PaintHandle paint, int cap);
39-
40-
@Native<Int Function(PaintHandle)>(symbol: 'paint_getStrokeCap', isLeaf: true)
41-
external int paintGetStrokeCap(PaintHandle paint);
42-
43-
@Native<Void Function(PaintHandle, Int)>(symbol: 'paint_setStrokeJoin', isLeaf: true)
44-
external void paintSetStrokeJoin(PaintHandle paint, int join);
45-
46-
@Native<Int Function(PaintHandle)>(symbol: 'paint_getStrokeJoin', isLeaf: true)
47-
external int paintGetStrokeJoin(PaintHandle paint);
48-
49-
@Native<Void Function(PaintHandle, Bool)>(symbol: 'paint_setAntiAlias', isLeaf: true)
50-
external void paintSetAntiAlias(PaintHandle paint, bool antiAlias);
51-
52-
@Native<Bool Function(PaintHandle)>(symbol: 'paint_getAntiAlias', isLeaf: true)
53-
external bool paintGetAntiAlias(PaintHandle paint);
54-
55-
@Native<Void Function(PaintHandle, Uint32)>(symbol: 'paint_setColorInt', isLeaf: true)
56-
external void paintSetColorInt(PaintHandle paint, int color);
57-
58-
@Native<Uint32 Function(PaintHandle)>(symbol: 'paint_getColorInt', isLeaf: true)
59-
external int paintGetColorInt(PaintHandle paint);
60-
61-
@Native<Void Function(PaintHandle, Float)>(symbol: 'paint_setMiterLimit', isLeaf: true)
62-
external void paintSetMiterLimit(PaintHandle paint, double miterLimit);
63-
64-
@Native<Float Function(PaintHandle)>(symbol: 'paint_getMiterLimit', isLeaf: true)
65-
external double paintGetMiterLimit(PaintHandle paint);
66-
6742
@Native<Void Function(PaintHandle, ShaderHandle)>(symbol: 'paint_setShader', isLeaf: true)
6843
external void paintSetShader(PaintHandle handle, ShaderHandle shader);
6944

lib/web_ui/skwasm/paint.cpp

Lines changed: 18 additions & 66 deletions
Original file line numberDiff line numberDiff line change
@@ -12,80 +12,32 @@
1212

1313
using namespace Skwasm;
1414

15-
SKWASM_EXPORT SkPaint* paint_create() {
15+
SKWASM_EXPORT SkPaint* paint_create(
16+
bool isAntiAlias,
17+
SkBlendMode blendMode,
18+
SkColor color,
19+
SkPaint::Style style,
20+
SkScalar strokeWidth,
21+
SkPaint::Cap strokeCap,
22+
SkPaint::Join strokeJoin,
23+
SkScalar strokeMiterLimit
24+
) {
1625
auto paint = new SkPaint();
17-
18-
// Antialias defaults to true in flutter.
19-
paint->setAntiAlias(true);
26+
paint->setAntiAlias(isAntiAlias);
27+
paint->setBlendMode(blendMode);
28+
paint->setStyle(style);
29+
paint->setStrokeWidth(strokeWidth);
30+
paint->setStrokeCap(strokeCap);
31+
paint->setStrokeJoin(strokeJoin);
32+
paint->setColor(color);
33+
paint->setStrokeMiter(strokeMiterLimit);
2034
return paint;
2135
}
2236

2337
SKWASM_EXPORT void paint_dispose(SkPaint* paint) {
2438
delete paint;
2539
}
2640

27-
SKWASM_EXPORT void paint_setBlendMode(SkPaint* paint, SkBlendMode mode) {
28-
paint->setBlendMode(mode);
29-
}
30-
31-
// No getter for blend mode, as it's non trivial. Cache on the dart side.
32-
33-
SKWASM_EXPORT void paint_setStyle(SkPaint* paint, SkPaint::Style style) {
34-
paint->setStyle(style);
35-
}
36-
37-
SKWASM_EXPORT SkPaint::Style paint_getStyle(SkPaint* paint) {
38-
return paint->getStyle();
39-
}
40-
41-
SKWASM_EXPORT void paint_setStrokeWidth(SkPaint* paint, SkScalar width) {
42-
paint->setStrokeWidth(width);
43-
}
44-
45-
SKWASM_EXPORT SkScalar paint_getStrokeWidth(SkPaint* paint) {
46-
return paint->getStrokeWidth();
47-
}
48-
49-
SKWASM_EXPORT void paint_setStrokeCap(SkPaint* paint, SkPaint::Cap cap) {
50-
paint->setStrokeCap(cap);
51-
}
52-
53-
SKWASM_EXPORT SkPaint::Cap paint_getStrokeCap(SkPaint* paint) {
54-
return paint->getStrokeCap();
55-
}
56-
57-
SKWASM_EXPORT void paint_setStrokeJoin(SkPaint* paint, SkPaint::Join join) {
58-
paint->setStrokeJoin(join);
59-
}
60-
61-
SKWASM_EXPORT SkPaint::Join paint_getStrokeJoin(SkPaint* paint) {
62-
return paint->getStrokeJoin();
63-
}
64-
65-
SKWASM_EXPORT void paint_setAntiAlias(SkPaint* paint, bool antiAlias) {
66-
paint->setAntiAlias(antiAlias);
67-
}
68-
69-
SKWASM_EXPORT bool paint_getAntiAlias(SkPaint* paint) {
70-
return paint->isAntiAlias();
71-
}
72-
73-
SKWASM_EXPORT void paint_setColorInt(SkPaint* paint, SkColor colorInt) {
74-
paint->setColor(colorInt);
75-
}
76-
77-
SKWASM_EXPORT SkColor paint_getColorInt(SkPaint* paint) {
78-
return paint->getColor();
79-
}
80-
81-
SKWASM_EXPORT void paint_setMiterLimit(SkPaint* paint, SkScalar miterLimit) {
82-
paint->setStrokeMiter(miterLimit);
83-
}
84-
85-
SKWASM_EXPORT SkScalar paint_getMiterLimit(SkPaint* paint) {
86-
return paint->getStrokeMiter();
87-
}
88-
8941
SKWASM_EXPORT void paint_setShader(SkPaint* paint, SkShader* shader) {
9042
paint->setShader(sk_ref_sp<SkShader>(shader));
9143
}

0 commit comments

Comments
 (0)