home *** CD-ROM | disk | FTP | other *** search
- /* ******************************************************************** */
- /* C code generated by: */
- /* Visual Arts Version 2.1 */
- /* Copyright 1994-95 Danny Y. Wong All rights reserved */
- /* Calgary, Alberta (CANADA) */
- /* Partial of the code is copyright by Jaba Development */
- /* ******************************************************************** */
-
- /* this program demostrates the speech features and how easily it can
- be done using Visual Arts
-
- When ever you see '-->' this tells you that the codes are custom and
- inserted by me.
-
- When using the speech you always need to call the following routines.
-
- 1. InitSpeech() --somewhere in your main()
- 2. DeInitSpeech() --before you exit the program.
-
- Speak(text, volume, rate, sex) -- to speak the text
-
- eg: Speak("Speak is as easy as 1 2 3", 64, 150, 0)
-
- */
-
- #include <VisualArts.h>
-
- #define ID_quit 0
- #define ID_sentence 1
- #define ID_sex 2
- #define ID_volume 3
- #define ID_rate 4
-
- #define SpeechNumGads 5
-
- /* --> add this struct to keep tack of the paramters */
- struct speechInfo
- {
- short volume;
- short rate;
- short sex;
- }SpeechInfo = {32, 150, 0}; //default values
-
- #include "Speech_func.c"
-
- int quitObj(struct VAobject VAObject);
- int sentenceObj(struct VAobject VAObject);
- int sexObj(struct VAobject VAObject);
- int volumeObj(struct VAobject VAObject);
- int rateObj(struct VAobject VAObject);
-
- int SpeechIDCMP_MOUSEMOVE (struct VAobject VAObject);
- int GetPubScreen(void);
- void ClosePubScreen(void);
- int OpenSpeechWindow(char windtitle[]);
- void CloseSpeechWindow(void);
- int SpeechHandler(void);
- int SpeechMainHandler(void);
- void DrawSpeechObjs(void);
- int main(int argc, char *argv[]);
-
- UBYTE *PubScrName = "Workbench";
- struct DrawInfo *ScrDrawInfo = NULL;
- APTR VisualInfo = NULL;
- struct Screen *Scr = NULL;
- struct Window *SpeechWnd = NULL;
- struct Gadget *SpeechGList = NULL;
- struct Gadget *SpeechGadgets[SpeechNumGads];
- struct IntuiMessage SpeechMsg;
- UWORD SpeechLeft = 69;
- UWORD SpeechTop = 54;
- UWORD SpeechWidth = 430;
- UWORD SpeechHeight = 57;
-
- /* stringinfo for WB 1.x style string/integer gadgets */
-
- struct StringExtend SpeechStrExt; /* Extend String Gadget */
- struct TextAttr topaz8 = { (STRPTR)"topaz.font", 8, 0x00, 0x01 };
- struct TextAttr topaz800 = { (STRPTR)"topaz.font", 8, 0x00, 0x00 };
-
- UBYTE *SexLabels[] = {
- (UBYTE *)"Male",
- (UBYTE *)"Female",
- NULL
- };
-
- WORD SpeechGadTypes[] = {
- BUTTON_KIND,
- STRING_KIND,
- MX_KIND,
- SLIDER_KIND,
- SLIDER_KIND,
- };
-
- struct NewGadget SpeechNGads[] = {
- 340, 24, 70, 12, (UBYTE *)"_Quit",&topaz800, ID_quit, PLACETEXT_IN, NULL, (APTR)quitObj,
- 84, 3, 327, 13, (UBYTE *)"Sentence", &topaz800, ID_sentence, PLACETEXT_LEFT, NULL, (APTR)sentenceObj,
- 294, 20, 17, 9, (UBYTE *)"", &topaz800, ID_sex, PLACETEXT_LEFT, NULL, (APTR)sexObj,
- 84, 19, 143, 10, (UBYTE *)"Volume ", &topaz800, ID_volume, PLACETEXT_LEFT, NULL, (APTR)volumeObj,
- 84, 30, 143, 10, (UBYTE *)"Rate ", &topaz800, ID_rate, PLACETEXT_LEFT, NULL, (APTR)rateObj,
- };
-
- ULONG SpeechNTags[] = {
- (GT_Underscore), '_', TAG_DONE,
- (GTST_String), (ULONG)"Hello, this is Amiga speaking", GTST_MaxChars, 255, (STRINGA_Justification), GACT_STRINGLEFT, TAG_DONE,
- (GTMX_Labels), (ULONG)&SexLabels[0], (GTMX_Active), 0, (GTMX_Spacing), 2, TAG_DONE,
- (GTSL_Min), 0, (GTSL_Max), 64, (GTSL_Level), 32, (GTSL_LevelFormat), (ULONG)"%3ld", (GTSL_MaxLevelLen), 0, (GTSL_LevelPlace), PLACETEXT_LEFT, (GA_Immediate), TRUE, (GA_RelVerify), TRUE, (PGA_Freedom), LORIENT_HORIZ, TAG_DONE,
- (GTSL_Min), 40, (GTSL_Max), 400, (GTSL_Level), 150, (GTSL_LevelFormat), (ULONG)"%3ld", (GTSL_MaxLevelLen), 0, (GTSL_LevelPlace), PLACETEXT_LEFT, (GA_Immediate), TRUE, (GA_RelVerify), TRUE, (PGA_Freedom), LORIENT_HORIZ, TAG_DONE,
- };
-
-
- int GetPubScreen(void)
- {
- if (!(Scr = LockPubScreen(PubScrName)))
- return(1L);
-
- if (!(VisualInfo = GetVisualInfo(Scr, TAG_DONE)))
- return(2L);
-
- if (!(ScrDrawInfo = GetScreenDrawInfo(Scr)))
- return(3L);
- return(0L);
- }
-
- void ClosePubScreen(void)
- {
- if (VisualInfo)
- FreeVisualInfo(VisualInfo);
- if (Scr)
- UnlockPubScreen(NULL, Scr);
- if (ScrDrawInfo)
- FreeScreenDrawInfo(Scr, ScrDrawInfo);
- }
-
- int OpenSpeechWindow(char windtitle[80])
- {
- struct NewGadget NewGad;
- struct Gadget *Gad;
- register UWORD i, j;
- UWORD offsetx = Scr->WBorLeft;
- UWORD offsety = Scr->WBorTop + Scr->RastPort.TxHeight + 1;
-
-
- SpeechStrExt.Font = NULL;
- SpeechStrExt.Pens[0] = 2;
- SpeechStrExt.Pens[1] = 0;
- SpeechStrExt.ActivePens[0] = 3;
- SpeechStrExt.ActivePens[1] = 2;
- SpeechStrExt.InitialModes = 0;
- SpeechStrExt.EditHook = NULL;
- SpeechStrExt.WorkBuffer = NULL;
-
- if (!(Gad = CreateContext(&SpeechGList)))
- return(1L);
-
- for (i=0, j=0; i < SpeechNumGads; i++)
- {
- CopyMem((char *)&SpeechNGads[i], (char *)&NewGad, (long)sizeof(struct NewGadget));
-
- NewGad.ng_VisualInfo = VisualInfo;
- NewGad.ng_LeftEdge += offsetx;
- NewGad.ng_TopEdge += offsety;
-
- SpeechGadgets[i] = Gad = CreateGadgetA((ULONG)SpeechGadTypes[i], Gad, &NewGad,
- (struct TagItem *)&SpeechNTags[j]);
- if (SpeechGadTypes[i] == STRING_KIND || SpeechGadTypes[i] == INTEGER_KIND)
- {
- SpeechGadgets[i]->Flags |= GFLG_STRINGEXTEND;
- ((struct StringInfo *)SpeechGadgets[i]->SpecialInfo)->Extension = &SpeechStrExt;
- }
- while (SpeechNTags[j])
- j +=2;
- j++;
- if (!Gad)
- return(2L);
- }
- if (!(SpeechWnd = OpenWindowTags(NULL,
- WA_Left, SpeechLeft,
- WA_Top, SpeechTop,
- WA_Width, SpeechWidth,
- WA_Height, SpeechHeight,
- WA_NewLookMenus, TRUE,
- WA_IDCMP, IDCMP_CLOSEWINDOW | IDCMP_NEWSIZE | IDCMP_MOUSEMOVE | IDCMP_GADGETUP | IDCMP_GADGETDOWN | IDCMP_VANILLAKEY ,
- WA_Flags, WFLG_CLOSEGADGET | WFLG_DEPTHGADGET | WFLG_SMART_REFRESH |
- WFLG_ACTIVATE | WFLG_DRAGBAR ,
- WA_Gadgets, SpeechGList,
- WA_Title, windtitle,
- WA_ScreenTitle, "Visual Arts V2.1 Copyright 1994-95 Danny Y. Wong All Rights Reserved.",
- WA_PubScreen, Scr,
- WA_MinWidth, 160,
- WA_MinHeight, 50,
- WA_MaxWidth, 640,
- WA_MaxHeight, 200,
- TAG_DONE)))
- return(3L);
-
- CreateSpeechLists();
- GT_RefreshWindow(SpeechWnd, NULL);
- RefreshGadgets(SpeechGadgets[0], SpeechWnd, NULL);
- return(0L);
- }
-
- void CloseSpeechWindow(void)
- {
- if (SpeechWnd)
- CloseWindow(SpeechWnd);
- if (SpeechGList)
- FreeGadgets(SpeechGList);
- }
-
- int SpeechHandler(void)
- {
- struct IntuiMessage *msg;
- struct VAobject VAObject;
- int running = 1;
- int (*func)(struct VAobject VAObject);
- ULONG class;
- UWORD code;
-
- while (msg=GT_GetIMsg(SpeechWnd->UserPort))
- {
- CopyMem((char *)msg, (char *)&SpeechMsg, (long)sizeof(struct IntuiMessage));
- class = msg->Class;
- code = msg->Code;
-
- VAObject.va_Window = (struct Window *)SpeechWnd;
- VAObject.va_Gadget = (struct Gadget *)msg->IAddress;
- VAObject.va_IntuiMsg = (struct IntuiMessage *)msg;
- VAObject.va_Flags = 0;
- VAObject.va_UserData = 0;
-
- GT_ReplyIMsg(msg);
- switch(class)
- {
-
- case IDCMP_MOUSEMOVE :
- running = SpeechIDCMP_MOUSEMOVE (VAObject);
- break;
-
- case IDCMP_NEWSIZE:
- break;
-
- case IDCMP_CLOSEWINDOW:
- return(0);
- break;
-
- case IDCMP_GADGETUP:
- func = (void *)((struct Gadget *)SpeechMsg.IAddress)->UserData;
- if (func != NULL)
- running = func(VAObject);
- break;
-
-
- case IDCMP_VANILLAKEY:
- switch(code)
- {
- case 'Q':
- ButtonSelected(SpeechWnd, SpeechGadgets[0]);
- return(-1);
- break;
- }
- break;
- }
- }
- return(running);
- }
-
- int SpeechMainHandler(void)
- {
- int running = 1;
- ULONG windsig, signals;
-
- windsig = 1L << SpeechWnd->UserPort->mp_SigBit;
- while (running == 1)
- {
- signals = Wait( windsig );
- if (signals & windsig)
- {
- running = SpeechHandler();
- }
- }
- return(running);
- }
-
- int main(int argc, char *argv[])
- {
- int rc;
-
- if (!(GetPubScreen()))
- {
- InitSpeech(); /* --> initialize the speech */
- for (rc=0; rc < 1; rc++)
- SpeechLists[rc]=GetNewList();
- if (!(OpenSpeechWindow("Speech Demo")))
- {
- rc = SpeechMainHandler();
- CloseSpeechWindow();
- }
- for (rc=0; rc < 1; rc++)
- FreeList(SpeechLists[rc]);
- DeInitSpeech(); /* --> deinitial the speech and free memory */
- ClosePubScreen();
- }
- return(0L);
- }
-