Skip to content

Commit b8d4351

Browse files
committed
refact: migrate boolean flags to enum-based state
1 parent 95c54e3 commit b8d4351

File tree

1 file changed

+13
-12
lines changed

1 file changed

+13
-12
lines changed

lib/src/thorvg.dart

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,9 @@ final DynamicLibrary _dylib = () {
2222

2323
final ThorVGFlutterBindings tvg = ThorVGFlutterBindings(_dylib);
2424

25+
/* ThorVG Play State */
26+
enum PlayState { stopped, playing, deleted }
27+
2528
/* ThorVG Dart */
2629

2730
class Thorvg {
@@ -31,9 +34,7 @@ class Thorvg {
3134
double startTime = DateTime.now().millisecond / 1000;
3235
double speed = 1.0;
3336

34-
// FIXME(jinny): Should be like enumeration for each status
35-
bool isPlaying = false;
36-
bool deleted = false;
37+
PlayState state = PlayState.stopped;
3738

3839
late bool animate = false;
3940
late bool reverse = false;
@@ -47,7 +48,7 @@ class Thorvg {
4748
}
4849

4950
Uint8List? animLoop() {
50-
if (deleted) {
51+
if (state == PlayState.deleted) {
5152
throw Exception('Thorvg is already deleted');
5253
}
5354

@@ -60,7 +61,7 @@ class Thorvg {
6061
}
6162

6263
bool update() {
63-
if (deleted) {
64+
if (state == PlayState.deleted) {
6465
throw Exception('Thorvg is already deleted');
6566
}
6667

@@ -80,15 +81,15 @@ class Thorvg {
8081
return true;
8182
}
8283

83-
isPlaying = false;
84+
state = PlayState.stopped;
8485
return false;
8586
}
8687

8788
return tvg.frame(animation, currentFrame);
8889
}
8990

9091
Uint8List? render() {
91-
if (deleted) {
92+
if (state == PlayState.deleted) {
9293
throw Exception('Thorvg is already deleted');
9394
}
9495

@@ -108,7 +109,7 @@ class Thorvg {
108109
}
109110

110111
void play() {
111-
if (deleted) {
112+
if (state == PlayState.deleted) {
112113
throw Exception('Thorvg is already deleted');
113114
}
114115

@@ -118,11 +119,11 @@ class Thorvg {
118119

119120
totalFrame = tvg.totalFrame(animation);
120121
startTime = DateTime.now().millisecondsSinceEpoch / 1000;
121-
isPlaying = true;
122+
state = PlayState.playing;
122123
}
123124

124125
void load(String src, int w, int h, bool animate, bool repeat, bool reverse) {
125-
if (deleted) {
126+
if (state == PlayState.deleted) {
126127
throw Exception('Thorvg is already deleted');
127128
}
128129

@@ -155,12 +156,12 @@ class Thorvg {
155156
}
156157

157158
void delete() {
158-
if (deleted) {
159+
if (state == PlayState.deleted) {
159160
return;
160161
}
161162

162163
if (tvg.destroy(animation)) {
163-
deleted = true;
164+
state = PlayState.deleted;
164165
}
165166
}
166167
}

0 commit comments

Comments
 (0)