Mercurial > projects > dstep
view dstep/appkit/NSSpeechSynthesizer.d @ 16:19885b43130e
Huge update, the bridge actually works now
author | Jacob Carlborg <doob@me.com> |
---|---|
date | Sun, 03 Jan 2010 22:06:11 +0100 |
parents | |
children | b9de51448c6b |
line wrap: on
line source
/** * Copyright: Copyright (c) 2009 Jacob Carlborg. * Authors: Jacob Carlborg * Version: Initial created: Sep 24, 2009 * License: $(LINK2 http://www.boost.org/LICENSE_1_0.txt, Boost Software License 1.0) */ module dstep.appkit.NSSpeechSynthesizer; import dstep.appkit.AppKitDefines; import dstep.foundation.NSArray; import dstep.foundation.NSDictionary; import dstep.foundation.NSError; import dstep.foundation.NSObjCRuntime; import dstep.foundation.NSObject; import dstep.foundation.NSRange; import dstep.foundation.NSString; import dstep.foundation.NSURL; import dstep.objc.bridge.Bridge; import dstep.objc.objc; import bindings = dstep.appkit.NSSpeechSynthesizer_bindings; alias NSUInteger NSSpeechBoundary; private { NSString NSVoiceName_; NSString NSVoiceIdentifier_; NSString NSVoiceAge_; NSString NSVoiceGender_; NSString NSVoiceDemoText_; NSString NSVoiceLocaleIdentifier_; NSString NSVoiceSupportedCharacters_; NSString NSVoiceIndividuallySpokenCharacters_; NSString NSVoiceGenderNeuter_; NSString NSVoiceGenderMale_; NSString NSVoiceGenderFemale_; NSString NSSpeechStatusProperty_; NSString NSSpeechErrorsProperty_; NSString NSSpeechInputModeProperty_; NSString NSSpeechCharacterModeProperty_; NSString NSSpeechNumberModeProperty_; NSString NSSpeechRateProperty_; NSString NSSpeechPitchBaseProperty_; NSString NSSpeechPitchModProperty_; NSString NSSpeechVolumeProperty_; NSString NSSpeechSynthesizerInfoProperty_; NSString NSSpeechRecentSyncProperty_; NSString NSSpeechPhonemeSymbolsProperty_; NSString NSSpeechCurrentVoiceProperty_; NSString NSSpeechCommandDelimiterProperty_; NSString NSSpeechResetProperty_; NSString NSSpeechOutputToFileURLProperty_; NSString NSSpeechModeText_; NSString NSSpeechModePhoneme_; NSString NSSpeechModeNormal_; NSString NSSpeechModeLiteral_; NSString NSSpeechStatusOutputBusy_; NSString NSSpeechStatusOutputPaused_; NSString NSSpeechStatusNumberOfCharactersLeft_; NSString NSSpeechStatusPhonemeCode_; NSString NSSpeechErrorCount_; NSString NSSpeechErrorOldestCode_; NSString NSSpeechErrorOldestCharacterOffset_; NSString NSSpeechErrorNewestCode_; NSString NSSpeechErrorNewestCharacterOffset_; NSString NSSpeechSynthesizerInfoIdentifier_; NSString NSSpeechSynthesizerInfoVersion_; NSString NSSpeechPhonemeInfoOpcode_; NSString NSSpeechPhonemeInfoSymbol_; NSString NSSpeechPhonemeInfoExample_; NSString NSSpeechPhonemeInfoHiliteStart_; NSString NSSpeechPhonemeInfoHiliteEnd_; NSString NSSpeechCommandPrefix_; NSString NSSpeechCommandSuffix_; NSString NSSpeechDictionaryLocaleIdentifier_; NSString NSSpeechDictionaryModificationDate_; NSString NSSpeechDictionaryPronunciations_; NSString NSSpeechDictionaryAbbreviations_; NSString NSSpeechDictionaryEntrySpelling_; NSString NSSpeechDictionaryEntryPhonemes_; } NSString NSVoiceName () { if (NSVoiceName_) return NSVoiceName_; return NSVoiceName_ = new NSString(bindings.NSVoiceName); } NSString NSVoiceIdentifier () { if (NSVoiceIdentifier_) return NSVoiceIdentifier_; return NSVoiceIdentifier_ = new NSString(bindings.NSVoiceIdentifier); } NSString NSVoiceAge () { if (NSVoiceAge_) return NSVoiceAge_; return NSVoiceAge_ = new NSString(bindings.NSVoiceAge); } NSString NSVoiceGender () { if (NSVoiceGender_) return NSVoiceGender_; return NSVoiceGender_ = new NSString(bindings.NSVoiceGender); } NSString NSVoiceDemoText () { if (NSVoiceDemoText_) return NSVoiceDemoText_; return NSVoiceDemoText_ = new NSString(bindings.NSVoiceDemoText); } NSString NSVoiceLocaleIdentifier () { if (NSVoiceLocaleIdentifier_) return NSVoiceLocaleIdentifier_; return NSVoiceLocaleIdentifier_ = new NSString(bindings.NSVoiceLocaleIdentifier); } NSString NSVoiceSupportedCharacters () { if (NSVoiceSupportedCharacters_) return NSVoiceSupportedCharacters_; return NSVoiceSupportedCharacters_ = new NSString(bindings.NSVoiceSupportedCharacters); } NSString NSVoiceIndividuallySpokenCharacters () { if (NSVoiceIndividuallySpokenCharacters_) return NSVoiceIndividuallySpokenCharacters_; return NSVoiceIndividuallySpokenCharacters_ = new NSString(bindings.NSVoiceIndividuallySpokenCharacters); } NSString NSVoiceGenderNeuter () { if (NSVoiceGenderNeuter_) return NSVoiceGenderNeuter_; return NSVoiceGenderNeuter_ = new NSString(bindings.NSVoiceGenderNeuter); } NSString NSVoiceGenderMale () { if (NSVoiceGenderMale_) return NSVoiceGenderMale_; return NSVoiceGenderMale_ = new NSString(bindings.NSVoiceGenderMale); } NSString NSVoiceGenderFemale () { if (NSVoiceGenderFemale_) return NSVoiceGenderFemale_; return NSVoiceGenderFemale_ = new NSString(bindings.NSVoiceGenderFemale); } NSString NSSpeechStatusProperty () { if (NSSpeechStatusProperty_) return NSSpeechStatusProperty_; return NSSpeechStatusProperty_ = new NSString(bindings.NSSpeechStatusProperty); } NSString NSSpeechErrorsProperty () { if (NSSpeechErrorsProperty_) return NSSpeechErrorsProperty_; return NSSpeechErrorsProperty_ = new NSString(bindings.NSSpeechErrorsProperty); } NSString NSSpeechInputModeProperty () { if (NSSpeechInputModeProperty_) return NSSpeechInputModeProperty_; return NSSpeechInputModeProperty_ = new NSString(bindings.NSSpeechInputModeProperty); } NSString NSSpeechCharacterModeProperty () { if (NSSpeechCharacterModeProperty_) return NSSpeechCharacterModeProperty_; return NSSpeechCharacterModeProperty_ = new NSString(bindings.NSSpeechCharacterModeProperty); } NSString NSSpeechNumberModeProperty () { if (NSSpeechNumberModeProperty_) return NSSpeechNumberModeProperty_; return NSSpeechNumberModeProperty_ = new NSString(bindings.NSSpeechNumberModeProperty); } NSString NSSpeechRateProperty () { if (NSSpeechRateProperty_) return NSSpeechRateProperty_; return NSSpeechRateProperty_ = new NSString(bindings.NSSpeechRateProperty); } NSString NSSpeechPitchBaseProperty () { if (NSSpeechPitchBaseProperty_) return NSSpeechPitchBaseProperty_; return NSSpeechPitchBaseProperty_ = new NSString(bindings.NSSpeechPitchBaseProperty); } NSString NSSpeechPitchModProperty () { if (NSSpeechPitchModProperty_) return NSSpeechPitchModProperty_; return NSSpeechPitchModProperty_ = new NSString(bindings.NSSpeechPitchModProperty); } NSString NSSpeechVolumeProperty () { if (NSSpeechVolumeProperty_) return NSSpeechVolumeProperty_; return NSSpeechVolumeProperty_ = new NSString(bindings.NSSpeechVolumeProperty); } NSString NSSpeechSynthesizerInfoProperty () { if (NSSpeechSynthesizerInfoProperty_) return NSSpeechSynthesizerInfoProperty_; return NSSpeechSynthesizerInfoProperty_ = new NSString(bindings.NSSpeechSynthesizerInfoProperty); } NSString NSSpeechRecentSyncProperty () { if (NSSpeechRecentSyncProperty_) return NSSpeechRecentSyncProperty_; return NSSpeechRecentSyncProperty_ = new NSString(bindings.NSSpeechRecentSyncProperty); } NSString NSSpeechPhonemeSymbolsProperty () { if (NSSpeechPhonemeSymbolsProperty_) return NSSpeechPhonemeSymbolsProperty_; return NSSpeechPhonemeSymbolsProperty_ = new NSString(bindings.NSSpeechPhonemeSymbolsProperty); } NSString NSSpeechCurrentVoiceProperty () { if (NSSpeechCurrentVoiceProperty_) return NSSpeechCurrentVoiceProperty_; return NSSpeechCurrentVoiceProperty_ = new NSString(bindings.NSSpeechCurrentVoiceProperty); } NSString NSSpeechCommandDelimiterProperty () { if (NSSpeechCommandDelimiterProperty_) return NSSpeechCommandDelimiterProperty_; return NSSpeechCommandDelimiterProperty_ = new NSString(bindings.NSSpeechCommandDelimiterProperty); } NSString NSSpeechResetProperty () { if (NSSpeechResetProperty_) return NSSpeechResetProperty_; return NSSpeechResetProperty_ = new NSString(bindings.NSSpeechResetProperty); } NSString NSSpeechOutputToFileURLProperty () { if (NSSpeechOutputToFileURLProperty_) return NSSpeechOutputToFileURLProperty_; return NSSpeechOutputToFileURLProperty_ = new NSString(bindings.NSSpeechOutputToFileURLProperty); } NSString NSSpeechModeText () { if (NSSpeechModeText_) return NSSpeechModeText_; return NSSpeechModeText_ = new NSString(bindings.NSSpeechModeText); } NSString NSSpeechModePhoneme () { if (NSSpeechModePhoneme_) return NSSpeechModePhoneme_; return NSSpeechModePhoneme_ = new NSString(bindings.NSSpeechModePhoneme); } NSString NSSpeechModeNormal () { if (NSSpeechModeNormal_) return NSSpeechModeNormal_; return NSSpeechModeNormal_ = new NSString(bindings.NSSpeechModeNormal); } NSString NSSpeechModeLiteral () { if (NSSpeechModeLiteral_) return NSSpeechModeLiteral_; return NSSpeechModeLiteral_ = new NSString(bindings.NSSpeechModeLiteral); } NSString NSSpeechStatusOutputBusy () { if (NSSpeechStatusOutputBusy_) return NSSpeechStatusOutputBusy_; return NSSpeechStatusOutputBusy_ = new NSString(bindings.NSSpeechStatusOutputBusy); } NSString NSSpeechStatusOutputPaused () { if (NSSpeechStatusOutputPaused_) return NSSpeechStatusOutputPaused_; return NSSpeechStatusOutputPaused_ = new NSString(bindings.NSSpeechStatusOutputPaused); } NSString NSSpeechStatusNumberOfCharactersLeft () { if (NSSpeechStatusNumberOfCharactersLeft_) return NSSpeechStatusNumberOfCharactersLeft_; return NSSpeechStatusNumberOfCharactersLeft_ = new NSString(bindings.NSSpeechStatusNumberOfCharactersLeft); } NSString NSSpeechStatusPhonemeCode () { if (NSSpeechStatusPhonemeCode_) return NSSpeechStatusPhonemeCode_; return NSSpeechStatusPhonemeCode_ = new NSString(bindings.NSSpeechStatusPhonemeCode); } NSString NSSpeechErrorCount () { if (NSSpeechErrorCount_) return NSSpeechErrorCount_; return NSSpeechErrorCount_ = new NSString(bindings.NSSpeechErrorCount); } NSString NSSpeechErrorOldestCode () { if (NSSpeechErrorOldestCode_) return NSSpeechErrorOldestCode_; return NSSpeechErrorOldestCode_ = new NSString(bindings.NSSpeechErrorOldestCode); } NSString NSSpeechErrorOldestCharacterOffset () { if (NSSpeechErrorOldestCharacterOffset_) return NSSpeechErrorOldestCharacterOffset_; return NSSpeechErrorOldestCharacterOffset_ = new NSString(bindings.NSSpeechErrorOldestCharacterOffset); } NSString NSSpeechErrorNewestCode () { if (NSSpeechErrorNewestCode_) return NSSpeechErrorNewestCode_; return NSSpeechErrorNewestCode_ = new NSString(bindings.NSSpeechErrorNewestCode); } NSString NSSpeechErrorNewestCharacterOffset () { if (NSSpeechErrorNewestCharacterOffset_) return NSSpeechErrorNewestCharacterOffset_; return NSSpeechErrorNewestCharacterOffset_ = new NSString(bindings.NSSpeechErrorNewestCharacterOffset); } NSString NSSpeechSynthesizerInfoIdentifier () { if (NSSpeechSynthesizerInfoIdentifier_) return NSSpeechSynthesizerInfoIdentifier_; return NSSpeechSynthesizerInfoIdentifier_ = new NSString(bindings.NSSpeechSynthesizerInfoIdentifier); } NSString NSSpeechSynthesizerInfoVersion () { if (NSSpeechSynthesizerInfoVersion_) return NSSpeechSynthesizerInfoVersion_; return NSSpeechSynthesizerInfoVersion_ = new NSString(bindings.NSSpeechSynthesizerInfoVersion); } NSString NSSpeechPhonemeInfoOpcode () { if (NSSpeechPhonemeInfoOpcode_) return NSSpeechPhonemeInfoOpcode_; return NSSpeechPhonemeInfoOpcode_ = new NSString(bindings.NSSpeechPhonemeInfoOpcode); } NSString NSSpeechPhonemeInfoSymbol () { if (NSSpeechPhonemeInfoSymbol_) return NSSpeechPhonemeInfoSymbol_; return NSSpeechPhonemeInfoSymbol_ = new NSString(bindings.NSSpeechPhonemeInfoSymbol); } NSString NSSpeechPhonemeInfoExample () { if (NSSpeechPhonemeInfoExample_) return NSSpeechPhonemeInfoExample_; return NSSpeechPhonemeInfoExample_ = new NSString(bindings.NSSpeechPhonemeInfoExample); } NSString NSSpeechPhonemeInfoHiliteStart () { if (NSSpeechPhonemeInfoHiliteStart_) return NSSpeechPhonemeInfoHiliteStart_; return NSSpeechPhonemeInfoHiliteStart_ = new NSString(bindings.NSSpeechPhonemeInfoHiliteStart); } NSString NSSpeechPhonemeInfoHiliteEnd () { if (NSSpeechPhonemeInfoHiliteEnd_) return NSSpeechPhonemeInfoHiliteEnd_; return NSSpeechPhonemeInfoHiliteEnd_ = new NSString(bindings.NSSpeechPhonemeInfoHiliteEnd); } NSString NSSpeechCommandPrefix () { if (NSSpeechCommandPrefix_) return NSSpeechCommandPrefix_; return NSSpeechCommandPrefix_ = new NSString(bindings.NSSpeechCommandPrefix); } NSString NSSpeechCommandSuffix () { if (NSSpeechCommandSuffix_) return NSSpeechCommandSuffix_; return NSSpeechCommandSuffix_ = new NSString(bindings.NSSpeechCommandSuffix); } NSString NSSpeechDictionaryLocaleIdentifier () { if (NSSpeechDictionaryLocaleIdentifier_) return NSSpeechDictionaryLocaleIdentifier_; return NSSpeechDictionaryLocaleIdentifier_ = new NSString(bindings.NSSpeechDictionaryLocaleIdentifier); } NSString NSSpeechDictionaryModificationDate () { if (NSSpeechDictionaryModificationDate_) return NSSpeechDictionaryModificationDate_; return NSSpeechDictionaryModificationDate_ = new NSString(bindings.NSSpeechDictionaryModificationDate); } NSString NSSpeechDictionaryPronunciations () { if (NSSpeechDictionaryPronunciations_) return NSSpeechDictionaryPronunciations_; return NSSpeechDictionaryPronunciations_ = new NSString(bindings.NSSpeechDictionaryPronunciations); } NSString NSSpeechDictionaryAbbreviations () { if (NSSpeechDictionaryAbbreviations_) return NSSpeechDictionaryAbbreviations_; return NSSpeechDictionaryAbbreviations_ = new NSString(bindings.NSSpeechDictionaryAbbreviations); } NSString NSSpeechDictionaryEntrySpelling () { if (NSSpeechDictionaryEntrySpelling_) return NSSpeechDictionaryEntrySpelling_; return NSSpeechDictionaryEntrySpelling_ = new NSString(bindings.NSSpeechDictionaryEntrySpelling); } NSString NSSpeechDictionaryEntryPhonemes () { if (NSSpeechDictionaryEntryPhonemes_) return NSSpeechDictionaryEntryPhonemes_; return NSSpeechDictionaryEntryPhonemes_ = new NSString(bindings.NSSpeechDictionaryEntryPhonemes); } enum { NSSpeechImmediateBoundary = 0, NSSpeechWordBoundary, NSSpeechSentenceBoundary } class NSSpeechSynthesizer : NSObject { mixin (ObjcWrap); NSSpeechSynthesizer initWithVoice (NSString voice) { id result = invokeObjcSelf!(id, "initWithVoice:", NSString)(voice); return result is this.objcObject ? this : (result !is null ? new NSSpeechSynthesizer(result) : null); } this (NSString voice) { super(NSSpeechSynthesizer.alloc.initWithVoice(voice).objcObject); } bool startSpeakingString (NSString string) { return invokeObjcSelf!(bool, "startSpeakingString:", NSString)(string); } bool startSpeakingString (NSString string, NSURL url) { return invokeObjcSelf!(bool, "startSpeakingString:toURL:", NSString, NSURL)(string, url); } bool isSpeaking () { return invokeObjcSelf!(bool, "isSpeaking"); } void stopSpeaking () { return invokeObjcSelf!(void, "stopSpeaking"); } void stopSpeakingAtBoundary (uint boundary) { return invokeObjcSelf!(void, "stopSpeakingAtBoundary:", uint)(boundary); } void pauseSpeakingAtBoundary (uint boundary) { return invokeObjcSelf!(void, "pauseSpeakingAtBoundary:", uint)(boundary); } void continueSpeaking () { return invokeObjcSelf!(void, "continueSpeaking"); } Object delegate_ () { return invokeObjcSelf!(Object, "delegate"); } void setDelegate (Object anObject) { return invokeObjcSelf!(void, "setDelegate:", Object)(anObject); } NSString voice () { return invokeObjcSelf!(NSString, "voice"); } bool setVoice (NSString voice) { return invokeObjcSelf!(bool, "setVoice:", NSString)(voice); } float rate () { return invokeObjcSelf!(float, "rate"); } void setRate (float rate) { return invokeObjcSelf!(void, "setRate:", float)(rate); } float volume () { return invokeObjcSelf!(float, "volume"); } void setVolume (float volume) { return invokeObjcSelf!(void, "setVolume:", float)(volume); } bool usesFeedbackWindow () { return invokeObjcSelf!(bool, "usesFeedbackWindow"); } void setUsesFeedbackWindow (bool flag) { return invokeObjcSelf!(void, "setUsesFeedbackWindow:", bool)(flag); } void addSpeechDictionary (NSDictionary speechDictionary) { return invokeObjcSelf!(void, "addSpeechDictionary:", NSDictionary)(speechDictionary); } NSString phonemesFromText (NSString text) { return invokeObjcSelf!(NSString, "phonemesFromText:", NSString)(text); } Object objectForProperty (NSString property, out NSError outError) { id error; Object result = invokeObjcSelf!(Object, "objectForProperty:error:", NSString, id*)(property, &error); if (error) outError = new NSError(error); return result; } bool setObject (Object object, NSString property, ref NSError outError) { id error; bool result = invokeObjcSelf!(bool, "setObject:forProperty:error:", Object, NSString, id*)(object, property, &error); if (error) outError = new NSError(error); return result; } static bool isAnyApplicationSpeaking () { return invokeObjcSelfClass!(bool, "isAnyApplicationSpeaking"); } static NSString defaultVoice () { return invokeObjcSelfClass!(NSString, "defaultVoice"); } static NSArray availableVoices () { return invokeObjcSelfClass!(NSArray, "availableVoices"); } static NSDictionary attributesForVoice (NSString voice) { return invokeObjcSelfClass!(NSDictionary, "attributesForVoice:", NSString)(voice); } } const TNSSpeechSynthesizerDelegate = ` void speechSynthesizer (NSSpeechSynthesizer sender, bool finishedSpeaking) { return invokeObjcSelf!(void, "speechSynthesizer:didFinishSpeaking:", NSSpeechSynthesizer, bool)(sender, finishedSpeaking); } void speechSynthesizer (NSSpeechSynthesizer sender, NSRange characterRange, NSString string) { return invokeObjcSelf!(void, "speechSynthesizer:willSpeakWord:ofString:", NSSpeechSynthesizer, NSRange, NSString)(sender, characterRange, string); } void speechSynthesizer (NSSpeechSynthesizer sender, short phonemeOpcode) { return invokeObjcSelf!(void, "speechSynthesizer:willSpeakPhoneme:", NSSpeechSynthesizer, short)(sender, phonemeOpcode); } void speechSynthesizer (NSSpeechSynthesizer sender, NSUInteger characterIndex, NSString string, NSString message) { return invokeObjcSelf!(void, "speechSynthesizer:didEncounterErrorAtIndex:ofString:message:", NSSpeechSynthesizer, NSUInteger, NSString, NSString)(sender, characterIndex, string, message); } void speechSynthesizer (NSSpeechSynthesizer sender, NSString message) { return invokeObjcSelf!(void, "speechSynthesizer:didEncounterSyncMessage:", NSSpeechSynthesizer, NSString)(sender, message); } //mixin ObjcBindMethod!(speechSynthesizer, "speechSynthesizer:didFinishSpeaking:"); //mixin ObjcBindMethod!(speechSynthesizer, "speechSynthesizer:willSpeakWord:ofString:"); //mixin ObjcBindMethod!(speechSynthesizer, "speechSynthesizer:willSpeakPhoneme:"); //mixin ObjcBindMethod!(speechSynthesizer, "speechSynthesizer:didEncounterErrorAtIndex:ofString:message:"); //mixin ObjcBindMethod!(speechSynthesizer, "speechSynthesizer:didEncounterSyncMessage:"); `;