2020-08-13 13:14:24 +00:00
|
|
|
/*
|
|
|
|
* Copyright 2020 Google Inc.
|
|
|
|
*
|
|
|
|
* Use of this source code is governed by a BSD-style license that can be
|
|
|
|
* found in the LICENSE file.
|
|
|
|
*/
|
|
|
|
|
2020-08-13 16:03:37 +00:00
|
|
|
#include "modules/audioplayer/SkAudioPlayer.h"
|
2020-08-13 13:14:24 +00:00
|
|
|
#include <algorithm>
|
|
|
|
#include <cmath>
|
|
|
|
|
|
|
|
SkAudioPlayer::~SkAudioPlayer() {}
|
|
|
|
|
|
|
|
double SkAudioPlayer::setTime(double t) {
|
|
|
|
t = std::min(std::max(t, 0.0), this->duration());
|
|
|
|
if (!std::isfinite(t)) {
|
|
|
|
t = this->time();
|
|
|
|
}
|
|
|
|
if (t != this->time()) {
|
|
|
|
t = this->onSetTime(t);
|
|
|
|
}
|
|
|
|
return t;
|
|
|
|
}
|
|
|
|
|
|
|
|
double SkAudioPlayer::setNormalizedTime(double t) {
|
|
|
|
this->setTime(t * this->duration());
|
|
|
|
return this->normalizedTime();
|
|
|
|
}
|
|
|
|
|
|
|
|
SkAudioPlayer::State SkAudioPlayer::setState(State s) {
|
|
|
|
if (s != fState) {
|
|
|
|
fState = this->onSetState(s);
|
|
|
|
}
|
|
|
|
return fState;
|
|
|
|
}
|
|
|
|
|
|
|
|
float SkAudioPlayer::setRate(float r) {
|
|
|
|
r = std::min(std::max(r, 0.f), 1.f);
|
|
|
|
if (!std::isfinite(r)) {
|
|
|
|
r = fRate;
|
|
|
|
}
|
|
|
|
if (r != fRate) {
|
|
|
|
fRate = this->onSetRate(r);
|
|
|
|
}
|
|
|
|
return fRate;
|
|
|
|
}
|
|
|
|
|
|
|
|
float SkAudioPlayer::setVolume(float v) {
|
|
|
|
v = std::min(std::max(v, 0.f), 1.f);
|
|
|
|
if (!std::isfinite(v)) {
|
|
|
|
v = fVolume;
|
|
|
|
}
|
|
|
|
if (v != fVolume) {
|
|
|
|
fVolume = this->onSetVolume(v);
|
|
|
|
}
|
|
|
|
return fVolume;
|
|
|
|
}
|