PlatformSpeechSynthesizer.h [plain text]
#ifndef PlatformSpeechSynthesizer_h
#define PlatformSpeechSynthesizer_h
#if ENABLE(SPEECH_SYNTHESIS)
#include "PlatformSpeechSynthesisVoice.h"
#include <wtf/PassOwnPtr.h>
#include <wtf/Vector.h>
#if PLATFORM(MAC)
#include <wtf/RetainPtr.h>
OBJC_CLASS WebSpeechSynthesisWrapper;
#endif
namespace WebCore {
enum SpeechBoundary {
SpeechWordBoundary,
SpeechSentenceBoundary
};
class PlatformSpeechSynthesisUtterance;
class PlatformSpeechSynthesizerClient {
public:
virtual void didStartSpeaking(PassRefPtr<PlatformSpeechSynthesisUtterance>) = 0;
virtual void didFinishSpeaking(PassRefPtr<PlatformSpeechSynthesisUtterance>) = 0;
virtual void didPauseSpeaking(PassRefPtr<PlatformSpeechSynthesisUtterance>) = 0;
virtual void didResumeSpeaking(PassRefPtr<PlatformSpeechSynthesisUtterance>) = 0;
virtual void speakingErrorOccurred(PassRefPtr<PlatformSpeechSynthesisUtterance>) = 0;
virtual void boundaryEventOccurred(PassRefPtr<PlatformSpeechSynthesisUtterance>, SpeechBoundary, unsigned charIndex) = 0;
virtual void voicesDidChange() = 0;
protected:
virtual ~PlatformSpeechSynthesizerClient() { }
};
class PlatformSpeechSynthesizer {
public:
static PassOwnPtr<PlatformSpeechSynthesizer> create(PlatformSpeechSynthesizerClient*);
virtual ~PlatformSpeechSynthesizer();
const Vector<RefPtr<PlatformSpeechSynthesisVoice> >& voiceList() const;
virtual void speak(PassRefPtr<PlatformSpeechSynthesisUtterance>);
virtual void pause();
virtual void resume();
virtual void cancel();
PlatformSpeechSynthesizerClient* client() const { return m_speechSynthesizerClient; }
protected:
explicit PlatformSpeechSynthesizer(PlatformSpeechSynthesizerClient*);
Vector<RefPtr<PlatformSpeechSynthesisVoice> > m_voiceList;
private:
virtual void initializeVoiceList();
bool m_voiceListIsInitialized;
PlatformSpeechSynthesizerClient* m_speechSynthesizerClient;
#if PLATFORM(MAC)
RetainPtr<WebSpeechSynthesisWrapper> m_platformSpeechWrapper;
#endif
};
}
#endif // ENABLE(SPEECH_SYNTHESIS)
#endif // PlatformSpeechSynthesizer_h