📄 job.c
字号:
#include "wea_dos.h"
void Job(JOB* pj)
{
int i;
pj->filename[0]='\0';
pj->nHole=2;
pj->nWarp=0;
pj->nRepeat=0;
pj->nWea=0;
for(i=0;i<MAX_WEA;i++)
{
pj->Wea[i]=NULL;
pj->nWeaRepeat[i]=0;
pj->start[i]=0;
}
}
BOOL AppendWea(JOB* pj,WEA* pw,char* info)
{
if(pw==NULL)
{
strcpy(info,"Wea null");
return FALSE;
}
if(pj->nWea==MAX_WEA)
{
strcpy(info,"Job list full");
return FALSE;
}
if(pj->nWea==0)
{
pj->nWarp=pw->Size.cx*8;
g_nMap=pj->nWarp/32;
}
if(pj->nWarp!=pw->Size.cx*8)
{
strcpy(info,"Warp number not match");
return FALSE;
}
pj->Wea[pj->nWea]=pw;
pj->start[pj->nWea]=0;
pj->end[pj->nWea]=pw->Size.cy-1;
pj->nWea++;
return TRUE;
}
BOOL InsertWea(JOB* pj,WEA* pw,int index,char* info)
{
int i;
if(pw==NULL)
{
strcpy(info,"Wea null");
return FALSE;
}
if(pj->nWea==MAX_WEA)
{
strcpy(info,"Job list full");
return FALSE;
}
if(pj->nWea==0)
{
pj->nWarp=pw->Size.cx*8;
g_nMap=pj->nWarp/32;
}
if(pj->nWarp!=pw->Size.cx*8)
{
strcpy(info,"Warp number not match");
return FALSE;
}
for(i=pj->nWea;i>index;i--)
{
pj->Wea[i]=pj->Wea[i-1];
pj->end[i]=pj->end[i-1];
pj->start[i]=pj->start[i-1];
pj->nWeaRepeat[i]=pj->nWeaRepeat[i-1];
}
pj->Wea[index]=pw;
pj->end[index]=pw->Size.cy-1;
pj->start[index]=0;
pj->nWeaRepeat[index]=0;
pj->nWea++;
ResetPoint();
return TRUE;
}
BOOL DeleteWea(JOB* pj,int index,char* info)
{ int i;
if(pj->nWea==0)
{
strcpy(info,"Job list empty");
return FALSE;
}
if(index<0 || index>=pj->nWea)
{
strcpy(info,"Index error");
return FALSE;
}
for(i=index;i<pj->nWea-1;i++)
{
pj->Wea[i]=pj->Wea[i+1];
pj->end[i]=pj->end[i+1];
pj->start[i]=pj->start[i+1];
pj->nWeaRepeat[i]=pj->nWeaRepeat[i+1];
}
pj->nWea--;
free(pj->Wea[pj->nWea]);
ResetPoint();
return TRUE;
}
BOOL OpenJob(char* filename,JOB* pj,char* info)
{
BYTE buff[50];
char* pb;
int i,n,nw,flag;
WEA* pw;
FILE *fp;
n=strlen(filename);
pb=&filename[n-3];
i=-1;
while(pb[++i])
if(pb[i]<0x5a)
pb[i]+=0x20;
if(strcmp(pb,"job")==0)
flag=0;
if(strcmp(pb,"wea")==0)
flag=1;
if(flag!=0 && flag!=1)
{
strcpy(info,"Filename error: must be .job or .wea");
return FALSE;
}
if(pj->nWea>0)
KillJob(pj);
if(flag==1)
{
pw=(WEA*)calloc(1,sizeof(WEA));
Wea(pw);
flag=OpenWea(filename,pw,info);
if(flag==0)
free(pw);
else
{
pj->nWea=1;
pj->nRepeat=0;
pj->nHole=2;
pj->nWarp=pw->Size.cx*8;
pj->start[0]=0;
pj->end[0]=pw->Size.cy-1;
pj->nWeaRepeat[0]=0;
pj->Wea[0]=pw;
}
return flag;
}
fp=fopen(filename, "r+");
if (!fp)
{
strcpy(info,"open job file error");
return FALSE;
}
fscanf(fp,"%d\n%d\n%d\n%d\n",&pj->nHole,&pj->nWarp,&pj->nRepeat,&nw);
if(pj->nHole!=2 && pj->nHole!=3)
{
strcpy(info,"Hole number error");
fclose(fp);
return FALSE;
}
if(nw<1 || nw>MAX_WEA)
{
strcpy(info,"Wea number error");
fclose(fp);
return FALSE;
}
strcpy(pj->filename,filename);
for(i=0;i<nw;i++)
{
fscanf(fp,"%s",buff);
pw=(WEA *)calloc(1,sizeof(WEA));
Wea(pw);
if(!OpenWea(buff,pw,info))
{
free(pw);
fclose(fp);
return FALSE;
}
if(!AppendWea(pj,pw,info))
{
KillJob(pj);
fclose(fp);
return FALSE;
}
fscanf(fp,"%d%d%d%d",&n,&pj->start[i],&pj->end[i],&pj->nWeaRepeat[i]);
}
fclose(fp);
return TRUE;
}
BOOL SaveJob(char* fileName,JOB* pj,char* info)
{
int i;
WEA* pw;
FILE *fp;
fp=fopen(fileName, "w");
if (!fp)
{
strcpy(info,"Create job file error");
return FALSE;
}
fprintf(fp,"%d\n%d\n%d\n%d\n",pj->nHole,pj->nWarp,pj->nRepeat,pj->nWea);
for(i=0;i<pj->nWea;i++)
{
pw=pj->Wea[i];
fprintf(fp,"%s\n",pw->filename);
fprintf(fp,"%d\n%d\n%d\n%d\n",pw->Size.cy,pj->start[i],pj->end[i],pj->nWeaRepeat[i]);
}
fclose(fp);
return TRUE;
}
void KillJob(JOB* pj)
{
int i;
if(pj==NULL || pj->nWea==0)
return;
for(i=0;i<pj->nWea;i++)
{
free(pj->Wea[i]);
}
pj->nWea=0;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -