Files
gemigreerd-racket-audio/scrbl/placed-player-state-model-2.plantuml
2026-05-16 01:38:40 +02:00

91 lines
2.0 KiB
Plaintext

@startuml
!theme plain
hide empty description
top to bottom direction
title Placed audio player - public state model
skinparam backgroundColor transparent
skinparam shadowing false
skinparam roundcorner 14
skinparam ArrowThickness 1.2
skinparam DefaultFontName "DejaVu Sans"
skinparam DefaultFontSize 13
skinparam state {
BackgroundColor #F8F8F8
BorderColor #555555
FontColor #222222
StartColor #555555
EndColor #555555
BackgroundColor<<blue>> #DCEEFF
BorderColor<<blue>> #3A7FC4
FontColor<<blue>> #123A63
BackgroundColor<<green>> #E3F6E3
BorderColor<<green>> #3C9D40
FontColor<<green>> #1E5C22
BackgroundColor<<purple>> #F0E6FF
BorderColor<<purple>> #8A5CC2
FontColor<<purple>> #4B2A73
BackgroundColor<<orange>> #FFE8CC
BorderColor<<orange>> #D8842A
FontColor<<orange>> #7A4A12
BackgroundColor<<red>> #FFE5E5
BorderColor<<red>> #CC3333
FontColor<<red>> #7A1F1F
}
state NotInitialized <<purple>>
state FatalError <<red>>
state Terminated <<purple>>
[*] -[#8A5CC2]-> NotInitialized
NotInitialized -[#3A7FC4]-> Initialized : init
NotInitialized -[#CC3333]-> FatalError : command before init
state Initialized {
[*] -[#3A7FC4]-> Stopped
state Stopped <<blue>> {
Stopped : volume(p) / set volume
Stopped : stop / ignore
}
state Playing <<orange>> {
Playing : seek(p) / seek decoder
Playing : volume(p) / set volume
}
state Paused <<green>> {
Paused : seek(p) / seek decoder
Paused : volume(p) / set volume
}
Stopped -[#D8842A]-> Playing : open(file)
Playing -[#3C9D40]-> Paused : pause #t
Paused -[#D8842A]-> Playing : pause #f
Playing -[#3A7FC4]-> Stopped : audio done
Playing -[#3A7FC4]-> Stopped : stop
Paused -[#3A7FC4]-> Stopped : stop
Playing -[#D8842A]-> Playing : open(new-file)
Playing -[#3A7FC4]-> Stopped : worker exception
Paused -[#3A7FC4]-> Stopped : worker exception
}
Initialized -[#8A5CC2]-> Terminated : quit / cleanup
FatalError -[#555555]-> [*]
Terminated -[#555555]-> [*]
@enduml