#include <stdio.h>
#include <iocslib.h>
#include <time.h>
#include <string.h>
#include "defines.h"
#include "abuff.h"
#include "amacro.h"
#include "aexprint.h"

int ShiftUpPrints(_FNTBUF fnt[],int no,int wt,int tm,int mode)
/* 複数フォント上シフト表示 */
/* 各フォント大きさは最大２４＊２４で全て同じであること（そうでないとtm分配ができないから）*/
{
_FNTBUF *fnt2;
int x,y,i,l,wx,xl,yl,sz,wxtm,xy;
time_t t;
	/* バッファー確保 */
	fnt2=(_FNTBUF *)newmalloc(no*sizeof(_FNTBUF));
	if (fnt2==NULL) return(-1);
	
	/* フォントサイズ（一定）*/
	xl=fnt[0].xl;
	yl=fnt[0].yl;
	wx=(xl+7)/8;	/* 横バイト数 */
	sz=wx*yl;	/* フォント総バイト数 */
	wxtm=wx*tm;	/* １回の転送バイト数 */
	if (tm<=0||tm>=8||(xl%tm)!=0) tm=1; /* tm補正 */
	
	for (i=0;i<no;i++) {
		fnt2[i].xl=fnt[i].xl;	/* xlコピー */
		fnt2[i].yl=fnt[i].yl;	/* ylコピー */
		memset(fnt2[i].buffer,0,sz); /* バッファークリア */
	}
	
	cursor(&x,&y);	/* 表示開始座標記録 */
	for (i=1;i<=yl/tm;i++) { /* 縦全部 */
		t=clock();
		B_LOCATE(x,y);
		for (l=0;l<no;l++) {
			memcpy(&fnt2[l].buffer[sz-i*wxtm],fnt[l].buffer,i*wxtm);
			/* １段表示 */
			xy=PutCGFonts(&fnt2[l],0,mode);
			B_LOCATE_SC(xy,yl,mode); /* ｽｸﾛｰﾙｱｯﾌﾟ対応ｶｰｿﾙ移動 */
		}
		if ((xy&0xffff)!=y) y=(xy&0xffff); /* スクロール対応 */
		while (clock()-t<wt); /* ウエイト */
	}
	/* バッファー開放 */
	free(fnt2);
	return(poslin());
}
