home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
ST-Computer Leser-CD 1999 January
/
STC_CD_01_1999.iso
/
wdr
/
anip_202
/
prog
/
mani_mid
/
maniplay.c
next >
Wrap
C/C++ Source or Header
|
2000-01-08
|
3KB
|
131 lines
/* Module MANIPLAY for HORLOGEP in no freezing mode */
/* Start ANIPLAYER in PRG or ACC mode */
#include <aes.h>
#include <tos.h>
#include <portab.h>
#include <string.h>
#include "midnight.h" /* ACC_str + MOD_str + defines for Module + ACC */
#define Ms MOD_struct
#define VA_START 0x4711
#define AV_SENDKEY 0x4710
extern MOD_str MOD_struct;
Value Values[3]=
{
T_TITEL,0,0,"V1.0, MEQUIGNON Didier December 1997",
T_TITEL,0,0,"Path Aniplayer (.INF): xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
T_TITEL|T_END,0,0,"Options & Video: 01234567890123456789012345678901234567890123456789012345678901234567890123456789"
};
Value *Value_s = Values;
ULONG MOD_main(int Mode,ACC_str *As)
{
static char buffer[256];
static char *cmde;
static int fin,id,id_app,wi_id;
static message[8];
register int i,handle;
register char *p1,*p2;
int x,y,w,h;
switch(Mode)
{
case M_INIT:
MOD_struct.U.b=0x003f;
fin=0;
p1=Value_s[1].Name;
for(i=0;*p1 && *p1!=':';i++,p1++);
p1+=2;
*p1=0;
p2=Value_s[2].Name;
for(i=0;*p2 && *p2!=':';i++,p2++);
p2+=2;
*p2=0;
strcpy(&MOD_struct.MyName[strlen(MOD_struct.MyName)-3],"INF");
handle=Fopen(MOD_struct.MyName,0); /* open INF file */
if(handle<0)
return(0);
if(Fread(handle,255,buffer)<=0)
{
Fclose(handle);
return(0);
}
Fclose(handle);
for(i=0;buffer[i] && i<256;i++)
{
if(buffer[i]==13 || buffer[i]==10)
buffer[i]=0;
}
cmde=buffer;
for(i=0;*cmde!=' ' && i<256;i++,cmde++);
if(i>=256)
return(0);
*cmde++=0;
for(i=0;buffer[i] && i<80;*p1++=buffer[i++]);
*p1=0;
for(i=0;cmde[i] && i<80;*p2++=cmde[i++]);
*p2=0;
id_app=appl_find(0);
break;
case M_SWITCH:
break;
case M_DO_IT:
if((id=appl_find("ANIPLAY "))<=0) /* search Aniplayer */
{
if((wi_id=wind_find(1,1))!=0) /* window for module */
wind_get(wi_id,WF_CURRXYWH,&x,&y,&w,&h);
shel_write(1,1,100,buffer,""); /* if PRG start */
EVNT_ask(1000);
if(wi_id && w >= As->w && h >= As->h)
{
x=i=0;
while(x!=wi_id && i<5) /* window in TOP */
{ /* after start PRG */
EVNT_ask(1000);
wind_set(wi_id,WF_TOP,0,0,0,0);
wind_get(wi_id,WF_TOP,&x,&y,&w,&h);
i++; /* time-out ! */
}
}
}
if((id=appl_find("ANIPLAY "))>0)
{
message[0]=VA_START; /* cmde line and file in INF */
message[1]=id_app;
message[2]=0;
*((char **)(&message[3]))=cmde;
message[5]=message[6]=message[7]=0;
appl_write(id,16,message);
}
else
{
form_alert(1,"[2][No communication|with ANIPLAY][Cancel]");
return(0);
}
do
{
fin=EVNT_ask(10); /* tempo in mS */
}
while(!fin);
if((id=appl_find("ANIPLAY "))>0)
{
message[0]=AV_SENDKEY;
message[1]=id_app;
message[4]=0x1b; /* ESC for end */
message[2]=message[3]=message[5]=message[6]=message[7]=0;
appl_write(id,16,message);
}
break;
case M_EXIT:
break;
}
return(1);
}