home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Phoenix Heaven Sunny 2
/
APPARE2.BIN
/
oh_towns
/
install
/
instlib.c
< prev
next >
Wrap
Text File
|
1995-06-20
|
9KB
|
367 lines
/*************************************************************************
* ライブラリ
*************************************************************************/
int _puts_bold(int x, int y, int col, char *s);
/*************************************************************************
* システム行クリア
*************************************************************************/
int syl_clear()
{
char *msg, tmp[80];
SCN_wrtPage(1);
MOS_DEC();
#ifdef __APPARE2__
sprintf(tmp,"PRESENTED by %c%c", Gaiji_ohFMTOWNS>>8, Gaiji_ohFMTOWNS&0xFF );
msg = "天晴CD Vol.2 鳳凰の巻";
SCN_boxf(0,464,639,479,PSET,ColMesh);
_puts_bold( 232 ,464 , PltNoWhite,msg);
SCN_puts(Fnt16x16,tmp,232+23*8+1,464+1,PSET,C_MBLACK ,0);
SCN_puts(Fnt16x16,tmp,232+23*8 ,464 ,PSET,PltNoWhite,0);
#else
msg = "TaroPYON SoftWare collection installer";
SCN_boxf(0,464,639,479,PSET,ColMesh);
/* _puts_bold( 232 ,464 , PltNoWhite,msg); */
SCN_puts(Fnt16x16,msg,272+1,464+1,PSET,C_MBLACK ,0);
SCN_puts(Fnt16x16,msg,272 ,464 ,PSET,PltNoWhite,0);
#endif
MOS_INC();
}
/*************************************************************************
* システム行に文字列表示
*************************************************************************/
int syl_putf(char *form)
{
char tmp[256];
char *ap;
int n, x;
va_start(ap,form);
vsprintf(tmp+6,form,ap);
va_end(ap);
SCN_wrtPage(1);
MOS_DEC();
SCN_boxf(0,464,639,479,PSET,ColMesh);
EGB_textDirection(EgbPtr,0); /* 文字方向 */
EGB_textDisplayDirection(EgbPtr,0); /* 表示方向 */
EGB_textSpace(EgbPtr,0); /* 字間 */
EGB_textZoom(EgbPtr,0, 8, 16 ); /* ANK */
EGB_textZoom(EgbPtr,1, 16, 16 ); /* 漢字 */
EGB_fontStyle(EgbPtr,1+4); /* 字体 */
EGB_color(EgbPtr,0,C_HGREEN);
EGB_color(EgbPtr,1,C_MBLACK);
EGB_paintMode(EgbPtr,0x022);
EGB_writeMode(EgbPtr,PSET);
n = strlen(tmp+6);
x = (640 - n * 8) / 2;
_setWord(tmp+0, x );
_setWord(tmp+2, 464+15);
_setWord(tmp+4, n );
EGB_sjisString( EgbPtr, tmp);
MOS_INC();
}
int _puts_bold(int x, int y, int col, char *s)
{
char para[256];
EGB_textDirection(EgbPtr,0); /* 文字方向 */
EGB_textDisplayDirection(EgbPtr,0); /* 表示方向 */
EGB_textSpace(EgbPtr,0); /* 字間 */
EGB_textZoom(EgbPtr,0, 8, 16 ); /* ANK */
EGB_textZoom(EgbPtr,1, 16, 16 ); /* 漢字 */
EGB_fontStyle(EgbPtr,1+4); /* 字体 */
EGB_color(EgbPtr,0,col );
EGB_color(EgbPtr,1,C_MBLACK);
EGB_paintMode(EgbPtr,0x022);
EGB_writeMode(EgbPtr,PSET);
_setWord(para+0, x );
_setWord(para+2, y+15 );
_setWord(para+4, strlen(s));
strcpy(para+6,s);
EGB_sjisString( EgbPtr, para);
}
char *add_path_fn(char *path, char *fn)
{
int len;
len = strlen(path);
/* if ( len == 0 || FS_isDelim(path[len-1]) == FALSE ) */
if ( len == 0 || !(path[len-1] == '\\' || path[len-1] == '/') )
path[len++] = FsPathDelim;
strcpy( path + len, fn );
return (path);
}
/*************************************************************************
* 背景用TIFF表示
*************************************************************************/
int tif_load(char *fn)
{
char *img;
short fr[4];
int x, y;
SCN_wrtPage(0);
if ( (img = IMG_open()) != NULL )
{
IMG_setPage(img,0); /* 表示ページ指定 */
IMG_setAtt(img,IMG_ATT_PLTON); /* パレット設定属性ON */
IMG_setColor( img, C_MBLACK, C_MWHITE);
if ( IMG_load(img,fn) == NORMAL )
{
IMG_getFr(img,fr);
x = (320 - (fr[2] - fr[0] + 1)) / 2;
y = 10 + (230 - (fr[3] - fr[1] + 1)) / 2;
IMG_setPos(img,x,y); /* 表示位置補正 */
EGB_color(EgbPtr,1,C_MBLACK); /* 背景色 */
EGB_clearScreen(EgbPtr);
EGB_paintMode(EgbPtr,0x22);
IMG_dsp(img);
}
IMG_close(img);
}
SCN_wrtPage(1);
return (NORMAL);
}
/*************************************************************************
* TIFF表示
*************************************************************************/
int tiflist_disp( char **list )
{
int i, x, y, ret, pixel, md, x0, y0;
char *img;
short fr[4];
char *fn;
SCN_wrtPage(1);
APL_save_desktop();
SCN_boxf(0,0,639,479,PSET,0);
SCN_wrtPage(0);
for ( i = 0; list[i] != NULL; ++i )
{
fn = list[i];
if ( (img = IMG_open()) != NULL )
{
IMG_setAtt(img,IMG_ATT_PLTON); /* パレット設定属性ON */
if ( IMG_load(img,fn) == NORMAL )
{
IMG_getFr(img,fr);
pixel = IMG_getPixel(img);
switch ( pixel )
{
case 1: /* モノクロ */
case 4: /* 16色 */
x0 = (640 - (fr[2] - fr[0] + 1)) / 2;
y0 = (480 - (fr[3] - fr[1] + 1)) / 2;
md = 3;
break;
case 8: /* 256 色 */
x0 = (640 - (fr[2] - fr[0] + 1)) / 2;
y0 = (480 - (fr[3] - fr[1] + 1)) / 2;
md = 12;
break;
case 16: /* 32768 色 */
if ( fr[2] - fr[0] + 1 <= 320 )
{
x0 = (320 - (fr[2] - fr[0] + 1)) / 2;
y0 = (240 - (fr[3] - fr[1] + 1)) / 2;
md = 10;
} else
{
x0 = (512 - (fr[2] - fr[0] + 1)) / 2;
y0 = (480 - (fr[3] - fr[1] + 1)) / 2;
md = 17;
}
break;
default:
goto _TIF_ERR;
}
IMG_setPos(img,x0,y0); /* 表示位置補正 */
MOS_COFF(); /* マウスカーソル消去 */
EGB_displayPage(EgbPtr,0,0);
EGB_writePage(EgbPtr,0);
EGB_clearScreen(EgbPtr);
EGB_resolution(EgbPtr,0,md); /* 画面モード設定 */
if ( md == 3 || md == 10 )
{
EGB_resolution(EgbPtr,1,3); /* 画面モード設定 */
EGB_writePage(EgbPtr,1);
EGB_clearScreen(EgbPtr);
}
EGB_writePage(EgbPtr,0);
if ( md == 10 )
{
EGB_displayStart(EgbPtr,2,2,2);
EGB_displayStart(EgbPtr,3,320,240);
}
EGB_color(EgbPtr,1,0);
EGB_clearScreen(EgbPtr);
IMG_dsp(img);
if ( md == 3 || md == 10 )
EGB_displayPage(EgbPtr,1,3);
else
EGB_displayPage(EgbPtr,0,1);
_apl_wait(CLOCKS_PER_SEC * 8);
while ( PD_getp(&x,&y) )
;
}
IMG_close(img);
}
}
EGB_writePage(EgbPtr,0);
EGB_clearScreen(EgbPtr);
SCN_sysReinit();
disp_desktop();
SCN_wrtPage(1);
APL_load_desktop();
syl_clear();
return (NORMAL);
}
int mveplay(char *fnmve, int loop)
{
char para[256];
sprintf(para,"-loop %d %s", loop, fnmve );
exprun("/OH_TOWNS/DEMOTOOL/mveplay.exp", para );
return (0);
}
int exprun(char *fn, char *para)
{
unsigned int siz;
int md;
char tmp[256];
char *dlgTxm;
char *dir;
siz = APL_getFreeMem();
if ( siz < 2 * 1024 * 1024 )
{ /* メモリ不足 */
dlgTxm = DlgTxm_open(ColBoxError);
DlgTxm_setTitle(dlgTxm,Fnt16x16, "OUT OF MEMORY");
DlgTxm_putf( dlgTxm, Rom16x16, TXMDAT_ATT_CENTER,"");
DlgTxm_putf( dlgTxm, Rom16x16, TXMDAT_ATT_CENTER,
"メモリ不足のため実行できません。" );
DlgTxm_putf( dlgTxm, Rom16x16, TXMDAT_ATT_CENTER,"");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 128, 20, C_MBLACK,
C_WHITE, C_HILIGHT, C_DARK, '\r', KA_EXEC, 0, "", 0, "OK : [実行]");
DlgTxm_setSize(dlgTxm,480,48);
DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
DlgTxm_start(dlgTxm);
DlgTxm_close(dlgTxm);
return (-1);
}
dir = FS_pushDir();
FS_chdrv( toupper(DirStart[0]) - 'A' );
FS_getDnam(tmp,fn);
add_path_fn(tmp,".");
FS_chdir(tmp);
/* 画面保存 */
SCN_wrtPage(1);
APL_save_desktop();
/* ネイティブモード子プロセスプログラムの起動 */
md = APLPCL_SET_STARTPATH | APLPCL_SET_PCP;
AplDtaInit();
if ( para != NULL && *para != '\0' )
{
AplDtaSetStr("$MainArg","%s %s", fn, para);
if ( strlen(fn) + strlen(para) + 1 >= 128 )
md &= (~APLPCL_SET_PCP);
}
FS_popDir(dir);
PCL_exec(fn,md);
/* 画面再設定 */
SCN_sysReinit();
disp_desktop();
SCN_wrtPage(1);
APL_load_desktop();
syl_clear();
return (NORMAL);
}
/*************************************************************************
* 説明表示(イベント処理関数)
*************************************************************************/
int inst_help( int evNo, char *evDat, char *fn)
{
char tmp[256];
FS_chdrv(toupper(DirStart[0]) - 'A');
sprintf(tmp,"%s.",DirStart);
FS_chdir(tmp);
APL_textView(Rom16x16,608,391,17,fn,"HELP FILE : %s", fn);
return (evNo);
}
/*************************************************************************
* インストール終了メッセージ
*************************************************************************/
int install_end( char *soft_name, int err )
{
char *dlgTxm;
int colbox;
char *msg;
msg = err == 0 ? "インストールが終わりました。"
: "インストールに失敗しました。";
colbox = 0;
colbox = SCN_tile_newMixCol(colbox,0x00,C_HGREEN,C_WHITE);
if ( (dlgTxm = DlgTxm_open(colbox)) != NULL )
{
DlgTxm_setTitle(dlgTxm,Fnt16x16,soft_name);
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER, "");
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER, msg );
DlgTxm_putf( dlgTxm, Fnt16x16, TXMDAT_ATT_CENTER, "");
DlgTxm_setBtn( dlgTxm, Fnt16x16, 64, 20, C_MBLACK, C_WHITE, C_HILIGHT, C_DARK, '\r' , KA_EXEC , 1, "", 0, "OK : [実行]");
DlgTxm_setSize(dlgTxm,480,64);
DlgTxm_setPosition(dlgTxm,DLGPOS_CENTER_OF_SCREEN);
DlgTxm_start(dlgTxm);
DlgTxm_close(dlgTxm);
}
SCN_tile_free(colbox);
}