#include <stdio.h>
#include <limits.h>
#include "defines.h"
#include "oscrn.h"
#include "abuff.h"

unchar *SCopen(short wx,short wy)
/* オフスクリーンオープン */
{
int size;
unchar *work;
SC_BUFF *scwork;
	/* サイズ計算 */
	size=sizeof(SC_BUFF)+(wx*wy)*2;
	if (size<0||size>SHRT_MAX) return(NULL); /* memory error */
	
	/* ワークエリア確保 */
	/* ワークエリア本体は２バイト単位：文字コード＋属性 */
	work=newmalloc(size);
	if (work==NULL) return(NULL); /* memory error */
	
	/* ワークエリア初期設定 */
	scwork=(SC_BUFF *)work;
	scwork->symbol=SCSYM;
	scwork->wx=wx;
	scwork->wy=wy;
	scwork->col=TWHITE;
	SCcls(work);	/* ワークエリア内クリア */
	
	return(work);
}

#if 0
/* テストルーチン */
main()
{
unchar *work;
int x,y;
	work=SCopen(80,10);
	if (work==NULL) {
		printf("\aスクリーンバッファーが確保できません\n");
		exit(1);
	}
	SCprints("これがoff-screenです\n",work);
	SCcolor(TCYAN,work);
	SCprints("ちゃんと見えますか？",work);
	SCcolor(TYELLOW,work);
	SClocate(40,5,work);
	SCprintc('G',work);
	SCprintc('Ｇ',work);
	SCcursor(&x,&y,work);
	printf("(x,y)=(%d,%d)[43,4]\n",x,y);
	SCdisplay(work,0);
	SCclose(work);
	exit(0);
}
#endif
